> Chain(Range(1), Range(2), Range(3))
Chain(Range(1), Range(2), Range(3)) : i8*
BndKind:VariadicOp, Type:i8*, Bnd:(SeqConcat(Call(∂.Range(1:i8):i8*), Call(∂.Range(2:i8):i8*), Call(∂.Range(3:i8):i8*)))
// () : i8*
top(Arr<obj>, Arr<obj>):obj
      1) ldc.i4.1
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) ldc.i4.2
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) ldc.i4.3
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      5) call static CodeGenUtil::SeqConcat(Seq<i8>, Seq<i8>, Seq<i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 32

Func sig: () to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 2
###
> Chain(Range(1), Range(2), Range(3), Range(4))
Chain(Range(1), Range(2), Range(3), Range(4)) : i8*
BndKind:VariadicOp, Type:i8*, Bnd:(SeqConcat(Call(∂.Range(1:i8):i8*), Call(∂.Range(2:i8):i8*), Call(∂.Range(3:i8):i8*), Call(∂.Range(4:i8):i8*)))
// () : i8*
top(Arr<obj>, Arr<obj>):obj
      1) ldc.i4.1
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) ldc.i4.2
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) ldc.i4.3
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) ldc.i4.4
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      5) call static CodeGenUtil::SeqConcat(Seq<i8>, Seq<i8>, Seq<i8>, Seq<i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 39

Func sig: () to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 2
 6) 0
 7) 1
 8) 2
 9) 3
###
> Chain(Range(1), Range(2), Range(3), Range(4), Range(5))
Chain(Range(1), Range(2), Range(3), Range(4), Range(5)) : i8*
BndKind:VariadicOp, Type:i8*, Bnd:(SeqConcat(Call(∂.Range(1:i8):i8*), Call(∂.Range(2:i8):i8*), Call(∂.Range(3:i8):i8*), Call(∂.Range(4:i8):i8*), Call(∂.Range(5:i8):i8*)))
// () : i8*
top(Arr<obj>, Arr<obj>):obj
      1) ldc.i4.5
      5) newarr [Seq<i8>]
      1) dup
      1) ldc.i4.0
      1) ldc.i4.1
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      1) dup
      1) ldc.i4.1
      1) ldc.i4.2
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      1) dup
      1) ldc.i4.2
      1) ldc.i4.3
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      1) dup
      1) ldc.i4.3
      1) ldc.i4.4
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      1) dup
      1) ldc.i4.4
      1) ldc.i4.5
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      5) call static CodeGenUtil::SeqConcat(Arr<Seq<i8>>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 67

Func sig: () to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 2
 6) 0
 7) 1
 8) 2
 9) 3
10) 0
11) 1
12) 2
13) 3
14) 4
###
> Chain(Range(1), Range(2), Range(3), Range(4), Range(5), Range(6))
Chain(Range(1), Range(2), Range(3), Range(4), Range(5), Range(6)) : i8*
BndKind:VariadicOp, Type:i8*, Bnd:(SeqConcat(Call(∂.Range(1:i8):i8*), Call(∂.Range(2:i8):i8*), Call(∂.Range(3:i8):i8*), Call(∂.Range(4:i8):i8*), Call(∂.Range(5:i8):i8*), Call(∂.Range(6:i8):i8*)))
// () : i8*
top(Arr<obj>, Arr<obj>):obj
      1) ldc.i4.6
      5) newarr [Seq<i8>]
      1) dup
      1) ldc.i4.0
      1) ldc.i4.1
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      1) dup
      1) ldc.i4.1
      1) ldc.i4.2
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      1) dup
      1) ldc.i4.2
      1) ldc.i4.3
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      1) dup
      1) ldc.i4.3
      1) ldc.i4.4
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      1) dup
      1) ldc.i4.4
      1) ldc.i4.5
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      1) dup
      1) ldc.i4.5
      1) ldc.i4.6
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      5) call static CodeGenUtil::SeqConcat(Arr<Seq<i8>>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 77

Func sig: () to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 2
 6) 0
 7) 1
 8) 2
 9) 3
