**** New definitions: V, type: r8*
**** New definitions: V2, type: r8*
**** New definitions: R__, type: r8*
**** New definitions: R__2, type: r8*
**** New definitions: RB_, type: r8*
**** New definitions: R_I, type: r8*
**** New definitions: RBI, type: r8*
**** New definitions: Req, type: r8**
**** New definitions: O__, type: r8?*
**** New definitions: O__2, type: r8?*
**** New definitions: OB_, type: r8?*
**** New definitions: O_I, type: r8?*
**** New definitions: OBI, type: r8?*
**** New definitions: Opt, type: r8?**
**** New definitions: B, type: b*
**** New definitions: RB, type: b**
**** New definitions: OB, type: b?**
**** New definitions: RR8, type: r8**
**** New definitions: RR4, type: r4**
**** New definitions: RIA, type: i**
**** New definitions: RI8, type: i8**
**** New definitions: RI4, type: i4**
**** New definitions: RI2, type: i2**
**** New definitions: RI1, type: i1**
**** New definitions: RU8, type: u8**
**** New definitions: RU4, type: u4**
**** New definitions: RU2, type: u2**
**** New definitions: RU1, type: u1**
**** New definitions: OR8, type: r8?**
**** New definitions: OR4, type: r4?**
**** New definitions: OIA, type: i?**
**** New definitions: OI8, type: i8?**
**** New definitions: OI4, type: i4?**
**** New definitions: OI2, type: i2?**
**** New definitions: OI1, type: i1?**
**** New definitions: OU8, type: u8?**
**** New definitions: OU4, type: u4?**
**** New definitions: OU2, type: u2?**
**** New definitions: OU1, type: u1?**
**** New definitions: SIA, type: i?**
**** New definitions: SI8, type: i8?**
**** New definitions: SI4, type: i4?**
**** New definitions: SI2, type: i2?**
**** New definitions: SI1, type: i1?**
**** New definitions: SU8, type: u8?**
**** New definitions: SU4, type: u4?**
**** New definitions: SU2, type: u2?**
**** New definitions: SU1, type: u1?**

> RR8->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
RR8->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*
BndKind:Call, Type:(r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*, Bnd:(Call(∂.ForEach([map:1] Global(RR8), (Call(∂.Min(Scope(1)):r8), Call(∂.Max(Scope(1)):r8), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})):(r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*))
// (<ctx>, ∂.RR8:r8**) : (r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*
ForEach_1(Arr<obj>, Seq<r8>):(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})
      5) newobj (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, ExecCtx, i4):r8
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F0:r8
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, ExecCtx, i4):r8
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F1:r8
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {r8,r8}()
      1) dup
      1) ldc.i4.3
      5) stfld {r8,r8}::_B0:u1
      1) stloc.0 [{r8,r8}]
      1) ldloc.0 [{r8,r8}]
      5) ldflda {r8,r8}::_F1:r8
      1) ldloc.0 [{r8,r8}]
      5) ldflda {r8,r8}::_F0:r8
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, ExecCtx, i4, out r8, out r8):Void
      1) ldloc.0 [{r8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F2:{r8,r8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,r8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r8}::_B0:u1
      1) stloc.1 [{i8,r8}]
      1) ldloc.1 [{i8,r8}]
      5) ldflda {i8,r8}::_F1:r8
      5) call static MinMaxGen::ExecMinC(Seq<r8>, ExecCtx, i4, out r8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r8}]
      1) ldloc.2 [i8]
      5) stfld {i8,r8}::_F0:i8
      1) ldloc.1 [{i8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F3:{i8,r8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,r8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r8}::_B0:u1
      1) stloc.1 [{i8,r8}]
      1) ldloc.1 [{i8,r8}]
      5) ldflda {i8,r8}::_F1:r8
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, ExecCtx, i4, out r8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r8}]
      1) ldloc.2 [i8]
      5) stfld {i8,r8}::_F0:i8
      1) ldloc.1 [{i8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F4:{i8,r8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,r8,r8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,r8,r8}::_B0:u1
      1) stloc.3 [{i8,r8,r8}]
      1) ldloc.3 [{i8,r8,r8}]
      5) ldflda {i8,r8,r8}::_F2:r8
      1) ldloc.3 [{i8,r8,r8}]
      5) ldflda {i8,r8,r8}::_F1:r8
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, ExecCtx, i4, out r8, out r8):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,r8,r8}]
      1) ldloc.2 [i8]
      5) stfld {i8,r8,r8}::_F0:i8
      1) ldloc.3 [{i8,r8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F5:{i8,r8,r8}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>):Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>):Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, RR8:r8**) to (r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*
Sequence: Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 7, Min: NaN }, { Count: 7, Max: NaN }, { Count: 7, Max: NaN, Min: NaN })
 2) (-∞, ∞, { Max: ∞, Min: -∞ }, { Count: 8, Min: -∞ }, { Count: 8, Max: ∞ }, { Count: 8, Max: ∞, Min: -∞ })
 3) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 9, Min: NaN }, { Count: 9, Max: NaN }, { Count: 9, Max: NaN, Min: NaN })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 252
    [0](42): Min(*1x)
    [1](42): Max(*1x)
    [2](42): MinMax(*1x)
    [3](42): MinC(*1x)
    [4](42): MaxC(*1x)
    [5](42): MinMaxC(*1x)
###
> RR4->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
RR4->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*
BndKind:Call, Type:(r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*, Bnd:(Call(∂.ForEach([map:1] Global(RR4), (Call(∂.Min(Scope(1)):r4), Call(∂.Max(Scope(1)):r4), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})):(r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*))
// (<ctx>, ∂.RR4:r4**) : (r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*
ForEach_1(Arr<obj>, Seq<r4>):(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})
      5) newobj (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})()
      1) dup
      1) ldarg.1 [Seq<r4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r4>, ExecCtx, i4):r4
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F0:r4
      1) dup
      1) ldarg.1 [Seq<r4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r4>, ExecCtx, i4):r4
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F1:r4
      1) dup
      1) ldarg.1 [Seq<r4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {r4,r4}()
      1) dup
      1) ldc.i4.3
      5) stfld {r4,r4}::_B0:u1
      1) stloc.0 [{r4,r4}]
      1) ldloc.0 [{r4,r4}]
      5) ldflda {r4,r4}::_F1:r4
      1) ldloc.0 [{r4,r4}]
      5) ldflda {r4,r4}::_F0:r4
      5) call static MinMaxGen::ExecMinMax(Seq<r4>, ExecCtx, i4, out r4, out r4):Void
      1) ldloc.0 [{r4,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F2:{r4,r4}
      1) dup
      1) ldarg.1 [Seq<r4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,r4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r4}::_B0:u1
      1) stloc.1 [{i8,r4}]
      1) ldloc.1 [{i8,r4}]
      5) ldflda {i8,r4}::_F1:r4
      5) call static MinMaxGen::ExecMinC(Seq<r4>, ExecCtx, i4, out r4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r4}]
      1) ldloc.2 [i8]
      5) stfld {i8,r4}::_F0:i8
      1) ldloc.1 [{i8,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F3:{i8,r4}
      1) dup
      1) ldarg.1 [Seq<r4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,r4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r4}::_B0:u1
      1) stloc.1 [{i8,r4}]
      1) ldloc.1 [{i8,r4}]
      5) ldflda {i8,r4}::_F1:r4
      5) call static MinMaxGen::ExecMaxC(Seq<r4>, ExecCtx, i4, out r4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r4}]
      1) ldloc.2 [i8]
      5) stfld {i8,r4}::_F0:i8
      1) ldloc.1 [{i8,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F4:{i8,r4}
      1) dup
      1) ldarg.1 [Seq<r4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,r4,r4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,r4,r4}::_B0:u1
      1) stloc.3 [{i8,r4,r4}]
      1) ldloc.3 [{i8,r4,r4}]
      5) ldflda {i8,r4,r4}::_F2:r4
      1) ldloc.3 [{i8,r4,r4}]
      5) ldflda {i8,r4,r4}::_F1:r4
      5) call static MinMaxGen::ExecMinMaxC(Seq<r4>, ExecCtx, i4, out r4, out r4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,r4,r4}]
      1) ldloc.2 [i8]
      5) stfld {i8,r4,r4}::_F0:i8
      1) ldloc.3 [{i8,r4,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F5:{i8,r4,r4}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r4>>
      1) stloc.1 [Seq<Seq<r4>>]
      1) ldloc.1 [Seq<Seq<r4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r4>,(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r4>>, Func<Seq<r4>,(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>):Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>):Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, RR4:r4**) to (r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*
Sequence: Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 7, Min: NaN }, { Count: 7, Max: NaN }, { Count: 7, Max: NaN, Min: NaN })
 2) (-∞, ∞, { Max: ∞, Min: -∞ }, { Count: 8, Min: -∞ }, { Count: 8, Max: ∞ }, { Count: 8, Max: ∞, Min: -∞ })
 3) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 9, Min: NaN }, { Count: 9, Max: NaN }, { Count: 9, Max: NaN, Min: NaN })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 246
    [0](41): Min(*1x)
    [1](41): Max(*1x)
    [2](41): MinMax(*1x)
    [3](41): MinC(*1x)
    [4](41): MaxC(*1x)
    [5](41): MinMaxC(*1x)
###
> RIA->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
RIA->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
BndKind:Call, Type:(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*, Bnd:(Call(∂.ForEach([map:1] Global(RIA), (Call(∂.Min(Scope(1)):i), Call(∂.Max(Scope(1)):i), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})):(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*))
// (<ctx>, ∂.RIA:i**) : (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
ForEach_1(Arr<obj>, Seq<ia>):(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})
      5) newobj (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})()
      1) dup
      1) ldarg.1 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<ia>, ExecCtx, i4):ia
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F0:ia
      1) dup
      1) ldarg.1 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<ia>, ExecCtx, i4):ia
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F1:ia
      1) dup
      1) ldarg.1 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {ia,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {ia,ia}::_B0:u1
      1) stloc.0 [{ia,ia}]
      1) ldloc.0 [{ia,ia}]
      5) ldflda {ia,ia}::_F1:ia
      1) ldloc.0 [{ia,ia}]
      5) ldflda {ia,ia}::_F0:ia
      5) call static MinMaxGen::ExecMinMax(Seq<ia>, ExecCtx, i4, out ia, out ia):Void
      1) ldloc.0 [{ia,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F2:{ia,ia}
      1) dup
      1) ldarg.1 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,ia}::_B0:u1
      1) stloc.1 [{i8,ia}]
      1) ldloc.1 [{i8,ia}]
      5) ldflda {i8,ia}::_F1:ia
      5) call static MinMaxGen::ExecMinC(Seq<ia>, ExecCtx, i4, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia}::_F0:i8
      1) ldloc.1 [{i8,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F3:{i8,ia}
      1) dup
      1) ldarg.1 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,ia}::_B0:u1
      1) stloc.1 [{i8,ia}]
      1) ldloc.1 [{i8,ia}]
      5) ldflda {i8,ia}::_F1:ia
      5) call static MinMaxGen::ExecMaxC(Seq<ia>, ExecCtx, i4, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia}::_F0:i8
      1) ldloc.1 [{i8,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F4:{i8,ia}
      1) dup
      1) ldarg.1 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,ia,ia}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,ia,ia}::_B0:u1
      1) stloc.3 [{i8,ia,ia}]
      1) ldloc.3 [{i8,ia,ia}]
      5) ldflda {i8,ia,ia}::_F2:ia
      1) ldloc.3 [{i8,ia,ia}]
      5) ldflda {i8,ia,ia}::_F1:ia
      5) call static MinMaxGen::ExecMinMaxC(Seq<ia>, ExecCtx, i4, out ia, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,ia,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia,ia}::_F0:i8
      1) ldloc.3 [{i8,ia,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F5:{i8,ia,ia}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<ia>>
      1) stloc.1 [Seq<Seq<ia>>]
      1) ldloc.1 [Seq<Seq<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<ia>,(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<ia>>, Func<Seq<ia>,(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>):Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>):Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, RIA:i**) to (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
Sequence: Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 246
    [0](41): Min(*1x)
    [1](41): Max(*1x)
    [2](41): MinMax(*1x)
    [3](41): MinC(*1x)
    [4](41): MaxC(*1x)
    [5](41): MinMaxC(*1x)
###
> RI8->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
RI8->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
BndKind:Call, Type:(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*, Bnd:(Call(∂.ForEach([map:1] Global(RI8), (Call(∂.Min(Scope(1)):i8), Call(∂.Max(Scope(1)):i8), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})):(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*))
// (<ctx>, ∂.RI8:i8**) : (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
ForEach_1(Arr<obj>, Seq<i8>):(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})
      5) newobj (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})()
      1) dup
      1) ldarg.1 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<i8>, ExecCtx, i4):i8
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F0:i8
      1) dup
      1) ldarg.1 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<i8>, ExecCtx, i4):i8
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F1:i8
      1) dup
      1) ldarg.1 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F0:i8
      5) call static MinMaxGen::ExecMinMax(Seq<i8>, ExecCtx, i4, out i8, out i8):Void
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F2:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMinC(Seq<i8>, ExecCtx, i4, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.0 [{i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8}::_F0:i8
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F3:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMaxC(Seq<i8>, ExecCtx, i4, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.0 [{i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8}::_F0:i8
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F4:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i8,i8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i8,i8}::_B0:u1
      1) stloc.2 [{i8,i8,i8}]
      1) ldloc.2 [{i8,i8,i8}]
      5) ldflda {i8,i8,i8}::_F2:i8
      1) ldloc.2 [{i8,i8,i8}]
      5) ldflda {i8,i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMinMaxC(Seq<i8>, ExecCtx, i4, out i8, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.2 [{i8,i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8,i8}::_F0:i8
      1) ldloc.2 [{i8,i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F5:{i8,i8,i8}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<i8>>
      1) stloc.1 [Seq<Seq<i8>>]
      1) ldloc.1 [Seq<Seq<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<i8>,(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<i8>>, Func<Seq<i8>,(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>):Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>):Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, RI8:i8**) to (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
Sequence: Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 246
    [0](41): Min(*1x)
    [1](41): Max(*1x)
    [2](41): MinMax(*1x)
    [3](41): MinC(*1x)
    [4](41): MaxC(*1x)
    [5](41): MinMaxC(*1x)
###
> RI4->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
RI4->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
BndKind:Call, Type:(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*, Bnd:(Call(∂.ForEach([map:1] Global(RI4), (Call(∂.Min(Scope(1)):i4), Call(∂.Max(Scope(1)):i4), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})):(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*))
// (<ctx>, ∂.RI4:i4**) : (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
ForEach_1(Arr<obj>, Seq<i4>):(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})
      5) newobj (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})()
      1) dup
      1) ldarg.1 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<i4>, ExecCtx, i4):i4
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F0:i4
      1) dup
      1) ldarg.1 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<i4>, ExecCtx, i4):i4
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F1:i4
      1) dup
      1) ldarg.1 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i4,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i4,i4}::_B0:u1
      1) stloc.0 [{i4,i4}]
      1) ldloc.0 [{i4,i4}]
      5) ldflda {i4,i4}::_F1:i4
      1) ldloc.0 [{i4,i4}]
      5) ldflda {i4,i4}::_F0:i4
      5) call static MinMaxGen::ExecMinMax(Seq<i4>, ExecCtx, i4, out i4, out i4):Void
      1) ldloc.0 [{i4,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F2:{i4,i4}
      1) dup
      1) ldarg.1 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i4}::_B0:u1
      1) stloc.1 [{i8,i4}]
      1) ldloc.1 [{i8,i4}]
      5) ldflda {i8,i4}::_F1:i4
      5) call static MinMaxGen::ExecMinC(Seq<i4>, ExecCtx, i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4}::_F0:i8
      1) ldloc.1 [{i8,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F3:{i8,i4}
      1) dup
      1) ldarg.1 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i4}::_B0:u1
      1) stloc.1 [{i8,i4}]
      1) ldloc.1 [{i8,i4}]
      5) ldflda {i8,i4}::_F1:i4
      5) call static MinMaxGen::ExecMaxC(Seq<i4>, ExecCtx, i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4}::_F0:i8
      1) ldloc.1 [{i8,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F4:{i8,i4}
      1) dup
      1) ldarg.1 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i4,i4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i4,i4}::_B0:u1
      1) stloc.3 [{i8,i4,i4}]
      1) ldloc.3 [{i8,i4,i4}]
      5) ldflda {i8,i4,i4}::_F2:i4
      1) ldloc.3 [{i8,i4,i4}]
      5) ldflda {i8,i4,i4}::_F1:i4
      5) call static MinMaxGen::ExecMinMaxC(Seq<i4>, ExecCtx, i4, out i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i4,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4,i4}::_F0:i8
      1) ldloc.3 [{i8,i4,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F5:{i8,i4,i4}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<i4>>
      1) stloc.1 [Seq<Seq<i4>>]
      1) ldloc.1 [Seq<Seq<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<i4>,(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<i4>>, Func<Seq<i4>,(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>):Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>):Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, RI4:i4**) to (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
Sequence: Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 246
    [0](41): Min(*1x)
    [1](41): Max(*1x)
    [2](41): MinMax(*1x)
    [3](41): MinC(*1x)
    [4](41): MaxC(*1x)
    [5](41): MinMaxC(*1x)
###
> RI2->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
RI2->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
BndKind:Call, Type:(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*, Bnd:(Call(∂.ForEach([map:1] Global(RI2), (Call(∂.Min(Scope(1)):i2), Call(∂.Max(Scope(1)):i2), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})):(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*))
// (<ctx>, ∂.RI2:i2**) : (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
ForEach_1(Arr<obj>, Seq<i2>):(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})
      5) newobj (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})()
      1) dup
      1) ldarg.1 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<i2>, ExecCtx, i4):i2
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F0:i2
      1) dup
      1) ldarg.1 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<i2>, ExecCtx, i4):i2
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F1:i2
      1) dup
      1) ldarg.1 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i2,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i2,i2}::_B0:u1
      1) stloc.0 [{i2,i2}]
      1) ldloc.0 [{i2,i2}]
      5) ldflda {i2,i2}::_F1:i2
      1) ldloc.0 [{i2,i2}]
      5) ldflda {i2,i2}::_F0:i2
      5) call static MinMaxGen::ExecMinMax(Seq<i2>, ExecCtx, i4, out i2, out i2):Void
      1) ldloc.0 [{i2,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F2:{i2,i2}
      1) dup
      1) ldarg.1 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i2}::_B0:u1
      1) stloc.1 [{i8,i2}]
      1) ldloc.1 [{i8,i2}]
      5) ldflda {i8,i2}::_F1:i2
      5) call static MinMaxGen::ExecMinC(Seq<i2>, ExecCtx, i4, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2}::_F0:i8
      1) ldloc.1 [{i8,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F3:{i8,i2}
      1) dup
      1) ldarg.1 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i2}::_B0:u1
      1) stloc.1 [{i8,i2}]
      1) ldloc.1 [{i8,i2}]
      5) ldflda {i8,i2}::_F1:i2
      5) call static MinMaxGen::ExecMaxC(Seq<i2>, ExecCtx, i4, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2}::_F0:i8
      1) ldloc.1 [{i8,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F4:{i8,i2}
      1) dup
      1) ldarg.1 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i2,i2}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i2,i2}::_B0:u1
      1) stloc.3 [{i8,i2,i2}]
      1) ldloc.3 [{i8,i2,i2}]
      5) ldflda {i8,i2,i2}::_F2:i2
      1) ldloc.3 [{i8,i2,i2}]
      5) ldflda {i8,i2,i2}::_F1:i2
      5) call static MinMaxGen::ExecMinMaxC(Seq<i2>, ExecCtx, i4, out i2, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i2,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2,i2}::_F0:i8
      1) ldloc.3 [{i8,i2,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F5:{i8,i2,i2}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<i2>>
      1) stloc.1 [Seq<Seq<i2>>]
      1) ldloc.1 [Seq<Seq<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<i2>,(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<i2>>, Func<Seq<i2>,(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>):Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>):Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, RI2:i2**) to (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
Sequence: Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 246
    [0](41): Min(*1x)
    [1](41): Max(*1x)
    [2](41): MinMax(*1x)
    [3](41): MinC(*1x)
    [4](41): MaxC(*1x)
    [5](41): MinMaxC(*1x)
###
> RI1->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
RI1->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
BndKind:Call, Type:(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*, Bnd:(Call(∂.ForEach([map:1] Global(RI1), (Call(∂.Min(Scope(1)):i1), Call(∂.Max(Scope(1)):i1), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})):(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*))
// (<ctx>, ∂.RI1:i1**) : (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
ForEach_1(Arr<obj>, Seq<i1>):(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})
      5) newobj (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})()
      1) dup
      1) ldarg.1 [Seq<i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<i1>, ExecCtx, i4):i1
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F0:i1
      1) dup
      1) ldarg.1 [Seq<i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<i1>, ExecCtx, i4):i1
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F1:i1
      1) dup
      1) ldarg.1 [Seq<i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i1,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i1,i1}::_B0:u1
      1) stloc.0 [{i1,i1}]
      1) ldloc.0 [{i1,i1}]
      5) ldflda {i1,i1}::_F1:i1
      1) ldloc.0 [{i1,i1}]
      5) ldflda {i1,i1}::_F0:i1
      5) call static MinMaxGen::ExecMinMax(Seq<i1>, ExecCtx, i4, out i1, out i1):Void
      1) ldloc.0 [{i1,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F2:{i1,i1}
      1) dup
      1) ldarg.1 [Seq<i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i1}::_B0:u1
      1) stloc.1 [{i8,i1}]
      1) ldloc.1 [{i8,i1}]
      5) ldflda {i8,i1}::_F1:i1
      5) call static MinMaxGen::ExecMinC(Seq<i1>, ExecCtx, i4, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1}::_F0:i8
      1) ldloc.1 [{i8,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F3:{i8,i1}
      1) dup
      1) ldarg.1 [Seq<i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i1}::_B0:u1
      1) stloc.1 [{i8,i1}]
      1) ldloc.1 [{i8,i1}]
      5) ldflda {i8,i1}::_F1:i1
      5) call static MinMaxGen::ExecMaxC(Seq<i1>, ExecCtx, i4, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1}::_F0:i8
      1) ldloc.1 [{i8,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F4:{i8,i1}
      1) dup
      1) ldarg.1 [Seq<i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i1,i1}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i1,i1}::_B0:u1
      1) stloc.3 [{i8,i1,i1}]
      1) ldloc.3 [{i8,i1,i1}]
      5) ldflda {i8,i1,i1}::_F2:i1
      1) ldloc.3 [{i8,i1,i1}]
      5) ldflda {i8,i1,i1}::_F1:i1
      5) call static MinMaxGen::ExecMinMaxC(Seq<i1>, ExecCtx, i4, out i1, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i1,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1,i1}::_F0:i8
      1) ldloc.3 [{i8,i1,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F5:{i8,i1,i1}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<i1>>
      1) stloc.1 [Seq<Seq<i1>>]
      1) ldloc.1 [Seq<Seq<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<i1>,(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<i1>>, Func<Seq<i1>,(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>):Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>):Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, RI1:i1**) to (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
Sequence: Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 246
    [0](41): Min(*1x)
    [1](41): Max(*1x)
    [2](41): MinMax(*1x)
    [3](41): MinC(*1x)
    [4](41): MaxC(*1x)
    [5](41): MinMaxC(*1x)
###
> RU8->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
RU8->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
BndKind:Call, Type:(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*, Bnd:(Call(∂.ForEach([map:1] Global(RU8), (Call(∂.Min(Scope(1)):u8), Call(∂.Max(Scope(1)):u8), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})):(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*))
// (<ctx>, ∂.RU8:u8**) : (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
ForEach_1(Arr<obj>, Seq<u8>):(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})
      5) newobj (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})()
      1) dup
      1) ldarg.1 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<u8>, ExecCtx, i4):u8
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F0:u8
      1) dup
      1) ldarg.1 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<u8>, ExecCtx, i4):u8
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F1:u8
      1) dup
      1) ldarg.1 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {u8,u8}::_B0:u1
      1) stloc.0 [{u8,u8}]
      1) ldloc.0 [{u8,u8}]
      5) ldflda {u8,u8}::_F1:u8
      1) ldloc.0 [{u8,u8}]
      5) ldflda {u8,u8}::_F0:u8
      5) call static MinMaxGen::ExecMinMax(Seq<u8>, ExecCtx, i4, out u8, out u8):Void
      1) ldloc.0 [{u8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F2:{u8,u8}
      1) dup
      1) ldarg.1 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u8}::_B0:u1
      1) stloc.1 [{i8,u8}]
      1) ldloc.1 [{i8,u8}]
      5) ldflda {i8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMinC(Seq<u8>, ExecCtx, i4, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8}::_F0:i8
      1) ldloc.1 [{i8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F3:{i8,u8}
      1) dup
      1) ldarg.1 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u8}::_B0:u1
      1) stloc.1 [{i8,u8}]
      1) ldloc.1 [{i8,u8}]
      5) ldflda {i8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMaxC(Seq<u8>, ExecCtx, i4, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8}::_F0:i8
      1) ldloc.1 [{i8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F4:{i8,u8}
      1) dup
      1) ldarg.1 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u8,u8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u8,u8}::_B0:u1
      1) stloc.3 [{i8,u8,u8}]
      1) ldloc.3 [{i8,u8,u8}]
      5) ldflda {i8,u8,u8}::_F2:u8
      1) ldloc.3 [{i8,u8,u8}]
      5) ldflda {i8,u8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMinMaxC(Seq<u8>, ExecCtx, i4, out u8, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8,u8}::_F0:i8
      1) ldloc.3 [{i8,u8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F5:{i8,u8,u8}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<u8>>
      1) stloc.1 [Seq<Seq<u8>>]
      1) ldloc.1 [Seq<Seq<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<u8>,(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<u8>>, Func<Seq<u8>,(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>):Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>):Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, RU8:u8**) to (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
Sequence: Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
 0) (2, 18446744073709551615, { Max: 18446744073709551615, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 18446744073709551615 }, { Count: 6, Max: 18446744073709551615, Min: 2 })
 1) (0, 18446744073709551615, { Max: 18446744073709551615, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 18446744073709551615 }, { Count: 7, Max: 18446744073709551615, Min: 0 })
 2) (0, 18446744073709551615, { Max: 18446744073709551615, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 18446744073709551615 }, { Count: 8, Max: 18446744073709551615, Min: 0 })
 3) (0, 18446744073709551615, { Max: 18446744073709551615, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 18446744073709551615 }, { Count: 9, Max: 18446744073709551615, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (2, 18446744073709551615, { Max: 18446744073709551615, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 18446744073709551615 }, { Count: 6, Max: 18446744073709551615, Min: 2 })
*** Ctx ping count: 246
    [0](41): Min(*1x)
    [1](41): Max(*1x)
    [2](41): MinMax(*1x)
    [3](41): MinC(*1x)
    [4](41): MaxC(*1x)
    [5](41): MinMaxC(*1x)
###
> RU4->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
RU4->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
BndKind:Call, Type:(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*, Bnd:(Call(∂.ForEach([map:1] Global(RU4), (Call(∂.Min(Scope(1)):u4), Call(∂.Max(Scope(1)):u4), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})):(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*))
// (<ctx>, ∂.RU4:u4**) : (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
ForEach_1(Arr<obj>, Seq<u4>):(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})
      5) newobj (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})()
      1) dup
      1) ldarg.1 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<u4>, ExecCtx, i4):u4
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F0:u4
      1) dup
      1) ldarg.1 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<u4>, ExecCtx, i4):u4
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F1:u4
      1) dup
      1) ldarg.1 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u4,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {u4,u4}::_B0:u1
      1) stloc.0 [{u4,u4}]
      1) ldloc.0 [{u4,u4}]
      5) ldflda {u4,u4}::_F1:u4
      1) ldloc.0 [{u4,u4}]
      5) ldflda {u4,u4}::_F0:u4
      5) call static MinMaxGen::ExecMinMax(Seq<u4>, ExecCtx, i4, out u4, out u4):Void
      1) ldloc.0 [{u4,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F2:{u4,u4}
      1) dup
      1) ldarg.1 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u4}::_B0:u1
      1) stloc.1 [{i8,u4}]
      1) ldloc.1 [{i8,u4}]
      5) ldflda {i8,u4}::_F1:u4
      5) call static MinMaxGen::ExecMinC(Seq<u4>, ExecCtx, i4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4}::_F0:i8
      1) ldloc.1 [{i8,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F3:{i8,u4}
      1) dup
      1) ldarg.1 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u4}::_B0:u1
      1) stloc.1 [{i8,u4}]
      1) ldloc.1 [{i8,u4}]
      5) ldflda {i8,u4}::_F1:u4
      5) call static MinMaxGen::ExecMaxC(Seq<u4>, ExecCtx, i4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4}::_F0:i8
      1) ldloc.1 [{i8,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F4:{i8,u4}
      1) dup
      1) ldarg.1 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u4,u4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u4,u4}::_B0:u1
      1) stloc.3 [{i8,u4,u4}]
      1) ldloc.3 [{i8,u4,u4}]
      5) ldflda {i8,u4,u4}::_F2:u4
      1) ldloc.3 [{i8,u4,u4}]
      5) ldflda {i8,u4,u4}::_F1:u4
      5) call static MinMaxGen::ExecMinMaxC(Seq<u4>, ExecCtx, i4, out u4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u4,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4,u4}::_F0:i8
      1) ldloc.3 [{i8,u4,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F5:{i8,u4,u4}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<u4>>
      1) stloc.1 [Seq<Seq<u4>>]
      1) ldloc.1 [Seq<Seq<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<u4>,(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<u4>>, Func<Seq<u4>,(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>):Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>):Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, RU4:u4**) to (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
Sequence: Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
 0) (2, 4294967295, { Max: 4294967295, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 4294967295 }, { Count: 6, Max: 4294967295, Min: 2 })
 1) (0, 4294967295, { Max: 4294967295, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 4294967295 }, { Count: 7, Max: 4294967295, Min: 0 })
 2) (0, 4294967295, { Max: 4294967295, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 4294967295 }, { Count: 8, Max: 4294967295, Min: 0 })
 3) (0, 4294967295, { Max: 4294967295, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 4294967295 }, { Count: 9, Max: 4294967295, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (2, 4294967295, { Max: 4294967295, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 4294967295 }, { Count: 6, Max: 4294967295, Min: 2 })
*** Ctx ping count: 246
    [0](41): Min(*1x)
    [1](41): Max(*1x)
    [2](41): MinMax(*1x)
    [3](41): MinC(*1x)
    [4](41): MaxC(*1x)
    [5](41): MinMaxC(*1x)
###
> RU2->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
RU2->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
BndKind:Call, Type:(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*, Bnd:(Call(∂.ForEach([map:1] Global(RU2), (Call(∂.Min(Scope(1)):u2), Call(∂.Max(Scope(1)):u2), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})):(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*))
// (<ctx>, ∂.RU2:u2**) : (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
ForEach_1(Arr<obj>, Seq<u2>):(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})
      5) newobj (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})()
      1) dup
      1) ldarg.1 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<u2>, ExecCtx, i4):u2
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F0:u2
      1) dup
      1) ldarg.1 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<u2>, ExecCtx, i4):u2
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F1:u2
      1) dup
      1) ldarg.1 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u2,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {u2,u2}::_B0:u1
      1) stloc.0 [{u2,u2}]
      1) ldloc.0 [{u2,u2}]
      5) ldflda {u2,u2}::_F1:u2
      1) ldloc.0 [{u2,u2}]
      5) ldflda {u2,u2}::_F0:u2
      5) call static MinMaxGen::ExecMinMax(Seq<u2>, ExecCtx, i4, out u2, out u2):Void
      1) ldloc.0 [{u2,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F2:{u2,u2}
      1) dup
      1) ldarg.1 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u2}::_B0:u1
      1) stloc.1 [{i8,u2}]
      1) ldloc.1 [{i8,u2}]
      5) ldflda {i8,u2}::_F1:u2
      5) call static MinMaxGen::ExecMinC(Seq<u2>, ExecCtx, i4, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2}::_F0:i8
      1) ldloc.1 [{i8,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F3:{i8,u2}
      1) dup
      1) ldarg.1 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u2}::_B0:u1
      1) stloc.1 [{i8,u2}]
      1) ldloc.1 [{i8,u2}]
      5) ldflda {i8,u2}::_F1:u2
      5) call static MinMaxGen::ExecMaxC(Seq<u2>, ExecCtx, i4, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2}::_F0:i8
      1) ldloc.1 [{i8,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F4:{i8,u2}
      1) dup
      1) ldarg.1 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u2,u2}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u2,u2}::_B0:u1
      1) stloc.3 [{i8,u2,u2}]
      1) ldloc.3 [{i8,u2,u2}]
      5) ldflda {i8,u2,u2}::_F2:u2
      1) ldloc.3 [{i8,u2,u2}]
      5) ldflda {i8,u2,u2}::_F1:u2
      5) call static MinMaxGen::ExecMinMaxC(Seq<u2>, ExecCtx, i4, out u2, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u2,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2,u2}::_F0:i8
      1) ldloc.3 [{i8,u2,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F5:{i8,u2,u2}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<u2>>
      1) stloc.1 [Seq<Seq<u2>>]
      1) ldloc.1 [Seq<Seq<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<u2>,(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<u2>>, Func<Seq<u2>,(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>):Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>):Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, RU2:u2**) to (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
Sequence: Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
 0) (2, 65535, { Max: 65535, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 65535 }, { Count: 6, Max: 65535, Min: 2 })
 1) (0, 65535, { Max: 65535, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 65535 }, { Count: 7, Max: 65535, Min: 0 })
 2) (0, 65535, { Max: 65535, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 65535 }, { Count: 8, Max: 65535, Min: 0 })
 3) (0, 65535, { Max: 65535, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 65535 }, { Count: 9, Max: 65535, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (2, 65535, { Max: 65535, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 65535 }, { Count: 6, Max: 65535, Min: 2 })
*** Ctx ping count: 246
    [0](41): Min(*1x)
    [1](41): Max(*1x)
    [2](41): MinMax(*1x)
    [3](41): MinC(*1x)
    [4](41): MaxC(*1x)
    [5](41): MinMaxC(*1x)
###
> RU1->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
RU1->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
BndKind:Call, Type:(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*, Bnd:(Call(∂.ForEach([map:1] Global(RU1), (Call(∂.Min(Scope(1)):u1), Call(∂.Max(Scope(1)):u1), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})):(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*))
// (<ctx>, ∂.RU1:u1**) : (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
ForEach_1(Arr<obj>, Seq<u1>):(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})
      5) newobj (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})()
      1) dup
      1) ldarg.1 [Seq<u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<u1>, ExecCtx, i4):u1
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F0:u1
      1) dup
      1) ldarg.1 [Seq<u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<u1>, ExecCtx, i4):u1
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F1:u1
      1) dup
      1) ldarg.1 [Seq<u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u1,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {u1,u1}::_B0:u1
      1) stloc.0 [{u1,u1}]
      1) ldloc.0 [{u1,u1}]
      5) ldflda {u1,u1}::_F1:u1
      1) ldloc.0 [{u1,u1}]
      5) ldflda {u1,u1}::_F0:u1
      5) call static MinMaxGen::ExecMinMax(Seq<u1>, ExecCtx, i4, out u1, out u1):Void
      1) ldloc.0 [{u1,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F2:{u1,u1}
      1) dup
      1) ldarg.1 [Seq<u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u1}::_B0:u1
      1) stloc.1 [{i8,u1}]
      1) ldloc.1 [{i8,u1}]
      5) ldflda {i8,u1}::_F1:u1
      5) call static MinMaxGen::ExecMinC(Seq<u1>, ExecCtx, i4, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1}::_F0:i8
      1) ldloc.1 [{i8,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F3:{i8,u1}
      1) dup
      1) ldarg.1 [Seq<u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u1}::_B0:u1
      1) stloc.1 [{i8,u1}]
      1) ldloc.1 [{i8,u1}]
      5) ldflda {i8,u1}::_F1:u1
      5) call static MinMaxGen::ExecMaxC(Seq<u1>, ExecCtx, i4, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1}::_F0:i8
      1) ldloc.1 [{i8,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F4:{i8,u1}
      1) dup
      1) ldarg.1 [Seq<u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u1,u1}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u1,u1}::_B0:u1
      1) stloc.3 [{i8,u1,u1}]
      1) ldloc.3 [{i8,u1,u1}]
      5) ldflda {i8,u1,u1}::_F2:u1
      1) ldloc.3 [{i8,u1,u1}]
      5) ldflda {i8,u1,u1}::_F1:u1
      5) call static MinMaxGen::ExecMinMaxC(Seq<u1>, ExecCtx, i4, out u1, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u1,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1,u1}::_F0:i8
      1) ldloc.3 [{i8,u1,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F5:{i8,u1,u1}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<u1>>
      1) stloc.1 [Seq<Seq<u1>>]
      1) ldloc.1 [Seq<Seq<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<u1>,(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<u1>>, Func<Seq<u1>,(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>):Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>):Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, RU1:u1**) to (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
Sequence: Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
 0) (2, 255, { Max: 255, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 255 }, { Count: 6, Max: 255, Min: 2 })
 1) (0, 255, { Max: 255, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 255 }, { Count: 7, Max: 255, Min: 0 })
 2) (0, 255, { Max: 255, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 255 }, { Count: 8, Max: 255, Min: 0 })
 3) (0, 255, { Max: 255, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 255 }, { Count: 9, Max: 255, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (2, 255, { Max: 255, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 255 }, { Count: 6, Max: 255, Min: 2 })
*** Ctx ping count: 246
    [0](41): Min(*1x)
    [1](41): Max(*1x)
    [2](41): MinMax(*1x)
    [3](41): MinC(*1x)
    [4](41): MaxC(*1x)
    [5](41): MinMaxC(*1x)
###
> RB->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
RB->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
BndKind:Call, Type:(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*, Bnd:(Call(∂.ForEach([map:1] Global(RB), (Call(∂.Min(Scope(1)):b), Call(∂.Max(Scope(1)):b), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})):(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*))
// (<ctx>, ∂.RB:b**) : (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
ForEach_1(Arr<obj>, Seq<bool>):(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})
      5) newobj (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})()
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<bool>, ExecCtx, i4):bool
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F0:bool
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<bool>, ExecCtx, i4):bool
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F1:bool
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {bool,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {bool,bool}::_B0:u1
      1) stloc.0 [{bool,bool}]
      1) ldloc.0 [{bool,bool}]
      5) ldflda {bool,bool}::_F1:bool
      1) ldloc.0 [{bool,bool}]
      5) ldflda {bool,bool}::_F0:bool
      5) call static MinMaxGen::ExecMinMax(Seq<bool>, ExecCtx, i4, out bool, out bool):Void
      1) ldloc.0 [{bool,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F2:{bool,bool}
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,bool}::_B0:u1
      1) stloc.1 [{i8,bool}]
      1) ldloc.1 [{i8,bool}]
      5) ldflda {i8,bool}::_F1:bool
      5) call static MinMaxGen::ExecMinC(Seq<bool>, ExecCtx, i4, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool}::_F0:i8
      1) ldloc.1 [{i8,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F3:{i8,bool}
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,bool}::_B0:u1
      1) stloc.1 [{i8,bool}]
      1) ldloc.1 [{i8,bool}]
      5) ldflda {i8,bool}::_F1:bool
      5) call static MinMaxGen::ExecMaxC(Seq<bool>, ExecCtx, i4, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool}::_F0:i8
      1) ldloc.1 [{i8,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F4:{i8,bool}
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,bool,bool}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,bool,bool}::_B0:u1
      1) stloc.3 [{i8,bool,bool}]
      1) ldloc.3 [{i8,bool,bool}]
      5) ldflda {i8,bool,bool}::_F2:bool
      1) ldloc.3 [{i8,bool,bool}]
      5) ldflda {i8,bool,bool}::_F1:bool
      5) call static MinMaxGen::ExecMinMaxC(Seq<bool>, ExecCtx, i4, out bool, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,bool,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool,bool}::_F0:i8
      1) ldloc.3 [{i8,bool,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F5:{i8,bool,bool}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<bool>>
      1) stloc.1 [Seq<Seq<bool>>]
      1) ldloc.1 [Seq<Seq<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<bool>,(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<bool>>, Func<Seq<bool>,(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>):Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>):Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, RB:b**) to (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
Sequence: Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
 0) (true , true , { Max: true , Min: true  }, { Count: 6, Min: true  }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: true  })
 1) (false, false, { Max: false, Min: false }, { Count: 6, Min: false }, { Count: 6, Max: false }, { Count: 6, Max: false, Min: false })
 2) (false, true , { Max: true , Min: false }, { Count: 6, Min: false }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: false })
 3) (false, true , { Max: true , Min: false }, { Count: 6, Min: false }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: false })
 4) (false, false, { Max: false, Min: false }, { Count: 0, Min: false }, { Count: 0, Max: false }, { Count: 0, Max: false, Min: false })
 5) (false, false, { Max: false, Min: false }, { Count: 0, Min: false }, { Count: 0, Max: false }, { Count: 0, Max: false, Min: false })
*** Ctx ping count: 138
    [0](14): Min(*1x)
    [1](14): Max(*1x)
    [2](23): MinMax(*1x)
    [3](29): MinC(*1x)
    [4](29): MaxC(*1x)
    [5](29): MinMaxC(*1x)
###
> SIA->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
SIA->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
BndKind:Call, Type:(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*, Bnd:(Call(∂.ForEach([map:1] Global(SIA), (Call(∂.Min(Scope(1)):i), Call(∂.Max(Scope(1)):i), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})):(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*))
// (<ctx>, ∂.SIA:i?**) : (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
ForEach_1(Arr<obj>, Seq<Opt<ia>>):(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})
      5) newobj (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})()
      1) dup
      1) ldarg.1 [Seq<Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<ia>>, ExecCtx, i4):ia
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F0:ia
      1) dup
      1) ldarg.1 [Seq<Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<ia>>, ExecCtx, i4):ia
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F1:ia
      1) dup
      1) ldarg.1 [Seq<Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {ia,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {ia,ia}::_B0:u1
      1) stloc.0 [{ia,ia}]
      1) ldloc.0 [{ia,ia}]
      5) ldflda {ia,ia}::_F1:ia
      1) ldloc.0 [{ia,ia}]
      5) ldflda {ia,ia}::_F0:ia
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<ia>>, ExecCtx, i4, out ia, out ia):Void
      1) ldloc.0 [{ia,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F2:{ia,ia}
      1) dup
      1) ldarg.1 [Seq<Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,ia}::_B0:u1
      1) stloc.1 [{i8,ia}]
      1) ldloc.1 [{i8,ia}]
      5) ldflda {i8,ia}::_F1:ia
      5) call static MinMaxGen::ExecMinC(Seq<Opt<ia>>, ExecCtx, i4, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia}::_F0:i8
      1) ldloc.1 [{i8,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F3:{i8,ia}
      1) dup
      1) ldarg.1 [Seq<Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,ia}::_B0:u1
      1) stloc.1 [{i8,ia}]
      1) ldloc.1 [{i8,ia}]
      5) ldflda {i8,ia}::_F1:ia
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<ia>>, ExecCtx, i4, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia}::_F0:i8
      1) ldloc.1 [{i8,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F4:{i8,ia}
      1) dup
      1) ldarg.1 [Seq<Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,ia,ia}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,ia,ia}::_B0:u1
      1) stloc.3 [{i8,ia,ia}]
      1) ldloc.3 [{i8,ia,ia}]
      5) ldflda {i8,ia,ia}::_F2:ia
      1) ldloc.3 [{i8,ia,ia}]
      5) ldflda {i8,ia,ia}::_F1:ia
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<ia>>, ExecCtx, i4, out ia, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,ia,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia,ia}::_F0:i8
      1) ldloc.3 [{i8,ia,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F5:{i8,ia,ia}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<ia>>>
      1) stloc.1 [Seq<Seq<Opt<ia>>>]
      1) ldloc.1 [Seq<Seq<Opt<ia>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<ia>>,(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<ia>>>, Func<Seq<Opt<ia>>,(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>):Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>):Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, SIA:i?**) to (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
Sequence: Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 246
    [0](41): Min(*1x)
    [1](41): Max(*1x)
    [2](41): MinMax(*1x)
    [3](41): MinC(*1x)
    [4](41): MaxC(*1x)
    [5](41): MinMaxC(*1x)
###
> SI8->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
SI8->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
BndKind:Call, Type:(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*, Bnd:(Call(∂.ForEach([map:1] Global(SI8), (Call(∂.Min(Scope(1)):i8), Call(∂.Max(Scope(1)):i8), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})):(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*))
// (<ctx>, ∂.SI8:i8?**) : (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
ForEach_1(Arr<obj>, Seq<Opt<i8>>):(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})
      5) newobj (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})()
      1) dup
      1) ldarg.1 [Seq<Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<i8>>, ExecCtx, i4):i8
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F0:i8
      1) dup
      1) ldarg.1 [Seq<Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<i8>>, ExecCtx, i4):i8
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F1:i8
      1) dup
      1) ldarg.1 [Seq<Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F0:i8
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<i8>>, ExecCtx, i4, out i8, out i8):Void
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F2:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMinC(Seq<Opt<i8>>, ExecCtx, i4, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.0 [{i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8}::_F0:i8
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F3:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<i8>>, ExecCtx, i4, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.0 [{i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8}::_F0:i8
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F4:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i8,i8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i8,i8}::_B0:u1
      1) stloc.2 [{i8,i8,i8}]
      1) ldloc.2 [{i8,i8,i8}]
      5) ldflda {i8,i8,i8}::_F2:i8
      1) ldloc.2 [{i8,i8,i8}]
      5) ldflda {i8,i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<i8>>, ExecCtx, i4, out i8, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.2 [{i8,i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8,i8}::_F0:i8
      1) ldloc.2 [{i8,i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F5:{i8,i8,i8}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<i8>>>
      1) stloc.1 [Seq<Seq<Opt<i8>>>]
      1) ldloc.1 [Seq<Seq<Opt<i8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<i8>>,(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<i8>>>, Func<Seq<Opt<i8>>,(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>):Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>):Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, SI8:i8?**) to (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
Sequence: Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 246
    [0](41): Min(*1x)
    [1](41): Max(*1x)
    [2](41): MinMax(*1x)
    [3](41): MinC(*1x)
    [4](41): MaxC(*1x)
    [5](41): MinMaxC(*1x)
###
> SI4->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
SI4->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
BndKind:Call, Type:(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*, Bnd:(Call(∂.ForEach([map:1] Global(SI4), (Call(∂.Min(Scope(1)):i4), Call(∂.Max(Scope(1)):i4), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})):(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*))
// (<ctx>, ∂.SI4:i4?**) : (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
ForEach_1(Arr<obj>, Seq<Opt<i4>>):(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})
      5) newobj (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})()
      1) dup
      1) ldarg.1 [Seq<Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<i4>>, ExecCtx, i4):i4
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F0:i4
      1) dup
      1) ldarg.1 [Seq<Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<i4>>, ExecCtx, i4):i4
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F1:i4
      1) dup
      1) ldarg.1 [Seq<Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i4,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i4,i4}::_B0:u1
      1) stloc.0 [{i4,i4}]
      1) ldloc.0 [{i4,i4}]
      5) ldflda {i4,i4}::_F1:i4
      1) ldloc.0 [{i4,i4}]
      5) ldflda {i4,i4}::_F0:i4
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<i4>>, ExecCtx, i4, out i4, out i4):Void
      1) ldloc.0 [{i4,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F2:{i4,i4}
      1) dup
      1) ldarg.1 [Seq<Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i4}::_B0:u1
      1) stloc.1 [{i8,i4}]
      1) ldloc.1 [{i8,i4}]
      5) ldflda {i8,i4}::_F1:i4
      5) call static MinMaxGen::ExecMinC(Seq<Opt<i4>>, ExecCtx, i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4}::_F0:i8
      1) ldloc.1 [{i8,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F3:{i8,i4}
      1) dup
      1) ldarg.1 [Seq<Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i4}::_B0:u1
      1) stloc.1 [{i8,i4}]
      1) ldloc.1 [{i8,i4}]
      5) ldflda {i8,i4}::_F1:i4
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<i4>>, ExecCtx, i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4}::_F0:i8
      1) ldloc.1 [{i8,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F4:{i8,i4}
      1) dup
      1) ldarg.1 [Seq<Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i4,i4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i4,i4}::_B0:u1
      1) stloc.3 [{i8,i4,i4}]
      1) ldloc.3 [{i8,i4,i4}]
      5) ldflda {i8,i4,i4}::_F2:i4
      1) ldloc.3 [{i8,i4,i4}]
      5) ldflda {i8,i4,i4}::_F1:i4
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<i4>>, ExecCtx, i4, out i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i4,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4,i4}::_F0:i8
      1) ldloc.3 [{i8,i4,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F5:{i8,i4,i4}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<i4>>>
      1) stloc.1 [Seq<Seq<Opt<i4>>>]
      1) ldloc.1 [Seq<Seq<Opt<i4>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<i4>>,(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<i4>>>, Func<Seq<Opt<i4>>,(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>):Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>):Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, SI4:i4?**) to (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
Sequence: Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 246
    [0](41): Min(*1x)
    [1](41): Max(*1x)
    [2](41): MinMax(*1x)
    [3](41): MinC(*1x)
    [4](41): MaxC(*1x)
    [5](41): MinMaxC(*1x)
###
> SI2->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
SI2->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
BndKind:Call, Type:(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*, Bnd:(Call(∂.ForEach([map:1] Global(SI2), (Call(∂.Min(Scope(1)):i2), Call(∂.Max(Scope(1)):i2), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})):(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*))
// (<ctx>, ∂.SI2:i2?**) : (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
ForEach_1(Arr<obj>, Seq<Opt<i2>>):(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})
      5) newobj (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})()
      1) dup
      1) ldarg.1 [Seq<Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<i2>>, ExecCtx, i4):i2
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F0:i2
      1) dup
      1) ldarg.1 [Seq<Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<i2>>, ExecCtx, i4):i2
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F1:i2
      1) dup
      1) ldarg.1 [Seq<Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i2,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i2,i2}::_B0:u1
      1) stloc.0 [{i2,i2}]
      1) ldloc.0 [{i2,i2}]
      5) ldflda {i2,i2}::_F1:i2
      1) ldloc.0 [{i2,i2}]
      5) ldflda {i2,i2}::_F0:i2
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<i2>>, ExecCtx, i4, out i2, out i2):Void
      1) ldloc.0 [{i2,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F2:{i2,i2}
      1) dup
      1) ldarg.1 [Seq<Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i2}::_B0:u1
      1) stloc.1 [{i8,i2}]
      1) ldloc.1 [{i8,i2}]
      5) ldflda {i8,i2}::_F1:i2
      5) call static MinMaxGen::ExecMinC(Seq<Opt<i2>>, ExecCtx, i4, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2}::_F0:i8
      1) ldloc.1 [{i8,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F3:{i8,i2}
      1) dup
      1) ldarg.1 [Seq<Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i2}::_B0:u1
      1) stloc.1 [{i8,i2}]
      1) ldloc.1 [{i8,i2}]
      5) ldflda {i8,i2}::_F1:i2
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<i2>>, ExecCtx, i4, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2}::_F0:i8
      1) ldloc.1 [{i8,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F4:{i8,i2}
      1) dup
      1) ldarg.1 [Seq<Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i2,i2}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i2,i2}::_B0:u1
      1) stloc.3 [{i8,i2,i2}]
      1) ldloc.3 [{i8,i2,i2}]
      5) ldflda {i8,i2,i2}::_F2:i2
      1) ldloc.3 [{i8,i2,i2}]
      5) ldflda {i8,i2,i2}::_F1:i2
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<i2>>, ExecCtx, i4, out i2, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i2,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2,i2}::_F0:i8
      1) ldloc.3 [{i8,i2,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F5:{i8,i2,i2}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<i2>>>
      1) stloc.1 [Seq<Seq<Opt<i2>>>]
      1) ldloc.1 [Seq<Seq<Opt<i2>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<i2>>,(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<i2>>>, Func<Seq<Opt<i2>>,(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>):Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>):Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, SI2:i2?**) to (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
Sequence: Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 246
    [0](41): Min(*1x)
    [1](41): Max(*1x)
    [2](41): MinMax(*1x)
    [3](41): MinC(*1x)
    [4](41): MaxC(*1x)
    [5](41): MinMaxC(*1x)
###
> SI1->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
SI1->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
BndKind:Call, Type:(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*, Bnd:(Call(∂.ForEach([map:1] Global(SI1), (Call(∂.Min(Scope(1)):i1), Call(∂.Max(Scope(1)):i1), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})):(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*))
// (<ctx>, ∂.SI1:i1?**) : (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
ForEach_1(Arr<obj>, Seq<Opt<i1>>):(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})
      5) newobj (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})()
      1) dup
      1) ldarg.1 [Seq<Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<i1>>, ExecCtx, i4):i1
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F0:i1
      1) dup
      1) ldarg.1 [Seq<Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<i1>>, ExecCtx, i4):i1
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F1:i1
      1) dup
      1) ldarg.1 [Seq<Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i1,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i1,i1}::_B0:u1
      1) stloc.0 [{i1,i1}]
      1) ldloc.0 [{i1,i1}]
      5) ldflda {i1,i1}::_F1:i1
      1) ldloc.0 [{i1,i1}]
      5) ldflda {i1,i1}::_F0:i1
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<i1>>, ExecCtx, i4, out i1, out i1):Void
      1) ldloc.0 [{i1,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F2:{i1,i1}
      1) dup
      1) ldarg.1 [Seq<Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i1}::_B0:u1
      1) stloc.1 [{i8,i1}]
      1) ldloc.1 [{i8,i1}]
      5) ldflda {i8,i1}::_F1:i1
      5) call static MinMaxGen::ExecMinC(Seq<Opt<i1>>, ExecCtx, i4, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1}::_F0:i8
      1) ldloc.1 [{i8,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F3:{i8,i1}
      1) dup
      1) ldarg.1 [Seq<Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i1}::_B0:u1
      1) stloc.1 [{i8,i1}]
      1) ldloc.1 [{i8,i1}]
      5) ldflda {i8,i1}::_F1:i1
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<i1>>, ExecCtx, i4, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1}::_F0:i8
      1) ldloc.1 [{i8,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F4:{i8,i1}
      1) dup
      1) ldarg.1 [Seq<Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i1,i1}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i1,i1}::_B0:u1
      1) stloc.3 [{i8,i1,i1}]
      1) ldloc.3 [{i8,i1,i1}]
      5) ldflda {i8,i1,i1}::_F2:i1
      1) ldloc.3 [{i8,i1,i1}]
      5) ldflda {i8,i1,i1}::_F1:i1
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<i1>>, ExecCtx, i4, out i1, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i1,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1,i1}::_F0:i8
      1) ldloc.3 [{i8,i1,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F5:{i8,i1,i1}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<i1>>>
      1) stloc.1 [Seq<Seq<Opt<i1>>>]
      1) ldloc.1 [Seq<Seq<Opt<i1>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<i1>>,(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<i1>>>, Func<Seq<Opt<i1>>,(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>):Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>):Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, SI1:i1?**) to (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
Sequence: Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 246
    [0](41): Min(*1x)
    [1](41): Max(*1x)
    [2](41): MinMax(*1x)
    [3](41): MinC(*1x)
    [4](41): MaxC(*1x)
    [5](41): MinMaxC(*1x)
###
> SU8->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
SU8->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
BndKind:Call, Type:(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*, Bnd:(Call(∂.ForEach([map:1] Global(SU8), (Call(∂.Min(Scope(1)):u8), Call(∂.Max(Scope(1)):u8), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})):(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*))
// (<ctx>, ∂.SU8:u8?**) : (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
ForEach_1(Arr<obj>, Seq<Opt<u8>>):(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})
      5) newobj (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})()
      1) dup
      1) ldarg.1 [Seq<Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<u8>>, ExecCtx, i4):u8
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F0:u8
      1) dup
      1) ldarg.1 [Seq<Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<u8>>, ExecCtx, i4):u8
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F1:u8
      1) dup
      1) ldarg.1 [Seq<Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {u8,u8}::_B0:u1
      1) stloc.0 [{u8,u8}]
      1) ldloc.0 [{u8,u8}]
      5) ldflda {u8,u8}::_F1:u8
      1) ldloc.0 [{u8,u8}]
      5) ldflda {u8,u8}::_F0:u8
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<u8>>, ExecCtx, i4, out u8, out u8):Void
      1) ldloc.0 [{u8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F2:{u8,u8}
      1) dup
      1) ldarg.1 [Seq<Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u8}::_B0:u1
      1) stloc.1 [{i8,u8}]
      1) ldloc.1 [{i8,u8}]
      5) ldflda {i8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMinC(Seq<Opt<u8>>, ExecCtx, i4, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8}::_F0:i8
      1) ldloc.1 [{i8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F3:{i8,u8}
      1) dup
      1) ldarg.1 [Seq<Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u8}::_B0:u1
      1) stloc.1 [{i8,u8}]
      1) ldloc.1 [{i8,u8}]
      5) ldflda {i8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<u8>>, ExecCtx, i4, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8}::_F0:i8
      1) ldloc.1 [{i8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F4:{i8,u8}
      1) dup
      1) ldarg.1 [Seq<Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u8,u8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u8,u8}::_B0:u1
      1) stloc.3 [{i8,u8,u8}]
      1) ldloc.3 [{i8,u8,u8}]
      5) ldflda {i8,u8,u8}::_F2:u8
      1) ldloc.3 [{i8,u8,u8}]
      5) ldflda {i8,u8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<u8>>, ExecCtx, i4, out u8, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8,u8}::_F0:i8
      1) ldloc.3 [{i8,u8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F5:{i8,u8,u8}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<u8>>>
      1) stloc.1 [Seq<Seq<Opt<u8>>>]
      1) ldloc.1 [Seq<Seq<Opt<u8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<u8>>,(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<u8>>>, Func<Seq<Opt<u8>>,(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>):Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>):Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, SU8:u8?**) to (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
Sequence: Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
 0) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 1) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 2) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 3) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
*** Ctx ping count: 246
    [0](41): Min(*1x)
    [1](41): Max(*1x)
    [2](41): MinMax(*1x)
    [3](41): MinC(*1x)
    [4](41): MaxC(*1x)
    [5](41): MinMaxC(*1x)
###
> SU4->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
SU4->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
BndKind:Call, Type:(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*, Bnd:(Call(∂.ForEach([map:1] Global(SU4), (Call(∂.Min(Scope(1)):u4), Call(∂.Max(Scope(1)):u4), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})):(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*))
// (<ctx>, ∂.SU4:u4?**) : (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
ForEach_1(Arr<obj>, Seq<Opt<u4>>):(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})
      5) newobj (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})()
      1) dup
      1) ldarg.1 [Seq<Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<u4>>, ExecCtx, i4):u4
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F0:u4
      1) dup
      1) ldarg.1 [Seq<Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<u4>>, ExecCtx, i4):u4
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F1:u4
      1) dup
      1) ldarg.1 [Seq<Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u4,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {u4,u4}::_B0:u1
      1) stloc.0 [{u4,u4}]
      1) ldloc.0 [{u4,u4}]
      5) ldflda {u4,u4}::_F1:u4
      1) ldloc.0 [{u4,u4}]
      5) ldflda {u4,u4}::_F0:u4
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<u4>>, ExecCtx, i4, out u4, out u4):Void
      1) ldloc.0 [{u4,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F2:{u4,u4}
      1) dup
      1) ldarg.1 [Seq<Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u4}::_B0:u1
      1) stloc.1 [{i8,u4}]
      1) ldloc.1 [{i8,u4}]
      5) ldflda {i8,u4}::_F1:u4
      5) call static MinMaxGen::ExecMinC(Seq<Opt<u4>>, ExecCtx, i4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4}::_F0:i8
      1) ldloc.1 [{i8,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F3:{i8,u4}
      1) dup
      1) ldarg.1 [Seq<Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u4}::_B0:u1
      1) stloc.1 [{i8,u4}]
      1) ldloc.1 [{i8,u4}]
      5) ldflda {i8,u4}::_F1:u4
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<u4>>, ExecCtx, i4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4}::_F0:i8
      1) ldloc.1 [{i8,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F4:{i8,u4}
      1) dup
      1) ldarg.1 [Seq<Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u4,u4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u4,u4}::_B0:u1
      1) stloc.3 [{i8,u4,u4}]
      1) ldloc.3 [{i8,u4,u4}]
      5) ldflda {i8,u4,u4}::_F2:u4
      1) ldloc.3 [{i8,u4,u4}]
      5) ldflda {i8,u4,u4}::_F1:u4
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<u4>>, ExecCtx, i4, out u4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u4,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4,u4}::_F0:i8
      1) ldloc.3 [{i8,u4,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F5:{i8,u4,u4}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<u4>>>
      1) stloc.1 [Seq<Seq<Opt<u4>>>]
      1) ldloc.1 [Seq<Seq<Opt<u4>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<u4>>,(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<u4>>>, Func<Seq<Opt<u4>>,(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>):Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>):Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, SU4:u4?**) to (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
Sequence: Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
 0) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 1) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 2) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 3) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
*** Ctx ping count: 246
    [0](41): Min(*1x)
    [1](41): Max(*1x)
    [2](41): MinMax(*1x)
    [3](41): MinC(*1x)
    [4](41): MaxC(*1x)
    [5](41): MinMaxC(*1x)
###
> SU2->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
SU2->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
BndKind:Call, Type:(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*, Bnd:(Call(∂.ForEach([map:1] Global(SU2), (Call(∂.Min(Scope(1)):u2), Call(∂.Max(Scope(1)):u2), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})):(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*))
// (<ctx>, ∂.SU2:u2?**) : (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
ForEach_1(Arr<obj>, Seq<Opt<u2>>):(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})
      5) newobj (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})()
      1) dup
      1) ldarg.1 [Seq<Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<u2>>, ExecCtx, i4):u2
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F0:u2
      1) dup
      1) ldarg.1 [Seq<Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<u2>>, ExecCtx, i4):u2
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F1:u2
      1) dup
      1) ldarg.1 [Seq<Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u2,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {u2,u2}::_B0:u1
      1) stloc.0 [{u2,u2}]
      1) ldloc.0 [{u2,u2}]
      5) ldflda {u2,u2}::_F1:u2
      1) ldloc.0 [{u2,u2}]
      5) ldflda {u2,u2}::_F0:u2
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<u2>>, ExecCtx, i4, out u2, out u2):Void
      1) ldloc.0 [{u2,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F2:{u2,u2}
      1) dup
      1) ldarg.1 [Seq<Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u2}::_B0:u1
      1) stloc.1 [{i8,u2}]
      1) ldloc.1 [{i8,u2}]
      5) ldflda {i8,u2}::_F1:u2
      5) call static MinMaxGen::ExecMinC(Seq<Opt<u2>>, ExecCtx, i4, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2}::_F0:i8
      1) ldloc.1 [{i8,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F3:{i8,u2}
      1) dup
      1) ldarg.1 [Seq<Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u2}::_B0:u1
      1) stloc.1 [{i8,u2}]
      1) ldloc.1 [{i8,u2}]
      5) ldflda {i8,u2}::_F1:u2
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<u2>>, ExecCtx, i4, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2}::_F0:i8
      1) ldloc.1 [{i8,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F4:{i8,u2}
      1) dup
      1) ldarg.1 [Seq<Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u2,u2}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u2,u2}::_B0:u1
      1) stloc.3 [{i8,u2,u2}]
      1) ldloc.3 [{i8,u2,u2}]
      5) ldflda {i8,u2,u2}::_F2:u2
      1) ldloc.3 [{i8,u2,u2}]
      5) ldflda {i8,u2,u2}::_F1:u2
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<u2>>, ExecCtx, i4, out u2, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u2,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2,u2}::_F0:i8
      1) ldloc.3 [{i8,u2,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F5:{i8,u2,u2}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<u2>>>
      1) stloc.1 [Seq<Seq<Opt<u2>>>]
      1) ldloc.1 [Seq<Seq<Opt<u2>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<u2>>,(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<u2>>>, Func<Seq<Opt<u2>>,(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>):Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>):Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, SU2:u2?**) to (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
Sequence: Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
 0) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 1) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 2) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 3) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
*** Ctx ping count: 246
    [0](41): Min(*1x)
    [1](41): Max(*1x)
    [2](41): MinMax(*1x)
    [3](41): MinC(*1x)
    [4](41): MaxC(*1x)
    [5](41): MinMaxC(*1x)
###
> SU1->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
SU1->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
BndKind:Call, Type:(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*, Bnd:(Call(∂.ForEach([map:1] Global(SU1), (Call(∂.Min(Scope(1)):u1), Call(∂.Max(Scope(1)):u1), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})):(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*))
// (<ctx>, ∂.SU1:u1?**) : (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
ForEach_1(Arr<obj>, Seq<Opt<u1>>):(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})
      5) newobj (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})()
      1) dup
      1) ldarg.1 [Seq<Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<u1>>, ExecCtx, i4):u1
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F0:u1
      1) dup
      1) ldarg.1 [Seq<Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<u1>>, ExecCtx, i4):u1
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F1:u1
      1) dup
      1) ldarg.1 [Seq<Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u1,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {u1,u1}::_B0:u1
      1) stloc.0 [{u1,u1}]
      1) ldloc.0 [{u1,u1}]
      5) ldflda {u1,u1}::_F1:u1
      1) ldloc.0 [{u1,u1}]
      5) ldflda {u1,u1}::_F0:u1
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<u1>>, ExecCtx, i4, out u1, out u1):Void
      1) ldloc.0 [{u1,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F2:{u1,u1}
      1) dup
      1) ldarg.1 [Seq<Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u1}::_B0:u1
      1) stloc.1 [{i8,u1}]
      1) ldloc.1 [{i8,u1}]
      5) ldflda {i8,u1}::_F1:u1
      5) call static MinMaxGen::ExecMinC(Seq<Opt<u1>>, ExecCtx, i4, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1}::_F0:i8
      1) ldloc.1 [{i8,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F3:{i8,u1}
      1) dup
      1) ldarg.1 [Seq<Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u1}::_B0:u1
      1) stloc.1 [{i8,u1}]
      1) ldloc.1 [{i8,u1}]
      5) ldflda {i8,u1}::_F1:u1
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<u1>>, ExecCtx, i4, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1}::_F0:i8
      1) ldloc.1 [{i8,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F4:{i8,u1}
      1) dup
      1) ldarg.1 [Seq<Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u1,u1}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u1,u1}::_B0:u1
      1) stloc.3 [{i8,u1,u1}]
      1) ldloc.3 [{i8,u1,u1}]
      5) ldflda {i8,u1,u1}::_F2:u1
      1) ldloc.3 [{i8,u1,u1}]
      5) ldflda {i8,u1,u1}::_F1:u1
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<u1>>, ExecCtx, i4, out u1, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u1,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1,u1}::_F0:i8
      1) ldloc.3 [{i8,u1,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F5:{i8,u1,u1}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<u1>>>
      1) stloc.1 [Seq<Seq<Opt<u1>>>]
      1) ldloc.1 [Seq<Seq<Opt<u1>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<u1>>,(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<u1>>>, Func<Seq<Opt<u1>>,(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>):Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>):Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, SU1:u1?**) to (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
Sequence: Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
 0) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 1) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 2) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 3) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
*** Ctx ping count: 246
    [0](41): Min(*1x)
    [1](41): Max(*1x)
    [2](41): MinMax(*1x)
    [3](41): MinC(*1x)
    [4](41): MaxC(*1x)
    [5](41): MinMaxC(*1x)
###
> OR8->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
OR8->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*
BndKind:Call, Type:(r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*, Bnd:(Call(∂.ForEach([map:1] Global(OR8), (Call(∂.Min(Scope(1)):r8), Call(∂.Max(Scope(1)):r8), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})):(r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*))
// (<ctx>, ∂.OR8:r8?**) : (r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*
ForEach_1(Arr<obj>, Seq<Opt<r8>>):(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})
      5) newobj (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, ExecCtx, i4):r8
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F0:r8
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, ExecCtx, i4):r8
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F1:r8
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {r8,r8}()
      1) dup
      1) ldc.i4.3
      5) stfld {r8,r8}::_B0:u1
      1) stloc.0 [{r8,r8}]
      1) ldloc.0 [{r8,r8}]
      5) ldflda {r8,r8}::_F1:r8
      1) ldloc.0 [{r8,r8}]
      5) ldflda {r8,r8}::_F0:r8
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, ExecCtx, i4, out r8, out r8):Void
      1) ldloc.0 [{r8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F2:{r8,r8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,r8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r8}::_B0:u1
      1) stloc.1 [{i8,r8}]
      1) ldloc.1 [{i8,r8}]
      5) ldflda {i8,r8}::_F1:r8
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, ExecCtx, i4, out r8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r8}]
      1) ldloc.2 [i8]
      5) stfld {i8,r8}::_F0:i8
      1) ldloc.1 [{i8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F3:{i8,r8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,r8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r8}::_B0:u1
      1) stloc.1 [{i8,r8}]
      1) ldloc.1 [{i8,r8}]
      5) ldflda {i8,r8}::_F1:r8
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, ExecCtx, i4, out r8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r8}]
      1) ldloc.2 [i8]
      5) stfld {i8,r8}::_F0:i8
      1) ldloc.1 [{i8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F4:{i8,r8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,r8,r8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,r8,r8}::_B0:u1
      1) stloc.3 [{i8,r8,r8}]
      1) ldloc.3 [{i8,r8,r8}]
      5) ldflda {i8,r8,r8}::_F2:r8
      1) ldloc.3 [{i8,r8,r8}]
      5) ldflda {i8,r8,r8}::_F1:r8
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, ExecCtx, i4, out r8, out r8):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,r8,r8}]
      1) ldloc.2 [i8]
      5) stfld {i8,r8,r8}::_F0:i8
      1) ldloc.3 [{i8,r8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F5:{i8,r8,r8}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>):Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>):Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, OR8:r8?**) to (r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*
Sequence: Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 7, Min: NaN }, { Count: 7, Max: NaN }, { Count: 7, Max: NaN, Min: NaN })
 2) (-∞, ∞, { Max: ∞, Min: -∞ }, { Count: 8, Min: -∞ }, { Count: 8, Max: ∞ }, { Count: 8, Max: ∞, Min: -∞ })
 3) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 9, Min: NaN }, { Count: 9, Max: NaN }, { Count: 9, Max: NaN, Min: NaN })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 294
    [0](49): Min(*1x)
    [1](49): Max(*1x)
    [2](49): MinMax(*1x)
    [3](49): MinC(*1x)
    [4](49): MaxC(*1x)
    [5](49): MinMaxC(*1x)
###
> OR4->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
OR4->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*
BndKind:Call, Type:(r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*, Bnd:(Call(∂.ForEach([map:1] Global(OR4), (Call(∂.Min(Scope(1)):r4), Call(∂.Max(Scope(1)):r4), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})):(r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*))
// (<ctx>, ∂.OR4:r4?**) : (r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*
ForEach_1(Arr<obj>, Seq<Opt<r4>>):(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})
      5) newobj (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})()
      1) dup
      1) ldarg.1 [Seq<Opt<r4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r4>>, ExecCtx, i4):r4
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F0:r4
      1) dup
      1) ldarg.1 [Seq<Opt<r4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r4>>, ExecCtx, i4):r4
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F1:r4
      1) dup
      1) ldarg.1 [Seq<Opt<r4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {r4,r4}()
      1) dup
      1) ldc.i4.3
      5) stfld {r4,r4}::_B0:u1
      1) stloc.0 [{r4,r4}]
      1) ldloc.0 [{r4,r4}]
      5) ldflda {r4,r4}::_F1:r4
      1) ldloc.0 [{r4,r4}]
      5) ldflda {r4,r4}::_F0:r4
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r4>>, ExecCtx, i4, out r4, out r4):Void
      1) ldloc.0 [{r4,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F2:{r4,r4}
      1) dup
      1) ldarg.1 [Seq<Opt<r4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,r4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r4}::_B0:u1
      1) stloc.1 [{i8,r4}]
      1) ldloc.1 [{i8,r4}]
      5) ldflda {i8,r4}::_F1:r4
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r4>>, ExecCtx, i4, out r4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r4}]
      1) ldloc.2 [i8]
      5) stfld {i8,r4}::_F0:i8
      1) ldloc.1 [{i8,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F3:{i8,r4}
      1) dup
      1) ldarg.1 [Seq<Opt<r4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,r4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r4}::_B0:u1
      1) stloc.1 [{i8,r4}]
      1) ldloc.1 [{i8,r4}]
      5) ldflda {i8,r4}::_F1:r4
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r4>>, ExecCtx, i4, out r4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r4}]
      1) ldloc.2 [i8]
      5) stfld {i8,r4}::_F0:i8
      1) ldloc.1 [{i8,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F4:{i8,r4}
      1) dup
      1) ldarg.1 [Seq<Opt<r4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,r4,r4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,r4,r4}::_B0:u1
      1) stloc.3 [{i8,r4,r4}]
      1) ldloc.3 [{i8,r4,r4}]
      5) ldflda {i8,r4,r4}::_F2:r4
      1) ldloc.3 [{i8,r4,r4}]
      5) ldflda {i8,r4,r4}::_F1:r4
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r4>>, ExecCtx, i4, out r4, out r4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,r4,r4}]
      1) ldloc.2 [i8]
      5) stfld {i8,r4,r4}::_F0:i8
      1) ldloc.3 [{i8,r4,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F5:{i8,r4,r4}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r4>>>
      1) stloc.1 [Seq<Seq<Opt<r4>>>]
      1) ldloc.1 [Seq<Seq<Opt<r4>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r4>>,(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r4>>>, Func<Seq<Opt<r4>>,(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>):Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>):Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, OR4:r4?**) to (r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*
Sequence: Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 7, Min: NaN }, { Count: 7, Max: NaN }, { Count: 7, Max: NaN, Min: NaN })
 2) (-∞, ∞, { Max: ∞, Min: -∞ }, { Count: 8, Min: -∞ }, { Count: 8, Max: ∞ }, { Count: 8, Max: ∞, Min: -∞ })
 3) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 9, Min: NaN }, { Count: 9, Max: NaN }, { Count: 9, Max: NaN, Min: NaN })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 288
    [0](48): Min(*1x)
    [1](48): Max(*1x)
    [2](48): MinMax(*1x)
    [3](48): MinC(*1x)
    [4](48): MaxC(*1x)
    [5](48): MinMaxC(*1x)
###
> OIA->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
OIA->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
BndKind:Call, Type:(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*, Bnd:(Call(∂.ForEach([map:1] Global(OIA), (Call(∂.Min(Scope(1)):i), Call(∂.Max(Scope(1)):i), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})):(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*))
// (<ctx>, ∂.OIA:i?**) : (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
ForEach_1(Arr<obj>, Seq<Opt<ia>>):(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})
      5) newobj (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})()
      1) dup
      1) ldarg.1 [Seq<Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<ia>>, ExecCtx, i4):ia
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F0:ia
      1) dup
      1) ldarg.1 [Seq<Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<ia>>, ExecCtx, i4):ia
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F1:ia
      1) dup
      1) ldarg.1 [Seq<Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {ia,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {ia,ia}::_B0:u1
      1) stloc.0 [{ia,ia}]
      1) ldloc.0 [{ia,ia}]
      5) ldflda {ia,ia}::_F1:ia
      1) ldloc.0 [{ia,ia}]
      5) ldflda {ia,ia}::_F0:ia
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<ia>>, ExecCtx, i4, out ia, out ia):Void
      1) ldloc.0 [{ia,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F2:{ia,ia}
      1) dup
      1) ldarg.1 [Seq<Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,ia}::_B0:u1
      1) stloc.1 [{i8,ia}]
      1) ldloc.1 [{i8,ia}]
      5) ldflda {i8,ia}::_F1:ia
      5) call static MinMaxGen::ExecMinC(Seq<Opt<ia>>, ExecCtx, i4, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia}::_F0:i8
      1) ldloc.1 [{i8,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F3:{i8,ia}
      1) dup
      1) ldarg.1 [Seq<Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,ia}::_B0:u1
      1) stloc.1 [{i8,ia}]
      1) ldloc.1 [{i8,ia}]
      5) ldflda {i8,ia}::_F1:ia
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<ia>>, ExecCtx, i4, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia}::_F0:i8
      1) ldloc.1 [{i8,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F4:{i8,ia}
      1) dup
      1) ldarg.1 [Seq<Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,ia,ia}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,ia,ia}::_B0:u1
      1) stloc.3 [{i8,ia,ia}]
      1) ldloc.3 [{i8,ia,ia}]
      5) ldflda {i8,ia,ia}::_F2:ia
      1) ldloc.3 [{i8,ia,ia}]
      5) ldflda {i8,ia,ia}::_F1:ia
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<ia>>, ExecCtx, i4, out ia, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,ia,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia,ia}::_F0:i8
      1) ldloc.3 [{i8,ia,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F5:{i8,ia,ia}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<ia>>>
      1) stloc.1 [Seq<Seq<Opt<ia>>>]
      1) ldloc.1 [Seq<Seq<Opt<ia>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<ia>>,(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<ia>>>, Func<Seq<Opt<ia>>,(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>):Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>):Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, OIA:i?**) to (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
Sequence: Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 288
    [0](48): Min(*1x)
    [1](48): Max(*1x)
    [2](48): MinMax(*1x)
    [3](48): MinC(*1x)
    [4](48): MaxC(*1x)
    [5](48): MinMaxC(*1x)
###
> OI8->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
OI8->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
BndKind:Call, Type:(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*, Bnd:(Call(∂.ForEach([map:1] Global(OI8), (Call(∂.Min(Scope(1)):i8), Call(∂.Max(Scope(1)):i8), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})):(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*))
// (<ctx>, ∂.OI8:i8?**) : (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
ForEach_1(Arr<obj>, Seq<Opt<i8>>):(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})
      5) newobj (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})()
      1) dup
      1) ldarg.1 [Seq<Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<i8>>, ExecCtx, i4):i8
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F0:i8
      1) dup
      1) ldarg.1 [Seq<Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<i8>>, ExecCtx, i4):i8
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F1:i8
      1) dup
      1) ldarg.1 [Seq<Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F0:i8
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<i8>>, ExecCtx, i4, out i8, out i8):Void
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F2:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMinC(Seq<Opt<i8>>, ExecCtx, i4, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.0 [{i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8}::_F0:i8
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F3:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<i8>>, ExecCtx, i4, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.0 [{i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8}::_F0:i8
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F4:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i8,i8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i8,i8}::_B0:u1
      1) stloc.2 [{i8,i8,i8}]
      1) ldloc.2 [{i8,i8,i8}]
      5) ldflda {i8,i8,i8}::_F2:i8
      1) ldloc.2 [{i8,i8,i8}]
      5) ldflda {i8,i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<i8>>, ExecCtx, i4, out i8, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.2 [{i8,i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8,i8}::_F0:i8
      1) ldloc.2 [{i8,i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F5:{i8,i8,i8}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<i8>>>
      1) stloc.1 [Seq<Seq<Opt<i8>>>]
      1) ldloc.1 [Seq<Seq<Opt<i8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<i8>>,(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<i8>>>, Func<Seq<Opt<i8>>,(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>):Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>):Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, OI8:i8?**) to (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
Sequence: Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 288
    [0](48): Min(*1x)
    [1](48): Max(*1x)
    [2](48): MinMax(*1x)
    [3](48): MinC(*1x)
    [4](48): MaxC(*1x)
    [5](48): MinMaxC(*1x)
###
> OI4->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
OI4->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
BndKind:Call, Type:(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*, Bnd:(Call(∂.ForEach([map:1] Global(OI4), (Call(∂.Min(Scope(1)):i4), Call(∂.Max(Scope(1)):i4), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})):(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*))
// (<ctx>, ∂.OI4:i4?**) : (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
ForEach_1(Arr<obj>, Seq<Opt<i4>>):(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})
      5) newobj (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})()
      1) dup
      1) ldarg.1 [Seq<Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<i4>>, ExecCtx, i4):i4
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F0:i4
      1) dup
      1) ldarg.1 [Seq<Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<i4>>, ExecCtx, i4):i4
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F1:i4
      1) dup
      1) ldarg.1 [Seq<Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i4,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i4,i4}::_B0:u1
      1) stloc.0 [{i4,i4}]
      1) ldloc.0 [{i4,i4}]
      5) ldflda {i4,i4}::_F1:i4
      1) ldloc.0 [{i4,i4}]
      5) ldflda {i4,i4}::_F0:i4
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<i4>>, ExecCtx, i4, out i4, out i4):Void
      1) ldloc.0 [{i4,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F2:{i4,i4}
      1) dup
      1) ldarg.1 [Seq<Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i4}::_B0:u1
      1) stloc.1 [{i8,i4}]
      1) ldloc.1 [{i8,i4}]
      5) ldflda {i8,i4}::_F1:i4
      5) call static MinMaxGen::ExecMinC(Seq<Opt<i4>>, ExecCtx, i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4}::_F0:i8
      1) ldloc.1 [{i8,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F3:{i8,i4}
      1) dup
      1) ldarg.1 [Seq<Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i4}::_B0:u1
      1) stloc.1 [{i8,i4}]
      1) ldloc.1 [{i8,i4}]
      5) ldflda {i8,i4}::_F1:i4
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<i4>>, ExecCtx, i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4}::_F0:i8
      1) ldloc.1 [{i8,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F4:{i8,i4}
      1) dup
      1) ldarg.1 [Seq<Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i4,i4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i4,i4}::_B0:u1
      1) stloc.3 [{i8,i4,i4}]
      1) ldloc.3 [{i8,i4,i4}]
      5) ldflda {i8,i4,i4}::_F2:i4
      1) ldloc.3 [{i8,i4,i4}]
      5) ldflda {i8,i4,i4}::_F1:i4
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<i4>>, ExecCtx, i4, out i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i4,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4,i4}::_F0:i8
      1) ldloc.3 [{i8,i4,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F5:{i8,i4,i4}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<i4>>>
      1) stloc.1 [Seq<Seq<Opt<i4>>>]
      1) ldloc.1 [Seq<Seq<Opt<i4>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<i4>>,(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<i4>>>, Func<Seq<Opt<i4>>,(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>):Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>):Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, OI4:i4?**) to (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
Sequence: Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 288
    [0](48): Min(*1x)
    [1](48): Max(*1x)
    [2](48): MinMax(*1x)
    [3](48): MinC(*1x)
    [4](48): MaxC(*1x)
    [5](48): MinMaxC(*1x)
###
> OI2->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
OI2->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
BndKind:Call, Type:(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*, Bnd:(Call(∂.ForEach([map:1] Global(OI2), (Call(∂.Min(Scope(1)):i2), Call(∂.Max(Scope(1)):i2), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})):(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*))
// (<ctx>, ∂.OI2:i2?**) : (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
ForEach_1(Arr<obj>, Seq<Opt<i2>>):(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})
      5) newobj (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})()
      1) dup
      1) ldarg.1 [Seq<Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<i2>>, ExecCtx, i4):i2
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F0:i2
      1) dup
      1) ldarg.1 [Seq<Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<i2>>, ExecCtx, i4):i2
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F1:i2
      1) dup
      1) ldarg.1 [Seq<Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i2,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i2,i2}::_B0:u1
      1) stloc.0 [{i2,i2}]
      1) ldloc.0 [{i2,i2}]
      5) ldflda {i2,i2}::_F1:i2
      1) ldloc.0 [{i2,i2}]
      5) ldflda {i2,i2}::_F0:i2
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<i2>>, ExecCtx, i4, out i2, out i2):Void
      1) ldloc.0 [{i2,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F2:{i2,i2}
      1) dup
      1) ldarg.1 [Seq<Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i2}::_B0:u1
      1) stloc.1 [{i8,i2}]
      1) ldloc.1 [{i8,i2}]
      5) ldflda {i8,i2}::_F1:i2
      5) call static MinMaxGen::ExecMinC(Seq<Opt<i2>>, ExecCtx, i4, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2}::_F0:i8
      1) ldloc.1 [{i8,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F3:{i8,i2}
      1) dup
      1) ldarg.1 [Seq<Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i2}::_B0:u1
      1) stloc.1 [{i8,i2}]
      1) ldloc.1 [{i8,i2}]
      5) ldflda {i8,i2}::_F1:i2
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<i2>>, ExecCtx, i4, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2}::_F0:i8
      1) ldloc.1 [{i8,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F4:{i8,i2}
      1) dup
      1) ldarg.1 [Seq<Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i2,i2}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i2,i2}::_B0:u1
      1) stloc.3 [{i8,i2,i2}]
      1) ldloc.3 [{i8,i2,i2}]
      5) ldflda {i8,i2,i2}::_F2:i2
      1) ldloc.3 [{i8,i2,i2}]
      5) ldflda {i8,i2,i2}::_F1:i2
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<i2>>, ExecCtx, i4, out i2, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i2,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2,i2}::_F0:i8
      1) ldloc.3 [{i8,i2,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F5:{i8,i2,i2}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<i2>>>
      1) stloc.1 [Seq<Seq<Opt<i2>>>]
      1) ldloc.1 [Seq<Seq<Opt<i2>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<i2>>,(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<i2>>>, Func<Seq<Opt<i2>>,(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>):Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>):Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, OI2:i2?**) to (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
Sequence: Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 288
    [0](48): Min(*1x)
    [1](48): Max(*1x)
    [2](48): MinMax(*1x)
    [3](48): MinC(*1x)
    [4](48): MaxC(*1x)
    [5](48): MinMaxC(*1x)
###
> OI1->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
OI1->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
BndKind:Call, Type:(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*, Bnd:(Call(∂.ForEach([map:1] Global(OI1), (Call(∂.Min(Scope(1)):i1), Call(∂.Max(Scope(1)):i1), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})):(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*))
// (<ctx>, ∂.OI1:i1?**) : (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
ForEach_1(Arr<obj>, Seq<Opt<i1>>):(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})
      5) newobj (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})()
      1) dup
      1) ldarg.1 [Seq<Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<i1>>, ExecCtx, i4):i1
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F0:i1
      1) dup
      1) ldarg.1 [Seq<Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<i1>>, ExecCtx, i4):i1
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F1:i1
      1) dup
      1) ldarg.1 [Seq<Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i1,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i1,i1}::_B0:u1
      1) stloc.0 [{i1,i1}]
      1) ldloc.0 [{i1,i1}]
      5) ldflda {i1,i1}::_F1:i1
      1) ldloc.0 [{i1,i1}]
      5) ldflda {i1,i1}::_F0:i1
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<i1>>, ExecCtx, i4, out i1, out i1):Void
      1) ldloc.0 [{i1,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F2:{i1,i1}
      1) dup
      1) ldarg.1 [Seq<Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i1}::_B0:u1
      1) stloc.1 [{i8,i1}]
      1) ldloc.1 [{i8,i1}]
      5) ldflda {i8,i1}::_F1:i1
      5) call static MinMaxGen::ExecMinC(Seq<Opt<i1>>, ExecCtx, i4, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1}::_F0:i8
      1) ldloc.1 [{i8,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F3:{i8,i1}
      1) dup
      1) ldarg.1 [Seq<Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i1}::_B0:u1
      1) stloc.1 [{i8,i1}]
      1) ldloc.1 [{i8,i1}]
      5) ldflda {i8,i1}::_F1:i1
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<i1>>, ExecCtx, i4, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1}::_F0:i8
      1) ldloc.1 [{i8,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F4:{i8,i1}
      1) dup
      1) ldarg.1 [Seq<Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i1,i1}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i1,i1}::_B0:u1
      1) stloc.3 [{i8,i1,i1}]
      1) ldloc.3 [{i8,i1,i1}]
      5) ldflda {i8,i1,i1}::_F2:i1
      1) ldloc.3 [{i8,i1,i1}]
      5) ldflda {i8,i1,i1}::_F1:i1
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<i1>>, ExecCtx, i4, out i1, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i1,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1,i1}::_F0:i8
      1) ldloc.3 [{i8,i1,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F5:{i8,i1,i1}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<i1>>>
      1) stloc.1 [Seq<Seq<Opt<i1>>>]
      1) ldloc.1 [Seq<Seq<Opt<i1>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<i1>>,(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<i1>>>, Func<Seq<Opt<i1>>,(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>):Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>):Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, OI1:i1?**) to (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
Sequence: Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 288
    [0](48): Min(*1x)
    [1](48): Max(*1x)
    [2](48): MinMax(*1x)
    [3](48): MinC(*1x)
    [4](48): MaxC(*1x)
    [5](48): MinMaxC(*1x)
###
> OU8->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
OU8->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
BndKind:Call, Type:(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*, Bnd:(Call(∂.ForEach([map:1] Global(OU8), (Call(∂.Min(Scope(1)):u8), Call(∂.Max(Scope(1)):u8), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})):(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*))
// (<ctx>, ∂.OU8:u8?**) : (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
ForEach_1(Arr<obj>, Seq<Opt<u8>>):(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})
      5) newobj (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})()
      1) dup
      1) ldarg.1 [Seq<Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<u8>>, ExecCtx, i4):u8
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F0:u8
      1) dup
      1) ldarg.1 [Seq<Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<u8>>, ExecCtx, i4):u8
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F1:u8
      1) dup
      1) ldarg.1 [Seq<Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {u8,u8}::_B0:u1
      1) stloc.0 [{u8,u8}]
      1) ldloc.0 [{u8,u8}]
      5) ldflda {u8,u8}::_F1:u8
      1) ldloc.0 [{u8,u8}]
      5) ldflda {u8,u8}::_F0:u8
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<u8>>, ExecCtx, i4, out u8, out u8):Void
      1) ldloc.0 [{u8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F2:{u8,u8}
      1) dup
      1) ldarg.1 [Seq<Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u8}::_B0:u1
      1) stloc.1 [{i8,u8}]
      1) ldloc.1 [{i8,u8}]
      5) ldflda {i8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMinC(Seq<Opt<u8>>, ExecCtx, i4, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8}::_F0:i8
      1) ldloc.1 [{i8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F3:{i8,u8}
      1) dup
      1) ldarg.1 [Seq<Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u8}::_B0:u1
      1) stloc.1 [{i8,u8}]
      1) ldloc.1 [{i8,u8}]
      5) ldflda {i8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<u8>>, ExecCtx, i4, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8}::_F0:i8
      1) ldloc.1 [{i8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F4:{i8,u8}
      1) dup
      1) ldarg.1 [Seq<Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u8,u8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u8,u8}::_B0:u1
      1) stloc.3 [{i8,u8,u8}]
      1) ldloc.3 [{i8,u8,u8}]
      5) ldflda {i8,u8,u8}::_F2:u8
      1) ldloc.3 [{i8,u8,u8}]
      5) ldflda {i8,u8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<u8>>, ExecCtx, i4, out u8, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8,u8}::_F0:i8
      1) ldloc.3 [{i8,u8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F5:{i8,u8,u8}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<u8>>>
      1) stloc.1 [Seq<Seq<Opt<u8>>>]
      1) ldloc.1 [Seq<Seq<Opt<u8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<u8>>,(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<u8>>>, Func<Seq<Opt<u8>>,(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>):Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>):Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, OU8:u8?**) to (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
Sequence: Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
 0) (2, 18446744073709551615, { Max: 18446744073709551615, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 18446744073709551615 }, { Count: 6, Max: 18446744073709551615, Min: 2 })
 1) (0, 18446744073709551615, { Max: 18446744073709551615, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 18446744073709551615 }, { Count: 7, Max: 18446744073709551615, Min: 0 })
 2) (0, 18446744073709551615, { Max: 18446744073709551615, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 18446744073709551615 }, { Count: 8, Max: 18446744073709551615, Min: 0 })
 3) (0, 18446744073709551615, { Max: 18446744073709551615, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 18446744073709551615 }, { Count: 9, Max: 18446744073709551615, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (2, 18446744073709551615, { Max: 18446744073709551615, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 18446744073709551615 }, { Count: 6, Max: 18446744073709551615, Min: 2 })
*** Ctx ping count: 288
    [0](48): Min(*1x)
    [1](48): Max(*1x)
    [2](48): MinMax(*1x)
    [3](48): MinC(*1x)
    [4](48): MaxC(*1x)
    [5](48): MinMaxC(*1x)
###
> OU4->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
OU4->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
BndKind:Call, Type:(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*, Bnd:(Call(∂.ForEach([map:1] Global(OU4), (Call(∂.Min(Scope(1)):u4), Call(∂.Max(Scope(1)):u4), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})):(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*))
// (<ctx>, ∂.OU4:u4?**) : (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
ForEach_1(Arr<obj>, Seq<Opt<u4>>):(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})
      5) newobj (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})()
      1) dup
      1) ldarg.1 [Seq<Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<u4>>, ExecCtx, i4):u4
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F0:u4
      1) dup
      1) ldarg.1 [Seq<Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<u4>>, ExecCtx, i4):u4
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F1:u4
      1) dup
      1) ldarg.1 [Seq<Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u4,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {u4,u4}::_B0:u1
      1) stloc.0 [{u4,u4}]
      1) ldloc.0 [{u4,u4}]
      5) ldflda {u4,u4}::_F1:u4
      1) ldloc.0 [{u4,u4}]
      5) ldflda {u4,u4}::_F0:u4
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<u4>>, ExecCtx, i4, out u4, out u4):Void
      1) ldloc.0 [{u4,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F2:{u4,u4}
      1) dup
      1) ldarg.1 [Seq<Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u4}::_B0:u1
      1) stloc.1 [{i8,u4}]
      1) ldloc.1 [{i8,u4}]
      5) ldflda {i8,u4}::_F1:u4
      5) call static MinMaxGen::ExecMinC(Seq<Opt<u4>>, ExecCtx, i4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4}::_F0:i8
      1) ldloc.1 [{i8,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F3:{i8,u4}
      1) dup
      1) ldarg.1 [Seq<Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u4}::_B0:u1
      1) stloc.1 [{i8,u4}]
      1) ldloc.1 [{i8,u4}]
      5) ldflda {i8,u4}::_F1:u4
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<u4>>, ExecCtx, i4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4}::_F0:i8
      1) ldloc.1 [{i8,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F4:{i8,u4}
      1) dup
      1) ldarg.1 [Seq<Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u4,u4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u4,u4}::_B0:u1
      1) stloc.3 [{i8,u4,u4}]
      1) ldloc.3 [{i8,u4,u4}]
      5) ldflda {i8,u4,u4}::_F2:u4
      1) ldloc.3 [{i8,u4,u4}]
      5) ldflda {i8,u4,u4}::_F1:u4
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<u4>>, ExecCtx, i4, out u4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u4,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4,u4}::_F0:i8
      1) ldloc.3 [{i8,u4,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F5:{i8,u4,u4}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<u4>>>
      1) stloc.1 [Seq<Seq<Opt<u4>>>]
      1) ldloc.1 [Seq<Seq<Opt<u4>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<u4>>,(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<u4>>>, Func<Seq<Opt<u4>>,(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>):Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>):Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, OU4:u4?**) to (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
Sequence: Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
 0) (2, 4294967295, { Max: 4294967295, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 4294967295 }, { Count: 6, Max: 4294967295, Min: 2 })
 1) (0, 4294967295, { Max: 4294967295, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 4294967295 }, { Count: 7, Max: 4294967295, Min: 0 })
 2) (0, 4294967295, { Max: 4294967295, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 4294967295 }, { Count: 8, Max: 4294967295, Min: 0 })
 3) (0, 4294967295, { Max: 4294967295, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 4294967295 }, { Count: 9, Max: 4294967295, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (2, 4294967295, { Max: 4294967295, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 4294967295 }, { Count: 6, Max: 4294967295, Min: 2 })
*** Ctx ping count: 288
    [0](48): Min(*1x)
    [1](48): Max(*1x)
    [2](48): MinMax(*1x)
    [3](48): MinC(*1x)
    [4](48): MaxC(*1x)
    [5](48): MinMaxC(*1x)
###
> OU2->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
OU2->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
BndKind:Call, Type:(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*, Bnd:(Call(∂.ForEach([map:1] Global(OU2), (Call(∂.Min(Scope(1)):u2), Call(∂.Max(Scope(1)):u2), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})):(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*))
// (<ctx>, ∂.OU2:u2?**) : (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
ForEach_1(Arr<obj>, Seq<Opt<u2>>):(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})
      5) newobj (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})()
      1) dup
      1) ldarg.1 [Seq<Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<u2>>, ExecCtx, i4):u2
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F0:u2
      1) dup
      1) ldarg.1 [Seq<Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<u2>>, ExecCtx, i4):u2
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F1:u2
      1) dup
      1) ldarg.1 [Seq<Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u2,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {u2,u2}::_B0:u1
      1) stloc.0 [{u2,u2}]
      1) ldloc.0 [{u2,u2}]
      5) ldflda {u2,u2}::_F1:u2
      1) ldloc.0 [{u2,u2}]
      5) ldflda {u2,u2}::_F0:u2
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<u2>>, ExecCtx, i4, out u2, out u2):Void
      1) ldloc.0 [{u2,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F2:{u2,u2}
      1) dup
      1) ldarg.1 [Seq<Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u2}::_B0:u1
      1) stloc.1 [{i8,u2}]
      1) ldloc.1 [{i8,u2}]
      5) ldflda {i8,u2}::_F1:u2
      5) call static MinMaxGen::ExecMinC(Seq<Opt<u2>>, ExecCtx, i4, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2}::_F0:i8
      1) ldloc.1 [{i8,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F3:{i8,u2}
      1) dup
      1) ldarg.1 [Seq<Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u2}::_B0:u1
      1) stloc.1 [{i8,u2}]
      1) ldloc.1 [{i8,u2}]
      5) ldflda {i8,u2}::_F1:u2
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<u2>>, ExecCtx, i4, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2}::_F0:i8
      1) ldloc.1 [{i8,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F4:{i8,u2}
      1) dup
      1) ldarg.1 [Seq<Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u2,u2}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u2,u2}::_B0:u1
      1) stloc.3 [{i8,u2,u2}]
      1) ldloc.3 [{i8,u2,u2}]
      5) ldflda {i8,u2,u2}::_F2:u2
      1) ldloc.3 [{i8,u2,u2}]
      5) ldflda {i8,u2,u2}::_F1:u2
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<u2>>, ExecCtx, i4, out u2, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u2,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2,u2}::_F0:i8
      1) ldloc.3 [{i8,u2,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F5:{i8,u2,u2}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<u2>>>
      1) stloc.1 [Seq<Seq<Opt<u2>>>]
      1) ldloc.1 [Seq<Seq<Opt<u2>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<u2>>,(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<u2>>>, Func<Seq<Opt<u2>>,(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>):Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>):Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, OU2:u2?**) to (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
Sequence: Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
 0) (2, 65535, { Max: 65535, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 65535 }, { Count: 6, Max: 65535, Min: 2 })
 1) (0, 65535, { Max: 65535, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 65535 }, { Count: 7, Max: 65535, Min: 0 })
 2) (0, 65535, { Max: 65535, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 65535 }, { Count: 8, Max: 65535, Min: 0 })
 3) (0, 65535, { Max: 65535, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 65535 }, { Count: 9, Max: 65535, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (2, 65535, { Max: 65535, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 65535 }, { Count: 6, Max: 65535, Min: 2 })
*** Ctx ping count: 288
    [0](48): Min(*1x)
    [1](48): Max(*1x)
    [2](48): MinMax(*1x)
    [3](48): MinC(*1x)
    [4](48): MaxC(*1x)
    [5](48): MinMaxC(*1x)
###
> OU1->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
OU1->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
BndKind:Call, Type:(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*, Bnd:(Call(∂.ForEach([map:1] Global(OU1), (Call(∂.Min(Scope(1)):u1), Call(∂.Max(Scope(1)):u1), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})):(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*))
// (<ctx>, ∂.OU1:u1?**) : (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
ForEach_1(Arr<obj>, Seq<Opt<u1>>):(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})
      5) newobj (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})()
      1) dup
      1) ldarg.1 [Seq<Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<u1>>, ExecCtx, i4):u1
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F0:u1
      1) dup
      1) ldarg.1 [Seq<Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<u1>>, ExecCtx, i4):u1
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F1:u1
      1) dup
      1) ldarg.1 [Seq<Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u1,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {u1,u1}::_B0:u1
      1) stloc.0 [{u1,u1}]
      1) ldloc.0 [{u1,u1}]
      5) ldflda {u1,u1}::_F1:u1
      1) ldloc.0 [{u1,u1}]
      5) ldflda {u1,u1}::_F0:u1
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<u1>>, ExecCtx, i4, out u1, out u1):Void
      1) ldloc.0 [{u1,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F2:{u1,u1}
      1) dup
      1) ldarg.1 [Seq<Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u1}::_B0:u1
      1) stloc.1 [{i8,u1}]
      1) ldloc.1 [{i8,u1}]
      5) ldflda {i8,u1}::_F1:u1
      5) call static MinMaxGen::ExecMinC(Seq<Opt<u1>>, ExecCtx, i4, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1}::_F0:i8
      1) ldloc.1 [{i8,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F3:{i8,u1}
      1) dup
      1) ldarg.1 [Seq<Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u1}::_B0:u1
      1) stloc.1 [{i8,u1}]
      1) ldloc.1 [{i8,u1}]
      5) ldflda {i8,u1}::_F1:u1
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<u1>>, ExecCtx, i4, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1}::_F0:i8
      1) ldloc.1 [{i8,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F4:{i8,u1}
      1) dup
      1) ldarg.1 [Seq<Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u1,u1}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u1,u1}::_B0:u1
      1) stloc.3 [{i8,u1,u1}]
      1) ldloc.3 [{i8,u1,u1}]
      5) ldflda {i8,u1,u1}::_F2:u1
      1) ldloc.3 [{i8,u1,u1}]
      5) ldflda {i8,u1,u1}::_F1:u1
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<u1>>, ExecCtx, i4, out u1, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u1,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1,u1}::_F0:i8
      1) ldloc.3 [{i8,u1,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F5:{i8,u1,u1}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<u1>>>
      1) stloc.1 [Seq<Seq<Opt<u1>>>]
      1) ldloc.1 [Seq<Seq<Opt<u1>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<u1>>,(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<u1>>>, Func<Seq<Opt<u1>>,(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>):Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>):Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, OU1:u1?**) to (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
Sequence: Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
 0) (2, 255, { Max: 255, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 255 }, { Count: 6, Max: 255, Min: 2 })
 1) (0, 255, { Max: 255, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 255 }, { Count: 7, Max: 255, Min: 0 })
 2) (0, 255, { Max: 255, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 255 }, { Count: 8, Max: 255, Min: 0 })
 3) (0, 255, { Max: 255, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 255 }, { Count: 9, Max: 255, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (2, 255, { Max: 255, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 255 }, { Count: 6, Max: 255, Min: 2 })
*** Ctx ping count: 288
    [0](48): Min(*1x)
    [1](48): Max(*1x)
    [2](48): MinMax(*1x)
    [3](48): MinC(*1x)
    [4](48): MaxC(*1x)
    [5](48): MinMaxC(*1x)
###
> OB->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC()))
OB->Map((it->Min(), it->Max(), it->MinMax(), it->MinC(), it->MaxC(), it->MinMaxC())) : (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
BndKind:Call, Type:(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*, Bnd:(Call(∂.ForEach([map:1] Global(OB), (Call(∂.Min(Scope(1)):b), Call(∂.Max(Scope(1)):b), Call(∂.MinMax(Scope(1))), Call(∂.MinC(Scope(1))), Call(∂.MaxC(Scope(1))), Call(∂.MinMaxC(Scope(1)))):(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})):(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*))
// (<ctx>, ∂.OB:b?**) : (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
ForEach_1(Arr<obj>, Seq<Opt<bool>>):(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})
      5) newobj (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})()
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<bool>>, ExecCtx, i4):bool
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F0:bool
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<bool>>, ExecCtx, i4):bool
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F1:bool
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {bool,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {bool,bool}::_B0:u1
      1) stloc.0 [{bool,bool}]
      1) ldloc.0 [{bool,bool}]
      5) ldflda {bool,bool}::_F1:bool
      1) ldloc.0 [{bool,bool}]
      5) ldflda {bool,bool}::_F0:bool
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<bool>>, ExecCtx, i4, out bool, out bool):Void
      1) ldloc.0 [{bool,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F2:{bool,bool}
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,bool}::_B0:u1
      1) stloc.1 [{i8,bool}]
      1) ldloc.1 [{i8,bool}]
      5) ldflda {i8,bool}::_F1:bool
      5) call static MinMaxGen::ExecMinC(Seq<Opt<bool>>, ExecCtx, i4, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool}::_F0:i8
      1) ldloc.1 [{i8,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F3:{i8,bool}
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,bool}::_B0:u1
      1) stloc.1 [{i8,bool}]
      1) ldloc.1 [{i8,bool}]
      5) ldflda {i8,bool}::_F1:bool
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<bool>>, ExecCtx, i4, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool}::_F0:i8
      1) ldloc.1 [{i8,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F4:{i8,bool}
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,bool,bool}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,bool,bool}::_B0:u1
      1) stloc.3 [{i8,bool,bool}]
      1) ldloc.3 [{i8,bool,bool}]
      5) ldflda {i8,bool,bool}::_F2:bool
      1) ldloc.3 [{i8,bool,bool}]
      5) ldflda {i8,bool,bool}::_F1:bool
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<bool>>, ExecCtx, i4, out bool, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,bool,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool,bool}::_F0:i8
      1) ldloc.3 [{i8,bool,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F5:{i8,bool,bool}
      1) ret
  Total Size: 318

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<bool>>>
      1) stloc.1 [Seq<Seq<Opt<bool>>>]
      1) ldloc.1 [Seq<Seq<Opt<bool>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<bool>>,(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<bool>>>, Func<Seq<Opt<bool>>,(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>):Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>):Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, OB:b?**) to (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
Sequence: Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
 0) (true , true , { Max: true , Min: true  }, { Count: 6, Min: true  }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: true  })
 1) (false, false, { Max: false, Min: false }, { Count: 6, Min: false }, { Count: 6, Max: false }, { Count: 6, Max: false, Min: false })
 2) (false, true , { Max: true , Min: false }, { Count: 6, Min: false }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: false })
 3) (false, true , { Max: true , Min: false }, { Count: 6, Min: false }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: false })
 4) (false, false, { Max: false, Min: false }, { Count: 0, Min: false }, { Count: 0, Max: false }, { Count: 0, Max: false, Min: false })
 5) (false, false, { Max: false, Min: false }, { Count: 0, Min: false }, { Count: 0, Max: false }, { Count: 0, Max: false, Min: false })
 6) (false, false, { Max: false, Min: false }, { Count: 0, Min: false }, { Count: 0, Max: false }, { Count: 0, Max: false, Min: false })
*** Ctx ping count: 170
    [0](18): Min(*1x)
    [1](18): Max(*1x)
    [2](29): MinMax(*1x)
    [3](35): MinC(*1x)
    [4](35): MaxC(*1x)
    [5](35): MinMaxC(*1x)
###
> Req
Req : r8**
BndKind:Global, Type:r8**, Bnd:(Global(Req))
// (∂.Req:r8**) : r8**
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.0 [Seq<Seq<r8>>]
      1) ldloc.0 [Seq<Seq<r8>>]
      1) ret
  Total Size: 11

Func sig: (Req:r8**) to r8**
Sequence: Seq<Seq<r8>>
 0) Sequence: Seq<r8>
     0) 3
     1) -1
     2) 2.5
     3) 3
     4) -1
     5) 2.5
 1) Sequence: Seq<r8>
     0) 3
     1) -1
     2) 2.5
     3) NaN
     4) 3
     5) -1
     6) 2.5
 2) Sequence: Seq<r8>
     0) 3
     1) -1
     2) 2.5
     3) ∞
     4) -∞
     5) 3
     6) -1
     7) 2.5
 3) Sequence: Seq<r8>
     0) 3
     1) -1
     2) 2.5
     3) ∞
     4) NaN
     5) -∞
     6) 3
     7) -1
     8) 2.5
 4) Sequence: Seq<r8>
 5) <null>
 6) Sequence: Seq<r8>
     0) -1
     1) 2.5
     2) 3
     3) -1
     4) 2.5
     5) 3
###
> Req->Map((it->Min(it->CastR8()), it->Max(it->CastR8()), it->MinMax(it->CastR8()), it->MinC(it->CastR8()), it->MaxC(it->CastR8()), it->MinMaxC(it->CastR8())))
Req->Map((it->Min(it->CastR8()), it->Max(it->CastR8()), it->MinMax(it->CastR8()), it->MinC(it->CastR8()), it->MaxC(it->CastR8()), it->MinMaxC(it->CastR8()))) : (r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*
BndKind:Call, Type:(r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Scope(2)):r8), Call(∂.Max([map:3] Scope(1), Scope(3)):r8), Call(∂.MinMax([map:4] Scope(1), Scope(4))), Call(∂.MinC([map:5] Scope(1), Scope(5))), Call(∂.MaxC([map:6] Scope(1), Scope(6))), Call(∂.MinMaxC([map:7] Scope(1), Scope(7)))):(r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})):(r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*))
// (<ctx>, ∂.Req:r8**) : (r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*
Min_1(Arr<obj>, r8):r8
      1) ldarg.1 [r8]
      1) ret
  Total Size: 2

Max_1(Arr<obj>, r8):r8
      1) ldarg.1 [r8]
      1) ret
  Total Size: 2

MinMax_1(Arr<obj>, r8):r8
      1) ldarg.1 [r8]
      1) ret
  Total Size: 2

MinC_1(Arr<obj>, r8):r8
      1) ldarg.1 [r8]
      1) ret
  Total Size: 2

MaxC_1(Arr<obj>, r8):r8
      1) ldarg.1 [r8]
      1) ret
  Total Size: 2

MinMaxC_1(Arr<obj>, r8):r8
      1) ldarg.1 [r8]
      1) ret
  Total Size: 2

ForEach_1(Arr<obj>, Seq<r8>):(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})
      5) newobj (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,r8>, ExecCtx, i4):r8
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F0:r8
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,r8>, ExecCtx, i4):r8
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F1:r8
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {r8,r8}()
      1) dup
      1) ldc.i4.3
      5) stfld {r8,r8}::_B0:u1
      1) stloc.0 [{r8,r8}]
      1) ldloc.0 [{r8,r8}]
      5) ldflda {r8,r8}::_F1:r8
      1) ldloc.0 [{r8,r8}]
      5) ldflda {r8,r8}::_F0:r8
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,r8>, ExecCtx, i4, out r8, out r8):Void
      1) ldloc.0 [{r8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F2:{r8,r8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,r8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r8}::_B0:u1
      1) stloc.1 [{i8,r8}]
      1) ldloc.1 [{i8,r8}]
      5) ldflda {i8,r8}::_F1:r8
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,r8>, ExecCtx, i4, out r8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r8}]
      1) ldloc.2 [i8]
      5) stfld {i8,r8}::_F0:i8
      1) ldloc.1 [{i8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F3:{i8,r8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,r8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r8}::_B0:u1
      1) stloc.1 [{i8,r8}]
      1) ldloc.1 [{i8,r8}]
      5) ldflda {i8,r8}::_F1:r8
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,r8>, ExecCtx, i4, out r8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r8}]
      1) ldloc.2 [i8]
      5) stfld {i8,r8}::_F0:i8
      1) ldloc.1 [{i8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F4:{i8,r8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,r8,r8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,r8,r8}::_B0:u1
      1) stloc.3 [{i8,r8,r8}]
      1) ldloc.3 [{i8,r8,r8}]
      5) ldflda {i8,r8,r8}::_F2:r8
      1) ldloc.3 [{i8,r8,r8}]
      5) ldflda {i8,r8,r8}::_F1:r8
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,r8>, ExecCtx, i4, out r8, out r8):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,r8,r8}]
      1) ldloc.2 [i8]
      5) stfld {i8,r8,r8}::_F0:i8
      1) ldloc.3 [{i8,r8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F5:{i8,r8,r8}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>):Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>):Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*
Sequence: Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 7, Min: NaN }, { Count: 7, Max: NaN }, { Count: 7, Max: NaN, Min: NaN })
 2) (-∞, ∞, { Max: ∞, Min: -∞ }, { Count: 8, Min: -∞ }, { Count: 8, Max: ∞ }, { Count: 8, Max: ∞, Min: -∞ })
 3) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 9, Min: NaN }, { Count: 9, Max: NaN }, { Count: 9, Max: NaN, Min: NaN })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, *2)
    [1](42): Max(*2: *1x, *2)
    [2](42): MinMax(*2: *1x, *2)
    [3](42): MinC(*2: *1x, *2)
    [4](42): MaxC(*2: *1x, *2)
    [5](42): MinMaxC(*2: *1x, *2)
###
> Req->Map((it->Min(it->CastR4()), it->Max(it->CastR4()), it->MinMax(it->CastR4()), it->MinC(it->CastR4()), it->MaxC(it->CastR4()), it->MinMaxC(it->CastR4())))
Req->Map((it->Min(it->CastR4()), it->Max(it->CastR4()), it->MinMax(it->CastR4()), it->MinC(it->CastR4()), it->MaxC(it->CastR4()), it->MinMaxC(it->CastR4()))) : (r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*
BndKind:Call, Type:(r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Call(∂.CastR4(Scope(2)):r4)):r4), Call(∂.Max([map:3] Scope(1), Call(∂.CastR4(Scope(3)):r4)):r4), Call(∂.MinMax([map:4] Scope(1), Call(∂.CastR4(Scope(4)):r4))), Call(∂.MinC([map:5] Scope(1), Call(∂.CastR4(Scope(5)):r4))), Call(∂.MaxC([map:6] Scope(1), Call(∂.CastR4(Scope(6)):r4))), Call(∂.MinMaxC([map:7] Scope(1), Call(∂.CastR4(Scope(7)):r4)))):(r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})):(r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*))
// (<ctx>, ∂.Req:r8**) : (r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*
Min_1(Arr<obj>, r8):r4
      1) ldarg.1 [r8]
      1) conv.r4
      1) ret
  Total Size: 3

Max_1(Arr<obj>, r8):r4
      1) ldarg.1 [r8]
      1) conv.r4
      1) ret
  Total Size: 3

MinMax_1(Arr<obj>, r8):r4
      1) ldarg.1 [r8]
      1) conv.r4
      1) ret
  Total Size: 3

MinC_1(Arr<obj>, r8):r4
      1) ldarg.1 [r8]
      1) conv.r4
      1) ret
  Total Size: 3

MaxC_1(Arr<obj>, r8):r4
      1) ldarg.1 [r8]
      1) conv.r4
      1) ret
  Total Size: 3

MinMaxC_1(Arr<obj>, r8):r4
      1) ldarg.1 [r8]
      1) conv.r4
      1) ret
  Total Size: 3

ForEach_1(Arr<obj>, Seq<r8>):(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})
      5) newobj (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,r4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,r4>, ExecCtx, i4):r4
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F0:r4
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,r4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,r4>, ExecCtx, i4):r4
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F1:r4
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,r4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {r4,r4}()
      1) dup
      1) ldc.i4.3
      5) stfld {r4,r4}::_B0:u1
      1) stloc.0 [{r4,r4}]
      1) ldloc.0 [{r4,r4}]
      5) ldflda {r4,r4}::_F1:r4
      1) ldloc.0 [{r4,r4}]
      5) ldflda {r4,r4}::_F0:r4
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,r4>, ExecCtx, i4, out r4, out r4):Void
      1) ldloc.0 [{r4,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F2:{r4,r4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,r4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,r4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r4}::_B0:u1
      1) stloc.1 [{i8,r4}]
      1) ldloc.1 [{i8,r4}]
      5) ldflda {i8,r4}::_F1:r4
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,r4>, ExecCtx, i4, out r4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r4}]
      1) ldloc.2 [i8]
      5) stfld {i8,r4}::_F0:i8
      1) ldloc.1 [{i8,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F3:{i8,r4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,r4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,r4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r4}::_B0:u1
      1) stloc.1 [{i8,r4}]
      1) ldloc.1 [{i8,r4}]
      5) ldflda {i8,r4}::_F1:r4
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,r4>, ExecCtx, i4, out r4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r4}]
      1) ldloc.2 [i8]
      5) stfld {i8,r4}::_F0:i8
      1) ldloc.1 [{i8,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F4:{i8,r4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,r4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,r4,r4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,r4,r4}::_B0:u1
      1) stloc.3 [{i8,r4,r4}]
      1) ldloc.3 [{i8,r4,r4}]
      5) ldflda {i8,r4,r4}::_F2:r4
      1) ldloc.3 [{i8,r4,r4}]
      5) ldflda {i8,r4,r4}::_F1:r4
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,r4>, ExecCtx, i4, out r4, out r4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,r4,r4}]
      1) ldloc.2 [i8]
      5) stfld {i8,r4,r4}::_F0:i8
      1) ldloc.3 [{i8,r4,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F5:{i8,r4,r4}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>):Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>):Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*
Sequence: Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 7, Min: NaN }, { Count: 7, Max: NaN }, { Count: 7, Max: NaN, Min: NaN })
 2) (-∞, ∞, { Max: ∞, Min: -∞ }, { Count: 8, Min: -∞ }, { Count: 8, Max: ∞ }, { Count: 8, Max: ∞, Min: -∞ })
 3) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 9, Min: NaN }, { Count: 9, Max: NaN }, { Count: 9, Max: NaN, Min: NaN })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, CastR4(*2))
    [1](42): Max(*2: *1x, CastR4(*2))
    [2](42): MinMax(*2: *1x, CastR4(*2))
    [3](42): MinC(*2: *1x, CastR4(*2))
    [4](42): MaxC(*2: *1x, CastR4(*2))
    [5](42): MinMaxC(*2: *1x, CastR4(*2))
###
> Req->Map((it->Min(it->CastIA()), it->Max(it->CastIA()), it->MinMax(it->CastIA()), it->MinC(it->CastIA()), it->MaxC(it->CastIA()), it->MinMaxC(it->CastIA())))
Req->Map((it->Min(it->CastIA()), it->Max(it->CastIA()), it->MinMax(it->CastIA()), it->MinC(it->CastIA()), it->MaxC(it->CastIA()), it->MinMaxC(it->CastIA()))) : (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
BndKind:Call, Type:(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Call(∂.CastIA(Scope(2)):i)):i), Call(∂.Max([map:3] Scope(1), Call(∂.CastIA(Scope(3)):i)):i), Call(∂.MinMax([map:4] Scope(1), Call(∂.CastIA(Scope(4)):i))), Call(∂.MinC([map:5] Scope(1), Call(∂.CastIA(Scope(5)):i))), Call(∂.MaxC([map:6] Scope(1), Call(∂.CastIA(Scope(6)):i))), Call(∂.MinMaxC([map:7] Scope(1), Call(∂.CastIA(Scope(7)):i)))):(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})):(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*))
// (<ctx>, ∂.Req:r8**) : (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
Min_1(Arr<obj>, r8):ia
      1) ldarg.1 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [0]
      1) pop
      9) ldc.r8 [0]
  Label [0]:
      5) newobj ia(r8)
      1) ret
  Total Size: 28

Max_1(Arr<obj>, r8):ia
      1) ldarg.1 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [0]
      1) pop
      9) ldc.r8 [0]
  Label [0]:
      5) newobj ia(r8)
      1) ret
  Total Size: 28

MinMax_1(Arr<obj>, r8):ia
      1) ldarg.1 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [0]
      1) pop
      9) ldc.r8 [0]
  Label [0]:
      5) newobj ia(r8)
      1) ret
  Total Size: 28

MinC_1(Arr<obj>, r8):ia
      1) ldarg.1 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [0]
      1) pop
      9) ldc.r8 [0]
  Label [0]:
      5) newobj ia(r8)
      1) ret
  Total Size: 28

MaxC_1(Arr<obj>, r8):ia
      1) ldarg.1 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [0]
      1) pop
      9) ldc.r8 [0]
  Label [0]:
      5) newobj ia(r8)
      1) ret
  Total Size: 28

MinMaxC_1(Arr<obj>, r8):ia
      1) ldarg.1 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [0]
      1) pop
      9) ldc.r8 [0]
  Label [0]:
      5) newobj ia(r8)
      1) ret
  Total Size: 28

ForEach_1(Arr<obj>, Seq<r8>):(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})
      5) newobj (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,ia>, ExecCtx, i4):ia
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F0:ia
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,ia>, ExecCtx, i4):ia
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F1:ia
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {ia,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {ia,ia}::_B0:u1
      1) stloc.0 [{ia,ia}]
      1) ldloc.0 [{ia,ia}]
      5) ldflda {ia,ia}::_F1:ia
      1) ldloc.0 [{ia,ia}]
      5) ldflda {ia,ia}::_F0:ia
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,ia>, ExecCtx, i4, out ia, out ia):Void
      1) ldloc.0 [{ia,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F2:{ia,ia}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,ia}::_B0:u1
      1) stloc.1 [{i8,ia}]
      1) ldloc.1 [{i8,ia}]
      5) ldflda {i8,ia}::_F1:ia
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,ia>, ExecCtx, i4, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia}::_F0:i8
      1) ldloc.1 [{i8,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F3:{i8,ia}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,ia}::_B0:u1
      1) stloc.1 [{i8,ia}]
      1) ldloc.1 [{i8,ia}]
      5) ldflda {i8,ia}::_F1:ia
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,ia>, ExecCtx, i4, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia}::_F0:i8
      1) ldloc.1 [{i8,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F4:{i8,ia}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,ia,ia}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,ia,ia}::_B0:u1
      1) stloc.3 [{i8,ia,ia}]
      1) ldloc.3 [{i8,ia,ia}]
      5) ldflda {i8,ia,ia}::_F2:ia
      1) ldloc.3 [{i8,ia,ia}]
      5) ldflda {i8,ia,ia}::_F1:ia
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,ia>, ExecCtx, i4, out ia, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,ia,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia,ia}::_F0:i8
      1) ldloc.3 [{i8,ia,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F5:{i8,ia,ia}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>):Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>):Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
Sequence: Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, CastIA(*2))
    [1](42): Max(*2: *1x, CastIA(*2))
    [2](42): MinMax(*2: *1x, CastIA(*2))
    [3](42): MinC(*2: *1x, CastIA(*2))
    [4](42): MaxC(*2: *1x, CastIA(*2))
    [5](42): MinMaxC(*2: *1x, CastIA(*2))
###
> Req->Map((it->Min(it->CastI8()), it->Max(it->CastI8()), it->MinMax(it->CastI8()), it->MinC(it->CastI8()), it->MaxC(it->CastI8()), it->MinMaxC(it->CastI8())))
Req->Map((it->Min(it->CastI8()), it->Max(it->CastI8()), it->MinMax(it->CastI8()), it->MinC(it->CastI8()), it->MaxC(it->CastI8()), it->MinMaxC(it->CastI8()))) : (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
BndKind:Call, Type:(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Call(∂.CastI8(Scope(2)):i8)):i8), Call(∂.Max([map:3] Scope(1), Call(∂.CastI8(Scope(3)):i8)):i8), Call(∂.MinMax([map:4] Scope(1), Call(∂.CastI8(Scope(4)):i8))), Call(∂.MinC([map:5] Scope(1), Call(∂.CastI8(Scope(5)):i8))), Call(∂.MaxC([map:6] Scope(1), Call(∂.CastI8(Scope(6)):i8))), Call(∂.MinMaxC([map:7] Scope(1), Call(∂.CastI8(Scope(7)):i8)))):(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})):(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*))
// (<ctx>, ∂.Req:r8**) : (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
Min_1(Arr<obj>, r8):i8
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 7

Max_1(Arr<obj>, r8):i8
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 7

MinMax_1(Arr<obj>, r8):i8
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 7

MinC_1(Arr<obj>, r8):i8
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 7

MaxC_1(Arr<obj>, r8):i8
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 7

MinMaxC_1(Arr<obj>, r8):i8
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 7

ForEach_1(Arr<obj>, Seq<r8>):(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})
      5) newobj (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,i8>, ExecCtx, i4):i8
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F0:i8
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,i8>, ExecCtx, i4):i8
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F1:i8
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F0:i8
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,i8>, ExecCtx, i4, out i8, out i8):Void
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F2:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,i8>, ExecCtx, i4, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.0 [{i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8}::_F0:i8
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F3:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,i8>, ExecCtx, i4, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.0 [{i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8}::_F0:i8
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F4:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i8,i8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i8,i8}::_B0:u1
      1) stloc.2 [{i8,i8,i8}]
      1) ldloc.2 [{i8,i8,i8}]
      5) ldflda {i8,i8,i8}::_F2:i8
      1) ldloc.2 [{i8,i8,i8}]
      5) ldflda {i8,i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,i8>, ExecCtx, i4, out i8, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.2 [{i8,i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8,i8}::_F0:i8
      1) ldloc.2 [{i8,i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F5:{i8,i8,i8}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>):Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>):Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
Sequence: Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, CastI8(*2))
    [1](42): Max(*2: *1x, CastI8(*2))
    [2](42): MinMax(*2: *1x, CastI8(*2))
    [3](42): MinC(*2: *1x, CastI8(*2))
    [4](42): MaxC(*2: *1x, CastI8(*2))
    [5](42): MinMaxC(*2: *1x, CastI8(*2))
###
> Req->Map((it->Min(it->CastI4()), it->Max(it->CastI4()), it->MinMax(it->CastI4()), it->MinC(it->CastI4()), it->MaxC(it->CastI4()), it->MinMaxC(it->CastI4())))
Req->Map((it->Min(it->CastI4()), it->Max(it->CastI4()), it->MinMax(it->CastI4()), it->MinC(it->CastI4()), it->MaxC(it->CastI4()), it->MinMaxC(it->CastI4()))) : (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
BndKind:Call, Type:(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Call(∂.CastI4(Scope(2)):i4)):i4), Call(∂.Max([map:3] Scope(1), Call(∂.CastI4(Scope(3)):i4)):i4), Call(∂.MinMax([map:4] Scope(1), Call(∂.CastI4(Scope(4)):i4))), Call(∂.MinC([map:5] Scope(1), Call(∂.CastI4(Scope(5)):i4))), Call(∂.MaxC([map:6] Scope(1), Call(∂.CastI4(Scope(6)):i4))), Call(∂.MinMaxC([map:7] Scope(1), Call(∂.CastI4(Scope(7)):i4)))):(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})):(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*))
// (<ctx>, ∂.Req:r8**) : (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
Min_1(Arr<obj>, r8):i4
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      1) ret
  Total Size: 8

Max_1(Arr<obj>, r8):i4
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      1) ret
  Total Size: 8

MinMax_1(Arr<obj>, r8):i4
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      1) ret
  Total Size: 8

MinC_1(Arr<obj>, r8):i4
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      1) ret
  Total Size: 8

MaxC_1(Arr<obj>, r8):i4
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      1) ret
  Total Size: 8

MinMaxC_1(Arr<obj>, r8):i4
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      1) ret
  Total Size: 8

ForEach_1(Arr<obj>, Seq<r8>):(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})
      5) newobj (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,i4>, ExecCtx, i4):i4
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F0:i4
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,i4>, ExecCtx, i4):i4
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F1:i4
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i4,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i4,i4}::_B0:u1
      1) stloc.0 [{i4,i4}]
      1) ldloc.0 [{i4,i4}]
      5) ldflda {i4,i4}::_F1:i4
      1) ldloc.0 [{i4,i4}]
      5) ldflda {i4,i4}::_F0:i4
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,i4>, ExecCtx, i4, out i4, out i4):Void
      1) ldloc.0 [{i4,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F2:{i4,i4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i4}::_B0:u1
      1) stloc.1 [{i8,i4}]
      1) ldloc.1 [{i8,i4}]
      5) ldflda {i8,i4}::_F1:i4
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,i4>, ExecCtx, i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4}::_F0:i8
      1) ldloc.1 [{i8,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F3:{i8,i4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i4}::_B0:u1
      1) stloc.1 [{i8,i4}]
      1) ldloc.1 [{i8,i4}]
      5) ldflda {i8,i4}::_F1:i4
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,i4>, ExecCtx, i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4}::_F0:i8
      1) ldloc.1 [{i8,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F4:{i8,i4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i4,i4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i4,i4}::_B0:u1
      1) stloc.3 [{i8,i4,i4}]
      1) ldloc.3 [{i8,i4,i4}]
      5) ldflda {i8,i4,i4}::_F2:i4
      1) ldloc.3 [{i8,i4,i4}]
      5) ldflda {i8,i4,i4}::_F1:i4
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,i4>, ExecCtx, i4, out i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i4,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4,i4}::_F0:i8
      1) ldloc.3 [{i8,i4,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F5:{i8,i4,i4}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>):Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>):Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
Sequence: Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, CastI4(*2))
    [1](42): Max(*2: *1x, CastI4(*2))
    [2](42): MinMax(*2: *1x, CastI4(*2))
    [3](42): MinC(*2: *1x, CastI4(*2))
    [4](42): MaxC(*2: *1x, CastI4(*2))
    [5](42): MinMaxC(*2: *1x, CastI4(*2))
###
> Req->Map((it->Min(it->CastI2()), it->Max(it->CastI2()), it->MinMax(it->CastI2()), it->MinC(it->CastI2()), it->MaxC(it->CastI2()), it->MinMaxC(it->CastI2())))
Req->Map((it->Min(it->CastI2()), it->Max(it->CastI2()), it->MinMax(it->CastI2()), it->MinC(it->CastI2()), it->MaxC(it->CastI2()), it->MinMaxC(it->CastI2()))) : (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
BndKind:Call, Type:(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Call(∂.CastI2(Scope(2)):i2)):i2), Call(∂.Max([map:3] Scope(1), Call(∂.CastI2(Scope(3)):i2)):i2), Call(∂.MinMax([map:4] Scope(1), Call(∂.CastI2(Scope(4)):i2))), Call(∂.MinC([map:5] Scope(1), Call(∂.CastI2(Scope(5)):i2))), Call(∂.MaxC([map:6] Scope(1), Call(∂.CastI2(Scope(6)):i2))), Call(∂.MinMaxC([map:7] Scope(1), Call(∂.CastI2(Scope(7)):i2)))):(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})):(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*))
// (<ctx>, ∂.Req:r8**) : (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
Min_1(Arr<obj>, r8):i2
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      1) ret
  Total Size: 8

Max_1(Arr<obj>, r8):i2
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      1) ret
  Total Size: 8

MinMax_1(Arr<obj>, r8):i2
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      1) ret
  Total Size: 8

MinC_1(Arr<obj>, r8):i2
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      1) ret
  Total Size: 8

MaxC_1(Arr<obj>, r8):i2
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      1) ret
  Total Size: 8

MinMaxC_1(Arr<obj>, r8):i2
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      1) ret
  Total Size: 8

ForEach_1(Arr<obj>, Seq<r8>):(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})
      5) newobj (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,i2>, ExecCtx, i4):i2
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F0:i2
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,i2>, ExecCtx, i4):i2
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F1:i2
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i2,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i2,i2}::_B0:u1
      1) stloc.0 [{i2,i2}]
      1) ldloc.0 [{i2,i2}]
      5) ldflda {i2,i2}::_F1:i2
      1) ldloc.0 [{i2,i2}]
      5) ldflda {i2,i2}::_F0:i2
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,i2>, ExecCtx, i4, out i2, out i2):Void
      1) ldloc.0 [{i2,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F2:{i2,i2}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i2}::_B0:u1
      1) stloc.1 [{i8,i2}]
      1) ldloc.1 [{i8,i2}]
      5) ldflda {i8,i2}::_F1:i2
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,i2>, ExecCtx, i4, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2}::_F0:i8
      1) ldloc.1 [{i8,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F3:{i8,i2}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i2}::_B0:u1
      1) stloc.1 [{i8,i2}]
      1) ldloc.1 [{i8,i2}]
      5) ldflda {i8,i2}::_F1:i2
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,i2>, ExecCtx, i4, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2}::_F0:i8
      1) ldloc.1 [{i8,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F4:{i8,i2}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i2,i2}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i2,i2}::_B0:u1
      1) stloc.3 [{i8,i2,i2}]
      1) ldloc.3 [{i8,i2,i2}]
      5) ldflda {i8,i2,i2}::_F2:i2
      1) ldloc.3 [{i8,i2,i2}]
      5) ldflda {i8,i2,i2}::_F1:i2
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,i2>, ExecCtx, i4, out i2, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i2,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2,i2}::_F0:i8
      1) ldloc.3 [{i8,i2,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F5:{i8,i2,i2}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>):Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>):Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
Sequence: Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, CastI2(*2))
    [1](42): Max(*2: *1x, CastI2(*2))
    [2](42): MinMax(*2: *1x, CastI2(*2))
    [3](42): MinC(*2: *1x, CastI2(*2))
    [4](42): MaxC(*2: *1x, CastI2(*2))
    [5](42): MinMaxC(*2: *1x, CastI2(*2))
###
> Req->Map((it->Min(it->CastI1()), it->Max(it->CastI1()), it->MinMax(it->CastI1()), it->MinC(it->CastI1()), it->MaxC(it->CastI1()), it->MinMaxC(it->CastI1())))
Req->Map((it->Min(it->CastI1()), it->Max(it->CastI1()), it->MinMax(it->CastI1()), it->MinC(it->CastI1()), it->MaxC(it->CastI1()), it->MinMaxC(it->CastI1()))) : (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
BndKind:Call, Type:(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Call(∂.CastI1(Scope(2)):i1)):i1), Call(∂.Max([map:3] Scope(1), Call(∂.CastI1(Scope(3)):i1)):i1), Call(∂.MinMax([map:4] Scope(1), Call(∂.CastI1(Scope(4)):i1))), Call(∂.MinC([map:5] Scope(1), Call(∂.CastI1(Scope(5)):i1))), Call(∂.MaxC([map:6] Scope(1), Call(∂.CastI1(Scope(6)):i1))), Call(∂.MinMaxC([map:7] Scope(1), Call(∂.CastI1(Scope(7)):i1)))):(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})):(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*))
// (<ctx>, ∂.Req:r8**) : (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
Min_1(Arr<obj>, r8):i1
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      1) ret
  Total Size: 8

Max_1(Arr<obj>, r8):i1
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      1) ret
  Total Size: 8

MinMax_1(Arr<obj>, r8):i1
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      1) ret
  Total Size: 8

MinC_1(Arr<obj>, r8):i1
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      1) ret
  Total Size: 8

MaxC_1(Arr<obj>, r8):i1
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      1) ret
  Total Size: 8

MinMaxC_1(Arr<obj>, r8):i1
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      1) ret
  Total Size: 8

ForEach_1(Arr<obj>, Seq<r8>):(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})
      5) newobj (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,i1>, ExecCtx, i4):i1
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F0:i1
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,i1>, ExecCtx, i4):i1
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F1:i1
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i1,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i1,i1}::_B0:u1
      1) stloc.0 [{i1,i1}]
      1) ldloc.0 [{i1,i1}]
      5) ldflda {i1,i1}::_F1:i1
      1) ldloc.0 [{i1,i1}]
      5) ldflda {i1,i1}::_F0:i1
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,i1>, ExecCtx, i4, out i1, out i1):Void
      1) ldloc.0 [{i1,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F2:{i1,i1}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i1}::_B0:u1
      1) stloc.1 [{i8,i1}]
      1) ldloc.1 [{i8,i1}]
      5) ldflda {i8,i1}::_F1:i1
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,i1>, ExecCtx, i4, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1}::_F0:i8
      1) ldloc.1 [{i8,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F3:{i8,i1}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i1}::_B0:u1
      1) stloc.1 [{i8,i1}]
      1) ldloc.1 [{i8,i1}]
      5) ldflda {i8,i1}::_F1:i1
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,i1>, ExecCtx, i4, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1}::_F0:i8
      1) ldloc.1 [{i8,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F4:{i8,i1}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i1,i1}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i1,i1}::_B0:u1
      1) stloc.3 [{i8,i1,i1}]
      1) ldloc.3 [{i8,i1,i1}]
      5) ldflda {i8,i1,i1}::_F2:i1
      1) ldloc.3 [{i8,i1,i1}]
      5) ldflda {i8,i1,i1}::_F1:i1
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,i1>, ExecCtx, i4, out i1, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i1,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1,i1}::_F0:i8
      1) ldloc.3 [{i8,i1,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F5:{i8,i1,i1}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>):Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>):Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
Sequence: Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, CastI1(*2))
    [1](42): Max(*2: *1x, CastI1(*2))
    [2](42): MinMax(*2: *1x, CastI1(*2))
    [3](42): MinC(*2: *1x, CastI1(*2))
    [4](42): MaxC(*2: *1x, CastI1(*2))
    [5](42): MinMaxC(*2: *1x, CastI1(*2))
###
> Req->Map((it->Min(it->CastU8()), it->Max(it->CastU8()), it->MinMax(it->CastU8()), it->MinC(it->CastU8()), it->MaxC(it->CastU8()), it->MinMaxC(it->CastU8())))
Req->Map((it->Min(it->CastU8()), it->Max(it->CastU8()), it->MinMax(it->CastU8()), it->MinC(it->CastU8()), it->MaxC(it->CastU8()), it->MinMaxC(it->CastU8()))) : (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
BndKind:Call, Type:(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Call(∂.CastU8(Scope(2)):u8)):u8), Call(∂.Max([map:3] Scope(1), Call(∂.CastU8(Scope(3)):u8)):u8), Call(∂.MinMax([map:4] Scope(1), Call(∂.CastU8(Scope(4)):u8))), Call(∂.MinC([map:5] Scope(1), Call(∂.CastU8(Scope(5)):u8))), Call(∂.MaxC([map:6] Scope(1), Call(∂.CastU8(Scope(6)):u8))), Call(∂.MinMaxC([map:7] Scope(1), Call(∂.CastU8(Scope(7)):u8)))):(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})):(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*))
// (<ctx>, ∂.Req:r8**) : (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
Min_1(Arr<obj>, r8):u8
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 7

Max_1(Arr<obj>, r8):u8
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 7

MinMax_1(Arr<obj>, r8):u8
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 7

MinC_1(Arr<obj>, r8):u8
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 7

MaxC_1(Arr<obj>, r8):u8
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 7

MinMaxC_1(Arr<obj>, r8):u8
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 7

ForEach_1(Arr<obj>, Seq<r8>):(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})
      5) newobj (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,u8>, ExecCtx, i4):u8
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F0:u8
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,u8>, ExecCtx, i4):u8
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F1:u8
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {u8,u8}::_B0:u1
      1) stloc.0 [{u8,u8}]
      1) ldloc.0 [{u8,u8}]
      5) ldflda {u8,u8}::_F1:u8
      1) ldloc.0 [{u8,u8}]
      5) ldflda {u8,u8}::_F0:u8
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,u8>, ExecCtx, i4, out u8, out u8):Void
      1) ldloc.0 [{u8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F2:{u8,u8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u8}::_B0:u1
      1) stloc.1 [{i8,u8}]
      1) ldloc.1 [{i8,u8}]
      5) ldflda {i8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,u8>, ExecCtx, i4, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8}::_F0:i8
      1) ldloc.1 [{i8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F3:{i8,u8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u8}::_B0:u1
      1) stloc.1 [{i8,u8}]
      1) ldloc.1 [{i8,u8}]
      5) ldflda {i8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,u8>, ExecCtx, i4, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8}::_F0:i8
      1) ldloc.1 [{i8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F4:{i8,u8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u8,u8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u8,u8}::_B0:u1
      1) stloc.3 [{i8,u8,u8}]
      1) ldloc.3 [{i8,u8,u8}]
      5) ldflda {i8,u8,u8}::_F2:u8
      1) ldloc.3 [{i8,u8,u8}]
      5) ldflda {i8,u8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,u8>, ExecCtx, i4, out u8, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8,u8}::_F0:i8
      1) ldloc.3 [{i8,u8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F5:{i8,u8,u8}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>):Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>):Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
Sequence: Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
 0) (2, 18446744073709551615, { Max: 18446744073709551615, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 18446744073709551615 }, { Count: 6, Max: 18446744073709551615, Min: 2 })
 1) (0, 18446744073709551615, { Max: 18446744073709551615, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 18446744073709551615 }, { Count: 7, Max: 18446744073709551615, Min: 0 })
 2) (0, 18446744073709551615, { Max: 18446744073709551615, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 18446744073709551615 }, { Count: 8, Max: 18446744073709551615, Min: 0 })
 3) (0, 18446744073709551615, { Max: 18446744073709551615, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 18446744073709551615 }, { Count: 9, Max: 18446744073709551615, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (2, 18446744073709551615, { Max: 18446744073709551615, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 18446744073709551615 }, { Count: 6, Max: 18446744073709551615, Min: 2 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, CastU8(*2))
    [1](42): Max(*2: *1x, CastU8(*2))
    [2](42): MinMax(*2: *1x, CastU8(*2))
    [3](42): MinC(*2: *1x, CastU8(*2))
    [4](42): MaxC(*2: *1x, CastU8(*2))
    [5](42): MinMaxC(*2: *1x, CastU8(*2))
###
> Req->Map((it->Min(it->CastU4()), it->Max(it->CastU4()), it->MinMax(it->CastU4()), it->MinC(it->CastU4()), it->MaxC(it->CastU4()), it->MinMaxC(it->CastU4())))
Req->Map((it->Min(it->CastU4()), it->Max(it->CastU4()), it->MinMax(it->CastU4()), it->MinC(it->CastU4()), it->MaxC(it->CastU4()), it->MinMaxC(it->CastU4()))) : (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
BndKind:Call, Type:(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Call(∂.CastU4(Scope(2)):u4)):u4), Call(∂.Max([map:3] Scope(1), Call(∂.CastU4(Scope(3)):u4)):u4), Call(∂.MinMax([map:4] Scope(1), Call(∂.CastU4(Scope(4)):u4))), Call(∂.MinC([map:5] Scope(1), Call(∂.CastU4(Scope(5)):u4))), Call(∂.MaxC([map:6] Scope(1), Call(∂.CastU4(Scope(6)):u4))), Call(∂.MinMaxC([map:7] Scope(1), Call(∂.CastU4(Scope(7)):u4)))):(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})):(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*))
// (<ctx>, ∂.Req:r8**) : (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
Min_1(Arr<obj>, r8):u4
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      1) ret
  Total Size: 8

Max_1(Arr<obj>, r8):u4
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      1) ret
  Total Size: 8

MinMax_1(Arr<obj>, r8):u4
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      1) ret
  Total Size: 8

MinC_1(Arr<obj>, r8):u4
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      1) ret
  Total Size: 8

MaxC_1(Arr<obj>, r8):u4
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      1) ret
  Total Size: 8

MinMaxC_1(Arr<obj>, r8):u4
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      1) ret
  Total Size: 8

ForEach_1(Arr<obj>, Seq<r8>):(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})
      5) newobj (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,u4>, ExecCtx, i4):u4
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F0:u4
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,u4>, ExecCtx, i4):u4
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F1:u4
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u4,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {u4,u4}::_B0:u1
      1) stloc.0 [{u4,u4}]
      1) ldloc.0 [{u4,u4}]
      5) ldflda {u4,u4}::_F1:u4
      1) ldloc.0 [{u4,u4}]
      5) ldflda {u4,u4}::_F0:u4
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,u4>, ExecCtx, i4, out u4, out u4):Void
      1) ldloc.0 [{u4,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F2:{u4,u4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u4}::_B0:u1
      1) stloc.1 [{i8,u4}]
      1) ldloc.1 [{i8,u4}]
      5) ldflda {i8,u4}::_F1:u4
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,u4>, ExecCtx, i4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4}::_F0:i8
      1) ldloc.1 [{i8,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F3:{i8,u4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u4}::_B0:u1
      1) stloc.1 [{i8,u4}]
      1) ldloc.1 [{i8,u4}]
      5) ldflda {i8,u4}::_F1:u4
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,u4>, ExecCtx, i4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4}::_F0:i8
      1) ldloc.1 [{i8,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F4:{i8,u4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u4,u4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u4,u4}::_B0:u1
      1) stloc.3 [{i8,u4,u4}]
      1) ldloc.3 [{i8,u4,u4}]
      5) ldflda {i8,u4,u4}::_F2:u4
      1) ldloc.3 [{i8,u4,u4}]
      5) ldflda {i8,u4,u4}::_F1:u4
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,u4>, ExecCtx, i4, out u4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u4,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4,u4}::_F0:i8
      1) ldloc.3 [{i8,u4,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F5:{i8,u4,u4}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>):Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>):Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
Sequence: Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
 0) (2, 4294967295, { Max: 4294967295, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 4294967295 }, { Count: 6, Max: 4294967295, Min: 2 })
 1) (0, 4294967295, { Max: 4294967295, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 4294967295 }, { Count: 7, Max: 4294967295, Min: 0 })
 2) (0, 4294967295, { Max: 4294967295, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 4294967295 }, { Count: 8, Max: 4294967295, Min: 0 })
 3) (0, 4294967295, { Max: 4294967295, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 4294967295 }, { Count: 9, Max: 4294967295, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (2, 4294967295, { Max: 4294967295, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 4294967295 }, { Count: 6, Max: 4294967295, Min: 2 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, CastU4(*2))
    [1](42): Max(*2: *1x, CastU4(*2))
    [2](42): MinMax(*2: *1x, CastU4(*2))
    [3](42): MinC(*2: *1x, CastU4(*2))
    [4](42): MaxC(*2: *1x, CastU4(*2))
    [5](42): MinMaxC(*2: *1x, CastU4(*2))
###
> Req->Map((it->Min(it->CastU2()), it->Max(it->CastU2()), it->MinMax(it->CastU2()), it->MinC(it->CastU2()), it->MaxC(it->CastU2()), it->MinMaxC(it->CastU2())))
Req->Map((it->Min(it->CastU2()), it->Max(it->CastU2()), it->MinMax(it->CastU2()), it->MinC(it->CastU2()), it->MaxC(it->CastU2()), it->MinMaxC(it->CastU2()))) : (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
BndKind:Call, Type:(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Call(∂.CastU2(Scope(2)):u2)):u2), Call(∂.Max([map:3] Scope(1), Call(∂.CastU2(Scope(3)):u2)):u2), Call(∂.MinMax([map:4] Scope(1), Call(∂.CastU2(Scope(4)):u2))), Call(∂.MinC([map:5] Scope(1), Call(∂.CastU2(Scope(5)):u2))), Call(∂.MaxC([map:6] Scope(1), Call(∂.CastU2(Scope(6)):u2))), Call(∂.MinMaxC([map:7] Scope(1), Call(∂.CastU2(Scope(7)):u2)))):(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})):(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*))
// (<ctx>, ∂.Req:r8**) : (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
Min_1(Arr<obj>, r8):u2
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      1) ret
  Total Size: 8

Max_1(Arr<obj>, r8):u2
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      1) ret
  Total Size: 8

MinMax_1(Arr<obj>, r8):u2
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      1) ret
  Total Size: 8

MinC_1(Arr<obj>, r8):u2
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      1) ret
  Total Size: 8

MaxC_1(Arr<obj>, r8):u2
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      1) ret
  Total Size: 8

MinMaxC_1(Arr<obj>, r8):u2
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      1) ret
  Total Size: 8

ForEach_1(Arr<obj>, Seq<r8>):(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})
      5) newobj (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,u2>, ExecCtx, i4):u2
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F0:u2
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,u2>, ExecCtx, i4):u2
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F1:u2
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u2,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {u2,u2}::_B0:u1
      1) stloc.0 [{u2,u2}]
      1) ldloc.0 [{u2,u2}]
      5) ldflda {u2,u2}::_F1:u2
      1) ldloc.0 [{u2,u2}]
      5) ldflda {u2,u2}::_F0:u2
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,u2>, ExecCtx, i4, out u2, out u2):Void
      1) ldloc.0 [{u2,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F2:{u2,u2}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u2}::_B0:u1
      1) stloc.1 [{i8,u2}]
      1) ldloc.1 [{i8,u2}]
      5) ldflda {i8,u2}::_F1:u2
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,u2>, ExecCtx, i4, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2}::_F0:i8
      1) ldloc.1 [{i8,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F3:{i8,u2}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u2}::_B0:u1
      1) stloc.1 [{i8,u2}]
      1) ldloc.1 [{i8,u2}]
      5) ldflda {i8,u2}::_F1:u2
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,u2>, ExecCtx, i4, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2}::_F0:i8
      1) ldloc.1 [{i8,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F4:{i8,u2}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u2,u2}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u2,u2}::_B0:u1
      1) stloc.3 [{i8,u2,u2}]
      1) ldloc.3 [{i8,u2,u2}]
      5) ldflda {i8,u2,u2}::_F2:u2
      1) ldloc.3 [{i8,u2,u2}]
      5) ldflda {i8,u2,u2}::_F1:u2
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,u2>, ExecCtx, i4, out u2, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u2,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2,u2}::_F0:i8
      1) ldloc.3 [{i8,u2,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F5:{i8,u2,u2}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>):Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>):Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
Sequence: Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
 0) (2, 65535, { Max: 65535, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 65535 }, { Count: 6, Max: 65535, Min: 2 })
 1) (0, 65535, { Max: 65535, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 65535 }, { Count: 7, Max: 65535, Min: 0 })
 2) (0, 65535, { Max: 65535, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 65535 }, { Count: 8, Max: 65535, Min: 0 })
 3) (0, 65535, { Max: 65535, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 65535 }, { Count: 9, Max: 65535, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (2, 65535, { Max: 65535, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 65535 }, { Count: 6, Max: 65535, Min: 2 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, CastU2(*2))
    [1](42): Max(*2: *1x, CastU2(*2))
    [2](42): MinMax(*2: *1x, CastU2(*2))
    [3](42): MinC(*2: *1x, CastU2(*2))
    [4](42): MaxC(*2: *1x, CastU2(*2))
    [5](42): MinMaxC(*2: *1x, CastU2(*2))
###
> Req->Map((it->Min(it->CastU1()), it->Max(it->CastU1()), it->MinMax(it->CastU1()), it->MinC(it->CastU1()), it->MaxC(it->CastU1()), it->MinMaxC(it->CastU1())))
Req->Map((it->Min(it->CastU1()), it->Max(it->CastU1()), it->MinMax(it->CastU1()), it->MinC(it->CastU1()), it->MaxC(it->CastU1()), it->MinMaxC(it->CastU1()))) : (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
BndKind:Call, Type:(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Call(∂.CastU1(Scope(2)):u1)):u1), Call(∂.Max([map:3] Scope(1), Call(∂.CastU1(Scope(3)):u1)):u1), Call(∂.MinMax([map:4] Scope(1), Call(∂.CastU1(Scope(4)):u1))), Call(∂.MinC([map:5] Scope(1), Call(∂.CastU1(Scope(5)):u1))), Call(∂.MaxC([map:6] Scope(1), Call(∂.CastU1(Scope(6)):u1))), Call(∂.MinMaxC([map:7] Scope(1), Call(∂.CastU1(Scope(7)):u1)))):(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})):(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*))
// (<ctx>, ∂.Req:r8**) : (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
Min_1(Arr<obj>, r8):u1
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      1) ret
  Total Size: 8

Max_1(Arr<obj>, r8):u1
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      1) ret
  Total Size: 8

MinMax_1(Arr<obj>, r8):u1
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      1) ret
  Total Size: 8

MinC_1(Arr<obj>, r8):u1
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      1) ret
  Total Size: 8

MaxC_1(Arr<obj>, r8):u1
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      1) ret
  Total Size: 8

MinMaxC_1(Arr<obj>, r8):u1
      1) ldarg.1 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      1) ret
  Total Size: 8

ForEach_1(Arr<obj>, Seq<r8>):(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})
      5) newobj (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,u1>, ExecCtx, i4):u1
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F0:u1
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,u1>, ExecCtx, i4):u1
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F1:u1
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u1,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {u1,u1}::_B0:u1
      1) stloc.0 [{u1,u1}]
      1) ldloc.0 [{u1,u1}]
      5) ldflda {u1,u1}::_F1:u1
      1) ldloc.0 [{u1,u1}]
      5) ldflda {u1,u1}::_F0:u1
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,u1>, ExecCtx, i4, out u1, out u1):Void
      1) ldloc.0 [{u1,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F2:{u1,u1}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u1}::_B0:u1
      1) stloc.1 [{i8,u1}]
      1) ldloc.1 [{i8,u1}]
      5) ldflda {i8,u1}::_F1:u1
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,u1>, ExecCtx, i4, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1}::_F0:i8
      1) ldloc.1 [{i8,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F3:{i8,u1}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u1}::_B0:u1
      1) stloc.1 [{i8,u1}]
      1) ldloc.1 [{i8,u1}]
      5) ldflda {i8,u1}::_F1:u1
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,u1>, ExecCtx, i4, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1}::_F0:i8
      1) ldloc.1 [{i8,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F4:{i8,u1}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u1,u1}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u1,u1}::_B0:u1
      1) stloc.3 [{i8,u1,u1}]
      1) ldloc.3 [{i8,u1,u1}]
      5) ldflda {i8,u1,u1}::_F2:u1
      1) ldloc.3 [{i8,u1,u1}]
      5) ldflda {i8,u1,u1}::_F1:u1
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,u1>, ExecCtx, i4, out u1, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u1,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1,u1}::_F0:i8
      1) ldloc.3 [{i8,u1,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F5:{i8,u1,u1}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>):Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>):Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
Sequence: Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
 0) (2, 255, { Max: 255, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 255 }, { Count: 6, Max: 255, Min: 2 })
 1) (0, 255, { Max: 255, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 255 }, { Count: 7, Max: 255, Min: 0 })
 2) (0, 255, { Max: 255, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 255 }, { Count: 8, Max: 255, Min: 0 })
 3) (0, 255, { Max: 255, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 255 }, { Count: 9, Max: 255, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (2, 255, { Max: 255, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 255 }, { Count: 6, Max: 255, Min: 2 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, CastU1(*2))
    [1](42): Max(*2: *1x, CastU1(*2))
    [2](42): MinMax(*2: *1x, CastU1(*2))
    [3](42): MinC(*2: *1x, CastU1(*2))
    [4](42): MaxC(*2: *1x, CastU1(*2))
    [5](42): MinMaxC(*2: *1x, CastU1(*2))
###
> RB->Map((it->Min(!it), it->Max(!it), it->MinMax(!it), it->MinC(!it), it->MaxC(!it), it->MinMaxC(!it)))
RB->Map((it->Min(!it), it->Max(!it), it->MinMax(!it), it->MinC(!it), it->MaxC(!it), it->MinMaxC(!it))) : (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
BndKind:Call, Type:(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*, Bnd:(Call(∂.ForEach([map:1] Global(RB), (Call(∂.Min([map:2] Scope(1), Xor(Scope(2), true:b)):b), Call(∂.Max([map:3] Scope(1), Xor(Scope(3), true:b)):b), Call(∂.MinMax([map:4] Scope(1), Xor(Scope(4), true:b))), Call(∂.MinC([map:5] Scope(1), Xor(Scope(5), true:b))), Call(∂.MaxC([map:6] Scope(1), Xor(Scope(6), true:b))), Call(∂.MinMaxC([map:7] Scope(1), Xor(Scope(7), true:b)))):(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})):(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*))
// (<ctx>, ∂.RB:b**) : (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
Min_1(Arr<obj>, bool):bool
      1) ldarg.1 [bool]
      1) ldc.i4.0
      2) ceq
      1) ret
  Total Size: 5

Max_1(Arr<obj>, bool):bool
      1) ldarg.1 [bool]
      1) ldc.i4.0
      2) ceq
      1) ret
  Total Size: 5

MinMax_1(Arr<obj>, bool):bool
      1) ldarg.1 [bool]
      1) ldc.i4.0
      2) ceq
      1) ret
  Total Size: 5

MinC_1(Arr<obj>, bool):bool
      1) ldarg.1 [bool]
      1) ldc.i4.0
      2) ceq
      1) ret
  Total Size: 5

MaxC_1(Arr<obj>, bool):bool
      1) ldarg.1 [bool]
      1) ldc.i4.0
      2) ceq
      1) ret
  Total Size: 5

MinMaxC_1(Arr<obj>, bool):bool
      1) ldarg.1 [bool]
      1) ldc.i4.0
      2) ceq
      1) ret
  Total Size: 5

ForEach_1(Arr<obj>, Seq<bool>):(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})
      5) newobj (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})()
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<bool,bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<bool>, Func<bool,bool>, ExecCtx, i4):bool
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F0:bool
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<bool,bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<bool>, Func<bool,bool>, ExecCtx, i4):bool
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F1:bool
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<bool,bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {bool,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {bool,bool}::_B0:u1
      1) stloc.0 [{bool,bool}]
      1) ldloc.0 [{bool,bool}]
      5) ldflda {bool,bool}::_F1:bool
      1) ldloc.0 [{bool,bool}]
      5) ldflda {bool,bool}::_F0:bool
      5) call static MinMaxGen::ExecMinMax(Seq<bool>, Func<bool,bool>, ExecCtx, i4, out bool, out bool):Void
      1) ldloc.0 [{bool,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F2:{bool,bool}
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<bool,bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,bool}::_B0:u1
      1) stloc.1 [{i8,bool}]
      1) ldloc.1 [{i8,bool}]
      5) ldflda {i8,bool}::_F1:bool
      5) call static MinMaxGen::ExecMinC(Seq<bool>, Func<bool,bool>, ExecCtx, i4, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool}::_F0:i8
      1) ldloc.1 [{i8,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F3:{i8,bool}
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<bool,bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,bool}::_B0:u1
      1) stloc.1 [{i8,bool}]
      1) ldloc.1 [{i8,bool}]
      5) ldflda {i8,bool}::_F1:bool
      5) call static MinMaxGen::ExecMaxC(Seq<bool>, Func<bool,bool>, ExecCtx, i4, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool}::_F0:i8
      1) ldloc.1 [{i8,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F4:{i8,bool}
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<bool,bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,bool,bool}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,bool,bool}::_B0:u1
      1) stloc.3 [{i8,bool,bool}]
      1) ldloc.3 [{i8,bool,bool}]
      5) ldflda {i8,bool,bool}::_F2:bool
      1) ldloc.3 [{i8,bool,bool}]
      5) ldflda {i8,bool,bool}::_F1:bool
      5) call static MinMaxGen::ExecMinMaxC(Seq<bool>, Func<bool,bool>, ExecCtx, i4, out bool, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,bool,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool,bool}::_F0:i8
      1) ldloc.3 [{i8,bool,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F5:{i8,bool,bool}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<bool>>
      1) stloc.1 [Seq<Seq<bool>>]
      1) ldloc.1 [Seq<Seq<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<bool>,(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<bool>>, Func<Seq<bool>,(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>):Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>):Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, RB:b**) to (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
Sequence: Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
 0) (false, false, { Max: false, Min: false }, { Count: 6, Min: false }, { Count: 6, Max: false }, { Count: 6, Max: false, Min: false })
 1) (true , true , { Max: true , Min: true  }, { Count: 6, Min: true  }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: true  })
 2) (false, true , { Max: true , Min: false }, { Count: 6, Min: false }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: false })
 3) (false, true , { Max: true , Min: false }, { Count: 6, Min: false }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: false })
 4) (false, false, { Max: false, Min: false }, { Count: 0, Min: false }, { Count: 0, Max: false }, { Count: 0, Max: false, Min: false })
 5) (false, false, { Max: false, Min: false }, { Count: 0, Min: false }, { Count: 0, Max: false }, { Count: 0, Max: false, Min: false })
*** Ctx ping count: 138
    [0](14): Min(*2: *1x, Xor(*2, true))
    [1](14): Max(*2: *1x, Xor(*2, true))
    [2](23): MinMax(*2: *1x, Xor(*2, true))
    [3](29): MinC(*2: *1x, Xor(*2, true))
    [4](29): MaxC(*2: *1x, Xor(*2, true))
    [5](29): MinMaxC(*2: *1x, Xor(*2, true))
###
> Req->Map((it->Min(it->ToIA()), it->Max(it->ToIA()), it->MinMax(it->ToIA()), it->MinC(it->ToIA()), it->MaxC(it->ToIA()), it->MinMaxC(it->ToIA())))
Req->Map((it->Min(it->ToIA()), it->Max(it->ToIA()), it->MinMax(it->ToIA()), it->MinC(it->ToIA()), it->MaxC(it->ToIA()), it->MinMaxC(it->ToIA()))) : (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
BndKind:Call, Type:(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Call(∂.ToIA(Scope(2)):i?)):i), Call(∂.Max([map:3] Scope(1), Call(∂.ToIA(Scope(3)):i?)):i), Call(∂.MinMax([map:4] Scope(1), Call(∂.ToIA(Scope(4)):i?))), Call(∂.MinC([map:5] Scope(1), Call(∂.ToIA(Scope(5)):i?))), Call(∂.MaxC([map:6] Scope(1), Call(∂.ToIA(Scope(6)):i?))), Call(∂.MinMaxC([map:7] Scope(1), Call(∂.ToIA(Scope(7)):i?)))):(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})):(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*))
// (<ctx>, ∂.Req:r8**) : (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
Min_1(Arr<obj>, r8):Opt<ia>
      1) ldarg.1 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [0]
      1) pop
      5) br [1]
  Label [0]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [2]:
      1) ret
  Total Size: 39

Max_1(Arr<obj>, r8):Opt<ia>
      1) ldarg.1 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [0]
      1) pop
      5) br [1]
  Label [0]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [2]:
      1) ret
  Total Size: 39

MinMax_1(Arr<obj>, r8):Opt<ia>
      1) ldarg.1 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [0]
      1) pop
      5) br [1]
  Label [0]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [2]:
      1) ret
  Total Size: 39

MinC_1(Arr<obj>, r8):Opt<ia>
      1) ldarg.1 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [0]
      1) pop
      5) br [1]
  Label [0]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [2]:
      1) ret
  Total Size: 39

MaxC_1(Arr<obj>, r8):Opt<ia>
      1) ldarg.1 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [0]
      1) pop
      5) br [1]
  Label [0]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [2]:
      1) ret
  Total Size: 39

MinMaxC_1(Arr<obj>, r8):Opt<ia>
      1) ldarg.1 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [0]
      1) pop
      5) br [1]
  Label [0]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [2]:
      1) ret
  Total Size: 39

ForEach_1(Arr<obj>, Seq<r8>):(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})
      5) newobj (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,Opt<ia>>, ExecCtx, i4):ia
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F0:ia
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,Opt<ia>>, ExecCtx, i4):ia
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F1:ia
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {ia,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {ia,ia}::_B0:u1
      1) stloc.0 [{ia,ia}]
      1) ldloc.0 [{ia,ia}]
      5) ldflda {ia,ia}::_F1:ia
      1) ldloc.0 [{ia,ia}]
      5) ldflda {ia,ia}::_F0:ia
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,Opt<ia>>, ExecCtx, i4, out ia, out ia):Void
      1) ldloc.0 [{ia,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F2:{ia,ia}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,ia}::_B0:u1
      1) stloc.1 [{i8,ia}]
      1) ldloc.1 [{i8,ia}]
      5) ldflda {i8,ia}::_F1:ia
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,Opt<ia>>, ExecCtx, i4, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia}::_F0:i8
      1) ldloc.1 [{i8,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F3:{i8,ia}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,ia}::_B0:u1
      1) stloc.1 [{i8,ia}]
      1) ldloc.1 [{i8,ia}]
      5) ldflda {i8,ia}::_F1:ia
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,Opt<ia>>, ExecCtx, i4, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia}::_F0:i8
      1) ldloc.1 [{i8,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F4:{i8,ia}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,ia,ia}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,ia,ia}::_B0:u1
      1) stloc.3 [{i8,ia,ia}]
      1) ldloc.3 [{i8,ia,ia}]
      5) ldflda {i8,ia,ia}::_F2:ia
      1) ldloc.3 [{i8,ia,ia}]
      5) ldflda {i8,ia,ia}::_F1:ia
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,Opt<ia>>, ExecCtx, i4, out ia, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,ia,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia,ia}::_F0:i8
      1) ldloc.3 [{i8,ia,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F5:{i8,ia,ia}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>):Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>):Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
Sequence: Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, ToIA(*2))
    [1](42): Max(*2: *1x, ToIA(*2))
    [2](42): MinMax(*2: *1x, ToIA(*2))
    [3](42): MinC(*2: *1x, ToIA(*2))
    [4](42): MaxC(*2: *1x, ToIA(*2))
    [5](42): MinMaxC(*2: *1x, ToIA(*2))
###
> Req->Map((it->Min(it->ToI8()), it->Max(it->ToI8()), it->MinMax(it->ToI8()), it->MinC(it->ToI8()), it->MaxC(it->ToI8()), it->MinMaxC(it->ToI8())))
Req->Map((it->Min(it->ToI8()), it->Max(it->ToI8()), it->MinMax(it->ToI8()), it->MinC(it->ToI8()), it->MaxC(it->ToI8()), it->MinMaxC(it->ToI8()))) : (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
BndKind:Call, Type:(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Call(∂.ToI8(Scope(2)):i8?)):i8), Call(∂.Max([map:3] Scope(1), Call(∂.ToI8(Scope(3)):i8?)):i8), Call(∂.MinMax([map:4] Scope(1), Call(∂.ToI8(Scope(4)):i8?))), Call(∂.MinC([map:5] Scope(1), Call(∂.ToI8(Scope(5)):i8?))), Call(∂.MaxC([map:6] Scope(1), Call(∂.ToI8(Scope(6)):i8?))), Call(∂.MinMaxC([map:7] Scope(1), Call(∂.ToI8(Scope(7)):i8?)))):(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})):(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*))
// (<ctx>, ∂.Req:r8**) : (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
Min_1(Arr<obj>, r8):Opt<i8>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      5) newobj Opt<i8>(i8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [1]:
      1) ret
  Total Size: 30

Max_1(Arr<obj>, r8):Opt<i8>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      5) newobj Opt<i8>(i8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [1]:
      1) ret
  Total Size: 30

MinMax_1(Arr<obj>, r8):Opt<i8>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      5) newobj Opt<i8>(i8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [1]:
      1) ret
  Total Size: 30

MinC_1(Arr<obj>, r8):Opt<i8>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      5) newobj Opt<i8>(i8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [1]:
      1) ret
  Total Size: 30

MaxC_1(Arr<obj>, r8):Opt<i8>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      5) newobj Opt<i8>(i8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [1]:
      1) ret
  Total Size: 30

MinMaxC_1(Arr<obj>, r8):Opt<i8>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      5) newobj Opt<i8>(i8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [1]:
      1) ret
  Total Size: 30

ForEach_1(Arr<obj>, Seq<r8>):(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})
      5) newobj (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,Opt<i8>>, ExecCtx, i4):i8
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F0:i8
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,Opt<i8>>, ExecCtx, i4):i8
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F1:i8
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F0:i8
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,Opt<i8>>, ExecCtx, i4, out i8, out i8):Void
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F2:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,Opt<i8>>, ExecCtx, i4, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.0 [{i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8}::_F0:i8
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F3:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,Opt<i8>>, ExecCtx, i4, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.0 [{i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8}::_F0:i8
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F4:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i8,i8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i8,i8}::_B0:u1
      1) stloc.2 [{i8,i8,i8}]
      1) ldloc.2 [{i8,i8,i8}]
      5) ldflda {i8,i8,i8}::_F2:i8
      1) ldloc.2 [{i8,i8,i8}]
      5) ldflda {i8,i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,Opt<i8>>, ExecCtx, i4, out i8, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.2 [{i8,i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8,i8}::_F0:i8
      1) ldloc.2 [{i8,i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F5:{i8,i8,i8}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>):Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>):Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
Sequence: Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, ToI8(*2))
    [1](42): Max(*2: *1x, ToI8(*2))
    [2](42): MinMax(*2: *1x, ToI8(*2))
    [3](42): MinC(*2: *1x, ToI8(*2))
    [4](42): MaxC(*2: *1x, ToI8(*2))
    [5](42): MinMaxC(*2: *1x, ToI8(*2))
###
> Req->Map((it->Min(it->ToI4()), it->Max(it->ToI4()), it->MinMax(it->ToI4()), it->MinC(it->ToI4()), it->MaxC(it->ToI4()), it->MinMaxC(it->ToI4())))
Req->Map((it->Min(it->ToI4()), it->Max(it->ToI4()), it->MinMax(it->ToI4()), it->MinC(it->ToI4()), it->MaxC(it->ToI4()), it->MinMaxC(it->ToI4()))) : (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
BndKind:Call, Type:(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Call(∂.ToI4(Scope(2)):i4?)):i4), Call(∂.Max([map:3] Scope(1), Call(∂.ToI4(Scope(3)):i4?)):i4), Call(∂.MinMax([map:4] Scope(1), Call(∂.ToI4(Scope(4)):i4?))), Call(∂.MinC([map:5] Scope(1), Call(∂.ToI4(Scope(5)):i4?))), Call(∂.MaxC([map:6] Scope(1), Call(∂.ToI4(Scope(6)):i4?))), Call(∂.MinMaxC([map:7] Scope(1), Call(∂.ToI4(Scope(7)):i4?)))):(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})):(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*))
// (<ctx>, ∂.Req:r8**) : (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
Min_1(Arr<obj>, r8):Opt<i4>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      1) stloc.1 [i8]
      5) ldc.i4 [-2147483648]
      1) conv.i8
      1) ldloc.1 [i8]
      5) bgt [0]
      1) ldloc.1 [i8]
      5) ldc.i4 [2147483647]
      1) conv.u8
      5) bgt [0]
      1) ldloc.1 [i8]
      5) newobj Opt<i4>(i4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [1]:
      1) ret
  Total Size: 56

Max_1(Arr<obj>, r8):Opt<i4>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      1) stloc.1 [i8]
      5) ldc.i4 [-2147483648]
      1) conv.i8
      1) ldloc.1 [i8]
      5) bgt [0]
      1) ldloc.1 [i8]
      5) ldc.i4 [2147483647]
      1) conv.u8
      5) bgt [0]
      1) ldloc.1 [i8]
      5) newobj Opt<i4>(i4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [1]:
      1) ret
  Total Size: 56

MinMax_1(Arr<obj>, r8):Opt<i4>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      1) stloc.1 [i8]
      5) ldc.i4 [-2147483648]
      1) conv.i8
      1) ldloc.1 [i8]
      5) bgt [0]
      1) ldloc.1 [i8]
      5) ldc.i4 [2147483647]
      1) conv.u8
      5) bgt [0]
      1) ldloc.1 [i8]
      5) newobj Opt<i4>(i4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [1]:
      1) ret
  Total Size: 56

MinC_1(Arr<obj>, r8):Opt<i4>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      1) stloc.1 [i8]
      5) ldc.i4 [-2147483648]
      1) conv.i8
      1) ldloc.1 [i8]
      5) bgt [0]
      1) ldloc.1 [i8]
      5) ldc.i4 [2147483647]
      1) conv.u8
      5) bgt [0]
      1) ldloc.1 [i8]
      5) newobj Opt<i4>(i4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [1]:
      1) ret
  Total Size: 56

MaxC_1(Arr<obj>, r8):Opt<i4>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      1) stloc.1 [i8]
      5) ldc.i4 [-2147483648]
      1) conv.i8
      1) ldloc.1 [i8]
      5) bgt [0]
      1) ldloc.1 [i8]
      5) ldc.i4 [2147483647]
      1) conv.u8
      5) bgt [0]
      1) ldloc.1 [i8]
      5) newobj Opt<i4>(i4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [1]:
      1) ret
  Total Size: 56

MinMaxC_1(Arr<obj>, r8):Opt<i4>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      1) stloc.1 [i8]
      5) ldc.i4 [-2147483648]
      1) conv.i8
      1) ldloc.1 [i8]
      5) bgt [0]
      1) ldloc.1 [i8]
      5) ldc.i4 [2147483647]
      1) conv.u8
      5) bgt [0]
      1) ldloc.1 [i8]
      5) newobj Opt<i4>(i4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [1]:
      1) ret
  Total Size: 56

ForEach_1(Arr<obj>, Seq<r8>):(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})
      5) newobj (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,Opt<i4>>, ExecCtx, i4):i4
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F0:i4
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,Opt<i4>>, ExecCtx, i4):i4
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F1:i4
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i4,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i4,i4}::_B0:u1
      1) stloc.0 [{i4,i4}]
      1) ldloc.0 [{i4,i4}]
      5) ldflda {i4,i4}::_F1:i4
      1) ldloc.0 [{i4,i4}]
      5) ldflda {i4,i4}::_F0:i4
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,Opt<i4>>, ExecCtx, i4, out i4, out i4):Void
      1) ldloc.0 [{i4,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F2:{i4,i4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i4}::_B0:u1
      1) stloc.1 [{i8,i4}]
      1) ldloc.1 [{i8,i4}]
      5) ldflda {i8,i4}::_F1:i4
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,Opt<i4>>, ExecCtx, i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4}::_F0:i8
      1) ldloc.1 [{i8,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F3:{i8,i4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i4}::_B0:u1
      1) stloc.1 [{i8,i4}]
      1) ldloc.1 [{i8,i4}]
      5) ldflda {i8,i4}::_F1:i4
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,Opt<i4>>, ExecCtx, i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4}::_F0:i8
      1) ldloc.1 [{i8,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F4:{i8,i4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i4,i4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i4,i4}::_B0:u1
      1) stloc.3 [{i8,i4,i4}]
      1) ldloc.3 [{i8,i4,i4}]
      5) ldflda {i8,i4,i4}::_F2:i4
      1) ldloc.3 [{i8,i4,i4}]
      5) ldflda {i8,i4,i4}::_F1:i4
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,Opt<i4>>, ExecCtx, i4, out i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i4,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4,i4}::_F0:i8
      1) ldloc.3 [{i8,i4,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F5:{i8,i4,i4}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>):Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>):Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
Sequence: Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, ToI4(*2))
    [1](42): Max(*2: *1x, ToI4(*2))
    [2](42): MinMax(*2: *1x, ToI4(*2))
    [3](42): MinC(*2: *1x, ToI4(*2))
    [4](42): MaxC(*2: *1x, ToI4(*2))
    [5](42): MinMaxC(*2: *1x, ToI4(*2))
###
> Req->Map((it->Min(it->ToI2()), it->Max(it->ToI2()), it->MinMax(it->ToI2()), it->MinC(it->ToI2()), it->MaxC(it->ToI2()), it->MinMaxC(it->ToI2())))
Req->Map((it->Min(it->ToI2()), it->Max(it->ToI2()), it->MinMax(it->ToI2()), it->MinC(it->ToI2()), it->MaxC(it->ToI2()), it->MinMaxC(it->ToI2()))) : (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
BndKind:Call, Type:(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Call(∂.ToI2(Scope(2)):i2?)):i2), Call(∂.Max([map:3] Scope(1), Call(∂.ToI2(Scope(3)):i2?)):i2), Call(∂.MinMax([map:4] Scope(1), Call(∂.ToI2(Scope(4)):i2?))), Call(∂.MinC([map:5] Scope(1), Call(∂.ToI2(Scope(5)):i2?))), Call(∂.MaxC([map:6] Scope(1), Call(∂.ToI2(Scope(6)):i2?))), Call(∂.MinMaxC([map:7] Scope(1), Call(∂.ToI2(Scope(7)):i2?)))):(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})):(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*))
// (<ctx>, ∂.Req:r8**) : (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
Min_1(Arr<obj>, r8):Opt<i2>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      1) stloc.1 [i8]
      5) ldc.i4 [-32768]
      1) conv.i8
      1) ldloc.1 [i8]
      5) bgt [0]
      1) ldloc.1 [i8]
      5) ldc.i4 [32767]
      1) conv.u8
      5) bgt [0]
      1) ldloc.1 [i8]
      5) newobj Opt<i2>(i2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [1]:
      1) ret
  Total Size: 56

Max_1(Arr<obj>, r8):Opt<i2>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      1) stloc.1 [i8]
      5) ldc.i4 [-32768]
      1) conv.i8
      1) ldloc.1 [i8]
      5) bgt [0]
      1) ldloc.1 [i8]
      5) ldc.i4 [32767]
      1) conv.u8
      5) bgt [0]
      1) ldloc.1 [i8]
      5) newobj Opt<i2>(i2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [1]:
      1) ret
  Total Size: 56

MinMax_1(Arr<obj>, r8):Opt<i2>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      1) stloc.1 [i8]
      5) ldc.i4 [-32768]
      1) conv.i8
      1) ldloc.1 [i8]
      5) bgt [0]
      1) ldloc.1 [i8]
      5) ldc.i4 [32767]
      1) conv.u8
      5) bgt [0]
      1) ldloc.1 [i8]
      5) newobj Opt<i2>(i2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [1]:
      1) ret
  Total Size: 56

MinC_1(Arr<obj>, r8):Opt<i2>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      1) stloc.1 [i8]
      5) ldc.i4 [-32768]
      1) conv.i8
      1) ldloc.1 [i8]
      5) bgt [0]
      1) ldloc.1 [i8]
      5) ldc.i4 [32767]
      1) conv.u8
      5) bgt [0]
      1) ldloc.1 [i8]
      5) newobj Opt<i2>(i2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [1]:
      1) ret
  Total Size: 56

MaxC_1(Arr<obj>, r8):Opt<i2>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      1) stloc.1 [i8]
      5) ldc.i4 [-32768]
      1) conv.i8
      1) ldloc.1 [i8]
      5) bgt [0]
      1) ldloc.1 [i8]
      5) ldc.i4 [32767]
      1) conv.u8
      5) bgt [0]
      1) ldloc.1 [i8]
      5) newobj Opt<i2>(i2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [1]:
      1) ret
  Total Size: 56

MinMaxC_1(Arr<obj>, r8):Opt<i2>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      1) stloc.1 [i8]
      5) ldc.i4 [-32768]
      1) conv.i8
      1) ldloc.1 [i8]
      5) bgt [0]
      1) ldloc.1 [i8]
      5) ldc.i4 [32767]
      1) conv.u8
      5) bgt [0]
      1) ldloc.1 [i8]
      5) newobj Opt<i2>(i2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [1]:
      1) ret
  Total Size: 56

ForEach_1(Arr<obj>, Seq<r8>):(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})
      5) newobj (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,Opt<i2>>, ExecCtx, i4):i2
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F0:i2
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,Opt<i2>>, ExecCtx, i4):i2
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F1:i2
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i2,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i2,i2}::_B0:u1
      1) stloc.0 [{i2,i2}]
      1) ldloc.0 [{i2,i2}]
      5) ldflda {i2,i2}::_F1:i2
      1) ldloc.0 [{i2,i2}]
      5) ldflda {i2,i2}::_F0:i2
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,Opt<i2>>, ExecCtx, i4, out i2, out i2):Void
      1) ldloc.0 [{i2,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F2:{i2,i2}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i2}::_B0:u1
      1) stloc.1 [{i8,i2}]
      1) ldloc.1 [{i8,i2}]
      5) ldflda {i8,i2}::_F1:i2
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,Opt<i2>>, ExecCtx, i4, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2}::_F0:i8
      1) ldloc.1 [{i8,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F3:{i8,i2}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i2}::_B0:u1
      1) stloc.1 [{i8,i2}]
      1) ldloc.1 [{i8,i2}]
      5) ldflda {i8,i2}::_F1:i2
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,Opt<i2>>, ExecCtx, i4, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2}::_F0:i8
      1) ldloc.1 [{i8,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F4:{i8,i2}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i2,i2}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i2,i2}::_B0:u1
      1) stloc.3 [{i8,i2,i2}]
      1) ldloc.3 [{i8,i2,i2}]
      5) ldflda {i8,i2,i2}::_F2:i2
      1) ldloc.3 [{i8,i2,i2}]
      5) ldflda {i8,i2,i2}::_F1:i2
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,Opt<i2>>, ExecCtx, i4, out i2, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i2,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2,i2}::_F0:i8
      1) ldloc.3 [{i8,i2,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F5:{i8,i2,i2}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>):Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>):Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
Sequence: Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, ToI2(*2))
    [1](42): Max(*2: *1x, ToI2(*2))
    [2](42): MinMax(*2: *1x, ToI2(*2))
    [3](42): MinC(*2: *1x, ToI2(*2))
    [4](42): MaxC(*2: *1x, ToI2(*2))
    [5](42): MinMaxC(*2: *1x, ToI2(*2))
###
> Req->Map((it->Min(it->ToI1()), it->Max(it->ToI1()), it->MinMax(it->ToI1()), it->MinC(it->ToI1()), it->MaxC(it->ToI1()), it->MinMaxC(it->ToI1())))
Req->Map((it->Min(it->ToI1()), it->Max(it->ToI1()), it->MinMax(it->ToI1()), it->MinC(it->ToI1()), it->MaxC(it->ToI1()), it->MinMaxC(it->ToI1()))) : (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
BndKind:Call, Type:(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Call(∂.ToI1(Scope(2)):i1?)):i1), Call(∂.Max([map:3] Scope(1), Call(∂.ToI1(Scope(3)):i1?)):i1), Call(∂.MinMax([map:4] Scope(1), Call(∂.ToI1(Scope(4)):i1?))), Call(∂.MinC([map:5] Scope(1), Call(∂.ToI1(Scope(5)):i1?))), Call(∂.MaxC([map:6] Scope(1), Call(∂.ToI1(Scope(6)):i1?))), Call(∂.MinMaxC([map:7] Scope(1), Call(∂.ToI1(Scope(7)):i1?)))):(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})):(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*))
// (<ctx>, ∂.Req:r8**) : (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
Min_1(Arr<obj>, r8):Opt<i1>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      1) stloc.1 [i8]
      2) ldc.i4.s [-128]
      1) conv.i8
      1) ldloc.1 [i8]
      5) bgt [0]
      1) ldloc.1 [i8]
      2) ldc.i4.s [127]
      1) conv.u8
      5) bgt [0]
      1) ldloc.1 [i8]
      5) newobj Opt<i1>(i1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [1]:
      1) ret
  Total Size: 50

Max_1(Arr<obj>, r8):Opt<i1>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      1) stloc.1 [i8]
      2) ldc.i4.s [-128]
      1) conv.i8
      1) ldloc.1 [i8]
      5) bgt [0]
      1) ldloc.1 [i8]
      2) ldc.i4.s [127]
      1) conv.u8
      5) bgt [0]
      1) ldloc.1 [i8]
      5) newobj Opt<i1>(i1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [1]:
      1) ret
  Total Size: 50

MinMax_1(Arr<obj>, r8):Opt<i1>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      1) stloc.1 [i8]
      2) ldc.i4.s [-128]
      1) conv.i8
      1) ldloc.1 [i8]
      5) bgt [0]
      1) ldloc.1 [i8]
      2) ldc.i4.s [127]
      1) conv.u8
      5) bgt [0]
      1) ldloc.1 [i8]
      5) newobj Opt<i1>(i1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [1]:
      1) ret
  Total Size: 50

MinC_1(Arr<obj>, r8):Opt<i1>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      1) stloc.1 [i8]
      2) ldc.i4.s [-128]
      1) conv.i8
      1) ldloc.1 [i8]
      5) bgt [0]
      1) ldloc.1 [i8]
      2) ldc.i4.s [127]
      1) conv.u8
      5) bgt [0]
      1) ldloc.1 [i8]
      5) newobj Opt<i1>(i1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [1]:
      1) ret
  Total Size: 50

MaxC_1(Arr<obj>, r8):Opt<i1>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      1) stloc.1 [i8]
      2) ldc.i4.s [-128]
      1) conv.i8
      1) ldloc.1 [i8]
      5) bgt [0]
      1) ldloc.1 [i8]
      2) ldc.i4.s [127]
      1) conv.u8
      5) bgt [0]
      1) ldloc.1 [i8]
      5) newobj Opt<i1>(i1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [1]:
      1) ret
  Total Size: 50

MinMaxC_1(Arr<obj>, r8):Opt<i1>
      1) ldarg.1 [r8]
      2) ldloca.s [i8 (0)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [0]
      1) ldloc.0 [i8]
      1) stloc.1 [i8]
      2) ldc.i4.s [-128]
      1) conv.i8
      1) ldloc.1 [i8]
      5) bgt [0]
      1) ldloc.1 [i8]
      2) ldc.i4.s [127]
      1) conv.u8
      5) bgt [0]
      1) ldloc.1 [i8]
      5) newobj Opt<i1>(i1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [1]:
      1) ret
  Total Size: 50

ForEach_1(Arr<obj>, Seq<r8>):(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})
      5) newobj (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,Opt<i1>>, ExecCtx, i4):i1
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F0:i1
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,Opt<i1>>, ExecCtx, i4):i1
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F1:i1
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i1,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i1,i1}::_B0:u1
      1) stloc.0 [{i1,i1}]
      1) ldloc.0 [{i1,i1}]
      5) ldflda {i1,i1}::_F1:i1
      1) ldloc.0 [{i1,i1}]
      5) ldflda {i1,i1}::_F0:i1
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,Opt<i1>>, ExecCtx, i4, out i1, out i1):Void
      1) ldloc.0 [{i1,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F2:{i1,i1}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i1}::_B0:u1
      1) stloc.1 [{i8,i1}]
      1) ldloc.1 [{i8,i1}]
      5) ldflda {i8,i1}::_F1:i1
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,Opt<i1>>, ExecCtx, i4, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1}::_F0:i8
      1) ldloc.1 [{i8,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F3:{i8,i1}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i1}::_B0:u1
      1) stloc.1 [{i8,i1}]
      1) ldloc.1 [{i8,i1}]
      5) ldflda {i8,i1}::_F1:i1
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,Opt<i1>>, ExecCtx, i4, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1}::_F0:i8
      1) ldloc.1 [{i8,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F4:{i8,i1}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i1,i1}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i1,i1}::_B0:u1
      1) stloc.3 [{i8,i1,i1}]
      1) ldloc.3 [{i8,i1,i1}]
      5) ldflda {i8,i1,i1}::_F2:i1
      1) ldloc.3 [{i8,i1,i1}]
      5) ldflda {i8,i1,i1}::_F1:i1
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,Opt<i1>>, ExecCtx, i4, out i1, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i1,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1,i1}::_F0:i8
      1) ldloc.3 [{i8,i1,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F5:{i8,i1,i1}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>):Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>):Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
Sequence: Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, ToI1(*2))
    [1](42): Max(*2: *1x, ToI1(*2))
    [2](42): MinMax(*2: *1x, ToI1(*2))
    [3](42): MinC(*2: *1x, ToI1(*2))
    [4](42): MaxC(*2: *1x, ToI1(*2))
    [5](42): MinMaxC(*2: *1x, ToI1(*2))
###
> Req->Map((it->Min(it->ToU8()), it->Max(it->ToU8()), it->MinMax(it->ToU8()), it->MinC(it->ToU8()), it->MaxC(it->ToU8()), it->MinMaxC(it->ToU8())))
Req->Map((it->Min(it->ToU8()), it->Max(it->ToU8()), it->MinMax(it->ToU8()), it->MinC(it->ToU8()), it->MaxC(it->ToU8()), it->MinMaxC(it->ToU8()))) : (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
BndKind:Call, Type:(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Call(∂.ToU8(Scope(2)):u8?)):u8), Call(∂.Max([map:3] Scope(1), Call(∂.ToU8(Scope(3)):u8?)):u8), Call(∂.MinMax([map:4] Scope(1), Call(∂.ToU8(Scope(4)):u8?))), Call(∂.MinC([map:5] Scope(1), Call(∂.ToU8(Scope(5)):u8?))), Call(∂.MaxC([map:6] Scope(1), Call(∂.ToU8(Scope(6)):u8?))), Call(∂.MinMaxC([map:7] Scope(1), Call(∂.ToU8(Scope(7)):u8?)))):(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})):(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*))
// (<ctx>, ∂.Req:r8**) : (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
Min_1(Arr<obj>, r8):Opt<u8>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      5) newobj Opt<u8>(u8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [1]:
      1) ret
  Total Size: 30

Max_1(Arr<obj>, r8):Opt<u8>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      5) newobj Opt<u8>(u8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [1]:
      1) ret
  Total Size: 30

MinMax_1(Arr<obj>, r8):Opt<u8>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      5) newobj Opt<u8>(u8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [1]:
      1) ret
  Total Size: 30

MinC_1(Arr<obj>, r8):Opt<u8>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      5) newobj Opt<u8>(u8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [1]:
      1) ret
  Total Size: 30

MaxC_1(Arr<obj>, r8):Opt<u8>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      5) newobj Opt<u8>(u8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [1]:
      1) ret
  Total Size: 30

MinMaxC_1(Arr<obj>, r8):Opt<u8>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      5) newobj Opt<u8>(u8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [1]:
      1) ret
  Total Size: 30

ForEach_1(Arr<obj>, Seq<r8>):(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})
      5) newobj (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,Opt<u8>>, ExecCtx, i4):u8
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F0:u8
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,Opt<u8>>, ExecCtx, i4):u8
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F1:u8
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {u8,u8}::_B0:u1
      1) stloc.0 [{u8,u8}]
      1) ldloc.0 [{u8,u8}]
      5) ldflda {u8,u8}::_F1:u8
      1) ldloc.0 [{u8,u8}]
      5) ldflda {u8,u8}::_F0:u8
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,Opt<u8>>, ExecCtx, i4, out u8, out u8):Void
      1) ldloc.0 [{u8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F2:{u8,u8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u8}::_B0:u1
      1) stloc.1 [{i8,u8}]
      1) ldloc.1 [{i8,u8}]
      5) ldflda {i8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,Opt<u8>>, ExecCtx, i4, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8}::_F0:i8
      1) ldloc.1 [{i8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F3:{i8,u8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u8}::_B0:u1
      1) stloc.1 [{i8,u8}]
      1) ldloc.1 [{i8,u8}]
      5) ldflda {i8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,Opt<u8>>, ExecCtx, i4, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8}::_F0:i8
      1) ldloc.1 [{i8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F4:{i8,u8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u8,u8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u8,u8}::_B0:u1
      1) stloc.3 [{i8,u8,u8}]
      1) ldloc.3 [{i8,u8,u8}]
      5) ldflda {i8,u8,u8}::_F2:u8
      1) ldloc.3 [{i8,u8,u8}]
      5) ldflda {i8,u8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,Opt<u8>>, ExecCtx, i4, out u8, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8,u8}::_F0:i8
      1) ldloc.3 [{i8,u8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F5:{i8,u8,u8}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>):Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>):Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
Sequence: Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
 0) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 1) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 2) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 3) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, ToU8(*2))
    [1](42): Max(*2: *1x, ToU8(*2))
    [2](42): MinMax(*2: *1x, ToU8(*2))
    [3](42): MinC(*2: *1x, ToU8(*2))
    [4](42): MaxC(*2: *1x, ToU8(*2))
    [5](42): MinMaxC(*2: *1x, ToU8(*2))
###
> Req->Map((it->Min(it->ToU4()), it->Max(it->ToU4()), it->MinMax(it->ToU4()), it->MinC(it->ToU4()), it->MaxC(it->ToU4()), it->MinMaxC(it->ToU4())))
Req->Map((it->Min(it->ToU4()), it->Max(it->ToU4()), it->MinMax(it->ToU4()), it->MinC(it->ToU4()), it->MaxC(it->ToU4()), it->MinMaxC(it->ToU4()))) : (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
BndKind:Call, Type:(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Call(∂.ToU4(Scope(2)):u4?)):u4), Call(∂.Max([map:3] Scope(1), Call(∂.ToU4(Scope(3)):u4?)):u4), Call(∂.MinMax([map:4] Scope(1), Call(∂.ToU4(Scope(4)):u4?))), Call(∂.MinC([map:5] Scope(1), Call(∂.ToU4(Scope(5)):u4?))), Call(∂.MaxC([map:6] Scope(1), Call(∂.ToU4(Scope(6)):u4?))), Call(∂.MinMaxC([map:7] Scope(1), Call(∂.ToU4(Scope(7)):u4?)))):(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})):(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*))
// (<ctx>, ∂.Req:r8**) : (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
Min_1(Arr<obj>, r8):Opt<u4>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      1) stloc.1 [u8]
      1) ldloc.1 [u8]
      1) ldc.i4.m1
      1) conv.u8
      5) bgt.un [0]
      1) ldloc.1 [u8]
      5) newobj Opt<u4>(u4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [1]:
      1) ret
  Total Size: 40

Max_1(Arr<obj>, r8):Opt<u4>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      1) stloc.1 [u8]
      1) ldloc.1 [u8]
      1) ldc.i4.m1
      1) conv.u8
      5) bgt.un [0]
      1) ldloc.1 [u8]
      5) newobj Opt<u4>(u4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [1]:
      1) ret
  Total Size: 40

MinMax_1(Arr<obj>, r8):Opt<u4>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      1) stloc.1 [u8]
      1) ldloc.1 [u8]
      1) ldc.i4.m1
      1) conv.u8
      5) bgt.un [0]
      1) ldloc.1 [u8]
      5) newobj Opt<u4>(u4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [1]:
      1) ret
  Total Size: 40

MinC_1(Arr<obj>, r8):Opt<u4>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      1) stloc.1 [u8]
      1) ldloc.1 [u8]
      1) ldc.i4.m1
      1) conv.u8
      5) bgt.un [0]
      1) ldloc.1 [u8]
      5) newobj Opt<u4>(u4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [1]:
      1) ret
  Total Size: 40

MaxC_1(Arr<obj>, r8):Opt<u4>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      1) stloc.1 [u8]
      1) ldloc.1 [u8]
      1) ldc.i4.m1
      1) conv.u8
      5) bgt.un [0]
      1) ldloc.1 [u8]
      5) newobj Opt<u4>(u4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [1]:
      1) ret
  Total Size: 40

MinMaxC_1(Arr<obj>, r8):Opt<u4>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      1) stloc.1 [u8]
      1) ldloc.1 [u8]
      1) ldc.i4.m1
      1) conv.u8
      5) bgt.un [0]
      1) ldloc.1 [u8]
      5) newobj Opt<u4>(u4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [1]:
      1) ret
  Total Size: 40

ForEach_1(Arr<obj>, Seq<r8>):(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})
      5) newobj (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,Opt<u4>>, ExecCtx, i4):u4
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F0:u4
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,Opt<u4>>, ExecCtx, i4):u4
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F1:u4
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u4,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {u4,u4}::_B0:u1
      1) stloc.0 [{u4,u4}]
      1) ldloc.0 [{u4,u4}]
      5) ldflda {u4,u4}::_F1:u4
      1) ldloc.0 [{u4,u4}]
      5) ldflda {u4,u4}::_F0:u4
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,Opt<u4>>, ExecCtx, i4, out u4, out u4):Void
      1) ldloc.0 [{u4,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F2:{u4,u4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u4}::_B0:u1
      1) stloc.1 [{i8,u4}]
      1) ldloc.1 [{i8,u4}]
      5) ldflda {i8,u4}::_F1:u4
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,Opt<u4>>, ExecCtx, i4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4}::_F0:i8
      1) ldloc.1 [{i8,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F3:{i8,u4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u4}::_B0:u1
      1) stloc.1 [{i8,u4}]
      1) ldloc.1 [{i8,u4}]
      5) ldflda {i8,u4}::_F1:u4
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,Opt<u4>>, ExecCtx, i4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4}::_F0:i8
      1) ldloc.1 [{i8,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F4:{i8,u4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u4,u4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u4,u4}::_B0:u1
      1) stloc.3 [{i8,u4,u4}]
      1) ldloc.3 [{i8,u4,u4}]
      5) ldflda {i8,u4,u4}::_F2:u4
      1) ldloc.3 [{i8,u4,u4}]
      5) ldflda {i8,u4,u4}::_F1:u4
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,Opt<u4>>, ExecCtx, i4, out u4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u4,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4,u4}::_F0:i8
      1) ldloc.3 [{i8,u4,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F5:{i8,u4,u4}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>):Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>):Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
Sequence: Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
 0) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 1) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 2) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 3) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, ToU4(*2))
    [1](42): Max(*2: *1x, ToU4(*2))
    [2](42): MinMax(*2: *1x, ToU4(*2))
    [3](42): MinC(*2: *1x, ToU4(*2))
    [4](42): MaxC(*2: *1x, ToU4(*2))
    [5](42): MinMaxC(*2: *1x, ToU4(*2))
###
> Req->Map((it->Min(it->ToU2()), it->Max(it->ToU2()), it->MinMax(it->ToU2()), it->MinC(it->ToU2()), it->MaxC(it->ToU2()), it->MinMaxC(it->ToU2())))
Req->Map((it->Min(it->ToU2()), it->Max(it->ToU2()), it->MinMax(it->ToU2()), it->MinC(it->ToU2()), it->MaxC(it->ToU2()), it->MinMaxC(it->ToU2()))) : (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
BndKind:Call, Type:(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Call(∂.ToU2(Scope(2)):u2?)):u2), Call(∂.Max([map:3] Scope(1), Call(∂.ToU2(Scope(3)):u2?)):u2), Call(∂.MinMax([map:4] Scope(1), Call(∂.ToU2(Scope(4)):u2?))), Call(∂.MinC([map:5] Scope(1), Call(∂.ToU2(Scope(5)):u2?))), Call(∂.MaxC([map:6] Scope(1), Call(∂.ToU2(Scope(6)):u2?))), Call(∂.MinMaxC([map:7] Scope(1), Call(∂.ToU2(Scope(7)):u2?)))):(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})):(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*))
// (<ctx>, ∂.Req:r8**) : (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
Min_1(Arr<obj>, r8):Opt<u2>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      1) stloc.1 [u8]
      1) ldloc.1 [u8]
      5) ldc.i4 [65535]
      1) conv.u8
      5) bgt.un [0]
      1) ldloc.1 [u8]
      5) newobj Opt<u2>(u2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [1]:
      1) ret
  Total Size: 44

Max_1(Arr<obj>, r8):Opt<u2>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      1) stloc.1 [u8]
      1) ldloc.1 [u8]
      5) ldc.i4 [65535]
      1) conv.u8
      5) bgt.un [0]
      1) ldloc.1 [u8]
      5) newobj Opt<u2>(u2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [1]:
      1) ret
  Total Size: 44

MinMax_1(Arr<obj>, r8):Opt<u2>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      1) stloc.1 [u8]
      1) ldloc.1 [u8]
      5) ldc.i4 [65535]
      1) conv.u8
      5) bgt.un [0]
      1) ldloc.1 [u8]
      5) newobj Opt<u2>(u2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [1]:
      1) ret
  Total Size: 44

MinC_1(Arr<obj>, r8):Opt<u2>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      1) stloc.1 [u8]
      1) ldloc.1 [u8]
      5) ldc.i4 [65535]
      1) conv.u8
      5) bgt.un [0]
      1) ldloc.1 [u8]
      5) newobj Opt<u2>(u2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [1]:
      1) ret
  Total Size: 44

MaxC_1(Arr<obj>, r8):Opt<u2>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      1) stloc.1 [u8]
      1) ldloc.1 [u8]
      5) ldc.i4 [65535]
      1) conv.u8
      5) bgt.un [0]
      1) ldloc.1 [u8]
      5) newobj Opt<u2>(u2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [1]:
      1) ret
  Total Size: 44

MinMaxC_1(Arr<obj>, r8):Opt<u2>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      1) stloc.1 [u8]
      1) ldloc.1 [u8]
      5) ldc.i4 [65535]
      1) conv.u8
      5) bgt.un [0]
      1) ldloc.1 [u8]
      5) newobj Opt<u2>(u2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [1]:
      1) ret
  Total Size: 44

ForEach_1(Arr<obj>, Seq<r8>):(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})
      5) newobj (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,Opt<u2>>, ExecCtx, i4):u2
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F0:u2
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,Opt<u2>>, ExecCtx, i4):u2
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F1:u2
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u2,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {u2,u2}::_B0:u1
      1) stloc.0 [{u2,u2}]
      1) ldloc.0 [{u2,u2}]
      5) ldflda {u2,u2}::_F1:u2
      1) ldloc.0 [{u2,u2}]
      5) ldflda {u2,u2}::_F0:u2
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,Opt<u2>>, ExecCtx, i4, out u2, out u2):Void
      1) ldloc.0 [{u2,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F2:{u2,u2}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u2}::_B0:u1
      1) stloc.1 [{i8,u2}]
      1) ldloc.1 [{i8,u2}]
      5) ldflda {i8,u2}::_F1:u2
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,Opt<u2>>, ExecCtx, i4, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2}::_F0:i8
      1) ldloc.1 [{i8,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F3:{i8,u2}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u2}::_B0:u1
      1) stloc.1 [{i8,u2}]
      1) ldloc.1 [{i8,u2}]
      5) ldflda {i8,u2}::_F1:u2
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,Opt<u2>>, ExecCtx, i4, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2}::_F0:i8
      1) ldloc.1 [{i8,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F4:{i8,u2}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u2,u2}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u2,u2}::_B0:u1
      1) stloc.3 [{i8,u2,u2}]
      1) ldloc.3 [{i8,u2,u2}]
      5) ldflda {i8,u2,u2}::_F2:u2
      1) ldloc.3 [{i8,u2,u2}]
      5) ldflda {i8,u2,u2}::_F1:u2
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,Opt<u2>>, ExecCtx, i4, out u2, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u2,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2,u2}::_F0:i8
      1) ldloc.3 [{i8,u2,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F5:{i8,u2,u2}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>):Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>):Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
Sequence: Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
 0) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 1) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 2) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 3) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, ToU2(*2))
    [1](42): Max(*2: *1x, ToU2(*2))
    [2](42): MinMax(*2: *1x, ToU2(*2))
    [3](42): MinC(*2: *1x, ToU2(*2))
    [4](42): MaxC(*2: *1x, ToU2(*2))
    [5](42): MinMaxC(*2: *1x, ToU2(*2))
###
> Req->Map((it->Min(it->ToU1()), it->Max(it->ToU1()), it->MinMax(it->ToU1()), it->MinC(it->ToU1()), it->MaxC(it->ToU1()), it->MinMaxC(it->ToU1())))
Req->Map((it->Min(it->ToU1()), it->Max(it->ToU1()), it->MinMax(it->ToU1()), it->MinC(it->ToU1()), it->MaxC(it->ToU1()), it->MinMaxC(it->ToU1()))) : (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
BndKind:Call, Type:(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:2] Scope(1), Call(∂.ToU1(Scope(2)):u1?)):u1), Call(∂.Max([map:3] Scope(1), Call(∂.ToU1(Scope(3)):u1?)):u1), Call(∂.MinMax([map:4] Scope(1), Call(∂.ToU1(Scope(4)):u1?))), Call(∂.MinC([map:5] Scope(1), Call(∂.ToU1(Scope(5)):u1?))), Call(∂.MaxC([map:6] Scope(1), Call(∂.ToU1(Scope(6)):u1?))), Call(∂.MinMaxC([map:7] Scope(1), Call(∂.ToU1(Scope(7)):u1?)))):(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})):(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*))
// (<ctx>, ∂.Req:r8**) : (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
Min_1(Arr<obj>, r8):Opt<u1>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      1) stloc.1 [u8]
      1) ldloc.1 [u8]
      5) ldc.i4 [255]
      1) conv.u8
      5) bgt.un [0]
      1) ldloc.1 [u8]
      5) newobj Opt<u1>(u1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [1]:
      1) ret
  Total Size: 44

Max_1(Arr<obj>, r8):Opt<u1>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      1) stloc.1 [u8]
      1) ldloc.1 [u8]
      5) ldc.i4 [255]
      1) conv.u8
      5) bgt.un [0]
      1) ldloc.1 [u8]
      5) newobj Opt<u1>(u1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [1]:
      1) ret
  Total Size: 44

MinMax_1(Arr<obj>, r8):Opt<u1>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      1) stloc.1 [u8]
      1) ldloc.1 [u8]
      5) ldc.i4 [255]
      1) conv.u8
      5) bgt.un [0]
      1) ldloc.1 [u8]
      5) newobj Opt<u1>(u1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [1]:
      1) ret
  Total Size: 44

MinC_1(Arr<obj>, r8):Opt<u1>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      1) stloc.1 [u8]
      1) ldloc.1 [u8]
      5) ldc.i4 [255]
      1) conv.u8
      5) bgt.un [0]
      1) ldloc.1 [u8]
      5) newobj Opt<u1>(u1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [1]:
      1) ret
  Total Size: 44

MaxC_1(Arr<obj>, r8):Opt<u1>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      1) stloc.1 [u8]
      1) ldloc.1 [u8]
      5) ldc.i4 [255]
      1) conv.u8
      5) bgt.un [0]
      1) ldloc.1 [u8]
      5) newobj Opt<u1>(u1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [1]:
      1) ret
  Total Size: 44

MinMaxC_1(Arr<obj>, r8):Opt<u1>
      1) ldarg.1 [r8]
      2) ldloca.s [u8 (0)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [0]
      1) ldloc.0 [u8]
      1) stloc.1 [u8]
      1) ldloc.1 [u8]
      5) ldc.i4 [255]
      1) conv.u8
      5) bgt.un [0]
      1) ldloc.1 [u8]
      5) newobj Opt<u1>(u1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [1]:
      1) ret
  Total Size: 44

ForEach_1(Arr<obj>, Seq<r8>):(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})
      5) newobj (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<r8,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<r8>, Func<r8,Opt<u1>>, ExecCtx, i4):u1
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F0:u1
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<r8,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<r8>, Func<r8,Opt<u1>>, ExecCtx, i4):u1
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F1:u1
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<r8,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u1,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {u1,u1}::_B0:u1
      1) stloc.0 [{u1,u1}]
      1) ldloc.0 [{u1,u1}]
      5) ldflda {u1,u1}::_F1:u1
      1) ldloc.0 [{u1,u1}]
      5) ldflda {u1,u1}::_F0:u1
      5) call static MinMaxGen::ExecMinMax(Seq<r8>, Func<r8,Opt<u1>>, ExecCtx, i4, out u1, out u1):Void
      1) ldloc.0 [{u1,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F2:{u1,u1}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<r8,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u1}::_B0:u1
      1) stloc.1 [{i8,u1}]
      1) ldloc.1 [{i8,u1}]
      5) ldflda {i8,u1}::_F1:u1
      5) call static MinMaxGen::ExecMinC(Seq<r8>, Func<r8,Opt<u1>>, ExecCtx, i4, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1}::_F0:i8
      1) ldloc.1 [{i8,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F3:{i8,u1}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<r8,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u1}::_B0:u1
      1) stloc.1 [{i8,u1}]
      1) ldloc.1 [{i8,u1}]
      5) ldflda {i8,u1}::_F1:u1
      5) call static MinMaxGen::ExecMaxC(Seq<r8>, Func<r8,Opt<u1>>, ExecCtx, i4, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1}::_F0:i8
      1) ldloc.1 [{i8,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F4:{i8,u1}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<r8,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u1,u1}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u1,u1}::_B0:u1
      1) stloc.3 [{i8,u1,u1}]
      1) ldloc.3 [{i8,u1,u1}]
      5) ldflda {i8,u1,u1}::_F2:u1
      1) ldloc.3 [{i8,u1,u1}]
      5) ldflda {i8,u1,u1}::_F1:u1
      5) call static MinMaxGen::ExecMinMaxC(Seq<r8>, Func<r8,Opt<u1>>, ExecCtx, i4, out u1, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u1,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1,u1}::_F0:i8
      1) ldloc.3 [{i8,u1,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F5:{i8,u1,u1}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>):Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>):Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
Sequence: Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
 0) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 1) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 2) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 3) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
*** Ctx ping count: 252
    [0](42): Min(*2: *1x, ToU1(*2))
    [1](42): Max(*2: *1x, ToU1(*2))
    [2](42): MinMax(*2: *1x, ToU1(*2))
    [3](42): MinC(*2: *1x, ToU1(*2))
    [4](42): MaxC(*2: *1x, ToU1(*2))
    [5](42): MinMaxC(*2: *1x, ToU1(*2))
###
> Opt
Opt : r8?**
BndKind:Global, Type:r8?**, Bnd:(Global(Opt))
// (∂.Opt:r8?**) : r8?**
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.0 [Seq<Seq<Opt<r8>>>]
      1) ldloc.0 [Seq<Seq<Opt<r8>>>]
      1) ret
  Total Size: 11

Func sig: (Opt:r8?**) to r8?**
Sequence: Seq<Seq<Opt<r8>>>
 0) Sequence: Seq<Opt<r8>>
     0) 3
     1) -1
     2) 2.5
     3) <null>
     4) 3
     5) -1
     6) 2.5
 1) Sequence: Seq<Opt<r8>>
     0) 3
     1) -1
     2) 2.5
     3) <null>
     4) NaN
     5) 3
     6) -1
     7) 2.5
 2) Sequence: Seq<Opt<r8>>
     0) 3
     1) -1
     2) 2.5
     3) <null>
     4) ∞
     5) -∞
     6) 3
     7) -1
     8) 2.5
 3) Sequence: Seq<Opt<r8>>
     0) 3
     1) -1
     2) 2.5
     3) <null>
     4) ∞
     5) NaN
     6) -∞
     7) 3
     8) -1
     9) 2.5
 4) Sequence: Seq<Opt<r8>>
 5) Sequence: Seq<Opt<r8>>
     0) <null>
 6) <null>
 7) Sequence: Seq<Opt<r8>>
     0) -1
     1) 2.5
     2) 3
     3) <null>
     4) -1
     5) 2.5
     6) 3
###
> Opt->Map((it->Min(it->CastR8()), it->Max(it->CastR8()), it->MinMax(it->CastR8()), it->MinC(it->CastR8()), it->MaxC(it->CastR8()), it->MinMaxC(it->CastR8())))
Opt->Map((it->Min(it->CastR8()), it->Max(it->CastR8()), it->MinMax(it->CastR8()), it->MinC(it->CastR8()), it->MaxC(it->CastR8()), it->MinMaxC(it->CastR8()))) : (r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*
BndKind:Call, Type:(r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Scope(2)):r8), Call(∂.Max([map:3] Scope(1), Scope(3)):r8), Call(∂.MinMax([map:4] Scope(1), Scope(4))), Call(∂.MinC([map:5] Scope(1), Scope(5))), Call(∂.MaxC([map:6] Scope(1), Scope(6))), Call(∂.MinMaxC([map:7] Scope(1), Scope(7)))):(r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})):(r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*))
// (<ctx>, ∂.Opt:r8?**) : (r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*
Min_1(Arr<obj>, Opt<r8>):Opt<r8>
      1) ldarg.1 [Opt<r8>]
      1) ret
  Total Size: 2

Max_1(Arr<obj>, Opt<r8>):Opt<r8>
      1) ldarg.1 [Opt<r8>]
      1) ret
  Total Size: 2

MinMax_1(Arr<obj>, Opt<r8>):Opt<r8>
      1) ldarg.1 [Opt<r8>]
      1) ret
  Total Size: 2

MinC_1(Arr<obj>, Opt<r8>):Opt<r8>
      1) ldarg.1 [Opt<r8>]
      1) ret
  Total Size: 2

MaxC_1(Arr<obj>, Opt<r8>):Opt<r8>
      1) ldarg.1 [Opt<r8>]
      1) ret
  Total Size: 2

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<r8>
      1) ldarg.1 [Opt<r8>]
      1) ret
  Total Size: 2

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})
      5) newobj (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<r8>>, ExecCtx, i4):r8
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F0:r8
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<r8>>, ExecCtx, i4):r8
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F1:r8
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {r8,r8}()
      1) dup
      1) ldc.i4.3
      5) stfld {r8,r8}::_B0:u1
      1) stloc.0 [{r8,r8}]
      1) ldloc.0 [{r8,r8}]
      5) ldflda {r8,r8}::_F1:r8
      1) ldloc.0 [{r8,r8}]
      5) ldflda {r8,r8}::_F0:r8
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<r8>>, ExecCtx, i4, out r8, out r8):Void
      1) ldloc.0 [{r8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F2:{r8,r8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,r8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r8}::_B0:u1
      1) stloc.1 [{i8,r8}]
      1) ldloc.1 [{i8,r8}]
      5) ldflda {i8,r8}::_F1:r8
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<r8>>, ExecCtx, i4, out r8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r8}]
      1) ldloc.2 [i8]
      5) stfld {i8,r8}::_F0:i8
      1) ldloc.1 [{i8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F3:{i8,r8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,r8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r8}::_B0:u1
      1) stloc.1 [{i8,r8}]
      1) ldloc.1 [{i8,r8}]
      5) ldflda {i8,r8}::_F1:r8
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<r8>>, ExecCtx, i4, out r8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r8}]
      1) ldloc.2 [i8]
      5) stfld {i8,r8}::_F0:i8
      1) ldloc.1 [{i8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F4:{i8,r8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,r8,r8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,r8,r8}::_B0:u1
      1) stloc.3 [{i8,r8,r8}]
      1) ldloc.3 [{i8,r8,r8}]
      5) ldflda {i8,r8,r8}::_F2:r8
      1) ldloc.3 [{i8,r8,r8}]
      5) ldflda {i8,r8,r8}::_F1:r8
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<r8>>, ExecCtx, i4, out r8, out r8):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,r8,r8}]
      1) ldloc.2 [i8]
      5) stfld {i8,r8,r8}::_F0:i8
      1) ldloc.3 [{i8,r8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F5:{i8,r8,r8}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>):Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>):Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*
Sequence: Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 7, Min: NaN }, { Count: 7, Max: NaN }, { Count: 7, Max: NaN, Min: NaN })
 2) (-∞, ∞, { Max: ∞, Min: -∞ }, { Count: 8, Min: -∞ }, { Count: 8, Max: ∞ }, { Count: 8, Max: ∞, Min: -∞ })
 3) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 9, Min: NaN }, { Count: 9, Max: NaN }, { Count: 9, Max: NaN, Min: NaN })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, *2)
    [1](49): Max(*2: *1x, *2)
    [2](49): MinMax(*2: *1x, *2)
    [3](49): MinC(*2: *1x, *2)
    [4](49): MaxC(*2: *1x, *2)
    [5](49): MinMaxC(*2: *1x, *2)
###
> Opt->Map((it->Min(it->CastR4()), it->Max(it->CastR4()), it->MinMax(it->CastR4()), it->MinC(it->CastR4()), it->MaxC(it->CastR4()), it->MinMaxC(it->CastR4())))
Opt->Map((it->Min(it->CastR4()), it->Max(it->CastR4()), it->MinMax(it->CastR4()), it->MinC(it->CastR4()), it->MaxC(it->CastR4()), it->MinMaxC(it->CastR4()))) : (r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*
BndKind:Call, Type:(r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Call(∂.CastR4(Scope(3)):r4)):r4?)):r4), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Call(∂.CastR4(Scope(5)):r4)):r4?)):r4), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastR4(Scope(7)):r4)):r4?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Call(∂.CastR4(Scope(9)):r4)):r4?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Call(∂.CastR4(Scope(11)):r4)):r4?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastR4(Scope(13)):r4)):r4?)))):(r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})):(r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*))
// (<ctx>, ∂.Opt:r8?**) : (r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*
Min_1(Arr<obj>, Opt<r8>):Opt<r4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) conv.r4
      5) newobj Opt<r4>(r4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<r4>
  Label [1]:
      1) ret
  Total Size: 38

Max_1(Arr<obj>, Opt<r8>):Opt<r4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) conv.r4
      5) newobj Opt<r4>(r4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<r4>
  Label [1]:
      1) ret
  Total Size: 38

MinMax_1(Arr<obj>, Opt<r8>):Opt<r4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) conv.r4
      5) newobj Opt<r4>(r4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<r4>
  Label [1]:
      1) ret
  Total Size: 38

MinC_1(Arr<obj>, Opt<r8>):Opt<r4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) conv.r4
      5) newobj Opt<r4>(r4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<r4>
  Label [1]:
      1) ret
  Total Size: 38

MaxC_1(Arr<obj>, Opt<r8>):Opt<r4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) conv.r4
      5) newobj Opt<r4>(r4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<r4>
  Label [1]:
      1) ret
  Total Size: 38

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<r4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) conv.r4
      5) newobj Opt<r4>(r4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<r4>
  Label [1]:
      1) ret
  Total Size: 38

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})
      5) newobj (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<r4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<r4>>, ExecCtx, i4):r4
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F0:r4
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<r4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<r4>>, ExecCtx, i4):r4
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F1:r4
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<r4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {r4,r4}()
      1) dup
      1) ldc.i4.3
      5) stfld {r4,r4}::_B0:u1
      1) stloc.0 [{r4,r4}]
      1) ldloc.0 [{r4,r4}]
      5) ldflda {r4,r4}::_F1:r4
      1) ldloc.0 [{r4,r4}]
      5) ldflda {r4,r4}::_F0:r4
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<r4>>, ExecCtx, i4, out r4, out r4):Void
      1) ldloc.0 [{r4,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F2:{r4,r4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<r4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,r4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r4}::_B0:u1
      1) stloc.1 [{i8,r4}]
      1) ldloc.1 [{i8,r4}]
      5) ldflda {i8,r4}::_F1:r4
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<r4>>, ExecCtx, i4, out r4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r4}]
      1) ldloc.2 [i8]
      5) stfld {i8,r4}::_F0:i8
      1) ldloc.1 [{i8,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F3:{i8,r4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<r4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,r4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r4}::_B0:u1
      1) stloc.1 [{i8,r4}]
      1) ldloc.1 [{i8,r4}]
      5) ldflda {i8,r4}::_F1:r4
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<r4>>, ExecCtx, i4, out r4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r4}]
      1) ldloc.2 [i8]
      5) stfld {i8,r4}::_F0:i8
      1) ldloc.1 [{i8,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F4:{i8,r4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<r4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,r4,r4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,r4,r4}::_B0:u1
      1) stloc.3 [{i8,r4,r4}]
      1) ldloc.3 [{i8,r4,r4}]
      5) ldflda {i8,r4,r4}::_F2:r4
      1) ldloc.3 [{i8,r4,r4}]
      5) ldflda {i8,r4,r4}::_F1:r4
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<r4>>, ExecCtx, i4, out r4, out r4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,r4,r4}]
      1) ldloc.2 [i8]
      5) stfld {i8,r4,r4}::_F0:i8
      1) ldloc.3 [{i8,r4,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F5:{i8,r4,r4}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>):Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>):Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*
Sequence: Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 7, Min: NaN }, { Count: 7, Max: NaN }, { Count: 7, Max: NaN, Min: NaN })
 2) (-∞, ∞, { Max: ∞, Min: -∞ }, { Count: 8, Min: -∞ }, { Count: 8, Max: ∞ }, { Count: 8, Max: ∞, Min: -∞ })
 3) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 9, Min: NaN }, { Count: 9, Max: NaN }, { Count: 9, Max: NaN, Min: NaN })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, Guard(?3: *2, CastR4(?3)))
    [1](49): Max(*2: *1x, Guard(?3: *2, CastR4(?3)))
    [2](49): MinMax(*2: *1x, Guard(?3: *2, CastR4(?3)))
    [3](49): MinC(*2: *1x, Guard(?3: *2, CastR4(?3)))
    [4](49): MaxC(*2: *1x, Guard(?3: *2, CastR4(?3)))
    [5](49): MinMaxC(*2: *1x, Guard(?3: *2, CastR4(?3)))
###
> Opt->Map((it->Min(it->CastIA()), it->Max(it->CastIA()), it->MinMax(it->CastIA()), it->MinC(it->CastIA()), it->MaxC(it->CastIA()), it->MinMaxC(it->CastIA())))
Opt->Map((it->Min(it->CastIA()), it->Max(it->CastIA()), it->MinMax(it->CastIA()), it->MinC(it->CastIA()), it->MaxC(it->CastIA()), it->MinMaxC(it->CastIA()))) : (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
BndKind:Call, Type:(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Call(∂.CastIA(Scope(3)):i)):i?)):i), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Call(∂.CastIA(Scope(5)):i)):i?)):i), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastIA(Scope(7)):i)):i?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Call(∂.CastIA(Scope(9)):i)):i?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Call(∂.CastIA(Scope(11)):i)):i?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastIA(Scope(13)):i)):i?)))):(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})):(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*))
// (<ctx>, ∂.Opt:r8?**) : (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
Min_1(Arr<obj>, Opt<r8>):Opt<ia>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [1]
      1) pop
      9) ldc.r8 [0]
  Label [1]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [2]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [2]:
      1) ret
  Total Size: 63

Max_1(Arr<obj>, Opt<r8>):Opt<ia>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [1]
      1) pop
      9) ldc.r8 [0]
  Label [1]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [2]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [2]:
      1) ret
  Total Size: 63

MinMax_1(Arr<obj>, Opt<r8>):Opt<ia>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [1]
      1) pop
      9) ldc.r8 [0]
  Label [1]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [2]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [2]:
      1) ret
  Total Size: 63

MinC_1(Arr<obj>, Opt<r8>):Opt<ia>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [1]
      1) pop
      9) ldc.r8 [0]
  Label [1]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [2]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [2]:
      1) ret
  Total Size: 63

MaxC_1(Arr<obj>, Opt<r8>):Opt<ia>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [1]
      1) pop
      9) ldc.r8 [0]
  Label [1]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [2]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [2]:
      1) ret
  Total Size: 63

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<ia>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [1]
      1) pop
      9) ldc.r8 [0]
  Label [1]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [2]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [2]:
      1) ret
  Total Size: 63

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})
      5) newobj (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<ia>>, ExecCtx, i4):ia
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F0:ia
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<ia>>, ExecCtx, i4):ia
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F1:ia
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {ia,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {ia,ia}::_B0:u1
      1) stloc.0 [{ia,ia}]
      1) ldloc.0 [{ia,ia}]
      5) ldflda {ia,ia}::_F1:ia
      1) ldloc.0 [{ia,ia}]
      5) ldflda {ia,ia}::_F0:ia
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<ia>>, ExecCtx, i4, out ia, out ia):Void
      1) ldloc.0 [{ia,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F2:{ia,ia}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,ia}::_B0:u1
      1) stloc.1 [{i8,ia}]
      1) ldloc.1 [{i8,ia}]
      5) ldflda {i8,ia}::_F1:ia
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<ia>>, ExecCtx, i4, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia}::_F0:i8
      1) ldloc.1 [{i8,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F3:{i8,ia}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,ia}::_B0:u1
      1) stloc.1 [{i8,ia}]
      1) ldloc.1 [{i8,ia}]
      5) ldflda {i8,ia}::_F1:ia
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<ia>>, ExecCtx, i4, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia}::_F0:i8
      1) ldloc.1 [{i8,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F4:{i8,ia}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,ia,ia}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,ia,ia}::_B0:u1
      1) stloc.3 [{i8,ia,ia}]
      1) ldloc.3 [{i8,ia,ia}]
      5) ldflda {i8,ia,ia}::_F2:ia
      1) ldloc.3 [{i8,ia,ia}]
      5) ldflda {i8,ia,ia}::_F1:ia
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<ia>>, ExecCtx, i4, out ia, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,ia,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia,ia}::_F0:i8
      1) ldloc.3 [{i8,ia,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F5:{i8,ia,ia}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>):Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>):Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
Sequence: Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, Guard(?3: *2, CastIA(?3)))
    [1](49): Max(*2: *1x, Guard(?3: *2, CastIA(?3)))
    [2](49): MinMax(*2: *1x, Guard(?3: *2, CastIA(?3)))
    [3](49): MinC(*2: *1x, Guard(?3: *2, CastIA(?3)))
    [4](49): MaxC(*2: *1x, Guard(?3: *2, CastIA(?3)))
    [5](49): MinMaxC(*2: *1x, Guard(?3: *2, CastIA(?3)))
###
> Opt->Map((it->Min(it->CastI8()), it->Max(it->CastI8()), it->MinMax(it->CastI8()), it->MinC(it->CastI8()), it->MaxC(it->CastI8()), it->MinMaxC(it->CastI8())))
Opt->Map((it->Min(it->CastI8()), it->Max(it->CastI8()), it->MinMax(it->CastI8()), it->MinC(it->CastI8()), it->MaxC(it->CastI8()), it->MinMaxC(it->CastI8()))) : (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
BndKind:Call, Type:(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Call(∂.CastI8(Scope(3)):i8)):i8?)):i8), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Call(∂.CastI8(Scope(5)):i8)):i8?)):i8), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastI8(Scope(7)):i8)):i8?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Call(∂.CastI8(Scope(9)):i8)):i8?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Call(∂.CastI8(Scope(11)):i8)):i8?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastI8(Scope(13)):i8)):i8?)))):(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})):(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*))
// (<ctx>, ∂.Opt:r8?**) : (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
Min_1(Arr<obj>, Opt<r8>):Opt<i8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<i8>(i8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [1]:
      1) ret
  Total Size: 42

Max_1(Arr<obj>, Opt<r8>):Opt<i8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<i8>(i8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [1]:
      1) ret
  Total Size: 42

MinMax_1(Arr<obj>, Opt<r8>):Opt<i8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<i8>(i8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [1]:
      1) ret
  Total Size: 42

MinC_1(Arr<obj>, Opt<r8>):Opt<i8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<i8>(i8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [1]:
      1) ret
  Total Size: 42

MaxC_1(Arr<obj>, Opt<r8>):Opt<i8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<i8>(i8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [1]:
      1) ret
  Total Size: 42

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<i8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<i8>(i8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [1]:
      1) ret
  Total Size: 42

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})
      5) newobj (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i8>>, ExecCtx, i4):i8
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F0:i8
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i8>>, ExecCtx, i4):i8
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F1:i8
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F0:i8
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i8>>, ExecCtx, i4, out i8, out i8):Void
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F2:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i8>>, ExecCtx, i4, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.0 [{i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8}::_F0:i8
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F3:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i8>>, ExecCtx, i4, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.0 [{i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8}::_F0:i8
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F4:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i8,i8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i8,i8}::_B0:u1
      1) stloc.2 [{i8,i8,i8}]
      1) ldloc.2 [{i8,i8,i8}]
      5) ldflda {i8,i8,i8}::_F2:i8
      1) ldloc.2 [{i8,i8,i8}]
      5) ldflda {i8,i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i8>>, ExecCtx, i4, out i8, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.2 [{i8,i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8,i8}::_F0:i8
      1) ldloc.2 [{i8,i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F5:{i8,i8,i8}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>):Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>):Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
Sequence: Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, Guard(?3: *2, CastI8(?3)))
    [1](49): Max(*2: *1x, Guard(?3: *2, CastI8(?3)))
    [2](49): MinMax(*2: *1x, Guard(?3: *2, CastI8(?3)))
    [3](49): MinC(*2: *1x, Guard(?3: *2, CastI8(?3)))
    [4](49): MaxC(*2: *1x, Guard(?3: *2, CastI8(?3)))
    [5](49): MinMaxC(*2: *1x, Guard(?3: *2, CastI8(?3)))
###
> Opt->Map((it->Min(it->CastI4()), it->Max(it->CastI4()), it->MinMax(it->CastI4()), it->MinC(it->CastI4()), it->MaxC(it->CastI4()), it->MinMaxC(it->CastI4())))
Opt->Map((it->Min(it->CastI4()), it->Max(it->CastI4()), it->MinMax(it->CastI4()), it->MinC(it->CastI4()), it->MaxC(it->CastI4()), it->MinMaxC(it->CastI4()))) : (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
BndKind:Call, Type:(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Call(∂.CastI4(Scope(3)):i4)):i4?)):i4), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Call(∂.CastI4(Scope(5)):i4)):i4?)):i4), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastI4(Scope(7)):i4)):i4?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Call(∂.CastI4(Scope(9)):i4)):i4?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Call(∂.CastI4(Scope(11)):i4)):i4?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastI4(Scope(13)):i4)):i4?)))):(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})):(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*))
// (<ctx>, ∂.Opt:r8?**) : (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
Min_1(Arr<obj>, Opt<r8>):Opt<i4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      5) newobj Opt<i4>(i4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [1]:
      1) ret
  Total Size: 43

Max_1(Arr<obj>, Opt<r8>):Opt<i4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      5) newobj Opt<i4>(i4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [1]:
      1) ret
  Total Size: 43

MinMax_1(Arr<obj>, Opt<r8>):Opt<i4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      5) newobj Opt<i4>(i4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [1]:
      1) ret
  Total Size: 43

MinC_1(Arr<obj>, Opt<r8>):Opt<i4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      5) newobj Opt<i4>(i4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [1]:
      1) ret
  Total Size: 43

MaxC_1(Arr<obj>, Opt<r8>):Opt<i4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      5) newobj Opt<i4>(i4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [1]:
      1) ret
  Total Size: 43

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<i4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      5) newobj Opt<i4>(i4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [1]:
      1) ret
  Total Size: 43

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})
      5) newobj (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i4>>, ExecCtx, i4):i4
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F0:i4
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i4>>, ExecCtx, i4):i4
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F1:i4
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i4,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i4,i4}::_B0:u1
      1) stloc.0 [{i4,i4}]
      1) ldloc.0 [{i4,i4}]
      5) ldflda {i4,i4}::_F1:i4
      1) ldloc.0 [{i4,i4}]
      5) ldflda {i4,i4}::_F0:i4
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i4>>, ExecCtx, i4, out i4, out i4):Void
      1) ldloc.0 [{i4,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F2:{i4,i4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i4}::_B0:u1
      1) stloc.1 [{i8,i4}]
      1) ldloc.1 [{i8,i4}]
      5) ldflda {i8,i4}::_F1:i4
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i4>>, ExecCtx, i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4}::_F0:i8
      1) ldloc.1 [{i8,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F3:{i8,i4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i4}::_B0:u1
      1) stloc.1 [{i8,i4}]
      1) ldloc.1 [{i8,i4}]
      5) ldflda {i8,i4}::_F1:i4
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i4>>, ExecCtx, i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4}::_F0:i8
      1) ldloc.1 [{i8,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F4:{i8,i4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i4,i4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i4,i4}::_B0:u1
      1) stloc.3 [{i8,i4,i4}]
      1) ldloc.3 [{i8,i4,i4}]
      5) ldflda {i8,i4,i4}::_F2:i4
      1) ldloc.3 [{i8,i4,i4}]
      5) ldflda {i8,i4,i4}::_F1:i4
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i4>>, ExecCtx, i4, out i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i4,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4,i4}::_F0:i8
      1) ldloc.3 [{i8,i4,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F5:{i8,i4,i4}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>):Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>):Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
Sequence: Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, Guard(?3: *2, CastI4(?3)))
    [1](49): Max(*2: *1x, Guard(?3: *2, CastI4(?3)))
    [2](49): MinMax(*2: *1x, Guard(?3: *2, CastI4(?3)))
    [3](49): MinC(*2: *1x, Guard(?3: *2, CastI4(?3)))
    [4](49): MaxC(*2: *1x, Guard(?3: *2, CastI4(?3)))
    [5](49): MinMaxC(*2: *1x, Guard(?3: *2, CastI4(?3)))
###
> Opt->Map((it->Min(it->CastI2()), it->Max(it->CastI2()), it->MinMax(it->CastI2()), it->MinC(it->CastI2()), it->MaxC(it->CastI2()), it->MinMaxC(it->CastI2())))
Opt->Map((it->Min(it->CastI2()), it->Max(it->CastI2()), it->MinMax(it->CastI2()), it->MinC(it->CastI2()), it->MaxC(it->CastI2()), it->MinMaxC(it->CastI2()))) : (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
BndKind:Call, Type:(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Call(∂.CastI2(Scope(3)):i2)):i2?)):i2), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Call(∂.CastI2(Scope(5)):i2)):i2?)):i2), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastI2(Scope(7)):i2)):i2?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Call(∂.CastI2(Scope(9)):i2)):i2?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Call(∂.CastI2(Scope(11)):i2)):i2?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastI2(Scope(13)):i2)):i2?)))):(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})):(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*))
// (<ctx>, ∂.Opt:r8?**) : (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
Min_1(Arr<obj>, Opt<r8>):Opt<i2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      5) newobj Opt<i2>(i2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [1]:
      1) ret
  Total Size: 43

Max_1(Arr<obj>, Opt<r8>):Opt<i2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      5) newobj Opt<i2>(i2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [1]:
      1) ret
  Total Size: 43

MinMax_1(Arr<obj>, Opt<r8>):Opt<i2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      5) newobj Opt<i2>(i2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [1]:
      1) ret
  Total Size: 43

MinC_1(Arr<obj>, Opt<r8>):Opt<i2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      5) newobj Opt<i2>(i2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [1]:
      1) ret
  Total Size: 43

MaxC_1(Arr<obj>, Opt<r8>):Opt<i2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      5) newobj Opt<i2>(i2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [1]:
      1) ret
  Total Size: 43

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<i2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      5) newobj Opt<i2>(i2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [1]:
      1) ret
  Total Size: 43

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})
      5) newobj (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i2>>, ExecCtx, i4):i2
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F0:i2
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i2>>, ExecCtx, i4):i2
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F1:i2
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i2,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i2,i2}::_B0:u1
      1) stloc.0 [{i2,i2}]
      1) ldloc.0 [{i2,i2}]
      5) ldflda {i2,i2}::_F1:i2
      1) ldloc.0 [{i2,i2}]
      5) ldflda {i2,i2}::_F0:i2
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i2>>, ExecCtx, i4, out i2, out i2):Void
      1) ldloc.0 [{i2,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F2:{i2,i2}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i2}::_B0:u1
      1) stloc.1 [{i8,i2}]
      1) ldloc.1 [{i8,i2}]
      5) ldflda {i8,i2}::_F1:i2
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i2>>, ExecCtx, i4, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2}::_F0:i8
      1) ldloc.1 [{i8,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F3:{i8,i2}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i2}::_B0:u1
      1) stloc.1 [{i8,i2}]
      1) ldloc.1 [{i8,i2}]
      5) ldflda {i8,i2}::_F1:i2
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i2>>, ExecCtx, i4, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2}::_F0:i8
      1) ldloc.1 [{i8,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F4:{i8,i2}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i2,i2}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i2,i2}::_B0:u1
      1) stloc.3 [{i8,i2,i2}]
      1) ldloc.3 [{i8,i2,i2}]
      5) ldflda {i8,i2,i2}::_F2:i2
      1) ldloc.3 [{i8,i2,i2}]
      5) ldflda {i8,i2,i2}::_F1:i2
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i2>>, ExecCtx, i4, out i2, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i2,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2,i2}::_F0:i8
      1) ldloc.3 [{i8,i2,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F5:{i8,i2,i2}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>):Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>):Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
Sequence: Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, Guard(?3: *2, CastI2(?3)))
    [1](49): Max(*2: *1x, Guard(?3: *2, CastI2(?3)))
    [2](49): MinMax(*2: *1x, Guard(?3: *2, CastI2(?3)))
    [3](49): MinC(*2: *1x, Guard(?3: *2, CastI2(?3)))
    [4](49): MaxC(*2: *1x, Guard(?3: *2, CastI2(?3)))
    [5](49): MinMaxC(*2: *1x, Guard(?3: *2, CastI2(?3)))
###
> Opt->Map((it->Min(it->CastI1()), it->Max(it->CastI1()), it->MinMax(it->CastI1()), it->MinC(it->CastI1()), it->MaxC(it->CastI1()), it->MinMaxC(it->CastI1())))
Opt->Map((it->Min(it->CastI1()), it->Max(it->CastI1()), it->MinMax(it->CastI1()), it->MinC(it->CastI1()), it->MaxC(it->CastI1()), it->MinMaxC(it->CastI1()))) : (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
BndKind:Call, Type:(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Call(∂.CastI1(Scope(3)):i1)):i1?)):i1), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Call(∂.CastI1(Scope(5)):i1)):i1?)):i1), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastI1(Scope(7)):i1)):i1?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Call(∂.CastI1(Scope(9)):i1)):i1?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Call(∂.CastI1(Scope(11)):i1)):i1?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastI1(Scope(13)):i1)):i1?)))):(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})):(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*))
// (<ctx>, ∂.Opt:r8?**) : (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
Min_1(Arr<obj>, Opt<r8>):Opt<i1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      5) newobj Opt<i1>(i1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [1]:
      1) ret
  Total Size: 43

Max_1(Arr<obj>, Opt<r8>):Opt<i1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      5) newobj Opt<i1>(i1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [1]:
      1) ret
  Total Size: 43

MinMax_1(Arr<obj>, Opt<r8>):Opt<i1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      5) newobj Opt<i1>(i1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [1]:
      1) ret
  Total Size: 43

MinC_1(Arr<obj>, Opt<r8>):Opt<i1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      5) newobj Opt<i1>(i1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [1]:
      1) ret
  Total Size: 43

MaxC_1(Arr<obj>, Opt<r8>):Opt<i1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      5) newobj Opt<i1>(i1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [1]:
      1) ret
  Total Size: 43

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<i1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      5) newobj Opt<i1>(i1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [1]:
      1) ret
  Total Size: 43

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})
      5) newobj (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i1>>, ExecCtx, i4):i1
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F0:i1
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i1>>, ExecCtx, i4):i1
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F1:i1
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i1,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i1,i1}::_B0:u1
      1) stloc.0 [{i1,i1}]
      1) ldloc.0 [{i1,i1}]
      5) ldflda {i1,i1}::_F1:i1
      1) ldloc.0 [{i1,i1}]
      5) ldflda {i1,i1}::_F0:i1
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i1>>, ExecCtx, i4, out i1, out i1):Void
      1) ldloc.0 [{i1,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F2:{i1,i1}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i1}::_B0:u1
      1) stloc.1 [{i8,i1}]
      1) ldloc.1 [{i8,i1}]
      5) ldflda {i8,i1}::_F1:i1
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i1>>, ExecCtx, i4, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1}::_F0:i8
      1) ldloc.1 [{i8,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F3:{i8,i1}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i1}::_B0:u1
      1) stloc.1 [{i8,i1}]
      1) ldloc.1 [{i8,i1}]
      5) ldflda {i8,i1}::_F1:i1
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i1>>, ExecCtx, i4, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1}::_F0:i8
      1) ldloc.1 [{i8,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F4:{i8,i1}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i1,i1}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i1,i1}::_B0:u1
      1) stloc.3 [{i8,i1,i1}]
      1) ldloc.3 [{i8,i1,i1}]
      5) ldflda {i8,i1,i1}::_F2:i1
      1) ldloc.3 [{i8,i1,i1}]
      5) ldflda {i8,i1,i1}::_F1:i1
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i1>>, ExecCtx, i4, out i1, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i1,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1,i1}::_F0:i8
      1) ldloc.3 [{i8,i1,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F5:{i8,i1,i1}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>):Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>):Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
Sequence: Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 7, Min: -1 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 8, Min: -1 }, { Count: 8, Max: 3 }, { Count: 8, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 9, Min: -1 }, { Count: 9, Max: 3 }, { Count: 9, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, Guard(?3: *2, CastI1(?3)))
    [1](49): Max(*2: *1x, Guard(?3: *2, CastI1(?3)))
    [2](49): MinMax(*2: *1x, Guard(?3: *2, CastI1(?3)))
    [3](49): MinC(*2: *1x, Guard(?3: *2, CastI1(?3)))
    [4](49): MaxC(*2: *1x, Guard(?3: *2, CastI1(?3)))
    [5](49): MinMaxC(*2: *1x, Guard(?3: *2, CastI1(?3)))
###
> Opt->Map((it->Min(it->CastU8()), it->Max(it->CastU8()), it->MinMax(it->CastU8()), it->MinC(it->CastU8()), it->MaxC(it->CastU8()), it->MinMaxC(it->CastU8())))
Opt->Map((it->Min(it->CastU8()), it->Max(it->CastU8()), it->MinMax(it->CastU8()), it->MinC(it->CastU8()), it->MaxC(it->CastU8()), it->MinMaxC(it->CastU8()))) : (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
BndKind:Call, Type:(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Call(∂.CastU8(Scope(3)):u8)):u8?)):u8), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Call(∂.CastU8(Scope(5)):u8)):u8?)):u8), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastU8(Scope(7)):u8)):u8?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Call(∂.CastU8(Scope(9)):u8)):u8?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Call(∂.CastU8(Scope(11)):u8)):u8?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastU8(Scope(13)):u8)):u8?)))):(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})):(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*))
// (<ctx>, ∂.Opt:r8?**) : (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
Min_1(Arr<obj>, Opt<r8>):Opt<u8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<u8>(u8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [1]:
      1) ret
  Total Size: 42

Max_1(Arr<obj>, Opt<r8>):Opt<u8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<u8>(u8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [1]:
      1) ret
  Total Size: 42

MinMax_1(Arr<obj>, Opt<r8>):Opt<u8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<u8>(u8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [1]:
      1) ret
  Total Size: 42

MinC_1(Arr<obj>, Opt<r8>):Opt<u8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<u8>(u8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [1]:
      1) ret
  Total Size: 42

MaxC_1(Arr<obj>, Opt<r8>):Opt<u8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<u8>(u8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [1]:
      1) ret
  Total Size: 42

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<u8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<u8>(u8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [1]:
      1) ret
  Total Size: 42

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})
      5) newobj (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u8>>, ExecCtx, i4):u8
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F0:u8
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u8>>, ExecCtx, i4):u8
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F1:u8
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {u8,u8}::_B0:u1
      1) stloc.0 [{u8,u8}]
      1) ldloc.0 [{u8,u8}]
      5) ldflda {u8,u8}::_F1:u8
      1) ldloc.0 [{u8,u8}]
      5) ldflda {u8,u8}::_F0:u8
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u8>>, ExecCtx, i4, out u8, out u8):Void
      1) ldloc.0 [{u8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F2:{u8,u8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u8}::_B0:u1
      1) stloc.1 [{i8,u8}]
      1) ldloc.1 [{i8,u8}]
      5) ldflda {i8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u8>>, ExecCtx, i4, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8}::_F0:i8
      1) ldloc.1 [{i8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F3:{i8,u8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u8}::_B0:u1
      1) stloc.1 [{i8,u8}]
      1) ldloc.1 [{i8,u8}]
      5) ldflda {i8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u8>>, ExecCtx, i4, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8}::_F0:i8
      1) ldloc.1 [{i8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F4:{i8,u8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u8,u8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u8,u8}::_B0:u1
      1) stloc.3 [{i8,u8,u8}]
      1) ldloc.3 [{i8,u8,u8}]
      5) ldflda {i8,u8,u8}::_F2:u8
      1) ldloc.3 [{i8,u8,u8}]
      5) ldflda {i8,u8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u8>>, ExecCtx, i4, out u8, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8,u8}::_F0:i8
      1) ldloc.3 [{i8,u8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F5:{i8,u8,u8}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>):Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>):Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
Sequence: Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
 0) (2, 18446744073709551615, { Max: 18446744073709551615, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 18446744073709551615 }, { Count: 6, Max: 18446744073709551615, Min: 2 })
 1) (0, 18446744073709551615, { Max: 18446744073709551615, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 18446744073709551615 }, { Count: 7, Max: 18446744073709551615, Min: 0 })
 2) (0, 18446744073709551615, { Max: 18446744073709551615, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 18446744073709551615 }, { Count: 8, Max: 18446744073709551615, Min: 0 })
 3) (0, 18446744073709551615, { Max: 18446744073709551615, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 18446744073709551615 }, { Count: 9, Max: 18446744073709551615, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (2, 18446744073709551615, { Max: 18446744073709551615, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 18446744073709551615 }, { Count: 6, Max: 18446744073709551615, Min: 2 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, Guard(?3: *2, CastU8(?3)))
    [1](49): Max(*2: *1x, Guard(?3: *2, CastU8(?3)))
    [2](49): MinMax(*2: *1x, Guard(?3: *2, CastU8(?3)))
    [3](49): MinC(*2: *1x, Guard(?3: *2, CastU8(?3)))
    [4](49): MaxC(*2: *1x, Guard(?3: *2, CastU8(?3)))
    [5](49): MinMaxC(*2: *1x, Guard(?3: *2, CastU8(?3)))
###
> Opt->Map((it->Min(it->CastU4()), it->Max(it->CastU4()), it->MinMax(it->CastU4()), it->MinC(it->CastU4()), it->MaxC(it->CastU4()), it->MinMaxC(it->CastU4())))
Opt->Map((it->Min(it->CastU4()), it->Max(it->CastU4()), it->MinMax(it->CastU4()), it->MinC(it->CastU4()), it->MaxC(it->CastU4()), it->MinMaxC(it->CastU4()))) : (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
BndKind:Call, Type:(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Call(∂.CastU4(Scope(3)):u4)):u4?)):u4), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Call(∂.CastU4(Scope(5)):u4)):u4?)):u4), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastU4(Scope(7)):u4)):u4?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Call(∂.CastU4(Scope(9)):u4)):u4?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Call(∂.CastU4(Scope(11)):u4)):u4?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastU4(Scope(13)):u4)):u4?)))):(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})):(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*))
// (<ctx>, ∂.Opt:r8?**) : (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
Min_1(Arr<obj>, Opt<r8>):Opt<u4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      5) newobj Opt<u4>(u4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [1]:
      1) ret
  Total Size: 43

Max_1(Arr<obj>, Opt<r8>):Opt<u4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      5) newobj Opt<u4>(u4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [1]:
      1) ret
  Total Size: 43

MinMax_1(Arr<obj>, Opt<r8>):Opt<u4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      5) newobj Opt<u4>(u4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [1]:
      1) ret
  Total Size: 43

MinC_1(Arr<obj>, Opt<r8>):Opt<u4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      5) newobj Opt<u4>(u4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [1]:
      1) ret
  Total Size: 43

MaxC_1(Arr<obj>, Opt<r8>):Opt<u4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      5) newobj Opt<u4>(u4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [1]:
      1) ret
  Total Size: 43

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<u4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      5) newobj Opt<u4>(u4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [1]:
      1) ret
  Total Size: 43

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})
      5) newobj (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u4>>, ExecCtx, i4):u4
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F0:u4
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u4>>, ExecCtx, i4):u4
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F1:u4
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u4,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {u4,u4}::_B0:u1
      1) stloc.0 [{u4,u4}]
      1) ldloc.0 [{u4,u4}]
      5) ldflda {u4,u4}::_F1:u4
      1) ldloc.0 [{u4,u4}]
      5) ldflda {u4,u4}::_F0:u4
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u4>>, ExecCtx, i4, out u4, out u4):Void
      1) ldloc.0 [{u4,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F2:{u4,u4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u4}::_B0:u1
      1) stloc.1 [{i8,u4}]
      1) ldloc.1 [{i8,u4}]
      5) ldflda {i8,u4}::_F1:u4
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u4>>, ExecCtx, i4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4}::_F0:i8
      1) ldloc.1 [{i8,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F3:{i8,u4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u4}::_B0:u1
      1) stloc.1 [{i8,u4}]
      1) ldloc.1 [{i8,u4}]
      5) ldflda {i8,u4}::_F1:u4
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u4>>, ExecCtx, i4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4}::_F0:i8
      1) ldloc.1 [{i8,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F4:{i8,u4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u4,u4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u4,u4}::_B0:u1
      1) stloc.3 [{i8,u4,u4}]
      1) ldloc.3 [{i8,u4,u4}]
      5) ldflda {i8,u4,u4}::_F2:u4
      1) ldloc.3 [{i8,u4,u4}]
      5) ldflda {i8,u4,u4}::_F1:u4
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u4>>, ExecCtx, i4, out u4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u4,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4,u4}::_F0:i8
      1) ldloc.3 [{i8,u4,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F5:{i8,u4,u4}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>):Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>):Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
Sequence: Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
 0) (2, 4294967295, { Max: 4294967295, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 4294967295 }, { Count: 6, Max: 4294967295, Min: 2 })
 1) (0, 4294967295, { Max: 4294967295, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 4294967295 }, { Count: 7, Max: 4294967295, Min: 0 })
 2) (0, 4294967295, { Max: 4294967295, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 4294967295 }, { Count: 8, Max: 4294967295, Min: 0 })
 3) (0, 4294967295, { Max: 4294967295, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 4294967295 }, { Count: 9, Max: 4294967295, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (2, 4294967295, { Max: 4294967295, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 4294967295 }, { Count: 6, Max: 4294967295, Min: 2 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, Guard(?3: *2, CastU4(?3)))
    [1](49): Max(*2: *1x, Guard(?3: *2, CastU4(?3)))
    [2](49): MinMax(*2: *1x, Guard(?3: *2, CastU4(?3)))
    [3](49): MinC(*2: *1x, Guard(?3: *2, CastU4(?3)))
    [4](49): MaxC(*2: *1x, Guard(?3: *2, CastU4(?3)))
    [5](49): MinMaxC(*2: *1x, Guard(?3: *2, CastU4(?3)))
###
> Opt->Map((it->Min(it->CastU2()), it->Max(it->CastU2()), it->MinMax(it->CastU2()), it->MinC(it->CastU2()), it->MaxC(it->CastU2()), it->MinMaxC(it->CastU2())))
Opt->Map((it->Min(it->CastU2()), it->Max(it->CastU2()), it->MinMax(it->CastU2()), it->MinC(it->CastU2()), it->MaxC(it->CastU2()), it->MinMaxC(it->CastU2()))) : (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
BndKind:Call, Type:(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Call(∂.CastU2(Scope(3)):u2)):u2?)):u2), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Call(∂.CastU2(Scope(5)):u2)):u2?)):u2), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastU2(Scope(7)):u2)):u2?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Call(∂.CastU2(Scope(9)):u2)):u2?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Call(∂.CastU2(Scope(11)):u2)):u2?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastU2(Scope(13)):u2)):u2?)))):(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})):(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*))
// (<ctx>, ∂.Opt:r8?**) : (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
Min_1(Arr<obj>, Opt<r8>):Opt<u2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      5) newobj Opt<u2>(u2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [1]:
      1) ret
  Total Size: 43

Max_1(Arr<obj>, Opt<r8>):Opt<u2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      5) newobj Opt<u2>(u2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [1]:
      1) ret
  Total Size: 43

MinMax_1(Arr<obj>, Opt<r8>):Opt<u2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      5) newobj Opt<u2>(u2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [1]:
      1) ret
  Total Size: 43

MinC_1(Arr<obj>, Opt<r8>):Opt<u2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      5) newobj Opt<u2>(u2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [1]:
      1) ret
  Total Size: 43

MaxC_1(Arr<obj>, Opt<r8>):Opt<u2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      5) newobj Opt<u2>(u2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [1]:
      1) ret
  Total Size: 43

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<u2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      5) newobj Opt<u2>(u2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [1]:
      1) ret
  Total Size: 43

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})
      5) newobj (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u2>>, ExecCtx, i4):u2
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F0:u2
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u2>>, ExecCtx, i4):u2
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F1:u2
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u2,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {u2,u2}::_B0:u1
      1) stloc.0 [{u2,u2}]
      1) ldloc.0 [{u2,u2}]
      5) ldflda {u2,u2}::_F1:u2
      1) ldloc.0 [{u2,u2}]
      5) ldflda {u2,u2}::_F0:u2
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u2>>, ExecCtx, i4, out u2, out u2):Void
      1) ldloc.0 [{u2,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F2:{u2,u2}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u2}::_B0:u1
      1) stloc.1 [{i8,u2}]
      1) ldloc.1 [{i8,u2}]
      5) ldflda {i8,u2}::_F1:u2
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u2>>, ExecCtx, i4, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2}::_F0:i8
      1) ldloc.1 [{i8,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F3:{i8,u2}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u2}::_B0:u1
      1) stloc.1 [{i8,u2}]
      1) ldloc.1 [{i8,u2}]
      5) ldflda {i8,u2}::_F1:u2
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u2>>, ExecCtx, i4, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2}::_F0:i8
      1) ldloc.1 [{i8,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F4:{i8,u2}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u2,u2}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u2,u2}::_B0:u1
      1) stloc.3 [{i8,u2,u2}]
      1) ldloc.3 [{i8,u2,u2}]
      5) ldflda {i8,u2,u2}::_F2:u2
      1) ldloc.3 [{i8,u2,u2}]
      5) ldflda {i8,u2,u2}::_F1:u2
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u2>>, ExecCtx, i4, out u2, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u2,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2,u2}::_F0:i8
      1) ldloc.3 [{i8,u2,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F5:{i8,u2,u2}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>):Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>):Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
Sequence: Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
 0) (2, 65535, { Max: 65535, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 65535 }, { Count: 6, Max: 65535, Min: 2 })
 1) (0, 65535, { Max: 65535, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 65535 }, { Count: 7, Max: 65535, Min: 0 })
 2) (0, 65535, { Max: 65535, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 65535 }, { Count: 8, Max: 65535, Min: 0 })
 3) (0, 65535, { Max: 65535, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 65535 }, { Count: 9, Max: 65535, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (2, 65535, { Max: 65535, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 65535 }, { Count: 6, Max: 65535, Min: 2 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, Guard(?3: *2, CastU2(?3)))
    [1](49): Max(*2: *1x, Guard(?3: *2, CastU2(?3)))
    [2](49): MinMax(*2: *1x, Guard(?3: *2, CastU2(?3)))
    [3](49): MinC(*2: *1x, Guard(?3: *2, CastU2(?3)))
    [4](49): MaxC(*2: *1x, Guard(?3: *2, CastU2(?3)))
    [5](49): MinMaxC(*2: *1x, Guard(?3: *2, CastU2(?3)))
###
> Opt->Map((it->Min(it->CastU1()), it->Max(it->CastU1()), it->MinMax(it->CastU1()), it->MinC(it->CastU1()), it->MaxC(it->CastU1()), it->MinMaxC(it->CastU1())))
Opt->Map((it->Min(it->CastU1()), it->Max(it->CastU1()), it->MinMax(it->CastU1()), it->MinC(it->CastU1()), it->MaxC(it->CastU1()), it->MinMaxC(it->CastU1()))) : (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
BndKind:Call, Type:(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Call(∂.CastU1(Scope(3)):u1)):u1?)):u1), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Call(∂.CastU1(Scope(5)):u1)):u1?)):u1), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastU1(Scope(7)):u1)):u1?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Call(∂.CastU1(Scope(9)):u1)):u1?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Call(∂.CastU1(Scope(11)):u1)):u1?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastU1(Scope(13)):u1)):u1?)))):(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})):(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*))
// (<ctx>, ∂.Opt:r8?**) : (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
Min_1(Arr<obj>, Opt<r8>):Opt<u1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      5) newobj Opt<u1>(u1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [1]:
      1) ret
  Total Size: 43

Max_1(Arr<obj>, Opt<r8>):Opt<u1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      5) newobj Opt<u1>(u1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [1]:
      1) ret
  Total Size: 43

MinMax_1(Arr<obj>, Opt<r8>):Opt<u1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      5) newobj Opt<u1>(u1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [1]:
      1) ret
  Total Size: 43

MinC_1(Arr<obj>, Opt<r8>):Opt<u1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      5) newobj Opt<u1>(u1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [1]:
      1) ret
  Total Size: 43

MaxC_1(Arr<obj>, Opt<r8>):Opt<u1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      5) newobj Opt<u1>(u1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [1]:
      1) ret
  Total Size: 43

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<u1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      5) newobj Opt<u1>(u1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [1]:
      1) ret
  Total Size: 43

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})
      5) newobj (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u1>>, ExecCtx, i4):u1
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F0:u1
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u1>>, ExecCtx, i4):u1
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F1:u1
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u1,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {u1,u1}::_B0:u1
      1) stloc.0 [{u1,u1}]
      1) ldloc.0 [{u1,u1}]
      5) ldflda {u1,u1}::_F1:u1
      1) ldloc.0 [{u1,u1}]
      5) ldflda {u1,u1}::_F0:u1
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u1>>, ExecCtx, i4, out u1, out u1):Void
      1) ldloc.0 [{u1,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F2:{u1,u1}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u1}::_B0:u1
      1) stloc.1 [{i8,u1}]
      1) ldloc.1 [{i8,u1}]
      5) ldflda {i8,u1}::_F1:u1
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u1>>, ExecCtx, i4, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1}::_F0:i8
      1) ldloc.1 [{i8,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F3:{i8,u1}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u1}::_B0:u1
      1) stloc.1 [{i8,u1}]
      1) ldloc.1 [{i8,u1}]
      5) ldflda {i8,u1}::_F1:u1
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u1>>, ExecCtx, i4, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1}::_F0:i8
      1) ldloc.1 [{i8,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F4:{i8,u1}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u1,u1}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u1,u1}::_B0:u1
      1) stloc.3 [{i8,u1,u1}]
      1) ldloc.3 [{i8,u1,u1}]
      5) ldflda {i8,u1,u1}::_F2:u1
      1) ldloc.3 [{i8,u1,u1}]
      5) ldflda {i8,u1,u1}::_F1:u1
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u1>>, ExecCtx, i4, out u1, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u1,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1,u1}::_F0:i8
      1) ldloc.3 [{i8,u1,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F5:{i8,u1,u1}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>):Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>):Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
Sequence: Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
 0) (2, 255, { Max: 255, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 255 }, { Count: 6, Max: 255, Min: 2 })
 1) (0, 255, { Max: 255, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 255 }, { Count: 7, Max: 255, Min: 0 })
 2) (0, 255, { Max: 255, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 255 }, { Count: 8, Max: 255, Min: 0 })
 3) (0, 255, { Max: 255, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 255 }, { Count: 9, Max: 255, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (2, 255, { Max: 255, Min: 2 }, { Count: 6, Min: 2 }, { Count: 6, Max: 255 }, { Count: 6, Max: 255, Min: 2 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, Guard(?3: *2, CastU1(?3)))
    [1](49): Max(*2: *1x, Guard(?3: *2, CastU1(?3)))
    [2](49): MinMax(*2: *1x, Guard(?3: *2, CastU1(?3)))
    [3](49): MinC(*2: *1x, Guard(?3: *2, CastU1(?3)))
    [4](49): MaxC(*2: *1x, Guard(?3: *2, CastU1(?3)))
    [5](49): MinMaxC(*2: *1x, Guard(?3: *2, CastU1(?3)))
###
> OB->Map((it->Min(!it), it->Max(!it), it->MinMax(!it), it->MinC(!it), it->MaxC(!it), it->MinMaxC(!it)))
OB->Map((it->Min(!it), it->Max(!it), it->MinMax(!it), it->MinC(!it), it->MaxC(!it), it->MinMaxC(!it))) : (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
BndKind:Call, Type:(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*, Bnd:(Call(∂.ForEach([map:1] Global(OB), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Xor(Scope(3), true:b)):b?)):b), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Xor(Scope(5), true:b)):b?)):b), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Xor(Scope(7), true:b)):b?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Xor(Scope(9), true:b)):b?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Xor(Scope(11), true:b)):b?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Xor(Scope(13), true:b)):b?)))):(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})):(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*))
// (<ctx>, ∂.OB:b?**) : (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
Min_1(Arr<obj>, Opt<bool>):Opt<bool>
      2) ldarga.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) stloc.0 [bool]
      1) ldloc.0 [bool]
      1) ldc.i4.0
      2) ceq
      5) newobj Opt<bool>(bool)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<bool>
  Label [1]:
      1) ret
  Total Size: 40

Max_1(Arr<obj>, Opt<bool>):Opt<bool>
      2) ldarga.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) stloc.0 [bool]
      1) ldloc.0 [bool]
      1) ldc.i4.0
      2) ceq
      5) newobj Opt<bool>(bool)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<bool>
  Label [1]:
      1) ret
  Total Size: 40

MinMax_1(Arr<obj>, Opt<bool>):Opt<bool>
      2) ldarga.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) stloc.0 [bool]
      1) ldloc.0 [bool]
      1) ldc.i4.0
      2) ceq
      5) newobj Opt<bool>(bool)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<bool>
  Label [1]:
      1) ret
  Total Size: 40

MinC_1(Arr<obj>, Opt<bool>):Opt<bool>
      2) ldarga.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) stloc.0 [bool]
      1) ldloc.0 [bool]
      1) ldc.i4.0
      2) ceq
      5) newobj Opt<bool>(bool)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<bool>
  Label [1]:
      1) ret
  Total Size: 40

MaxC_1(Arr<obj>, Opt<bool>):Opt<bool>
      2) ldarga.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) stloc.0 [bool]
      1) ldloc.0 [bool]
      1) ldc.i4.0
      2) ceq
      5) newobj Opt<bool>(bool)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<bool>
  Label [1]:
      1) ret
  Total Size: 40

MinMaxC_1(Arr<obj>, Opt<bool>):Opt<bool>
      2) ldarga.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) stloc.0 [bool]
      1) ldloc.0 [bool]
      1) ldc.i4.0
      2) ceq
      5) newobj Opt<bool>(bool)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<bool>
  Label [1]:
      1) ret
  Total Size: 40

ForEach_1(Arr<obj>, Seq<Opt<bool>>):(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})
      5) newobj (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})()
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<bool>,Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<bool>>, Func<Opt<bool>,Opt<bool>>, ExecCtx, i4):bool
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F0:bool
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<bool>,Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<bool>>, Func<Opt<bool>,Opt<bool>>, ExecCtx, i4):bool
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F1:bool
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<bool>,Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {bool,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {bool,bool}::_B0:u1
      1) stloc.0 [{bool,bool}]
      1) ldloc.0 [{bool,bool}]
      5) ldflda {bool,bool}::_F1:bool
      1) ldloc.0 [{bool,bool}]
      5) ldflda {bool,bool}::_F0:bool
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<bool>>, Func<Opt<bool>,Opt<bool>>, ExecCtx, i4, out bool, out bool):Void
      1) ldloc.0 [{bool,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F2:{bool,bool}
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<bool>,Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,bool}::_B0:u1
      1) stloc.1 [{i8,bool}]
      1) ldloc.1 [{i8,bool}]
      5) ldflda {i8,bool}::_F1:bool
      5) call static MinMaxGen::ExecMinC(Seq<Opt<bool>>, Func<Opt<bool>,Opt<bool>>, ExecCtx, i4, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool}::_F0:i8
      1) ldloc.1 [{i8,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F3:{i8,bool}
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<bool>,Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,bool}::_B0:u1
      1) stloc.1 [{i8,bool}]
      1) ldloc.1 [{i8,bool}]
      5) ldflda {i8,bool}::_F1:bool
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<bool>>, Func<Opt<bool>,Opt<bool>>, ExecCtx, i4, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool}::_F0:i8
      1) ldloc.1 [{i8,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F4:{i8,bool}
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<bool>,Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,bool,bool}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,bool,bool}::_B0:u1
      1) stloc.3 [{i8,bool,bool}]
      1) ldloc.3 [{i8,bool,bool}]
      5) ldflda {i8,bool,bool}::_F2:bool
      1) ldloc.3 [{i8,bool,bool}]
      5) ldflda {i8,bool,bool}::_F1:bool
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<bool>>, Func<Opt<bool>,Opt<bool>>, ExecCtx, i4, out bool, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,bool,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool,bool}::_F0:i8
      1) ldloc.3 [{i8,bool,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F5:{i8,bool,bool}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<bool>>>
      1) stloc.1 [Seq<Seq<Opt<bool>>>]
      1) ldloc.1 [Seq<Seq<Opt<bool>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<bool>>,(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<bool>>>, Func<Seq<Opt<bool>>,(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>):Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>):Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, OB:b?**) to (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
Sequence: Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
 0) (false, false, { Max: false, Min: false }, { Count: 6, Min: false }, { Count: 6, Max: false }, { Count: 6, Max: false, Min: false })
 1) (true , true , { Max: true , Min: true  }, { Count: 6, Min: true  }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: true  })
 2) (false, true , { Max: true , Min: false }, { Count: 6, Min: false }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: false })
 3) (false, true , { Max: true , Min: false }, { Count: 6, Min: false }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: false })
 4) (false, false, { Max: false, Min: false }, { Count: 0, Min: false }, { Count: 0, Max: false }, { Count: 0, Max: false, Min: false })
 5) (false, false, { Max: false, Min: false }, { Count: 0, Min: false }, { Count: 0, Max: false }, { Count: 0, Max: false, Min: false })
 6) (false, false, { Max: false, Min: false }, { Count: 0, Min: false }, { Count: 0, Max: false }, { Count: 0, Max: false, Min: false })
*** Ctx ping count: 170
    [0](18): Min(*2: *1x, Guard(?3: *2, Xor(?3, true)))
    [1](18): Max(*2: *1x, Guard(?3: *2, Xor(?3, true)))
    [2](29): MinMax(*2: *1x, Guard(?3: *2, Xor(?3, true)))
    [3](35): MinC(*2: *1x, Guard(?3: *2, Xor(?3, true)))
    [4](35): MaxC(*2: *1x, Guard(?3: *2, Xor(?3, true)))
    [5](35): MinMaxC(*2: *1x, Guard(?3: *2, Xor(?3, true)))
###
> Opt->Map((it->Min(it->ToIA()), it->Max(it->ToIA()), it->MinMax(it->ToIA()), it->MinC(it->ToIA()), it->MaxC(it->ToIA()), it->MinMaxC(it->ToIA())))
Opt->Map((it->Min(it->ToIA()), it->Max(it->ToIA()), it->MinMax(it->ToIA()), it->MinC(it->ToIA()), it->MaxC(it->ToIA()), it->MinMaxC(it->ToIA()))) : (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
BndKind:Call, Type:(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Call(∂.ToIA(Scope(3)):i?)):i?)):i), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Call(∂.ToIA(Scope(5)):i?)):i?)):i), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.ToIA(Scope(7)):i?)):i?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Call(∂.ToIA(Scope(9)):i?)):i?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Call(∂.ToIA(Scope(11)):i?)):i?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.ToIA(Scope(13)):i?)):i?)))):(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})):(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*))
// (<ctx>, ∂.Opt:r8?**) : (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
Min_1(Arr<obj>, Opt<r8>):Opt<ia>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [1]
      1) pop
      5) br [2]
  Label [1]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [3]
  Label [2]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [3]:
      5) br [4]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [4]:
      1) ret
  Total Size: 69

Max_1(Arr<obj>, Opt<r8>):Opt<ia>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [1]
      1) pop
      5) br [2]
  Label [1]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [3]
  Label [2]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [3]:
      5) br [4]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [4]:
      1) ret
  Total Size: 69

MinMax_1(Arr<obj>, Opt<r8>):Opt<ia>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [1]
      1) pop
      5) br [2]
  Label [1]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [3]
  Label [2]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [3]:
      5) br [4]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [4]:
      1) ret
  Total Size: 69

MinC_1(Arr<obj>, Opt<r8>):Opt<ia>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [1]
      1) pop
      5) br [2]
  Label [1]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [3]
  Label [2]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [3]:
      5) br [4]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [4]:
      1) ret
  Total Size: 69

MaxC_1(Arr<obj>, Opt<r8>):Opt<ia>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [1]
      1) pop
      5) br [2]
  Label [1]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [3]
  Label [2]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [3]:
      5) br [4]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [4]:
      1) ret
  Total Size: 69

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<ia>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [1]
      1) pop
      5) br [2]
  Label [1]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [3]
  Label [2]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [3]:
      5) br [4]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [4]:
      1) ret
  Total Size: 69

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})
      5) newobj (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<ia>>, ExecCtx, i4):ia
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F0:ia
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<ia>>, ExecCtx, i4):ia
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F1:ia
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {ia,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {ia,ia}::_B0:u1
      1) stloc.0 [{ia,ia}]
      1) ldloc.0 [{ia,ia}]
      5) ldflda {ia,ia}::_F1:ia
      1) ldloc.0 [{ia,ia}]
      5) ldflda {ia,ia}::_F0:ia
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<ia>>, ExecCtx, i4, out ia, out ia):Void
      1) ldloc.0 [{ia,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F2:{ia,ia}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,ia}::_B0:u1
      1) stloc.1 [{i8,ia}]
      1) ldloc.1 [{i8,ia}]
      5) ldflda {i8,ia}::_F1:ia
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<ia>>, ExecCtx, i4, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia}::_F0:i8
      1) ldloc.1 [{i8,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F3:{i8,ia}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,ia}::_B0:u1
      1) stloc.1 [{i8,ia}]
      1) ldloc.1 [{i8,ia}]
      5) ldflda {i8,ia}::_F1:ia
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<ia>>, ExecCtx, i4, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia}::_F0:i8
      1) ldloc.1 [{i8,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F4:{i8,ia}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,ia,ia}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,ia,ia}::_B0:u1
      1) stloc.3 [{i8,ia,ia}]
      1) ldloc.3 [{i8,ia,ia}]
      5) ldflda {i8,ia,ia}::_F2:ia
      1) ldloc.3 [{i8,ia,ia}]
      5) ldflda {i8,ia,ia}::_F1:ia
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<ia>>, ExecCtx, i4, out ia, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,ia,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia,ia}::_F0:i8
      1) ldloc.3 [{i8,ia,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F5:{i8,ia,ia}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>):Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>):Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
Sequence: Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, Guard(?3: *2, ToIA(?3)))
    [1](49): Max(*2: *1x, Guard(?3: *2, ToIA(?3)))
    [2](49): MinMax(*2: *1x, Guard(?3: *2, ToIA(?3)))
    [3](49): MinC(*2: *1x, Guard(?3: *2, ToIA(?3)))
    [4](49): MaxC(*2: *1x, Guard(?3: *2, ToIA(?3)))
    [5](49): MinMaxC(*2: *1x, Guard(?3: *2, ToIA(?3)))
###
> Opt->Map((it->Min(it->ToI8()), it->Max(it->ToI8()), it->MinMax(it->ToI8()), it->MinC(it->ToI8()), it->MaxC(it->ToI8()), it->MinMaxC(it->ToI8())))
Opt->Map((it->Min(it->ToI8()), it->Max(it->ToI8()), it->MinMax(it->ToI8()), it->MinC(it->ToI8()), it->MaxC(it->ToI8()), it->MinMaxC(it->ToI8()))) : (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
BndKind:Call, Type:(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Call(∂.ToI8(Scope(3)):i8?)):i8?)):i8), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Call(∂.ToI8(Scope(5)):i8?)):i8?)):i8), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.ToI8(Scope(7)):i8?)):i8?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Call(∂.ToI8(Scope(9)):i8?)):i8?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Call(∂.ToI8(Scope(11)):i8?)):i8?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.ToI8(Scope(13)):i8?)):i8?)))):(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})):(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*))
// (<ctx>, ∂.Opt:r8?**) : (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
Min_1(Arr<obj>, Opt<r8>):Opt<i8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      5) newobj Opt<i8>(i8)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [3]:
      1) ret
  Total Size: 60

Max_1(Arr<obj>, Opt<r8>):Opt<i8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      5) newobj Opt<i8>(i8)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [3]:
      1) ret
  Total Size: 60

MinMax_1(Arr<obj>, Opt<r8>):Opt<i8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      5) newobj Opt<i8>(i8)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [3]:
      1) ret
  Total Size: 60

MinC_1(Arr<obj>, Opt<r8>):Opt<i8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      5) newobj Opt<i8>(i8)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [3]:
      1) ret
  Total Size: 60

MaxC_1(Arr<obj>, Opt<r8>):Opt<i8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      5) newobj Opt<i8>(i8)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [3]:
      1) ret
  Total Size: 60

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<i8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      5) newobj Opt<i8>(i8)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [3]:
      1) ret
  Total Size: 60

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})
      5) newobj (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i8>>, ExecCtx, i4):i8
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F0:i8
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i8>>, ExecCtx, i4):i8
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F1:i8
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F0:i8
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i8>>, ExecCtx, i4, out i8, out i8):Void
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F2:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i8>>, ExecCtx, i4, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.0 [{i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8}::_F0:i8
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F3:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i8>>, ExecCtx, i4, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.0 [{i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8}::_F0:i8
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F4:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i8,i8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i8,i8}::_B0:u1
      1) stloc.2 [{i8,i8,i8}]
      1) ldloc.2 [{i8,i8,i8}]
      5) ldflda {i8,i8,i8}::_F2:i8
      1) ldloc.2 [{i8,i8,i8}]
      5) ldflda {i8,i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i8>>, ExecCtx, i4, out i8, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.2 [{i8,i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8,i8}::_F0:i8
      1) ldloc.2 [{i8,i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F5:{i8,i8,i8}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>):Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>):Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
Sequence: Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, Guard(?3: *2, ToI8(?3)))
    [1](49): Max(*2: *1x, Guard(?3: *2, ToI8(?3)))
    [2](49): MinMax(*2: *1x, Guard(?3: *2, ToI8(?3)))
    [3](49): MinC(*2: *1x, Guard(?3: *2, ToI8(?3)))
    [4](49): MaxC(*2: *1x, Guard(?3: *2, ToI8(?3)))
    [5](49): MinMaxC(*2: *1x, Guard(?3: *2, ToI8(?3)))
###
> Opt->Map((it->Min(it->ToI4()), it->Max(it->ToI4()), it->MinMax(it->ToI4()), it->MinC(it->ToI4()), it->MaxC(it->ToI4()), it->MinMaxC(it->ToI4())))
Opt->Map((it->Min(it->ToI4()), it->Max(it->ToI4()), it->MinMax(it->ToI4()), it->MinC(it->ToI4()), it->MaxC(it->ToI4()), it->MinMaxC(it->ToI4()))) : (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
BndKind:Call, Type:(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Call(∂.ToI4(Scope(3)):i4?)):i4?)):i4), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Call(∂.ToI4(Scope(5)):i4?)):i4?)):i4), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.ToI4(Scope(7)):i4?)):i4?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Call(∂.ToI4(Scope(9)):i4?)):i4?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Call(∂.ToI4(Scope(11)):i4?)):i4?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.ToI4(Scope(13)):i4?)):i4?)))):(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})):(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*))
// (<ctx>, ∂.Opt:r8?**) : (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
Min_1(Arr<obj>, Opt<r8>):Opt<i4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      1) stloc.2 [i8]
      5) ldc.i4 [-2147483648]
      1) conv.i8
      1) ldloc.2 [i8]
      5) bgt [1]
      1) ldloc.2 [i8]
      5) ldc.i4 [2147483647]
      1) conv.u8
      5) bgt [1]
      1) ldloc.2 [i8]
      5) newobj Opt<i4>(i4)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [3]:
      1) ret
  Total Size: 86

Max_1(Arr<obj>, Opt<r8>):Opt<i4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      1) stloc.2 [i8]
      5) ldc.i4 [-2147483648]
      1) conv.i8
      1) ldloc.2 [i8]
      5) bgt [1]
      1) ldloc.2 [i8]
      5) ldc.i4 [2147483647]
      1) conv.u8
      5) bgt [1]
      1) ldloc.2 [i8]
      5) newobj Opt<i4>(i4)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [3]:
      1) ret
  Total Size: 86

MinMax_1(Arr<obj>, Opt<r8>):Opt<i4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      1) stloc.2 [i8]
      5) ldc.i4 [-2147483648]
      1) conv.i8
      1) ldloc.2 [i8]
      5) bgt [1]
      1) ldloc.2 [i8]
      5) ldc.i4 [2147483647]
      1) conv.u8
      5) bgt [1]
      1) ldloc.2 [i8]
      5) newobj Opt<i4>(i4)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [3]:
      1) ret
  Total Size: 86

MinC_1(Arr<obj>, Opt<r8>):Opt<i4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      1) stloc.2 [i8]
      5) ldc.i4 [-2147483648]
      1) conv.i8
      1) ldloc.2 [i8]
      5) bgt [1]
      1) ldloc.2 [i8]
      5) ldc.i4 [2147483647]
      1) conv.u8
      5) bgt [1]
      1) ldloc.2 [i8]
      5) newobj Opt<i4>(i4)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [3]:
      1) ret
  Total Size: 86

MaxC_1(Arr<obj>, Opt<r8>):Opt<i4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      1) stloc.2 [i8]
      5) ldc.i4 [-2147483648]
      1) conv.i8
      1) ldloc.2 [i8]
      5) bgt [1]
      1) ldloc.2 [i8]
      5) ldc.i4 [2147483647]
      1) conv.u8
      5) bgt [1]
      1) ldloc.2 [i8]
      5) newobj Opt<i4>(i4)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [3]:
      1) ret
  Total Size: 86

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<i4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      1) stloc.2 [i8]
      5) ldc.i4 [-2147483648]
      1) conv.i8
      1) ldloc.2 [i8]
      5) bgt [1]
      1) ldloc.2 [i8]
      5) ldc.i4 [2147483647]
      1) conv.u8
      5) bgt [1]
      1) ldloc.2 [i8]
      5) newobj Opt<i4>(i4)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [3]:
      1) ret
  Total Size: 86

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})
      5) newobj (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i4>>, ExecCtx, i4):i4
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F0:i4
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i4>>, ExecCtx, i4):i4
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F1:i4
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i4,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i4,i4}::_B0:u1
      1) stloc.0 [{i4,i4}]
      1) ldloc.0 [{i4,i4}]
      5) ldflda {i4,i4}::_F1:i4
      1) ldloc.0 [{i4,i4}]
      5) ldflda {i4,i4}::_F0:i4
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i4>>, ExecCtx, i4, out i4, out i4):Void
      1) ldloc.0 [{i4,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F2:{i4,i4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i4}::_B0:u1
      1) stloc.1 [{i8,i4}]
      1) ldloc.1 [{i8,i4}]
      5) ldflda {i8,i4}::_F1:i4
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i4>>, ExecCtx, i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4}::_F0:i8
      1) ldloc.1 [{i8,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F3:{i8,i4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i4}::_B0:u1
      1) stloc.1 [{i8,i4}]
      1) ldloc.1 [{i8,i4}]
      5) ldflda {i8,i4}::_F1:i4
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i4>>, ExecCtx, i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4}::_F0:i8
      1) ldloc.1 [{i8,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F4:{i8,i4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i4,i4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i4,i4}::_B0:u1
      1) stloc.3 [{i8,i4,i4}]
      1) ldloc.3 [{i8,i4,i4}]
      5) ldflda {i8,i4,i4}::_F2:i4
      1) ldloc.3 [{i8,i4,i4}]
      5) ldflda {i8,i4,i4}::_F1:i4
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i4>>, ExecCtx, i4, out i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i4,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4,i4}::_F0:i8
      1) ldloc.3 [{i8,i4,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F5:{i8,i4,i4}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>):Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>):Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
Sequence: Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, Guard(?3: *2, ToI4(?3)))
    [1](49): Max(*2: *1x, Guard(?3: *2, ToI4(?3)))
    [2](49): MinMax(*2: *1x, Guard(?3: *2, ToI4(?3)))
    [3](49): MinC(*2: *1x, Guard(?3: *2, ToI4(?3)))
    [4](49): MaxC(*2: *1x, Guard(?3: *2, ToI4(?3)))
    [5](49): MinMaxC(*2: *1x, Guard(?3: *2, ToI4(?3)))
###
> Opt->Map((it->Min(it->ToI2()), it->Max(it->ToI2()), it->MinMax(it->ToI2()), it->MinC(it->ToI2()), it->MaxC(it->ToI2()), it->MinMaxC(it->ToI2())))
Opt->Map((it->Min(it->ToI2()), it->Max(it->ToI2()), it->MinMax(it->ToI2()), it->MinC(it->ToI2()), it->MaxC(it->ToI2()), it->MinMaxC(it->ToI2()))) : (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
BndKind:Call, Type:(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Call(∂.ToI2(Scope(3)):i2?)):i2?)):i2), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Call(∂.ToI2(Scope(5)):i2?)):i2?)):i2), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.ToI2(Scope(7)):i2?)):i2?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Call(∂.ToI2(Scope(9)):i2?)):i2?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Call(∂.ToI2(Scope(11)):i2?)):i2?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.ToI2(Scope(13)):i2?)):i2?)))):(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})):(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*))
// (<ctx>, ∂.Opt:r8?**) : (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
Min_1(Arr<obj>, Opt<r8>):Opt<i2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      1) stloc.2 [i8]
      5) ldc.i4 [-32768]
      1) conv.i8
      1) ldloc.2 [i8]
      5) bgt [1]
      1) ldloc.2 [i8]
      5) ldc.i4 [32767]
      1) conv.u8
      5) bgt [1]
      1) ldloc.2 [i8]
      5) newobj Opt<i2>(i2)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [3]:
      1) ret
  Total Size: 86

Max_1(Arr<obj>, Opt<r8>):Opt<i2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      1) stloc.2 [i8]
      5) ldc.i4 [-32768]
      1) conv.i8
      1) ldloc.2 [i8]
      5) bgt [1]
      1) ldloc.2 [i8]
      5) ldc.i4 [32767]
      1) conv.u8
      5) bgt [1]
      1) ldloc.2 [i8]
      5) newobj Opt<i2>(i2)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [3]:
      1) ret
  Total Size: 86

MinMax_1(Arr<obj>, Opt<r8>):Opt<i2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      1) stloc.2 [i8]
      5) ldc.i4 [-32768]
      1) conv.i8
      1) ldloc.2 [i8]
      5) bgt [1]
      1) ldloc.2 [i8]
      5) ldc.i4 [32767]
      1) conv.u8
      5) bgt [1]
      1) ldloc.2 [i8]
      5) newobj Opt<i2>(i2)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [3]:
      1) ret
  Total Size: 86

MinC_1(Arr<obj>, Opt<r8>):Opt<i2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      1) stloc.2 [i8]
      5) ldc.i4 [-32768]
      1) conv.i8
      1) ldloc.2 [i8]
      5) bgt [1]
      1) ldloc.2 [i8]
      5) ldc.i4 [32767]
      1) conv.u8
      5) bgt [1]
      1) ldloc.2 [i8]
      5) newobj Opt<i2>(i2)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [3]:
      1) ret
  Total Size: 86

MaxC_1(Arr<obj>, Opt<r8>):Opt<i2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      1) stloc.2 [i8]
      5) ldc.i4 [-32768]
      1) conv.i8
      1) ldloc.2 [i8]
      5) bgt [1]
      1) ldloc.2 [i8]
      5) ldc.i4 [32767]
      1) conv.u8
      5) bgt [1]
      1) ldloc.2 [i8]
      5) newobj Opt<i2>(i2)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [3]:
      1) ret
  Total Size: 86

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<i2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      1) stloc.2 [i8]
      5) ldc.i4 [-32768]
      1) conv.i8
      1) ldloc.2 [i8]
      5) bgt [1]
      1) ldloc.2 [i8]
      5) ldc.i4 [32767]
      1) conv.u8
      5) bgt [1]
      1) ldloc.2 [i8]
      5) newobj Opt<i2>(i2)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [3]:
      1) ret
  Total Size: 86

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})
      5) newobj (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i2>>, ExecCtx, i4):i2
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F0:i2
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i2>>, ExecCtx, i4):i2
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F1:i2
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i2,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i2,i2}::_B0:u1
      1) stloc.0 [{i2,i2}]
      1) ldloc.0 [{i2,i2}]
      5) ldflda {i2,i2}::_F1:i2
      1) ldloc.0 [{i2,i2}]
      5) ldflda {i2,i2}::_F0:i2
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i2>>, ExecCtx, i4, out i2, out i2):Void
      1) ldloc.0 [{i2,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F2:{i2,i2}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i2}::_B0:u1
      1) stloc.1 [{i8,i2}]
      1) ldloc.1 [{i8,i2}]
      5) ldflda {i8,i2}::_F1:i2
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i2>>, ExecCtx, i4, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2}::_F0:i8
      1) ldloc.1 [{i8,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F3:{i8,i2}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i2}::_B0:u1
      1) stloc.1 [{i8,i2}]
      1) ldloc.1 [{i8,i2}]
      5) ldflda {i8,i2}::_F1:i2
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i2>>, ExecCtx, i4, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2}::_F0:i8
      1) ldloc.1 [{i8,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F4:{i8,i2}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i2,i2}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i2,i2}::_B0:u1
      1) stloc.3 [{i8,i2,i2}]
      1) ldloc.3 [{i8,i2,i2}]
      5) ldflda {i8,i2,i2}::_F2:i2
      1) ldloc.3 [{i8,i2,i2}]
      5) ldflda {i8,i2,i2}::_F1:i2
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i2>>, ExecCtx, i4, out i2, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i2,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2,i2}::_F0:i8
      1) ldloc.3 [{i8,i2,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F5:{i8,i2,i2}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>):Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>):Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
Sequence: Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, Guard(?3: *2, ToI2(?3)))
    [1](49): Max(*2: *1x, Guard(?3: *2, ToI2(?3)))
    [2](49): MinMax(*2: *1x, Guard(?3: *2, ToI2(?3)))
    [3](49): MinC(*2: *1x, Guard(?3: *2, ToI2(?3)))
    [4](49): MaxC(*2: *1x, Guard(?3: *2, ToI2(?3)))
    [5](49): MinMaxC(*2: *1x, Guard(?3: *2, ToI2(?3)))
###
> Opt->Map((it->Min(it->ToI1()), it->Max(it->ToI1()), it->MinMax(it->ToI1()), it->MinC(it->ToI1()), it->MaxC(it->ToI1()), it->MinMaxC(it->ToI1())))
Opt->Map((it->Min(it->ToI1()), it->Max(it->ToI1()), it->MinMax(it->ToI1()), it->MinC(it->ToI1()), it->MaxC(it->ToI1()), it->MinMaxC(it->ToI1()))) : (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
BndKind:Call, Type:(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Call(∂.ToI1(Scope(3)):i1?)):i1?)):i1), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Call(∂.ToI1(Scope(5)):i1?)):i1?)):i1), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.ToI1(Scope(7)):i1?)):i1?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Call(∂.ToI1(Scope(9)):i1?)):i1?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Call(∂.ToI1(Scope(11)):i1?)):i1?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.ToI1(Scope(13)):i1?)):i1?)))):(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})):(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*))
// (<ctx>, ∂.Opt:r8?**) : (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
Min_1(Arr<obj>, Opt<r8>):Opt<i1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      1) stloc.2 [i8]
      2) ldc.i4.s [-128]
      1) conv.i8
      1) ldloc.2 [i8]
      5) bgt [1]
      1) ldloc.2 [i8]
      2) ldc.i4.s [127]
      1) conv.u8
      5) bgt [1]
      1) ldloc.2 [i8]
      5) newobj Opt<i1>(i1)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [3]:
      1) ret
  Total Size: 80

Max_1(Arr<obj>, Opt<r8>):Opt<i1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      1) stloc.2 [i8]
      2) ldc.i4.s [-128]
      1) conv.i8
      1) ldloc.2 [i8]
      5) bgt [1]
      1) ldloc.2 [i8]
      2) ldc.i4.s [127]
      1) conv.u8
      5) bgt [1]
      1) ldloc.2 [i8]
      5) newobj Opt<i1>(i1)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [3]:
      1) ret
  Total Size: 80

MinMax_1(Arr<obj>, Opt<r8>):Opt<i1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      1) stloc.2 [i8]
      2) ldc.i4.s [-128]
      1) conv.i8
      1) ldloc.2 [i8]
      5) bgt [1]
      1) ldloc.2 [i8]
      2) ldc.i4.s [127]
      1) conv.u8
      5) bgt [1]
      1) ldloc.2 [i8]
      5) newobj Opt<i1>(i1)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [3]:
      1) ret
  Total Size: 80

MinC_1(Arr<obj>, Opt<r8>):Opt<i1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      1) stloc.2 [i8]
      2) ldc.i4.s [-128]
      1) conv.i8
      1) ldloc.2 [i8]
      5) bgt [1]
      1) ldloc.2 [i8]
      2) ldc.i4.s [127]
      1) conv.u8
      5) bgt [1]
      1) ldloc.2 [i8]
      5) newobj Opt<i1>(i1)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [3]:
      1) ret
  Total Size: 80

MaxC_1(Arr<obj>, Opt<r8>):Opt<i1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      1) stloc.2 [i8]
      2) ldc.i4.s [-128]
      1) conv.i8
      1) ldloc.2 [i8]
      5) bgt [1]
      1) ldloc.2 [i8]
      2) ldc.i4.s [127]
      1) conv.u8
      5) bgt [1]
      1) ldloc.2 [i8]
      5) newobj Opt<i1>(i1)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [3]:
      1) ret
  Total Size: 80

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<i1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [i8 (1)]
      5) call static NumUtil::TryToI8(r8, out i8):bool
      5) brfalse [1]
      1) ldloc.1 [i8]
      1) stloc.2 [i8]
      2) ldc.i4.s [-128]
      1) conv.i8
      1) ldloc.2 [i8]
      5) bgt [1]
      1) ldloc.2 [i8]
      2) ldc.i4.s [127]
      1) conv.u8
      5) bgt [1]
      1) ldloc.2 [i8]
      5) newobj Opt<i1>(i1)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [3]:
      1) ret
  Total Size: 80

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})
      5) newobj (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i1>>, ExecCtx, i4):i1
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F0:i1
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i1>>, ExecCtx, i4):i1
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F1:i1
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i1,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i1,i1}::_B0:u1
      1) stloc.0 [{i1,i1}]
      1) ldloc.0 [{i1,i1}]
      5) ldflda {i1,i1}::_F1:i1
      1) ldloc.0 [{i1,i1}]
      5) ldflda {i1,i1}::_F0:i1
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i1>>, ExecCtx, i4, out i1, out i1):Void
      1) ldloc.0 [{i1,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F2:{i1,i1}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i1}::_B0:u1
      1) stloc.1 [{i8,i1}]
      1) ldloc.1 [{i8,i1}]
      5) ldflda {i8,i1}::_F1:i1
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i1>>, ExecCtx, i4, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1}::_F0:i8
      1) ldloc.1 [{i8,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F3:{i8,i1}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i1}::_B0:u1
      1) stloc.1 [{i8,i1}]
      1) ldloc.1 [{i8,i1}]
      5) ldflda {i8,i1}::_F1:i1
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i1>>, ExecCtx, i4, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1}::_F0:i8
      1) ldloc.1 [{i8,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F4:{i8,i1}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i1,i1}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i1,i1}::_B0:u1
      1) stloc.3 [{i8,i1,i1}]
      1) ldloc.3 [{i8,i1,i1}]
      5) ldflda {i8,i1,i1}::_F2:i1
      1) ldloc.3 [{i8,i1,i1}]
      5) ldflda {i8,i1,i1}::_F1:i1
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<i1>>, ExecCtx, i4, out i1, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i1,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1,i1}::_F0:i8
      1) ldloc.3 [{i8,i1,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F5:{i8,i1,i1}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>):Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>):Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
Sequence: Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
 0) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 1) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 2) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 3) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-1, 3, { Max: 3, Min: -1 }, { Count: 6, Min: -1 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -1 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, Guard(?3: *2, ToI1(?3)))
    [1](49): Max(*2: *1x, Guard(?3: *2, ToI1(?3)))
    [2](49): MinMax(*2: *1x, Guard(?3: *2, ToI1(?3)))
    [3](49): MinC(*2: *1x, Guard(?3: *2, ToI1(?3)))
    [4](49): MaxC(*2: *1x, Guard(?3: *2, ToI1(?3)))
    [5](49): MinMaxC(*2: *1x, Guard(?3: *2, ToI1(?3)))
###
> Opt->Map((it->Min(it->ToU8()), it->Max(it->ToU8()), it->MinMax(it->ToU8()), it->MinC(it->ToU8()), it->MaxC(it->ToU8()), it->MinMaxC(it->ToU8())))
Opt->Map((it->Min(it->ToU8()), it->Max(it->ToU8()), it->MinMax(it->ToU8()), it->MinC(it->ToU8()), it->MaxC(it->ToU8()), it->MinMaxC(it->ToU8()))) : (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
BndKind:Call, Type:(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Call(∂.ToU8(Scope(3)):u8?)):u8?)):u8), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Call(∂.ToU8(Scope(5)):u8?)):u8?)):u8), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.ToU8(Scope(7)):u8?)):u8?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Call(∂.ToU8(Scope(9)):u8?)):u8?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Call(∂.ToU8(Scope(11)):u8?)):u8?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.ToU8(Scope(13)):u8?)):u8?)))):(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})):(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*))
// (<ctx>, ∂.Opt:r8?**) : (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
Min_1(Arr<obj>, Opt<r8>):Opt<u8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      5) newobj Opt<u8>(u8)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [3]:
      1) ret
  Total Size: 60

Max_1(Arr<obj>, Opt<r8>):Opt<u8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      5) newobj Opt<u8>(u8)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [3]:
      1) ret
  Total Size: 60

MinMax_1(Arr<obj>, Opt<r8>):Opt<u8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      5) newobj Opt<u8>(u8)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [3]:
      1) ret
  Total Size: 60

MinC_1(Arr<obj>, Opt<r8>):Opt<u8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      5) newobj Opt<u8>(u8)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [3]:
      1) ret
  Total Size: 60

MaxC_1(Arr<obj>, Opt<r8>):Opt<u8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      5) newobj Opt<u8>(u8)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [3]:
      1) ret
  Total Size: 60

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<u8>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      5) newobj Opt<u8>(u8)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [3]:
      1) ret
  Total Size: 60

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})
      5) newobj (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u8>>, ExecCtx, i4):u8
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F0:u8
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u8>>, ExecCtx, i4):u8
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F1:u8
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {u8,u8}::_B0:u1
      1) stloc.0 [{u8,u8}]
      1) ldloc.0 [{u8,u8}]
      5) ldflda {u8,u8}::_F1:u8
      1) ldloc.0 [{u8,u8}]
      5) ldflda {u8,u8}::_F0:u8
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u8>>, ExecCtx, i4, out u8, out u8):Void
      1) ldloc.0 [{u8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F2:{u8,u8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u8}::_B0:u1
      1) stloc.1 [{i8,u8}]
      1) ldloc.1 [{i8,u8}]
      5) ldflda {i8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u8>>, ExecCtx, i4, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8}::_F0:i8
      1) ldloc.1 [{i8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F3:{i8,u8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u8}::_B0:u1
      1) stloc.1 [{i8,u8}]
      1) ldloc.1 [{i8,u8}]
      5) ldflda {i8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u8>>, ExecCtx, i4, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8}::_F0:i8
      1) ldloc.1 [{i8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F4:{i8,u8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u8,u8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u8,u8}::_B0:u1
      1) stloc.3 [{i8,u8,u8}]
      1) ldloc.3 [{i8,u8,u8}]
      5) ldflda {i8,u8,u8}::_F2:u8
      1) ldloc.3 [{i8,u8,u8}]
      5) ldflda {i8,u8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u8>>, ExecCtx, i4, out u8, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8,u8}::_F0:i8
      1) ldloc.3 [{i8,u8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F5:{i8,u8,u8}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>):Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>):Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
Sequence: Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
 0) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 1) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 2) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 3) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, Guard(?3: *2, ToU8(?3)))
    [1](49): Max(*2: *1x, Guard(?3: *2, ToU8(?3)))
    [2](49): MinMax(*2: *1x, Guard(?3: *2, ToU8(?3)))
    [3](49): MinC(*2: *1x, Guard(?3: *2, ToU8(?3)))
    [4](49): MaxC(*2: *1x, Guard(?3: *2, ToU8(?3)))
    [5](49): MinMaxC(*2: *1x, Guard(?3: *2, ToU8(?3)))
###
> Opt->Map((it->Min(it->ToU4()), it->Max(it->ToU4()), it->MinMax(it->ToU4()), it->MinC(it->ToU4()), it->MaxC(it->ToU4()), it->MinMaxC(it->ToU4())))
Opt->Map((it->Min(it->ToU4()), it->Max(it->ToU4()), it->MinMax(it->ToU4()), it->MinC(it->ToU4()), it->MaxC(it->ToU4()), it->MinMaxC(it->ToU4()))) : (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
BndKind:Call, Type:(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Call(∂.ToU4(Scope(3)):u4?)):u4?)):u4), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Call(∂.ToU4(Scope(5)):u4?)):u4?)):u4), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.ToU4(Scope(7)):u4?)):u4?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Call(∂.ToU4(Scope(9)):u4?)):u4?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Call(∂.ToU4(Scope(11)):u4?)):u4?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.ToU4(Scope(13)):u4?)):u4?)))):(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})):(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*))
// (<ctx>, ∂.Opt:r8?**) : (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
Min_1(Arr<obj>, Opt<r8>):Opt<u4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      1) stloc.2 [u8]
      1) ldloc.2 [u8]
      1) ldc.i4.m1
      1) conv.u8
      5) bgt.un [1]
      1) ldloc.2 [u8]
      5) newobj Opt<u4>(u4)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [3]:
      1) ret
  Total Size: 70

Max_1(Arr<obj>, Opt<r8>):Opt<u4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      1) stloc.2 [u8]
      1) ldloc.2 [u8]
      1) ldc.i4.m1
      1) conv.u8
      5) bgt.un [1]
      1) ldloc.2 [u8]
      5) newobj Opt<u4>(u4)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [3]:
      1) ret
  Total Size: 70

MinMax_1(Arr<obj>, Opt<r8>):Opt<u4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      1) stloc.2 [u8]
      1) ldloc.2 [u8]
      1) ldc.i4.m1
      1) conv.u8
      5) bgt.un [1]
      1) ldloc.2 [u8]
      5) newobj Opt<u4>(u4)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [3]:
      1) ret
  Total Size: 70

MinC_1(Arr<obj>, Opt<r8>):Opt<u4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      1) stloc.2 [u8]
      1) ldloc.2 [u8]
      1) ldc.i4.m1
      1) conv.u8
      5) bgt.un [1]
      1) ldloc.2 [u8]
      5) newobj Opt<u4>(u4)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [3]:
      1) ret
  Total Size: 70

MaxC_1(Arr<obj>, Opt<r8>):Opt<u4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      1) stloc.2 [u8]
      1) ldloc.2 [u8]
      1) ldc.i4.m1
      1) conv.u8
      5) bgt.un [1]
      1) ldloc.2 [u8]
      5) newobj Opt<u4>(u4)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [3]:
      1) ret
  Total Size: 70

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<u4>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      1) stloc.2 [u8]
      1) ldloc.2 [u8]
      1) ldc.i4.m1
      1) conv.u8
      5) bgt.un [1]
      1) ldloc.2 [u8]
      5) newobj Opt<u4>(u4)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [3]:
      1) ret
  Total Size: 70

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})
      5) newobj (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u4>>, ExecCtx, i4):u4
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F0:u4
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u4>>, ExecCtx, i4):u4
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F1:u4
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u4,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {u4,u4}::_B0:u1
      1) stloc.0 [{u4,u4}]
      1) ldloc.0 [{u4,u4}]
      5) ldflda {u4,u4}::_F1:u4
      1) ldloc.0 [{u4,u4}]
      5) ldflda {u4,u4}::_F0:u4
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u4>>, ExecCtx, i4, out u4, out u4):Void
      1) ldloc.0 [{u4,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F2:{u4,u4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u4}::_B0:u1
      1) stloc.1 [{i8,u4}]
      1) ldloc.1 [{i8,u4}]
      5) ldflda {i8,u4}::_F1:u4
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u4>>, ExecCtx, i4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4}::_F0:i8
      1) ldloc.1 [{i8,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F3:{i8,u4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u4}::_B0:u1
      1) stloc.1 [{i8,u4}]
      1) ldloc.1 [{i8,u4}]
      5) ldflda {i8,u4}::_F1:u4
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u4>>, ExecCtx, i4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4}::_F0:i8
      1) ldloc.1 [{i8,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F4:{i8,u4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u4,u4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u4,u4}::_B0:u1
      1) stloc.3 [{i8,u4,u4}]
      1) ldloc.3 [{i8,u4,u4}]
      5) ldflda {i8,u4,u4}::_F2:u4
      1) ldloc.3 [{i8,u4,u4}]
      5) ldflda {i8,u4,u4}::_F1:u4
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u4>>, ExecCtx, i4, out u4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u4,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4,u4}::_F0:i8
      1) ldloc.3 [{i8,u4,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F5:{i8,u4,u4}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>):Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>):Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
Sequence: Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
 0) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 1) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 2) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 3) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, Guard(?3: *2, ToU4(?3)))
    [1](49): Max(*2: *1x, Guard(?3: *2, ToU4(?3)))
    [2](49): MinMax(*2: *1x, Guard(?3: *2, ToU4(?3)))
    [3](49): MinC(*2: *1x, Guard(?3: *2, ToU4(?3)))
    [4](49): MaxC(*2: *1x, Guard(?3: *2, ToU4(?3)))
    [5](49): MinMaxC(*2: *1x, Guard(?3: *2, ToU4(?3)))
###
> Opt->Map((it->Min(it->ToU2()), it->Max(it->ToU2()), it->MinMax(it->ToU2()), it->MinC(it->ToU2()), it->MaxC(it->ToU2()), it->MinMaxC(it->ToU2())))
Opt->Map((it->Min(it->ToU2()), it->Max(it->ToU2()), it->MinMax(it->ToU2()), it->MinC(it->ToU2()), it->MaxC(it->ToU2()), it->MinMaxC(it->ToU2()))) : (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
BndKind:Call, Type:(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Call(∂.ToU2(Scope(3)):u2?)):u2?)):u2), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Call(∂.ToU2(Scope(5)):u2?)):u2?)):u2), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.ToU2(Scope(7)):u2?)):u2?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Call(∂.ToU2(Scope(9)):u2?)):u2?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Call(∂.ToU2(Scope(11)):u2?)):u2?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.ToU2(Scope(13)):u2?)):u2?)))):(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})):(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*))
// (<ctx>, ∂.Opt:r8?**) : (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
Min_1(Arr<obj>, Opt<r8>):Opt<u2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      1) stloc.2 [u8]
      1) ldloc.2 [u8]
      5) ldc.i4 [65535]
      1) conv.u8
      5) bgt.un [1]
      1) ldloc.2 [u8]
      5) newobj Opt<u2>(u2)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [3]:
      1) ret
  Total Size: 74

Max_1(Arr<obj>, Opt<r8>):Opt<u2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      1) stloc.2 [u8]
      1) ldloc.2 [u8]
      5) ldc.i4 [65535]
      1) conv.u8
      5) bgt.un [1]
      1) ldloc.2 [u8]
      5) newobj Opt<u2>(u2)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [3]:
      1) ret
  Total Size: 74

MinMax_1(Arr<obj>, Opt<r8>):Opt<u2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      1) stloc.2 [u8]
      1) ldloc.2 [u8]
      5) ldc.i4 [65535]
      1) conv.u8
      5) bgt.un [1]
      1) ldloc.2 [u8]
      5) newobj Opt<u2>(u2)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [3]:
      1) ret
  Total Size: 74

MinC_1(Arr<obj>, Opt<r8>):Opt<u2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      1) stloc.2 [u8]
      1) ldloc.2 [u8]
      5) ldc.i4 [65535]
      1) conv.u8
      5) bgt.un [1]
      1) ldloc.2 [u8]
      5) newobj Opt<u2>(u2)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [3]:
      1) ret
  Total Size: 74

MaxC_1(Arr<obj>, Opt<r8>):Opt<u2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      1) stloc.2 [u8]
      1) ldloc.2 [u8]
      5) ldc.i4 [65535]
      1) conv.u8
      5) bgt.un [1]
      1) ldloc.2 [u8]
      5) newobj Opt<u2>(u2)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [3]:
      1) ret
  Total Size: 74

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<u2>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      1) stloc.2 [u8]
      1) ldloc.2 [u8]
      5) ldc.i4 [65535]
      1) conv.u8
      5) bgt.un [1]
      1) ldloc.2 [u8]
      5) newobj Opt<u2>(u2)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [3]:
      1) ret
  Total Size: 74

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})
      5) newobj (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u2>>, ExecCtx, i4):u2
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F0:u2
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u2>>, ExecCtx, i4):u2
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F1:u2
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u2,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {u2,u2}::_B0:u1
      1) stloc.0 [{u2,u2}]
      1) ldloc.0 [{u2,u2}]
      5) ldflda {u2,u2}::_F1:u2
      1) ldloc.0 [{u2,u2}]
      5) ldflda {u2,u2}::_F0:u2
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u2>>, ExecCtx, i4, out u2, out u2):Void
      1) ldloc.0 [{u2,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F2:{u2,u2}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u2}::_B0:u1
      1) stloc.1 [{i8,u2}]
      1) ldloc.1 [{i8,u2}]
      5) ldflda {i8,u2}::_F1:u2
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u2>>, ExecCtx, i4, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2}::_F0:i8
      1) ldloc.1 [{i8,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F3:{i8,u2}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u2}::_B0:u1
      1) stloc.1 [{i8,u2}]
      1) ldloc.1 [{i8,u2}]
      5) ldflda {i8,u2}::_F1:u2
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u2>>, ExecCtx, i4, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2}::_F0:i8
      1) ldloc.1 [{i8,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F4:{i8,u2}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u2,u2}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u2,u2}::_B0:u1
      1) stloc.3 [{i8,u2,u2}]
      1) ldloc.3 [{i8,u2,u2}]
      5) ldflda {i8,u2,u2}::_F2:u2
      1) ldloc.3 [{i8,u2,u2}]
      5) ldflda {i8,u2,u2}::_F1:u2
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u2>>, ExecCtx, i4, out u2, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u2,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2,u2}::_F0:i8
      1) ldloc.3 [{i8,u2,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F5:{i8,u2,u2}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>):Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>):Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
Sequence: Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
 0) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 1) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 2) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 3) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, Guard(?3: *2, ToU2(?3)))
    [1](49): Max(*2: *1x, Guard(?3: *2, ToU2(?3)))
    [2](49): MinMax(*2: *1x, Guard(?3: *2, ToU2(?3)))
    [3](49): MinC(*2: *1x, Guard(?3: *2, ToU2(?3)))
    [4](49): MaxC(*2: *1x, Guard(?3: *2, ToU2(?3)))
    [5](49): MinMaxC(*2: *1x, Guard(?3: *2, ToU2(?3)))
###
> Opt->Map((it->Min(it->ToU1()), it->Max(it->ToU1()), it->MinMax(it->ToU1()), it->MinC(it->ToU1()), it->MaxC(it->ToU1()), it->MinMaxC(it->ToU1())))
Opt->Map((it->Min(it->ToU1()), it->Max(it->ToU1()), it->MinMax(it->ToU1()), it->MinC(it->ToU1()), it->MaxC(it->ToU1()), it->MinMaxC(it->ToU1()))) : (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
BndKind:Call, Type:(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:2] Scope(1), Call(∂.Guard([guard:3] Scope(2), Call(∂.ToU1(Scope(3)):u1?)):u1?)):u1), Call(∂.Max([map:4] Scope(1), Call(∂.Guard([guard:5] Scope(4), Call(∂.ToU1(Scope(5)):u1?)):u1?)):u1), Call(∂.MinMax([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.ToU1(Scope(7)):u1?)):u1?))), Call(∂.MinC([map:8] Scope(1), Call(∂.Guard([guard:9] Scope(8), Call(∂.ToU1(Scope(9)):u1?)):u1?))), Call(∂.MaxC([map:10] Scope(1), Call(∂.Guard([guard:11] Scope(10), Call(∂.ToU1(Scope(11)):u1?)):u1?))), Call(∂.MinMaxC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.ToU1(Scope(13)):u1?)):u1?)))):(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})):(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*))
// (<ctx>, ∂.Opt:r8?**) : (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
Min_1(Arr<obj>, Opt<r8>):Opt<u1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      1) stloc.2 [u8]
      1) ldloc.2 [u8]
      5) ldc.i4 [255]
      1) conv.u8
      5) bgt.un [1]
      1) ldloc.2 [u8]
      5) newobj Opt<u1>(u1)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [3]:
      1) ret
  Total Size: 74

Max_1(Arr<obj>, Opt<r8>):Opt<u1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      1) stloc.2 [u8]
      1) ldloc.2 [u8]
      5) ldc.i4 [255]
      1) conv.u8
      5) bgt.un [1]
      1) ldloc.2 [u8]
      5) newobj Opt<u1>(u1)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [3]:
      1) ret
  Total Size: 74

MinMax_1(Arr<obj>, Opt<r8>):Opt<u1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      1) stloc.2 [u8]
      1) ldloc.2 [u8]
      5) ldc.i4 [255]
      1) conv.u8
      5) bgt.un [1]
      1) ldloc.2 [u8]
      5) newobj Opt<u1>(u1)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [3]:
      1) ret
  Total Size: 74

MinC_1(Arr<obj>, Opt<r8>):Opt<u1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      1) stloc.2 [u8]
      1) ldloc.2 [u8]
      5) ldc.i4 [255]
      1) conv.u8
      5) bgt.un [1]
      1) ldloc.2 [u8]
      5) newobj Opt<u1>(u1)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [3]:
      1) ret
  Total Size: 74

MaxC_1(Arr<obj>, Opt<r8>):Opt<u1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      1) stloc.2 [u8]
      1) ldloc.2 [u8]
      5) ldc.i4 [255]
      1) conv.u8
      5) bgt.un [1]
      1) ldloc.2 [u8]
      5) newobj Opt<u1>(u1)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [3]:
      1) ret
  Total Size: 74

MinMaxC_1(Arr<obj>, Opt<r8>):Opt<u1>
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      2) ldloca.s [u8 (1)]
      5) call static NumUtil::TryToU8(r8, out u8):bool
      5) brfalse [1]
      1) ldloc.1 [u8]
      1) stloc.2 [u8]
      1) ldloc.2 [u8]
      5) ldc.i4 [255]
      1) conv.u8
      5) bgt.un [1]
      1) ldloc.2 [u8]
      5) newobj Opt<u1>(u1)
      5) br [2]
  Label [1]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [2]:
      5) br [3]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [3]:
      1) ret
  Total Size: 74

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})
      5) newobj (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Opt<r8>,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMin(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u1>>, ExecCtx, i4):u1
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F0:u1
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<Opt<r8>,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u1>>, ExecCtx, i4):u1
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F1:u1
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<Opt<r8>,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u1,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {u1,u1}::_B0:u1
      1) stloc.0 [{u1,u1}]
      1) ldloc.0 [{u1,u1}]
      5) ldflda {u1,u1}::_F1:u1
      1) ldloc.0 [{u1,u1}]
      5) ldflda {u1,u1}::_F0:u1
      5) call static MinMaxGen::ExecMinMax(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u1>>, ExecCtx, i4, out u1, out u1):Void
      1) ldloc.0 [{u1,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F2:{u1,u1}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<Opt<r8>,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u1}::_B0:u1
      1) stloc.1 [{i8,u1}]
      1) ldloc.1 [{i8,u1}]
      5) ldflda {i8,u1}::_F1:u1
      5) call static MinMaxGen::ExecMinC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u1>>, ExecCtx, i4, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1}::_F0:i8
      1) ldloc.1 [{i8,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F3:{i8,u1}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<Opt<r8>,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u1}::_B0:u1
      1) stloc.1 [{i8,u1}]
      1) ldloc.1 [{i8,u1}]
      5) ldflda {i8,u1}::_F1:u1
      5) call static MinMaxGen::ExecMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u1>>, ExecCtx, i4, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1}::_F0:i8
      1) ldloc.1 [{i8,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F4:{i8,u1}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<Opt<r8>,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u1,u1}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u1,u1}::_B0:u1
      1) stloc.3 [{i8,u1,u1}]
      1) ldloc.3 [{i8,u1,u1}]
      5) ldflda {i8,u1,u1}::_F2:u1
      1) ldloc.3 [{i8,u1,u1}]
      5) ldflda {i8,u1,u1}::_F1:u1
      5) call static MinMaxGen::ExecMinMaxC(Seq<Opt<r8>>, Func<Opt<r8>,Opt<u1>>, ExecCtx, i4, out u1, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u1,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1,u1}::_F0:i8
      1) ldloc.3 [{i8,u1,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F5:{i8,u1,u1}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>):Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>):Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
Sequence: Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
 0) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 1) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 2) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 3) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (2, 3, { Max: 3, Min: 2 }, { Count: 4, Min: 2 }, { Count: 4, Max: 3 }, { Count: 4, Max: 3, Min: 2 })
*** Ctx ping count: 294
    [0](49): Min(*2: *1x, Guard(?3: *2, ToU1(?3)))
    [1](49): Max(*2: *1x, Guard(?3: *2, ToU1(?3)))
    [2](49): MinMax(*2: *1x, Guard(?3: *2, ToU1(?3)))
    [3](49): MinC(*2: *1x, Guard(?3: *2, ToU1(?3)))
    [4](49): MaxC(*2: *1x, Guard(?3: *2, ToU1(?3)))
    [5](49): MinMaxC(*2: *1x, Guard(?3: *2, ToU1(?3)))
###
> Req->Map(it->Map(it + #it - 5))
Req->Map(it->Map(it + #it - 5)) : r8**
BndKind:Call, Type:r8**, Bnd:(Call(∂.ForEach([map:1] Global(Req), Call(∂.ForEach([map:3] Scope(1), Add(Scope(3), Num<r8>(Scope(2)), [-] 5:r8)):r8*)):r8**))
// (∂.Req:r8**) : r8**
ForEach_1(Arr<obj>, i8, r8):r8
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) ret
  Total Size: 15

ForEach_1(Arr<obj>, Seq<r8>):Seq<r8>
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,r8,r8>]
      5) call static ForEachGen::ExecInd(Seq<r8>, Func<i8,r8,r8>):Seq<r8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<r8>):Seq<r8>
      1) ret
  Total Size: 19

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.0 [Seq<Seq<r8>>]
      1) ldloc.0 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Seq<r8>,Seq<r8>>]
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,Seq<r8>>):Seq<Seq<r8>>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<Seq<r8>>):Seq<Seq<r8>>
      1) ret
  Total Size: 28

Func sig: (Req:r8**) to r8**
Sequence: Seq<Seq<r8>>
 0) Sequence: Seq<r8>
     0) -2
     1) -5
     2) -0.5
     3) 1
     4) -2
     5) 2.5
 1) Sequence: Seq<r8>
     0) -2
     1) -5
     2) -0.5
     3) NaN
     4) 2
     5) -1
     6) 3.5
 2) Sequence: Seq<r8>
     0) -2
     1) -5
     2) -0.5
     3) ∞
     4) -∞
     5) 3
     6) 0
     7) 4.5
 3) Sequence: Seq<r8>
     0) -2
     1) -5
     2) -0.5
     3) ∞
     4) NaN
     5) -∞
     6) 4
     7) 1
     8) 5.5
 4) <null>
 5) <null>
 6) Sequence: Seq<r8>
     0) -6
     1) -1.5
     2) 0
     3) -3
     4) 1.5
     5) 3
###
> Req->Map((it->Min((it + #it - 5)->CastR8()), it->Max((it + #it - 5)->CastR8()), it->MinMax((it + #it - 5)->CastR8()), it->MinC((it + #it - 5)->CastR8()), it->MaxC((it + #it - 5)->CastR8()), it->MinMaxC((it + #it - 5)->CastR8())))
Req->Map((it->Min((it + #it - 5)->CastR8()), it->Max((it + #it - 5)->CastR8()), it->MinMax((it + #it - 5)->CastR8()), it->MinC((it + #it - 5)->CastR8()), it->MaxC((it + #it - 5)->CastR8()), it->MinMaxC((it + #it - 5)->CastR8()))) : (r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*
BndKind:Call, Type:(r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:3] Scope(1), Add(Scope(3), Num<r8>(Scope(2)), [-] 5:r8)):r8), Call(∂.Max([map:5] Scope(1), Add(Scope(5), Num<r8>(Scope(4)), [-] 5:r8)):r8), Call(∂.MinMax([map:7] Scope(1), Add(Scope(7), Num<r8>(Scope(6)), [-] 5:r8))), Call(∂.MinC([map:9] Scope(1), Add(Scope(9), Num<r8>(Scope(8)), [-] 5:r8))), Call(∂.MaxC([map:11] Scope(1), Add(Scope(11), Num<r8>(Scope(10)), [-] 5:r8))), Call(∂.MinMaxC([map:13] Scope(1), Add(Scope(13), Num<r8>(Scope(12)), [-] 5:r8)))):(r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})):(r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*))
// (<ctx>, ∂.Req:r8**) : (r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*
Min_1(Arr<obj>, i8, r8):r8
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) ret
  Total Size: 15

Max_1(Arr<obj>, i8, r8):r8
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) ret
  Total Size: 15

MinMax_1(Arr<obj>, i8, r8):r8
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) ret
  Total Size: 15

MinC_1(Arr<obj>, i8, r8):r8
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) ret
  Total Size: 15

MaxC_1(Arr<obj>, i8, r8):r8
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) ret
  Total Size: 15

MinMaxC_1(Arr<obj>, i8, r8):r8
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) ret
  Total Size: 15

ForEach_1(Arr<obj>, Seq<r8>):(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})
      5) newobj (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,r8,r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<r8>, Func<i8,r8,r8>, ExecCtx, i4):r8
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F0:r8
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,r8,r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<r8>, Func<i8,r8,r8>, ExecCtx, i4):r8
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F1:r8
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,r8,r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {r8,r8}()
      1) dup
      1) ldc.i4.3
      5) stfld {r8,r8}::_B0:u1
      1) stloc.0 [{r8,r8}]
      1) ldloc.0 [{r8,r8}]
      5) ldflda {r8,r8}::_F1:r8
      1) ldloc.0 [{r8,r8}]
      5) ldflda {r8,r8}::_F0:r8
      5) call static MinMaxGen::ExecMinMaxInd(Seq<r8>, Func<i8,r8,r8>, ExecCtx, i4, out r8, out r8):Void
      1) ldloc.0 [{r8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F2:{r8,r8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,r8,r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,r8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r8}::_B0:u1
      1) stloc.1 [{i8,r8}]
      1) ldloc.1 [{i8,r8}]
      5) ldflda {i8,r8}::_F1:r8
      5) call static MinMaxGen::ExecMinIndC(Seq<r8>, Func<i8,r8,r8>, ExecCtx, i4, out r8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r8}]
      1) ldloc.2 [i8]
      5) stfld {i8,r8}::_F0:i8
      1) ldloc.1 [{i8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F3:{i8,r8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,r8,r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,r8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r8}::_B0:u1
      1) stloc.1 [{i8,r8}]
      1) ldloc.1 [{i8,r8}]
      5) ldflda {i8,r8}::_F1:r8
      5) call static MinMaxGen::ExecMaxIndC(Seq<r8>, Func<i8,r8,r8>, ExecCtx, i4, out r8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r8}]
      1) ldloc.2 [i8]
      5) stfld {i8,r8}::_F0:i8
      1) ldloc.1 [{i8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F4:{i8,r8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,r8,r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,r8,r8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,r8,r8}::_B0:u1
      1) stloc.3 [{i8,r8,r8}]
      1) ldloc.3 [{i8,r8,r8}]
      5) ldflda {i8,r8,r8}::_F2:r8
      1) ldloc.3 [{i8,r8,r8}]
      5) ldflda {i8,r8,r8}::_F1:r8
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<r8>, Func<i8,r8,r8>, ExecCtx, i4, out r8, out r8):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,r8,r8}]
      1) ldloc.2 [i8]
      5) stfld {i8,r8,r8}::_F0:i8
      1) ldloc.3 [{i8,r8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F5:{i8,r8,r8}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>):Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>):Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*
Sequence: Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>
 0) (-5, 2.5, { Max: 2.5, Min: -5 }, { Count: 6, Min: -5 }, { Count: 6, Max: 2.5 }, { Count: 6, Max: 2.5, Min: -5 })
 1) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 7, Min: NaN }, { Count: 7, Max: NaN }, { Count: 7, Max: NaN, Min: NaN })
 2) (-∞, ∞, { Max: ∞, Min: -∞ }, { Count: 8, Min: -∞ }, { Count: 8, Max: ∞ }, { Count: 8, Max: ∞, Min: -∞ })
 3) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 9, Min: NaN }, { Count: 9, Max: NaN }, { Count: 9, Max: NaN, Min: NaN })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-6, 3, { Max: 3, Min: -6 }, { Count: 6, Min: -6 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -6 })
*** Ctx ping count: 252
    [0](42): Min(*3: *1x, Add(*3, Num<r8>(#2), [-] 5))
    [1](42): Max(*3: *1x, Add(*3, Num<r8>(#2), [-] 5))
    [2](42): MinMax(*3: *1x, Add(*3, Num<r8>(#2), [-] 5))
    [3](42): MinC(*3: *1x, Add(*3, Num<r8>(#2), [-] 5))
    [4](42): MaxC(*3: *1x, Add(*3, Num<r8>(#2), [-] 5))
    [5](42): MinMaxC(*3: *1x, Add(*3, Num<r8>(#2), [-] 5))
###
> Req->Map((it->Min((it + #it - 5)->CastR4()), it->Max((it + #it - 5)->CastR4()), it->MinMax((it + #it - 5)->CastR4()), it->MinC((it + #it - 5)->CastR4()), it->MaxC((it + #it - 5)->CastR4()), it->MinMaxC((it + #it - 5)->CastR4())))
Req->Map((it->Min((it + #it - 5)->CastR4()), it->Max((it + #it - 5)->CastR4()), it->MinMax((it + #it - 5)->CastR4()), it->MinC((it + #it - 5)->CastR4()), it->MaxC((it + #it - 5)->CastR4()), it->MinMaxC((it + #it - 5)->CastR4()))) : (r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*
BndKind:Call, Type:(r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:3] Scope(1), Call(∂.CastR4(Add(Scope(3), Num<r8>(Scope(2)), [-] 5:r8)):r4)):r4), Call(∂.Max([map:5] Scope(1), Call(∂.CastR4(Add(Scope(5), Num<r8>(Scope(4)), [-] 5:r8)):r4)):r4), Call(∂.MinMax([map:7] Scope(1), Call(∂.CastR4(Add(Scope(7), Num<r8>(Scope(6)), [-] 5:r8)):r4))), Call(∂.MinC([map:9] Scope(1), Call(∂.CastR4(Add(Scope(9), Num<r8>(Scope(8)), [-] 5:r8)):r4))), Call(∂.MaxC([map:11] Scope(1), Call(∂.CastR4(Add(Scope(11), Num<r8>(Scope(10)), [-] 5:r8)):r4))), Call(∂.MinMaxC([map:13] Scope(1), Call(∂.CastR4(Add(Scope(13), Num<r8>(Scope(12)), [-] 5:r8)):r4)))):(r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})):(r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*))
// (<ctx>, ∂.Req:r8**) : (r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*
Min_1(Arr<obj>, i8, r8):r4
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) conv.r4
      1) ret
  Total Size: 16

Max_1(Arr<obj>, i8, r8):r4
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) conv.r4
      1) ret
  Total Size: 16

MinMax_1(Arr<obj>, i8, r8):r4
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) conv.r4
      1) ret
  Total Size: 16

MinC_1(Arr<obj>, i8, r8):r4
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) conv.r4
      1) ret
  Total Size: 16

MaxC_1(Arr<obj>, i8, r8):r4
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) conv.r4
      1) ret
  Total Size: 16

MinMaxC_1(Arr<obj>, i8, r8):r4
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) conv.r4
      1) ret
  Total Size: 16

ForEach_1(Arr<obj>, Seq<r8>):(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})
      5) newobj (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,r8,r4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<r8>, Func<i8,r8,r4>, ExecCtx, i4):r4
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F0:r4
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,r8,r4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<r8>, Func<i8,r8,r4>, ExecCtx, i4):r4
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F1:r4
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,r8,r4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {r4,r4}()
      1) dup
      1) ldc.i4.3
      5) stfld {r4,r4}::_B0:u1
      1) stloc.0 [{r4,r4}]
      1) ldloc.0 [{r4,r4}]
      5) ldflda {r4,r4}::_F1:r4
      1) ldloc.0 [{r4,r4}]
      5) ldflda {r4,r4}::_F0:r4
      5) call static MinMaxGen::ExecMinMaxInd(Seq<r8>, Func<i8,r8,r4>, ExecCtx, i4, out r4, out r4):Void
      1) ldloc.0 [{r4,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F2:{r4,r4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,r8,r4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,r4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r4}::_B0:u1
      1) stloc.1 [{i8,r4}]
      1) ldloc.1 [{i8,r4}]
      5) ldflda {i8,r4}::_F1:r4
      5) call static MinMaxGen::ExecMinIndC(Seq<r8>, Func<i8,r8,r4>, ExecCtx, i4, out r4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r4}]
      1) ldloc.2 [i8]
      5) stfld {i8,r4}::_F0:i8
      1) ldloc.1 [{i8,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F3:{i8,r4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,r8,r4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,r4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r4}::_B0:u1
      1) stloc.1 [{i8,r4}]
      1) ldloc.1 [{i8,r4}]
      5) ldflda {i8,r4}::_F1:r4
      5) call static MinMaxGen::ExecMaxIndC(Seq<r8>, Func<i8,r8,r4>, ExecCtx, i4, out r4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r4}]
      1) ldloc.2 [i8]
      5) stfld {i8,r4}::_F0:i8
      1) ldloc.1 [{i8,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F4:{i8,r4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,r8,r4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,r4,r4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,r4,r4}::_B0:u1
      1) stloc.3 [{i8,r4,r4}]
      1) ldloc.3 [{i8,r4,r4}]
      5) ldflda {i8,r4,r4}::_F2:r4
      1) ldloc.3 [{i8,r4,r4}]
      5) ldflda {i8,r4,r4}::_F1:r4
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<r8>, Func<i8,r8,r4>, ExecCtx, i4, out r4, out r4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,r4,r4}]
      1) ldloc.2 [i8]
      5) stfld {i8,r4,r4}::_F0:i8
      1) ldloc.3 [{i8,r4,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F5:{i8,r4,r4}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>):Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>):Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*
Sequence: Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>
 0) (-5, 2.5, { Max: 2.5, Min: -5 }, { Count: 6, Min: -5 }, { Count: 6, Max: 2.5 }, { Count: 6, Max: 2.5, Min: -5 })
 1) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 7, Min: NaN }, { Count: 7, Max: NaN }, { Count: 7, Max: NaN, Min: NaN })
 2) (-∞, ∞, { Max: ∞, Min: -∞ }, { Count: 8, Min: -∞ }, { Count: 8, Max: ∞ }, { Count: 8, Max: ∞, Min: -∞ })
 3) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 9, Min: NaN }, { Count: 9, Max: NaN }, { Count: 9, Max: NaN, Min: NaN })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-6, 3, { Max: 3, Min: -6 }, { Count: 6, Min: -6 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -6 })
*** Ctx ping count: 252
    [0](42): Min(*3: *1x, CastR4(Add(*3, Num<r8>(#2), [-] 5)))
    [1](42): Max(*3: *1x, CastR4(Add(*3, Num<r8>(#2), [-] 5)))
    [2](42): MinMax(*3: *1x, CastR4(Add(*3, Num<r8>(#2), [-] 5)))
    [3](42): MinC(*3: *1x, CastR4(Add(*3, Num<r8>(#2), [-] 5)))
    [4](42): MaxC(*3: *1x, CastR4(Add(*3, Num<r8>(#2), [-] 5)))
    [5](42): MinMaxC(*3: *1x, CastR4(Add(*3, Num<r8>(#2), [-] 5)))
###
> Req->Map((it->Min((it + #it - 5)->CastIA()), it->Max((it + #it - 5)->CastIA()), it->MinMax((it + #it - 5)->CastIA()), it->MinC((it + #it - 5)->CastIA()), it->MaxC((it + #it - 5)->CastIA()), it->MinMaxC((it + #it - 5)->CastIA())))
Req->Map((it->Min((it + #it - 5)->CastIA()), it->Max((it + #it - 5)->CastIA()), it->MinMax((it + #it - 5)->CastIA()), it->MinC((it + #it - 5)->CastIA()), it->MaxC((it + #it - 5)->CastIA()), it->MinMaxC((it + #it - 5)->CastIA()))) : (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
BndKind:Call, Type:(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:3] Scope(1), Call(∂.CastIA(Add(Scope(3), Num<r8>(Scope(2)), [-] 5:r8)):i)):i), Call(∂.Max([map:5] Scope(1), Call(∂.CastIA(Add(Scope(5), Num<r8>(Scope(4)), [-] 5:r8)):i)):i), Call(∂.MinMax([map:7] Scope(1), Call(∂.CastIA(Add(Scope(7), Num<r8>(Scope(6)), [-] 5:r8)):i))), Call(∂.MinC([map:9] Scope(1), Call(∂.CastIA(Add(Scope(9), Num<r8>(Scope(8)), [-] 5:r8)):i))), Call(∂.MaxC([map:11] Scope(1), Call(∂.CastIA(Add(Scope(11), Num<r8>(Scope(10)), [-] 5:r8)):i))), Call(∂.MinMaxC([map:13] Scope(1), Call(∂.CastIA(Add(Scope(13), Num<r8>(Scope(12)), [-] 5:r8)):i)))):(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})):(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*))
// (<ctx>, ∂.Req:r8**) : (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
Min_1(Arr<obj>, i8, r8):ia
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [0]
      1) pop
      9) ldc.r8 [0]
  Label [0]:
      5) newobj ia(r8)
      1) ret
  Total Size: 41

Max_1(Arr<obj>, i8, r8):ia
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [0]
      1) pop
      9) ldc.r8 [0]
  Label [0]:
      5) newobj ia(r8)
      1) ret
  Total Size: 41

MinMax_1(Arr<obj>, i8, r8):ia
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [0]
      1) pop
      9) ldc.r8 [0]
  Label [0]:
      5) newobj ia(r8)
      1) ret
  Total Size: 41

MinC_1(Arr<obj>, i8, r8):ia
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [0]
      1) pop
      9) ldc.r8 [0]
  Label [0]:
      5) newobj ia(r8)
      1) ret
  Total Size: 41

MaxC_1(Arr<obj>, i8, r8):ia
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [0]
      1) pop
      9) ldc.r8 [0]
  Label [0]:
      5) newobj ia(r8)
      1) ret
  Total Size: 41

MinMaxC_1(Arr<obj>, i8, r8):ia
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [0]
      1) pop
      9) ldc.r8 [0]
  Label [0]:
      5) newobj ia(r8)
      1) ret
  Total Size: 41

ForEach_1(Arr<obj>, Seq<r8>):(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})
      5) newobj (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,r8,ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<r8>, Func<i8,r8,ia>, ExecCtx, i4):ia
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F0:ia
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,r8,ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<r8>, Func<i8,r8,ia>, ExecCtx, i4):ia
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F1:ia
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,r8,ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {ia,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {ia,ia}::_B0:u1
      1) stloc.0 [{ia,ia}]
      1) ldloc.0 [{ia,ia}]
      5) ldflda {ia,ia}::_F1:ia
      1) ldloc.0 [{ia,ia}]
      5) ldflda {ia,ia}::_F0:ia
      5) call static MinMaxGen::ExecMinMaxInd(Seq<r8>, Func<i8,r8,ia>, ExecCtx, i4, out ia, out ia):Void
      1) ldloc.0 [{ia,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F2:{ia,ia}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,r8,ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,ia}::_B0:u1
      1) stloc.1 [{i8,ia}]
      1) ldloc.1 [{i8,ia}]
      5) ldflda {i8,ia}::_F1:ia
      5) call static MinMaxGen::ExecMinIndC(Seq<r8>, Func<i8,r8,ia>, ExecCtx, i4, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia}::_F0:i8
      1) ldloc.1 [{i8,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F3:{i8,ia}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,r8,ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,ia}::_B0:u1
      1) stloc.1 [{i8,ia}]
      1) ldloc.1 [{i8,ia}]
      5) ldflda {i8,ia}::_F1:ia
      5) call static MinMaxGen::ExecMaxIndC(Seq<r8>, Func<i8,r8,ia>, ExecCtx, i4, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia}::_F0:i8
      1) ldloc.1 [{i8,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F4:{i8,ia}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,r8,ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,ia,ia}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,ia,ia}::_B0:u1
      1) stloc.3 [{i8,ia,ia}]
      1) ldloc.3 [{i8,ia,ia}]
      5) ldflda {i8,ia,ia}::_F2:ia
      1) ldloc.3 [{i8,ia,ia}]
      5) ldflda {i8,ia,ia}::_F1:ia
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<r8>, Func<i8,r8,ia>, ExecCtx, i4, out ia, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,ia,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia,ia}::_F0:i8
      1) ldloc.3 [{i8,ia,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F5:{i8,ia,ia}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>):Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>):Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
Sequence: Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
 0) (-5, 2, { Max: 2, Min: -5 }, { Count: 6, Min: -5 }, { Count: 6, Max: 2 }, { Count: 6, Max: 2, Min: -5 })
 1) (-5, 3, { Max: 3, Min: -5 }, { Count: 7, Min: -5 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -5 })
 2) (-5, 4, { Max: 4, Min: -5 }, { Count: 8, Min: -5 }, { Count: 8, Max: 4 }, { Count: 8, Max: 4, Min: -5 })
 3) (-5, 5, { Max: 5, Min: -5 }, { Count: 9, Min: -5 }, { Count: 9, Max: 5 }, { Count: 9, Max: 5, Min: -5 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-6, 3, { Max: 3, Min: -6 }, { Count: 6, Min: -6 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -6 })
*** Ctx ping count: 252
    [0](42): Min(*3: *1x, CastIA(Add(*3, Num<r8>(#2), [-] 5)))
    [1](42): Max(*3: *1x, CastIA(Add(*3, Num<r8>(#2), [-] 5)))
    [2](42): MinMax(*3: *1x, CastIA(Add(*3, Num<r8>(#2), [-] 5)))
    [3](42): MinC(*3: *1x, CastIA(Add(*3, Num<r8>(#2), [-] 5)))
    [4](42): MaxC(*3: *1x, CastIA(Add(*3, Num<r8>(#2), [-] 5)))
    [5](42): MinMaxC(*3: *1x, CastIA(Add(*3, Num<r8>(#2), [-] 5)))
###
> Req->Map((it->Min((it + #it - 5)->CastI8()), it->Max((it + #it - 5)->CastI8()), it->MinMax((it + #it - 5)->CastI8()), it->MinC((it + #it - 5)->CastI8()), it->MaxC((it + #it - 5)->CastI8()), it->MinMaxC((it + #it - 5)->CastI8())))
Req->Map((it->Min((it + #it - 5)->CastI8()), it->Max((it + #it - 5)->CastI8()), it->MinMax((it + #it - 5)->CastI8()), it->MinC((it + #it - 5)->CastI8()), it->MaxC((it + #it - 5)->CastI8()), it->MinMaxC((it + #it - 5)->CastI8()))) : (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
BndKind:Call, Type:(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:3] Scope(1), Call(∂.CastI8(Add(Scope(3), Num<r8>(Scope(2)), [-] 5:r8)):i8)):i8), Call(∂.Max([map:5] Scope(1), Call(∂.CastI8(Add(Scope(5), Num<r8>(Scope(4)), [-] 5:r8)):i8)):i8), Call(∂.MinMax([map:7] Scope(1), Call(∂.CastI8(Add(Scope(7), Num<r8>(Scope(6)), [-] 5:r8)):i8))), Call(∂.MinC([map:9] Scope(1), Call(∂.CastI8(Add(Scope(9), Num<r8>(Scope(8)), [-] 5:r8)):i8))), Call(∂.MaxC([map:11] Scope(1), Call(∂.CastI8(Add(Scope(11), Num<r8>(Scope(10)), [-] 5:r8)):i8))), Call(∂.MinMaxC([map:13] Scope(1), Call(∂.CastI8(Add(Scope(13), Num<r8>(Scope(12)), [-] 5:r8)):i8)))):(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})):(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*))
// (<ctx>, ∂.Req:r8**) : (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
Min_1(Arr<obj>, i8, r8):i8
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 20

Max_1(Arr<obj>, i8, r8):i8
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 20

MinMax_1(Arr<obj>, i8, r8):i8
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 20

MinC_1(Arr<obj>, i8, r8):i8
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 20

MaxC_1(Arr<obj>, i8, r8):i8
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 20

MinMaxC_1(Arr<obj>, i8, r8):i8
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 20

ForEach_1(Arr<obj>, Seq<r8>):(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})
      5) newobj (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,r8,i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<r8>, Func<i8,r8,i8>, ExecCtx, i4):i8
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F0:i8
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,r8,i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<r8>, Func<i8,r8,i8>, ExecCtx, i4):i8
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F1:i8
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,r8,i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F0:i8
      5) call static MinMaxGen::ExecMinMaxInd(Seq<r8>, Func<i8,r8,i8>, ExecCtx, i4, out i8, out i8):Void
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F2:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,r8,i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMinIndC(Seq<r8>, Func<i8,r8,i8>, ExecCtx, i4, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.0 [{i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8}::_F0:i8
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F3:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,r8,i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMaxIndC(Seq<r8>, Func<i8,r8,i8>, ExecCtx, i4, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.0 [{i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8}::_F0:i8
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F4:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,r8,i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i8,i8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i8,i8}::_B0:u1
      1) stloc.2 [{i8,i8,i8}]
      1) ldloc.2 [{i8,i8,i8}]
      5) ldflda {i8,i8,i8}::_F2:i8
      1) ldloc.2 [{i8,i8,i8}]
      5) ldflda {i8,i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<r8>, Func<i8,r8,i8>, ExecCtx, i4, out i8, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.2 [{i8,i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8,i8}::_F0:i8
      1) ldloc.2 [{i8,i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F5:{i8,i8,i8}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>):Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>):Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
Sequence: Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
 0) (-5, 2, { Max: 2, Min: -5 }, { Count: 6, Min: -5 }, { Count: 6, Max: 2 }, { Count: 6, Max: 2, Min: -5 })
 1) (-5, 3, { Max: 3, Min: -5 }, { Count: 7, Min: -5 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -5 })
 2) (-5, 4, { Max: 4, Min: -5 }, { Count: 8, Min: -5 }, { Count: 8, Max: 4 }, { Count: 8, Max: 4, Min: -5 })
 3) (-5, 5, { Max: 5, Min: -5 }, { Count: 9, Min: -5 }, { Count: 9, Max: 5 }, { Count: 9, Max: 5, Min: -5 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-6, 3, { Max: 3, Min: -6 }, { Count: 6, Min: -6 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -6 })
*** Ctx ping count: 252
    [0](42): Min(*3: *1x, CastI8(Add(*3, Num<r8>(#2), [-] 5)))
    [1](42): Max(*3: *1x, CastI8(Add(*3, Num<r8>(#2), [-] 5)))
    [2](42): MinMax(*3: *1x, CastI8(Add(*3, Num<r8>(#2), [-] 5)))
    [3](42): MinC(*3: *1x, CastI8(Add(*3, Num<r8>(#2), [-] 5)))
    [4](42): MaxC(*3: *1x, CastI8(Add(*3, Num<r8>(#2), [-] 5)))
    [5](42): MinMaxC(*3: *1x, CastI8(Add(*3, Num<r8>(#2), [-] 5)))
###
> Req->Map((it->Min((it + #it - 5)->CastI4()), it->Max((it + #it - 5)->CastI4()), it->MinMax((it + #it - 5)->CastI4()), it->MinC((it + #it - 5)->CastI4()), it->MaxC((it + #it - 5)->CastI4()), it->MinMaxC((it + #it - 5)->CastI4())))
Req->Map((it->Min((it + #it - 5)->CastI4()), it->Max((it + #it - 5)->CastI4()), it->MinMax((it + #it - 5)->CastI4()), it->MinC((it + #it - 5)->CastI4()), it->MaxC((it + #it - 5)->CastI4()), it->MinMaxC((it + #it - 5)->CastI4()))) : (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
BndKind:Call, Type:(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:3] Scope(1), Call(∂.CastI4(Add(Scope(3), Num<r8>(Scope(2)), [-] 5:r8)):i4)):i4), Call(∂.Max([map:5] Scope(1), Call(∂.CastI4(Add(Scope(5), Num<r8>(Scope(4)), [-] 5:r8)):i4)):i4), Call(∂.MinMax([map:7] Scope(1), Call(∂.CastI4(Add(Scope(7), Num<r8>(Scope(6)), [-] 5:r8)):i4))), Call(∂.MinC([map:9] Scope(1), Call(∂.CastI4(Add(Scope(9), Num<r8>(Scope(8)), [-] 5:r8)):i4))), Call(∂.MaxC([map:11] Scope(1), Call(∂.CastI4(Add(Scope(11), Num<r8>(Scope(10)), [-] 5:r8)):i4))), Call(∂.MinMaxC([map:13] Scope(1), Call(∂.CastI4(Add(Scope(13), Num<r8>(Scope(12)), [-] 5:r8)):i4)))):(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})):(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*))
// (<ctx>, ∂.Req:r8**) : (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
Min_1(Arr<obj>, i8, r8):i4
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      1) ret
  Total Size: 21

Max_1(Arr<obj>, i8, r8):i4
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      1) ret
  Total Size: 21

MinMax_1(Arr<obj>, i8, r8):i4
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      1) ret
  Total Size: 21

MinC_1(Arr<obj>, i8, r8):i4
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      1) ret
  Total Size: 21

MaxC_1(Arr<obj>, i8, r8):i4
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      1) ret
  Total Size: 21

MinMaxC_1(Arr<obj>, i8, r8):i4
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      1) ret
  Total Size: 21

ForEach_1(Arr<obj>, Seq<r8>):(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})
      5) newobj (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,r8,i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<r8>, Func<i8,r8,i4>, ExecCtx, i4):i4
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F0:i4
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,r8,i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<r8>, Func<i8,r8,i4>, ExecCtx, i4):i4
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F1:i4
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,r8,i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i4,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i4,i4}::_B0:u1
      1) stloc.0 [{i4,i4}]
      1) ldloc.0 [{i4,i4}]
      5) ldflda {i4,i4}::_F1:i4
      1) ldloc.0 [{i4,i4}]
      5) ldflda {i4,i4}::_F0:i4
      5) call static MinMaxGen::ExecMinMaxInd(Seq<r8>, Func<i8,r8,i4>, ExecCtx, i4, out i4, out i4):Void
      1) ldloc.0 [{i4,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F2:{i4,i4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,r8,i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i4}::_B0:u1
      1) stloc.1 [{i8,i4}]
      1) ldloc.1 [{i8,i4}]
      5) ldflda {i8,i4}::_F1:i4
      5) call static MinMaxGen::ExecMinIndC(Seq<r8>, Func<i8,r8,i4>, ExecCtx, i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4}::_F0:i8
      1) ldloc.1 [{i8,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F3:{i8,i4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,r8,i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i4}::_B0:u1
      1) stloc.1 [{i8,i4}]
      1) ldloc.1 [{i8,i4}]
      5) ldflda {i8,i4}::_F1:i4
      5) call static MinMaxGen::ExecMaxIndC(Seq<r8>, Func<i8,r8,i4>, ExecCtx, i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4}::_F0:i8
      1) ldloc.1 [{i8,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F4:{i8,i4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,r8,i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i4,i4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i4,i4}::_B0:u1
      1) stloc.3 [{i8,i4,i4}]
      1) ldloc.3 [{i8,i4,i4}]
      5) ldflda {i8,i4,i4}::_F2:i4
      1) ldloc.3 [{i8,i4,i4}]
      5) ldflda {i8,i4,i4}::_F1:i4
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<r8>, Func<i8,r8,i4>, ExecCtx, i4, out i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i4,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4,i4}::_F0:i8
      1) ldloc.3 [{i8,i4,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F5:{i8,i4,i4}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>):Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>):Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
Sequence: Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
 0) (-5, 2, { Max: 2, Min: -5 }, { Count: 6, Min: -5 }, { Count: 6, Max: 2 }, { Count: 6, Max: 2, Min: -5 })
 1) (-5, 3, { Max: 3, Min: -5 }, { Count: 7, Min: -5 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -5 })
 2) (-5, 4, { Max: 4, Min: -5 }, { Count: 8, Min: -5 }, { Count: 8, Max: 4 }, { Count: 8, Max: 4, Min: -5 })
 3) (-5, 5, { Max: 5, Min: -5 }, { Count: 9, Min: -5 }, { Count: 9, Max: 5 }, { Count: 9, Max: 5, Min: -5 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-6, 3, { Max: 3, Min: -6 }, { Count: 6, Min: -6 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -6 })
*** Ctx ping count: 252
    [0](42): Min(*3: *1x, CastI4(Add(*3, Num<r8>(#2), [-] 5)))
    [1](42): Max(*3: *1x, CastI4(Add(*3, Num<r8>(#2), [-] 5)))
    [2](42): MinMax(*3: *1x, CastI4(Add(*3, Num<r8>(#2), [-] 5)))
    [3](42): MinC(*3: *1x, CastI4(Add(*3, Num<r8>(#2), [-] 5)))
    [4](42): MaxC(*3: *1x, CastI4(Add(*3, Num<r8>(#2), [-] 5)))
    [5](42): MinMaxC(*3: *1x, CastI4(Add(*3, Num<r8>(#2), [-] 5)))
###
> Req->Map((it->Min((it + #it - 5)->CastI2()), it->Max((it + #it - 5)->CastI2()), it->MinMax((it + #it - 5)->CastI2()), it->MinC((it + #it - 5)->CastI2()), it->MaxC((it + #it - 5)->CastI2()), it->MinMaxC((it + #it - 5)->CastI2())))
Req->Map((it->Min((it + #it - 5)->CastI2()), it->Max((it + #it - 5)->CastI2()), it->MinMax((it + #it - 5)->CastI2()), it->MinC((it + #it - 5)->CastI2()), it->MaxC((it + #it - 5)->CastI2()), it->MinMaxC((it + #it - 5)->CastI2()))) : (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
BndKind:Call, Type:(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:3] Scope(1), Call(∂.CastI2(Add(Scope(3), Num<r8>(Scope(2)), [-] 5:r8)):i2)):i2), Call(∂.Max([map:5] Scope(1), Call(∂.CastI2(Add(Scope(5), Num<r8>(Scope(4)), [-] 5:r8)):i2)):i2), Call(∂.MinMax([map:7] Scope(1), Call(∂.CastI2(Add(Scope(7), Num<r8>(Scope(6)), [-] 5:r8)):i2))), Call(∂.MinC([map:9] Scope(1), Call(∂.CastI2(Add(Scope(9), Num<r8>(Scope(8)), [-] 5:r8)):i2))), Call(∂.MaxC([map:11] Scope(1), Call(∂.CastI2(Add(Scope(11), Num<r8>(Scope(10)), [-] 5:r8)):i2))), Call(∂.MinMaxC([map:13] Scope(1), Call(∂.CastI2(Add(Scope(13), Num<r8>(Scope(12)), [-] 5:r8)):i2)))):(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})):(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*))
// (<ctx>, ∂.Req:r8**) : (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
Min_1(Arr<obj>, i8, r8):i2
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      1) ret
  Total Size: 21

Max_1(Arr<obj>, i8, r8):i2
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      1) ret
  Total Size: 21

MinMax_1(Arr<obj>, i8, r8):i2
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      1) ret
  Total Size: 21

MinC_1(Arr<obj>, i8, r8):i2
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      1) ret
  Total Size: 21

MaxC_1(Arr<obj>, i8, r8):i2
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      1) ret
  Total Size: 21

MinMaxC_1(Arr<obj>, i8, r8):i2
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      1) ret
  Total Size: 21

ForEach_1(Arr<obj>, Seq<r8>):(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})
      5) newobj (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,r8,i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<r8>, Func<i8,r8,i2>, ExecCtx, i4):i2
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F0:i2
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,r8,i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<r8>, Func<i8,r8,i2>, ExecCtx, i4):i2
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F1:i2
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,r8,i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i2,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i2,i2}::_B0:u1
      1) stloc.0 [{i2,i2}]
      1) ldloc.0 [{i2,i2}]
      5) ldflda {i2,i2}::_F1:i2
      1) ldloc.0 [{i2,i2}]
      5) ldflda {i2,i2}::_F0:i2
      5) call static MinMaxGen::ExecMinMaxInd(Seq<r8>, Func<i8,r8,i2>, ExecCtx, i4, out i2, out i2):Void
      1) ldloc.0 [{i2,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F2:{i2,i2}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,r8,i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i2}::_B0:u1
      1) stloc.1 [{i8,i2}]
      1) ldloc.1 [{i8,i2}]
      5) ldflda {i8,i2}::_F1:i2
      5) call static MinMaxGen::ExecMinIndC(Seq<r8>, Func<i8,r8,i2>, ExecCtx, i4, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2}::_F0:i8
      1) ldloc.1 [{i8,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F3:{i8,i2}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,r8,i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i2}::_B0:u1
      1) stloc.1 [{i8,i2}]
      1) ldloc.1 [{i8,i2}]
      5) ldflda {i8,i2}::_F1:i2
      5) call static MinMaxGen::ExecMaxIndC(Seq<r8>, Func<i8,r8,i2>, ExecCtx, i4, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2}::_F0:i8
      1) ldloc.1 [{i8,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F4:{i8,i2}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,r8,i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i2,i2}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i2,i2}::_B0:u1
      1) stloc.3 [{i8,i2,i2}]
      1) ldloc.3 [{i8,i2,i2}]
      5) ldflda {i8,i2,i2}::_F2:i2
      1) ldloc.3 [{i8,i2,i2}]
      5) ldflda {i8,i2,i2}::_F1:i2
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<r8>, Func<i8,r8,i2>, ExecCtx, i4, out i2, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i2,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2,i2}::_F0:i8
      1) ldloc.3 [{i8,i2,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F5:{i8,i2,i2}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>):Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>):Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
Sequence: Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
 0) (-5, 2, { Max: 2, Min: -5 }, { Count: 6, Min: -5 }, { Count: 6, Max: 2 }, { Count: 6, Max: 2, Min: -5 })
 1) (-5, 3, { Max: 3, Min: -5 }, { Count: 7, Min: -5 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -5 })
 2) (-5, 4, { Max: 4, Min: -5 }, { Count: 8, Min: -5 }, { Count: 8, Max: 4 }, { Count: 8, Max: 4, Min: -5 })
 3) (-5, 5, { Max: 5, Min: -5 }, { Count: 9, Min: -5 }, { Count: 9, Max: 5 }, { Count: 9, Max: 5, Min: -5 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-6, 3, { Max: 3, Min: -6 }, { Count: 6, Min: -6 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -6 })
*** Ctx ping count: 252
    [0](42): Min(*3: *1x, CastI2(Add(*3, Num<r8>(#2), [-] 5)))
    [1](42): Max(*3: *1x, CastI2(Add(*3, Num<r8>(#2), [-] 5)))
    [2](42): MinMax(*3: *1x, CastI2(Add(*3, Num<r8>(#2), [-] 5)))
    [3](42): MinC(*3: *1x, CastI2(Add(*3, Num<r8>(#2), [-] 5)))
    [4](42): MaxC(*3: *1x, CastI2(Add(*3, Num<r8>(#2), [-] 5)))
    [5](42): MinMaxC(*3: *1x, CastI2(Add(*3, Num<r8>(#2), [-] 5)))
###
> Req->Map((it->Min((it + #it - 5)->CastI1()), it->Max((it + #it - 5)->CastI1()), it->MinMax((it + #it - 5)->CastI1()), it->MinC((it + #it - 5)->CastI1()), it->MaxC((it + #it - 5)->CastI1()), it->MinMaxC((it + #it - 5)->CastI1())))
Req->Map((it->Min((it + #it - 5)->CastI1()), it->Max((it + #it - 5)->CastI1()), it->MinMax((it + #it - 5)->CastI1()), it->MinC((it + #it - 5)->CastI1()), it->MaxC((it + #it - 5)->CastI1()), it->MinMaxC((it + #it - 5)->CastI1()))) : (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
BndKind:Call, Type:(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:3] Scope(1), Call(∂.CastI1(Add(Scope(3), Num<r8>(Scope(2)), [-] 5:r8)):i1)):i1), Call(∂.Max([map:5] Scope(1), Call(∂.CastI1(Add(Scope(5), Num<r8>(Scope(4)), [-] 5:r8)):i1)):i1), Call(∂.MinMax([map:7] Scope(1), Call(∂.CastI1(Add(Scope(7), Num<r8>(Scope(6)), [-] 5:r8)):i1))), Call(∂.MinC([map:9] Scope(1), Call(∂.CastI1(Add(Scope(9), Num<r8>(Scope(8)), [-] 5:r8)):i1))), Call(∂.MaxC([map:11] Scope(1), Call(∂.CastI1(Add(Scope(11), Num<r8>(Scope(10)), [-] 5:r8)):i1))), Call(∂.MinMaxC([map:13] Scope(1), Call(∂.CastI1(Add(Scope(13), Num<r8>(Scope(12)), [-] 5:r8)):i1)))):(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})):(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*))
// (<ctx>, ∂.Req:r8**) : (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
Min_1(Arr<obj>, i8, r8):i1
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      1) ret
  Total Size: 21

Max_1(Arr<obj>, i8, r8):i1
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      1) ret
  Total Size: 21

MinMax_1(Arr<obj>, i8, r8):i1
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      1) ret
  Total Size: 21

MinC_1(Arr<obj>, i8, r8):i1
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      1) ret
  Total Size: 21

MaxC_1(Arr<obj>, i8, r8):i1
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      1) ret
  Total Size: 21

MinMaxC_1(Arr<obj>, i8, r8):i1
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      1) ret
  Total Size: 21

ForEach_1(Arr<obj>, Seq<r8>):(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})
      5) newobj (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,r8,i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<r8>, Func<i8,r8,i1>, ExecCtx, i4):i1
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F0:i1
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,r8,i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<r8>, Func<i8,r8,i1>, ExecCtx, i4):i1
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F1:i1
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,r8,i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i1,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i1,i1}::_B0:u1
      1) stloc.0 [{i1,i1}]
      1) ldloc.0 [{i1,i1}]
      5) ldflda {i1,i1}::_F1:i1
      1) ldloc.0 [{i1,i1}]
      5) ldflda {i1,i1}::_F0:i1
      5) call static MinMaxGen::ExecMinMaxInd(Seq<r8>, Func<i8,r8,i1>, ExecCtx, i4, out i1, out i1):Void
      1) ldloc.0 [{i1,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F2:{i1,i1}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,r8,i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i1}::_B0:u1
      1) stloc.1 [{i8,i1}]
      1) ldloc.1 [{i8,i1}]
      5) ldflda {i8,i1}::_F1:i1
      5) call static MinMaxGen::ExecMinIndC(Seq<r8>, Func<i8,r8,i1>, ExecCtx, i4, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1}::_F0:i8
      1) ldloc.1 [{i8,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F3:{i8,i1}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,r8,i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i1}::_B0:u1
      1) stloc.1 [{i8,i1}]
      1) ldloc.1 [{i8,i1}]
      5) ldflda {i8,i1}::_F1:i1
      5) call static MinMaxGen::ExecMaxIndC(Seq<r8>, Func<i8,r8,i1>, ExecCtx, i4, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1}::_F0:i8
      1) ldloc.1 [{i8,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F4:{i8,i1}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,r8,i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i1,i1}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i1,i1}::_B0:u1
      1) stloc.3 [{i8,i1,i1}]
      1) ldloc.3 [{i8,i1,i1}]
      5) ldflda {i8,i1,i1}::_F2:i1
      1) ldloc.3 [{i8,i1,i1}]
      5) ldflda {i8,i1,i1}::_F1:i1
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<r8>, Func<i8,r8,i1>, ExecCtx, i4, out i1, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i1,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1,i1}::_F0:i8
      1) ldloc.3 [{i8,i1,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F5:{i8,i1,i1}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>):Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>):Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
Sequence: Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
 0) (-5, 2, { Max: 2, Min: -5 }, { Count: 6, Min: -5 }, { Count: 6, Max: 2 }, { Count: 6, Max: 2, Min: -5 })
 1) (-5, 3, { Max: 3, Min: -5 }, { Count: 7, Min: -5 }, { Count: 7, Max: 3 }, { Count: 7, Max: 3, Min: -5 })
 2) (-5, 4, { Max: 4, Min: -5 }, { Count: 8, Min: -5 }, { Count: 8, Max: 4 }, { Count: 8, Max: 4, Min: -5 })
 3) (-5, 5, { Max: 5, Min: -5 }, { Count: 9, Min: -5 }, { Count: 9, Max: 5 }, { Count: 9, Max: 5, Min: -5 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (-6, 3, { Max: 3, Min: -6 }, { Count: 6, Min: -6 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -6 })
*** Ctx ping count: 252
    [0](42): Min(*3: *1x, CastI1(Add(*3, Num<r8>(#2), [-] 5)))
    [1](42): Max(*3: *1x, CastI1(Add(*3, Num<r8>(#2), [-] 5)))
    [2](42): MinMax(*3: *1x, CastI1(Add(*3, Num<r8>(#2), [-] 5)))
    [3](42): MinC(*3: *1x, CastI1(Add(*3, Num<r8>(#2), [-] 5)))
    [4](42): MaxC(*3: *1x, CastI1(Add(*3, Num<r8>(#2), [-] 5)))
    [5](42): MinMaxC(*3: *1x, CastI1(Add(*3, Num<r8>(#2), [-] 5)))
###
> Req->Map((it->Min((it + #it - 5)->CastU8()), it->Max((it + #it - 5)->CastU8()), it->MinMax((it + #it - 5)->CastU8()), it->MinC((it + #it - 5)->CastU8()), it->MaxC((it + #it - 5)->CastU8()), it->MinMaxC((it + #it - 5)->CastU8())))
Req->Map((it->Min((it + #it - 5)->CastU8()), it->Max((it + #it - 5)->CastU8()), it->MinMax((it + #it - 5)->CastU8()), it->MinC((it + #it - 5)->CastU8()), it->MaxC((it + #it - 5)->CastU8()), it->MinMaxC((it + #it - 5)->CastU8()))) : (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
BndKind:Call, Type:(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:3] Scope(1), Call(∂.CastU8(Add(Scope(3), Num<r8>(Scope(2)), [-] 5:r8)):u8)):u8), Call(∂.Max([map:5] Scope(1), Call(∂.CastU8(Add(Scope(5), Num<r8>(Scope(4)), [-] 5:r8)):u8)):u8), Call(∂.MinMax([map:7] Scope(1), Call(∂.CastU8(Add(Scope(7), Num<r8>(Scope(6)), [-] 5:r8)):u8))), Call(∂.MinC([map:9] Scope(1), Call(∂.CastU8(Add(Scope(9), Num<r8>(Scope(8)), [-] 5:r8)):u8))), Call(∂.MaxC([map:11] Scope(1), Call(∂.CastU8(Add(Scope(11), Num<r8>(Scope(10)), [-] 5:r8)):u8))), Call(∂.MinMaxC([map:13] Scope(1), Call(∂.CastU8(Add(Scope(13), Num<r8>(Scope(12)), [-] 5:r8)):u8)))):(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})):(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*))
// (<ctx>, ∂.Req:r8**) : (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
Min_1(Arr<obj>, i8, r8):u8
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 20

Max_1(Arr<obj>, i8, r8):u8
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 20

MinMax_1(Arr<obj>, i8, r8):u8
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 20

MinC_1(Arr<obj>, i8, r8):u8
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 20

MaxC_1(Arr<obj>, i8, r8):u8
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 20

MinMaxC_1(Arr<obj>, i8, r8):u8
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) ret
  Total Size: 20

ForEach_1(Arr<obj>, Seq<r8>):(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})
      5) newobj (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,r8,u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<r8>, Func<i8,r8,u8>, ExecCtx, i4):u8
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F0:u8
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,r8,u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<r8>, Func<i8,r8,u8>, ExecCtx, i4):u8
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F1:u8
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,r8,u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {u8,u8}::_B0:u1
      1) stloc.0 [{u8,u8}]
      1) ldloc.0 [{u8,u8}]
      5) ldflda {u8,u8}::_F1:u8
      1) ldloc.0 [{u8,u8}]
      5) ldflda {u8,u8}::_F0:u8
      5) call static MinMaxGen::ExecMinMaxInd(Seq<r8>, Func<i8,r8,u8>, ExecCtx, i4, out u8, out u8):Void
      1) ldloc.0 [{u8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F2:{u8,u8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,r8,u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u8}::_B0:u1
      1) stloc.1 [{i8,u8}]
      1) ldloc.1 [{i8,u8}]
      5) ldflda {i8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMinIndC(Seq<r8>, Func<i8,r8,u8>, ExecCtx, i4, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8}::_F0:i8
      1) ldloc.1 [{i8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F3:{i8,u8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,r8,u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u8}::_B0:u1
      1) stloc.1 [{i8,u8}]
      1) ldloc.1 [{i8,u8}]
      5) ldflda {i8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMaxIndC(Seq<r8>, Func<i8,r8,u8>, ExecCtx, i4, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8}::_F0:i8
      1) ldloc.1 [{i8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F4:{i8,u8}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,r8,u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u8,u8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u8,u8}::_B0:u1
      1) stloc.3 [{i8,u8,u8}]
      1) ldloc.3 [{i8,u8,u8}]
      5) ldflda {i8,u8,u8}::_F2:u8
      1) ldloc.3 [{i8,u8,u8}]
      5) ldflda {i8,u8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<r8>, Func<i8,r8,u8>, ExecCtx, i4, out u8, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8,u8}::_F0:i8
      1) ldloc.3 [{i8,u8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F5:{i8,u8,u8}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>):Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>):Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
Sequence: Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
 0) (0, 18446744073709551614, { Max: 18446744073709551614, Min: 0 }, { Count: 6, Min: 0 }, { Count: 6, Max: 18446744073709551614 }, { Count: 6, Max: 18446744073709551614, Min: 0 })
 1) (0, 18446744073709551615, { Max: 18446744073709551615, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 18446744073709551615 }, { Count: 7, Max: 18446744073709551615, Min: 0 })
 2) (0, 18446744073709551614, { Max: 18446744073709551614, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 18446744073709551614 }, { Count: 8, Max: 18446744073709551614, Min: 0 })
 3) (0, 18446744073709551614, { Max: 18446744073709551614, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 18446744073709551614 }, { Count: 9, Max: 18446744073709551614, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 18446744073709551615, { Max: 18446744073709551615, Min: 0 }, { Count: 6, Min: 0 }, { Count: 6, Max: 18446744073709551615 }, { Count: 6, Max: 18446744073709551615, Min: 0 })
*** Ctx ping count: 252
    [0](42): Min(*3: *1x, CastU8(Add(*3, Num<r8>(#2), [-] 5)))
    [1](42): Max(*3: *1x, CastU8(Add(*3, Num<r8>(#2), [-] 5)))
    [2](42): MinMax(*3: *1x, CastU8(Add(*3, Num<r8>(#2), [-] 5)))
    [3](42): MinC(*3: *1x, CastU8(Add(*3, Num<r8>(#2), [-] 5)))
    [4](42): MaxC(*3: *1x, CastU8(Add(*3, Num<r8>(#2), [-] 5)))
    [5](42): MinMaxC(*3: *1x, CastU8(Add(*3, Num<r8>(#2), [-] 5)))
###
> Req->Map((it->Min((it + #it - 5)->CastU4()), it->Max((it + #it - 5)->CastU4()), it->MinMax((it + #it - 5)->CastU4()), it->MinC((it + #it - 5)->CastU4()), it->MaxC((it + #it - 5)->CastU4()), it->MinMaxC((it + #it - 5)->CastU4())))
Req->Map((it->Min((it + #it - 5)->CastU4()), it->Max((it + #it - 5)->CastU4()), it->MinMax((it + #it - 5)->CastU4()), it->MinC((it + #it - 5)->CastU4()), it->MaxC((it + #it - 5)->CastU4()), it->MinMaxC((it + #it - 5)->CastU4()))) : (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
BndKind:Call, Type:(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:3] Scope(1), Call(∂.CastU4(Add(Scope(3), Num<r8>(Scope(2)), [-] 5:r8)):u4)):u4), Call(∂.Max([map:5] Scope(1), Call(∂.CastU4(Add(Scope(5), Num<r8>(Scope(4)), [-] 5:r8)):u4)):u4), Call(∂.MinMax([map:7] Scope(1), Call(∂.CastU4(Add(Scope(7), Num<r8>(Scope(6)), [-] 5:r8)):u4))), Call(∂.MinC([map:9] Scope(1), Call(∂.CastU4(Add(Scope(9), Num<r8>(Scope(8)), [-] 5:r8)):u4))), Call(∂.MaxC([map:11] Scope(1), Call(∂.CastU4(Add(Scope(11), Num<r8>(Scope(10)), [-] 5:r8)):u4))), Call(∂.MinMaxC([map:13] Scope(1), Call(∂.CastU4(Add(Scope(13), Num<r8>(Scope(12)), [-] 5:r8)):u4)))):(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})):(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*))
// (<ctx>, ∂.Req:r8**) : (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
Min_1(Arr<obj>, i8, r8):u4
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      1) ret
  Total Size: 21

Max_1(Arr<obj>, i8, r8):u4
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      1) ret
  Total Size: 21

MinMax_1(Arr<obj>, i8, r8):u4
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      1) ret
  Total Size: 21

MinC_1(Arr<obj>, i8, r8):u4
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      1) ret
  Total Size: 21

MaxC_1(Arr<obj>, i8, r8):u4
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      1) ret
  Total Size: 21

MinMaxC_1(Arr<obj>, i8, r8):u4
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      1) ret
  Total Size: 21

ForEach_1(Arr<obj>, Seq<r8>):(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})
      5) newobj (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,r8,u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<r8>, Func<i8,r8,u4>, ExecCtx, i4):u4
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F0:u4
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,r8,u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<r8>, Func<i8,r8,u4>, ExecCtx, i4):u4
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F1:u4
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,r8,u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u4,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {u4,u4}::_B0:u1
      1) stloc.0 [{u4,u4}]
      1) ldloc.0 [{u4,u4}]
      5) ldflda {u4,u4}::_F1:u4
      1) ldloc.0 [{u4,u4}]
      5) ldflda {u4,u4}::_F0:u4
      5) call static MinMaxGen::ExecMinMaxInd(Seq<r8>, Func<i8,r8,u4>, ExecCtx, i4, out u4, out u4):Void
      1) ldloc.0 [{u4,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F2:{u4,u4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,r8,u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u4}::_B0:u1
      1) stloc.1 [{i8,u4}]
      1) ldloc.1 [{i8,u4}]
      5) ldflda {i8,u4}::_F1:u4
      5) call static MinMaxGen::ExecMinIndC(Seq<r8>, Func<i8,r8,u4>, ExecCtx, i4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4}::_F0:i8
      1) ldloc.1 [{i8,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F3:{i8,u4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,r8,u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u4}::_B0:u1
      1) stloc.1 [{i8,u4}]
      1) ldloc.1 [{i8,u4}]
      5) ldflda {i8,u4}::_F1:u4
      5) call static MinMaxGen::ExecMaxIndC(Seq<r8>, Func<i8,r8,u4>, ExecCtx, i4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4}::_F0:i8
      1) ldloc.1 [{i8,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F4:{i8,u4}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,r8,u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u4,u4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u4,u4}::_B0:u1
      1) stloc.3 [{i8,u4,u4}]
      1) ldloc.3 [{i8,u4,u4}]
      5) ldflda {i8,u4,u4}::_F2:u4
      1) ldloc.3 [{i8,u4,u4}]
      5) ldflda {i8,u4,u4}::_F1:u4
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<r8>, Func<i8,r8,u4>, ExecCtx, i4, out u4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u4,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4,u4}::_F0:i8
      1) ldloc.3 [{i8,u4,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F5:{i8,u4,u4}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>):Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>):Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
Sequence: Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
 0) (0, 4294967294, { Max: 4294967294, Min: 0 }, { Count: 6, Min: 0 }, { Count: 6, Max: 4294967294 }, { Count: 6, Max: 4294967294, Min: 0 })
 1) (0, 4294967295, { Max: 4294967295, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 4294967295 }, { Count: 7, Max: 4294967295, Min: 0 })
 2) (0, 4294967294, { Max: 4294967294, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 4294967294 }, { Count: 8, Max: 4294967294, Min: 0 })
 3) (0, 4294967294, { Max: 4294967294, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 4294967294 }, { Count: 9, Max: 4294967294, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 4294967295, { Max: 4294967295, Min: 0 }, { Count: 6, Min: 0 }, { Count: 6, Max: 4294967295 }, { Count: 6, Max: 4294967295, Min: 0 })
*** Ctx ping count: 252
    [0](42): Min(*3: *1x, CastU4(Add(*3, Num<r8>(#2), [-] 5)))
    [1](42): Max(*3: *1x, CastU4(Add(*3, Num<r8>(#2), [-] 5)))
    [2](42): MinMax(*3: *1x, CastU4(Add(*3, Num<r8>(#2), [-] 5)))
    [3](42): MinC(*3: *1x, CastU4(Add(*3, Num<r8>(#2), [-] 5)))
    [4](42): MaxC(*3: *1x, CastU4(Add(*3, Num<r8>(#2), [-] 5)))
    [5](42): MinMaxC(*3: *1x, CastU4(Add(*3, Num<r8>(#2), [-] 5)))
###
> Req->Map((it->Min((it + #it - 5)->CastU2()), it->Max((it + #it - 5)->CastU2()), it->MinMax((it + #it - 5)->CastU2()), it->MinC((it + #it - 5)->CastU2()), it->MaxC((it + #it - 5)->CastU2()), it->MinMaxC((it + #it - 5)->CastU2())))
Req->Map((it->Min((it + #it - 5)->CastU2()), it->Max((it + #it - 5)->CastU2()), it->MinMax((it + #it - 5)->CastU2()), it->MinC((it + #it - 5)->CastU2()), it->MaxC((it + #it - 5)->CastU2()), it->MinMaxC((it + #it - 5)->CastU2()))) : (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
BndKind:Call, Type:(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:3] Scope(1), Call(∂.CastU2(Add(Scope(3), Num<r8>(Scope(2)), [-] 5:r8)):u2)):u2), Call(∂.Max([map:5] Scope(1), Call(∂.CastU2(Add(Scope(5), Num<r8>(Scope(4)), [-] 5:r8)):u2)):u2), Call(∂.MinMax([map:7] Scope(1), Call(∂.CastU2(Add(Scope(7), Num<r8>(Scope(6)), [-] 5:r8)):u2))), Call(∂.MinC([map:9] Scope(1), Call(∂.CastU2(Add(Scope(9), Num<r8>(Scope(8)), [-] 5:r8)):u2))), Call(∂.MaxC([map:11] Scope(1), Call(∂.CastU2(Add(Scope(11), Num<r8>(Scope(10)), [-] 5:r8)):u2))), Call(∂.MinMaxC([map:13] Scope(1), Call(∂.CastU2(Add(Scope(13), Num<r8>(Scope(12)), [-] 5:r8)):u2)))):(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})):(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*))
// (<ctx>, ∂.Req:r8**) : (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
Min_1(Arr<obj>, i8, r8):u2
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      1) ret
  Total Size: 21

Max_1(Arr<obj>, i8, r8):u2
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      1) ret
  Total Size: 21

MinMax_1(Arr<obj>, i8, r8):u2
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      1) ret
  Total Size: 21

MinC_1(Arr<obj>, i8, r8):u2
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      1) ret
  Total Size: 21

MaxC_1(Arr<obj>, i8, r8):u2
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      1) ret
  Total Size: 21

MinMaxC_1(Arr<obj>, i8, r8):u2
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      1) ret
  Total Size: 21

ForEach_1(Arr<obj>, Seq<r8>):(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})
      5) newobj (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,r8,u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<r8>, Func<i8,r8,u2>, ExecCtx, i4):u2
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F0:u2
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,r8,u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<r8>, Func<i8,r8,u2>, ExecCtx, i4):u2
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F1:u2
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,r8,u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u2,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {u2,u2}::_B0:u1
      1) stloc.0 [{u2,u2}]
      1) ldloc.0 [{u2,u2}]
      5) ldflda {u2,u2}::_F1:u2
      1) ldloc.0 [{u2,u2}]
      5) ldflda {u2,u2}::_F0:u2
      5) call static MinMaxGen::ExecMinMaxInd(Seq<r8>, Func<i8,r8,u2>, ExecCtx, i4, out u2, out u2):Void
      1) ldloc.0 [{u2,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F2:{u2,u2}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,r8,u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u2}::_B0:u1
      1) stloc.1 [{i8,u2}]
      1) ldloc.1 [{i8,u2}]
      5) ldflda {i8,u2}::_F1:u2
      5) call static MinMaxGen::ExecMinIndC(Seq<r8>, Func<i8,r8,u2>, ExecCtx, i4, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2}::_F0:i8
      1) ldloc.1 [{i8,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F3:{i8,u2}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,r8,u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u2}::_B0:u1
      1) stloc.1 [{i8,u2}]
      1) ldloc.1 [{i8,u2}]
      5) ldflda {i8,u2}::_F1:u2
      5) call static MinMaxGen::ExecMaxIndC(Seq<r8>, Func<i8,r8,u2>, ExecCtx, i4, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2}::_F0:i8
      1) ldloc.1 [{i8,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F4:{i8,u2}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,r8,u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u2,u2}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u2,u2}::_B0:u1
      1) stloc.3 [{i8,u2,u2}]
      1) ldloc.3 [{i8,u2,u2}]
      5) ldflda {i8,u2,u2}::_F2:u2
      1) ldloc.3 [{i8,u2,u2}]
      5) ldflda {i8,u2,u2}::_F1:u2
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<r8>, Func<i8,r8,u2>, ExecCtx, i4, out u2, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u2,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2,u2}::_F0:i8
      1) ldloc.3 [{i8,u2,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F5:{i8,u2,u2}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>):Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>):Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
Sequence: Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
 0) (0, 65534, { Max: 65534, Min: 0 }, { Count: 6, Min: 0 }, { Count: 6, Max: 65534 }, { Count: 6, Max: 65534, Min: 0 })
 1) (0, 65535, { Max: 65535, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 65535 }, { Count: 7, Max: 65535, Min: 0 })
 2) (0, 65534, { Max: 65534, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 65534 }, { Count: 8, Max: 65534, Min: 0 })
 3) (0, 65534, { Max: 65534, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 65534 }, { Count: 9, Max: 65534, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 65535, { Max: 65535, Min: 0 }, { Count: 6, Min: 0 }, { Count: 6, Max: 65535 }, { Count: 6, Max: 65535, Min: 0 })
*** Ctx ping count: 252
    [0](42): Min(*3: *1x, CastU2(Add(*3, Num<r8>(#2), [-] 5)))
    [1](42): Max(*3: *1x, CastU2(Add(*3, Num<r8>(#2), [-] 5)))
    [2](42): MinMax(*3: *1x, CastU2(Add(*3, Num<r8>(#2), [-] 5)))
    [3](42): MinC(*3: *1x, CastU2(Add(*3, Num<r8>(#2), [-] 5)))
    [4](42): MaxC(*3: *1x, CastU2(Add(*3, Num<r8>(#2), [-] 5)))
    [5](42): MinMaxC(*3: *1x, CastU2(Add(*3, Num<r8>(#2), [-] 5)))
###
> Req->Map((it->Min((it + #it - 5)->CastU1()), it->Max((it + #it - 5)->CastU1()), it->MinMax((it + #it - 5)->CastU1()), it->MinC((it + #it - 5)->CastU1()), it->MaxC((it + #it - 5)->CastU1()), it->MinMaxC((it + #it - 5)->CastU1())))
Req->Map((it->Min((it + #it - 5)->CastU1()), it->Max((it + #it - 5)->CastU1()), it->MinMax((it + #it - 5)->CastU1()), it->MinC((it + #it - 5)->CastU1()), it->MaxC((it + #it - 5)->CastU1()), it->MinMaxC((it + #it - 5)->CastU1()))) : (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
BndKind:Call, Type:(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*, Bnd:(Call(∂.ForEach([map:1] Global(Req), (Call(∂.Min([map:3] Scope(1), Call(∂.CastU1(Add(Scope(3), Num<r8>(Scope(2)), [-] 5:r8)):u1)):u1), Call(∂.Max([map:5] Scope(1), Call(∂.CastU1(Add(Scope(5), Num<r8>(Scope(4)), [-] 5:r8)):u1)):u1), Call(∂.MinMax([map:7] Scope(1), Call(∂.CastU1(Add(Scope(7), Num<r8>(Scope(6)), [-] 5:r8)):u1))), Call(∂.MinC([map:9] Scope(1), Call(∂.CastU1(Add(Scope(9), Num<r8>(Scope(8)), [-] 5:r8)):u1))), Call(∂.MaxC([map:11] Scope(1), Call(∂.CastU1(Add(Scope(11), Num<r8>(Scope(10)), [-] 5:r8)):u1))), Call(∂.MinMaxC([map:13] Scope(1), Call(∂.CastU1(Add(Scope(13), Num<r8>(Scope(12)), [-] 5:r8)):u1)))):(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})):(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*))
// (<ctx>, ∂.Req:r8**) : (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
Min_1(Arr<obj>, i8, r8):u1
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      1) ret
  Total Size: 21

Max_1(Arr<obj>, i8, r8):u1
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      1) ret
  Total Size: 21

MinMax_1(Arr<obj>, i8, r8):u1
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      1) ret
  Total Size: 21

MinC_1(Arr<obj>, i8, r8):u1
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      1) ret
  Total Size: 21

MaxC_1(Arr<obj>, i8, r8):u1
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      1) ret
  Total Size: 21

MinMaxC_1(Arr<obj>, i8, r8):u1
      1) ldarg.2 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      1) ret
  Total Size: 21

ForEach_1(Arr<obj>, Seq<r8>):(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})
      5) newobj (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})()
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,r8,u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<r8>, Func<i8,r8,u1>, ExecCtx, i4):u1
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F0:u1
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,r8,u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<r8>, Func<i8,r8,u1>, ExecCtx, i4):u1
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F1:u1
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,r8,u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u1,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {u1,u1}::_B0:u1
      1) stloc.0 [{u1,u1}]
      1) ldloc.0 [{u1,u1}]
      5) ldflda {u1,u1}::_F1:u1
      1) ldloc.0 [{u1,u1}]
      5) ldflda {u1,u1}::_F0:u1
      5) call static MinMaxGen::ExecMinMaxInd(Seq<r8>, Func<i8,r8,u1>, ExecCtx, i4, out u1, out u1):Void
      1) ldloc.0 [{u1,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F2:{u1,u1}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,r8,u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u1}::_B0:u1
      1) stloc.1 [{i8,u1}]
      1) ldloc.1 [{i8,u1}]
      5) ldflda {i8,u1}::_F1:u1
      5) call static MinMaxGen::ExecMinIndC(Seq<r8>, Func<i8,r8,u1>, ExecCtx, i4, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1}::_F0:i8
      1) ldloc.1 [{i8,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F3:{i8,u1}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,r8,u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u1}::_B0:u1
      1) stloc.1 [{i8,u1}]
      1) ldloc.1 [{i8,u1}]
      5) ldflda {i8,u1}::_F1:u1
      5) call static MinMaxGen::ExecMaxIndC(Seq<r8>, Func<i8,r8,u1>, ExecCtx, i4, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1}::_F0:i8
      1) ldloc.1 [{i8,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F4:{i8,u1}
      1) dup
      1) ldarg.1 [Seq<r8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,r8,u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u1,u1}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u1,u1}::_B0:u1
      1) stloc.3 [{i8,u1,u1}]
      1) ldloc.3 [{i8,u1,u1}]
      5) ldflda {i8,u1,u1}::_F2:u1
      1) ldloc.3 [{i8,u1,u1}]
      5) ldflda {i8,u1,u1}::_F1:u1
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<r8>, Func<i8,r8,u1>, ExecCtx, i4, out u1, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u1,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1,u1}::_F0:i8
      1) ldloc.3 [{i8,u1,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F5:{i8,u1,u1}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<r8>>
      1) stloc.1 [Seq<Seq<r8>>]
      1) ldloc.1 [Seq<Seq<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<r8>,(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<r8>>, Func<Seq<r8>,(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>):Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>):Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Req:r8**) to (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
Sequence: Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
 0) (0, 254, { Max: 254, Min: 0 }, { Count: 6, Min: 0 }, { Count: 6, Max: 254 }, { Count: 6, Max: 254, Min: 0 })
 1) (0, 255, { Max: 255, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 255 }, { Count: 7, Max: 255, Min: 0 })
 2) (0, 254, { Max: 254, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 254 }, { Count: 8, Max: 254, Min: 0 })
 3) (0, 254, { Max: 254, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 254 }, { Count: 9, Max: 254, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 255, { Max: 255, Min: 0 }, { Count: 6, Min: 0 }, { Count: 6, Max: 255 }, { Count: 6, Max: 255, Min: 0 })
*** Ctx ping count: 252
    [0](42): Min(*3: *1x, CastU1(Add(*3, Num<r8>(#2), [-] 5)))
    [1](42): Max(*3: *1x, CastU1(Add(*3, Num<r8>(#2), [-] 5)))
    [2](42): MinMax(*3: *1x, CastU1(Add(*3, Num<r8>(#2), [-] 5)))
    [3](42): MinC(*3: *1x, CastU1(Add(*3, Num<r8>(#2), [-] 5)))
    [4](42): MaxC(*3: *1x, CastU1(Add(*3, Num<r8>(#2), [-] 5)))
    [5](42): MinMaxC(*3: *1x, CastU1(Add(*3, Num<r8>(#2), [-] 5)))
###
> RB->Map((it->Min(it and #it mod 2 = 0), it->Max(it and #it mod 2 = 0), it->MinMax(it and #it mod 2 = 0), it->MinC(it and #it mod 2 = 0), it->MaxC(it and #it mod 2 = 0), it->MinMaxC(it and #it mod 2 = 0)))
RB->Map((it->Min(it and #it mod 2 @= 0), it->Max(it and #it mod 2 @= 0), it->MinMax(it and #it mod 2 @= 0), it->MinC(it and #it mod 2 @= 0), it->MaxC(it and #it mod 2 @= 0), it->MinMaxC(it and #it mod 2 @= 0))) : (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
BndKind:Call, Type:(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*, Bnd:(Call(∂.ForEach([map:1] Global(RB), (Call(∂.Min([map:3] Scope(1), And(Scope(3), Cmp(IntMod(Scope(2), 2:i8) @= 0:i8))):b), Call(∂.Max([map:5] Scope(1), And(Scope(5), Cmp(IntMod(Scope(4), 2:i8) @= 0:i8))):b), Call(∂.MinMax([map:7] Scope(1), And(Scope(7), Cmp(IntMod(Scope(6), 2:i8) @= 0:i8)))), Call(∂.MinC([map:9] Scope(1), And(Scope(9), Cmp(IntMod(Scope(8), 2:i8) @= 0:i8)))), Call(∂.MaxC([map:11] Scope(1), And(Scope(11), Cmp(IntMod(Scope(10), 2:i8) @= 0:i8)))), Call(∂.MinMaxC([map:13] Scope(1), And(Scope(13), Cmp(IntMod(Scope(12), 2:i8) @= 0:i8))))):(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})):(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*))
// (<ctx>, ∂.RB:b**) : (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
Min_1(Arr<obj>, i8, bool):bool
      1) ldarg.2 [bool]
      1) dup
      5) brfalse [0]
      1) pop
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
  Label [0]:
      1) ret
  Total Size: 17

Max_1(Arr<obj>, i8, bool):bool
      1) ldarg.2 [bool]
      1) dup
      5) brfalse [0]
      1) pop
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
  Label [0]:
      1) ret
  Total Size: 17

MinMax_1(Arr<obj>, i8, bool):bool
      1) ldarg.2 [bool]
      1) dup
      5) brfalse [0]
      1) pop
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
  Label [0]:
      1) ret
  Total Size: 17

MinC_1(Arr<obj>, i8, bool):bool
      1) ldarg.2 [bool]
      1) dup
      5) brfalse [0]
      1) pop
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
  Label [0]:
      1) ret
  Total Size: 17

MaxC_1(Arr<obj>, i8, bool):bool
      1) ldarg.2 [bool]
      1) dup
      5) brfalse [0]
      1) pop
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
  Label [0]:
      1) ret
  Total Size: 17

MinMaxC_1(Arr<obj>, i8, bool):bool
      1) ldarg.2 [bool]
      1) dup
      5) brfalse [0]
      1) pop
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
  Label [0]:
      1) ret
  Total Size: 17

ForEach_1(Arr<obj>, Seq<bool>):(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})
      5) newobj (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})()
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,bool,bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<bool>, Func<i8,bool,bool>, ExecCtx, i4):bool
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F0:bool
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,bool,bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<bool>, Func<i8,bool,bool>, ExecCtx, i4):bool
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F1:bool
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,bool,bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {bool,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {bool,bool}::_B0:u1
      1) stloc.0 [{bool,bool}]
      1) ldloc.0 [{bool,bool}]
      5) ldflda {bool,bool}::_F1:bool
      1) ldloc.0 [{bool,bool}]
      5) ldflda {bool,bool}::_F0:bool
      5) call static MinMaxGen::ExecMinMaxInd(Seq<bool>, Func<i8,bool,bool>, ExecCtx, i4, out bool, out bool):Void
      1) ldloc.0 [{bool,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F2:{bool,bool}
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,bool,bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,bool}::_B0:u1
      1) stloc.1 [{i8,bool}]
      1) ldloc.1 [{i8,bool}]
      5) ldflda {i8,bool}::_F1:bool
      5) call static MinMaxGen::ExecMinIndC(Seq<bool>, Func<i8,bool,bool>, ExecCtx, i4, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool}::_F0:i8
      1) ldloc.1 [{i8,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F3:{i8,bool}
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,bool,bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,bool}::_B0:u1
      1) stloc.1 [{i8,bool}]
      1) ldloc.1 [{i8,bool}]
      5) ldflda {i8,bool}::_F1:bool
      5) call static MinMaxGen::ExecMaxIndC(Seq<bool>, Func<i8,bool,bool>, ExecCtx, i4, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool}::_F0:i8
      1) ldloc.1 [{i8,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F4:{i8,bool}
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,bool,bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,bool,bool}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,bool,bool}::_B0:u1
      1) stloc.3 [{i8,bool,bool}]
      1) ldloc.3 [{i8,bool,bool}]
      5) ldflda {i8,bool,bool}::_F2:bool
      1) ldloc.3 [{i8,bool,bool}]
      5) ldflda {i8,bool,bool}::_F1:bool
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<bool>, Func<i8,bool,bool>, ExecCtx, i4, out bool, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,bool,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool,bool}::_F0:i8
      1) ldloc.3 [{i8,bool,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F5:{i8,bool,bool}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<bool>>
      1) stloc.1 [Seq<Seq<bool>>]
      1) ldloc.1 [Seq<Seq<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<bool>,(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<bool>>, Func<Seq<bool>,(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>):Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>):Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, RB:b**) to (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
Sequence: Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
 0) (false, true , { Max: true , Min: false }, { Count: 6, Min: false }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: false })
 1) (false, false, { Max: false, Min: false }, { Count: 6, Min: false }, { Count: 6, Max: false }, { Count: 6, Max: false, Min: false })
 2) (false, true , { Max: true , Min: false }, { Count: 6, Min: false }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: false })
 3) (false, true , { Max: true , Min: false }, { Count: 6, Min: false }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: false })
 4) (false, false, { Max: false, Min: false }, { Count: 0, Min: false }, { Count: 0, Max: false }, { Count: 0, Max: false, Min: false })
 5) (false, false, { Max: false, Min: false }, { Count: 0, Min: false }, { Count: 0, Max: false }, { Count: 0, Max: false, Min: false })
*** Ctx ping count: 126
    [0](7): Min(*3: *1x, And(*3, IntMod(#2, 2) @= 0))
    [1](15): Max(*3: *1x, And(*3, IntMod(#2, 2) @= 0))
    [2](17): MinMax(*3: *1x, And(*3, IntMod(#2, 2) @= 0))
    [3](29): MinC(*3: *1x, And(*3, IntMod(#2, 2) @= 0))
    [4](29): MaxC(*3: *1x, And(*3, IntMod(#2, 2) @= 0))
    [5](29): MinMaxC(*3: *1x, And(*3, IntMod(#2, 2) @= 0))
###
> RB->Map((it->Min(it or #it mod 2 = 0), it->Max(it or #it mod 2 = 0), it->MinMax(it or #it mod 2 = 0), it->MinC(it or #it mod 2 = 0), it->MaxC(it or #it mod 2 = 0), it->MinMaxC(it or #it mod 2 = 0)))
RB->Map((it->Min(it or #it mod 2 @= 0), it->Max(it or #it mod 2 @= 0), it->MinMax(it or #it mod 2 @= 0), it->MinC(it or #it mod 2 @= 0), it->MaxC(it or #it mod 2 @= 0), it->MinMaxC(it or #it mod 2 @= 0))) : (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
BndKind:Call, Type:(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*, Bnd:(Call(∂.ForEach([map:1] Global(RB), (Call(∂.Min([map:3] Scope(1), Or(Scope(3), Cmp(IntMod(Scope(2), 2:i8) @= 0:i8))):b), Call(∂.Max([map:5] Scope(1), Or(Scope(5), Cmp(IntMod(Scope(4), 2:i8) @= 0:i8))):b), Call(∂.MinMax([map:7] Scope(1), Or(Scope(7), Cmp(IntMod(Scope(6), 2:i8) @= 0:i8)))), Call(∂.MinC([map:9] Scope(1), Or(Scope(9), Cmp(IntMod(Scope(8), 2:i8) @= 0:i8)))), Call(∂.MaxC([map:11] Scope(1), Or(Scope(11), Cmp(IntMod(Scope(10), 2:i8) @= 0:i8)))), Call(∂.MinMaxC([map:13] Scope(1), Or(Scope(13), Cmp(IntMod(Scope(12), 2:i8) @= 0:i8))))):(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})):(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*))
// (<ctx>, ∂.RB:b**) : (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
Min_1(Arr<obj>, i8, bool):bool
      1) ldarg.2 [bool]
      1) dup
      5) brtrue [0]
      1) pop
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
  Label [0]:
      1) ret
  Total Size: 17

Max_1(Arr<obj>, i8, bool):bool
      1) ldarg.2 [bool]
      1) dup
      5) brtrue [0]
      1) pop
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
  Label [0]:
      1) ret
  Total Size: 17

MinMax_1(Arr<obj>, i8, bool):bool
      1) ldarg.2 [bool]
      1) dup
      5) brtrue [0]
      1) pop
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
  Label [0]:
      1) ret
  Total Size: 17

MinC_1(Arr<obj>, i8, bool):bool
      1) ldarg.2 [bool]
      1) dup
      5) brtrue [0]
      1) pop
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
  Label [0]:
      1) ret
  Total Size: 17

MaxC_1(Arr<obj>, i8, bool):bool
      1) ldarg.2 [bool]
      1) dup
      5) brtrue [0]
      1) pop
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
  Label [0]:
      1) ret
  Total Size: 17

MinMaxC_1(Arr<obj>, i8, bool):bool
      1) ldarg.2 [bool]
      1) dup
      5) brtrue [0]
      1) pop
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
  Label [0]:
      1) ret
  Total Size: 17

ForEach_1(Arr<obj>, Seq<bool>):(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})
      5) newobj (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})()
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,bool,bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<bool>, Func<i8,bool,bool>, ExecCtx, i4):bool
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F0:bool
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,bool,bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<bool>, Func<i8,bool,bool>, ExecCtx, i4):bool
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F1:bool
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,bool,bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {bool,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {bool,bool}::_B0:u1
      1) stloc.0 [{bool,bool}]
      1) ldloc.0 [{bool,bool}]
      5) ldflda {bool,bool}::_F1:bool
      1) ldloc.0 [{bool,bool}]
      5) ldflda {bool,bool}::_F0:bool
      5) call static MinMaxGen::ExecMinMaxInd(Seq<bool>, Func<i8,bool,bool>, ExecCtx, i4, out bool, out bool):Void
      1) ldloc.0 [{bool,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F2:{bool,bool}
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,bool,bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,bool}::_B0:u1
      1) stloc.1 [{i8,bool}]
      1) ldloc.1 [{i8,bool}]
      5) ldflda {i8,bool}::_F1:bool
      5) call static MinMaxGen::ExecMinIndC(Seq<bool>, Func<i8,bool,bool>, ExecCtx, i4, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool}::_F0:i8
      1) ldloc.1 [{i8,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F3:{i8,bool}
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,bool,bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,bool}::_B0:u1
      1) stloc.1 [{i8,bool}]
      1) ldloc.1 [{i8,bool}]
      5) ldflda {i8,bool}::_F1:bool
      5) call static MinMaxGen::ExecMaxIndC(Seq<bool>, Func<i8,bool,bool>, ExecCtx, i4, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool}::_F0:i8
      1) ldloc.1 [{i8,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F4:{i8,bool}
      1) dup
      1) ldarg.1 [Seq<bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,bool,bool>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,bool,bool}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,bool,bool}::_B0:u1
      1) stloc.3 [{i8,bool,bool}]
      1) ldloc.3 [{i8,bool,bool}]
      5) ldflda {i8,bool,bool}::_F2:bool
      1) ldloc.3 [{i8,bool,bool}]
      5) ldflda {i8,bool,bool}::_F1:bool
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<bool>, Func<i8,bool,bool>, ExecCtx, i4, out bool, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,bool,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool,bool}::_F0:i8
      1) ldloc.3 [{i8,bool,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F5:{i8,bool,bool}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<bool>>
      1) stloc.1 [Seq<Seq<bool>>]
      1) ldloc.1 [Seq<Seq<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<bool>,(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<bool>>, Func<Seq<bool>,(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>):Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>):Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, RB:b**) to (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
Sequence: Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
 0) (true , true , { Max: true , Min: true  }, { Count: 6, Min: true  }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: true  })
 1) (false, true , { Max: true , Min: false }, { Count: 6, Min: false }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: false })
 2) (false, true , { Max: true , Min: false }, { Count: 6, Min: false }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: false })
 3) (false, true , { Max: true , Min: false }, { Count: 6, Min: false }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: false })
 4) (false, false, { Max: false, Min: false }, { Count: 0, Min: false }, { Count: 0, Max: false }, { Count: 0, Max: false, Min: false })
 5) (false, false, { Max: false, Min: false }, { Count: 0, Min: false }, { Count: 0, Max: false }, { Count: 0, Max: false, Min: false })
*** Ctx ping count: 124
    [0](16): Min(*3: *1x, Or(*3, IntMod(#2, 2) @= 0))
    [1](5): Max(*3: *1x, Or(*3, IntMod(#2, 2) @= 0))
    [2](16): MinMax(*3: *1x, Or(*3, IntMod(#2, 2) @= 0))
    [3](29): MinC(*3: *1x, Or(*3, IntMod(#2, 2) @= 0))
    [4](29): MaxC(*3: *1x, Or(*3, IntMod(#2, 2) @= 0))
    [5](29): MinMaxC(*3: *1x, Or(*3, IntMod(#2, 2) @= 0))
###
> Opt->Map(it->Map(it + #it - 5))
Opt->Map(it->Map(it + #it - 5)) : r8?**
BndKind:Call, Type:r8?**, Bnd:(Call(∂.ForEach([map:1] Global(Opt), Call(∂.ForEach([map:3] Scope(1), Call(∂.Guard([guard:4] Scope(3), Add(Scope(4), Num<r8>(Scope(2)), [-] 5:r8)):r8?)):r8?*)):r8?**))
// (∂.Opt:r8?**) : r8?**
ForEach_1(Arr<obj>, i8, Opt<r8>):Opt<r8>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) newobj Opt<r8>(r8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<r8>
  Label [1]:
      1) ret
  Total Size: 50

ForEach_1(Arr<obj>, Seq<Opt<r8>>):Seq<Opt<r8>>
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,Opt<r8>,Opt<r8>>]
      5) call static ForEachGen::ExecInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<r8>>):Seq<Opt<r8>>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<Opt<r8>>):Seq<Opt<r8>>
      1) ret
  Total Size: 19

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.0 [Seq<Seq<Opt<r8>>>]
      1) ldloc.0 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<Seq<Opt<r8>>,Seq<Opt<r8>>>]
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,Seq<Opt<r8>>>):Seq<Seq<Opt<r8>>>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<Seq<Opt<r8>>>):Seq<Seq<Opt<r8>>>
      1) ret
  Total Size: 28

Func sig: (Opt:r8?**) to r8?**
Sequence: Seq<Seq<Opt<r8>>>
 0) Sequence: Seq<Opt<r8>>
     0) -2
     1) -5
     2) -0.5
     3) <null>
     4) 2
     5) -1
     6) 3.5
 1) Sequence: Seq<Opt<r8>>
     0) -2
     1) -5
     2) -0.5
     3) <null>
     4) NaN
     5) 3
     6) 0
     7) 4.5
 2) Sequence: Seq<Opt<r8>>
     0) -2
     1) -5
     2) -0.5
     3) <null>
     4) ∞
     5) -∞
     6) 4
     7) 1
     8) 5.5
 3) Sequence: Seq<Opt<r8>>
     0) -2
     1) -5
     2) -0.5
     3) <null>
     4) ∞
     5) NaN
     6) -∞
     7) 5
     8) 2
     9) 6.5
 4) <null>
 5) Sequence: Seq<Opt<r8>>
     0) <null>
 6) <null>
 7) Sequence: Seq<Opt<r8>>
     0) -6
     1) -1.5
     2) 0
     3) <null>
     4) -2
     5) 2.5
     6) 4
###
> Opt->Map((it->Min((it + #it - 5)->CastR8()), it->Max((it + #it - 5)->CastR8()), it->MinMax((it + #it - 5)->CastR8()), it->MinC((it + #it - 5)->CastR8()), it->MaxC((it + #it - 5)->CastR8()), it->MinMaxC((it + #it - 5)->CastR8())))
Opt->Map((it->Min((it + #it - 5)->CastR8()), it->Max((it + #it - 5)->CastR8()), it->MinMax((it + #it - 5)->CastR8()), it->MinC((it + #it - 5)->CastR8()), it->MaxC((it + #it - 5)->CastR8()), it->MinMaxC((it + #it - 5)->CastR8()))) : (r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*
BndKind:Call, Type:(r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:3] Scope(1), Call(∂.Guard([guard:4] Scope(3), Add(Scope(4), Num<r8>(Scope(2)), [-] 5:r8)):r8?)):r8), Call(∂.Max([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Add(Scope(7), Num<r8>(Scope(5)), [-] 5:r8)):r8?)):r8), Call(∂.MinMax([map:9] Scope(1), Call(∂.Guard([guard:10] Scope(9), Add(Scope(10), Num<r8>(Scope(8)), [-] 5:r8)):r8?))), Call(∂.MinC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Add(Scope(13), Num<r8>(Scope(11)), [-] 5:r8)):r8?))), Call(∂.MaxC([map:15] Scope(1), Call(∂.Guard([guard:16] Scope(15), Add(Scope(16), Num<r8>(Scope(14)), [-] 5:r8)):r8?))), Call(∂.MinMaxC([map:18] Scope(1), Call(∂.Guard([guard:19] Scope(18), Add(Scope(19), Num<r8>(Scope(17)), [-] 5:r8)):r8?)))):(r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})):(r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*))
// (<ctx>, ∂.Opt:r8?**) : (r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*
Min_1(Arr<obj>, i8, Opt<r8>):Opt<r8>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) newobj Opt<r8>(r8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<r8>
  Label [1]:
      1) ret
  Total Size: 50

Max_1(Arr<obj>, i8, Opt<r8>):Opt<r8>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) newobj Opt<r8>(r8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<r8>
  Label [1]:
      1) ret
  Total Size: 50

MinMax_1(Arr<obj>, i8, Opt<r8>):Opt<r8>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) newobj Opt<r8>(r8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<r8>
  Label [1]:
      1) ret
  Total Size: 50

MinC_1(Arr<obj>, i8, Opt<r8>):Opt<r8>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) newobj Opt<r8>(r8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<r8>
  Label [1]:
      1) ret
  Total Size: 50

MaxC_1(Arr<obj>, i8, Opt<r8>):Opt<r8>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) newobj Opt<r8>(r8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<r8>
  Label [1]:
      1) ret
  Total Size: 50

MinMaxC_1(Arr<obj>, i8, Opt<r8>):Opt<r8>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) newobj Opt<r8>(r8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<r8>
  Label [1]:
      1) ret
  Total Size: 50

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})
      5) newobj (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,Opt<r8>,Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<r8>>, ExecCtx, i4):r8
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F0:r8
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,Opt<r8>,Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<r8>>, ExecCtx, i4):r8
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F1:r8
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,Opt<r8>,Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {r8,r8}()
      1) dup
      1) ldc.i4.3
      5) stfld {r8,r8}::_B0:u1
      1) stloc.0 [{r8,r8}]
      1) ldloc.0 [{r8,r8}]
      5) ldflda {r8,r8}::_F1:r8
      1) ldloc.0 [{r8,r8}]
      5) ldflda {r8,r8}::_F0:r8
      5) call static MinMaxGen::ExecMinMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<r8>>, ExecCtx, i4, out r8, out r8):Void
      1) ldloc.0 [{r8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F2:{r8,r8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,Opt<r8>,Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,r8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r8}::_B0:u1
      1) stloc.1 [{i8,r8}]
      1) ldloc.1 [{i8,r8}]
      5) ldflda {i8,r8}::_F1:r8
      5) call static MinMaxGen::ExecMinIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<r8>>, ExecCtx, i4, out r8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r8}]
      1) ldloc.2 [i8]
      5) stfld {i8,r8}::_F0:i8
      1) ldloc.1 [{i8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F3:{i8,r8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,Opt<r8>,Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,r8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r8}::_B0:u1
      1) stloc.1 [{i8,r8}]
      1) ldloc.1 [{i8,r8}]
      5) ldflda {i8,r8}::_F1:r8
      5) call static MinMaxGen::ExecMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<r8>>, ExecCtx, i4, out r8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r8}]
      1) ldloc.2 [i8]
      5) stfld {i8,r8}::_F0:i8
      1) ldloc.1 [{i8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F4:{i8,r8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,Opt<r8>,Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,r8,r8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,r8,r8}::_B0:u1
      1) stloc.3 [{i8,r8,r8}]
      1) ldloc.3 [{i8,r8,r8}]
      5) ldflda {i8,r8,r8}::_F2:r8
      1) ldloc.3 [{i8,r8,r8}]
      5) ldflda {i8,r8,r8}::_F1:r8
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<r8>>, ExecCtx, i4, out r8, out r8):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,r8,r8}]
      1) ldloc.2 [i8]
      5) stfld {i8,r8,r8}::_F0:i8
      1) ldloc.3 [{i8,r8,r8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})::_F5:{i8,r8,r8}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>):Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>):Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (r8, r8, {Max:r8, Min:r8}, {Count:i8, Min:r8}, {Count:i8, Max:r8}, {Count:i8, Max:r8, Min:r8})*
Sequence: Seq<(r8,r8,{r8,r8},{i8,r8},{i8,r8},{i8,r8,r8})>
 0) (-5, 3.5, { Max: 3.5, Min: -5 }, { Count: 6, Min: -5 }, { Count: 6, Max: 3.5 }, { Count: 6, Max: 3.5, Min: -5 })
 1) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 7, Min: NaN }, { Count: 7, Max: NaN }, { Count: 7, Max: NaN, Min: NaN })
 2) (-∞, ∞, { Max: ∞, Min: -∞ }, { Count: 8, Min: -∞ }, { Count: 8, Max: ∞ }, { Count: 8, Max: ∞, Min: -∞ })
 3) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 9, Min: NaN }, { Count: 9, Max: NaN }, { Count: 9, Max: NaN, Min: NaN })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-6, 4, { Max: 4, Min: -6 }, { Count: 6, Min: -6 }, { Count: 6, Max: 4 }, { Count: 6, Max: 4, Min: -6 })
*** Ctx ping count: 294
    [0](49): Min(*3: *1x, Guard(?4: *3, Add(?4, Num<r8>(#2), [-] 5)))
    [1](49): Max(*3: *1x, Guard(?4: *3, Add(?4, Num<r8>(#2), [-] 5)))
    [2](49): MinMax(*3: *1x, Guard(?4: *3, Add(?4, Num<r8>(#2), [-] 5)))
    [3](49): MinC(*3: *1x, Guard(?4: *3, Add(?4, Num<r8>(#2), [-] 5)))
    [4](49): MaxC(*3: *1x, Guard(?4: *3, Add(?4, Num<r8>(#2), [-] 5)))
    [5](49): MinMaxC(*3: *1x, Guard(?4: *3, Add(?4, Num<r8>(#2), [-] 5)))
###
> Opt->Map((it->Min((it + #it - 5)->CastR4()), it->Max((it + #it - 5)->CastR4()), it->MinMax((it + #it - 5)->CastR4()), it->MinC((it + #it - 5)->CastR4()), it->MaxC((it + #it - 5)->CastR4()), it->MinMaxC((it + #it - 5)->CastR4())))
Opt->Map((it->Min((it + #it - 5)->CastR4()), it->Max((it + #it - 5)->CastR4()), it->MinMax((it + #it - 5)->CastR4()), it->MinC((it + #it - 5)->CastR4()), it->MaxC((it + #it - 5)->CastR4()), it->MinMaxC((it + #it - 5)->CastR4()))) : (r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*
BndKind:Call, Type:(r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:3] Scope(1), Call(∂.Guard([guard:4] Scope(3), Call(∂.CastR4(Add(Scope(4), Num<r8>(Scope(2)), [-] 5:r8)):r4)):r4?)):r4), Call(∂.Max([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastR4(Add(Scope(7), Num<r8>(Scope(5)), [-] 5:r8)):r4)):r4?)):r4), Call(∂.MinMax([map:9] Scope(1), Call(∂.Guard([guard:10] Scope(9), Call(∂.CastR4(Add(Scope(10), Num<r8>(Scope(8)), [-] 5:r8)):r4)):r4?))), Call(∂.MinC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastR4(Add(Scope(13), Num<r8>(Scope(11)), [-] 5:r8)):r4)):r4?))), Call(∂.MaxC([map:15] Scope(1), Call(∂.Guard([guard:16] Scope(15), Call(∂.CastR4(Add(Scope(16), Num<r8>(Scope(14)), [-] 5:r8)):r4)):r4?))), Call(∂.MinMaxC([map:18] Scope(1), Call(∂.Guard([guard:19] Scope(18), Call(∂.CastR4(Add(Scope(19), Num<r8>(Scope(17)), [-] 5:r8)):r4)):r4?)))):(r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})):(r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*))
// (<ctx>, ∂.Opt:r8?**) : (r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*
Min_1(Arr<obj>, i8, Opt<r8>):Opt<r4>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) conv.r4
      5) newobj Opt<r4>(r4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<r4>
  Label [1]:
      1) ret
  Total Size: 51

Max_1(Arr<obj>, i8, Opt<r8>):Opt<r4>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) conv.r4
      5) newobj Opt<r4>(r4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<r4>
  Label [1]:
      1) ret
  Total Size: 51

MinMax_1(Arr<obj>, i8, Opt<r8>):Opt<r4>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) conv.r4
      5) newobj Opt<r4>(r4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<r4>
  Label [1]:
      1) ret
  Total Size: 51

MinC_1(Arr<obj>, i8, Opt<r8>):Opt<r4>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) conv.r4
      5) newobj Opt<r4>(r4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<r4>
  Label [1]:
      1) ret
  Total Size: 51

MaxC_1(Arr<obj>, i8, Opt<r8>):Opt<r4>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) conv.r4
      5) newobj Opt<r4>(r4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<r4>
  Label [1]:
      1) ret
  Total Size: 51

MinMaxC_1(Arr<obj>, i8, Opt<r8>):Opt<r4>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) conv.r4
      5) newobj Opt<r4>(r4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<r4>
  Label [1]:
      1) ret
  Total Size: 51

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})
      5) newobj (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,Opt<r8>,Opt<r4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<r4>>, ExecCtx, i4):r4
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F0:r4
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,Opt<r8>,Opt<r4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<r4>>, ExecCtx, i4):r4
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F1:r4
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,Opt<r8>,Opt<r4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {r4,r4}()
      1) dup
      1) ldc.i4.3
      5) stfld {r4,r4}::_B0:u1
      1) stloc.0 [{r4,r4}]
      1) ldloc.0 [{r4,r4}]
      5) ldflda {r4,r4}::_F1:r4
      1) ldloc.0 [{r4,r4}]
      5) ldflda {r4,r4}::_F0:r4
      5) call static MinMaxGen::ExecMinMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<r4>>, ExecCtx, i4, out r4, out r4):Void
      1) ldloc.0 [{r4,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F2:{r4,r4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,Opt<r8>,Opt<r4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,r4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r4}::_B0:u1
      1) stloc.1 [{i8,r4}]
      1) ldloc.1 [{i8,r4}]
      5) ldflda {i8,r4}::_F1:r4
      5) call static MinMaxGen::ExecMinIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<r4>>, ExecCtx, i4, out r4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r4}]
      1) ldloc.2 [i8]
      5) stfld {i8,r4}::_F0:i8
      1) ldloc.1 [{i8,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F3:{i8,r4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,Opt<r8>,Opt<r4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,r4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,r4}::_B0:u1
      1) stloc.1 [{i8,r4}]
      1) ldloc.1 [{i8,r4}]
      5) ldflda {i8,r4}::_F1:r4
      5) call static MinMaxGen::ExecMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<r4>>, ExecCtx, i4, out r4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,r4}]
      1) ldloc.2 [i8]
      5) stfld {i8,r4}::_F0:i8
      1) ldloc.1 [{i8,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F4:{i8,r4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,Opt<r8>,Opt<r4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,r4,r4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,r4,r4}::_B0:u1
      1) stloc.3 [{i8,r4,r4}]
      1) ldloc.3 [{i8,r4,r4}]
      5) ldflda {i8,r4,r4}::_F2:r4
      1) ldloc.3 [{i8,r4,r4}]
      5) ldflda {i8,r4,r4}::_F1:r4
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<r4>>, ExecCtx, i4, out r4, out r4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,r4,r4}]
      1) ldloc.2 [i8]
      5) stfld {i8,r4,r4}::_F0:i8
      1) ldloc.3 [{i8,r4,r4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})::_F5:{i8,r4,r4}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>):Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>):Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (r4, r4, {Max:r4, Min:r4}, {Count:i8, Min:r4}, {Count:i8, Max:r4}, {Count:i8, Max:r4, Min:r4})*
Sequence: Seq<(r4,r4,{r4,r4},{i8,r4},{i8,r4},{i8,r4,r4})>
 0) (-5, 3.5, { Max: 3.5, Min: -5 }, { Count: 6, Min: -5 }, { Count: 6, Max: 3.5 }, { Count: 6, Max: 3.5, Min: -5 })
 1) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 7, Min: NaN }, { Count: 7, Max: NaN }, { Count: 7, Max: NaN, Min: NaN })
 2) (-∞, ∞, { Max: ∞, Min: -∞ }, { Count: 8, Min: -∞ }, { Count: 8, Max: ∞ }, { Count: 8, Max: ∞, Min: -∞ })
 3) (NaN, NaN, { Max: NaN, Min: NaN }, { Count: 9, Min: NaN }, { Count: 9, Max: NaN }, { Count: 9, Max: NaN, Min: NaN })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-6, 4, { Max: 4, Min: -6 }, { Count: 6, Min: -6 }, { Count: 6, Max: 4 }, { Count: 6, Max: 4, Min: -6 })
*** Ctx ping count: 294
    [0](49): Min(*3: *1x, Guard(?4: *3, CastR4(Add(?4, Num<r8>(#2), [-] 5))))
    [1](49): Max(*3: *1x, Guard(?4: *3, CastR4(Add(?4, Num<r8>(#2), [-] 5))))
    [2](49): MinMax(*3: *1x, Guard(?4: *3, CastR4(Add(?4, Num<r8>(#2), [-] 5))))
    [3](49): MinC(*3: *1x, Guard(?4: *3, CastR4(Add(?4, Num<r8>(#2), [-] 5))))
    [4](49): MaxC(*3: *1x, Guard(?4: *3, CastR4(Add(?4, Num<r8>(#2), [-] 5))))
    [5](49): MinMaxC(*3: *1x, Guard(?4: *3, CastR4(Add(?4, Num<r8>(#2), [-] 5))))
###
> Opt->Map((it->Min((it + #it - 5)->CastIA()), it->Max((it + #it - 5)->CastIA()), it->MinMax((it + #it - 5)->CastIA()), it->MinC((it + #it - 5)->CastIA()), it->MaxC((it + #it - 5)->CastIA()), it->MinMaxC((it + #it - 5)->CastIA())))
Opt->Map((it->Min((it + #it - 5)->CastIA()), it->Max((it + #it - 5)->CastIA()), it->MinMax((it + #it - 5)->CastIA()), it->MinC((it + #it - 5)->CastIA()), it->MaxC((it + #it - 5)->CastIA()), it->MinMaxC((it + #it - 5)->CastIA()))) : (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
BndKind:Call, Type:(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:3] Scope(1), Call(∂.Guard([guard:4] Scope(3), Call(∂.CastIA(Add(Scope(4), Num<r8>(Scope(2)), [-] 5:r8)):i)):i?)):i), Call(∂.Max([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastIA(Add(Scope(7), Num<r8>(Scope(5)), [-] 5:r8)):i)):i?)):i), Call(∂.MinMax([map:9] Scope(1), Call(∂.Guard([guard:10] Scope(9), Call(∂.CastIA(Add(Scope(10), Num<r8>(Scope(8)), [-] 5:r8)):i)):i?))), Call(∂.MinC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastIA(Add(Scope(13), Num<r8>(Scope(11)), [-] 5:r8)):i)):i?))), Call(∂.MaxC([map:15] Scope(1), Call(∂.Guard([guard:16] Scope(15), Call(∂.CastIA(Add(Scope(16), Num<r8>(Scope(14)), [-] 5:r8)):i)):i?))), Call(∂.MinMaxC([map:18] Scope(1), Call(∂.Guard([guard:19] Scope(18), Call(∂.CastIA(Add(Scope(19), Num<r8>(Scope(17)), [-] 5:r8)):i)):i?)))):(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})):(i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*))
// (<ctx>, ∂.Opt:r8?**) : (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
Min_1(Arr<obj>, i8, Opt<r8>):Opt<ia>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [1]
      1) pop
      9) ldc.r8 [0]
  Label [1]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [2]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [2]:
      1) ret
  Total Size: 76

Max_1(Arr<obj>, i8, Opt<r8>):Opt<ia>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [1]
      1) pop
      9) ldc.r8 [0]
  Label [1]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [2]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [2]:
      1) ret
  Total Size: 76

MinMax_1(Arr<obj>, i8, Opt<r8>):Opt<ia>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [1]
      1) pop
      9) ldc.r8 [0]
  Label [1]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [2]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [2]:
      1) ret
  Total Size: 76

MinC_1(Arr<obj>, i8, Opt<r8>):Opt<ia>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [1]
      1) pop
      9) ldc.r8 [0]
  Label [1]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [2]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [2]:
      1) ret
  Total Size: 76

MaxC_1(Arr<obj>, i8, Opt<r8>):Opt<ia>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [1]
      1) pop
      9) ldc.r8 [0]
  Label [1]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [2]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [2]:
      1) ret
  Total Size: 76

MinMaxC_1(Arr<obj>, i8, Opt<r8>):Opt<ia>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      1) dup
      5) call static NumUtil::IsFinite(r8):bool
      5) brtrue [1]
      1) pop
      9) ldc.r8 [0]
  Label [1]:
      5) newobj ia(r8)
      5) newobj Opt<ia>(ia)
      5) br [2]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<ia>
  Label [2]:
      1) ret
  Total Size: 76

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})
      5) newobj (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,Opt<r8>,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<ia>>, ExecCtx, i4):ia
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F0:ia
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,Opt<r8>,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<ia>>, ExecCtx, i4):ia
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F1:ia
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,Opt<r8>,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {ia,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {ia,ia}::_B0:u1
      1) stloc.0 [{ia,ia}]
      1) ldloc.0 [{ia,ia}]
      5) ldflda {ia,ia}::_F1:ia
      1) ldloc.0 [{ia,ia}]
      5) ldflda {ia,ia}::_F0:ia
      5) call static MinMaxGen::ExecMinMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<ia>>, ExecCtx, i4, out ia, out ia):Void
      1) ldloc.0 [{ia,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F2:{ia,ia}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,Opt<r8>,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,ia}::_B0:u1
      1) stloc.1 [{i8,ia}]
      1) ldloc.1 [{i8,ia}]
      5) ldflda {i8,ia}::_F1:ia
      5) call static MinMaxGen::ExecMinIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<ia>>, ExecCtx, i4, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia}::_F0:i8
      1) ldloc.1 [{i8,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F3:{i8,ia}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,Opt<r8>,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,ia}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,ia}::_B0:u1
      1) stloc.1 [{i8,ia}]
      1) ldloc.1 [{i8,ia}]
      5) ldflda {i8,ia}::_F1:ia
      5) call static MinMaxGen::ExecMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<ia>>, ExecCtx, i4, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia}::_F0:i8
      1) ldloc.1 [{i8,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F4:{i8,ia}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,Opt<r8>,Opt<ia>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,ia,ia}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,ia,ia}::_B0:u1
      1) stloc.3 [{i8,ia,ia}]
      1) ldloc.3 [{i8,ia,ia}]
      5) ldflda {i8,ia,ia}::_F2:ia
      1) ldloc.3 [{i8,ia,ia}]
      5) ldflda {i8,ia,ia}::_F1:ia
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<ia>>, ExecCtx, i4, out ia, out ia):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,ia,ia}]
      1) ldloc.2 [i8]
      5) stfld {i8,ia,ia}::_F0:i8
      1) ldloc.3 [{i8,ia,ia}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})::_F5:{i8,ia,ia}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>):Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>):Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (i, i, {Max:i, Min:i}, {Count:i8, Min:i}, {Count:i8, Max:i}, {Count:i8, Max:i, Min:i})*
Sequence: Seq<(ia,ia,{ia,ia},{i8,ia},{i8,ia},{i8,ia,ia})>
 0) (-5, 3, { Max: 3, Min: -5 }, { Count: 6, Min: -5 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -5 })
 1) (-5, 4, { Max: 4, Min: -5 }, { Count: 7, Min: -5 }, { Count: 7, Max: 4 }, { Count: 7, Max: 4, Min: -5 })
 2) (-5, 5, { Max: 5, Min: -5 }, { Count: 8, Min: -5 }, { Count: 8, Max: 5 }, { Count: 8, Max: 5, Min: -5 })
 3) (-5, 6, { Max: 6, Min: -5 }, { Count: 9, Min: -5 }, { Count: 9, Max: 6 }, { Count: 9, Max: 6, Min: -5 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-6, 4, { Max: 4, Min: -6 }, { Count: 6, Min: -6 }, { Count: 6, Max: 4 }, { Count: 6, Max: 4, Min: -6 })
*** Ctx ping count: 294
    [0](49): Min(*3: *1x, Guard(?4: *3, CastIA(Add(?4, Num<r8>(#2), [-] 5))))
    [1](49): Max(*3: *1x, Guard(?4: *3, CastIA(Add(?4, Num<r8>(#2), [-] 5))))
    [2](49): MinMax(*3: *1x, Guard(?4: *3, CastIA(Add(?4, Num<r8>(#2), [-] 5))))
    [3](49): MinC(*3: *1x, Guard(?4: *3, CastIA(Add(?4, Num<r8>(#2), [-] 5))))
    [4](49): MaxC(*3: *1x, Guard(?4: *3, CastIA(Add(?4, Num<r8>(#2), [-] 5))))
    [5](49): MinMaxC(*3: *1x, Guard(?4: *3, CastIA(Add(?4, Num<r8>(#2), [-] 5))))
###
> Opt->Map((it->Min((it + #it - 5)->CastI8()), it->Max((it + #it - 5)->CastI8()), it->MinMax((it + #it - 5)->CastI8()), it->MinC((it + #it - 5)->CastI8()), it->MaxC((it + #it - 5)->CastI8()), it->MinMaxC((it + #it - 5)->CastI8())))
Opt->Map((it->Min((it + #it - 5)->CastI8()), it->Max((it + #it - 5)->CastI8()), it->MinMax((it + #it - 5)->CastI8()), it->MinC((it + #it - 5)->CastI8()), it->MaxC((it + #it - 5)->CastI8()), it->MinMaxC((it + #it - 5)->CastI8()))) : (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
BndKind:Call, Type:(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:3] Scope(1), Call(∂.Guard([guard:4] Scope(3), Call(∂.CastI8(Add(Scope(4), Num<r8>(Scope(2)), [-] 5:r8)):i8)):i8?)):i8), Call(∂.Max([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastI8(Add(Scope(7), Num<r8>(Scope(5)), [-] 5:r8)):i8)):i8?)):i8), Call(∂.MinMax([map:9] Scope(1), Call(∂.Guard([guard:10] Scope(9), Call(∂.CastI8(Add(Scope(10), Num<r8>(Scope(8)), [-] 5:r8)):i8)):i8?))), Call(∂.MinC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastI8(Add(Scope(13), Num<r8>(Scope(11)), [-] 5:r8)):i8)):i8?))), Call(∂.MaxC([map:15] Scope(1), Call(∂.Guard([guard:16] Scope(15), Call(∂.CastI8(Add(Scope(16), Num<r8>(Scope(14)), [-] 5:r8)):i8)):i8?))), Call(∂.MinMaxC([map:18] Scope(1), Call(∂.Guard([guard:19] Scope(18), Call(∂.CastI8(Add(Scope(19), Num<r8>(Scope(17)), [-] 5:r8)):i8)):i8?)))):(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})):(i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*))
// (<ctx>, ∂.Opt:r8?**) : (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
Min_1(Arr<obj>, i8, Opt<r8>):Opt<i8>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<i8>(i8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [1]:
      1) ret
  Total Size: 55

Max_1(Arr<obj>, i8, Opt<r8>):Opt<i8>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<i8>(i8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [1]:
      1) ret
  Total Size: 55

MinMax_1(Arr<obj>, i8, Opt<r8>):Opt<i8>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<i8>(i8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [1]:
      1) ret
  Total Size: 55

MinC_1(Arr<obj>, i8, Opt<r8>):Opt<i8>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<i8>(i8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [1]:
      1) ret
  Total Size: 55

MaxC_1(Arr<obj>, i8, Opt<r8>):Opt<i8>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<i8>(i8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [1]:
      1) ret
  Total Size: 55

MinMaxC_1(Arr<obj>, i8, Opt<r8>):Opt<i8>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<i8>(i8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i8>
  Label [1]:
      1) ret
  Total Size: 55

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})
      5) newobj (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,Opt<r8>,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i8>>, ExecCtx, i4):i8
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F0:i8
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,Opt<r8>,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i8>>, ExecCtx, i4):i8
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F1:i8
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,Opt<r8>,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F0:i8
      5) call static MinMaxGen::ExecMinMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i8>>, ExecCtx, i4, out i8, out i8):Void
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F2:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,Opt<r8>,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMinIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i8>>, ExecCtx, i4, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.0 [{i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8}::_F0:i8
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F3:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,Opt<r8>,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i8}::_B0:u1
      1) stloc.0 [{i8,i8}]
      1) ldloc.0 [{i8,i8}]
      5) ldflda {i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i8>>, ExecCtx, i4, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.0 [{i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8}::_F0:i8
      1) ldloc.0 [{i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F4:{i8,i8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,Opt<r8>,Opt<i8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i8,i8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i8,i8}::_B0:u1
      1) stloc.2 [{i8,i8,i8}]
      1) ldloc.2 [{i8,i8,i8}]
      5) ldflda {i8,i8,i8}::_F2:i8
      1) ldloc.2 [{i8,i8,i8}]
      5) ldflda {i8,i8,i8}::_F1:i8
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i8>>, ExecCtx, i4, out i8, out i8):i8
      1) stloc.1 [i8]
      1) ldloc.2 [{i8,i8,i8}]
      1) ldloc.1 [i8]
      5) stfld {i8,i8,i8}::_F0:i8
      1) ldloc.2 [{i8,i8,i8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})::_F5:{i8,i8,i8}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>):Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>):Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (i8, i8, {Max:i8, Min:i8}, {Count:i8, Min:i8}, {Count:i8, Max:i8}, {Count:i8, Max:i8, Min:i8})*
Sequence: Seq<(i8,i8,{i8,i8},{i8,i8},{i8,i8},{i8,i8,i8})>
 0) (-5, 3, { Max: 3, Min: -5 }, { Count: 6, Min: -5 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -5 })
 1) (-5, 4, { Max: 4, Min: -5 }, { Count: 7, Min: -5 }, { Count: 7, Max: 4 }, { Count: 7, Max: 4, Min: -5 })
 2) (-5, 5, { Max: 5, Min: -5 }, { Count: 8, Min: -5 }, { Count: 8, Max: 5 }, { Count: 8, Max: 5, Min: -5 })
 3) (-5, 6, { Max: 6, Min: -5 }, { Count: 9, Min: -5 }, { Count: 9, Max: 6 }, { Count: 9, Max: 6, Min: -5 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-6, 4, { Max: 4, Min: -6 }, { Count: 6, Min: -6 }, { Count: 6, Max: 4 }, { Count: 6, Max: 4, Min: -6 })
*** Ctx ping count: 294
    [0](49): Min(*3: *1x, Guard(?4: *3, CastI8(Add(?4, Num<r8>(#2), [-] 5))))
    [1](49): Max(*3: *1x, Guard(?4: *3, CastI8(Add(?4, Num<r8>(#2), [-] 5))))
    [2](49): MinMax(*3: *1x, Guard(?4: *3, CastI8(Add(?4, Num<r8>(#2), [-] 5))))
    [3](49): MinC(*3: *1x, Guard(?4: *3, CastI8(Add(?4, Num<r8>(#2), [-] 5))))
    [4](49): MaxC(*3: *1x, Guard(?4: *3, CastI8(Add(?4, Num<r8>(#2), [-] 5))))
    [5](49): MinMaxC(*3: *1x, Guard(?4: *3, CastI8(Add(?4, Num<r8>(#2), [-] 5))))
###
> Opt->Map((it->Min((it + #it - 5)->CastI4()), it->Max((it + #it - 5)->CastI4()), it->MinMax((it + #it - 5)->CastI4()), it->MinC((it + #it - 5)->CastI4()), it->MaxC((it + #it - 5)->CastI4()), it->MinMaxC((it + #it - 5)->CastI4())))
Opt->Map((it->Min((it + #it - 5)->CastI4()), it->Max((it + #it - 5)->CastI4()), it->MinMax((it + #it - 5)->CastI4()), it->MinC((it + #it - 5)->CastI4()), it->MaxC((it + #it - 5)->CastI4()), it->MinMaxC((it + #it - 5)->CastI4()))) : (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
BndKind:Call, Type:(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:3] Scope(1), Call(∂.Guard([guard:4] Scope(3), Call(∂.CastI4(Add(Scope(4), Num<r8>(Scope(2)), [-] 5:r8)):i4)):i4?)):i4), Call(∂.Max([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastI4(Add(Scope(7), Num<r8>(Scope(5)), [-] 5:r8)):i4)):i4?)):i4), Call(∂.MinMax([map:9] Scope(1), Call(∂.Guard([guard:10] Scope(9), Call(∂.CastI4(Add(Scope(10), Num<r8>(Scope(8)), [-] 5:r8)):i4)):i4?))), Call(∂.MinC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastI4(Add(Scope(13), Num<r8>(Scope(11)), [-] 5:r8)):i4)):i4?))), Call(∂.MaxC([map:15] Scope(1), Call(∂.Guard([guard:16] Scope(15), Call(∂.CastI4(Add(Scope(16), Num<r8>(Scope(14)), [-] 5:r8)):i4)):i4?))), Call(∂.MinMaxC([map:18] Scope(1), Call(∂.Guard([guard:19] Scope(18), Call(∂.CastI4(Add(Scope(19), Num<r8>(Scope(17)), [-] 5:r8)):i4)):i4?)))):(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})):(i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*))
// (<ctx>, ∂.Opt:r8?**) : (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
Min_1(Arr<obj>, i8, Opt<r8>):Opt<i4>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      5) newobj Opt<i4>(i4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [1]:
      1) ret
  Total Size: 56

Max_1(Arr<obj>, i8, Opt<r8>):Opt<i4>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      5) newobj Opt<i4>(i4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [1]:
      1) ret
  Total Size: 56

MinMax_1(Arr<obj>, i8, Opt<r8>):Opt<i4>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      5) newobj Opt<i4>(i4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [1]:
      1) ret
  Total Size: 56

MinC_1(Arr<obj>, i8, Opt<r8>):Opt<i4>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      5) newobj Opt<i4>(i4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [1]:
      1) ret
  Total Size: 56

MaxC_1(Arr<obj>, i8, Opt<r8>):Opt<i4>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      5) newobj Opt<i4>(i4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [1]:
      1) ret
  Total Size: 56

MinMaxC_1(Arr<obj>, i8, Opt<r8>):Opt<i4>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i4
      5) newobj Opt<i4>(i4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i4>
  Label [1]:
      1) ret
  Total Size: 56

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})
      5) newobj (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,Opt<r8>,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i4>>, ExecCtx, i4):i4
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F0:i4
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,Opt<r8>,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i4>>, ExecCtx, i4):i4
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F1:i4
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,Opt<r8>,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i4,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i4,i4}::_B0:u1
      1) stloc.0 [{i4,i4}]
      1) ldloc.0 [{i4,i4}]
      5) ldflda {i4,i4}::_F1:i4
      1) ldloc.0 [{i4,i4}]
      5) ldflda {i4,i4}::_F0:i4
      5) call static MinMaxGen::ExecMinMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i4>>, ExecCtx, i4, out i4, out i4):Void
      1) ldloc.0 [{i4,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F2:{i4,i4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,Opt<r8>,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i4}::_B0:u1
      1) stloc.1 [{i8,i4}]
      1) ldloc.1 [{i8,i4}]
      5) ldflda {i8,i4}::_F1:i4
      5) call static MinMaxGen::ExecMinIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i4>>, ExecCtx, i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4}::_F0:i8
      1) ldloc.1 [{i8,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F3:{i8,i4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,Opt<r8>,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i4}::_B0:u1
      1) stloc.1 [{i8,i4}]
      1) ldloc.1 [{i8,i4}]
      5) ldflda {i8,i4}::_F1:i4
      5) call static MinMaxGen::ExecMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i4>>, ExecCtx, i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4}::_F0:i8
      1) ldloc.1 [{i8,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F4:{i8,i4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,Opt<r8>,Opt<i4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i4,i4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i4,i4}::_B0:u1
      1) stloc.3 [{i8,i4,i4}]
      1) ldloc.3 [{i8,i4,i4}]
      5) ldflda {i8,i4,i4}::_F2:i4
      1) ldloc.3 [{i8,i4,i4}]
      5) ldflda {i8,i4,i4}::_F1:i4
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i4>>, ExecCtx, i4, out i4, out i4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i4,i4}]
      1) ldloc.2 [i8]
      5) stfld {i8,i4,i4}::_F0:i8
      1) ldloc.3 [{i8,i4,i4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})::_F5:{i8,i4,i4}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>):Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>):Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (i4, i4, {Max:i4, Min:i4}, {Count:i8, Min:i4}, {Count:i8, Max:i4}, {Count:i8, Max:i4, Min:i4})*
Sequence: Seq<(i4,i4,{i4,i4},{i8,i4},{i8,i4},{i8,i4,i4})>
 0) (-5, 3, { Max: 3, Min: -5 }, { Count: 6, Min: -5 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -5 })
 1) (-5, 4, { Max: 4, Min: -5 }, { Count: 7, Min: -5 }, { Count: 7, Max: 4 }, { Count: 7, Max: 4, Min: -5 })
 2) (-5, 5, { Max: 5, Min: -5 }, { Count: 8, Min: -5 }, { Count: 8, Max: 5 }, { Count: 8, Max: 5, Min: -5 })
 3) (-5, 6, { Max: 6, Min: -5 }, { Count: 9, Min: -5 }, { Count: 9, Max: 6 }, { Count: 9, Max: 6, Min: -5 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-6, 4, { Max: 4, Min: -6 }, { Count: 6, Min: -6 }, { Count: 6, Max: 4 }, { Count: 6, Max: 4, Min: -6 })
*** Ctx ping count: 294
    [0](49): Min(*3: *1x, Guard(?4: *3, CastI4(Add(?4, Num<r8>(#2), [-] 5))))
    [1](49): Max(*3: *1x, Guard(?4: *3, CastI4(Add(?4, Num<r8>(#2), [-] 5))))
    [2](49): MinMax(*3: *1x, Guard(?4: *3, CastI4(Add(?4, Num<r8>(#2), [-] 5))))
    [3](49): MinC(*3: *1x, Guard(?4: *3, CastI4(Add(?4, Num<r8>(#2), [-] 5))))
    [4](49): MaxC(*3: *1x, Guard(?4: *3, CastI4(Add(?4, Num<r8>(#2), [-] 5))))
    [5](49): MinMaxC(*3: *1x, Guard(?4: *3, CastI4(Add(?4, Num<r8>(#2), [-] 5))))
###
> Opt->Map((it->Min((it + #it - 5)->CastI2()), it->Max((it + #it - 5)->CastI2()), it->MinMax((it + #it - 5)->CastI2()), it->MinC((it + #it - 5)->CastI2()), it->MaxC((it + #it - 5)->CastI2()), it->MinMaxC((it + #it - 5)->CastI2())))
Opt->Map((it->Min((it + #it - 5)->CastI2()), it->Max((it + #it - 5)->CastI2()), it->MinMax((it + #it - 5)->CastI2()), it->MinC((it + #it - 5)->CastI2()), it->MaxC((it + #it - 5)->CastI2()), it->MinMaxC((it + #it - 5)->CastI2()))) : (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
BndKind:Call, Type:(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:3] Scope(1), Call(∂.Guard([guard:4] Scope(3), Call(∂.CastI2(Add(Scope(4), Num<r8>(Scope(2)), [-] 5:r8)):i2)):i2?)):i2), Call(∂.Max([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastI2(Add(Scope(7), Num<r8>(Scope(5)), [-] 5:r8)):i2)):i2?)):i2), Call(∂.MinMax([map:9] Scope(1), Call(∂.Guard([guard:10] Scope(9), Call(∂.CastI2(Add(Scope(10), Num<r8>(Scope(8)), [-] 5:r8)):i2)):i2?))), Call(∂.MinC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastI2(Add(Scope(13), Num<r8>(Scope(11)), [-] 5:r8)):i2)):i2?))), Call(∂.MaxC([map:15] Scope(1), Call(∂.Guard([guard:16] Scope(15), Call(∂.CastI2(Add(Scope(16), Num<r8>(Scope(14)), [-] 5:r8)):i2)):i2?))), Call(∂.MinMaxC([map:18] Scope(1), Call(∂.Guard([guard:19] Scope(18), Call(∂.CastI2(Add(Scope(19), Num<r8>(Scope(17)), [-] 5:r8)):i2)):i2?)))):(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})):(i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*))
// (<ctx>, ∂.Opt:r8?**) : (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
Min_1(Arr<obj>, i8, Opt<r8>):Opt<i2>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      5) newobj Opt<i2>(i2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [1]:
      1) ret
  Total Size: 56

Max_1(Arr<obj>, i8, Opt<r8>):Opt<i2>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      5) newobj Opt<i2>(i2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [1]:
      1) ret
  Total Size: 56

MinMax_1(Arr<obj>, i8, Opt<r8>):Opt<i2>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      5) newobj Opt<i2>(i2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [1]:
      1) ret
  Total Size: 56

MinC_1(Arr<obj>, i8, Opt<r8>):Opt<i2>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      5) newobj Opt<i2>(i2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [1]:
      1) ret
  Total Size: 56

MaxC_1(Arr<obj>, i8, Opt<r8>):Opt<i2>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      5) newobj Opt<i2>(i2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [1]:
      1) ret
  Total Size: 56

MinMaxC_1(Arr<obj>, i8, Opt<r8>):Opt<i2>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i2
      5) newobj Opt<i2>(i2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i2>
  Label [1]:
      1) ret
  Total Size: 56

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})
      5) newobj (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,Opt<r8>,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i2>>, ExecCtx, i4):i2
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F0:i2
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,Opt<r8>,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i2>>, ExecCtx, i4):i2
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F1:i2
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,Opt<r8>,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i2,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i2,i2}::_B0:u1
      1) stloc.0 [{i2,i2}]
      1) ldloc.0 [{i2,i2}]
      5) ldflda {i2,i2}::_F1:i2
      1) ldloc.0 [{i2,i2}]
      5) ldflda {i2,i2}::_F0:i2
      5) call static MinMaxGen::ExecMinMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i2>>, ExecCtx, i4, out i2, out i2):Void
      1) ldloc.0 [{i2,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F2:{i2,i2}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,Opt<r8>,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i2}::_B0:u1
      1) stloc.1 [{i8,i2}]
      1) ldloc.1 [{i8,i2}]
      5) ldflda {i8,i2}::_F1:i2
      5) call static MinMaxGen::ExecMinIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i2>>, ExecCtx, i4, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2}::_F0:i8
      1) ldloc.1 [{i8,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F3:{i8,i2}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,Opt<r8>,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i2}::_B0:u1
      1) stloc.1 [{i8,i2}]
      1) ldloc.1 [{i8,i2}]
      5) ldflda {i8,i2}::_F1:i2
      5) call static MinMaxGen::ExecMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i2>>, ExecCtx, i4, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2}::_F0:i8
      1) ldloc.1 [{i8,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F4:{i8,i2}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,Opt<r8>,Opt<i2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i2,i2}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i2,i2}::_B0:u1
      1) stloc.3 [{i8,i2,i2}]
      1) ldloc.3 [{i8,i2,i2}]
      5) ldflda {i8,i2,i2}::_F2:i2
      1) ldloc.3 [{i8,i2,i2}]
      5) ldflda {i8,i2,i2}::_F1:i2
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i2>>, ExecCtx, i4, out i2, out i2):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i2,i2}]
      1) ldloc.2 [i8]
      5) stfld {i8,i2,i2}::_F0:i8
      1) ldloc.3 [{i8,i2,i2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})::_F5:{i8,i2,i2}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>):Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>):Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (i2, i2, {Max:i2, Min:i2}, {Count:i8, Min:i2}, {Count:i8, Max:i2}, {Count:i8, Max:i2, Min:i2})*
Sequence: Seq<(i2,i2,{i2,i2},{i8,i2},{i8,i2},{i8,i2,i2})>
 0) (-5, 3, { Max: 3, Min: -5 }, { Count: 6, Min: -5 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -5 })
 1) (-5, 4, { Max: 4, Min: -5 }, { Count: 7, Min: -5 }, { Count: 7, Max: 4 }, { Count: 7, Max: 4, Min: -5 })
 2) (-5, 5, { Max: 5, Min: -5 }, { Count: 8, Min: -5 }, { Count: 8, Max: 5 }, { Count: 8, Max: 5, Min: -5 })
 3) (-5, 6, { Max: 6, Min: -5 }, { Count: 9, Min: -5 }, { Count: 9, Max: 6 }, { Count: 9, Max: 6, Min: -5 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-6, 4, { Max: 4, Min: -6 }, { Count: 6, Min: -6 }, { Count: 6, Max: 4 }, { Count: 6, Max: 4, Min: -6 })
*** Ctx ping count: 294
    [0](49): Min(*3: *1x, Guard(?4: *3, CastI2(Add(?4, Num<r8>(#2), [-] 5))))
    [1](49): Max(*3: *1x, Guard(?4: *3, CastI2(Add(?4, Num<r8>(#2), [-] 5))))
    [2](49): MinMax(*3: *1x, Guard(?4: *3, CastI2(Add(?4, Num<r8>(#2), [-] 5))))
    [3](49): MinC(*3: *1x, Guard(?4: *3, CastI2(Add(?4, Num<r8>(#2), [-] 5))))
    [4](49): MaxC(*3: *1x, Guard(?4: *3, CastI2(Add(?4, Num<r8>(#2), [-] 5))))
    [5](49): MinMaxC(*3: *1x, Guard(?4: *3, CastI2(Add(?4, Num<r8>(#2), [-] 5))))
###
> Opt->Map((it->Min((it + #it - 5)->CastI1()), it->Max((it + #it - 5)->CastI1()), it->MinMax((it + #it - 5)->CastI1()), it->MinC((it + #it - 5)->CastI1()), it->MaxC((it + #it - 5)->CastI1()), it->MinMaxC((it + #it - 5)->CastI1())))
Opt->Map((it->Min((it + #it - 5)->CastI1()), it->Max((it + #it - 5)->CastI1()), it->MinMax((it + #it - 5)->CastI1()), it->MinC((it + #it - 5)->CastI1()), it->MaxC((it + #it - 5)->CastI1()), it->MinMaxC((it + #it - 5)->CastI1()))) : (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
BndKind:Call, Type:(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:3] Scope(1), Call(∂.Guard([guard:4] Scope(3), Call(∂.CastI1(Add(Scope(4), Num<r8>(Scope(2)), [-] 5:r8)):i1)):i1?)):i1), Call(∂.Max([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastI1(Add(Scope(7), Num<r8>(Scope(5)), [-] 5:r8)):i1)):i1?)):i1), Call(∂.MinMax([map:9] Scope(1), Call(∂.Guard([guard:10] Scope(9), Call(∂.CastI1(Add(Scope(10), Num<r8>(Scope(8)), [-] 5:r8)):i1)):i1?))), Call(∂.MinC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastI1(Add(Scope(13), Num<r8>(Scope(11)), [-] 5:r8)):i1)):i1?))), Call(∂.MaxC([map:15] Scope(1), Call(∂.Guard([guard:16] Scope(15), Call(∂.CastI1(Add(Scope(16), Num<r8>(Scope(14)), [-] 5:r8)):i1)):i1?))), Call(∂.MinMaxC([map:18] Scope(1), Call(∂.Guard([guard:19] Scope(18), Call(∂.CastI1(Add(Scope(19), Num<r8>(Scope(17)), [-] 5:r8)):i1)):i1?)))):(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})):(i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*))
// (<ctx>, ∂.Opt:r8?**) : (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
Min_1(Arr<obj>, i8, Opt<r8>):Opt<i1>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      5) newobj Opt<i1>(i1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [1]:
      1) ret
  Total Size: 56

Max_1(Arr<obj>, i8, Opt<r8>):Opt<i1>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      5) newobj Opt<i1>(i1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [1]:
      1) ret
  Total Size: 56

MinMax_1(Arr<obj>, i8, Opt<r8>):Opt<i1>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      5) newobj Opt<i1>(i1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [1]:
      1) ret
  Total Size: 56

MinC_1(Arr<obj>, i8, Opt<r8>):Opt<i1>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      5) newobj Opt<i1>(i1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [1]:
      1) ret
  Total Size: 56

MaxC_1(Arr<obj>, i8, Opt<r8>):Opt<i1>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      5) newobj Opt<i1>(i1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [1]:
      1) ret
  Total Size: 56

MinMaxC_1(Arr<obj>, i8, Opt<r8>):Opt<i1>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.i1
      5) newobj Opt<i1>(i1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<i1>
  Label [1]:
      1) ret
  Total Size: 56

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})
      5) newobj (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,Opt<r8>,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i1>>, ExecCtx, i4):i1
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F0:i1
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,Opt<r8>,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i1>>, ExecCtx, i4):i1
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F1:i1
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,Opt<r8>,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {i1,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i1,i1}::_B0:u1
      1) stloc.0 [{i1,i1}]
      1) ldloc.0 [{i1,i1}]
      5) ldflda {i1,i1}::_F1:i1
      1) ldloc.0 [{i1,i1}]
      5) ldflda {i1,i1}::_F0:i1
      5) call static MinMaxGen::ExecMinMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i1>>, ExecCtx, i4, out i1, out i1):Void
      1) ldloc.0 [{i1,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F2:{i1,i1}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,Opt<r8>,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i1}::_B0:u1
      1) stloc.1 [{i8,i1}]
      1) ldloc.1 [{i8,i1}]
      5) ldflda {i8,i1}::_F1:i1
      5) call static MinMaxGen::ExecMinIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i1>>, ExecCtx, i4, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1}::_F0:i8
      1) ldloc.1 [{i8,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F3:{i8,i1}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,Opt<r8>,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,i1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,i1}::_B0:u1
      1) stloc.1 [{i8,i1}]
      1) ldloc.1 [{i8,i1}]
      5) ldflda {i8,i1}::_F1:i1
      5) call static MinMaxGen::ExecMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i1>>, ExecCtx, i4, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1}::_F0:i8
      1) ldloc.1 [{i8,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F4:{i8,i1}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,Opt<r8>,Opt<i1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,i1,i1}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,i1,i1}::_B0:u1
      1) stloc.3 [{i8,i1,i1}]
      1) ldloc.3 [{i8,i1,i1}]
      5) ldflda {i8,i1,i1}::_F2:i1
      1) ldloc.3 [{i8,i1,i1}]
      5) ldflda {i8,i1,i1}::_F1:i1
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<i1>>, ExecCtx, i4, out i1, out i1):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,i1,i1}]
      1) ldloc.2 [i8]
      5) stfld {i8,i1,i1}::_F0:i8
      1) ldloc.3 [{i8,i1,i1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})::_F5:{i8,i1,i1}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>):Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>):Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (i1, i1, {Max:i1, Min:i1}, {Count:i8, Min:i1}, {Count:i8, Max:i1}, {Count:i8, Max:i1, Min:i1})*
Sequence: Seq<(i1,i1,{i1,i1},{i8,i1},{i8,i1},{i8,i1,i1})>
 0) (-5, 3, { Max: 3, Min: -5 }, { Count: 6, Min: -5 }, { Count: 6, Max: 3 }, { Count: 6, Max: 3, Min: -5 })
 1) (-5, 4, { Max: 4, Min: -5 }, { Count: 7, Min: -5 }, { Count: 7, Max: 4 }, { Count: 7, Max: 4, Min: -5 })
 2) (-5, 5, { Max: 5, Min: -5 }, { Count: 8, Min: -5 }, { Count: 8, Max: 5 }, { Count: 8, Max: 5, Min: -5 })
 3) (-5, 6, { Max: 6, Min: -5 }, { Count: 9, Min: -5 }, { Count: 9, Max: 6 }, { Count: 9, Max: 6, Min: -5 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (-6, 4, { Max: 4, Min: -6 }, { Count: 6, Min: -6 }, { Count: 6, Max: 4 }, { Count: 6, Max: 4, Min: -6 })
*** Ctx ping count: 294
    [0](49): Min(*3: *1x, Guard(?4: *3, CastI1(Add(?4, Num<r8>(#2), [-] 5))))
    [1](49): Max(*3: *1x, Guard(?4: *3, CastI1(Add(?4, Num<r8>(#2), [-] 5))))
    [2](49): MinMax(*3: *1x, Guard(?4: *3, CastI1(Add(?4, Num<r8>(#2), [-] 5))))
    [3](49): MinC(*3: *1x, Guard(?4: *3, CastI1(Add(?4, Num<r8>(#2), [-] 5))))
    [4](49): MaxC(*3: *1x, Guard(?4: *3, CastI1(Add(?4, Num<r8>(#2), [-] 5))))
    [5](49): MinMaxC(*3: *1x, Guard(?4: *3, CastI1(Add(?4, Num<r8>(#2), [-] 5))))
###
> Opt->Map((it->Min((it + #it - 5)->CastU8()), it->Max((it + #it - 5)->CastU8()), it->MinMax((it + #it - 5)->CastU8()), it->MinC((it + #it - 5)->CastU8()), it->MaxC((it + #it - 5)->CastU8()), it->MinMaxC((it + #it - 5)->CastU8())))
Opt->Map((it->Min((it + #it - 5)->CastU8()), it->Max((it + #it - 5)->CastU8()), it->MinMax((it + #it - 5)->CastU8()), it->MinC((it + #it - 5)->CastU8()), it->MaxC((it + #it - 5)->CastU8()), it->MinMaxC((it + #it - 5)->CastU8()))) : (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
BndKind:Call, Type:(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:3] Scope(1), Call(∂.Guard([guard:4] Scope(3), Call(∂.CastU8(Add(Scope(4), Num<r8>(Scope(2)), [-] 5:r8)):u8)):u8?)):u8), Call(∂.Max([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastU8(Add(Scope(7), Num<r8>(Scope(5)), [-] 5:r8)):u8)):u8?)):u8), Call(∂.MinMax([map:9] Scope(1), Call(∂.Guard([guard:10] Scope(9), Call(∂.CastU8(Add(Scope(10), Num<r8>(Scope(8)), [-] 5:r8)):u8)):u8?))), Call(∂.MinC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastU8(Add(Scope(13), Num<r8>(Scope(11)), [-] 5:r8)):u8)):u8?))), Call(∂.MaxC([map:15] Scope(1), Call(∂.Guard([guard:16] Scope(15), Call(∂.CastU8(Add(Scope(16), Num<r8>(Scope(14)), [-] 5:r8)):u8)):u8?))), Call(∂.MinMaxC([map:18] Scope(1), Call(∂.Guard([guard:19] Scope(18), Call(∂.CastU8(Add(Scope(19), Num<r8>(Scope(17)), [-] 5:r8)):u8)):u8?)))):(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})):(u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*))
// (<ctx>, ∂.Opt:r8?**) : (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
Min_1(Arr<obj>, i8, Opt<r8>):Opt<u8>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<u8>(u8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [1]:
      1) ret
  Total Size: 55

Max_1(Arr<obj>, i8, Opt<r8>):Opt<u8>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<u8>(u8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [1]:
      1) ret
  Total Size: 55

MinMax_1(Arr<obj>, i8, Opt<r8>):Opt<u8>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<u8>(u8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [1]:
      1) ret
  Total Size: 55

MinC_1(Arr<obj>, i8, Opt<r8>):Opt<u8>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<u8>(u8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [1]:
      1) ret
  Total Size: 55

MaxC_1(Arr<obj>, i8, Opt<r8>):Opt<u8>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<u8>(u8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [1]:
      1) ret
  Total Size: 55

MinMaxC_1(Arr<obj>, i8, Opt<r8>):Opt<u8>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      5) newobj Opt<u8>(u8)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u8>
  Label [1]:
      1) ret
  Total Size: 55

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})
      5) newobj (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,Opt<r8>,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u8>>, ExecCtx, i4):u8
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F0:u8
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,Opt<r8>,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u8>>, ExecCtx, i4):u8
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F1:u8
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,Opt<r8>,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {u8,u8}::_B0:u1
      1) stloc.0 [{u8,u8}]
      1) ldloc.0 [{u8,u8}]
      5) ldflda {u8,u8}::_F1:u8
      1) ldloc.0 [{u8,u8}]
      5) ldflda {u8,u8}::_F0:u8
      5) call static MinMaxGen::ExecMinMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u8>>, ExecCtx, i4, out u8, out u8):Void
      1) ldloc.0 [{u8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F2:{u8,u8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,Opt<r8>,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u8}::_B0:u1
      1) stloc.1 [{i8,u8}]
      1) ldloc.1 [{i8,u8}]
      5) ldflda {i8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMinIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u8>>, ExecCtx, i4, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8}::_F0:i8
      1) ldloc.1 [{i8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F3:{i8,u8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,Opt<r8>,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u8}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u8}::_B0:u1
      1) stloc.1 [{i8,u8}]
      1) ldloc.1 [{i8,u8}]
      5) ldflda {i8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u8>>, ExecCtx, i4, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8}::_F0:i8
      1) ldloc.1 [{i8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F4:{i8,u8}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,Opt<r8>,Opt<u8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u8,u8}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u8,u8}::_B0:u1
      1) stloc.3 [{i8,u8,u8}]
      1) ldloc.3 [{i8,u8,u8}]
      5) ldflda {i8,u8,u8}::_F2:u8
      1) ldloc.3 [{i8,u8,u8}]
      5) ldflda {i8,u8,u8}::_F1:u8
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u8>>, ExecCtx, i4, out u8, out u8):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u8,u8}]
      1) ldloc.2 [i8]
      5) stfld {i8,u8,u8}::_F0:i8
      1) ldloc.3 [{i8,u8,u8}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})::_F5:{i8,u8,u8}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>):Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>):Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (u8, u8, {Max:u8, Min:u8}, {Count:i8, Min:u8}, {Count:i8, Max:u8}, {Count:i8, Max:u8, Min:u8})*
Sequence: Seq<(u8,u8,{u8,u8},{i8,u8},{i8,u8},{i8,u8,u8})>
 0) (0, 18446744073709551615, { Max: 18446744073709551615, Min: 0 }, { Count: 6, Min: 0 }, { Count: 6, Max: 18446744073709551615 }, { Count: 6, Max: 18446744073709551615, Min: 0 })
 1) (0, 18446744073709551614, { Max: 18446744073709551614, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 18446744073709551614 }, { Count: 7, Max: 18446744073709551614, Min: 0 })
 2) (0, 18446744073709551614, { Max: 18446744073709551614, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 18446744073709551614 }, { Count: 8, Max: 18446744073709551614, Min: 0 })
 3) (0, 18446744073709551614, { Max: 18446744073709551614, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 18446744073709551614 }, { Count: 9, Max: 18446744073709551614, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (0, 18446744073709551615, { Max: 18446744073709551615, Min: 0 }, { Count: 6, Min: 0 }, { Count: 6, Max: 18446744073709551615 }, { Count: 6, Max: 18446744073709551615, Min: 0 })
*** Ctx ping count: 294
    [0](49): Min(*3: *1x, Guard(?4: *3, CastU8(Add(?4, Num<r8>(#2), [-] 5))))
    [1](49): Max(*3: *1x, Guard(?4: *3, CastU8(Add(?4, Num<r8>(#2), [-] 5))))
    [2](49): MinMax(*3: *1x, Guard(?4: *3, CastU8(Add(?4, Num<r8>(#2), [-] 5))))
    [3](49): MinC(*3: *1x, Guard(?4: *3, CastU8(Add(?4, Num<r8>(#2), [-] 5))))
    [4](49): MaxC(*3: *1x, Guard(?4: *3, CastU8(Add(?4, Num<r8>(#2), [-] 5))))
    [5](49): MinMaxC(*3: *1x, Guard(?4: *3, CastU8(Add(?4, Num<r8>(#2), [-] 5))))
###
> Opt->Map((it->Min((it + #it - 5)->CastU4()), it->Max((it + #it - 5)->CastU4()), it->MinMax((it + #it - 5)->CastU4()), it->MinC((it + #it - 5)->CastU4()), it->MaxC((it + #it - 5)->CastU4()), it->MinMaxC((it + #it - 5)->CastU4())))
Opt->Map((it->Min((it + #it - 5)->CastU4()), it->Max((it + #it - 5)->CastU4()), it->MinMax((it + #it - 5)->CastU4()), it->MinC((it + #it - 5)->CastU4()), it->MaxC((it + #it - 5)->CastU4()), it->MinMaxC((it + #it - 5)->CastU4()))) : (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
BndKind:Call, Type:(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:3] Scope(1), Call(∂.Guard([guard:4] Scope(3), Call(∂.CastU4(Add(Scope(4), Num<r8>(Scope(2)), [-] 5:r8)):u4)):u4?)):u4), Call(∂.Max([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastU4(Add(Scope(7), Num<r8>(Scope(5)), [-] 5:r8)):u4)):u4?)):u4), Call(∂.MinMax([map:9] Scope(1), Call(∂.Guard([guard:10] Scope(9), Call(∂.CastU4(Add(Scope(10), Num<r8>(Scope(8)), [-] 5:r8)):u4)):u4?))), Call(∂.MinC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastU4(Add(Scope(13), Num<r8>(Scope(11)), [-] 5:r8)):u4)):u4?))), Call(∂.MaxC([map:15] Scope(1), Call(∂.Guard([guard:16] Scope(15), Call(∂.CastU4(Add(Scope(16), Num<r8>(Scope(14)), [-] 5:r8)):u4)):u4?))), Call(∂.MinMaxC([map:18] Scope(1), Call(∂.Guard([guard:19] Scope(18), Call(∂.CastU4(Add(Scope(19), Num<r8>(Scope(17)), [-] 5:r8)):u4)):u4?)))):(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})):(u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*))
// (<ctx>, ∂.Opt:r8?**) : (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
Min_1(Arr<obj>, i8, Opt<r8>):Opt<u4>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      5) newobj Opt<u4>(u4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [1]:
      1) ret
  Total Size: 56

Max_1(Arr<obj>, i8, Opt<r8>):Opt<u4>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      5) newobj Opt<u4>(u4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [1]:
      1) ret
  Total Size: 56

MinMax_1(Arr<obj>, i8, Opt<r8>):Opt<u4>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      5) newobj Opt<u4>(u4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [1]:
      1) ret
  Total Size: 56

MinC_1(Arr<obj>, i8, Opt<r8>):Opt<u4>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      5) newobj Opt<u4>(u4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [1]:
      1) ret
  Total Size: 56

MaxC_1(Arr<obj>, i8, Opt<r8>):Opt<u4>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      5) newobj Opt<u4>(u4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [1]:
      1) ret
  Total Size: 56

MinMaxC_1(Arr<obj>, i8, Opt<r8>):Opt<u4>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u4
      5) newobj Opt<u4>(u4)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u4>
  Label [1]:
      1) ret
  Total Size: 56

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})
      5) newobj (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,Opt<r8>,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u4>>, ExecCtx, i4):u4
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F0:u4
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,Opt<r8>,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u4>>, ExecCtx, i4):u4
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F1:u4
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,Opt<r8>,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u4,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {u4,u4}::_B0:u1
      1) stloc.0 [{u4,u4}]
      1) ldloc.0 [{u4,u4}]
      5) ldflda {u4,u4}::_F1:u4
      1) ldloc.0 [{u4,u4}]
      5) ldflda {u4,u4}::_F0:u4
      5) call static MinMaxGen::ExecMinMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u4>>, ExecCtx, i4, out u4, out u4):Void
      1) ldloc.0 [{u4,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F2:{u4,u4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,Opt<r8>,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u4}::_B0:u1
      1) stloc.1 [{i8,u4}]
      1) ldloc.1 [{i8,u4}]
      5) ldflda {i8,u4}::_F1:u4
      5) call static MinMaxGen::ExecMinIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u4>>, ExecCtx, i4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4}::_F0:i8
      1) ldloc.1 [{i8,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F3:{i8,u4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,Opt<r8>,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u4}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u4}::_B0:u1
      1) stloc.1 [{i8,u4}]
      1) ldloc.1 [{i8,u4}]
      5) ldflda {i8,u4}::_F1:u4
      5) call static MinMaxGen::ExecMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u4>>, ExecCtx, i4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4}::_F0:i8
      1) ldloc.1 [{i8,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F4:{i8,u4}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,Opt<r8>,Opt<u4>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u4,u4}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u4,u4}::_B0:u1
      1) stloc.3 [{i8,u4,u4}]
      1) ldloc.3 [{i8,u4,u4}]
      5) ldflda {i8,u4,u4}::_F2:u4
      1) ldloc.3 [{i8,u4,u4}]
      5) ldflda {i8,u4,u4}::_F1:u4
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u4>>, ExecCtx, i4, out u4, out u4):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u4,u4}]
      1) ldloc.2 [i8]
      5) stfld {i8,u4,u4}::_F0:i8
      1) ldloc.3 [{i8,u4,u4}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})::_F5:{i8,u4,u4}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>):Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>):Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (u4, u4, {Max:u4, Min:u4}, {Count:i8, Min:u4}, {Count:i8, Max:u4}, {Count:i8, Max:u4, Min:u4})*
Sequence: Seq<(u4,u4,{u4,u4},{i8,u4},{i8,u4},{i8,u4,u4})>
 0) (0, 4294967295, { Max: 4294967295, Min: 0 }, { Count: 6, Min: 0 }, { Count: 6, Max: 4294967295 }, { Count: 6, Max: 4294967295, Min: 0 })
 1) (0, 4294967294, { Max: 4294967294, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 4294967294 }, { Count: 7, Max: 4294967294, Min: 0 })
 2) (0, 4294967294, { Max: 4294967294, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 4294967294 }, { Count: 8, Max: 4294967294, Min: 0 })
 3) (0, 4294967294, { Max: 4294967294, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 4294967294 }, { Count: 9, Max: 4294967294, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (0, 4294967295, { Max: 4294967295, Min: 0 }, { Count: 6, Min: 0 }, { Count: 6, Max: 4294967295 }, { Count: 6, Max: 4294967295, Min: 0 })
*** Ctx ping count: 294
    [0](49): Min(*3: *1x, Guard(?4: *3, CastU4(Add(?4, Num<r8>(#2), [-] 5))))
    [1](49): Max(*3: *1x, Guard(?4: *3, CastU4(Add(?4, Num<r8>(#2), [-] 5))))
    [2](49): MinMax(*3: *1x, Guard(?4: *3, CastU4(Add(?4, Num<r8>(#2), [-] 5))))
    [3](49): MinC(*3: *1x, Guard(?4: *3, CastU4(Add(?4, Num<r8>(#2), [-] 5))))
    [4](49): MaxC(*3: *1x, Guard(?4: *3, CastU4(Add(?4, Num<r8>(#2), [-] 5))))
    [5](49): MinMaxC(*3: *1x, Guard(?4: *3, CastU4(Add(?4, Num<r8>(#2), [-] 5))))
###
> Opt->Map((it->Min((it + #it - 5)->CastU2()), it->Max((it + #it - 5)->CastU2()), it->MinMax((it + #it - 5)->CastU2()), it->MinC((it + #it - 5)->CastU2()), it->MaxC((it + #it - 5)->CastU2()), it->MinMaxC((it + #it - 5)->CastU2())))
Opt->Map((it->Min((it + #it - 5)->CastU2()), it->Max((it + #it - 5)->CastU2()), it->MinMax((it + #it - 5)->CastU2()), it->MinC((it + #it - 5)->CastU2()), it->MaxC((it + #it - 5)->CastU2()), it->MinMaxC((it + #it - 5)->CastU2()))) : (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
BndKind:Call, Type:(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:3] Scope(1), Call(∂.Guard([guard:4] Scope(3), Call(∂.CastU2(Add(Scope(4), Num<r8>(Scope(2)), [-] 5:r8)):u2)):u2?)):u2), Call(∂.Max([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastU2(Add(Scope(7), Num<r8>(Scope(5)), [-] 5:r8)):u2)):u2?)):u2), Call(∂.MinMax([map:9] Scope(1), Call(∂.Guard([guard:10] Scope(9), Call(∂.CastU2(Add(Scope(10), Num<r8>(Scope(8)), [-] 5:r8)):u2)):u2?))), Call(∂.MinC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastU2(Add(Scope(13), Num<r8>(Scope(11)), [-] 5:r8)):u2)):u2?))), Call(∂.MaxC([map:15] Scope(1), Call(∂.Guard([guard:16] Scope(15), Call(∂.CastU2(Add(Scope(16), Num<r8>(Scope(14)), [-] 5:r8)):u2)):u2?))), Call(∂.MinMaxC([map:18] Scope(1), Call(∂.Guard([guard:19] Scope(18), Call(∂.CastU2(Add(Scope(19), Num<r8>(Scope(17)), [-] 5:r8)):u2)):u2?)))):(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})):(u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*))
// (<ctx>, ∂.Opt:r8?**) : (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
Min_1(Arr<obj>, i8, Opt<r8>):Opt<u2>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      5) newobj Opt<u2>(u2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [1]:
      1) ret
  Total Size: 56

Max_1(Arr<obj>, i8, Opt<r8>):Opt<u2>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      5) newobj Opt<u2>(u2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [1]:
      1) ret
  Total Size: 56

MinMax_1(Arr<obj>, i8, Opt<r8>):Opt<u2>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      5) newobj Opt<u2>(u2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [1]:
      1) ret
  Total Size: 56

MinC_1(Arr<obj>, i8, Opt<r8>):Opt<u2>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      5) newobj Opt<u2>(u2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [1]:
      1) ret
  Total Size: 56

MaxC_1(Arr<obj>, i8, Opt<r8>):Opt<u2>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      5) newobj Opt<u2>(u2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [1]:
      1) ret
  Total Size: 56

MinMaxC_1(Arr<obj>, i8, Opt<r8>):Opt<u2>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u2
      5) newobj Opt<u2>(u2)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u2>
  Label [1]:
      1) ret
  Total Size: 56

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})
      5) newobj (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,Opt<r8>,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u2>>, ExecCtx, i4):u2
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F0:u2
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,Opt<r8>,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u2>>, ExecCtx, i4):u2
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F1:u2
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,Opt<r8>,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u2,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {u2,u2}::_B0:u1
      1) stloc.0 [{u2,u2}]
      1) ldloc.0 [{u2,u2}]
      5) ldflda {u2,u2}::_F1:u2
      1) ldloc.0 [{u2,u2}]
      5) ldflda {u2,u2}::_F0:u2
      5) call static MinMaxGen::ExecMinMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u2>>, ExecCtx, i4, out u2, out u2):Void
      1) ldloc.0 [{u2,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F2:{u2,u2}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,Opt<r8>,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u2}::_B0:u1
      1) stloc.1 [{i8,u2}]
      1) ldloc.1 [{i8,u2}]
      5) ldflda {i8,u2}::_F1:u2
      5) call static MinMaxGen::ExecMinIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u2>>, ExecCtx, i4, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2}::_F0:i8
      1) ldloc.1 [{i8,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F3:{i8,u2}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,Opt<r8>,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u2}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u2}::_B0:u1
      1) stloc.1 [{i8,u2}]
      1) ldloc.1 [{i8,u2}]
      5) ldflda {i8,u2}::_F1:u2
      5) call static MinMaxGen::ExecMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u2>>, ExecCtx, i4, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2}::_F0:i8
      1) ldloc.1 [{i8,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F4:{i8,u2}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,Opt<r8>,Opt<u2>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u2,u2}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u2,u2}::_B0:u1
      1) stloc.3 [{i8,u2,u2}]
      1) ldloc.3 [{i8,u2,u2}]
      5) ldflda {i8,u2,u2}::_F2:u2
      1) ldloc.3 [{i8,u2,u2}]
      5) ldflda {i8,u2,u2}::_F1:u2
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u2>>, ExecCtx, i4, out u2, out u2):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u2,u2}]
      1) ldloc.2 [i8]
      5) stfld {i8,u2,u2}::_F0:i8
      1) ldloc.3 [{i8,u2,u2}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})::_F5:{i8,u2,u2}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>):Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>):Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (u2, u2, {Max:u2, Min:u2}, {Count:i8, Min:u2}, {Count:i8, Max:u2}, {Count:i8, Max:u2, Min:u2})*
Sequence: Seq<(u2,u2,{u2,u2},{i8,u2},{i8,u2},{i8,u2,u2})>
 0) (0, 65535, { Max: 65535, Min: 0 }, { Count: 6, Min: 0 }, { Count: 6, Max: 65535 }, { Count: 6, Max: 65535, Min: 0 })
 1) (0, 65534, { Max: 65534, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 65534 }, { Count: 7, Max: 65534, Min: 0 })
 2) (0, 65534, { Max: 65534, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 65534 }, { Count: 8, Max: 65534, Min: 0 })
 3) (0, 65534, { Max: 65534, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 65534 }, { Count: 9, Max: 65534, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (0, 65535, { Max: 65535, Min: 0 }, { Count: 6, Min: 0 }, { Count: 6, Max: 65535 }, { Count: 6, Max: 65535, Min: 0 })
*** Ctx ping count: 294
    [0](49): Min(*3: *1x, Guard(?4: *3, CastU2(Add(?4, Num<r8>(#2), [-] 5))))
    [1](49): Max(*3: *1x, Guard(?4: *3, CastU2(Add(?4, Num<r8>(#2), [-] 5))))
    [2](49): MinMax(*3: *1x, Guard(?4: *3, CastU2(Add(?4, Num<r8>(#2), [-] 5))))
    [3](49): MinC(*3: *1x, Guard(?4: *3, CastU2(Add(?4, Num<r8>(#2), [-] 5))))
    [4](49): MaxC(*3: *1x, Guard(?4: *3, CastU2(Add(?4, Num<r8>(#2), [-] 5))))
    [5](49): MinMaxC(*3: *1x, Guard(?4: *3, CastU2(Add(?4, Num<r8>(#2), [-] 5))))
###
> Opt->Map((it->Min((it + #it - 5)->CastU1()), it->Max((it + #it - 5)->CastU1()), it->MinMax((it + #it - 5)->CastU1()), it->MinC((it + #it - 5)->CastU1()), it->MaxC((it + #it - 5)->CastU1()), it->MinMaxC((it + #it - 5)->CastU1())))
Opt->Map((it->Min((it + #it - 5)->CastU1()), it->Max((it + #it - 5)->CastU1()), it->MinMax((it + #it - 5)->CastU1()), it->MinC((it + #it - 5)->CastU1()), it->MaxC((it + #it - 5)->CastU1()), it->MinMaxC((it + #it - 5)->CastU1()))) : (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
BndKind:Call, Type:(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*, Bnd:(Call(∂.ForEach([map:1] Global(Opt), (Call(∂.Min([map:3] Scope(1), Call(∂.Guard([guard:4] Scope(3), Call(∂.CastU1(Add(Scope(4), Num<r8>(Scope(2)), [-] 5:r8)):u1)):u1?)):u1), Call(∂.Max([map:6] Scope(1), Call(∂.Guard([guard:7] Scope(6), Call(∂.CastU1(Add(Scope(7), Num<r8>(Scope(5)), [-] 5:r8)):u1)):u1?)):u1), Call(∂.MinMax([map:9] Scope(1), Call(∂.Guard([guard:10] Scope(9), Call(∂.CastU1(Add(Scope(10), Num<r8>(Scope(8)), [-] 5:r8)):u1)):u1?))), Call(∂.MinC([map:12] Scope(1), Call(∂.Guard([guard:13] Scope(12), Call(∂.CastU1(Add(Scope(13), Num<r8>(Scope(11)), [-] 5:r8)):u1)):u1?))), Call(∂.MaxC([map:15] Scope(1), Call(∂.Guard([guard:16] Scope(15), Call(∂.CastU1(Add(Scope(16), Num<r8>(Scope(14)), [-] 5:r8)):u1)):u1?))), Call(∂.MinMaxC([map:18] Scope(1), Call(∂.Guard([guard:19] Scope(18), Call(∂.CastU1(Add(Scope(19), Num<r8>(Scope(17)), [-] 5:r8)):u1)):u1?)))):(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})):(u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*))
// (<ctx>, ∂.Opt:r8?**) : (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
Min_1(Arr<obj>, i8, Opt<r8>):Opt<u1>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      5) newobj Opt<u1>(u1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [1]:
      1) ret
  Total Size: 56

Max_1(Arr<obj>, i8, Opt<r8>):Opt<u1>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      5) newobj Opt<u1>(u1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [1]:
      1) ret
  Total Size: 56

MinMax_1(Arr<obj>, i8, Opt<r8>):Opt<u1>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      5) newobj Opt<u1>(u1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [1]:
      1) ret
  Total Size: 56

MinC_1(Arr<obj>, i8, Opt<r8>):Opt<u1>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      5) newobj Opt<u1>(u1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [1]:
      1) ret
  Total Size: 56

MaxC_1(Arr<obj>, i8, Opt<r8>):Opt<u1>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      5) newobj Opt<u1>(u1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [1]:
      1) ret
  Total Size: 56

MinMaxC_1(Arr<obj>, i8, Opt<r8>):Opt<u1>
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldarga.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.0 [r8]
      1) ldloc.0 [r8]
      1) ldarg.1 [i8]
      1) conv.r8
      1) add
      9) ldc.r8 [5]
      1) sub
      5) call static NumUtil::ModToI8(r8):i8
      1) conv.u1
      5) newobj Opt<u1>(u1)
      5) br [1]
  Label [0]:
      5) call static CodeGenUtil::GetDefault():Opt<u1>
  Label [1]:
      1) ret
  Total Size: 56

ForEach_1(Arr<obj>, Seq<Opt<r8>>):(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})
      5) newobj (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})()
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,Opt<r8>,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u1>>, ExecCtx, i4):u1
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F0:u1
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,Opt<r8>,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u1>>, ExecCtx, i4):u1
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F1:u1
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,Opt<r8>,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {u1,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {u1,u1}::_B0:u1
      1) stloc.0 [{u1,u1}]
      1) ldloc.0 [{u1,u1}]
      5) ldflda {u1,u1}::_F1:u1
      1) ldloc.0 [{u1,u1}]
      5) ldflda {u1,u1}::_F0:u1
      5) call static MinMaxGen::ExecMinMaxInd(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u1>>, ExecCtx, i4, out u1, out u1):Void
      1) ldloc.0 [{u1,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F2:{u1,u1}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,Opt<r8>,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u1}::_B0:u1
      1) stloc.1 [{i8,u1}]
      1) ldloc.1 [{i8,u1}]
      5) ldflda {i8,u1}::_F1:u1
      5) call static MinMaxGen::ExecMinIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u1>>, ExecCtx, i4, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1}::_F0:i8
      1) ldloc.1 [{i8,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F3:{i8,u1}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,Opt<r8>,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,u1}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,u1}::_B0:u1
      1) stloc.1 [{i8,u1}]
      1) ldloc.1 [{i8,u1}]
      5) ldflda {i8,u1}::_F1:u1
      5) call static MinMaxGen::ExecMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u1>>, ExecCtx, i4, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1}::_F0:i8
      1) ldloc.1 [{i8,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F4:{i8,u1}
      1) dup
      1) ldarg.1 [Seq<Opt<r8>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,Opt<r8>,Opt<u1>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,u1,u1}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,u1,u1}::_B0:u1
      1) stloc.3 [{i8,u1,u1}]
      1) ldloc.3 [{i8,u1,u1}]
      5) ldflda {i8,u1,u1}::_F2:u1
      1) ldloc.3 [{i8,u1,u1}]
      5) ldflda {i8,u1,u1}::_F1:u1
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<Opt<r8>>, Func<i8,Opt<r8>,Opt<u1>>, ExecCtx, i4, out u1, out u1):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,u1,u1}]
      1) ldloc.2 [i8]
      5) stfld {i8,u1,u1}::_F0:i8
      1) ldloc.3 [{i8,u1,u1}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})::_F5:{i8,u1,u1}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<r8>>>
      1) stloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldloc.1 [Seq<Seq<Opt<r8>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<r8>>,(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<r8>>>, Func<Seq<Opt<r8>>,(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>):Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>):Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, Opt:r8?**) to (u1, u1, {Max:u1, Min:u1}, {Count:i8, Min:u1}, {Count:i8, Max:u1}, {Count:i8, Max:u1, Min:u1})*
Sequence: Seq<(u1,u1,{u1,u1},{i8,u1},{i8,u1},{i8,u1,u1})>
 0) (0, 255, { Max: 255, Min: 0 }, { Count: 6, Min: 0 }, { Count: 6, Max: 255 }, { Count: 6, Max: 255, Min: 0 })
 1) (0, 254, { Max: 254, Min: 0 }, { Count: 7, Min: 0 }, { Count: 7, Max: 254 }, { Count: 7, Max: 254, Min: 0 })
 2) (0, 254, { Max: 254, Min: 0 }, { Count: 8, Min: 0 }, { Count: 8, Max: 254 }, { Count: 8, Max: 254, Min: 0 })
 3) (0, 254, { Max: 254, Min: 0 }, { Count: 9, Min: 0 }, { Count: 9, Max: 254 }, { Count: 9, Max: 254, Min: 0 })
 4) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 5) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 6) (0, 0, { Max: 0, Min: 0 }, { Count: 0, Min: 0 }, { Count: 0, Max: 0 }, { Count: 0, Max: 0, Min: 0 })
 7) (0, 255, { Max: 255, Min: 0 }, { Count: 6, Min: 0 }, { Count: 6, Max: 255 }, { Count: 6, Max: 255, Min: 0 })
*** Ctx ping count: 294
    [0](49): Min(*3: *1x, Guard(?4: *3, CastU1(Add(?4, Num<r8>(#2), [-] 5))))
    [1](49): Max(*3: *1x, Guard(?4: *3, CastU1(Add(?4, Num<r8>(#2), [-] 5))))
    [2](49): MinMax(*3: *1x, Guard(?4: *3, CastU1(Add(?4, Num<r8>(#2), [-] 5))))
    [3](49): MinC(*3: *1x, Guard(?4: *3, CastU1(Add(?4, Num<r8>(#2), [-] 5))))
    [4](49): MaxC(*3: *1x, Guard(?4: *3, CastU1(Add(?4, Num<r8>(#2), [-] 5))))
    [5](49): MinMaxC(*3: *1x, Guard(?4: *3, CastU1(Add(?4, Num<r8>(#2), [-] 5))))
###
> OB->Map((it->Min(it and #it mod 2 = 0), it->Max(it and #it mod 2 = 0), it->MinMax(it and #it mod 2 = 0), it->MinC(it and #it mod 2 = 0), it->MaxC(it and #it mod 2 = 0), it->MinMaxC(it and #it mod 2 = 0)))
OB->Map((it->Min(it and #it mod 2 @= 0), it->Max(it and #it mod 2 @= 0), it->MinMax(it and #it mod 2 @= 0), it->MinC(it and #it mod 2 @= 0), it->MaxC(it and #it mod 2 @= 0), it->MinMaxC(it and #it mod 2 @= 0))) : (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
BndKind:Call, Type:(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*, Bnd:(Call(∂.ForEach([map:1] Global(OB), (Call(∂.Min([map:3] Scope(1), And(Scope(3), Cmp(IntMod(Scope(2), 2:i8) @= 0:i8))):b), Call(∂.Max([map:5] Scope(1), And(Scope(5), Cmp(IntMod(Scope(4), 2:i8) @= 0:i8))):b), Call(∂.MinMax([map:7] Scope(1), And(Scope(7), Cmp(IntMod(Scope(6), 2:i8) @= 0:i8)))), Call(∂.MinC([map:9] Scope(1), And(Scope(9), Cmp(IntMod(Scope(8), 2:i8) @= 0:i8)))), Call(∂.MaxC([map:11] Scope(1), And(Scope(11), Cmp(IntMod(Scope(10), 2:i8) @= 0:i8)))), Call(∂.MinMaxC([map:13] Scope(1), And(Scope(13), Cmp(IntMod(Scope(12), 2:i8) @= 0:i8))))):(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})):(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*))
// (<ctx>, ∂.OB:b?**) : (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
Min_1(Arr<obj>, i8, Opt<bool>):Opt<bool>
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
      1) dup
      5) brfalse [0]
      1) pop
      1) ldarg.2 [Opt<bool>]
      5) br [1]
  Label [0]:
      5) newobj Opt<bool>(bool)
  Label [1]:
      1) ret
  Total Size: 27

Max_1(Arr<obj>, i8, Opt<bool>):Opt<bool>
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
      1) dup
      5) brfalse [0]
      1) pop
      1) ldarg.2 [Opt<bool>]
      5) br [1]
  Label [0]:
      5) newobj Opt<bool>(bool)
  Label [1]:
      1) ret
  Total Size: 27

MinMax_1(Arr<obj>, i8, Opt<bool>):Opt<bool>
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
      1) dup
      5) brfalse [0]
      1) pop
      1) ldarg.2 [Opt<bool>]
      5) br [1]
  Label [0]:
      5) newobj Opt<bool>(bool)
  Label [1]:
      1) ret
  Total Size: 27

MinC_1(Arr<obj>, i8, Opt<bool>):Opt<bool>
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
      1) dup
      5) brfalse [0]
      1) pop
      1) ldarg.2 [Opt<bool>]
      5) br [1]
  Label [0]:
      5) newobj Opt<bool>(bool)
  Label [1]:
      1) ret
  Total Size: 27

MaxC_1(Arr<obj>, i8, Opt<bool>):Opt<bool>
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
      1) dup
      5) brfalse [0]
      1) pop
      1) ldarg.2 [Opt<bool>]
      5) br [1]
  Label [0]:
      5) newobj Opt<bool>(bool)
  Label [1]:
      1) ret
  Total Size: 27

MinMaxC_1(Arr<obj>, i8, Opt<bool>):Opt<bool>
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
      1) dup
      5) brfalse [0]
      1) pop
      1) ldarg.2 [Opt<bool>]
      5) br [1]
  Label [0]:
      5) newobj Opt<bool>(bool)
  Label [1]:
      1) ret
  Total Size: 27

ForEach_1(Arr<obj>, Seq<Opt<bool>>):(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})
      5) newobj (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})()
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,Opt<bool>,Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<Opt<bool>>, Func<i8,Opt<bool>,Opt<bool>>, ExecCtx, i4):bool
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F0:bool
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,Opt<bool>,Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<Opt<bool>>, Func<i8,Opt<bool>,Opt<bool>>, ExecCtx, i4):bool
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F1:bool
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,Opt<bool>,Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {bool,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {bool,bool}::_B0:u1
      1) stloc.0 [{bool,bool}]
      1) ldloc.0 [{bool,bool}]
      5) ldflda {bool,bool}::_F1:bool
      1) ldloc.0 [{bool,bool}]
      5) ldflda {bool,bool}::_F0:bool
      5) call static MinMaxGen::ExecMinMaxInd(Seq<Opt<bool>>, Func<i8,Opt<bool>,Opt<bool>>, ExecCtx, i4, out bool, out bool):Void
      1) ldloc.0 [{bool,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F2:{bool,bool}
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,Opt<bool>,Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,bool}::_B0:u1
      1) stloc.1 [{i8,bool}]
      1) ldloc.1 [{i8,bool}]
      5) ldflda {i8,bool}::_F1:bool
      5) call static MinMaxGen::ExecMinIndC(Seq<Opt<bool>>, Func<i8,Opt<bool>,Opt<bool>>, ExecCtx, i4, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool}::_F0:i8
      1) ldloc.1 [{i8,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F3:{i8,bool}
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,Opt<bool>,Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,bool}::_B0:u1
      1) stloc.1 [{i8,bool}]
      1) ldloc.1 [{i8,bool}]
      5) ldflda {i8,bool}::_F1:bool
      5) call static MinMaxGen::ExecMaxIndC(Seq<Opt<bool>>, Func<i8,Opt<bool>,Opt<bool>>, ExecCtx, i4, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool}::_F0:i8
      1) ldloc.1 [{i8,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F4:{i8,bool}
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,Opt<bool>,Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,bool,bool}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,bool,bool}::_B0:u1
      1) stloc.3 [{i8,bool,bool}]
      1) ldloc.3 [{i8,bool,bool}]
      5) ldflda {i8,bool,bool}::_F2:bool
      1) ldloc.3 [{i8,bool,bool}]
      5) ldflda {i8,bool,bool}::_F1:bool
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<Opt<bool>>, Func<i8,Opt<bool>,Opt<bool>>, ExecCtx, i4, out bool, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,bool,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool,bool}::_F0:i8
      1) ldloc.3 [{i8,bool,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F5:{i8,bool,bool}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<bool>>>
      1) stloc.1 [Seq<Seq<Opt<bool>>>]
      1) ldloc.1 [Seq<Seq<Opt<bool>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<bool>>,(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<bool>>>, Func<Seq<Opt<bool>>,(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>):Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>):Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, OB:b?**) to (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
Sequence: Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
 0) (false, true , { Max: true , Min: false }, { Count: 7, Min: false }, { Count: 7, Max: true  }, { Count: 7, Max: true , Min: false })
 1) (false, false, { Max: false, Min: false }, { Count: 7, Min: false }, { Count: 7, Max: false }, { Count: 7, Max: false, Min: false })
 2) (false, true , { Max: true , Min: false }, { Count: 7, Min: false }, { Count: 7, Max: true  }, { Count: 7, Max: true , Min: false })
 3) (false, true , { Max: true , Min: false }, { Count: 7, Min: false }, { Count: 7, Max: true  }, { Count: 7, Max: true , Min: false })
 4) (false, false, { Max: false, Min: false }, { Count: 0, Min: false }, { Count: 0, Max: false }, { Count: 0, Max: false, Min: false })
 5) (false, false, { Max: false, Min: false }, { Count: 0, Min: false }, { Count: 0, Max: false }, { Count: 0, Max: false, Min: false })
 6) (false, false, { Max: false, Min: false }, { Count: 0, Min: false }, { Count: 0, Max: false }, { Count: 0, Max: false, Min: false })
*** Ctx ping count: 152
    [0](9): Min(*3: *1x, And(*3, IntMod(#2, 2) @= 0))
    [1](18): Max(*3: *1x, And(*3, IntMod(#2, 2) @= 0))
    [2](20): MinMax(*3: *1x, And(*3, IntMod(#2, 2) @= 0))
    [3](35): MinC(*3: *1x, And(*3, IntMod(#2, 2) @= 0))
    [4](35): MaxC(*3: *1x, And(*3, IntMod(#2, 2) @= 0))
    [5](35): MinMaxC(*3: *1x, And(*3, IntMod(#2, 2) @= 0))
###
> OB->Map((it->Min(it or #it mod 2 = 0), it->Max(it or #it mod 2 = 0), it->MinMax(it or #it mod 2 = 0), it->MinC(it or #it mod 2 = 0), it->MaxC(it or #it mod 2 = 0), it->MinMaxC(it or #it mod 2 = 0)))
OB->Map((it->Min(it or #it mod 2 @= 0), it->Max(it or #it mod 2 @= 0), it->MinMax(it or #it mod 2 @= 0), it->MinC(it or #it mod 2 @= 0), it->MaxC(it or #it mod 2 @= 0), it->MinMaxC(it or #it mod 2 @= 0))) : (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
BndKind:Call, Type:(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*, Bnd:(Call(∂.ForEach([map:1] Global(OB), (Call(∂.Min([map:3] Scope(1), Or(Scope(3), Cmp(IntMod(Scope(2), 2:i8) @= 0:i8))):b), Call(∂.Max([map:5] Scope(1), Or(Scope(5), Cmp(IntMod(Scope(4), 2:i8) @= 0:i8))):b), Call(∂.MinMax([map:7] Scope(1), Or(Scope(7), Cmp(IntMod(Scope(6), 2:i8) @= 0:i8)))), Call(∂.MinC([map:9] Scope(1), Or(Scope(9), Cmp(IntMod(Scope(8), 2:i8) @= 0:i8)))), Call(∂.MaxC([map:11] Scope(1), Or(Scope(11), Cmp(IntMod(Scope(10), 2:i8) @= 0:i8)))), Call(∂.MinMaxC([map:13] Scope(1), Or(Scope(13), Cmp(IntMod(Scope(12), 2:i8) @= 0:i8))))):(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})):(b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*))
// (<ctx>, ∂.OB:b?**) : (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
Min_1(Arr<obj>, i8, Opt<bool>):Opt<bool>
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
      1) dup
      5) brtrue [0]
      1) pop
      1) ldarg.2 [Opt<bool>]
      5) br [1]
  Label [0]:
      5) newobj Opt<bool>(bool)
  Label [1]:
      1) ret
  Total Size: 27

Max_1(Arr<obj>, i8, Opt<bool>):Opt<bool>
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
      1) dup
      5) brtrue [0]
      1) pop
      1) ldarg.2 [Opt<bool>]
      5) br [1]
  Label [0]:
      5) newobj Opt<bool>(bool)
  Label [1]:
      1) ret
  Total Size: 27

MinMax_1(Arr<obj>, i8, Opt<bool>):Opt<bool>
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
      1) dup
      5) brtrue [0]
      1) pop
      1) ldarg.2 [Opt<bool>]
      5) br [1]
  Label [0]:
      5) newobj Opt<bool>(bool)
  Label [1]:
      1) ret
  Total Size: 27

MinC_1(Arr<obj>, i8, Opt<bool>):Opt<bool>
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
      1) dup
      5) brtrue [0]
      1) pop
      1) ldarg.2 [Opt<bool>]
      5) br [1]
  Label [0]:
      5) newobj Opt<bool>(bool)
  Label [1]:
      1) ret
  Total Size: 27

MaxC_1(Arr<obj>, i8, Opt<bool>):Opt<bool>
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
      1) dup
      5) brtrue [0]
      1) pop
      1) ldarg.2 [Opt<bool>]
      5) br [1]
  Label [0]:
      5) newobj Opt<bool>(bool)
  Label [1]:
      1) ret
  Total Size: 27

MinMaxC_1(Arr<obj>, i8, Opt<bool>):Opt<bool>
      1) ldarg.1 [i8]
      1) ldc.i4.2
      1) conv.i8
      1) rem
      1) ldc.i4.0
      1) conv.i8
      2) ceq
      1) dup
      5) brtrue [0]
      1) pop
      1) ldarg.2 [Opt<bool>]
      5) br [1]
  Label [0]:
      5) newobj Opt<bool>(bool)
  Label [1]:
      1) ret
  Total Size: 27

ForEach_1(Arr<obj>, Seq<Opt<bool>>):(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})
      5) newobj (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})()
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,Opt<bool>,Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.0
      5) call static MinMaxGen::ExecMinInd(Seq<Opt<bool>>, Func<i8,Opt<bool>,Opt<bool>>, ExecCtx, i4):bool
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F0:bool
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Func<i8,Opt<bool>,Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.1
      5) call static MinMaxGen::ExecMaxInd(Seq<Opt<bool>>, Func<i8,Opt<bool>,Opt<bool>>, ExecCtx, i4):bool
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F1:bool
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [Func<i8,Opt<bool>,Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.2
      5) newobj {bool,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {bool,bool}::_B0:u1
      1) stloc.0 [{bool,bool}]
      1) ldloc.0 [{bool,bool}]
      5) ldflda {bool,bool}::_F1:bool
      1) ldloc.0 [{bool,bool}]
      5) ldflda {bool,bool}::_F0:bool
      5) call static MinMaxGen::ExecMinMaxInd(Seq<Opt<bool>>, Func<i8,Opt<bool>,Opt<bool>>, ExecCtx, i4, out bool, out bool):Void
      1) ldloc.0 [{bool,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F2:{bool,bool}
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.4
      5) ldelem [Func<i8,Opt<bool>,Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.3
      5) newobj {i8,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,bool}::_B0:u1
      1) stloc.1 [{i8,bool}]
      1) ldloc.1 [{i8,bool}]
      5) ldflda {i8,bool}::_F1:bool
      5) call static MinMaxGen::ExecMinIndC(Seq<Opt<bool>>, Func<i8,Opt<bool>,Opt<bool>>, ExecCtx, i4, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool}::_F0:i8
      1) ldloc.1 [{i8,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.5
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F3:{i8,bool}
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.6
      5) ldelem [Func<i8,Opt<bool>,Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.4
      5) newobj {i8,bool}()
      1) dup
      1) ldc.i4.3
      5) stfld {i8,bool}::_B0:u1
      1) stloc.1 [{i8,bool}]
      1) ldloc.1 [{i8,bool}]
      5) ldflda {i8,bool}::_F1:bool
      5) call static MinMaxGen::ExecMaxIndC(Seq<Opt<bool>>, Func<i8,Opt<bool>,Opt<bool>>, ExecCtx, i4, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.1 [{i8,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool}::_F0:i8
      1) ldloc.1 [{i8,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.7
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F4:{i8,bool}
      1) dup
      1) ldarg.1 [Seq<Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      1) ldc.i4.8
      5) ldelem [Func<i8,Opt<bool>,Opt<bool>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [ExecCtx]
      1) ldc.i4.5
      5) newobj {i8,bool,bool}()
      1) dup
      1) ldc.i4.7
      5) stfld {i8,bool,bool}::_B0:u1
      1) stloc.3 [{i8,bool,bool}]
      1) ldloc.3 [{i8,bool,bool}]
      5) ldflda {i8,bool,bool}::_F2:bool
      1) ldloc.3 [{i8,bool,bool}]
      5) ldflda {i8,bool,bool}::_F1:bool
      5) call static MinMaxGen::ExecMinMaxIndC(Seq<Opt<bool>>, Func<i8,Opt<bool>,Opt<bool>>, ExecCtx, i4, out bool, out bool):i8
      1) stloc.2 [i8]
      1) ldloc.3 [{i8,bool,bool}]
      1) ldloc.2 [i8]
      5) stfld {i8,bool,bool}::_F0:i8
      1) ldloc.3 [{i8,bool,bool}]
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Arr<obj>]
      2) ldc.i4.s [9]
      5) ldelem [RecordRuntimeTypeInfo]
      5) stfld {}::_rrti:RecordRuntimeTypeInfo
      5) stfld (bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})::_F5:{i8,bool,bool}
      1) ret
  Total Size: 397

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):ExecCtx
      1) stloc.0 [ExecCtx]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<Seq<Opt<bool>>>
      1) stloc.1 [Seq<Seq<Opt<bool>>>]
      1) ldloc.1 [Seq<Seq<Opt<bool>>>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<Seq<Opt<bool>>,(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.2
      5) newarr [obj]
      1) dup
      1) ldc.i4.0
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.1
      5) ldelem [Arr<obj>]
      5) stelem [Arr<obj>]
      1) dup
      1) ldc.i4.1
      1) ldloc.0 [ExecCtx]
      5) stelem [ExecCtx]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<Seq<Opt<bool>>>, Func<Seq<Opt<bool>>,(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>):Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>):Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
      1) ret
  Total Size: 80

Func sig: (<ctx>:x, OB:b?**) to (b, b, {Max:b, Min:b}, {Count:i8, Min:b}, {Count:i8, Max:b}, {Count:i8, Max:b, Min:b})*
Sequence: Seq<(bool,bool,{bool,bool},{i8,bool},{i8,bool},{i8,bool,bool})>
 0) (true , true , { Max: true , Min: true  }, { Count: 6, Min: true  }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: true  })
 1) (false, true , { Max: true , Min: false }, { Count: 6, Min: false }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: false })
 2) (false, true , { Max: true , Min: false }, { Count: 6, Min: false }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: false })
 3) (false, true , { Max: true , Min: false }, { Count: 6, Min: false }, { Count: 6, Max: true  }, { Count: 6, Max: true , Min: false })
 4) (false, false, { Max: false, Min: false }, { Count: 0, Min: false }, { Count: 0, Max: false }, { Count: 0, Max: false, Min: false })
 5) (true , true , { Max: true , Min: true  }, { Count: 1, Min: true  }, { Count: 1, Max: true  }, { Count: 1, Max: true , Min: true  })
 6) (false, false, { Max: false, Min: false }, { Count: 0, Min: false }, { Count: 0, Max: false }, { Count: 0, Max: false, Min: false })
*** Ctx ping count: 153
    [0](21): Min(*3: *1x, Or(*3, IntMod(#2, 2) @= 0))
    [1](6): Max(*3: *1x, Or(*3, IntMod(#2, 2) @= 0))
    [2](21): MinMax(*3: *1x, Or(*3, IntMod(#2, 2) @= 0))
    [3](35): MinC(*3: *1x, Or(*3, IntMod(#2, 2) @= 0))
    [4](35): MaxC(*3: *1x, Or(*3, IntMod(#2, 2) @= 0))
    [5](35): MinMaxC(*3: *1x, Or(*3, IntMod(#2, 2) @= 0))
###