10) 0
11) 1
12) 2
13) 3
14) 4
15) 0
16) 1
17) 2
18) 3
19) 4
20) 5
###
> Range(1) ++ Range(2) ++ Range(3)
Range(1) ++ Range(2) ++ Range(3) : i8*
BndKind:VariadicOp, Type:i8*, Bnd:(SeqConcat(Call(∂.Range(1:i8):i8*), Call(∂.Range(2:i8):i8*), Call(∂.Range(3:i8):i8*)))
// () : i8*
top(Arr<obj>, Arr<obj>):obj
      1) ldc.i4.1
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) ldc.i4.2
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) ldc.i4.3
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      5) call static CodeGenUtil::SeqConcat(Seq<i8>, Seq<i8>, Seq<i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 32

Func sig: () to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 2
###
> Range(1) ++ Range(2) ++ Range(3) ++ Range(4)
Range(1) ++ Range(2) ++ Range(3) ++ Range(4) : i8*
BndKind:VariadicOp, Type:i8*, Bnd:(SeqConcat(Call(∂.Range(1:i8):i8*), Call(∂.Range(2:i8):i8*), Call(∂.Range(3:i8):i8*), Call(∂.Range(4:i8):i8*)))
// () : i8*
top(Arr<obj>, Arr<obj>):obj
      1) ldc.i4.1
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) ldc.i4.2
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) ldc.i4.3
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) ldc.i4.4
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      5) call static CodeGenUtil::SeqConcat(Seq<i8>, Seq<i8>, Seq<i8>, Seq<i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 39

Func sig: () to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 2
 6) 0
 7) 1
 8) 2
 9) 3
###
> Range(1) ++ Range(2) ++ Range(3) ++ Range(4) ++ Range(5)
Range(1) ++ Range(2) ++ Range(3) ++ Range(4) ++ Range(5) : i8*
BndKind:VariadicOp, Type:i8*, Bnd:(SeqConcat(Call(∂.Range(1:i8):i8*), Call(∂.Range(2:i8):i8*), Call(∂.Range(3:i8):i8*), Call(∂.Range(4:i8):i8*), Call(∂.Range(5:i8):i8*)))
// () : i8*
top(Arr<obj>, Arr<obj>):obj
      1) ldc.i4.5
      5) newarr [Seq<i8>]
      1) dup
      1) ldc.i4.0
      1) ldc.i4.1
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      1) dup
      1) ldc.i4.1
      1) ldc.i4.2
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      1) dup
      1) ldc.i4.2
      1) ldc.i4.3
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      1) dup
      1) ldc.i4.3
      1) ldc.i4.4
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      1) dup
      1) ldc.i4.4
      1) ldc.i4.5
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      5) call static CodeGenUtil::SeqConcat(Arr<Seq<i8>>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 67

Func sig: () to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 2
 6) 0
 7) 1
 8) 2
 9) 3
10) 0
11) 1
12) 2
13) 3
14) 4
###
> Range(1) ++ Range(2) ++ Range(3) ++ Range(4) ++ Range(5) ++ Range(6)
Range(1) ++ Range(2) ++ Range(3) ++ Range(4) ++ Range(5) ++ Range(6) : i8*
BndKind:VariadicOp, Type:i8*, Bnd:(SeqConcat(Call(∂.Range(1:i8):i8*), Call(∂.Range(2:i8):i8*), Call(∂.Range(3:i8):i8*), Call(∂.Range(4:i8):i8*), Call(∂.Range(5:i8):i8*), Call(∂.Range(6:i8):i8*)))
// () : i8*
top(Arr<obj>, Arr<obj>):obj
      1) ldc.i4.6
      5) newarr [Seq<i8>]
      1) dup
      1) ldc.i4.0
      1) ldc.i4.1
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      1) dup
      1) ldc.i4.1
      1) ldc.i4.2
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      1) dup
      1) ldc.i4.2
      1) ldc.i4.3
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      1) dup
      1) ldc.i4.3
      1) ldc.i4.4
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      1) dup
      1) ldc.i4.4
      1) ldc.i4.5
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      1) dup
      1) ldc.i4.5
      1) ldc.i4.6
      1) conv.i8
      5) call static RangeGen::Exec(i8):ICachingEnumerable<i8>
      1) stelem.ref
      5) call static CodeGenUtil::SeqConcat(Arr<Seq<i8>>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 77

Func sig: () to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 2
 6) 0
 7) 1
 8) 2
 9) 3
10) 0
11) 1
12) 2
13) 3
14) 4
15) 0
16) 1
17) 2
18) 3
19) 4
20) 5
###

**** New definitions: N, type: o
**** New definitions: E, type: v*
**** New definitions: R, type: i8*

> N ++ N
N ++ N : v*
BndKind:Null, Type:v*, Bnd:(null:v*)
// () : v*
top(Arr<obj>, Arr<obj>):obj
      1) ldnull
      1) ret
  Total Size: 2

Func sig: () to v*
Type: <null>, Value: <null>
###
> N ++ E
N ++ E : v*
BndKind:Global, Type:v*, Bnd:(Global(E))
// (∂.E:v*) : v*
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<obj>
      1) stloc.0 [Seq<obj>]
      1) ldloc.0 [Seq<obj>]
      1) ret
  Total Size: 11

Func sig: (E:v*) to v*
Type: <null>, Value: <null>
###
> E ++ N
E ++ N : v*
BndKind:Global, Type:v*, Bnd:(Global(E))
// (∂.E:v*) : v*
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<obj>
      1) stloc.0 [Seq<obj>]
      1) ldloc.0 [Seq<obj>]
      1) ret
  Total Size: 11

Func sig: (E:v*) to v*
Type: <null>, Value: <null>
###
> E ++ E
E ++ E : v*
BndKind:VariadicOp, Type:v*, Bnd:(SeqConcat(Global(E), Global(E)))
// (∂.E:v*) : v*
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<obj>
      1) stloc.0 [Seq<obj>]
      1) ldloc.0 [Seq<obj>]
      1) ldloc.0 [Seq<obj>]
      5) call static CodeGenUtil::SeqConcat(Seq<obj>, Seq<obj>):Seq<obj>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<obj>):Seq<obj>
      1) ret
  Total Size: 22

Func sig: (E:v*) to v*
Sequence: Seq<obj>
###
> R ++ R
R ++ R : i8*
BndKind:VariadicOp, Type:i8*, Bnd:(SeqConcat(Global(R), Global(R)))
// (∂.R:i8*) : i8*
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<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      5) call static CodeGenUtil::SeqConcat(Seq<i8>, Seq<i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 22

Func sig: (R:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 1
 2) 2
 3) 0
 4) 1
 5) 2
###
> R ++ N
R ++ N : i8*
BndKind:Global, Type:i8*, Bnd:(Global(R))
// (∂.R:i8*) : i8*
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<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ret
  Total Size: 11

Func sig: (R:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 1
 2) 2
###
> R ++ E
R ++ E : i8*
BndKind:VariadicOp, Type:i8*, Bnd:(SeqConcat(Global(R), Call(∂.ForEach([map:1] Global(E), 0:i8):i8*)))
// (∂.R:i8*, ∂.E:v*) : i8*
ForEach_1(Arr<obj>, obj):i8
      1) ldc.i4.0
      1) conv.i8
      1) ret
  Total Size: 3

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<i8>
      1) stloc.0 [Seq<i8>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<obj>
      1) stloc.1 [Seq<obj>]
      1) ldloc.0 [Seq<i8>]
      1) ldloc.1 [Seq<obj>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<obj,i8>]
      5) call static ForEachGen::Exec(Seq<obj>, Func<obj,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      5) call static CodeGenUtil::SeqConcat(Seq<i8>, Seq<i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 48

Func sig: (R:i8*, E:v*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 1
 2) 2
###
> N ++ R
N ++ R : i8*
BndKind:Global, Type:i8*, Bnd:(Global(R))
// (∂.R:i8*) : i8*
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<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ret
  Total Size: 11

Func sig: (R:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 1
 2) 2
###
> E ++ R
E ++ R : i8*
BndKind:VariadicOp, Type:i8*, Bnd:(SeqConcat(Call(∂.ForEach([map:1] Global(E), 0:i8):i8*), Global(R)))
// (∂.E:v*, ∂.R:i8*) : i8*
ForEach_1(Arr<obj>, obj):i8
      1) ldc.i4.0
      1) conv.i8
      1) ret
  Total Size: 3

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<obj>
      1) stloc.0 [Seq<obj>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.1 [Seq<i8>]
      1) ldloc.0 [Seq<obj>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<obj,i8>]
      5) call static ForEachGen::Exec(Seq<obj>, Func<obj,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ldloc.1 [Seq<i8>]
      5) call static CodeGenUtil::SeqConcat(Seq<i8>, Seq<i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 48

Func sig: (E:v*, R:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 1
 2) 2
###
