summaryrefslogtreecommitdiff
path: root/test/files
diff options
context:
space:
mode:
Diffstat (limited to 'test/files')
-rw-r--r--test/files/jvm/JavaInteraction.check4
-rw-r--r--test/files/jvm/JavaInteraction.scala24
-rw-r--r--test/files/jvm/serialization.check100
-rw-r--r--test/files/jvm/serialization.scala316
-rw-r--r--test/files/neg/abstract.check7
-rw-r--r--test/files/neg/abstract.scala9
-rw-r--r--test/files/neg/variances.check4
-rw-r--r--test/files/neg/variances.scala4
-rw-r--r--test/files/pos/304.scala5
-rw-r--r--test/files/pos/A.scala8
-rw-r--r--test/files/pos/List1.scala45
-rw-r--r--test/files/pos/MailBox.scala83
-rw-r--r--test/files/pos/S1.scala13
-rw-r--r--test/files/pos/S3.scala14
-rw-r--r--test/files/pos/S5.scala30
-rw-r--r--test/files/pos/S8.scala19
-rw-r--r--test/files/pos/X.scala14
-rw-r--r--test/files/pos/Z.scala10
-rw-r--r--test/files/pos/abstract.scala9
-rw-r--r--test/files/pos/aliases.scala25
-rw-r--r--test/files/pos/all.lst143
-rw-r--r--test/files/pos/arrays2.scala11
-rw-r--r--test/files/pos/attributes.scala74
-rw-r--r--test/files/pos/bug082.scala18
-rw-r--r--test/files/pos/bug1.scala8
-rw-r--r--test/files/pos/bug115.scala9
-rw-r--r--test/files/pos/bug116.scala8
-rw-r--r--test/files/pos/bug119.scala7
-rw-r--r--test/files/pos/bug121.scala3
-rw-r--r--test/files/pos/bug123.scala3
-rw-r--r--test/files/pos/bug124.scala5
-rw-r--r--test/files/pos/bug151.scala6
-rw-r--r--test/files/pos/bug159.scala22
-rw-r--r--test/files/pos/bug160.scala5
-rw-r--r--test/files/pos/bug17.scala21
-rw-r--r--test/files/pos/bug175.scala5
-rw-r--r--test/files/pos/bug177.scala10
-rw-r--r--test/files/pos/bug183.scala6
-rw-r--r--test/files/pos/bug193.scala74
-rw-r--r--test/files/pos/bug2.scala6
-rw-r--r--test/files/pos/bug20.scala8
-rw-r--r--test/files/pos/bug201.scala7
-rw-r--r--test/files/pos/bug204.scala7
-rw-r--r--test/files/pos/bug210.scala17
-rw-r--r--test/files/pos/bug211.scala8
-rw-r--r--test/files/pos/bug229.scala3
-rw-r--r--test/files/pos/bug245.scala18
-rw-r--r--test/files/pos/bug267.scala55
-rw-r--r--test/files/pos/bug287.scala12
-rw-r--r--test/files/pos/bug289.scala7
-rw-r--r--test/files/pos/bug29.scala3
-rw-r--r--test/files/pos/bug295.scala2
-rw-r--r--test/files/pos/bug30.scala9
-rw-r--r--test/files/pos/bug304.scala5
-rw-r--r--test/files/pos/bug31.scala29
-rw-r--r--test/files/pos/bug318.scala11
-rw-r--r--test/files/pos/bug32.scala17
-rw-r--r--test/files/pos/bug342.scala9
-rw-r--r--test/files/pos/bug348plus.scala24
-rw-r--r--test/files/pos/bug359.scala30
-rw-r--r--test/files/pos/bug36.scala8
-rw-r--r--test/files/pos/bug360.scala11
-rw-r--r--test/files/pos/bug361.scala18
-rw-r--r--test/files/pos/bug372.scala4
-rw-r--r--test/files/pos/bug39.scala6
-rw-r--r--test/files/pos/bug49.scala3
-rw-r--r--test/files/pos/bug53.scala7
-rw-r--r--test/files/pos/bug54.scala4
-rw-r--r--test/files/pos/bug61.scala10
-rw-r--r--test/files/pos/bug64.scala6
-rw-r--r--test/files/pos/bug66.scala7
-rw-r--r--test/files/pos/bug68.scala6
-rw-r--r--test/files/pos/bug69.scala11
-rw-r--r--test/files/pos/bug76.scala9
-rw-r--r--test/files/pos/bug81.scala4
-rw-r--r--test/files/pos/bug85.scala8
-rw-r--r--test/files/pos/bug91.scala6
-rw-r--r--test/files/pos/bug93.scala4
-rw-r--r--test/files/pos/cls.scala17
-rw-r--r--test/files/pos/cls1.scala9
-rw-r--r--test/files/pos/clsrefine.scala40
-rw-r--r--test/files/pos/code.scala3
-rw-r--r--test/files/pos/collections.scala15
-rw-r--r--test/files/pos/compile.scala150
-rw-r--r--test/files/pos/compile1.scala35
-rw-r--r--test/files/pos/compound.scala9
-rw-r--r--test/files/pos/constfold.scala14
-rw-r--r--test/files/pos/context.scala34
-rw-r--r--test/files/pos/eta.scala5
-rw-r--r--test/files/pos/exceptions.scala20
-rw-r--r--test/files/pos/expressions-current.scala63
-rw-r--r--test/files/pos/failed.lst3
-rw-r--r--test/files/pos/gui.scala99
-rw-r--r--test/files/pos/imports.scala16
-rw-r--r--test/files/pos/infer.scala11
-rw-r--r--test/files/pos/infer2.scala10
-rw-r--r--test/files/pos/lambda.scala8
-rw-r--r--test/files/pos/lambdalift.scala15
-rw-r--r--test/files/pos/lambdalift1.scala17
-rw-r--r--test/files/pos/localmodules.scala22
-rw-r--r--test/files/pos/matthias1.scala15
-rw-r--r--test/files/pos/matthias3.scala13
-rw-r--r--test/files/pos/matthias4.scala84
-rw-r--r--test/files/pos/matthias5.scala12
-rw-r--r--test/files/pos/maxim1.scala5
-rw-r--r--test/files/pos/michel1.scala9
-rw-r--r--test/files/pos/michel2.scala16
-rw-r--r--test/files/pos/michel3.scala3
-rw-r--r--test/files/pos/michel4.scala7
-rw-r--r--test/files/pos/michel5.scala5
-rw-r--r--test/files/pos/michel6.scala6
-rw-r--r--test/files/pos/mixins.scala22
-rw-r--r--test/files/pos/modules.scala14
-rw-r--r--test/files/pos/modules1.scala14
-rw-r--r--test/files/pos/moduletrans.scala8
-rw-r--r--test/files/pos/nested.scala29
-rw-r--r--test/files/pos/null.scala3
-rw-r--r--test/files/pos/ok.lst138
-rw-r--r--test/files/pos/orderedpoints.scala30
-rw-r--r--test/files/pos/override.scala14
-rw-r--r--test/files/pos/partialfun.scala10
-rw-r--r--test/files/pos/patterns.scala27
-rw-r--r--test/files/pos/patterns1.scala13
-rw-r--r--test/files/pos/patterns2.scala16
-rw-r--r--test/files/pos/patterns3.scala5
-rw-r--r--test/files/pos/philippe1.scala8
-rw-r--r--test/files/pos/philippe2.scala7
-rw-r--r--test/files/pos/philippe3.scala40
-rw-r--r--test/files/pos/philippe4.scala3
-rw-r--r--test/files/pos/pmbug.scala8
-rw-r--r--test/files/pos/propagate.scala17
-rw-r--r--test/files/pos/rebind.scala13
-rw-r--r--test/files/pos/refine.scala6
-rw-r--r--test/files/pos/reftest.scala4
-rwxr-xr-xtest/files/pos/scall.bat50
-rw-r--r--test/files/pos/scoping1.scala12
-rw-r--r--test/files/pos/scoping2.scala14
-rw-r--r--test/files/pos/scoping3.scala20
-rw-r--r--test/files/pos/seqtest2.scala13
-rw-r--r--test/files/pos/simplelists.scala17
-rw-r--r--test/files/pos/stable.scala11
-rw-r--r--test/files/pos/strings.scala6
-rw-r--r--test/files/pos/test1.scala5
-rw-r--r--test/files/pos/test2.scala5
-rw-r--r--test/files/pos/test4.scala47
-rw-r--r--test/files/pos/test4a.scala16
-rw-r--r--test/files/pos/test4refine.scala49
-rw-r--r--test/files/pos/test5.scala68
-rw-r--r--test/files/pos/test5refine.scala75
-rw-r--r--test/files/pos/testcast.scala26
-rw-r--r--test/files/pos/thistype.scala14
-rw-r--r--test/files/pos/thistypes.scala8
-rw-r--r--test/files/pos/traits.scala42
-rw-r--r--test/files/pos/valdefs.scala16
-rw-r--r--test/files/pos/variances.scala8
-rw-r--r--test/files/pos/viewtest1.scala41
-rw-r--r--test/files/pos/viewtest2.scala117
-rw-r--r--test/files/pos/viewtest3.scala59
-rw-r--r--test/files/run/Course-2002-01.check34
-rw-r--r--test/files/run/Course-2002-01.scala240
-rw-r--r--test/files/run/Course-2002-02.check187
-rw-r--r--test/files/run/Course-2002-02.scala550
-rw-r--r--test/files/run/Course-2002-03.check67
-rw-r--r--test/files/run/Course-2002-03.scala392
-rw-r--r--test/files/run/Course-2002-04.check64
-rw-r--r--test/files/run/Course-2002-04.scala245
-rw-r--r--test/files/run/Course-2002-05.check44
-rw-r--r--test/files/run/Course-2002-05.scala215
-rw-r--r--test/files/run/Course-2002-06.check38
-rw-r--r--test/files/run/Course-2002-06.scala262
-rw-r--r--test/files/run/Course-2002-07.check137
-rw-r--r--test/files/run/Course-2002-07.scala726
-rw-r--r--test/files/run/Course-2002-08.check171
-rw-r--r--test/files/run/Course-2002-08.scala602
-rw-r--r--test/files/run/Course-2002-09.check50
-rw-r--r--test/files/run/Course-2002-09.scala334
-rw-r--r--test/files/run/Course-2002-10.check46
-rw-r--r--test/files/run/Course-2002-10.scala136
-rw-r--r--test/files/run/Course-2002-13.check14
-rw-r--r--test/files/run/Course-2002-13.scala324
-rw-r--r--test/files/run/NestedClasses.check9
-rw-r--r--test/files/run/NestedClasses.scala98
-rw-r--r--test/files/run/all.lst32
-rw-r--r--test/files/run/arrays.check1
-rw-r--r--test/files/run/arrays.scala912
-rw-r--r--test/files/run/boolexprs.check3
-rw-r--r--test/files/run/boolexprs.scala61
-rw-r--r--test/files/run/bridges.scala7123
-rw-r--r--test/files/run/bug457.check0
-rw-r--r--test/files/run/bug457.scala44
-rw-r--r--test/files/run/bug508.check3
-rw-r--r--test/files/run/bug508.scala20
-rw-r--r--test/files/run/bugs.check97
-rw-r--r--test/files/run/bugs.scala490
-rw-r--r--test/files/run/constructors.check5
-rw-r--r--test/files/run/constructors.scala29
-rw-r--r--test/files/run/ctor-order.check2
-rw-r--r--test/files/run/ctor-order.scala28
-rw-r--r--test/files/run/enums.check4
-rw-r--r--test/files/run/enums.scala80
-rw-r--r--test/files/run/exceptions.check1
-rw-r--r--test/files/run/exceptions.scala53
-rw-r--r--test/files/run/imports.check12
-rw-r--r--test/files/run/imports.scala97
-rw-r--r--test/files/run/iq-msil.check12
-rw-r--r--test/files/run/iq.check12
-rw-r--r--test/files/run/iq.scala100
-rw-r--r--test/files/run/iterators.check7
-rw-r--r--test/files/run/iterators.scala79
-rw-r--r--test/files/run/lisp.check26
-rw-r--r--test/files/run/lisp.scala522
-rw-r--r--test/files/run/lists.check12
-rw-r--r--test/files/run/lists.scala115
-rw-r--r--test/files/run/literals.check65
-rw-r--r--test/files/run/literals.scala136
-rw-r--r--test/files/run/map_test.check3
-rw-r--r--test/files/run/map_test.scala42
-rw-r--r--test/files/run/misc.check33
-rw-r--r--test/files/run/misc.scala239
-rw-r--r--test/files/run/mixins.check7
-rw-r--r--test/files/run/mixins.scala85
-rw-r--r--test/files/run/ok.lst30
-rw-r--r--test/files/run/overloads.check15
-rw-r--r--test/files/run/overloads.scala96
-rw-r--r--test/files/run/regularpatmat.check126
-rw-r--r--test/files/run/regularpatmat.scala809
-rw-r--r--test/files/run/runtime.check64
-rw-r--r--test/files/run/runtime.scala209
-rw-r--r--test/files/run/tailcalls.check46
-rw-r--r--test/files/run/tailcalls.scala290
-rw-r--r--test/files/run/try.check6
-rw-r--r--test/files/run/try.scala110
232 files changed, 20956 insertions, 0 deletions
diff --git a/test/files/jvm/JavaInteraction.check b/test/files/jvm/JavaInteraction.check
new file mode 100644
index 0000000000..fb9d3cdd8c
--- /dev/null
+++ b/test/files/jvm/JavaInteraction.check
@@ -0,0 +1,4 @@
+p.x = 5
+p.c = java.awt.Color[r=255,g=0,b=0]
+p.getX() = 5.0
+p.getC() = java.awt.Color[r=255,g=0,b=0]
diff --git a/test/files/jvm/JavaInteraction.scala b/test/files/jvm/JavaInteraction.scala
new file mode 100644
index 0000000000..ee86e83dbd
--- /dev/null
+++ b/test/files/jvm/JavaInteraction.scala
@@ -0,0 +1,24 @@
+//############################################################################
+// Test Java interaction
+//############################################################################
+// $Id$
+
+import java.awt.Color;
+import java.awt.Point;
+
+class ColoredPoint(x: Int, y: Int, c_ : Color) extends Point(x, y) {
+ val c: Color = c_;
+ def getC(): Color = c;
+}
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ val p = new ColoredPoint(5, 7, Color.RED);
+ System.out.println("p.x = " + p.x);
+ System.out.println("p.c = " + p.c);
+ System.out.println("p.getX() = " + p.getX());
+ System.out.println("p.getC() = " + p.getC());
+ }
+}
+
+//############################################################################
diff --git a/test/files/jvm/serialization.check b/test/files/jvm/serialization.check
new file mode 100644
index 0000000000..c2728a5401
--- /dev/null
+++ b/test/files/jvm/serialization.check
@@ -0,0 +1,100 @@
+x1 = List()
+y1 = List()
+x1 eq y1: true - y1 eq x1: true
+
+x2 = None
+y2 = None
+x2 eq y2: true - y2 eq x2: true
+
+x3 = Array[1,2,3]
+y3 = Array[1,2,3]
+arrayEquals(x3, y3): true
+
+x4 = <na>
+y4 = <na>
+x4(2): 4 - y4(2): 4
+
+x = List((buffers,20),(layers,2),(title,3))
+y = List((buffers,20),(layers,2),(title,3))
+x equals y: true - y equals x: true
+
+x = {buffers -> 20, layers -> 2, title -> 3}
+y = {buffers -> 20, layers -> 2, title -> 3}
+x equals y: true - y equals x: true
+
+x = {1}
+y = {1}
+x equals y: true - y equals x: true
+
+x = {5, 3}
+y = {5, 3}
+x equals y: true - y equals x: true
+
+x = Queue(a,b,c)
+y = Queue(a,b,c)
+x equals y: true - y equals x: true
+
+x = Stack(c, b, a)
+y = Stack(c, b, a)
+x equals y: true - y equals x: true
+
+x = {42 -> FortyTwo}
+y = {42 -> FortyTwo}
+x equals y: true - y equals x: true
+
+x = {0, 2}
+y = {0, 2}
+x equals y: true - y equals x: true
+
+x = {title -> 3, buffers -> 20, layers -> 2}
+y = {title -> 3, buffers -> 20, layers -> 2}
+x equals y: true - y equals x: true
+
+x = {0, 8, 9}
+y = {0, 8, 9}
+x equals y: true - y equals x: true
+
+x = {title, buffers, layers}
+y = {title, buffers, layers}
+x equals y: true - y equals x: true
+
+x = LinkedList(2, 3)
+y = LinkedList(2, 3)
+x equals y: true - y equals x: true
+
+x = Queue(20, 2, 3)
+y = Queue(20, 2, 3)
+x equals y: true - y equals x: true
+
+x = Stack(20, 2, 3)
+y = Stack(20, 2, 3)
+x equals y: true - y equals x: true
+
+x = <html><title>title</title><body></body></html>
+y = <html><title>title</title><body></body></html>
+x equals y: true - y equals x: true
+
+x = <html><body><table cellspacing="0" cellpadding="2"><tr><th>Last Name</th><th>First Name</th></tr><tr><td>Tom</td><td>20</td></tr><tr><td>Bob</td><td>22</td></tr><tr><td>James</td><td>19</td></tr></table></body></html>
+y = <html><body><table cellspacing="0" cellpadding="2"><tr><th>Last Name</th><th>First Name</th></tr><tr><td>Tom</td><td>20</td></tr><tr><td>Bob</td><td>22</td></tr><tr><td>James</td><td>19</td></tr></table></body></html>
+x equals y: true - y equals x: true
+
+x = Tim
+y = Tim
+x equals y: true - y equals x: true
+
+x = Bob
+y = Bob
+x equals y: true - y equals x: true
+
+x = John
+y = John
+x equals y: true - y equals x: true
+
+x = Bill
+y = Bill
+x equals y: true - y equals x: true
+
+x = Paul
+y = Paul
+x equals y: true - y equals x: true
+
diff --git a/test/files/jvm/serialization.scala b/test/files/jvm/serialization.scala
new file mode 100644
index 0000000000..f55af0d46f
--- /dev/null
+++ b/test/files/jvm/serialization.scala
@@ -0,0 +1,316 @@
+//############################################################################
+// Serialization
+//############################################################################
+// $Id$
+
+import java.lang.System;
+
+object EqualityTest {
+ def check[A, B](x: A, y: B): Unit = {
+ System.out.println("x = " + x);
+ System.out.println("y = " + y);
+ System.out.println(
+ "x equals y: " + (x equals y) + " - y equals x: " + (y equals x));
+ System.out.println();
+ }
+}
+
+object Serialize {
+ def write[A](o: A): Array[Byte] = { // throws Exception
+ val ba = new java.io.ByteArrayOutputStream(512);
+ val out = new java.io.ObjectOutputStream(ba);
+ out.writeObject(o);
+ out.close();
+ ba.toByteArray()
+ }
+ def read[A](buffer: Array[Byte]): A = { // throws Exception
+ val in =
+ new java.io.ObjectInputStream(new java.io.ByteArrayInputStream(buffer));
+ in.readObject().asInstanceOf[A]
+ }
+}
+
+//############################################################################
+// Test classes in package "scala"
+
+[serializable]
+object Test1_scala {
+ private def arrayToString[A](arr: Array[A]): String =
+ List.fromArray(arr).mkString("Array[",",","]");
+ private def arrayEquals[A, B](a1: Array[A], a2: Array[B]) =
+ (a1.length == a2.length) &&
+ (Iterator.range(0, a1.length) forall { i => a1(i) == a2(i) });
+ val x1 = Nil;
+ val x2 = None;
+ val x3 = Array(1, 2, 3);
+ val x4 = x: Int => 2 * x;
+
+ try {
+ val y1: List[All] = Serialize.read(Serialize.write(x1));
+ val y2: Option[All] = Serialize.read(Serialize.write(x2));
+ val y3: Array[Int] = Serialize.read(Serialize.write(x3));
+ val y4: Function[Int, Int] = Serialize.read(Serialize.write(x4));
+
+ System.out.println("x1 = " + x1);
+ System.out.println("y1 = " + y1);
+ System.out.println("x1 eq y1: " + (x1 eq y1) + " - y1 eq x1: " + (y1 eq x1));
+ System.out.println();
+ System.out.println("x2 = " + x2);
+ System.out.println("y2 = " + y2);
+ System.out.println("x2 eq y2: " + (x2 eq y2) + " - y2 eq x2: " + (y2 eq x2));
+ System.out.println();
+ System.out.println("x3 = " + arrayToString(x3));
+ System.out.println("y3 = " + arrayToString(y3));
+ System.out.println("arrayEquals(x3, y3): " + arrayEquals(x3, y3));
+ System.out.println();
+ System.out.println("x4 = <na>");
+ System.out.println("y4 = <na>");
+ System.out.println("x4(2): " + x4(2) + " - y4(2): " + y4(2));
+ System.out.println();
+ }
+ catch {
+ case e: Exception =>
+ e.printStackTrace();
+ System.out.println("Error in Test1_scala: " + e);
+ }
+}
+
+//############################################################################
+// Test classes in package "scala.collection.immutable"
+[serializable]
+object Test2_immutable {
+ import scala.collection.immutable.{BitSet,ListMap,ListSet,Queue,Stack,
+ TreeSet,TreeMap};
+
+ val x1 = List(
+ Pair("buffers", 20),
+ Pair("layers", 2),
+ Pair("title", 3)
+ );
+
+ val x2 = new ListMap[String, Int]
+ .incl(Pair("buffers", 20))
+ .incl(Pair("layers", 2))
+ .incl(Pair("title", 3));
+
+ val x3 = new BitSet(4, Array(2), true);
+
+ val x4 = new ListSet[Int]().incl(3).incl(5);
+
+ val x5 = new Queue("a", "b", "c");
+
+ val x6 = new Stack().push("a", "b", "c");
+
+ val x7 = new TreeMap[Int, String] + 42 -> "FortyTwo";
+
+ val x8 = new TreeSet[Int]().incl(2).incl(0);
+
+ try {
+ val y1: List[Pair[String, Int]] = Serialize.read(Serialize.write(x1));
+ val y2: ListMap[String, Int] = Serialize.read(Serialize.write(x2));
+ val y3: BitSet = Serialize.read(Serialize.write(x3));
+ val y4: ListSet[Int] = Serialize.read(Serialize.write(x4));
+ val y5: Queue[String] = Serialize.read(Serialize.write(x5));
+ val y6: Stack[String] = Serialize.read(Serialize.write(x6));
+ val y7: TreeMap[Int, String] = Serialize.read(Serialize.write(x7));
+ val y8: TreeSet[Int] = Serialize.read(Serialize.write(x8));
+
+ EqualityTest.check(x1, y1);
+ EqualityTest.check(x2, y2);
+ EqualityTest.check(x3, y3);
+ EqualityTest.check(x4, y4);
+ EqualityTest.check(x5, y5);
+ EqualityTest.check(x6, y6);
+ EqualityTest.check(x7, y7);
+ EqualityTest.check(x8, y8);
+ }
+ catch {
+ case e: Exception =>
+ System.out.println("Error in Test2_immutable: " + e);
+ }
+}
+
+//############################################################################
+// Test classes in package "scala.collection.mutable"
+
+object Test3_mutable {
+ import scala.collection.mutable.{BitSet,HashMap,HashSet,LinkedList,
+ Queue,Stack};
+
+ val x1 = new HashMap[String, Int];
+ x1 ++= Test2_immutable.x1;
+
+ val x2 = new BitSet();
+ x2.set(0);
+ x2.set(8);
+ x2.set(9);
+
+ val x3 = new HashSet[String];
+ x3 ++= Test2_immutable.x1.map(p => p._1);
+
+ val x4 = new LinkedList[Int](2, null);
+ x4.append(new LinkedList(3, null));
+
+ val x5 = new Queue[Int];
+ x5 ++= Test2_immutable.x1.map(p => p._2);
+
+ val x6 = new Stack[Int];
+ x6 ++= x5;
+
+ try {
+ val y1: HashMap[String, Int] = Serialize.read(Serialize.write(x1));
+ val y2: BitSet = Serialize.read(Serialize.write(x2));
+ val y3: HashSet[String] = Serialize.read(Serialize.write(x3));
+ val y4: LinkedList[Int] = Serialize.read(Serialize.write(x4));
+ val y5: Queue[Int] = Serialize.read(Serialize.write(x5));
+ val y6: Stack[Int] = Serialize.read(Serialize.write(x6));
+
+ EqualityTest.check(x1, y1);
+ EqualityTest.check(x2, y2);
+ EqualityTest.check(x3, y3);
+ EqualityTest.check(x4, y4);
+ EqualityTest.check(x5, y5);
+ EqualityTest.check(x6, y6);
+ }
+ catch {
+ case e: Exception =>
+ System.out.println("Error in Test3_mutable: " + e);
+ }
+}
+
+//############################################################################
+// Test classes in package "scala.xml"
+
+object Test4_xml {
+ import scala.xml.{Elem};
+
+ val x1 = <html><title>title</title><body></body></html>;
+
+ case class Person(name: String, age: Int);
+
+ class AddressBook(a: Person*) {
+ private val people: List[Person] = a.toList;
+ def toXHTML =
+ <table cellpadding="2" cellspacing="0">
+ <tr>
+ <th>Last Name</th>
+ <th>First Name</th>
+ </tr>
+ { for (val p <- people) yield
+ <tr>
+ <td> { p.name } </td>
+ <td> { p.age.toString() } </td>
+ </tr> }
+ </table>;
+ }
+
+ val people = new AddressBook(
+ Person("Tom", 20),
+ Person("Bob", 22),
+ Person("James", 19));
+
+ val x2 =
+ <html>
+ <body>
+ { people.toXHTML }
+ </body>
+ </html>;
+
+ try {
+ val y1: scala.xml.Elem = Serialize.read(Serialize.write(x1));
+ val y2: scala.xml.Elem = Serialize.read(Serialize.write(x2));
+
+ EqualityTest.check(x1, y1);
+ EqualityTest.check(x2, y2);
+ }
+ catch {
+ case e: Exception =>
+ System.out.println("Error in Test4_xml: " + e);
+ }
+}
+
+//############################################################################
+// Test user-defined classes WITHOUT nesting
+
+[serializable]
+class Person(_name: String) {
+ private var name = _name;
+ override def toString() = name;
+ override def equals(that: Any): Boolean =
+ that.isInstanceOf[Person] &&
+ (name == that.asInstanceOf[Person].name);
+}
+
+[serializable]
+class Employee(_name: String) {
+ private var name = _name;
+ override def toString() = name;
+}
+[serializable]
+object bob extends Employee("Bob");
+
+object Test5 {
+ val x1 = new Person("Tim");
+ val x2 = bob;
+
+ try {
+ val y1: Person = Serialize.read(Serialize.write(x1));
+ val y2: Employee = Serialize.read(Serialize.write(x2));
+
+ EqualityTest.check(x1, y1);
+ EqualityTest.check(x2, y2);
+ }
+ catch {
+ case e: Exception =>
+ System.out.println("Error in Test5: " + e);
+ }
+}
+
+//############################################################################
+// Test user-defined classes WITH nesting
+
+[serializable]
+object Test6 {
+ [serializable]
+ object bill extends Employee("Bill") {
+ val x = paul;
+ }
+ [serializable]
+ object paul extends Person("Paul") {
+ val x = 4; // bill; => StackOverflowException !!!
+ }
+ val x1 = new Person("John");
+ val x2 = bill;
+ val x3 = paul;
+
+ try {
+ val y1: Person = Serialize.read(Serialize.write(x1));
+ val y2: Employee = Serialize.read(Serialize.write(x2));
+ val y3: Person = Serialize.read(Serialize.write(x3));
+
+ EqualityTest.check(x1, y1);
+ EqualityTest.check(x2, y2);
+ EqualityTest.check(x3, y3);
+ }
+ catch {
+ case e: Exception =>
+ System.out.println("Error in Test6: " + e);
+ }
+}
+
+//############################################################################
+// Test code
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ Test1_scala;
+ Test2_immutable;
+ Test3_mutable;
+ Test4_xml;
+ Test5;
+ Test6
+ }
+}
+
+//############################################################################
+
diff --git a/test/files/neg/abstract.check b/test/files/neg/abstract.check
new file mode 100644
index 0000000000..1f888dcceb
--- /dev/null
+++ b/test/files/neg/abstract.check
@@ -0,0 +1,7 @@
+abstract.scala:5 error: malformed type: A.this.T#T
+ def foo1 = bar().bar();
+ ^
+abstract.scala:7 error: malformed type: A#T
+ def foo3 = baz().bar();
+ ^
+two errors found
diff --git a/test/files/neg/abstract.scala b/test/files/neg/abstract.scala
new file mode 100644
index 0000000000..41cfc81309
--- /dev/null
+++ b/test/files/neg/abstract.scala
@@ -0,0 +1,9 @@
+trait A {
+ type T <: A;
+ def baz(): A;
+ def bar(): T;
+ def foo1 = bar().bar();
+ def foo2 = bar().baz();
+ def foo3 = baz().bar();
+ def foo4 = baz().baz();
+}
diff --git a/test/files/neg/variances.check b/test/files/neg/variances.check
new file mode 100644
index 0000000000..82d992048b
--- /dev/null
+++ b/test/files/neg/variances.check
@@ -0,0 +1,4 @@
+variances.scala:2 error: covariant type a occurs in contravariant position in type Vector[a] of value x
+ def append(x: Vector[a]): Vector[a]
+ ^
+one error found
diff --git a/test/files/neg/variances.scala b/test/files/neg/variances.scala
new file mode 100644
index 0000000000..ebcba21611
--- /dev/null
+++ b/test/files/neg/variances.scala
@@ -0,0 +1,4 @@
+trait Vector[+a] {
+ def append(x: Vector[a]): Vector[a]
+}
+
diff --git a/test/files/pos/304.scala b/test/files/pos/304.scala
new file mode 100644
index 0000000000..607a115db2
--- /dev/null
+++ b/test/files/pos/304.scala
@@ -0,0 +1,5 @@
+object O {
+ def f1 = -1;
+ def f2 = 0-1;
+ def f3 = f1 + f2;
+}
diff --git a/test/files/pos/A.scala b/test/files/pos/A.scala
new file mode 100644
index 0000000000..fc50379d88
--- /dev/null
+++ b/test/files/pos/A.scala
@@ -0,0 +1,8 @@
+trait A extends java.lang.Object {}
+
+object test {
+
+ def x: A = x;
+
+}
+
diff --git a/test/files/pos/List1.scala b/test/files/pos/List1.scala
new file mode 100644
index 0000000000..1321d95c20
--- /dev/null
+++ b/test/files/pos/List1.scala
@@ -0,0 +1,45 @@
+object lists {
+
+ abstract class List[a] {
+ def isEmpty: Boolean;
+ def head: a;
+ def tail: List[a];
+ def prepend(x: a) = Cons[a](x, this);
+ }
+
+ def Nil[b] = new List[b] {
+ def isEmpty: Boolean = true;
+ def head = error("head of Nil");
+ def tail = error("tail of Nil");
+ }
+
+ def Cons[c](x: c, xs: List[c]): List[c] = new List[c] {
+ def isEmpty = false;
+ def head = x;
+ def tail = xs;
+ }
+
+ def foo = {
+ val intnil = Nil[Int];
+ val intlist = intnil.prepend(1).prepend(1+1);
+ val x: Int = intlist.head;
+ val strnil = Nil[String];
+ val strlist = strnil.prepend("A").prepend("AA");
+ val y: String = strlist.head;
+ ()
+ }
+
+ class IntList() extends List[Int] {
+ def isEmpty: Boolean = false;
+ def head: Int = 1;
+ def foo: List[Int] { def isEmpty: Boolean; def head: Int; def tail: List[Int] } = Nil[Int];
+ def tail0: List[Int] = foo.prepend(1).prepend(1+1);
+ def tail: List[Int] = Nil[Int].prepend(1).prepend(1+1);
+ }
+
+ def foo2 = {
+ val il1 = new IntList();
+ val il2 = il1.prepend(1).prepend(2);
+ ()
+ }
+}
diff --git a/test/files/pos/MailBox.scala b/test/files/pos/MailBox.scala
new file mode 100644
index 0000000000..b1ea818f60
--- /dev/null
+++ b/test/files/pos/MailBox.scala
@@ -0,0 +1,83 @@
+package test;
+
+import scala.concurrent._;
+
+class MailBox {
+ private class LinkedList[a] {
+ var elem: a = _;
+ var next: LinkedList[a] = null;
+ }
+
+ private def insert[a](l: LinkedList[a], x: a): LinkedList[a] = {
+ l.next = new LinkedList[a];
+ l.next.elem = x;
+ l.next.next = l.next;
+ l
+ }
+
+ private abstract class Receiver {
+ def isDefined(msg: Any): boolean;
+ var msg: Any = null;
+ }
+
+ private val sent = new LinkedList[Any];
+ private var lastSent = sent;
+ private val receivers = new LinkedList[Receiver];
+ private var lastReceiver = receivers;
+
+ def send(msg: Any): unit = synchronized {
+ var r = receivers;
+ var r1 = r.next;
+ while (r1 != null && !r1.elem.isDefined(msg)) {
+ r = r1; r1 = r1.next;
+ }
+ if (r1 != null) {
+ r.next = r1.next; r1.elem.msg = msg; r1.elem.notify();
+ } else {
+ lastSent = insert(lastSent, msg);
+ }
+ }
+
+ def receive[a](f: PartialFunction[Any, a]): a = {
+ val msg: Any = synchronized {
+ var s = sent;
+ var s1 = s.next;
+ while (s1 != null && !f.isDefinedAt(s1.elem)) {
+ s = s1; s1 = s1.next
+ }
+ if (s1 != null) {
+ s.next = s1.next; s1.elem
+ } else {
+ val r = insert(lastReceiver, new Receiver {
+ def isDefined(msg: Any) = f.isDefinedAt(msg);
+ });
+ lastReceiver = r;
+ r.elem.wait();
+ r.elem.msg
+ }
+ }
+ f(msg)
+ }
+
+ def receiveWithin[a](msec: long)(f: PartialFunction[Any, a]): a = {
+ val msg: Any = synchronized {
+ var s = sent;
+ var s1 = s.next;
+ while (s1 != null && !f.isDefinedAt(s1.elem)) {
+ s = s1; s1 = s1.next ;
+ }
+ if (s1 != null) {
+ s.next = s1.next; s1.elem
+ } else {
+ val r = insert(lastReceiver, new Receiver {
+ def isDefined(msg: Any) = f.isDefinedAt(msg);
+ });
+ lastReceiver = r;
+ r.elem.wait(msec);
+ if (r.elem.msg == null) r.elem.msg = TIMEOUT;
+ r.elem.msg
+ }
+ }
+ f(msg)
+ }
+}
diff --git a/test/files/pos/S1.scala b/test/files/pos/S1.scala
new file mode 100644
index 0000000000..68706e3dd3
--- /dev/null
+++ b/test/files/pos/S1.scala
@@ -0,0 +1,13 @@
+/* This is probably no bug, I just don't understand why
+** type inference does not find the right instantiation of foo.
+** Currently it reports:
+**
+** S1.scala:12: inferred type arguments [S1] do not conform to
+** method foo's type parameter bounds [T <: S1.this.type]
+** foo(this);
+** ^
+*/
+class S1() {
+ def foo[T <: this.type](x: T) = x;
+ foo[this.type](this);
+}
diff --git a/test/files/pos/S3.scala b/test/files/pos/S3.scala
new file mode 100644
index 0000000000..1e0f0288b1
--- /dev/null
+++ b/test/files/pos/S3.scala
@@ -0,0 +1,14 @@
+/* Why does this code fail? b has type a.type, so the third
+** declaration in S3 should be okay... The compiler writes instead:
+**
+** found : S3.this.b.type (with underlying type S3)
+** required: S3.this.a.type
+** val c: a.type = b;
+** ^
+** Without declaration 3, everything is fine.
+*/
+class S3() {
+ val a = new S3();
+ val b: a.type = a;
+ val c: a.type = b;
+}
diff --git a/test/files/pos/S5.scala b/test/files/pos/S5.scala
new file mode 100644
index 0000000000..f0b66a6e68
--- /dev/null
+++ b/test/files/pos/S5.scala
@@ -0,0 +1,30 @@
+/* Here's a fragment of a Scala encoding for the Keris module system;
+** the compiler claims:
+**
+** S5.scala:28: value n in class N of type N.this._N.n
+** cannot override value n in class M of type M.this._N.n
+** val system = new M() with N() {}
+** ^
+** To me it seems like the code is perfectly fine...
+*/
+abstract class M() {
+ val _N: N;
+ val n: _N.n;
+ val _M: M = this;
+ val m: _M.m = new _M.m();
+ class m() {
+ // module body of M
+ }
+}
+trait N {
+ val _N: N = this;
+ val n: _N.n = new _N.n();
+ val _M: M;
+ val m: _M.m;
+ class n() {
+ // module body of N
+ }
+}
+object O {
+ val system = new M() with N {}
+}
diff --git a/test/files/pos/S8.scala b/test/files/pos/S8.scala
new file mode 100644
index 0000000000..50f1df27a2
--- /dev/null
+++ b/test/files/pos/S8.scala
@@ -0,0 +1,19 @@
+/* I believe this code is correct, but the compiler rejects it:
+**
+** S8.scala:18: type mismatch;
+** found : M.x.A
+** required: M.x.a.B
+** val y: x.a.B = new x.A(); //correct?
+** ^
+** For a given value x of type S8, type x.A should be
+** a subtype of x.a.B.
+*/
+class S8() {
+ val a: S8 = this;
+ class A() extends a.B() {}
+ class B() {}
+}
+object M {
+ val x = new S8();
+ val y: x.a.B = new x.A(); //correct?
+}
diff --git a/test/files/pos/X.scala b/test/files/pos/X.scala
new file mode 100644
index 0000000000..2edf010efd
--- /dev/null
+++ b/test/files/pos/X.scala
@@ -0,0 +1,14 @@
+abstract class A() {
+
+ var x: Int
+
+}
+
+abstract class B() extends A() {
+
+ var xx: Int = 0;
+
+ def x = xx;
+ def x_=(y: Int) = xx = y;
+}
+
diff --git a/test/files/pos/Z.scala b/test/files/pos/Z.scala
new file mode 100644
index 0000000000..c1367e46b9
--- /dev/null
+++ b/test/files/pos/Z.scala
@@ -0,0 +1,10 @@
+trait X {
+ val elem: Int = 1
+}
+
+object test {
+
+ def g(x: X) = x.elem;
+ def f(x: Object) = x.toString();
+
+}
diff --git a/test/files/pos/abstract.scala b/test/files/pos/abstract.scala
new file mode 100644
index 0000000000..533f996931
--- /dev/null
+++ b/test/files/pos/abstract.scala
@@ -0,0 +1,9 @@
+abstract class C() {
+ type t;
+ def copy(x: t): t = x;
+}
+
+class D() extends C() {
+ type t = Int;
+ System.out.println(copy(1));
+}
diff --git a/test/files/pos/aliases.scala b/test/files/pos/aliases.scala
new file mode 100644
index 0000000000..b746a35861
--- /dev/null
+++ b/test/files/pos/aliases.scala
@@ -0,0 +1,25 @@
+abstract class C() {
+
+ type t <: C;
+
+ val x: t;
+ val y: x.type;
+ val z: x.type;
+ val u: z.type;
+
+ val xt: x.t;
+ val yt: y.t;
+ val zt: z.t;
+ val ut: z.t;
+
+ def fx(a: x.t): Unit;
+ def fy(a: y.t): Unit;
+ def fz(a: z.t): Unit;
+ def fu(a: u.t): Unit;
+
+ fx(xt); fx(yt); fx(zt); fx(ut);
+ fy(xt); fy(yt); fy(zt); fy(ut);
+ fz(xt); fz(yt); fz(zt); fz(ut);
+ fu(xt); fu(yt); fu(zt); fu(ut);
+
+}
diff --git a/test/files/pos/all.lst b/test/files/pos/all.lst
new file mode 100644
index 0000000000..db9b9813dd
--- /dev/null
+++ b/test/files/pos/all.lst
@@ -0,0 +1,143 @@
+304.scala
+A.scala
+List1.scala
+MailBox.scala
+S1.scala
+S3.scala
+S5.scala
+S8.scala
+X.scala
+Z.scala
+abstract.scala
+aliases.scala
+arrays2.scala
+attributes.scala
+bug082.scala
+bug1.scala
+bug115.scala
+bug116.scala
+bug119.scala
+bug121.scala
+bug123.scala
+bug124.scala
+bug151.scala
+bug159.scala
+bug160.scala
+bug17.scala
+bug175.scala
+bug177.scala
+bug183.scala
+bug193.scala
+bug2.scala
+bug20.scala
+bug201.scala
+bug204.scala
+bug210.scala
+bug211.scala
+bug229.scala
+bug245.scala
+bug267.scala
+bug287.scala
+bug289.scala
+bug29.scala
+bug295.scala
+bug30.scala
+bug304.scala
+bug31.scala
+bug318.scala
+bug32.scala
+bug342.scala
+bug348plus.scala
+bug359.scala
+bug36.scala
+bug360.scala
+bug361.scala
+bug372.scala
+bug39.scala
+bug49.scala
+bug53.scala
+bug54.scala
+bug61.scala
+bug64.scala
+bug66.scala
+bug68.scala
+bug69.scala
+bug76.scala
+bug81.scala
+bug85.scala
+bug91.scala
+bug93.scala
+cls.scala
+cls1.scala
+clsrefine.scala
+compile.scala
+compound.scala
+constfold.scala
+context.scala
+eta.scala
+exceptions.scala
+expressions-current.scala
+gui.scala
+imports.scala
+infer.scala
+infer2.scala
+lambda.scala
+lambdalift.scala
+lambdalift1.scala
+localmodules.scala
+matthias1.scala
+matthias3.scala
+matthias4.scala
+matthias5.scala
+maxim1.scala
+michel1.scala
+michel2.scala
+michel3.scala
+michel4.scala
+michel5.scala
+michel6.scala
+mixins.scala
+modules.scala
+modules1.scala
+moduletrans.scala
+nested.scala
+null.scala
+orderedpoints.scala
+override.scala
+partialfun.scala
+patterns.scala
+patterns1.scala
+patterns2.scala
+patterns3.scala
+philippe1.scala
+philippe2.scala
+philippe3.scala
+philippe4.scala
+pmbug.scala
+propagate.scala
+rebind.scala
+refine.scala
+reftest.scala
+scall.bat
+scoping1.scala
+scoping2.scala
+scoping3.scala
+seqtest2.scala
+simplelists.scala
+stable.scala
+strings.scala
+test1.scala
+test2.scala
+test4.scala
+test4a.scala
+test4refine.scala
+test5.scala
+test5refine.scala
+testcast.scala
+thistype.scala
+thistypes.scala
+traits.scala
+valdefs.scala
+viewtest1.scala
+viewtest2.scala
+viewtest3.scala
diff --git a/test/files/pos/arrays2.scala b/test/files/pos/arrays2.scala
new file mode 100644
index 0000000000..6f4a09a401
--- /dev/null
+++ b/test/files/pos/arrays2.scala
@@ -0,0 +1,11 @@
+case class C();
+
+object arrays2 {
+
+ def main(args: Array[String]): Unit = {
+ val a: Array[Array[C]] = new Array[Array[C]](2);
+ a(0) = new Array[C](2);
+ a(0)(0) = new C();
+ }
+}
+
diff --git a/test/files/pos/attributes.scala b/test/files/pos/attributes.scala
new file mode 100644
index 0000000000..ab30e2cdeb
--- /dev/null
+++ b/test/files/pos/attributes.scala
@@ -0,0 +1,74 @@
+/* $Id$ */
+
+[serializable] class C1;
+[serializable,volatile] class C2;
+[serializable][volatile] class C3;
+[serializable][volatile,serializable] class C4;
+
+[serializable] trait T1;
+[serializable,volatile] trait T2;
+[serializable][volatile] trait T3;
+[serializable][volatile,serializable] trait T4;
+
+[serializable] object O1 extends C1;
+[serializable,volatile] object O2 extends C2;
+[serializable][volatile] object O3 extends C3;
+[serializable][volatile,serializable] object O4 extends C4;
+
+object O5 {
+ final val n = 2;
+ [SerialVersionUID(0)] class C1;
+ [SerialVersionUID(n)] class C2;
+ [SerialVersionUID(0),SerialVersionUID(n)] class C3;
+ [SerialVersionUID(0)][SerialVersionUID(n)] class C4;
+}
+
+abstract class A1 {
+ [serializable] var y1: C1;
+ [serializable,volatile] var y2: C2;
+ [serializable][volatile] var y3: C3;
+ [serializable][volatile,serializable] var y4: C4;
+
+ [serializable] def foo1: C1;
+ [serializable,volatile] def foo2: C2;
+ [serializable][volatile] def foo3: C3;
+ [serializable][volatile,serializable] def foo4: C4;
+}
+
+object O6 {
+ [serializable] val x1 = new C1;
+ [serializable,volatile] val x2 = new C2;
+ [serializable][volatile] val x3 = new C3;
+ [serializable][volatile,serializable] val x4 = new C4;
+
+ [serializable] var y1: C1 = _;
+ [serializable,volatile] var y2: C2 = _;
+ [serializable][volatile] var y3: C3 = _;
+ [serializable][volatile,serializable] var y4: C4 = _;
+
+ [serializable] private def foo1 = x1;
+ [serializable,volatile] private def foo2 = x2;
+ [serializable][volatile] protected def foo3 = x3;
+ [serializable][volatile,serializable] protected def foo4 = x4;
+}
+
+object myAttrs {
+ class a1 extends scala.Attribute;
+ class a2(x: Int) extends scala.Attribute;
+ class a3(x: a1) extends scala.Attribute;
+}
+object O7 {
+ class a1 extends scala.Attribute;
+ class a2(x: Int) extends scala.Attribute;
+ class a3(x: a1) extends scala.Attribute;
+ final val x = new a1;
+ [a1] class C1;
+ [a1,a2(77)] class C2;
+ [a1][a2(88)] class C3;
+ [a1][a2(88),a3(null)] class C4;
+
+ [myAttrs.a1] class A1;
+ [myAttrs.a1,myAttrs.a2(99)] class A2;
+ [myAttrs.a1][myAttrs.a2(99)] class A3;
+ [myAttrs.a1][myAttrs.a2(99),myAttrs.a3(null)] class A4;
+}
diff --git a/test/files/pos/bug082.scala b/test/files/pos/bug082.scala
new file mode 100644
index 0000000000..594c9fdc86
--- /dev/null
+++ b/test/files/pos/bug082.scala
@@ -0,0 +1,18 @@
+
+object Main {
+
+ def min0[A](less: (A, A) => Boolean, xs: List[A]): Option[A] = xs match {
+ case List() => None
+ case List(x) => Some(x)
+// case x :: Nil => Some(x)
+ case y :: ys => min0(less, ys) match {
+ case Some(m) => if (less(y, m)) Some(y) else Some(m)
+ }
+ }
+
+ def min(xs: List[Int]) = min0((x: Int, y: Int) => x < y, xs);
+
+ def main(args: Array[String]) =
+ System.out.println(min(List()));
+
+}
diff --git a/test/files/pos/bug1.scala b/test/files/pos/bug1.scala
new file mode 100644
index 0000000000..bdf33ef20d
--- /dev/null
+++ b/test/files/pos/bug1.scala
@@ -0,0 +1,8 @@
+object Exceptions {
+
+ class CubeException(s: String) extends java.lang.RuntimeException(s);
+
+ def main(args: Array[String]) =
+ System.out.println(new CubeException("test"));
+
+}
diff --git a/test/files/pos/bug115.scala b/test/files/pos/bug115.scala
new file mode 100644
index 0000000000..a250e3c090
--- /dev/null
+++ b/test/files/pos/bug115.scala
@@ -0,0 +1,9 @@
+class S[A](f: A => A, x: A) {
+ System.out.println(f(x));
+}
+class T[B](f: B => B, y: B) extends S(x: B => f(x), y) {
+}
+object Test extends Application {
+ new T[Int](x => x * 2, 1);
+ val f = new S(x: Int => x, 1);
+}
diff --git a/test/files/pos/bug116.scala b/test/files/pos/bug116.scala
new file mode 100644
index 0000000000..b02c81f0b7
--- /dev/null
+++ b/test/files/pos/bug116.scala
@@ -0,0 +1,8 @@
+// $Id$
+
+class C {
+ def this(x: Int) = {
+ this();
+ class D extends C;
+ }
+}
diff --git a/test/files/pos/bug119.scala b/test/files/pos/bug119.scala
new file mode 100644
index 0000000000..e3f0993862
--- /dev/null
+++ b/test/files/pos/bug119.scala
@@ -0,0 +1,7 @@
+class K[E] {
+ case class A(v:E){};
+}
+
+class K2 extends K[int] {
+ val A(v) = A(42);
+}
diff --git a/test/files/pos/bug121.scala b/test/files/pos/bug121.scala
new file mode 100644
index 0000000000..78ddc41ee5
--- /dev/null
+++ b/test/files/pos/bug121.scala
@@ -0,0 +1,3 @@
+class Bug121_B(b: Array[Byte]) {
+ def get(x: Int): Byte = return b(x);
+}
diff --git a/test/files/pos/bug123.scala b/test/files/pos/bug123.scala
new file mode 100644
index 0000000000..79f0c907a3
--- /dev/null
+++ b/test/files/pos/bug123.scala
@@ -0,0 +1,3 @@
+class M{
+ val 1 = 1;
+}
diff --git a/test/files/pos/bug124.scala b/test/files/pos/bug124.scala
new file mode 100644
index 0000000000..9aed6786f6
--- /dev/null
+++ b/test/files/pos/bug124.scala
@@ -0,0 +1,5 @@
+class N{
+ val F: Any => Any = (x:Any) => F(x);
+ val f:(Any => Any) = (x:Any) => f(x);
+ val g: Any => Any = (x:Any) => g(x);
+}
diff --git a/test/files/pos/bug151.scala b/test/files/pos/bug151.scala
new file mode 100644
index 0000000000..86667b49f7
--- /dev/null
+++ b/test/files/pos/bug151.scala
@@ -0,0 +1,6 @@
+abstract class Foo {
+ type T;
+ def foo(a: T): Int = 0;
+ val foo: Foo = null;
+ def a: foo.T = a;
+}
diff --git a/test/files/pos/bug159.scala b/test/files/pos/bug159.scala
new file mode 100644
index 0000000000..ef6eba5255
--- /dev/null
+++ b/test/files/pos/bug159.scala
@@ -0,0 +1,22 @@
+object foo {
+
+ // the problem seems to appear only
+ // if "val _" is in the body of a case
+ def cooked( ckd:StringBuffer ):Unit =
+ 'a' match {
+ case '-' =>
+ val _ = ckd.append( '_' );
+ case 'v' =>
+ val _ = ckd.append( '_' );
+ }
+
+}
+object foo1 {
+ def f():Unit = {
+ 1 match {
+ case 2 => val _ = 1;
+ case 3 => val _ = 2;
+ case 4 => val _ = 2;
+ }
+ }
+}
diff --git a/test/files/pos/bug160.scala b/test/files/pos/bug160.scala
new file mode 100644
index 0000000000..f1c36ebeae
--- /dev/null
+++ b/test/files/pos/bug160.scala
@@ -0,0 +1,5 @@
+// $Id$
+
+class Foo(s:String) {
+ def this() = { this("DEFAULT") }
+}
diff --git a/test/files/pos/bug17.scala b/test/files/pos/bug17.scala
new file mode 100644
index 0000000000..a83eefe972
--- /dev/null
+++ b/test/files/pos/bug17.scala
@@ -0,0 +1,21 @@
+class Quantity {
+ def getValue = 0;
+ def connect(c: Constraint) = c.newValue;
+}
+
+abstract class Constraint(q: Quantity) {
+ def newValue: Unit;
+ q connect this
+}
+
+class Adder(q: Quantity) extends Constraint(q) {
+ def newValue = System.out.println(q.getValue);
+}
+
+object Main {
+ def main(args: Array[String]): Unit = {
+ val x = new Quantity;
+ new Adder(x);
+ ()
+ }
+}
diff --git a/test/files/pos/bug175.scala b/test/files/pos/bug175.scala
new file mode 100644
index 0000000000..2ef26589c2
--- /dev/null
+++ b/test/files/pos/bug175.scala
@@ -0,0 +1,5 @@
+// $Id$
+
+abstract class C {
+ def this(x: Unit) = { this() }
+}
diff --git a/test/files/pos/bug177.scala b/test/files/pos/bug177.scala
new file mode 100644
index 0000000000..9bd913f179
--- /dev/null
+++ b/test/files/pos/bug177.scala
@@ -0,0 +1,10 @@
+// $Id$
+
+class A {
+ def foo = {
+ object Y {
+ def bar = 1;
+ }
+ Y.bar
+ }
+}
diff --git a/test/files/pos/bug183.scala b/test/files/pos/bug183.scala
new file mode 100644
index 0000000000..4804eb3828
--- /dev/null
+++ b/test/files/pos/bug183.scala
@@ -0,0 +1,6 @@
+// $Id$
+
+object Test {
+ new Foo(0);
+ class Foo(x: Int);
+}
diff --git a/test/files/pos/bug193.scala b/test/files/pos/bug193.scala
new file mode 100644
index 0000000000..9b1c82f45f
--- /dev/null
+++ b/test/files/pos/bug193.scala
@@ -0,0 +1,74 @@
+// $Id$
+
+trait Test {
+
+ def fun_00(x: Int): Unit = {
+ (0: Any) == 0;
+ (0 ) == 0;
+ (0: Any) != 0;
+ (0 ) != 0;
+ ()
+ }
+
+ def fun_i0(x: Int): Unit = {
+ (x: Any) == 0;
+ (x ) == 0;
+ (x: Any) != 0;
+ (x ) != 0;
+ ()
+ }
+
+ def fun_o0(x: Object): Unit = {
+ (x: Any) == 0;
+ (x ) == 0;
+ (x: Any) != 0;
+ (x ) != 0;
+ ()
+ }
+
+ def fun_0i(y: Int): Unit = {
+ (0: Any) == y;
+ (0 ) == y;
+ (0: Any) != y;
+ (0 ) != y;
+ ()
+ }
+
+ def fun_0o(y: Object): Unit = {
+ (0: Any) == y;
+ (0 ) == y;
+ (0: Any) != y;
+ (0 ) != y;
+ ()
+ }
+
+ def fun_ii(x: Int, y: Int): Unit = {
+ (x: Any) == y;
+ (x ) == y;
+ (x: Any) != y;
+ (x ) != y;
+ ()
+ }
+ def fun_io(x: Int, y: Object): Unit = {
+ (x: Any) == y;
+ (x ) == y;
+ (x: Any) != y;
+ (x ) != y;
+ ()
+ }
+ def fun_oi(x: Object, y: Int): Unit = {
+ (x: Any) == y;
+ (x ) == y;
+ (x: Any) != y;
+ (x ) != y;
+ ()
+ }
+ def fun_oo(x: Object, y: Object): Unit = {
+ (x: Any) == y;
+ (x ) == y;
+ (x: Any) != y;
+ (x ) != y;
+ ()
+ }
+
+}
diff --git a/test/files/pos/bug2.scala b/test/files/pos/bug2.scala
new file mode 100644
index 0000000000..4c58ed3f4f
--- /dev/null
+++ b/test/files/pos/bug2.scala
@@ -0,0 +1,6 @@
+object main {
+ def main(args: Array[String]) = {
+ val b = true;
+ while (b == true) { }
+ }
+}
diff --git a/test/files/pos/bug20.scala b/test/files/pos/bug20.scala
new file mode 100644
index 0000000000..bdf33ef20d
--- /dev/null
+++ b/test/files/pos/bug20.scala
@@ -0,0 +1,8 @@
+object Exceptions {
+
+ class CubeException(s: String) extends java.lang.RuntimeException(s);
+
+ def main(args: Array[String]) =
+ System.out.println(new CubeException("test"));
+
+}
diff --git a/test/files/pos/bug201.scala b/test/files/pos/bug201.scala
new file mode 100644
index 0000000000..53dac21ef0
--- /dev/null
+++ b/test/files/pos/bug201.scala
@@ -0,0 +1,7 @@
+class C[a] { def f: a = f; }
+class D[b] { class E extends C[b]; }
+object Test {
+ val d = new D[int];
+ def e = new d.E;
+ e.f;
+}
diff --git a/test/files/pos/bug204.scala b/test/files/pos/bug204.scala
new file mode 100644
index 0000000000..23d36523e9
--- /dev/null
+++ b/test/files/pos/bug204.scala
@@ -0,0 +1,7 @@
+class A {
+ object B {
+ def f() = {
+ class C extends A {}; new C : A
+ }
+ }
+}
diff --git a/test/files/pos/bug210.scala b/test/files/pos/bug210.scala
new file mode 100644
index 0000000000..20450335f4
--- /dev/null
+++ b/test/files/pos/bug210.scala
@@ -0,0 +1,17 @@
+trait Lang1 {
+ trait Exp;
+ trait Visitor { def f(left: Exp): unit; }
+ class Eval1: Visitor extends Visitor {
+ def f(left: Exp) = ();
+ }
+}
+
+trait Lang2 extends Lang1 {
+ class Eval2: Visitor extends Eval1;
+}
+/*
+object Main with Application {
+ val lang2 = new Lang2 {};
+ val eval = new lang2.Eval2;
+}
+*/
diff --git a/test/files/pos/bug211.scala b/test/files/pos/bug211.scala
new file mode 100644
index 0000000000..8c5cf1dc1e
--- /dev/null
+++ b/test/files/pos/bug211.scala
@@ -0,0 +1,8 @@
+trait A;
+trait B;
+class Foo: (A with B) extends A with B;
+object Test extends Application {
+ new Foo();
+ System.out.println("bug211 completed");
+}
+
diff --git a/test/files/pos/bug229.scala b/test/files/pos/bug229.scala
new file mode 100644
index 0000000000..2bceea0782
--- /dev/null
+++ b/test/files/pos/bug229.scala
@@ -0,0 +1,3 @@
+class Test extends java.util.ArrayList {
+ override def add(index: int, element: java.lang.Object): unit = {}
+}
diff --git a/test/files/pos/bug245.scala b/test/files/pos/bug245.scala
new file mode 100644
index 0000000000..b33dd9914f
--- /dev/null
+++ b/test/files/pos/bug245.scala
@@ -0,0 +1,18 @@
+class Value {}
+
+object Test {
+
+ implicit def view(v: Value): int = 0;
+
+ def foo(i: Int): Int = 0;
+
+ def fun0 : Value = null;
+ def fun0(i: Int ): Value = null;
+
+ def fun1(i: Int ): Value = null;
+ def fun1(l: Long): Value = null;
+
+ foo(fun0 );
+ foo(fun1(new Value));
+
+}
diff --git a/test/files/pos/bug267.scala b/test/files/pos/bug267.scala
new file mode 100644
index 0000000000..d99b1fa1fc
--- /dev/null
+++ b/test/files/pos/bug267.scala
@@ -0,0 +1,55 @@
+package expAbstractData;
+
+/** A base class consisting of
+ * - a root trait (i.e. abstract class) `Exp' with an `eval' function
+ * - an abstract type `exp' bounded by `Exp'
+ * - a concrete instance class `Num' of `Exp' for numeric literals
+ */
+trait Base {
+ type exp <: Exp;
+
+ trait Exp {
+ def eval: int
+ }
+ class Num(v: int): exp extends Exp {
+ val value = v;
+ def eval = value
+ }
+}
+
+object testBase extends Application with Base {
+ type exp = Exp;
+ val term = new Num(2);
+ System.out.println(term.eval);
+}
+
+/** Data extension: An extension of `Base' with `Plus' expressions
+ */
+trait BasePlus extends Base {
+ class Plus(l: exp, r: exp): exp extends Exp {
+ val left = l;
+ val right = r;
+ def eval = left.eval + right.eval
+ }
+}
+
+/** Operation extension: An extension of `Base' with 'show' methods.
+ */
+trait Show extends Base {
+ type exp <: Exp1;
+
+ trait Exp1 extends Exp {
+ def show: String;
+ }
+ class Num1(v: int): (exp with Num1) extends Num(v) with Exp1 {
+ def show = value.toString();
+ }
+}
+
+/** Operation extension: An extension of `BasePlus' with 'show' methods.
+ */
+trait ShowPlus extends BasePlus with Show {
+ class Plus1(l: exp, r: exp): (exp with Plus1) extends Plus(l, r) with Exp1 {
+ def show = left.show + " + " + right.show
+ }
+}
diff --git a/test/files/pos/bug287.scala b/test/files/pos/bug287.scala
new file mode 100644
index 0000000000..81a01951b2
--- /dev/null
+++ b/test/files/pos/bug287.scala
@@ -0,0 +1,12 @@
+object testBuf {
+ class mystream extends java.io.BufferedOutputStream(new java.io.FileOutputStream("/dev/null")) {
+ def w( x:String ):Unit = {
+ val foo = new Array[byte](2);
+
+ // write( byte[] ) is defined in FilterOutputStream, the superclass of BufferedOutputStream
+ super.write( foo ); // error
+
+ super.write( foo, 0, foo.length ); // this works however
+ }
+ }
+}
diff --git a/test/files/pos/bug289.scala b/test/files/pos/bug289.scala
new file mode 100644
index 0000000000..2fb91510d2
--- /dev/null
+++ b/test/files/pos/bug289.scala
@@ -0,0 +1,7 @@
+// $Id$
+
+class A {
+ object B;
+}
+
+object C extends A;
diff --git a/test/files/pos/bug29.scala b/test/files/pos/bug29.scala
new file mode 100644
index 0000000000..1b33c6cffd
--- /dev/null
+++ b/test/files/pos/bug29.scala
@@ -0,0 +1,3 @@
+object Main {
+ def f[a]: List[List[a]] = for (val l1 <- Nil; val l2 <- Nil) yield l1;
+}
diff --git a/test/files/pos/bug295.scala b/test/files/pos/bug295.scala
new file mode 100644
index 0000000000..22c7beff4d
--- /dev/null
+++ b/test/files/pos/bug295.scala
@@ -0,0 +1,2 @@
+object Test extends java.rmi.server.UnicastRemoteObject {
+}
diff --git a/test/files/pos/bug30.scala b/test/files/pos/bug30.scala
new file mode 100644
index 0000000000..6d28e18c0d
--- /dev/null
+++ b/test/files/pos/bug30.scala
@@ -0,0 +1,9 @@
+trait A {
+ def f(x: int): unit;
+ def f(x: String): unit;
+}
+
+class B extends A {
+ def f(x: int): unit = ();
+ def f(x: String): unit = ();
+}
diff --git a/test/files/pos/bug304.scala b/test/files/pos/bug304.scala
new file mode 100644
index 0000000000..76da44157d
--- /dev/null
+++ b/test/files/pos/bug304.scala
@@ -0,0 +1,5 @@
+object O {
+ def f1 = -1;
+ def f2 = 0-1;
+ def f3 = -f1;
+}
diff --git a/test/files/pos/bug31.scala b/test/files/pos/bug31.scala
new file mode 100644
index 0000000000..92f33bfd02
--- /dev/null
+++ b/test/files/pos/bug31.scala
@@ -0,0 +1,29 @@
+object Main {
+
+ trait Ensure[a] {
+ def ensure(postcondition: a => Boolean): a
+ }
+
+ def require[a](precondition: => Boolean)(command: => a): Ensure[a] =
+ if (precondition)
+ new Ensure[a] {
+ def ensure(postcondition: a => Boolean): a = {
+ val result = command;
+ if (postcondition(result)) result
+ else error("Assertion error")
+ }
+ }
+ else
+ error("Assertion error");
+
+ def arb[a](s: List[a]) =
+ require (! s.isEmpty) {
+ s.head
+ } ensure (result => s contains result);
+
+ def main(args: Array[String]) = {
+ val s = List(1, 2);
+ System.out.println(arb(s))
+ }
+
+}
diff --git a/test/files/pos/bug318.scala b/test/files/pos/bug318.scala
new file mode 100644
index 0000000000..1b9fa4a4b3
--- /dev/null
+++ b/test/files/pos/bug318.scala
@@ -0,0 +1,11 @@
+// $Id$
+
+object Test {
+ def fun: Int = {
+ object o {
+ def a: Int = 1;
+ class C { def b: Int = a; }
+ }
+ 0
+ }
+}
diff --git a/test/files/pos/bug32.scala b/test/files/pos/bug32.scala
new file mode 100644
index 0000000000..4354727d1a
--- /dev/null
+++ b/test/files/pos/bug32.scala
@@ -0,0 +1,17 @@
+import java.io._;
+
+class PromptStream(s: OutputStream) extends PrintStream(s) {
+ override def println() = super.println();
+}
+
+object Main {
+
+ val out = new PromptStream(System.out);
+
+ System.setOut(out);
+
+ def main(args: Array[String]) =
+ //out.println("hello world");
+ ()
+
+}
diff --git a/test/files/pos/bug342.scala b/test/files/pos/bug342.scala
new file mode 100644
index 0000000000..2e72ef220b
--- /dev/null
+++ b/test/files/pos/bug342.scala
@@ -0,0 +1,9 @@
+object Main extends Application {
+
+//object Foo extends Enumeration { // 1: OK !
+ object Foo extends Enumeration(0, "Bar") { // 2
+ val Bar = Value
+ }
+ import Foo._;
+ Console.println(Bar)
+}
diff --git a/test/files/pos/bug348plus.scala b/test/files/pos/bug348plus.scala
new file mode 100644
index 0000000000..30fa1576af
--- /dev/null
+++ b/test/files/pos/bug348plus.scala
@@ -0,0 +1,24 @@
+// bug #348
+
+trait Foo {
+ type bar <: Bar;
+ abstract class Bar;
+ case class Baz(r:bar) extends Bar;
+ case object NoBar extends Bar;
+}
+object Test extends Application {
+ object ConcreteFooBar extends Foo { // if moved to toplevel, it works
+ type bar = Bar;
+ }
+ def foo = {
+ import ConcreteFooBar._ ;
+ Baz( NoBar )
+ }
+}
+
+// bug #367
+
+object Bla {
+ def foo(): Unit = (return null).equals(null);
+}
+
diff --git a/test/files/pos/bug359.scala b/test/files/pos/bug359.scala
new file mode 100644
index 0000000000..6ce4640998
--- /dev/null
+++ b/test/files/pos/bug359.scala
@@ -0,0 +1,30 @@
+// $Id$
+
+object Bug359 {
+ class C;
+ def f1(xs: List[C]): C = {
+ g {
+ xs =>
+ if (false) {
+ f1(xs)
+ } else {
+ val a: C = null;
+ val b: C = null;
+ if (xs.isEmpty) a else b
+ }
+ }
+ }
+ def f2(xs: List[C]): C = {
+ g {
+ xs =>
+ if (false) {
+ val a: C = null;
+ val b: C = null;
+ if (xs.isEmpty) a else b
+ } else {
+ f2(xs);
+ }
+ }
+ }
+ private def g(op: List[C] => C): C = null;
+}
diff --git a/test/files/pos/bug36.scala b/test/files/pos/bug36.scala
new file mode 100644
index 0000000000..1d923b0017
--- /dev/null
+++ b/test/files/pos/bug36.scala
@@ -0,0 +1,8 @@
+object m {
+
+ val xs: List[int] = Nil;
+ def f(i: int) = 0;
+ val v = xs map f;
+
+ def m() = {}
+}
diff --git a/test/files/pos/bug360.scala b/test/files/pos/bug360.scala
new file mode 100644
index 0000000000..0fcb5cb161
--- /dev/null
+++ b/test/files/pos/bug360.scala
@@ -0,0 +1,11 @@
+// $Id$
+
+abstract class Bug360A: Bug360C {
+ def f: String = "hello";
+}
+trait Bug360B: Bug360C {
+ object d {
+ System.out.println(f);
+ }
+}
+abstract class Bug360C extends Bug360A with Bug360B;
diff --git a/test/files/pos/bug361.scala b/test/files/pos/bug361.scala
new file mode 100644
index 0000000000..f48c906246
--- /dev/null
+++ b/test/files/pos/bug361.scala
@@ -0,0 +1,18 @@
+// $Id$
+
+class Bug361Global extends Bug361Trees;
+
+abstract class Bug361Trees: Bug361Global {
+
+ abstract class Tree {
+ var pos: int = 0;
+ }
+
+ object posAssigner {
+ def atPos[T <: Tree](pos: int, tree: T): T = {
+ tree.pos = pos; tree
+ }
+ }
+
+ def atPos[T <: Tree](pos: int)(tree: T): T = posAssigner.atPos(pos, tree);
+}
diff --git a/test/files/pos/bug372.scala b/test/files/pos/bug372.scala
new file mode 100644
index 0000000000..d16585abbe
--- /dev/null
+++ b/test/files/pos/bug372.scala
@@ -0,0 +1,4 @@
+// $Id$
+
+class Bug372Names;
+class Bug372Symbols: (Bug372Symbols with Bug372Names);
diff --git a/test/files/pos/bug39.scala b/test/files/pos/bug39.scala
new file mode 100644
index 0000000000..a131bc0450
--- /dev/null
+++ b/test/files/pos/bug39.scala
@@ -0,0 +1,6 @@
+abstract class Extensible[A, This <: Extensible[A, This]](x: A, xs: This): This {
+ def mkObj(x: A, xs: This): This;
+}
+class Fixed[A](x: A, xs: Fixed[A]) extends Extensible[A, Fixed[A]](x, xs) {
+ def mkObj(x: A, xs: Fixed[A]) = new Fixed(x, xs);
+}
diff --git a/test/files/pos/bug49.scala b/test/files/pos/bug49.scala
new file mode 100644
index 0000000000..913ce06e00
--- /dev/null
+++ b/test/files/pos/bug49.scala
@@ -0,0 +1,3 @@
+class C1(x: Object) {};
+
+class C2 extends C1({ class A extends Object {}; (new A) : Object }) {};
diff --git a/test/files/pos/bug53.scala b/test/files/pos/bug53.scala
new file mode 100644
index 0000000000..44763ef144
--- /dev/null
+++ b/test/files/pos/bug53.scala
@@ -0,0 +1,7 @@
+object bug {
+ def foobar[c]: Int = {
+ class Foo { def foo: Bar = new Bar(); }
+ class Bar { def bar: c = bar; }
+ 0
+ }
+}
diff --git a/test/files/pos/bug54.scala b/test/files/pos/bug54.scala
new file mode 100644
index 0000000000..3dc8e161fd
--- /dev/null
+++ b/test/files/pos/bug54.scala
@@ -0,0 +1,4 @@
+class A {
+ case class B(x: C) extends A {}
+ class C {}
+}
diff --git a/test/files/pos/bug61.scala b/test/files/pos/bug61.scala
new file mode 100644
index 0000000000..dd3f94f30c
--- /dev/null
+++ b/test/files/pos/bug61.scala
@@ -0,0 +1,10 @@
+object O {
+
+ class testClass ;
+
+ case class testA() extends testClass ; // works if you leave away "extends..."
+ // or if you write TestA
+ def ga( x:testClass ) = x match {
+ case testA() => ()
+ }
+}
diff --git a/test/files/pos/bug64.scala b/test/files/pos/bug64.scala
new file mode 100644
index 0000000000..c2ce4bf6d0
--- /dev/null
+++ b/test/files/pos/bug64.scala
@@ -0,0 +1,6 @@
+object B {
+ def main(Args:Array[String]) = {
+ val Pair(_,x) = Pair(1,2);
+ x + 1;
+ }
+}
diff --git a/test/files/pos/bug66.scala b/test/files/pos/bug66.scala
new file mode 100644
index 0000000000..2153264e7a
--- /dev/null
+++ b/test/files/pos/bug66.scala
@@ -0,0 +1,7 @@
+class GBTree[A, B] /*with Map[A, B, GBTree[A,B]]*/ {
+ abstract class Tree[A,B];
+ case class Node[A,B](key:A,value:B,smaller:Node[A,B],bigger:Node[A,B])
+ extends Tree[A,B];
+ case class Nil[A,B]() extends Tree[A,B];
+
+}
diff --git a/test/files/pos/bug68.scala b/test/files/pos/bug68.scala
new file mode 100644
index 0000000000..beb2c7c0ab
--- /dev/null
+++ b/test/files/pos/bug68.scala
@@ -0,0 +1,6 @@
+class E {
+ def f() = {
+ val (_::l1) = List(1,2,3);
+ l1.tail;
+ }
+}
diff --git a/test/files/pos/bug69.scala b/test/files/pos/bug69.scala
new file mode 100644
index 0000000000..113820613f
--- /dev/null
+++ b/test/files/pos/bug69.scala
@@ -0,0 +1,11 @@
+object testCQ {
+ // why does this not work directly
+ case class Thing( name:String, contains:List[ Thing ] );
+
+ /* ... but this one does?
+ abstract class T;
+ case class Thing2( name:String, contains:List[ T ] ) extends T;
+ */
+
+}
+
diff --git a/test/files/pos/bug76.scala b/test/files/pos/bug76.scala
new file mode 100644
index 0000000000..5419cf5154
--- /dev/null
+++ b/test/files/pos/bug76.scala
@@ -0,0 +1,9 @@
+// This is extracted from a test file => don't add a new test file.
+object bug {
+ def foo(i: => Int): Int = 0;
+
+ def bar: Int = {
+ var i: Int = 0;
+ foo (i);
+ }
+}
diff --git a/test/files/pos/bug81.scala b/test/files/pos/bug81.scala
new file mode 100644
index 0000000000..20fd604974
--- /dev/null
+++ b/test/files/pos/bug81.scala
@@ -0,0 +1,4 @@
+class A {
+ val b: A#B = new B;
+ class B {}
+}
diff --git a/test/files/pos/bug85.scala b/test/files/pos/bug85.scala
new file mode 100644
index 0000000000..e018afb6ee
--- /dev/null
+++ b/test/files/pos/bug85.scala
@@ -0,0 +1,8 @@
+object A {
+ case class B(c: C) {
+ class C;
+ }
+ class C;
+ val b: B = new B(new C());
+ val c: C = b.c;
+}
diff --git a/test/files/pos/bug91.scala b/test/files/pos/bug91.scala
new file mode 100644
index 0000000000..54c821b41c
--- /dev/null
+++ b/test/files/pos/bug91.scala
@@ -0,0 +1,6 @@
+class Bug {
+ def main(args: Array[String]) = {
+ var msg: String = null; // no bug if "null" instead of "_"
+ val f: PartialFunction[Any, unit] = { case 42 => msg = "coucou" };
+ }
+}
diff --git a/test/files/pos/bug93.scala b/test/files/pos/bug93.scala
new file mode 100644
index 0000000000..d648d773b0
--- /dev/null
+++ b/test/files/pos/bug93.scala
@@ -0,0 +1,4 @@
+object Bug {
+ def f(cond: => Boolean) = while (cond == false) {};
+ // no bug with "false == cond"
+}
diff --git a/test/files/pos/cls.scala b/test/files/pos/cls.scala
new file mode 100644
index 0000000000..54104ae692
--- /dev/null
+++ b/test/files/pos/cls.scala
@@ -0,0 +1,17 @@
+import scala._;
+
+package scalac.util {
+
+class A[X1, X2](x1: X1, x2: X2) {}
+class B[Y](y1: Y, y2: Y) extends A[Y, Y](y1, y2) {
+ def f(x: Y, xs: B[Y]): Unit = {}
+ def g() = f(y1, this);
+}
+
+object test {
+ val b: B[Int] = new B[Int](1, 2);
+ val a: A[Int, Int] = b;
+ val a1 = new A(1, "hello");
+ val b1 = new B(1, "hello");
+}
+} \ No newline at end of file
diff --git a/test/files/pos/cls1.scala b/test/files/pos/cls1.scala
new file mode 100644
index 0000000000..20ac12d59a
--- /dev/null
+++ b/test/files/pos/cls1.scala
@@ -0,0 +1,9 @@
+package test;
+
+trait A {
+ type T;
+
+ trait B extends A {
+ type T = A.this.T;
+ }
+}
diff --git a/test/files/pos/clsrefine.scala b/test/files/pos/clsrefine.scala
new file mode 100644
index 0000000000..d63923b5e6
--- /dev/null
+++ b/test/files/pos/clsrefine.scala
@@ -0,0 +1,40 @@
+import scala._;
+
+package scalac.util {
+
+trait A {
+ type X1;
+ type X2;
+ val x1: X1;
+ val x2: X2;
+}
+trait B extends A {
+ type Y;
+ val y1, y2: Y;
+ type X1 = Y;
+ type X2 = Y;
+ val x1 = y1;
+ val x2 = y2;
+ def f(x: Y, xs: B): Unit = {}
+ def g() = f(y1, this);
+}
+
+object test {
+ val b: B { type Y = Int } = new B {
+ type Y = Int;
+ val y1, y2 = 1;
+ }
+ val a: A { type X1 = Int; type X2 = Int } = b;
+ val a1 = new A {
+ type X1 = Int;
+ type X2 = String;
+ val x1 = 1;
+ val x2 = "hello"
+ }
+ val b1 = new B {
+ type Y = Any;
+ val y1 = 1;
+ val y2 = "hello";
+ }
+}
+} \ No newline at end of file
diff --git a/test/files/pos/code.scala b/test/files/pos/code.scala
new file mode 100644
index 0000000000..05c6e4a779
--- /dev/null
+++ b/test/files/pos/code.scala
@@ -0,0 +1,3 @@
+class Test {
+ val fun: reflect.TypedCode[int => int] = x => x + 1;
+}
diff --git a/test/files/pos/collections.scala b/test/files/pos/collections.scala
new file mode 100644
index 0000000000..4f45a42786
--- /dev/null
+++ b/test/files/pos/collections.scala
@@ -0,0 +1,15 @@
+package mixins;
+
+import scala.collection.mutable._;
+
+class Collections extends HashSet[Int] with ObservableSet[Int,Collections] {
+ override def +=(elem: Int): Unit = super.+=(elem);
+ override def -=(elem: Int): Unit = super.-=(elem);
+ override def clear: Unit = super.clear;
+
+}
+
+object collections extends Collections;
+
+//class Collections1 extends HashSet[Int] with ObservableSet[Int,Collections1];
+//object collections1 extends Collections1;
diff --git a/test/files/pos/compile.scala b/test/files/pos/compile.scala
new file mode 100644
index 0000000000..3ed733fd40
--- /dev/null
+++ b/test/files/pos/compile.scala
@@ -0,0 +1,150 @@
+//############################################################################
+// Compile Time Bugs & Test Cases
+//############################################################################
+// $Id$
+
+import java.lang.System; // to avoid name clash with .NET's library
+
+//############################################################################
+// Test 0
+
+/*
+class Test0Foo[X];
+
+object Test0Test {
+ type Gen[A] = Test0Foo[A];
+ class Tic(g: Test0Test.Gen[Int]);
+ class Tac(g: Gen[Int]);
+}
+
+//############################################################################
+// Test 1 - Single types in lambda lift
+
+object Test1 {
+ def main(args: Array[String]): Unit = {
+ List[args.type](args);
+ }
+ def foo[X]: Any = {
+ def bar(x: X) = List(x);
+ 0
+ }
+}
+
+//############################################################################
+// Test 2 - Local variables owned by other local variables
+
+class Test2_1(i: Int) {
+ val t = {
+ val x = {
+ val y = {
+ val z = i;
+ z;
+ };
+ };
+ };
+ val x = {
+ val y = {
+ val z = i;
+ z;
+ };
+ };
+ val y = {
+ val z = i;
+ z;
+ };
+ val z2_1 = i;
+}
+
+class Test2_2(i: Int) {
+ {
+ val t = {
+ val x = {
+ val y = {
+ val z = i;
+ z;
+ };
+ };
+ };
+ val x = {
+ val y = {
+ val z = i;
+ z;
+ };
+ };
+ val y = {
+ val z = i;
+ z;
+ };
+ val z2_2 = i;
+ 0
+ }
+}
+
+class Test2_3() {
+
+ def this(i: Int) = {
+ this();
+ val t = {
+ val x = {
+ val y = {
+ val z = i;
+ z;
+ };
+ };
+ };
+ val x = {
+ val y = {
+ val z = i;
+ z;
+ };
+ };
+ val y = {
+ val z = i;
+ z;
+ };
+ val z2_3 = i;
+ }
+
+ def test(i: Int): Int = {
+ val t = {
+ val x = {
+ val y = {
+ val z = i;
+ z;
+ };
+ };
+ };
+ val x = {
+ val y = {
+ val z = i;
+ z;
+ };
+ };
+ val y = {
+ val z = i;
+ z;
+ };
+ val z_test = i;
+ 0
+ }
+
+}
+*/
+//############################################################################
+// Test 3 - Super Calls with Mixins
+
+class Test3Foo;
+
+trait Test3A[T] {
+ def fun: T = fun;
+}
+
+class Test3B extends Test3A[Test3Foo];
+
+trait Test3M extends Test3A[Test3Foo] {
+ override def fun: Test3Foo = super.fun;
+}
+
+class Test3C extends Test3B with Test3M;
+
+//############################################################################
diff --git a/test/files/pos/compile1.scala b/test/files/pos/compile1.scala
new file mode 100644
index 0000000000..3f06abbaa9
--- /dev/null
+++ b/test/files/pos/compile1.scala
@@ -0,0 +1,35 @@
+//############################################################################
+// Compile Time Bugs & Test Cases
+//############################################################################
+// $Id$
+
+import java.lang.System; // to avoid name clash with .NET's library
+
+//############################################################################
+// Test 0
+
+class Test2_2(i: Int) {
+ {
+ val t = {
+ val x = {
+ val y = {
+ val z = i;
+ z;
+ };
+ };
+ };
+ val x = {
+ val y = {
+ val z = i;
+ z;
+ };
+ };
+ val y = {
+ val z = i;
+ z;
+ };
+ val z2_2 = i;
+ 0
+ }
+}
+
diff --git a/test/files/pos/compound.scala b/test/files/pos/compound.scala
new file mode 100644
index 0000000000..60890f9102
--- /dev/null
+++ b/test/files/pos/compound.scala
@@ -0,0 +1,9 @@
+abstract class A { type T }
+
+abstract class B { val xz: Any }
+
+abstract class Test {
+ var yy: A with B { type T; val xz: T } = null;
+ var xx: A with B { type T; val xz: T } = null;
+ xx = yy;
+}
diff --git a/test/files/pos/constfold.scala b/test/files/pos/constfold.scala
new file mode 100644
index 0000000000..2eb31b4086
--- /dev/null
+++ b/test/files/pos/constfold.scala
@@ -0,0 +1,14 @@
+object A {
+ val x = 2;
+ val y = x.asInstanceOf[byte];
+ val z = 1.0 / 2;
+ val s = "z is " + z;
+}
+
+object Test extends Application {
+
+ System.out.println(A.x);
+ System.out.println(A.y);
+ System.out.println(A.z);
+ System.out.println(A.s);
+}
diff --git a/test/files/pos/context.scala b/test/files/pos/context.scala
new file mode 100644
index 0000000000..ada6a57463
--- /dev/null
+++ b/test/files/pos/context.scala
@@ -0,0 +1,34 @@
+class Context {
+ object symwrap extends SymbolWrapper {
+ val context: Context.this.type = Context.this
+ }
+ object typewrap extends TypeWrapper {
+ val context: Context.this.type = Context.this
+ }
+ object symbols extends symwrap.Symbols;
+ object types extends typewrap.Types;
+}
+
+abstract class SymbolWrapper {
+ val context: Context;
+ import context._;
+
+ class Symbols: context.symbols.type {
+ abstract class Symbol {
+ def typ: types.Type;
+ def sym: Symbol = typ.sym;
+ }
+ }
+}
+
+abstract class TypeWrapper {
+ val context: Context;
+ import context._;
+
+ class Types: context.types.type {
+ abstract class Type {
+ def sym: symbols.Symbol;
+ def typ: Type = sym.typ;
+ }
+ }
+}
diff --git a/test/files/pos/eta.scala b/test/files/pos/eta.scala
new file mode 100644
index 0000000000..7d862f67b1
--- /dev/null
+++ b/test/files/pos/eta.scala
@@ -0,0 +1,5 @@
+object test {
+
+def sum(f: Int => Int)(x: Int, y: Int): Int = 0;
+def g = sum;
+} \ No newline at end of file
diff --git a/test/files/pos/exceptions.scala b/test/files/pos/exceptions.scala
new file mode 100644
index 0000000000..819368244d
--- /dev/null
+++ b/test/files/pos/exceptions.scala
@@ -0,0 +1,20 @@
+import java.io._;
+
+object Test {
+
+ //def error[a](x: String):a = new java.lang.RuntimeException(x) throw;
+
+ def main(args: Array[String]): Unit = {
+ try {
+ try {
+ System.out.println("hi!");
+ error("xx");
+ } finally {
+ System.out.println("ho!")
+ }
+ } catch {
+ case ex: IOException => System.out.println("io exception!");
+ case ex => System.out.println(ex);
+ }
+ }
+}
diff --git a/test/files/pos/expressions-current.scala b/test/files/pos/expressions-current.scala
new file mode 100644
index 0000000000..b343dbf68b
--- /dev/null
+++ b/test/files/pos/expressions-current.scala
@@ -0,0 +1,63 @@
+package test;
+
+abstract class Lang {
+ trait Visitor {
+ def caseNum(n: int): unit;
+ }
+
+ abstract class Exp {
+ def visit(v: visitor): unit;
+ }
+
+ type visitor <: Visitor;
+
+ class Num(n: int) extends Exp {
+ def visit(v: visitor): unit = v.caseNum(n);
+ }
+
+ class Eval(result: Ref[int]): visitor extends Visitor {
+ def caseNum(n: int) = result.elem = n;
+ }
+}
+
+abstract class Lang2 extends Lang {
+ trait Visitor2 extends Visitor {
+ def casePlus(left: Exp, right: Exp): unit;
+ }
+
+ type visitor <: Visitor2;
+
+ class Plus(l: Exp, r: Exp) extends Exp {
+ def visit(v: visitor): unit = v.casePlus(l, r);
+ }
+
+ class Eval2(result: Ref[int]): visitor extends Eval(result) with Visitor2 {
+ def casePlus(l: Exp, r: Exp) =
+ result.elem = { l.visit(this); result.elem } + { r.visit(this); result.elem }
+ }
+
+ class Show2(result: Ref[String]): visitor extends Visitor2 {
+ def caseNum(n: int) = result.elem = n.toString();
+ def casePlus(l: Exp, r: Exp) =
+ result.elem =
+ "(" + { l.visit(this); result.elem } +
+ "+" + { r.visit(this); result.elem }+ ")";
+ }
+}
+
+object Main {
+
+ def main(args: Array[String]) = {
+ object l1 extends Lang { type visitor = Visitor }
+ val e1: l1.Exp = new l1.Num(42);
+
+ val iref = new Ref(0);
+ System.out.println("eval: " + { e1.visit(new l1.Eval(iref)); iref.elem });
+
+ object l2 extends Lang2 { type visitor = Visitor2 }
+ val e2: l2.Exp = new l2.Plus(new l2.Num(5), new l2.Num(37));
+ val sref = new Ref("");
+ System.out.println("eval: " + { e2.visit(new l2.Eval2(iref)); iref.elem });
+ System.out.println("show: " + { e2.visit(new l2.Show2(sref)); sref.elem });
+ }
+}
diff --git a/test/files/pos/failed.lst b/test/files/pos/failed.lst
new file mode 100644
index 0000000000..b5b75eb35c
--- /dev/null
+++ b/test/files/pos/failed.lst
@@ -0,0 +1,3 @@
+bug123.scala
+exceptions.scala
+context.scala
diff --git a/test/files/pos/gui.scala b/test/files/pos/gui.scala
new file mode 100644
index 0000000000..b40759fb01
--- /dev/null
+++ b/test/files/pos/gui.scala
@@ -0,0 +1,99 @@
+object Geom {
+ trait Shape;
+ case class Point(x: int, y: int) extends Shape;
+ case class Rectangle(ll: Point, ur: Point) extends Shape {
+ def inset(delta: int) =
+ Rectangle(Point(ll.x - delta, ll.y - delta), Point(ur.x + delta, ur.y + delta));
+ }
+}
+
+object Color {
+ type Color = int;
+ val black = 0x000000;
+ val grey = 0x808080;
+}
+
+trait Screen {
+ type Color = int;
+ def drawRect(r: Geom.Rectangle, c: Color): unit;
+ def fillRect(r: Geom.Rectangle, c: Color): unit;
+}
+
+object DummyScreen extends Screen {
+ def drawRect(r: Geom.Rectangle, c: Color): unit =
+ System.out.println("draw " + r + " with " + c);
+ def fillRect(r: Geom.Rectangle, c: Color): unit =
+ System.out.println("fill " + r + " with " + c);
+}
+
+object GUI {
+
+ object Controller {
+ def addMouseCtl(c: MouseCtl) = ()
+ }
+
+ trait Glyph {
+ def getRect: Geom.Rectangle;
+ def setLoc(p: Geom.Point): unit;
+ def draw() = System.out.println("draw " + this);
+ }
+
+ class Label(scr: Screen, p: Geom.Point, name: String) extends Glyph {
+ private var origin = p;
+ def getRect = Geom.Rectangle(origin, origin).inset(10);
+ def setLoc(p: Geom.Point) = { origin = p }
+ }
+
+ trait Ctl {
+ def getGlyph: Glyph;
+ def enable(b: Boolean): this.type;
+ }
+
+ trait MouseCtl extends Ctl {
+ def mouseDown(p: Geom.Point): unit;
+ }
+
+ abstract class Button(scr: Screen, p: Geom.Point, name: String)
+ extends Glyph with MouseCtl {
+ var enabled: boolean = false;
+ val label = new Label(scr, p, name);
+
+ /* Glyph methods */
+ override def draw(): unit = {
+ if (enabled) scr.drawRect(getRect, Color.black)
+ else scr.fillRect(getRect, Color.grey);
+ label.draw();
+ }
+ def setLoc(p: Geom.Point) = label.setLoc(p);
+ def getRect = label.getRect.inset(-2);
+
+ /* Ctl methods */
+ def enable(b: boolean): this.type = { enabled = b; draw(); this }
+ def getGlyph = label;
+ final def mouseDown(p: Geom.Point): unit =
+ if (enabled) doit() else System.out.println("button is disabled");
+
+ /* deferred method to be specified by client */
+ def doit(): unit;
+ }
+}
+
+object GUIClient {
+
+ class Application {
+ def quit() = System.out.println("application exited");
+ }
+
+ class QuitButton (scr: Screen, p: Geom.Point, name: String, a: Application)
+ extends GUI.Button(scr, p, name) {
+ def doit(): unit = a.quit();
+ }
+
+ def main(args: Array[String]) = {
+ val b = new QuitButton(
+ DummyScreen, Geom.Point(1, 1), "quit", new Application);
+ b.draw();
+ b.enable(true).mouseDown(Geom.Point(1, 2));
+ }
+}
+
diff --git a/test/files/pos/imports.scala b/test/files/pos/imports.scala
new file mode 100644
index 0000000000..65ea090436
--- /dev/null
+++ b/test/files/pos/imports.scala
@@ -0,0 +1,16 @@
+package test;
+
+import java.lang.{System => S}
+
+object test {
+ import S.out.{print => p, println => print}
+
+ val foo = 1;
+
+ p("hello"); print("world"); S.out.println("!");
+ S.out.flush();
+}
+object test1 {
+ import test._;
+ foo
+} \ No newline at end of file
diff --git a/test/files/pos/infer.scala b/test/files/pos/infer.scala
new file mode 100644
index 0000000000..24871458b3
--- /dev/null
+++ b/test/files/pos/infer.scala
@@ -0,0 +1,11 @@
+object test {
+ class List[+a] {
+ def ::[b >: a](x: b): List[b] = new Cons(x, this);
+ }
+ case class Cons[a, b <: a](x: a, xs: List[b]) extends List[a];
+ case object Nil extends List[All];
+ def nil[n]: List[n] = Nil;
+ def cons[a](x: a, xs: List[a]): List[a] = null;
+ val x: List[Int] = Nil.::(1);
+ val y: List[Int] = nil.::(1);
+}
diff --git a/test/files/pos/infer2.scala b/test/files/pos/infer2.scala
new file mode 100644
index 0000000000..66f3d76544
--- /dev/null
+++ b/test/files/pos/infer2.scala
@@ -0,0 +1,10 @@
+object test {
+
+ def f[a, b <: a](x: b): a = x: a;
+ def g[a >: b, b](x: b): a = x: a;
+
+ val x: int = f(1);
+ val y: String = g("")
+
+}
+
diff --git a/test/files/pos/lambda.scala b/test/files/pos/lambda.scala
new file mode 100644
index 0000000000..187b3f9783
--- /dev/null
+++ b/test/files/pos/lambda.scala
@@ -0,0 +1,8 @@
+object test {
+
+ def apply[a,b](f: a => b): a => b = x: a => f(x);
+
+ def twice[a](f: a => a): a => a = x: a => f(f(x));
+
+ def main = apply[Int,Int](twice[Int](x: Int => x))(1);
+} \ No newline at end of file
diff --git a/test/files/pos/lambdalift.scala b/test/files/pos/lambdalift.scala
new file mode 100644
index 0000000000..ae5799a6f8
--- /dev/null
+++ b/test/files/pos/lambdalift.scala
@@ -0,0 +1,15 @@
+import scala._;
+
+object test {
+
+ def f(x: Int) = {
+ def g() = h();
+ def h() = x;
+ g();
+ class inner() {
+ def g() = h();
+ def h() = x;
+ }
+ g() + new inner().g();
+ }
+} \ No newline at end of file
diff --git a/test/files/pos/lambdalift1.scala b/test/files/pos/lambdalift1.scala
new file mode 100644
index 0000000000..d9172f51eb
--- /dev/null
+++ b/test/files/pos/lambdalift1.scala
@@ -0,0 +1,17 @@
+import scala._;
+
+object test {
+
+ def f[a <: java.lang.Object](x: a) = {
+ def print() = java.lang.System.out.println(x);
+ class A() {
+ def g() = {
+ class B() {
+ def h() = print()
+ }
+ new B().h()
+ }
+ }
+ new A().g()
+ }
+} \ No newline at end of file
diff --git a/test/files/pos/localmodules.scala b/test/files/pos/localmodules.scala
new file mode 100644
index 0000000000..8ed34f455a
--- /dev/null
+++ b/test/files/pos/localmodules.scala
@@ -0,0 +1,22 @@
+package test;
+
+object main {
+
+ class a {
+
+ object b {
+
+ trait c {}
+ def foo(x: c): c = { System.out.println("foo(" + x + ")"); x }
+
+ }
+
+ def bar(x: b.c): a.this.b.c = { b.foo(x); x }
+ }
+
+ def main(args: Array[String]) = {
+ val aa = new a;
+ val xx: aa.b.c = null;
+ System.out.println(aa.bar(xx));
+ }
+}
diff --git a/test/files/pos/matthias1.scala b/test/files/pos/matthias1.scala
new file mode 100644
index 0000000000..a923a529fe
--- /dev/null
+++ b/test/files/pos/matthias1.scala
@@ -0,0 +1,15 @@
+class A() {
+ class B() {
+ def foo(x: B) = 0
+ }
+}
+object test {
+ def main = {
+ val a = new A();
+ val b = new a.B();
+ val c = new a.B();
+ val d = b.foo(c);
+ ()
+ }
+}
+
diff --git a/test/files/pos/matthias3.scala b/test/files/pos/matthias3.scala
new file mode 100644
index 0000000000..6e86afeca6
--- /dev/null
+++ b/test/files/pos/matthias3.scala
@@ -0,0 +1,13 @@
+
+abstract class A() {
+ val y: A;
+}
+class B() extends A() {
+ val x = this;
+ val y: x.type = x;
+}
+abstract class C() {
+ val b: B = new B();
+ val a: A { val y: b.type };
+}
+
diff --git a/test/files/pos/matthias4.scala b/test/files/pos/matthias4.scala
new file mode 100644
index 0000000000..c6ce79d682
--- /dev/null
+++ b/test/files/pos/matthias4.scala
@@ -0,0 +1,84 @@
+/*
+object A requires B {
+ B.X getX() {
+ return B.getX();
+ }
+ void setX(B.X x) {}
+}
+object B {
+ class X {}
+ X getX() {
+ return new X();
+ }
+ void setX(X x) {}
+}
+object C requires B {
+ object A;
+ void test() {
+ A.setX(B.getX());
+ }
+}
+*/
+
+trait _a extends Object with _b {
+ val a: _a;
+ val A: A;
+ type A <: a.AObject;
+ trait AObject {
+ def getX(): B.X;
+ def setX(x: B.X): Unit;
+ }
+}
+trait a123 extends Object with _a with _b {
+ val a: this.type = this;
+ val A: A = new A();
+ class A() extends AObject {
+ def getX(): B.X = B.getX();
+ def setX(x: B.X) = B.setX(x);
+ }
+}
+
+trait _b {
+ val b: _b;
+ val B: B;
+ type B <: b.BObject;
+ trait BObject {
+ type X;
+ def getX(): X;
+ def setX(x: X): Unit;
+ }
+}
+abstract class b() extends Object with _b {
+ val b: this.type = this;
+ val B: B = new B();
+ class B() extends BObject {
+ class X() {}
+ def getX(): X = new X();
+ def setX(x: X) = ();
+ }
+}
+
+trait _m {
+ val m: _m;
+ val M: M;
+ type M <: m.MObject;
+ trait MObject {}
+}
+abstract class m() extends Object with _m with _b {
+ val m: this.type = this;
+ val M: M = new M();
+ class M() extends MObject with a123 with Linker {
+ def test() = {
+ val x: B.X = B.getX();
+ A.setX(x);
+ }
+ }
+ trait Linker {
+ val b: m.this.b.type = m.this.b;
+ val B: m.this.B.type = m.this.B;
+ type B = m.this.B;
+ val m: m.this.m.type = m.this.m;
+ val M: m.this.M.type = m.this.M;
+ type M = m.this.M;
+ }
+}
diff --git a/test/files/pos/matthias5.scala b/test/files/pos/matthias5.scala
new file mode 100644
index 0000000000..0dcb7f833d
--- /dev/null
+++ b/test/files/pos/matthias5.scala
@@ -0,0 +1,12 @@
+abstract class A() {
+ val y: A;
+}
+class B() extends A() {
+ val x = this;
+ val y: x.type = x;
+}
+abstract class C() {
+ val b: B = new B();
+ val a: A { val y: b.type };
+}
+
diff --git a/test/files/pos/maxim1.scala b/test/files/pos/maxim1.scala
new file mode 100644
index 0000000000..58916beb8a
--- /dev/null
+++ b/test/files/pos/maxim1.scala
@@ -0,0 +1,5 @@
+object test {
+ def f(x: Int)(y: Int) = x + y;
+ def y: Int => Int = f(2);
+ def main = y(1);
+}
diff --git a/test/files/pos/michel1.scala b/test/files/pos/michel1.scala
new file mode 100644
index 0000000000..f930a682ef
--- /dev/null
+++ b/test/files/pos/michel1.scala
@@ -0,0 +1,9 @@
+class A[Ta] (a : Ta) {
+ def f = 1
+}
+
+trait C {}
+
+class B[Tb] (b : Tb) extends A[Tb] (b) with C {
+ def g = 2
+}
diff --git a/test/files/pos/michel2.scala b/test/files/pos/michel2.scala
new file mode 100644
index 0000000000..e6976b0f40
--- /dev/null
+++ b/test/files/pos/michel2.scala
@@ -0,0 +1,16 @@
+object Test {
+
+ trait A extends Object {
+ def f : Int = 1
+ }
+
+ class B extends Object with A {
+ override def f : Int = super[A].f
+ }
+
+ def main(args: Array[String]) =
+ System.out.println(new B().f);
+}
+
+
+
diff --git a/test/files/pos/michel3.scala b/test/files/pos/michel3.scala
new file mode 100644
index 0000000000..0e85295bfb
--- /dev/null
+++ b/test/files/pos/michel3.scala
@@ -0,0 +1,3 @@
+abstract class A() {
+ val v : Int
+} \ No newline at end of file
diff --git a/test/files/pos/michel4.scala b/test/files/pos/michel4.scala
new file mode 100644
index 0000000000..2390be5d26
--- /dev/null
+++ b/test/files/pos/michel4.scala
@@ -0,0 +1,7 @@
+class A() {
+ val f : Int = 2
+}
+
+class B() extends A() {
+ override val f : Int = super.f
+} \ No newline at end of file
diff --git a/test/files/pos/michel5.scala b/test/files/pos/michel5.scala
new file mode 100644
index 0000000000..345ae04d9d
--- /dev/null
+++ b/test/files/pos/michel5.scala
@@ -0,0 +1,5 @@
+trait A[Ta] { }
+
+class B() extends Object with A[Int] {
+ val x : Int = 2
+} \ No newline at end of file
diff --git a/test/files/pos/michel6.scala b/test/files/pos/michel6.scala
new file mode 100644
index 0000000000..b32e8bed75
--- /dev/null
+++ b/test/files/pos/michel6.scala
@@ -0,0 +1,6 @@
+object M {
+ def f(x: Int): Unit = {}
+
+ def g(): Int => Unit =
+ if (0 == 0) f else g()
+ }
diff --git a/test/files/pos/mixins.scala b/test/files/pos/mixins.scala
new file mode 100644
index 0000000000..2b403a25e8
--- /dev/null
+++ b/test/files/pos/mixins.scala
@@ -0,0 +1,22 @@
+package mixins;
+abstract class Super {
+ def foo: int;
+}
+trait Mixin extends Super {
+ abstract override def foo = super.foo;
+}
+trait MixinSub extends Super with Mixin {
+ abstract override def foo: int = super.foo;
+}
+trait MixinSubSub extends MixinSub {
+ abstract override def foo = super.foo;
+}
+class Sub extends Super {
+ def foo: int = 1
+}
+class Base extends Sub with MixinSubSub {
+ override def foo = super.foo;
+}
+trait Mixin1 extends Sub with MixinSubSub {}
+class Base1 extends Mixin1 {}
+
diff --git a/test/files/pos/modules.scala b/test/files/pos/modules.scala
new file mode 100644
index 0000000000..8168a42d3c
--- /dev/null
+++ b/test/files/pos/modules.scala
@@ -0,0 +1,14 @@
+package scala {
+
+ object a {
+
+ object b {
+
+ trait c {}
+ def foo(x: c): c = bar(x)
+
+ }
+
+ def bar(x: b.c): b.c = x
+ }
+}
diff --git a/test/files/pos/modules1.scala b/test/files/pos/modules1.scala
new file mode 100644
index 0000000000..3da14af4fe
--- /dev/null
+++ b/test/files/pos/modules1.scala
@@ -0,0 +1,14 @@
+package scala {
+
+ object a {
+
+ object b {
+
+ trait c {}
+ def foo(x: c): c = bar(x)
+
+ }
+
+ def bar(x: b.c): a.b.c = { b.foo(x); x }
+ }
+}
diff --git a/test/files/pos/moduletrans.scala b/test/files/pos/moduletrans.scala
new file mode 100644
index 0000000000..51538417ed
--- /dev/null
+++ b/test/files/pos/moduletrans.scala
@@ -0,0 +1,8 @@
+object m1 {
+
+ class m() {
+ def f() = 5
+ }
+ final val m: m = new m()
+
+}
diff --git a/test/files/pos/nested.scala b/test/files/pos/nested.scala
new file mode 100644
index 0000000000..b038fce39d
--- /dev/null
+++ b/test/files/pos/nested.scala
@@ -0,0 +1,29 @@
+// A non-trivial example of nested classes (mostly to test
+// ExplicitOuterClasses).
+
+class A(pa : Int) {
+ def a1 = pa;
+ class B(pb : Int) {
+ def b1 = pa+pb+a1;
+ class C(pc : Int) extends A(b1) {
+ def c1 = pc+pb+pa
+ }
+ val c1 = new C(66)
+ }
+}
+
+trait M {
+ val x : Int;
+ def m1 = x
+}
+
+class A1(x0 : Int) extends A(x0) with M {
+ val x = x0;
+ class D() extends B(42) {
+ val c2 = new C(66);
+ class E() extends C(5) {
+ def e1 = c1+b1+a1;
+ def e2 = new D();
+ }
+ }
+}
diff --git a/test/files/pos/null.scala b/test/files/pos/null.scala
new file mode 100644
index 0000000000..59f88ee0e0
--- /dev/null
+++ b/test/files/pos/null.scala
@@ -0,0 +1,3 @@
+object M {
+ val x: Boolean = null == null;
+} \ No newline at end of file
diff --git a/test/files/pos/ok.lst b/test/files/pos/ok.lst
new file mode 100644
index 0000000000..d9065d1c25
--- /dev/null
+++ b/test/files/pos/ok.lst
@@ -0,0 +1,138 @@
+304.scala
+A.scala
+List1.scala
+MailBox.scala
+S1.scala
+S3.scala
+S5.scala
+S8.scala
+X.scala
+Z.scala
+abstract.scala
+aliases.scala
+arrays2.scala
+attributes.scala
+bug082.scala
+bug1.scala
+bug115.scala
+bug116.scala
+bug119.scala
+bug121.scala
+bug124.scala
+bug151.scala
+bug159.scala
+bug160.scala
+bug17.scala
+bug175.scala
+bug177.scala
+bug183.scala
+bug193.scala
+bug2.scala
+bug20.scala
+bug201.scala
+bug204.scala
+bug210.scala
+bug211.scala
+bug229.scala
+bug245.scala
+bug267.scala
+bug287.scala
+bug289.scala
+bug29.scala
+bug295.scala
+bug30.scala
+bug304.scala
+bug31.scala
+bug318.scala
+bug32.scala
+bug342.scala
+bug348plus.scala
+bug359.scala
+bug36.scala
+bug360.scala
+bug361.scala
+bug372.scala
+bug39.scala
+bug49.scala
+bug53.scala
+bug54.scala
+bug61.scala
+bug64.scala
+bug66.scala
+bug68.scala
+bug69.scala
+bug76.scala
+bug81.scala
+bug91.scala
+bug93.scala
+cls.scala
+cls1.scala
+clsrefine.scala
+compile.scala
+compound.scala
+constfold.scala
+eta.scala
+expressions-current.scala
+gui.scala
+imports.scala
+infer.scala
+infer2.scala
+lambda.scala
+lambdalift.scala
+lambdalift1.scala
+localmodules.scala
+matthias1.scala
+matthias3.scala
+matthias4.scala
+matthias5.scala
+maxim1.scala
+michel1.scala
+michel2.scala
+michel3.scala
+michel4.scala
+michel5.scala
+michel6.scala
+mixins.scala
+modules.scala
+modules1.scala
+moduletrans.scala
+nested.scala
+null.scala
+orderedpoints.scala
+override.scala
+partialfun.scala
+patterns.scala
+patterns1.scala
+patterns2.scala
+patterns3.scala
+philippe1.scala
+philippe2.scala
+philippe3.scala
+philippe4.scala
+pmbug.scala
+propagate.scala
+rebind.scala
+refine.scala
+reftest.scala
+scoping1.scala
+scoping2.scala
+scoping3.scala
+seqtest2.scala
+simplelists.scala
+stable.scala
+strings.scala
+test1.scala
+test2.scala
+test4.scala
+test4a.scala
+test4refine.scala
+test5.scala
+test5refine.scala
+testcast.scala
+thistype.scala
+thistypes.scala
+traits.scala
+valdefs.scala
+viewtest1.scala
+viewtest2.scala
+viewtest3.scala
diff --git a/test/files/pos/orderedpoints.scala b/test/files/pos/orderedpoints.scala
new file mode 100644
index 0000000000..7e56a663fe
--- /dev/null
+++ b/test/files/pos/orderedpoints.scala
@@ -0,0 +1,30 @@
+package test;
+
+class Point1(x: int) extends Object with Ordered[Point1] {
+ val xCoord = x;
+ def compareTo [b >: Point1 <% Ordered[b]](that: b): int = that match {
+ case that1: Point1 => this.xCoord.compareTo(that1.xCoord)
+ case _ => -that.compareTo(this)
+ }
+}
+class Point2(x: int, y: int) extends Point1(x) with Ordered[Point2] {}
+/*
+ val yCoord = y;
+ override def compareTo [b >: Point2 <% Ordered[b]](that: b): int = that match {
+ case that1: Point2 =>
+ val r = super.compareTo(that1);
+ if (r == 0) this.yCoord.compareTo(that1.yCoord) else r
+ case _ => -that.compareTo(this)
+ }
+}
+object Test extends Application {
+ val p1 = new Point1(1);
+ val q1 = new Point1(2);
+ System.out.println(p1 < q1);
+ val p2 = new Point2(1, 2);
+ val q2 = new Point2(1, 3);
+ System.out.println(p2 < q2);
+ System.out.println(p1 < q2);
+ System.out.println(p2 < q1);
+}
+*/
diff --git a/test/files/pos/override.scala b/test/files/pos/override.scala
new file mode 100644
index 0000000000..9f068b8ecd
--- /dev/null
+++ b/test/files/pos/override.scala
@@ -0,0 +1,14 @@
+trait A extends Object {
+ def f = 1;
+ val x: A;
+}
+
+trait B extends Object {
+ def f = 2;
+}
+
+trait C extends Object with A with B {
+ override def f = super[B].f;
+ val a: A;
+ val x: a.type = a;
+}
diff --git a/test/files/pos/partialfun.scala b/test/files/pos/partialfun.scala
new file mode 100644
index 0000000000..21e4d0a096
--- /dev/null
+++ b/test/files/pos/partialfun.scala
@@ -0,0 +1,10 @@
+object partialfun {
+
+ def applyPartial[b](f: PartialFunction[Option[String], b])(x: Option[String]) =
+ if (f.isDefinedAt(x)) f(x) else "<undefined>";
+
+ applyPartial {
+ case Some(xxx) => xxx
+ } (None);
+
+} \ No newline at end of file
diff --git a/test/files/pos/patterns.scala b/test/files/pos/patterns.scala
new file mode 100644
index 0000000000..93907e7d52
--- /dev/null
+++ b/test/files/pos/patterns.scala
@@ -0,0 +1,27 @@
+trait Option[+a] {}
+case class Some[a](x: a) extends Option[a] {
+ override def toString(): String = "Some(" + x + ")";
+ override def equals(that: Any): Boolean = that match {
+ case Some(x) => this.x == x
+ case _ => false
+ }
+ override def hashCode(): scala.Int = getClass().hashCode() * 41 + x.hashCode();
+}
+case object None extends Option[All] {
+ override def toString(): String = "None";
+ override def equals(that: Any) = that match {
+ case None => true
+ case _ => false
+ }
+ override def hashCode(): scala.Int = getClass().hashCode();
+}
+
+object test {
+
+ def println(str: String): Unit = java.lang.System.out.println(str);
+
+ def print(opt: Option[String]) = opt match {
+ case Some(x) => println(x);
+ case None => println("nothing");
+ }
+}
diff --git a/test/files/pos/patterns1.scala b/test/files/pos/patterns1.scala
new file mode 100644
index 0000000000..fa542e7b06
--- /dev/null
+++ b/test/files/pos/patterns1.scala
@@ -0,0 +1,13 @@
+trait Option[+a] {}
+case class Some[a](x: a) extends Option[a];
+case object None extends Option[All];
+
+object test {
+
+ def println(str: String): Unit = java.lang.System.out.println(str);
+
+ def print(opt: Option[String]) = opt match {
+ case Some(x) => println(x);
+ case None => println("nothing");
+ }
+} \ No newline at end of file
diff --git a/test/files/pos/patterns2.scala b/test/files/pos/patterns2.scala
new file mode 100644
index 0000000000..93dcedbcf8
--- /dev/null
+++ b/test/files/pos/patterns2.scala
@@ -0,0 +1,16 @@
+trait Option {}
+case class Choice(a: Option, b: Option) extends Option;
+case class Some(x: java.lang.String) extends Option;
+case object None extends Option;
+
+object test {
+
+ def f(opt: Option) = opt match {
+ case Choice(Some("one"), Some(x)) => 1;
+ case Choice(Some("two"), None) => 1;
+ case Choice(y, Some("two")) => 2;
+ case Choice(Some(z), a) => 3;
+ case Some(b) => 4;
+ case None => 5;
+ }
+} \ No newline at end of file
diff --git a/test/files/pos/patterns3.scala b/test/files/pos/patterns3.scala
new file mode 100644
index 0000000000..001bd8989f
--- /dev/null
+++ b/test/files/pos/patterns3.scala
@@ -0,0 +1,5 @@
+object M {
+
+ val Tuple2(Tuple2(x, y), _) = Tuple2(Tuple2(1, 2), 3);
+
+}
diff --git a/test/files/pos/philippe1.scala b/test/files/pos/philippe1.scala
new file mode 100644
index 0000000000..3cace0e116
--- /dev/null
+++ b/test/files/pos/philippe1.scala
@@ -0,0 +1,8 @@
+object test {
+ def id[a](xs: Array[a]): Array[a] = xs;
+
+ def main(args: Array[String]): Unit = {
+ val res: Array[String] = id(args);
+ ()
+ }
+} \ No newline at end of file
diff --git a/test/files/pos/philippe2.scala b/test/files/pos/philippe2.scala
new file mode 100644
index 0000000000..0dc896ebfd
--- /dev/null
+++ b/test/files/pos/philippe2.scala
@@ -0,0 +1,7 @@
+
+import scala._;
+class m1() {
+ def n() = 0;
+ def foo(i: Int)(j: Int): Unit = ();
+ val bar = foo(n());
+}
diff --git a/test/files/pos/philippe3.scala b/test/files/pos/philippe3.scala
new file mode 100644
index 0000000000..9442583997
--- /dev/null
+++ b/test/files/pos/philippe3.scala
@@ -0,0 +1,40 @@
+
+class Foo(x: Int) {}
+case class Bar(y: Int) extends Foo(y);
+
+
+trait T {}
+trait U {}
+class C() {}
+
+
+trait T1;
+trait T2 {}
+trait T5 extends T;
+trait T6 extends T {}
+trait T7 extends T with U;
+trait T8 extends T with U {}
+
+class C1();
+class C2() {}
+class C5() extends C();
+class C6() extends C() {}
+class C7() extends C() with U;
+class C8() extends C() with U {}
+
+case class D1();
+case class D2() {}
+case class D5() extends C();
+case class D6() extends C() {}
+case class D7() extends C() with U;
+case class D8() extends C() with U {}
+
+object M1;
+object M2 {}
+object M5 extends C();
+object M6 extends C() {}
+object M7 extends C() with U;
+object M8 extends C() with U {}
+
+
+
diff --git a/test/files/pos/philippe4.scala b/test/files/pos/philippe4.scala
new file mode 100644
index 0000000000..c9b1cdaeb0
--- /dev/null
+++ b/test/files/pos/philippe4.scala
@@ -0,0 +1,3 @@
+trait Foo[t <: Foo[t]]: t {
+ def foo(that: t): Boolean;
+}
diff --git a/test/files/pos/pmbug.scala b/test/files/pos/pmbug.scala
new file mode 100644
index 0000000000..7d94e7a8bd
--- /dev/null
+++ b/test/files/pos/pmbug.scala
@@ -0,0 +1,8 @@
+object Test {
+
+ def flatten[a](l: List[List[a]]): List[a] = l match {
+ case Nil => Nil
+ case head :: tail => head ::: flatten(tail)
+ }
+
+}
diff --git a/test/files/pos/propagate.scala b/test/files/pos/propagate.scala
new file mode 100644
index 0000000000..84f4f5d6d2
--- /dev/null
+++ b/test/files/pos/propagate.scala
@@ -0,0 +1,17 @@
+class C {
+
+ def f[a](x: a): a = {
+
+ class D() {
+ def g(x: a) = f(x): a;
+ }
+
+ new D().g(x);
+
+ }
+
+}
+
+
+
+
diff --git a/test/files/pos/rebind.scala b/test/files/pos/rebind.scala
new file mode 100644
index 0000000000..3b7b27ac34
--- /dev/null
+++ b/test/files/pos/rebind.scala
@@ -0,0 +1,13 @@
+abstract class Foo {
+ class Inner {
+ def inner: int = 1;
+ }
+ def foo: Inner;
+}
+trait Bar {
+ type Inner;
+ def foo: Inner = foo;
+}
+class Test extends Foo with Bar {
+ System.out.println(foo.inner);
+}
diff --git a/test/files/pos/refine.scala b/test/files/pos/refine.scala
new file mode 100644
index 0000000000..5d175f26f5
--- /dev/null
+++ b/test/files/pos/refine.scala
@@ -0,0 +1,6 @@
+object test {
+
+ val x: Object { def t(): String } = new Object {
+ def t(): String = "1";
+ }
+}
diff --git a/test/files/pos/reftest.scala b/test/files/pos/reftest.scala
new file mode 100644
index 0000000000..f709f70897
--- /dev/null
+++ b/test/files/pos/reftest.scala
@@ -0,0 +1,4 @@
+import scala._;
+object test {
+ val x: Ref[Int] = new Ref(1);
+} \ No newline at end of file
diff --git a/test/files/pos/scall.bat b/test/files/pos/scall.bat
new file mode 100755
index 0000000000..ba9ce6f131
--- /dev/null
+++ b/test/files/pos/scall.bat
@@ -0,0 +1,50 @@
+scalac -prompt A.scala;
+scalac -prompt IntSet.scala;
+scalac -prompt List1.scala;
+scalac -prompt Rational.scala;
+scalac -prompt X.scala;
+scalac -prompt Y.scala;
+scalac -prompt Z.scala;
+scalac -prompt abstract.scala;
+scalac -prompt cls.scala;
+scalac -prompt cls1.scala;
+scalac -prompt clsrefine.scala;
+scalac -prompt cours1.scala;
+scalac -prompt cours2.scala;
+scalac -prompt cours2a.scala;
+scalac -prompt cours2b.scala;
+scalac -prompt cours2c.scala;
+scalac -prompt eta.scala;
+scalac -prompt exceptions.scala;
+scalac -prompt imports.scala;
+scalac -prompt lambda.scala;
+scalac -prompt lambdalift.scala;
+scalac -prompt lambdalift1.scala;
+scalac -prompt matthias1.scala;
+scalac -prompt maxim1.scala;
+scalac -prompt michel1.scala;
+scalac -prompt michel2.scala;
+scalac -prompt michel3.scala;
+scalac -prompt michel4.scala;
+scalac -prompt michel5.scala;
+scalac -prompt modules.scala;
+scalac -prompt modules1.scala;
+scalac -prompt moduletrans.scala;
+scalac -prompt nested.scala;
+scalac -prompt override.scala;
+scalac -prompt patterns.scala;
+scalac -prompt patterns2.scala;
+scalac -prompt philippe1.scala;
+scalac -prompt philippe2.scala;
+scalac -prompt reftest.scala;
+scalac -prompt sort1.scala;
+scalac -prompt sqrt.scala;
+scalac -prompt stable.scala;
+scalac -prompt strings.scala;
+scalac -prompt test1.scala;
+scalac -prompt test2.scala;
+scalac -prompt test4.scala;
+scalac -prompt test4a.scala;
+scalac -prompt test4refine.scala;
+scalac -prompt test5.scala;
+scalac -prompt test5refine.scala;
diff --git a/test/files/pos/scoping1.scala b/test/files/pos/scoping1.scala
new file mode 100644
index 0000000000..23daf024fe
--- /dev/null
+++ b/test/files/pos/scoping1.scala
@@ -0,0 +1,12 @@
+object This extends Application {
+ trait A {
+ def foo(): unit;
+ }
+ class C: A {
+ def bar() = this.foo();
+ }
+ class D extends C with A {
+ def foo() = ()
+ }
+ val c: C = new D;
+}
diff --git a/test/files/pos/scoping2.scala b/test/files/pos/scoping2.scala
new file mode 100644
index 0000000000..39f3ef5f0e
--- /dev/null
+++ b/test/files/pos/scoping2.scala
@@ -0,0 +1,14 @@
+object That {
+ trait A {
+ type T <: I;
+ trait I {}
+ }
+ trait B {
+ type T <: J;
+ trait J {}
+ }
+ trait C extends A with B {
+ type T <: I with J;
+ }
+}
+
diff --git a/test/files/pos/scoping3.scala b/test/files/pos/scoping3.scala
new file mode 100644
index 0000000000..4ebc7f6378
--- /dev/null
+++ b/test/files/pos/scoping3.scala
@@ -0,0 +1,20 @@
+object CI {
+ trait TreeDisplay {
+ type TreeNode <: ITreeNode;
+ trait ITreeNode {
+ def display(): unit;
+ }
+ }
+ trait TreeDisplayExp {
+ def getRoot(): TreeNode;
+ type TreeNode <: ITreeNodeExp;
+ trait ITreeNodeExp {}
+ }
+ trait TreeDisplayFinal extends TreeDisplay with TreeDisplayExp {
+ type TreeNode <: ITreeNode with ITreeNodeExp;
+ }
+ abstract class SimpleTreeDisplay: TreeDisplayFinal extends
+TreeDisplay {
+ def display() = { this.getRoot().display(); }
+ }
+}
diff --git a/test/files/pos/seqtest2.scala b/test/files/pos/seqtest2.scala
new file mode 100644
index 0000000000..903b270c95
--- /dev/null
+++ b/test/files/pos/seqtest2.scala
@@ -0,0 +1,13 @@
+object test {
+
+ val b = List(1, 2, 3);
+
+ def main(args: Array[String]) =
+ System.out.println(
+ b match {
+ case List(1, 2, 3) => true;
+ case _ => false;
+ }
+ )
+
+}
diff --git a/test/files/pos/simplelists.scala b/test/files/pos/simplelists.scala
new file mode 100644
index 0000000000..73b04a8762
--- /dev/null
+++ b/test/files/pos/simplelists.scala
@@ -0,0 +1,17 @@
+ abstract class List[+a] {
+ def head: a;
+ def tail: List[a];
+ def cons[b >: a](x: b): List[b] = new Cons[b, a](x, this);
+ }
+
+ object Nil extends List[All] {
+ def error(msg: String): All = throw new java.lang.Error(msg);
+ def head: All = error("Nil.head");
+ def tail: List[All] = error("Nil.tail");
+ }
+
+ class Cons[c, d <: c](x: c, xs: List[d]) extends List[c] {
+ def head: c = x;
+ def tail: List[c] = xs;
+ }
+
diff --git a/test/files/pos/stable.scala b/test/files/pos/stable.scala
new file mode 100644
index 0000000000..267a36fe5c
--- /dev/null
+++ b/test/files/pos/stable.scala
@@ -0,0 +1,11 @@
+trait Base {
+ val x: Int;
+ val y: Int;
+ var z: Int;
+}
+
+class Sub() extends Base {
+ val x: Int = 1;
+ val y: Int = 2;
+ var z: Int = 3;
+}
diff --git a/test/files/pos/strings.scala b/test/files/pos/strings.scala
new file mode 100644
index 0000000000..3bf40e3dda
--- /dev/null
+++ b/test/files/pos/strings.scala
@@ -0,0 +1,6 @@
+// martin 1-3-2002: it seems there is a problem with the way Serializable is loaded.
+object test {
+
+ def f() = "hello".concat("world");
+
+}
diff --git a/test/files/pos/test1.scala b/test/files/pos/test1.scala
new file mode 100644
index 0000000000..a36d2436ec
--- /dev/null
+++ b/test/files/pos/test1.scala
@@ -0,0 +1,5 @@
+object test {
+
+ def f() = 5;
+
+}
diff --git a/test/files/pos/test2.scala b/test/files/pos/test2.scala
new file mode 100644
index 0000000000..fe36d07f1b
--- /dev/null
+++ b/test/files/pos/test2.scala
@@ -0,0 +1,5 @@
+import scala._;
+object test2 {
+ def f(x: Int): Int = 'a';
+ def g(x: Int) = f(f(x));
+} \ No newline at end of file
diff --git a/test/files/pos/test4.scala b/test/files/pos/test4.scala
new file mode 100644
index 0000000000..4fe65a8f19
--- /dev/null
+++ b/test/files/pos/test4.scala
@@ -0,0 +1,47 @@
+package test;
+
+trait C {}
+trait D {}
+trait E {}
+
+object test {
+ def c: C = c;
+ def d: D = d;
+ def e: E = e;
+}
+
+import test._;
+
+trait S extends ooo.I[D] {
+ def bar: E = foo(c,d);
+}
+
+class O[X]() {
+ trait I[Y] {
+ def foo(x: X, y: Y): E = e;
+ }
+ val i:I[E] = null;
+ val j:I[X] = null;
+}
+
+object ooo extends O[C]() {
+
+ def main = {
+ val s: S = null;
+ import s._;
+ foo(c,d);
+ ooo.i.foo(c,e);
+ ooo.j.foo(c,c);
+ bar
+ }
+}
+
+class Main() {
+ val s: S = null;
+ import s._;
+ foo(c,d);
+ ooo.i.foo(c,e);
+ ooo.j.foo(c,c);
+ bar;
+}
+
diff --git a/test/files/pos/test4a.scala b/test/files/pos/test4a.scala
new file mode 100644
index 0000000000..ada0ba4e5f
--- /dev/null
+++ b/test/files/pos/test4a.scala
@@ -0,0 +1,16 @@
+trait C {}
+
+class O[X]() {
+ trait I[Y] {
+ def foo(y: Y): Y = y;
+ }
+ val j:I[X] = null;
+}
+
+object o extends O[C]() {
+ def c: C = c;
+ def main = {
+ o.j.foo(c);
+ }
+}
+
diff --git a/test/files/pos/test4refine.scala b/test/files/pos/test4refine.scala
new file mode 100644
index 0000000000..6710962934
--- /dev/null
+++ b/test/files/pos/test4refine.scala
@@ -0,0 +1,49 @@
+trait C {}
+trait D {}
+trait E {}
+
+object test {
+ def c: C = c;
+ def d: D = d;
+ def e: E = e;
+}
+
+import test._;
+
+trait S extends o.I {
+ type Y = D;
+ def bar: E = foo(c,d);
+}
+
+abstract class O() {
+ type X;
+ abstract trait I {
+ type Y;
+ def foo(x: X, y: Y): E = e;
+ }
+ val i:I { type Y = E } = null;
+ val j:I { type Y = X } = null;
+}
+
+object o extends O() {
+ type X = C;
+
+ def main = {
+ val s: S = null;
+ import s._;
+ foo(c,d);
+ o.i.foo(c,e);
+ o.j.foo(c,c);
+ bar
+ }
+}
+
+class Main() {
+ val s: S = null;
+ import s._;
+ foo(c,d);
+ o.i.foo(c,e);
+ o.j.foo(c,c);
+ bar;
+}
+
diff --git a/test/files/pos/test5.scala b/test/files/pos/test5.scala
new file mode 100644
index 0000000000..4dbafc9ac3
--- /dev/null
+++ b/test/files/pos/test5.scala
@@ -0,0 +1,68 @@
+import scala._;
+
+object test {
+
+ trait F[If] {}
+
+ def f[Jf](h: Jf):F[Jf] = f[Jf](h);
+
+ trait G[Ig] {}
+
+ def g[Jg](h: Jg):G[Jg] = g[Jg](h);
+
+ class M[P]() {
+ abstract class I[X]() {
+ // Methods to check the type X and P as seen from instances of I
+ def chk_ix(x: X): Unit = ();
+ def chk_ip(p: P): Unit;
+
+ // Value with type X as seen from instances of I
+ def val_ix: X = val_ix;
+ }
+
+ val i:I[G[P]] = null;
+
+ // Values with types P and i.X as seen from instances of M
+ def val_mp: P = val_mp;
+ def val_mix: G[P] = g[P](val_mp);
+ }
+
+ class N[Q]() extends M[F[Q]]() {
+ val j:J[G[Q]] = null;
+
+ abstract class J[Y]() extends I[G[Y]]() {
+ // Values with types Y and X as seen from instances of J
+ def val_jy: Y = val_jy;
+ def val_jx: G[Y] = g[Y](val_jy);
+
+ // Check type P
+ chk_ip(val_mp);
+ chk_ip(val_np);
+ }
+
+ // Values with types Q, X.P, i.X, j.Y and j.X as seen from instances of N
+ def val_nq: Q = val_nq;
+ def val_np: F[Q] = f[Q](val_nq);
+ def val_nix: G[F[Q]] = g[F[Q]](val_np);
+ def val_njy: G[Q] = g[Q](val_nq);
+ def val_njx: G[G[Q]] = g[G[Q]](val_njy);
+
+ // Check type i.P
+ i.chk_ip(val_mp);
+ i.chk_ip(val_np);
+
+ // Check type j.P
+ j.chk_ip(val_mp);
+ j.chk_ip(val_np);
+
+ // Check type i.X
+ i.chk_ix(i.val_ix);
+ i.chk_ix(val_mix);
+ i.chk_ix(val_nix);
+
+ // Check j.X
+ j.chk_ix(j.val_ix);
+ j.chk_ix(j.val_jx);
+ j.chk_ix(val_njx);
+ }
+}
diff --git a/test/files/pos/test5refine.scala b/test/files/pos/test5refine.scala
new file mode 100644
index 0000000000..95670faa05
--- /dev/null
+++ b/test/files/pos/test5refine.scala
@@ -0,0 +1,75 @@
+import scala._;
+
+object test {
+
+ abstract trait F { type If; }
+
+ def f[Jf](h: Jf):F { type If = Jf } = f[Jf](h);
+
+ abstract trait G { type Ig; }
+
+ def g[Jg](h: Jg):G { type Ig = Jg } = g[Jg](h);
+
+ abstract class M() {
+ type P;
+ abstract class I() {
+ type X;
+
+ // Methods to check the type X and P as seen from instances of I
+ def chk_ix(x: X): Unit = {}
+ def chk_ip(p: P): Unit = {}
+
+ // Value with type X as seen from instances of I
+ def val_ix: X = val_ix;
+ }
+
+ val i: I { type X = G { type Ig = P } } = null;
+
+ // Values with types P and i.X as seen from instances of M
+ def val_mp: P = val_mp;
+ def val_mix: G { type Ig = P } = g[P](val_mp);
+ }
+
+ abstract class N() extends M() {
+ type Q;
+ type P = F { type If = Q };
+ val j:J { type Y = G { type Ig = Q } } = null;
+
+ abstract class J() extends I() {
+ type Y;
+ type X = G { type Ig = Y; };
+ // Values with types Y and X as seen from instances of J
+ def val_jy: Y = val_jy;
+ def val_jx: G { type Ig = Y; } = g[Y](val_jy);
+
+ // Check type P
+ chk_ip(val_mp);
+ chk_ip(val_np);
+ }
+
+ // Values with types Q, X.P, i.X, j.Y and j.X as seen from instances of N
+ def val_nq: Q = val_nq;
+ def val_np: F { type If = Q } = f[Q](val_nq);
+ def val_nix: G { type Ig = F { type If = Q } } = g[F { type If = Q }](val_np);
+ def val_njy: G { type Ig = Q; } = g[Q](val_nq);
+ def val_njx: G { type Ig = G { type Ig = Q }} = g[G { type Ig = Q; }](val_njy);
+
+ // Check type i.P
+ i.chk_ip(val_mp);
+ i.chk_ip(val_np);
+
+ // Check type j.P
+ j.chk_ip(val_mp);
+ j.chk_ip(val_np);
+
+ // Check type i.X
+ i.chk_ix(i.val_ix);
+ i.chk_ix(val_mix);
+ i.chk_ix(val_nix);
+
+ // Check j.X
+ j.chk_ix(j.val_ix);
+ j.chk_ix(j.val_jx);
+ j.chk_ix(val_njx);
+ }
+} \ No newline at end of file
diff --git a/test/files/pos/testcast.scala b/test/files/pos/testcast.scala
new file mode 100644
index 0000000000..631b2c922b
--- /dev/null
+++ b/test/files/pos/testcast.scala
@@ -0,0 +1,26 @@
+package test;
+
+class A;
+
+class B extends A {
+ def foo: int = 1;
+}
+
+object B {
+ def view(x: B): B1 = null;
+}
+
+class B1 {
+ def bar: int = 1
+}
+
+object C {
+ implicit def view(x: A): B1 = null;
+}
+object Test {
+ import C.view;
+
+ val b: B = null;
+
+ System.out.println(b.bar);
+}
diff --git a/test/files/pos/thistype.scala b/test/files/pos/thistype.scala
new file mode 100644
index 0000000000..8c0ba209be
--- /dev/null
+++ b/test/files/pos/thistype.scala
@@ -0,0 +1,14 @@
+object Test {
+
+ class Ctl {
+ def enable: this.type = { System.out.println("enable"); this }
+ }
+
+ class MouseCtl extends Ctl {
+ def mouseDown(x: int, y: int): unit = { System.out.println("mouse down"); }
+ }
+
+ def main(args: Array[String]) =
+ new MouseCtl().enable.mouseDown(1, 2);
+
+}
diff --git a/test/files/pos/thistypes.scala b/test/files/pos/thistypes.scala
new file mode 100644
index 0000000000..4a68ba3e65
--- /dev/null
+++ b/test/files/pos/thistypes.scala
@@ -0,0 +1,8 @@
+trait B {
+ trait I {}
+ def foo: B.this.I;
+}
+
+trait C extends B {
+ def foo: C.this.I;
+} \ No newline at end of file
diff --git a/test/files/pos/traits.scala b/test/files/pos/traits.scala
new file mode 100644
index 0000000000..5fdf4b342e
--- /dev/null
+++ b/test/files/pos/traits.scala
@@ -0,0 +1,42 @@
+object Test {
+ type Color = int;
+ trait Shape {
+ override def equals(other: Any) = true;
+ }
+ trait Bordered extends Shape {
+ val thickness: int;
+ override def equals(other: Any) = other match {
+ case that: Bordered => this.thickness == that.thickness;
+ case _ => false
+ }
+ }
+ trait Colored extends Shape {
+ val color: Color;
+ override def equals(other: Any) = other match {
+ case that: Colored => this.color == that.color;
+ case _ => false
+ }
+ }
+ trait BorderedColoredShape extends Shape with Bordered with Colored {
+ override def equals(other: Any) = other match {
+ case that: BorderedColoredShape =>
+ super.equals(that) &&
+ super[Bordered].equals(that) &&
+ super[Colored].equals(that)
+ case _ => false
+ }
+ }
+
+ val bcs1 = new BorderedColoredShape {
+ val thickness = 1;
+ val color = 0;
+ }
+ val bcs2 = new BorderedColoredShape {
+ val thickness = 2;
+ val color = 0;
+ }
+ System.out.println(bcs1 == bcs1);
+ System.out.println(bcs1 == bcs2);
+}
+
+
diff --git a/test/files/pos/valdefs.scala b/test/files/pos/valdefs.scala
new file mode 100644
index 0000000000..85ffa132b7
--- /dev/null
+++ b/test/files/pos/valdefs.scala
@@ -0,0 +1,16 @@
+object test {
+
+ abstract class Base() {
+ val x: String;
+ val y = 1.0;
+ }
+
+ case class Sub() extends Base() {
+ val x = "hello";
+ override val y = 2.0;
+ }
+
+ abstract class Sub2() extends Base() {
+ override val Pair(x, y) = Pair("abc", 2.0);
+ }
+}
diff --git a/test/files/pos/variances.scala b/test/files/pos/variances.scala
new file mode 100644
index 0000000000..7dc56b0225
--- /dev/null
+++ b/test/files/pos/variances.scala
@@ -0,0 +1,8 @@
+abstract class P[+a, +b] { // SLS, Example 4.4.2
+ def fst: a;
+ def snd: b
+}
+
+trait Vector[+a] { // SLS, Example 4.4.3 b)
+ def append[b >: a](x: Vector[b]): Vector[b]
+}
diff --git a/test/files/pos/viewtest1.scala b/test/files/pos/viewtest1.scala
new file mode 100644
index 0000000000..0a59fdad58
--- /dev/null
+++ b/test/files/pos/viewtest1.scala
@@ -0,0 +1,41 @@
+package test;
+
+trait Ordered[a] {
+ def < (x: a): boolean;
+}
+
+object O {
+ implicit def view (x: String): Ordered[String] = new Ordered[String] {
+ def < (y: String) = x.compareTo(y) < 0;
+ }
+}
+
+object Empty extends Tree[All];
+case class Node[c <% Ordered[c]](elem: c, l: Tree[c], r: Tree[c]) extends Tree[c];
+
+trait Tree[+a <% Ordered[a]] {
+ def insert[b >: a <% Ordered[b]](x: b): Tree[b] = this match {
+ case Empty => new Node(x, Empty, Empty)
+ case Node(elem, l, r) =>
+ if (x == elem) this
+ else if (x < elem) Node(elem, l insert x, r)
+ else Node(elem, l, r insert x);
+ }
+ def elements: List[a] = this match {
+ case Empty => List()
+ case Node(elem, l, r) =>
+ l.elements ::: List(elem) ::: r.elements
+ }
+}
+
+object Test {
+ import O.view;
+
+ def main(args: Array[String]) = {
+ var t: Tree[String] = Empty;
+ for (val s <- args) {
+ t = t insert s
+ }
+ System.out.println(t.elements)
+ }
+}
diff --git a/test/files/pos/viewtest2.scala b/test/files/pos/viewtest2.scala
new file mode 100644
index 0000000000..1958696c1f
--- /dev/null
+++ b/test/files/pos/viewtest2.scala
@@ -0,0 +1,117 @@
+package test;
+
+/** A trait for totally ordered data.
+ */
+trait Ordered[+a] {
+
+ /** Result of comparing `this' with operand `that'.
+ * returns `x' where
+ * x < 0 iff this < that
+ * x == 0 iff this == that
+ * x > 0 iff this > that
+ */
+ def compareTo [b >: a <% Ordered[b]](that: b): int;
+
+ def < [b >: a <% Ordered[b]](that: b): boolean = (this compareTo that) < 0;
+
+ def > [b >: a <% Ordered[b]](that: b): boolean = (this compareTo that) > 0;
+
+ def <= [b >: a <% Ordered[b]](that: b): boolean = (this compareTo that) <= 0;
+
+ def >= [b >: a <% Ordered[b]](that: b): boolean = (this compareTo that) >= 0;
+}
+
+
+object O {
+
+ implicit def view1(x: String): Ordered[String] = new Ordered[String] {
+ def compareTo [b >: String <% Ordered[b]](y: b): int = y match {
+ case y1: String => x compareTo y1;
+ case _ => -(y compareTo x)
+ }
+ }
+ implicit def view2(x: char): Ordered[char] = new Ordered[char] {
+ def compareTo [b >: char <% Ordered[b]](y: b): int = y match {
+ case y1: char => x - y1;
+ case _ => -(y compareTo x)
+ }
+ }
+
+ implicit def view3[a <% Ordered[a]](x: List[a]): Ordered[List[a]] =
+ new Ordered[List[a]] {
+ def compareTo [b >: List[a] <% Ordered[b]](y: b): int = y match {
+ case y1: List[a] => compareLists(x, y1);
+ case _ => -(y compareTo x)
+ }
+ private def compareLists(xs: List[a], ys: List[a]): int = {
+ if (xs.isEmpty && ys.isEmpty) 0
+ else if (xs.isEmpty) -1
+ else if (ys.isEmpty) 1
+ else {
+ val s = xs.head compareTo ys.head;
+ if (s != 0) s
+ else compareLists(xs.tail, ys.tail)
+ }
+ }
+ }
+
+ implicit def view4[a](x: a): a = x;
+}
+
+trait Tree[+a <% Ordered[a]] {
+ def insert[b >: a <% Ordered[b]](x: b): Tree[b];
+ def elements: List[a]
+}
+
+object Empty extends Tree[All] {
+ def insert[b >: All <% Ordered[b]](x: b): Tree[b] = new Node(x, Empty, Empty);
+ def elements: List[All] = List();
+}
+
+class Node[a <% Ordered[a]](elem: a, l: Tree[a], r: Tree[a]) extends Tree[a] {
+ def insert[b >: a <% Ordered[b]](x: b): Tree[b] =
+ if (x == elem) this
+ else if (x < elem) new Node(elem, l insert x, r)
+ else new Node(elem, l, r insert x);
+ def elements: List[a] =
+ l.elements ::: List(elem) ::: r.elements
+}
+
+case class Str(elem: String) extends Ordered[Str] {
+ def compareTo[b >: Str <% Ordered[b]](that: b): int = that match {
+ case that1: Str => this.elem compareTo that1.elem
+ case _ => -(that compareTo this)
+ }
+}
+
+object Test {
+ import O._;
+
+ private def toCharList(s: String): List[Char] =
+ if (s.length() == 0) List()
+ else s.charAt(0) :: toCharList(s.substring(1));
+
+ def main(args: Array[String]) = {
+ {
+ var t: Tree[String] = Empty;
+ for (val s <- args) {
+ t = t insert s
+ }
+ System.out.println(t.elements)
+ }
+ {
+ var t: Tree[Str] = Empty;
+ for (val s <- args) {
+ t = t insert Str(s)
+ }
+ System.out.println(t.elements)
+ }
+ {
+ var t: Tree[List[char]] = Empty;
+ for (val s <- args) {
+ t = t insert toCharList(s)
+ }
+ System.out.println(t.elements)
+ }
+ }
+}
diff --git a/test/files/pos/viewtest3.scala b/test/files/pos/viewtest3.scala
new file mode 100644
index 0000000000..89e32e48a8
--- /dev/null
+++ b/test/files/pos/viewtest3.scala
@@ -0,0 +1,59 @@
+package testview;
+
+trait Tree[+a <% Ordered[a]] {
+ def insert[b >: a <% Ordered[b]](x: b): Tree[b];
+ def elements: List[a]
+}
+
+object Empty extends Tree[All] {
+ def insert[b >: All <% Ordered[b]](x: b): Tree[b] = new Node(x, Empty, Empty);
+ def elements: List[All] = List();
+}
+
+class Node[a <% Ordered[a]](elem: a, l: Tree[a], r: Tree[a]) extends Tree[a] {
+ def insert[b >: a <% Ordered[b]](x: b): Tree[b] =
+ if (x == elem) this
+ else if (x < elem) new Node(elem, l insert x, r)
+ else new Node(elem, l, r insert x);
+ def elements: List[a] =
+ l.elements ::: List(elem) ::: r.elements
+}
+
+case class Str(elem: String) extends Ordered[Str] {
+ def compareTo[b >: Str <% Ordered[b]](that: b): int = that match {
+ case that1: Str => this.elem compareTo that1.elem
+ case _ => -(that compareTo this)
+ }
+}
+
+object Test {
+// import O.view;
+
+ private def toCharList(s: String): List[Char] =
+ if (s.length() == 0) List()
+ else s.charAt(0) :: toCharList(s.substring(1));
+
+ def main(args: Array[String]) = {
+ {
+ var t: Tree[String] = Empty;
+ for (val s <- args) {
+ t = t insert s
+ }
+ System.out.println(t.elements)
+ }
+ {
+ var t: Tree[Str] = Empty;
+ for (val s <- args) {
+ t = t insert Str(s)
+ }
+ System.out.println(t.elements)
+ }
+ {
+ var t: Tree[List[char]] = Empty;
+ for (val s <- args) {
+ t = t insert toCharList(s)
+ }
+ System.out.println(t.elements)
+ }
+ }
+}
diff --git a/test/files/run/Course-2002-01.check b/test/files/run/Course-2002-01.check
new file mode 100644
index 0000000000..17b30bf3c2
--- /dev/null
+++ b/test/files/run/Course-2002-01.check
@@ -0,0 +1,34 @@
+232
+667
+11
+10
+62.8318
+62.8318
+62.8318
+4.0
+81.0
+256.0
+25.0
+1
+737.0
+1.0
+0.0
+1.0
+76.0
+1.4142156862745097
+1.7321428571428572
+2.0000000929222947
+1.4142156862745097
+1.7321428571428572
+2.0000000929222947
+1.4142156862745097
+1.7321428571428572
+2.0000000929222947
+sqrt(2) = 1.4142135623746899
+sqrt(2) = 1.4142135623746899
+cbrt(2) = 1.2599210500177698
+1
+1 1
+1 2 1
+1 3 3 1
+1 4 6 4 1
diff --git a/test/files/run/Course-2002-01.scala b/test/files/run/Course-2002-01.scala
new file mode 100644
index 0000000000..b31d1016fd
--- /dev/null
+++ b/test/files/run/Course-2002-01.scala
@@ -0,0 +1,240 @@
+//############################################################################
+// Programmation IV - 2002 - Week 01
+//############################################################################
+// $Id$
+
+object M0 {
+
+ //##########################################################################
+
+ Console.println(87 + 145);
+ Console.println(1000 - 333);
+ Console.println(5 + 2 * 3);
+
+ //##########################################################################
+
+ def size = 2;
+ def pi = 3.14159;
+ def radius = 10;
+ def circumference = 2 * pi * radius;
+
+ Console.println(5 * size);
+ Console.println(2 * pi * radius);
+ Console.println(circumference);
+ Console.println((2 * pi) * radius);
+
+ //##########################################################################
+
+ def square(x: Double) = x * x;
+
+ Console.println(square(2));
+ Console.println(square(5 + 4));
+ Console.println(square(square(4)));
+
+ //##########################################################################
+
+ def sumOfSquares(x: Double, y: Double) = square(x) + square(y);
+
+ Console.println(sumOfSquares(3, 2+2));
+
+ //##########################################################################
+
+ def loop: Int = loop;
+ def first(x: Int, y: Int) = x;
+ def constOne(x: Int, y: => Int) = 1;
+
+ Console.println(constOne(1, loop));
+
+ //##########################################################################
+
+ def abs(x: Double) = if (x >= 0) x else -x;
+
+ Console.println(abs(737));
+ Console.println(abs(1));
+ Console.println(abs(0));
+ Console.println(abs(-1));
+ Console.println(abs(-76));
+
+ //##########################################################################
+
+ def sqrtIter0(guess: Double, x: Double): Double =
+ if (isGoodEnough0(guess, x)) guess
+ else sqrtIter0(improve0(guess, x), x);
+
+ def improve0(guess: Double, x: Double) =
+ (guess + x / guess) / 2;
+
+ def isGoodEnough0(guess: Double, x: Double) =
+ abs(square(guess) - x) < 0.001;
+
+ def sqrt0(x: Double) = sqrtIter0(1.0, x);
+
+ Console.println(sqrt0(2));
+ Console.println(sqrt0(3));
+ Console.println(sqrt0(4));
+
+ //##########################################################################
+
+ def sqrt1(x: Double) = {
+ def sqrtIter1(guess: Double, x: Double): Double =
+ if (isGoodEnough1(guess, x)) guess
+ else sqrtIter1(improve1(guess, x), x);
+
+ def improve1(guess: Double, x: Double) =
+ (guess + x / guess) / 2;
+
+ def isGoodEnough1(guess: Double, x: Double) =
+ abs(square(guess) - x) < 0.001;
+
+ sqrtIter1(1.0, x)
+ }
+
+ Console.println(sqrt1(2));
+ Console.println(sqrt1(3));
+ Console.println(sqrt1(4));
+
+ //##########################################################################
+
+ def sqrt2(x: Double) = {
+ def sqrtIter2(guess: Double): Double =
+ if (isGoodEnough2(guess)) guess
+ else sqrtIter2(improve2(guess));
+
+ def improve2(guess: Double) =
+ (guess + x / guess) / 2;
+
+ def isGoodEnough2(guess: Double) =
+ abs(square(guess) - x) < 0.001;
+
+ sqrtIter2(1.0)
+ }
+
+ Console.println(sqrt2(2));
+ Console.println(sqrt2(3));
+ Console.println(sqrt2(4));
+
+ //##########################################################################
+}
+
+//############################################################################
+
+object M1 {
+ def abs(x: Double) = if (x >= 0) x else -x;
+
+ def sqrt(x: Double): Double = {
+ def sqrtIter(prev: Double, guess: Double): Double =
+ if (isGoodEnough(prev, guess)) guess
+ else sqrtIter(guess, improve(guess));
+
+ def improve(guess: Double) = (guess + x / guess) / 2;
+
+ def isGoodEnough(prev: Double, guess: Double) =
+ abs(prev - guess) / guess < 0.001;
+
+ sqrtIter(1.0, improve(1.0))
+ }
+
+ Console.println("sqrt(2) = " + sqrt(2));
+}
+
+//############################################################################
+
+object M2 {
+ def abs(x: Double) = if (x >= 0) x else -x;
+
+ def sqrt(x:Double):Double = {
+ def sqrtIter(guess:Double):Double = {
+ val next = improve(guess);
+ if (isGoodEnough(guess,next)) next
+ else sqrtIter(next)
+ }
+
+ def improve(guess:Double) = (guess+x/guess)/2;
+
+ def isGoodEnough(prev:Double,guess:Double) = abs(prev-guess)/guess<0.001;
+
+ sqrtIter(1.0)
+ }
+
+ Console.println("sqrt(2) = " + sqrt(2));
+}
+
+//############################################################################
+
+object M3 {
+ def abs(x: Double) = if (x >= 0) x else -x;
+
+ def cbrt(x:Double):Double = {
+ def cbrtIter(guess:Double):Double = {
+ val next = improve(guess);
+ if (isGoodEnough(guess,next)) next
+ else cbrtIter(next)
+ }
+
+ def improve(y:Double) = (x/(y*y)+2*y)/3;
+
+ def isGoodEnough(prev:Double,guess:Double) = abs(prev-guess)/guess<0.001;
+
+ cbrtIter(1.0)
+ }
+
+ Console.println("cbrt(2) = " + cbrt(2));
+}
+
+//############################################################################
+
+object M4 {
+ def pascal(c: Int, l: Int): Int =
+ if (c <= 0 || c >= l) 1
+ else pascal(c - 1, l - 1) + pascal(c, l - 1);
+
+ Console.print(pascal(0,0));
+ Console.println;
+
+ Console.print(pascal(0,1));
+ Console.print(' ');
+ Console.print(pascal(1,1));
+ Console.println;
+
+ Console.print(pascal(0,2));
+ Console.print(' ');
+ Console.print(pascal(1,2));
+ Console.print(' ');
+ Console.print(pascal(2,2));
+ Console.println;
+
+ Console.print(pascal(0,3));
+ Console.print(' ');
+ Console.print(pascal(1,3));
+ Console.print(' ');
+ Console.print(pascal(2,3));
+ Console.print(' ');
+ Console.print(pascal(3,3));
+ Console.println;
+
+ Console.print(pascal(0,4));
+ Console.print(' ');
+ Console.print(pascal(1,4));
+ Console.print(' ');
+ Console.print(pascal(2,4));
+ Console.print(' ');
+ Console.print(pascal(3,4));
+ Console.print(' ');
+ Console.print(pascal(4,4));
+ Console.println;
+}
+
+//############################################################################
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ M0;
+ M1;
+ M2;
+ M3;
+ M4;
+ ()
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/Course-2002-02.check b/test/files/run/Course-2002-02.check
new file mode 100644
index 0000000000..7d96950711
--- /dev/null
+++ b/test/files/run/Course-2002-02.check
@@ -0,0 +1,187 @@
+7
+120
+
+10.0
+100.0
+2.083333333333333
+3025.7687714031754
+pi = 3.1659792728432152
+
+10.0
+100.0
+2.083333333333333
+3025.7687714031754
+pi = 3.1659792728432152
+
+10.0
+100.0
+2.083333333333333
+3025.7687714031754
+pi = 3.1659792728432152
+
+10.0
+100.0
+2.083333333333333
+3025.7687714031754
+pi = 3.1659792728432152
+
+10.0
+100.0
+2.083333333333333
+3025.7687714031754
+pi = 3.1659792728432152
+
+10.0
+100.0
+2.083333333333333
+3025.7687714031754
+pi = 3.1659792728432152
+
+10.0
+100.0
+2.083333333333333
+3025.7687714031754
+pi = 3.1659792728432152
+
+pi = 3.181104885577714
+pi = 3.181104885577714
+
+10.0
+100.0
+2.083333333333333
+3025.7687714031754
+pi = 3.1659792728432152
+pi = 3.181104885577714
+pi = 3.181104885577714
+
+1.5
+1.4166666666666665
+1.4142156862745097
+1.4142135623746899
+sqrt(2) = 1.4142135623746899
+
+1.5
+1.4166666666666665
+1.4142156862745097
+1.4142135623746899
+sqrt(2) = 1.4142135623746899
+
+1 + 2 + .. + 5 = 15.0
+1 * 2 * .. * 5 = 120.0
+
+1^2 + 2^2 + .. + 5^2 = 55.0
+1^2 * 2^2 * .. * 5^2 = 14400.0
+
+factorial(0) = 1.0
+factorial(1) = 1.0
+factorial(2) = 2.0
+factorial(3) = 6.0
+factorial(4) = 24.0
+factorial(5) = 120.0
+
+1 + 2 + .. + 5 = 15.0
+1 * 2 * .. * 5 = 120.0
+
+1^2 + 2^2 + .. + 5^2 = 55.0
+1^2 * 2^2 * .. * 5^2 = 14400.0
+
+factorial(0) = 1.0
+factorial(1) = 1.0
+factorial(2) = 2.0
+factorial(3) = 6.0
+factorial(4) = 24.0
+factorial(5) = 120.0
+
+1 + 2 + .. + 5 = 15.0
+1 * 2 * .. * 5 = 120.0
+
+1^2 + 2^2 + .. + 5^2 = 55.0
+1^2 * 2^2 * .. * 5^2 = 14400.0
+
+factorial(0) = 1.0
+factorial(1) = 1.0
+factorial(2) = 2.0
+factorial(3) = 6.0
+factorial(4) = 24.0
+factorial(5) = 120.0
+
+fib(0) = 0
+fib(1) = 1
+fib(2) = 1
+fib(3) = 2
+fib(4) = 3
+fib(5) = 5
+fib(6) = 8
+fib(7) = 13
+fib(8) = 21
+fib(9) = 34
+fib(0) = 0
+fib(1) = 1
+fib(2) = 1
+fib(3) = 2
+fib(4) = 3
+fib(5) = 5
+fib(6) = 8
+fib(7) = 13
+fib(8) = 21
+fib(9) = 34
+power(0,0) = 1.0
+power(0,1) = 0.0
+power(0,2) = 0.0
+power(0,3) = 0.0
+power(0,4) = 0.0
+power(0,5) = 0.0
+power(0,6) = 0.0
+power(0,7) = 0.0
+power(0,8) = 0.0
+
+power(1,0) = 1.0
+power(1,1) = 1.0
+power(1,2) = 1.0
+power(1,3) = 1.0
+power(1,4) = 1.0
+power(1,5) = 1.0
+power(1,6) = 1.0
+power(1,7) = 1.0
+power(1,8) = 1.0
+
+power(2,0) = 1.0
+power(2,1) = 2.0
+power(2,2) = 4.0
+power(2,3) = 8.0
+power(2,4) = 16.0
+power(2,5) = 32.0
+power(2,6) = 64.0
+power(2,7) = 128.0
+power(2,8) = 256.0
+
+power(3,0) = 1.0
+power(3,1) = 3.0
+power(3,2) = 9.0
+power(3,3) = 27.0
+power(3,4) = 81.0
+power(3,5) = 243.0
+power(3,6) = 729.0
+power(3,7) = 2187.0
+power(3,8) = 6561.0
+
+power(4,0) = 1.0
+power(4,1) = 4.0
+power(4,2) = 16.0
+power(4,3) = 64.0
+power(4,4) = 256.0
+power(4,5) = 1024.0
+power(4,6) = 4096.0
+power(4,7) = 16384.0
+power(4,8) = 65536.0
+
+power(5,0) = 1.0
+power(5,1) = 5.0
+power(5,2) = 25.0
+power(5,3) = 125.0
+power(5,4) = 625.0
+power(5,5) = 3125.0
+power(5,6) = 15625.0
+power(5,7) = 78125.0
+power(5,8) = 390625.0
+
diff --git a/test/files/run/Course-2002-02.scala b/test/files/run/Course-2002-02.scala
new file mode 100644
index 0000000000..435b84484f
--- /dev/null
+++ b/test/files/run/Course-2002-02.scala
@@ -0,0 +1,550 @@
+//############################################################################
+// Programmation IV - 2002 - Week 02
+//############################################################################
+// $Id$
+
+object M0 {
+ def gcd(a: Int, b: Int): Int = if (b == 0) a else gcd(b, a % b);
+ def factorial(n: Int): Int = if (n == 0) 1 else n * factorial(n - 1);
+
+ Console.println(gcd(14,21));
+ Console.println(factorial(5));
+ Console.println;
+}
+
+//############################################################################
+
+object M1 {
+ def cube(x: Int): Double = x * x * x;
+
+ def sumInts(a: Int, b: Int): Double = if (a > b) 0
+ else a + sumInts(a + 1, b);
+
+ def sumCubes(a: Int, b: Int): Double = if (a > b) 0
+ else cube(a) + sumCubes(a + 1, b);
+
+ def sumReciprocals(a: Int, b: Int): Double = if (a > b) 0
+ else 1.0/a + sumReciprocals(a + 1, b);
+
+ def sumPi(n: Int): Double = {
+ def element(x: Int): Double = 4.0/(4*x+1) - 4.0/(4*x-1);
+ def sumElements(a: Int, b: Int): Double =
+ if (a > b) 0
+ else element(a) + sumElements(a + 1, b);
+ 4 + sumElements(1,n)
+ }
+
+ Console.println(sumInts(1,4));
+ Console.println(sumCubes(1,4));
+ Console.println(sumReciprocals(1,4));
+ Console.println(sumCubes(1, 10) + sumReciprocals(10, 20));
+ Console.println("pi = " + sumPi(20));
+ Console.println;
+}
+
+//############################################################################
+
+object M2 {
+ def id(x: Int): Double = x;
+ def cube(x: Int): Double = x * x * x;
+ def reciprocal(x: Int): Double = 1.0/x;
+
+ def sum(f: Int => Double, a: Int, b: Int): Double =
+ if (a > b) 0
+ else f(a) + sum(f, a + 1, b);
+
+ def sumInts(a: Int, b: Int): Double = sum(id, a, b);
+ def sumCubes(a: Int, b: Int): Double = sum(cube, a, b);
+ def sumReciprocals(a: Int, b: Int): Double = sum(reciprocal, a, b);
+ def sumPi(n: Int): Double = {
+ def element(x: Int): Double = 4.0/(4*x+1) - 4.0/(4*x-1);
+ 4 + sum(element, 1, n)
+ }
+
+ Console.println(sumInts(1,4));
+ Console.println(sumCubes(1,4));
+ Console.println(sumReciprocals(1,4));
+ Console.println(sumCubes(1, 10) + sumReciprocals(10, 20));
+ Console.println("pi = " + sumPi(20));
+ Console.println;
+}
+
+//############################################################################
+
+object M3 {
+ def sum(f: Int => Double, a: Int, b: Int): Double =
+ if (a > b) 0
+ else f(a) + sum(f, a + 1, b);
+
+ def sumInts(a: Int, b: Int): Double = sum((xXXXXX => xXXXXX), a, b);
+ def sumCubes(a: Int, b: Int): Double = sum((x => x * x * x), a, b);
+ def sumReciprocals(a: Int, b: Int): Double = sum((x => 1.0/x), a, b);
+ def sumPi(n: Int): Double = 4 + sum((x => 4.0/(4*x+1) - 4.0/(4*x-1)), 1, n);
+
+ Console.println(sumInts(1,4));
+ Console.println(sumCubes(1,4));
+ Console.println(sumReciprocals(1,4));
+ Console.println(sumCubes(1, 10) + sumReciprocals(10, 20));
+ Console.println("pi = " + sumPi(20));
+ Console.println;
+}
+
+//############################################################################
+
+object M4 {
+ def sum(f: Int => Double): (Int, Int) => Double = {
+ def sumF(a: Int, b: Int): Double =
+ if (a > b) 0
+ else f(a) + sumF(a + 1, b);
+ sumF
+ }
+
+ def sumInts = sum(x => x);
+ def sumCubes = sum(x => x * x * x);
+ def sumReciprocals = sum(x => 1.0/x);
+ def sumPi = (n: Int => 4 + sum(x => 4.0/(4*x+1) - 4.0/(4*x-1))(1, n));
+
+ Console.println(sumInts(1,4));
+ Console.println(sumCubes(1,4));
+ Console.println(sumReciprocals(1,4));
+ Console.println(sumCubes(1, 10) + sumReciprocals(10, 20));
+ Console.println("pi = " + sumPi(20));
+ Console.println;
+}
+
+//############################################################################
+
+object M5 {
+ def sum(f: Int => Double): (Int, Int) => Double = { (a, b) =>
+ if (a > b) 0
+ else f(a) + sum(f)(a + 1, b)
+ }
+
+ def sumInts = sum(x => x);
+ def sumCubes = sum(x => x * x * x);
+ def sumReciprocals = sum(x => 1.0/x);
+ def sumPi = (n: Int => 4 + sum(x => 4.0/(4*x+1) - 4.0/(4*x-1))(1, n));
+
+ Console.println(sumInts(1,4));
+ Console.println(sumCubes(1,4));
+ Console.println(sumReciprocals(1,4));
+ Console.println(sumCubes(1, 10) + sumReciprocals(10, 20));
+ Console.println("pi = " + sumPi(20));
+ Console.println;
+}
+
+//############################################################################
+
+object M6 {
+ def sum(f: Int => Double)(a: Int, b: Int): Double =
+ if (a > b) 0
+ else f(a) + sum(f)(a + 1, b);
+
+ def sumInts: (Int, Int) => Double = sum(x => x);
+ def sumCubes: (Int, Int) => Double = sum(x => x * x * x);
+ def sumReciprocals: (Int, Int) => Double = sum(x => 1.0/x);
+ def sumPi = (n: Int => 4 + sum(x => 4.0/(4*x+1) - 4.0/(4*x-1))(1, n));
+
+ Console.println(sumInts(1,4));
+ Console.println(sumCubes(1,4));
+ Console.println(sumReciprocals(1,4));
+ Console.println(sumCubes(1, 10) + sumReciprocals(10, 20));
+ Console.println("pi = " + sumPi(20));
+ Console.println;
+}
+
+//############################################################################
+
+object M7 {
+ def sum(f: Int => Double)(a: Int, b: Int): Double = {
+ def iter(a: Int, result: Double): Double =
+ if (a > b) result
+ else iter(a + 1, f(a) + result);
+ iter(a, 0)
+ }
+
+ def sumInts: (Int, Int) => Double = sum(x => x);
+ def sumCubes: (Int, Int) => Double = sum(x => x * x * x);
+ def sumReciprocals: (Int, Int) => Double = sum(x => 1.0/x);
+ def sumPi = (n: Int => 4 + sum(x => 4.0/(4*x+1) - 4.0/(4*x-1))(1, n));
+
+ Console.println(sumInts(1,4));
+ Console.println(sumCubes(1,4));
+ Console.println(sumReciprocals(1,4));
+ Console.println(sumCubes(1, 10) + sumReciprocals(10, 20));
+ Console.println("pi = " + sumPi(20));
+ Console.println;
+}
+
+//############################################################################
+
+object M8 {
+ def product(f: Int => Double)(a: Int, step: Int, b: Int): Double =
+ if (a > b) 1
+ else f(a) * product(f)(a + step, step, b);
+
+ def productPi = (n: Int => product(x=>4.0*x*x/(2*x-1)/(2*x-1))(1,1,n)/n);
+
+ val pi = 2 * product(x => x * x)(2, 2, 40) / product(x => x * x)(1, 2,40)/40;
+
+ Console.println("pi = " + productPi(20));
+ Console.println("pi = " + pi);
+ Console.println;
+}
+
+//############################################################################
+
+object M9 {
+ def accumulate[t](combiner: (t, t) => t, nullValue: t, f: Int => t,
+ next: Int => Int)(a: Int, b: Int): t = if (a > b) nullValue
+ else combiner(f(a), accumulate(combiner, nullValue, f, next)(next(a), b));
+
+ def inc(x: Int) = x + 1;
+
+ def sum(f: Int => Double): (Int, Int) => Double = accumulate((x: Double, y: Double) => x + y,
+ 0d, f, inc);
+ def product(f: Int => Double): (Int, Int) => Double = accumulate((x: Double, y: Double) => x * y,
+ 1d, f, inc);
+
+ def sumInts = sum(x => x);
+ def sumCubes = sum(x => x * x * x);
+ def sumReciprocals = sum(x => 1.0/x);
+ def sumPi = (n: Int => 4 + sum(x => 4.0/(4*x+1) - 4.0/(4*x-1))(1, n));
+
+ def productPi = (n: Int => product(x=>4.0*x*x/(2*x-1)/(2*x-1))(1,n)/n);
+
+ val pi = 2*product(x => 2*x*2*x)(1,20)/product(x =>(2*x-1)*(2*x-1))(1,20)/40;
+
+ Console.println(sumInts(1,4));
+ Console.println(sumCubes(1,4));
+ Console.println(sumReciprocals(1,4));
+ Console.println(sumCubes(1, 10) + sumReciprocals(10, 20));
+ Console.println("pi = " + sumPi(20));
+ Console.println("pi = " + productPi(20));
+ Console.println("pi = " + pi);
+ Console.println;
+}
+
+//############################################################################
+
+object MA {
+ val tolerance = 0.0001;
+ def abs(x: Double) = if (x < 0) -x else x;
+ def isCloseEnough(x: Double, y: Double) = abs((x - y) / x) < tolerance;
+ def fixedPoint(f: Double => Double)(firstGuess: Double) = {
+ def iterate(guess: Double): Double = {
+ val next = f(guess);
+ Console.println(next);
+ if (isCloseEnough(guess, next)) next
+ else iterate(next)
+ }
+ iterate(firstGuess)
+ }
+ def sqrt(x: Double) = fixedPoint(y => (y + x / y) / 2)(1.0);
+
+ Console.println("sqrt(2) = " + sqrt(2));
+ Console.println
+}
+
+//############################################################################
+
+object MB {
+ val tolerance = 0.0001;
+ def abs(x: Double) = if (x < 0) -x else x;
+ def isCloseEnough(x: Double, y: Double) = abs((x - y) / x) < tolerance;
+ def fixedPoint(f: Double => Double)(firstGuess: Double) = {
+ def iterate(guess: Double): Double = {
+ val next = f(guess);
+ Console.println(next);
+ if (isCloseEnough(guess, next)) next
+ else iterate(next)
+ }
+ iterate(firstGuess)
+ }
+ def averageDamp(f: Double => Double)(x: Double) = (x + f(x)) / 2;
+ def sqrt(x: Double) = fixedPoint(averageDamp(y => x/y))(1.0);
+
+ Console.println("sqrt(2) = " + sqrt(2));
+ Console.println
+}
+
+//############################################################################
+
+object MC {
+ def sum(f: Int => Double)(a: Int, b: Int): Double = {
+ def iter(a: Int, result: Double): Double = {
+ if (a > b) result
+ else iter(a + 1, result + f(a))
+ }
+ iter(a, 0)
+ }
+
+ def product(f: Int => Double)(a: Int, b: Int): Double = {
+ def iter(a: Int, result: Double): Double = {
+ if (a > b) result
+ else iter(a + 1, result * f(a))
+ }
+ iter(a, 1)
+ }
+
+ def factorial(n: Int) = product(x => x)(1 , n);
+
+ Console.println(
+ "1 + 2 + .. + 5 = " + sum(x => x)(1, 5));
+ Console.println(
+ "1 * 2 * .. * 5 = " + product(x => x)(1, 5));
+ Console.println;
+
+ Console.println(
+ "1^2 + 2^2 + .. + 5^2 = " + sum(x => x*x)(1, 5));
+ Console.println(
+ "1^2 * 2^2 * .. * 5^2 = " + product(x => x*x)(1, 5));
+ Console.println;
+
+ Console.println(
+ "factorial(0) = " + factorial(0));
+ Console.println(
+ "factorial(1) = " + factorial(1));
+ Console.println(
+ "factorial(2) = " + factorial(2));
+ Console.println(
+ "factorial(3) = " + factorial(3));
+ Console.println(
+ "factorial(4) = " + factorial(4));
+ Console.println(
+ "factorial(5) = " + factorial(5));
+ Console.println;
+}
+
+//############################################################################
+
+object MD {
+ def reduce(op: (Double,Double) => Double, zero:Double)(f: Int => Double)(a: Int,b: Int): Double = {
+ def iter(a: Int, result: Double): Double = {
+ if (a > b) result
+ else iter(a + 1, op(result, f(a)))
+ }
+ iter(a, zero)
+ }
+
+ def plus (x:Double,y:Double) = x+y;
+ val sum: (Int => Double) => (Int, Int) => Double = reduce(plus , 0);
+ def times(x:Double,y:Double) = x*y;
+ val product: (Int => Double) => (Int, Int) => Double = reduce(times, 1);
+
+ def factorial(n: Int) = product(x => x)(1 , n);
+
+ Console.println(
+ "1 + 2 + .. + 5 = " + sum(x => x)(1, 5));
+ Console.println(
+ "1 * 2 * .. * 5 = " + product(x => x)(1, 5));
+ Console.println;
+
+ Console.println(
+ "1^2 + 2^2 + .. + 5^2 = " + sum(x => x*x)(1, 5));
+ Console.println(
+ "1^2 * 2^2 * .. * 5^2 = " + product(x => x*x)(1, 5));
+ Console.println;
+
+ Console.println(
+ "factorial(0) = " + factorial(0));
+ Console.println(
+ "factorial(1) = " + factorial(1));
+ Console.println(
+ "factorial(2) = " + factorial(2));
+ Console.println(
+ "factorial(3) = " + factorial(3));
+ Console.println(
+ "factorial(4) = " + factorial(4));
+ Console.println(
+ "factorial(5) = " + factorial(5));
+ Console.println;
+}
+
+//############################################################################
+
+object ME {
+ def reduce(op: (Double,Double) => Double, zero:Double)(f: Int => Double)(a: Int,b: Int): Double = {
+ def iter(a: Int, result: Double): Double = {
+ if (a > b) result
+ else iter(a + 1, op(result, f(a)))
+ }
+ iter(a, zero)
+ }
+
+ def sum: (Int => Double) => (Int, Int) => Double = reduce((x,y) => x + y, 0);
+ def product: (Int => Double) => (Int, Int) => Double = reduce((x,y) => x * y, 1);
+
+ def factorial(n: Int) = product(x => x)(1 , n);
+
+ Console.println(
+ "1 + 2 + .. + 5 = " + sum(x => x)(1, 5));
+ Console.println(
+ "1 * 2 * .. * 5 = " + product(x => x)(1, 5));
+ Console.println;
+
+ Console.println(
+ "1^2 + 2^2 + .. + 5^2 = " + sum(x => x*x)(1, 5));
+ Console.println(
+ "1^2 * 2^2 * .. * 5^2 = " + product(x => x*x)(1, 5));
+ Console.println;
+
+ Console.println(
+ "factorial(0) = " + factorial(0));
+ Console.println(
+ "factorial(1) = " + factorial(1));
+ Console.println(
+ "factorial(2) = " + factorial(2));
+ Console.println(
+ "factorial(3) = " + factorial(3));
+ Console.println(
+ "factorial(4) = " + factorial(4));
+ Console.println(
+ "factorial(5) = " + factorial(5));
+ Console.println;
+}
+
+//############################################################################
+
+object MF {
+ def fib(x: Int): Int =
+ if (x <= 1) x
+ else fib(x - 2) + fib(x - 1);
+
+ Console.println("fib(0) = " + fib(0));
+ Console.println("fib(1) = " + fib(1));
+ Console.println("fib(2) = " + fib(2));
+ Console.println("fib(3) = " + fib(3));
+ Console.println("fib(4) = " + fib(4));
+ Console.println("fib(5) = " + fib(5));
+ Console.println("fib(6) = " + fib(6));
+ Console.println("fib(7) = " + fib(7));
+ Console.println("fib(8) = " + fib(8));
+ Console.println("fib(9) = " + fib(9));
+}
+
+//############################################################################
+
+object MG {
+ def fib(x: Int) = {
+ def loop(n: Int, prev: Int, fibn: Int): Int =
+ if (n == x) fibn
+ else loop(n + 1, fibn, fibn + prev);
+ if (x == 0) 0 else loop(1, 0, 1)
+ }
+
+ Console.println("fib(0) = " + fib(0));
+ Console.println("fib(1) = " + fib(1));
+ Console.println("fib(2) = " + fib(2));
+ Console.println("fib(3) = " + fib(3));
+ Console.println("fib(4) = " + fib(4));
+ Console.println("fib(5) = " + fib(5));
+ Console.println("fib(6) = " + fib(6));
+ Console.println("fib(7) = " + fib(7));
+ Console.println("fib(8) = " + fib(8));
+ Console.println("fib(9) = " + fib(9));
+}
+
+//############################################################################
+
+object MH {
+ def power(x: Double, y: Int): Double =
+ if (y <= 0) 1
+ else if (y % 2 == 0) power(x * x, y / 2)
+ else x * power(x, y - 1);
+
+
+ Console.println("power(0,0) = " + power(0,0));
+ Console.println("power(0,1) = " + power(0,1));
+ Console.println("power(0,2) = " + power(0,2));
+ Console.println("power(0,3) = " + power(0,3));
+ Console.println("power(0,4) = " + power(0,4));
+ Console.println("power(0,5) = " + power(0,5));
+ Console.println("power(0,6) = " + power(0,6));
+ Console.println("power(0,7) = " + power(0,7));
+ Console.println("power(0,8) = " + power(0,8));
+ Console.println;
+
+ Console.println("power(1,0) = " + power(1,0));
+ Console.println("power(1,1) = " + power(1,1));
+ Console.println("power(1,2) = " + power(1,2));
+ Console.println("power(1,3) = " + power(1,3));
+ Console.println("power(1,4) = " + power(1,4));
+ Console.println("power(1,5) = " + power(1,5));
+ Console.println("power(1,6) = " + power(1,6));
+ Console.println("power(1,7) = " + power(1,7));
+ Console.println("power(1,8) = " + power(1,8));
+ Console.println;
+
+ Console.println("power(2,0) = " + power(2,0));
+ Console.println("power(2,1) = " + power(2,1));
+ Console.println("power(2,2) = " + power(2,2));
+ Console.println("power(2,3) = " + power(2,3));
+ Console.println("power(2,4) = " + power(2,4));
+ Console.println("power(2,5) = " + power(2,5));
+ Console.println("power(2,6) = " + power(2,6));
+ Console.println("power(2,7) = " + power(2,7));
+ Console.println("power(2,8) = " + power(2,8));
+ Console.println;
+
+ Console.println("power(3,0) = " + power(3,0));
+ Console.println("power(3,1) = " + power(3,1));
+ Console.println("power(3,2) = " + power(3,2));
+ Console.println("power(3,3) = " + power(3,3));
+ Console.println("power(3,4) = " + power(3,4));
+ Console.println("power(3,5) = " + power(3,5));
+ Console.println("power(3,6) = " + power(3,6));
+ Console.println("power(3,7) = " + power(3,7));
+ Console.println("power(3,8) = " + power(3,8));
+ Console.println;
+
+ Console.println("power(4,0) = " + power(4,0));
+ Console.println("power(4,1) = " + power(4,1));
+ Console.println("power(4,2) = " + power(4,2));
+ Console.println("power(4,3) = " + power(4,3));
+ Console.println("power(4,4) = " + power(4,4));
+ Console.println("power(4,5) = " + power(4,5));
+ Console.println("power(4,6) = " + power(4,6));
+ Console.println("power(4,7) = " + power(4,7));
+ Console.println("power(4,8) = " + power(4,8));
+ Console.println;
+
+ Console.println("power(5,0) = " + power(5,0));
+ Console.println("power(5,1) = " + power(5,1));
+ Console.println("power(5,2) = " + power(5,2));
+ Console.println("power(5,3) = " + power(5,3));
+ Console.println("power(5,4) = " + power(5,4));
+ Console.println("power(5,5) = " + power(5,5));
+ Console.println("power(5,6) = " + power(5,6));
+ Console.println("power(5,7) = " + power(5,7));
+ Console.println("power(5,8) = " + power(5,8));
+ Console.println;
+}
+
+//############################################################################
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ M0;
+ M1;
+ M2;
+ M3;
+ M4;
+ M5;
+ M6;
+ M7;
+ M8;
+ M9;
+ MA;
+ MB;
+ MC;
+ MD;
+ ME;
+ MF;
+ MG;
+ MH;
+ ()
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/Course-2002-03.check b/test/files/run/Course-2002-03.check
new file mode 100644
index 0000000000..01b9977d39
--- /dev/null
+++ b/test/files/run/Course-2002-03.check
@@ -0,0 +1,67 @@
+1
+2
+1/2
+5/6
+
+1/3
+5/7
+3/2
+66/42
+
+1/3
+5/7
+3/2
+11/7
+
+11/7
+7/11
+11/7
+11/7
+
+13/36
+
+false
+true
+true
+false
+
+set0 = []
+set1 = [1]
+set2 = [1,2]
+set3 = [1,2,3]
+set4 = [1,2,3,4]
+
+set2 contains the following elements:
+1
+2
+
+set3 contains the following elements:
+1
+2
+3
+
+set4 contains the following elements:
+1
+2
+3
+4
+
+2 <- set2: true
+3 <- set2: false
+
+setx = [-10,-1,0,3,5,21]
+setx * 2 = [-20,-2,0,6,10,42]
+
+setx = [-10,-1,0,3,5,21]
+sety = [-9,-5,-1,0,3,7,8]
+setx & sety = [-1,0,3]
+sety & setx = [-1,0,3]
+setx > 0 = [3,5,21]
+sety > 0 = [3,7,8]
+setx & sety = [-1,0,3]
+sety & setx = [-1,0,3]
+
+1/1
+1/1
+1/1
+
diff --git a/test/files/run/Course-2002-03.scala b/test/files/run/Course-2002-03.scala
new file mode 100644
index 0000000000..7933514f9a
--- /dev/null
+++ b/test/files/run/Course-2002-03.scala
@@ -0,0 +1,392 @@
+//############################################################################
+// Programmation IV - 2002 - Week 03
+//############################################################################
+// $Id$
+
+object M0 {
+ class Rational(x: Int, y: Int) {
+ def numer = x;
+ def denom = y;
+ }
+
+ def addRational(r: Rational, s: Rational): Rational =
+ new Rational(
+ r.numer * s.denom + s.numer * r.denom,
+ r.denom * s.denom);
+
+ def makeString(r: Rational) =
+ r.numer + "/" + r.denom;
+
+ val x = new Rational(1, 2);
+ val y = new Rational(1, 3);
+ Console.println(x.numer);
+ Console.println(x.denom);
+ Console.println(makeString(x));
+ Console.println(makeString(addRational(x,y)));
+ Console.println;
+}
+
+//############################################################################
+
+object M1 {
+ class Rational(x: Int, y: Int) {
+ def numer = x;
+ def denom = y;
+ def add(r: Rational) =
+ new Rational(
+ numer * r.denom + r.numer * denom,
+ denom * r.denom);
+ def mul(r: Rational) =
+ new Rational(
+ numer * r.numer,
+ denom * r.denom);
+ override def toString() = numer + "/" + denom;
+ }
+
+ val x = new Rational(1, 3);
+ val y = new Rational(5, 7);
+ val z = new Rational(3, 2);
+ Console.println(x);
+ Console.println(y);
+ Console.println(z);
+ Console.println(x.add(y).mul(z));
+ Console.println;
+}
+
+//############################################################################
+
+object M2 {
+ class Rational(x: Int, y: Int) {
+ private def gcd(a: Int, b: Int): Int = if (b == 0) a else gcd(b, a % b);
+ private val g = gcd(x, y);
+ def numer = x / g;
+ def denom = y / g;
+ def add(r: Rational) =
+ new Rational(
+ numer * r.denom + r.numer * denom,
+ denom * r.denom);
+ def sub(r: Rational) =
+ new Rational(
+ numer * r.denom - r.numer * denom,
+ denom * r.denom);
+ def mul(r: Rational) =
+ new Rational(
+ numer * r.numer,
+ denom * r.denom);
+ def div(r: Rational) =
+ new Rational(
+ numer * r.denom,
+ denom * r.numer);
+ override def toString() = numer + "/" + denom;
+ }
+
+ val x = new Rational(1, 3);
+ val y = new Rational(5, 7);
+ val z = new Rational(3, 2);
+ Console.println(x);
+ Console.println(y);
+ Console.println(z);
+ Console.println(x.add(y).mul(z));
+ Console.println;
+}
+
+//############################################################################
+
+object M3 {
+ class Rational(x: Int, y: Int) {
+ private def gcd(a: Int, b: Int): Int = if (b == 0) a else gcd(b, a % b);
+ def numer = x / gcd(x, y);
+ def denom = y / gcd(x, y);
+ def less(that: Rational) =
+ this.numer * that.denom < that.numer * this.denom;
+ def max(that: Rational) = if (this.less(that)) that else this;
+ override def toString() = numer + "/" + denom;
+ }
+
+ val x = new Rational(66, 42);
+ val y = new Rational(42, 66);
+ Console.println(x);
+ Console.println(y);
+ Console.println(x.max(y));
+ Console.println(y.max(x));
+ Console.println;
+}
+
+//############################################################################
+
+object M4 {
+ class Rational(x: Int, y: Int) {
+ private def gcd(a: Int, b: Int): Int = if (b == 0) a else gcd(b, a % b);
+ private val g = gcd(x, y);
+ def numer = x / g;
+ def denom = y / g;
+ def + (r: Rational) =
+ new Rational(
+ numer * r.denom + r.numer * denom,
+ denom * r.denom);
+ def - (r: Rational) =
+ new Rational(
+ numer * r.denom - r.numer * denom,
+ denom * r.denom);
+ def * (r: Rational) =
+ new Rational(
+ numer * r.numer,
+ denom * r.denom);
+ def / (r: Rational) =
+ new Rational(
+ numer * r.denom,
+ denom * r.numer);
+ override def toString() = numer + "/" + denom;
+ }
+
+ val x = new Rational(1, 2);
+ val y = new Rational(1, 3);
+ Console.println(x * x + y * y);
+ Console.println;
+}
+
+//############################################################################
+
+object M5 {
+ trait IntSet {
+ def incl(x: Int): IntSet;
+ def contains(x: Int): Boolean;
+ }
+
+ class Empty extends IntSet {
+ def contains(x: Int): Boolean = false;
+ def incl(x: Int): IntSet = new NonEmpty(x, new Empty, new Empty);
+ }
+
+ class NonEmpty(elem: Int, left: IntSet, right: IntSet) extends IntSet {
+ def contains(x: Int): Boolean =
+ if (x < elem) left contains x
+ else if (x > elem) right contains x
+ else true;
+ def incl(x: Int): IntSet =
+ if (x < elem) new NonEmpty(elem, left incl x, right)
+ else if (x > elem) new NonEmpty(elem, left, right incl x)
+ else this;
+ }
+
+ val x = new Empty incl 1 incl 2;
+ Console.println(x contains 0);
+ Console.println(x contains 1);
+ Console.println(x contains 2);
+ Console.println(x contains 3);
+ Console.println;
+}
+
+//############################################################################
+
+object M6 {
+ trait Boolean {
+ def ifThenElse[a](t: => a)(e: => a): a;
+
+ def ! : Boolean = ifThenElse[Boolean](new False())(new True());
+
+ def && (x: => Boolean): Boolean = ifThenElse[Boolean](x)(new False());
+ def || (x: => Boolean): Boolean = ifThenElse[Boolean](new True())(x);
+
+ // !!! def == (x: Boolean): Boolean = ifThenElse[Boolean](x)(x.!);
+ // !!! def != (x: Boolean): Boolean = ifThenElse[Boolean](x.!)(x);
+ def < (x: Boolean): Boolean = ifThenElse[Boolean](new False())(x);
+ def > (x: Boolean): Boolean = ifThenElse[Boolean](x.!)(new False());
+ def <= (x: Boolean): Boolean = ifThenElse[Boolean](x)(new True());
+ def >= (x: Boolean): Boolean = ifThenElse[Boolean](new True())(x.!);
+ }
+ class True() extends Boolean { // !!! class -> object
+ def ifThenElse[a](t: => a)(e: => a): a = t }
+ class False() extends Boolean { // !!! class -> object
+ def ifThenElse[a](t: => a)(e: => a): a = e }
+}
+
+//############################################################################
+
+object M7 {
+ trait Nat {
+ def isZero(): Boolean;
+ def predecessor: Nat;
+ def successor: Nat;
+ def + (that: Nat): Nat;
+ def - (that: Nat): Nat;
+ }
+}
+
+//############################################################################
+
+object M8 {
+
+ trait IntSet {
+ def incl(x: Int): IntSet;
+ def contains(x: Int): Boolean;
+ def map(f: Int => Int): IntSet;
+
+ def foreach(f: Int => Unit): Unit;
+ def intersect0(that: IntSet, accu: IntSet): IntSet;
+ def filter0(f: Int => Boolean, accu: IntSet): IntSet;
+
+ def intersect(that: IntSet): IntSet = intersect0(that, new Empty);
+ def intersect2(that: IntSet): IntSet = filter(x => that.contains(x));
+ def filter(f: Int => Boolean): IntSet = filter0(f, new Empty);
+
+ def printOn(out: java.io.PrintStream) = foreach(out.println);
+
+ override def toString(): String = {
+ val buffer: java.lang.StringBuffer = new java.lang.StringBuffer();
+ buffer.append('[');
+ foreach(i => {
+ if (buffer.length() > 1) {buffer.append(','); ()}; // !!! ; ()
+ buffer.append(i);
+ ()});
+ buffer.append(']');
+ buffer.toString();
+ }
+ }
+
+ class Empty extends IntSet { // !!! class Empty() -> object Empty
+ def contains(x: Int): Boolean = false;
+ def incl(x: Int): IntSet = new NonEmpty(x, new Empty, new Empty);
+ def map(f: Int => Int): IntSet = this;
+
+ def foreach(f: Int => Unit): Unit = ();
+ def intersect0(that: IntSet, accu: IntSet): IntSet = accu;
+ def filter0(f: Int => Boolean, accu: IntSet): IntSet = accu;
+ }
+
+ class NonEmpty(elem: Int, left: IntSet, right: IntSet) extends IntSet {
+ def contains(x: Int): Boolean =
+ if (x < elem) left contains x
+ else if (x > elem) right contains x
+ else true;
+
+ def incl(x: Int): IntSet =
+ if (x < elem) new NonEmpty(elem, left incl x, right)
+ else if (x > elem) new NonEmpty(elem, left, right incl x)
+ else this;
+
+
+ def map(f: Int => Int): IntSet = {
+ val lset = left.map(f);
+ val rset = right.map(f);
+ new NonEmpty(f(elem), lset, rset)
+ }
+
+ def foreach(f: Int => Unit): Unit = {
+ left.foreach(f);
+ f(elem);
+ right.foreach(f);
+ }
+
+ def intersect0(that: IntSet, accu: IntSet): IntSet =
+ right.intersect0(that, left.intersect0(that,
+ if (that.contains(elem)) accu.incl(elem) else accu));
+
+ def filter0(f: Int => Boolean, accu: IntSet): IntSet =
+ right.filter0(f, left.filter0(f,
+ if (f(elem)) accu.incl(elem) else accu));
+ }
+
+ def test = {
+ val set0: IntSet = new Empty;
+ val set1: IntSet = new Empty incl 1;
+ val set2: IntSet = new Empty incl 1 incl 2;
+ val set3: IntSet = new Empty incl 1 incl 2 incl 3;
+ val set4: IntSet = new Empty incl 1 incl 2 incl 3 incl 4;
+ val setx: IntSet = set0 incl -10 incl 5 incl 21 incl -1 incl 0 incl 3;
+ val sety: IntSet = set0 incl 3 incl 7 incl -5 incl 0 incl-9 incl 8 incl-1;
+
+ Console.println("set0 = " + set0);
+ Console.println("set1 = " + (set1.toString()));
+ Console.println("set2 = " + set2);
+ Console.println("set3 = " + (set3.toString()));
+ Console.println("set4 = " + set4);
+ Console.println;
+
+ Console.println("set2 contains the following elements:");
+ set2.foreach(Console.println);
+ Console.println;
+
+ Console.println("set3 contains the following elements:");
+ set3 foreach Console.println;
+ Console.println;
+
+ Console.println("set4 contains the following elements:");
+ set4.printOn(java.lang.System.out);
+ Console.println;
+
+ Console.println("2 <- set2: " + (set2 contains 2));
+ Console.println("3 <- set2: " + set2.contains(3));
+ Console.println;
+
+ Console.println("setx = " + setx);
+ Console.println("setx * 2 = " + (setx.map(x => 2 * x)));
+ Console.println;
+
+ Console.println("setx = " + setx);
+ Console.println("sety = " + sety);
+ Console.println("setx & sety = " + (setx.intersect(sety)));
+ Console.println("sety & setx = " + (sety.intersect(setx)));
+ Console.println("setx > 0 = " + (setx.filter(x => x > 0)));
+ Console.println("sety > 0 = " + (sety.filter(x => x > 0)));
+ Console.println("setx & sety = " + (setx.intersect2(sety)));
+ Console.println("sety & setx = " + (sety.intersect2(setx)));
+ Console.println;
+ }
+}
+
+//############################################################################
+
+object M9 {
+ class Rational(x: Int, y: Int) {
+ private def gcd(a: Int, b: Int): Int = if (b == 0) a else gcd(b, a % b);
+ private val g = gcd(x, y);
+ def numer = x / g;
+ def denom = y / g;
+ def add(r: Rational) =
+ new Rational(
+ numer * r.denom + r.numer * denom,
+ denom * r.denom);
+ def sub(r: Rational) =
+ new Rational(
+ numer * r.denom - r.numer * denom,
+ denom * r.denom);
+ def mul(r: Rational) =
+ new Rational(
+ numer * r.numer,
+ denom * r.denom);
+ def equal(r: Rational) =
+ new Rational(
+ numer * r.denom,
+ denom * r.numer);
+ def asString = numer.toString().concat("/").concat(denom.toString());
+ override def toString() = asString;
+ }
+
+ def test = {
+ Console.println(new Rational(2,2).asString);
+ Console.println(new Rational(2,2).toString());
+ Console.println(new Rational(2,2));
+ Console.println;
+ }
+}
+
+//############################################################################
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ M0;
+ M1;
+ M2;
+ M3;
+ M4;
+ M5;
+ M6;
+ M7;
+ M8.test;
+ M9.test;
+ ()
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/Course-2002-04.check b/test/files/run/Course-2002-04.check
new file mode 100644
index 0000000000..bf4218fb32
--- /dev/null
+++ b/test/files/run/Course-2002-04.check
@@ -0,0 +1,64 @@
+list0 = List(6,3,1,8,7,1,2,5,8,4,3,4,8)
+list1 = List(1,1,2,3,3,4,4,5,6,7,8,8,8)
+list2 = List(1,1,2,3,3,4,4,5,6,7,8,8,8)
+list3 = List(1,1,2,3,3,4,4,5,6,7,8,8,8)
+list4 = List(1,1,2,3,3,4,4,5,6,7,8,8,8)
+list5 = List(8,8,8,7,6,5,4,4,3,3,2,1,1)
+list6 = List(8,8,8,7,6,5,4,4,3,3,2,1,1)
+
+list0: List() -> List()
+list1: List(0) -> List(0)
+list2: List(0,1) -> List(0,1)
+list3: List(1,0) -> List(0,1)
+list4: List(0,1,2) -> List(0,1,2)
+list5: List(1,0,2) -> List(0,1,2)
+list6: List(0,1,2) -> List(0,1,2)
+list7: List(1,0,2) -> List(0,1,2)
+list8: List(2,0,1) -> List(0,1,2)
+list9: List(2,1,0) -> List(0,1,2)
+listA: List(6,3,1,8,7,1,2,5,8,4) -> List(1,1,2,3,4,5,6,7,8,8)
+
+f(x) = 5x^3+7x^2+5x+9
+f(0) = 9.0
+f(1) = 26.0
+f(2) = 87.0
+f(3) = 222.0
+
+v1 = List(2.0,3.0,4.0)
+v2 = List(6.0,7.0,8.0)
+
+id = List(List(1.0,0.0,0.0),List(0.0,1.0,0.0),List(0.0,0.0,1.0))
+m1 = List(List(2.0,0.0,0.0),List(0.0,2.0,0.0),List(0.0,0.0,2.0))
+m2 = List(List(1.0,2.0,3.0),List(4.0,5.0,6.0),List(7.0,8.0,9.0))
+
+v1 * v1 = 29.0
+v1 * v2 = 65.0
+v2 * v1 = 65.0
+v1 * v2 = 65.0
+
+id * v1 = List(2.0,3.0,4.0)
+m1 * v1 = List(4.0,6.0,8.0)
+m2 * v1 = List(20.0,47.0,74.0)
+
+trn(id) = List(List(1.0,0.0,0.0),List(0.0,1.0,0.0),List(0.0,0.0,1.0))
+trn(m1) = List(List(2.0,0.0,0.0),List(0.0,2.0,0.0),List(0.0,0.0,2.0))
+trn(m2) = List(List(1.0,4.0,7.0),List(2.0,5.0,8.0),List(3.0,6.0,9.0))
+
+List(v1) * id = List(List(2.0,3.0,4.0))
+List(v1) * m1 = List(List(4.0,6.0,8.0))
+List(v1) * m2 = List(List(42.0,51.0,60.0))
+
+id * List(v1) = List(List(2.0,3.0,4.0),List(0.0,0.0,0.0),List(0.0,0.0,0.0))
+m1 * List(v1) = List(List(4.0,6.0,8.0),List(0.0,0.0,0.0),List(0.0,0.0,0.0))
+m2 * List(v1) = List(List(2.0,3.0,4.0),List(8.0,12.0,16.0),List(14.0,21.0,28.0))
+
+id * id = List(List(1.0,0.0,0.0),List(0.0,1.0,0.0),List(0.0,0.0,1.0))
+id * m1 = List(List(2.0,0.0,0.0),List(0.0,2.0,0.0),List(0.0,0.0,2.0))
+m1 * id = List(List(2.0,0.0,0.0),List(0.0,2.0,0.0),List(0.0,0.0,2.0))
+m1 * m1 = List(List(4.0,0.0,0.0),List(0.0,4.0,0.0),List(0.0,0.0,4.0))
+id * m2 = List(List(1.0,2.0,3.0),List(4.0,5.0,6.0),List(7.0,8.0,9.0))
+m2 * id = List(List(1.0,2.0,3.0),List(4.0,5.0,6.0),List(7.0,8.0,9.0))
+m1 * m2 = List(List(2.0,4.0,6.0),List(8.0,10.0,12.0),List(14.0,16.0,18.0))
+m2 * m1 = List(List(2.0,4.0,6.0),List(8.0,10.0,12.0),List(14.0,16.0,18.0))
+m2 * m2 = List(List(30.0,36.0,42.0),List(66.0,81.0,96.0),List(102.0,126.0,150.0))
+
diff --git a/test/files/run/Course-2002-04.scala b/test/files/run/Course-2002-04.scala
new file mode 100644
index 0000000000..48d14d9125
--- /dev/null
+++ b/test/files/run/Course-2002-04.scala
@@ -0,0 +1,245 @@
+//############################################################################
+// Programmation IV - 2002 - Week 04
+//############################################################################
+// $Id$
+
+object M0 {
+
+ def quicksort[a] (less : (a,a) => Boolean) (xs : List[a]) : List[a] = {
+ if (xs.isEmpty)
+ xs
+ else {
+ val pivot : a = xs.head;
+ val smaller : List[a] =
+ quicksort(less)(xs.tail.filter(elem => less(elem, pivot)));
+ val greaterOrEqual : List[a] =
+ quicksort(less)(xs.tail.filter(elem => !less(elem, pivot)));
+ smaller ::: List(pivot) ::: greaterOrEqual
+ }
+ }
+
+ def test = {
+ val isort: List[Int] => List[Int] = quicksort[Int]((x,y) => x < y);
+ val list0 = List(6,3,1,8,7,1,2,5,8,4,3,4,8);
+ val list1 = quicksort[Int]((x,y) => x < y)(list0);
+ val list2 = quicksort[Int]((x,y) => x < y)(list1);
+ val list3 = isort(list0);
+ val list4 = isort(list1);
+ val list5 = quicksort[Int]((x,y) => x >= y)(list0);
+ val list6 = quicksort[Int]((x,y) => x >= y)(list1);
+
+ Console.println("list0 = " + list0);
+ Console.println("list1 = " + list1);
+ Console.println("list2 = " + list2);
+ Console.println("list3 = " + list3);
+ Console.println("list4 = " + list4);
+ Console.println("list5 = " + list5);
+ Console.println("list6 = " + list6);
+ Console.println;
+ }
+}
+
+//############################################################################
+
+object M1 {
+
+ def mergesort[a] (less : (a,a) => Boolean) (xs: Array[a]): Unit = {
+
+ def While(c: => Boolean)(b: => Unit): Unit =
+ if (c) { b ; While(c)(b) } else ();
+
+ def swap(i: Int, j: Int): Unit = {
+ val t = xs(i);
+ val u = xs(j);
+ xs(i) = u;
+ xs(j) = t;
+ }
+
+ def sort1(l: Int, r: Int): Unit = {
+ val pivot = xs((l + r) / 2);
+ var i = l;
+ var j = r;
+ While (i <= j) {
+ While (less(xs(i), pivot)) { i = i + 1 }
+ While (less(pivot, xs(j))) { j = j - 1 }
+ if (i <= j) {
+ swap(i, j);
+ i = i + 1;
+ j = j - 1;
+ }
+ }
+ if (l < j) sort1(l, j);
+ if (j < r) sort1(i, r);
+ }
+
+ if (xs.length > 0) sort1(0, xs.length - 1);
+ }
+
+ def list2array(list: List[Int]): Array[Int] = {
+ val array = new Array[Int](list.length);
+ list.copyToArray(array, 0);
+ array;
+ }
+
+ def array2list(array: Array[Int]): List[Int] = {
+ var list = List[Int]();
+ List.range(0, array.length).map(i => list = array(i) :: list);
+ list.reverse;
+ }
+
+ def isort(list: List[Int]): List[Int] = {
+ val array = list2array(list);
+ mergesort[Int]((x,y) => x < y)(array);
+ array2list(array);
+ }
+
+ def test = {
+ val list0 = List();
+ val list1 = List(0);
+ val list2 = List(0,1);
+ val list3 = List(1,0);
+ val list4 = List(0,1,2);
+ val list5 = List(1,0,2);
+ val list6 = List(0,1,2);
+ val list7 = List(1,0,2);
+ val list8 = List(2,0,1);
+ val list9 = List(2,1,0);
+ val listA = List(6,3,1,8,7,1,2,5,8,4);
+
+ Console.println("list0: " + list0 + " -> " + isort(list0));
+ Console.println("list1: " + list1 + " -> " + isort(list1));
+ Console.println("list2: " + list2 + " -> " + isort(list2));
+ Console.println("list3: " + list3 + " -> " + isort(list3));
+ Console.println("list4: " + list4 + " -> " + isort(list4));
+ Console.println("list5: " + list5 + " -> " + isort(list5));
+ Console.println("list6: " + list6 + " -> " + isort(list6));
+ Console.println("list7: " + list7 + " -> " + isort(list7));
+ Console.println("list8: " + list8 + " -> " + isort(list8));
+ Console.println("list9: " + list9 + " -> " + isort(list9));
+ Console.println("listA: " + listA + " -> " + isort(listA));
+ Console.println;
+ }
+
+}
+
+//############################################################################
+
+object M2 {
+
+ def horner (x : Double, coefs : List[Double]) : Double = {
+ if (coefs.isEmpty)
+ 0
+ else
+ horner(x, coefs.tail) * x + coefs.head
+ }
+
+ def test = {
+ val poly = List(9.0,5.0,7.0,5.0);
+ Console.println("f(x) = 5x^3+7x^2+5x+9");
+ Console.println("f(0) = " + horner(0, poly));
+ Console.println("f(1) = " + horner(1, poly));
+ Console.println("f(2) = " + horner(2, poly));
+ Console.println("f(3) = " + horner(3, poly));
+ Console.println;
+ }
+}
+
+//############################################################################
+
+object M3 {
+
+ def dotproduct (v : List[Double], w : List[Double]) : Double = {
+ if (v.isEmpty)
+ 0
+ else
+ (v.head * w.head) + dotproduct(v.tail, w.tail)
+ }
+
+ def matrixTimesVector (m : List[List[Double]], v : List[Double])
+ : List[Double] = {
+ m.map(row => dotproduct(row, v))
+ }
+
+ def transpose(m : List[List[Double]]) : List[List[Double]] = {
+ if (m.isEmpty || m.head.isEmpty)
+ List()
+ else
+ m.map(row => row.head) :: transpose (m.map (row => row.tail))
+ }
+
+ def matrixTimesMatrix(m1 : List[List[Double]], m2 : List[List[Double]])
+ : List[List[Double]] = {
+ val columns = transpose(m2);
+ m1.map(row => matrixTimesVector(columns, row))
+ }
+
+ def test = {
+ val v1 = List(2.0,3.0,4.0);
+ val v2 = List(6.0,7.0,8.0);
+ def id = List(List(1.0,0.0,0.0),List(0.0,1.0,0.0),List(0.0,0.0,1.0));
+ def m1 = List(List(2.0,0.0,0.0),List(0.0,2.0,0.0),List(0.0,0.0,2.0));
+ def m2 = List(List(1.0,2.0,3.0),List(4.0,5.0,6.0),List(7.0,8.0,9.0));
+
+ def v = List(2.0,3.0,4.0);
+
+ Console.println("v1 = " + v1);
+ Console.println("v2 = " + v2);
+ Console.println;
+
+ Console.println("id = " + id);
+ Console.println("m1 = " + m1);
+ Console.println("m2 = " + m2);
+ Console.println;
+
+ Console.println("v1 * v1 = " + dotproduct(v1,v1));
+ Console.println("v1 * v2 = " + dotproduct(v1,v2));
+ Console.println("v2 * v1 = " + dotproduct(v2,v1));
+ Console.println("v1 * v2 = " + dotproduct(v1,v2));
+ Console.println;
+
+ Console.println("id * v1 = " + matrixTimesVector(id,v1));
+ Console.println("m1 * v1 = " + matrixTimesVector(m1,v1));
+ Console.println("m2 * v1 = " + matrixTimesVector(m2,v1));
+ Console.println;
+
+ Console.println("trn(id) = " + transpose(id));
+ Console.println("trn(m1) = " + transpose(m1));
+ Console.println("trn(m2) = " + transpose(m2));
+ Console.println;
+
+ Console.println("List(v1) * id = " + matrixTimesMatrix(List(v1),id));
+ Console.println("List(v1) * m1 = " + matrixTimesMatrix(List(v1),m1));
+ Console.println("List(v1) * m2 = " + matrixTimesMatrix(List(v1),m2));
+ Console.println;
+
+ Console.println("id * List(v1) = " + matrixTimesMatrix(id,List(v1)));
+ Console.println("m1 * List(v1) = " + matrixTimesMatrix(m1,List(v1)));
+ Console.println("m2 * List(v1) = " + matrixTimesMatrix(m2,List(v1)));
+ Console.println;
+
+ Console.println("id * id = " + matrixTimesMatrix(id,id));
+ Console.println("id * m1 = " + matrixTimesMatrix(id,m1));
+ Console.println("m1 * id = " + matrixTimesMatrix(m1,id));
+ Console.println("m1 * m1 = " + matrixTimesMatrix(m1,m1));
+ Console.println("id * m2 = " + matrixTimesMatrix(id,m2));
+ Console.println("m2 * id = " + matrixTimesMatrix(m2,id));
+ Console.println("m1 * m2 = " + matrixTimesMatrix(m1,m2));
+ Console.println("m2 * m1 = " + matrixTimesMatrix(m2,m1));
+ Console.println("m2 * m2 = " + matrixTimesMatrix(m2,m2));
+ Console.println;
+ }
+}
+
+//############################################################################
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ M0.test;
+ M1.test;
+ M2.test;
+ M3.test;
+ ()
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/Course-2002-05.check b/test/files/run/Course-2002-05.check
new file mode 100644
index 0000000000..aa73638bcb
--- /dev/null
+++ b/test/files/run/Course-2002-05.check
@@ -0,0 +1,44 @@
+(List(),List(1,2,3,4,5,6,7,8))
+(List(1,2,3,4),List(5,6,7,8))
+(List(1,2,3,4,5,6,7,8),List())
+
+(List(),List(8,7,6,5,4,3,2,1))
+(List(4,3,2,1),List(8,7,6,5))
+(List(8,7,6,5,4,3,2,1),List())
+
+(List(),List(7,2,1,5,4,3,8,6))
+(List(2,1,4,3),List(7,5,8,6))
+(List(7,2,1,5,4,3,8,6),List())
+
+List(1,2,3,4,5,6,7,8)
+
+(List(),List(1,2,3,4,5,6,7,8))
+(List(1,2,3,4),List(5,6,7,8))
+(List(1,2,3,4,5,6,7,8),List())
+
+(List(),List(8,7,6,5,4,3,2,1))
+(List(4,3,2,1),List(8,7,6,5))
+(List(8,7,6,5,4,3,2,1),List())
+
+(List(),List(7,2,1,5,4,3,8,6))
+(List(2,1,4,3),List(7,5,8,6))
+(List(7,2,1,5,4,3,8,6),List())
+
+List(1,2,3,4,5,6,7,8)
+
+List(List())
+List(List(),List(1))
+List(List(),List(2),List(1),List(1,2))
+List(List(),List(3),List(2),List(2,3),List(1),List(1,3),List(1,2),List(1,2,3))
+List(List(),List(4),List(3),List(3,4),List(2),List(2,4),List(2,3),List(2,3,4),List(1),List(1,4),List(1,3),List(1,3,4),List(1,2),List(1,2,4),List(1,2,3),List(1,2,3,4))
+
+queens(1) = List(List((1,1)))
+queens(2) = List()
+queens(3) = List()
+queens(4) = List(List((4,3),(3,1),(2,4),(1,2)),List((4,2),(3,4),(2,1),(1,3)))
+
+queens(1) = List(List(1))
+queens(2) = List()
+queens(3) = List()
+queens(4) = List(List(3,1,4,2),List(2,4,1,3))
+
diff --git a/test/files/run/Course-2002-05.scala b/test/files/run/Course-2002-05.scala
new file mode 100644
index 0000000000..c761f88f5d
--- /dev/null
+++ b/test/files/run/Course-2002-05.scala
@@ -0,0 +1,215 @@
+//############################################################################
+// Programmation IV - 2002 - Week 05
+//############################################################################
+// $Id$
+
+object M0 {
+ def partition[a](xs: List[a], pred: a => boolean): Pair[List[a], List[a]] = {
+ if (xs.isEmpty)
+ Pair(List(),List())
+ else {
+ val tailPartition = partition(xs.tail, pred);
+ if (pred(xs.head))
+ Pair(xs.head :: tailPartition._1, tailPartition._2)
+ else
+ Pair(tailPartition._1, xs.head :: tailPartition._2)
+ }
+ }
+
+ def quicksort[a] (less : (a,a) => boolean) (xs : List[a]) : List[a] = {
+ if (xs.isEmpty)
+ xs
+ else {
+ val pivot = xs.head;
+ val sub = partition(xs.tail, (elem : a => less(elem, pivot)));
+ quicksort(less)(sub._1) ::: List(pivot) ::: quicksort(less)(sub._2)
+ }
+ }
+
+ def test = {
+ Console.println(partition[int](List(1,2,3,4,5,6,7,8), (x => x < 0)));
+ Console.println(partition[int](List(1,2,3,4,5,6,7,8), (x => x < 5)));
+ Console.println(partition[int](List(1,2,3,4,5,6,7,8), (x => x < 9)));
+ Console.println;
+
+ Console.println(partition[int](List(8,7,6,5,4,3,2,1), (x => x < 0)));
+ Console.println(partition[int](List(8,7,6,5,4,3,2,1), (x => x < 5)));
+ Console.println(partition[int](List(8,7,6,5,4,3,2,1), (x => x < 9)));
+ Console.println;
+
+ Console.println(partition[int](List(7,2,1,5,4,3,8,6), (x => x < 0)));
+ Console.println(partition[int](List(7,2,1,5,4,3,8,6), (x => x < 5)));
+ Console.println(partition[int](List(7,2,1,5,4,3,8,6), (x => x < 9)));
+ Console.println;
+
+ Console.println(quicksort[int]((x,y) => x < y)(List(7,2,1,5,4,3,8,6)));
+ Console.println;
+ }
+}
+
+//############################################################################
+
+object M1 {
+ def partition[a](xs: List[a], pred: a => boolean): Pair[List[a], List[a]] = {
+ xs.foldRight[Pair[List[a], List[a]]](Pair(List(), List())) {
+ (x, p) => if (pred (x)) Pair(x :: p._1, p._2) else Pair(p._1, x :: p._2)
+ }
+ }
+
+ def quicksort[a] (less : (a,a) => boolean) (xs : List[a]) : List[a] = {
+ if (xs.isEmpty)
+ xs
+ else {
+ val pivot = xs.head;
+ val sub = partition(xs.tail, (elem : a => less(elem, pivot)));
+ quicksort(less)(sub._1) ::: List(pivot) ::: quicksort(less)(sub._2)
+ }
+ }
+
+ def test = {
+ Console.println(partition[int](List(1,2,3,4,5,6,7,8), (x => x < 0)));
+ Console.println(partition[int](List(1,2,3,4,5,6,7,8), (x => x < 5)));
+ Console.println(partition[int](List(1,2,3,4,5,6,7,8), (x => x < 9)));
+ Console.println;
+
+ Console.println(partition[int](List(8,7,6,5,4,3,2,1), (x => x < 0)));
+ Console.println(partition[int](List(8,7,6,5,4,3,2,1), (x => x < 5)));
+ Console.println(partition[int](List(8,7,6,5,4,3,2,1), (x => x < 9)));
+ Console.println;
+
+ Console.println(partition[int](List(7,2,1,5,4,3,8,6), (x => x < 0)));
+ Console.println(partition[int](List(7,2,1,5,4,3,8,6), (x => x < 5)));
+ Console.println(partition[int](List(7,2,1,5,4,3,8,6), (x => x < 9)));
+ Console.println;
+
+ Console.println(quicksort[int]((x,y) => x < y)(List(7,2,1,5,4,3,8,6)));
+ Console.println;
+ }
+}
+
+//############################################################################
+
+object M2 {
+
+ def powerset[a] (s : List[a]) : List[List[a]] = {
+ if (s.isEmpty)
+ List(List())
+ else {
+ val x = s.head;
+ val withoutX = powerset(s.tail);
+ withoutX ::: withoutX.map(s1 : List[a] => x::s1)
+ }
+ }
+
+ def test = {
+ Console.println(powerset(List()));
+ Console.println(powerset(List(1)));
+ Console.println(powerset(List(1,2)));
+ Console.println(powerset(List(1,2,3)));
+ Console.println(powerset(List(1,2,3,4)));
+ Console.println;
+ }
+}
+
+//############################################################################
+
+object M3 {
+
+ def abs(x: int) = if (x < 0) 0 - x else x;
+
+ def range(lo: Int, hi: Int): List[Int] =
+ if (lo > hi) List()
+ else lo :: range(lo + 1, hi);
+
+ type Placement = List[Pair[int,int]];
+
+ def queens(n: int): List[Placement] = {
+ def placeQueens(row: int): List[Placement] = {
+ if (row == 0)
+ List(List())
+ else {
+ def isSafe(column: int, placement: Placement): boolean =
+ placement forall {
+ pos => (pos._2 != column &&
+ abs(pos._2 - column) != row - pos._1)
+ }
+
+ def adjoinRow(placement: Placement): List[Placement] =
+ range(1, n)
+ .filter (column => isSafe(column, placement))
+ .map (column => Pair(row, column) :: placement);
+
+ placeQueens(row - 1) flatMap adjoinRow
+ }
+ }
+ placeQueens(n)
+ }
+
+ def test = {
+ Console.println("queens(1) = " + queens(1));
+ Console.println("queens(2) = " + queens(2));
+ Console.println("queens(3) = " + queens(3));
+ Console.println("queens(4) = " + queens(4));
+ Console.println;
+ }
+}
+
+//############################################################################
+
+object M4 {
+
+ def abs(x: int) = if (x < 0) 0 - x else x;
+
+ def range(lo: Int, hi: Int): List[Int] =
+ if (lo > hi) List()
+ else lo :: range(lo + 1, hi);
+
+ type Placement = List[Int];
+
+ def queens(n: Int): List[Placement] = {
+ val columns = range(1, n);
+ def placeQueens(row: Int): List[Placement] = {
+ if (row == 0)
+ List(List())
+ else {
+ def isSafe(col: Int, p: Placement, delta: Int): Boolean =
+ (p.isEmpty ||
+ (col != p.head &&
+ abs(col - p.head) != delta &&
+ isSafe(col, p.tail, delta + 1)));
+
+ for (
+ val placement <- placeQueens(row - 1);
+ val col <- columns;
+ isSafe(col, placement, 1)
+ ) yield {
+ col :: placement
+ }
+ }
+ }
+ placeQueens(n);
+ }
+
+ def test = {
+ Console.println("queens(1) = " + queens(1));
+ Console.println("queens(2) = " + queens(2));
+ Console.println("queens(3) = " + queens(3));
+ Console.println("queens(4) = " + queens(4));
+ Console.println;
+ }
+}
+
+//############################################################################
+
+object Test {
+ def main(args: Array[String]): unit = {
+ M0.test;
+ M1.test;
+ M2.test;
+ M3.test;
+ M4.test;
+ ()
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/Course-2002-06.check b/test/files/run/Course-2002-06.check
new file mode 100644
index 0000000000..bd354594af
--- /dev/null
+++ b/test/files/run/Course-2002-06.check
@@ -0,0 +1,38 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Title: ProgrammationIV
+%%Creator: LAMP
+%%BoundingBox: 0 0 595.28 841.89
+%%EndComments
+
+/m {moveto} bind def
+/l {lineto} bind def
+
+0.14 setlinewidth
+newpath
+42.52 165.83 m 297.64 165.83 l
+297.64 165.83 m 297.64 505.99 l
+297.64 505.99 m 42.52 505.99 l
+42.52 505.99 m 170.08 676.07 l
+170.08 676.07 m 297.64 505.99 l
+297.64 505.99 m 42.52 165.83 l
+42.52 165.83 m 42.52 505.99 l
+42.52 505.99 m 297.64 165.83 l
+297.64 165.83 m 425.2 165.83 l
+425.2 165.83 m 425.2 505.99 l
+425.2 505.99 m 297.64 505.99 l
+297.64 505.99 m 361.42 676.07 l
+361.42 676.07 m 425.2 505.99 l
+425.2 505.99 m 297.64 165.83 l
+297.64 165.83 m 297.64 505.99 l
+297.64 505.99 m 425.2 165.83 l
+425.2 676.07 m 552.76 676.07 l
+552.76 676.07 m 552.76 335.91 l
+552.76 335.91 m 425.2 335.91 l
+425.2 335.91 m 488.98 165.83 l
+488.98 165.83 m 552.76 335.91 l
+552.76 335.91 m 425.2 676.07 l
+425.2 676.07 m 425.2 335.91 l
+425.2 335.91 m 552.76 676.07 l
+stroke
+showpage
+%%EOF
diff --git a/test/files/run/Course-2002-06.scala b/test/files/run/Course-2002-06.scala
new file mode 100644
index 0000000000..df73daa08f
--- /dev/null
+++ b/test/files/run/Course-2002-06.scala
@@ -0,0 +1,262 @@
+//############################################################################
+// Programmation IV - 2002 - Week 06
+//############################################################################
+// $Id$
+
+/** Two-dimensional vector. */
+class Vector (_x: Double, _y: Double) {
+ def x: Double = _x;
+ def y: Double = _y;
+ def +(that: Vector): Vector = new Vector(x + that.x, y + that.y);
+ def *(scalar: Double): Vector = new Vector(x * scalar, y * scalar);
+ def -(that: Vector): Vector = new Vector(x - that.x, y - that.y);
+ def /(scalar: Double): Vector = new Vector(x / scalar, y / scalar);
+ def norm: Double = scala.runtime.compat.Math.sqrt(x * x + y * y);
+}
+
+//############################################################################
+
+/** Frame. */
+class Frame (_origin: Vector, _edgeX: Vector, _edgeY: Vector) {
+ def origin: Vector = _origin;
+ def edgeX: Vector = _edgeX;
+ def edgeY: Vector = _edgeY;
+ /** The vector v in the absolute (drawing) coordinate system */
+ def coordMap(v: Vector): Vector = origin + (edgeX * v.x) + (edgeY * v.y);
+}
+
+//############################################################################
+
+/** Space on which we can draw lines. */
+abstract class Graphics(_width: Double, _height: Double) {
+ /** Width of the picture.*/
+ def width: Double = _width;
+
+ /** Height of the picture.*/
+ def height: Double = _height;
+
+ /** Frame that represents the drawable area of the output device*/
+ val frame: Frame;
+
+ /** Draw a line in device coordinates*/
+ def plotLine(x1: Double, y1: Double, x2: Double, y2: Double): Unit;
+
+ /** Draw a line in logical coordinates*/
+ def drawLine(v1: Vector, v2: Vector): Unit = {
+ val _v1 = frame.coordMap(v1);
+ val _v2 = frame.coordMap(v2);
+ plotLine(_v1.x, _v1.y, _v2.x, _v2.y);
+ }
+
+ /** Draw a segment of the picture.*/
+ def drawSegment(frm: Frame)(v1: Vector, v2: Vector): Unit = {
+ val _v1 = frm.coordMap(v1);
+ val _v2 = frm.coordMap(v2);
+ drawLine(_v1, _v2);
+ }
+
+ /** Draw a list of segments on the picture.*/
+ def drawSegments(frm: Frame)(segments: List[Pair[Vector, Vector]]): Unit =
+ if (segments.isEmpty) ()
+ else {
+ drawSegment(frm)(segments.head._1, segments.head._2);
+ drawSegments(frm)(segments.tail)
+ }
+
+ /** Draw a list of continuous segments on the picture.*/
+ def drawPolySegment(frm: Frame)(points: List[Vector]) : Unit =
+ if (!points.tail.isEmpty) {
+ drawSegment(frm)(points.head, points.tail.head);
+ drawPolySegment(frm)(points.tail);
+ }
+
+ /** updates the contents of the output device*/
+ def repaint = ();
+
+ /** Add the last touch to the picture.*/
+ def close : Unit;
+}
+
+//############################################################################
+
+/** Provides PostScript output. The name of the file is the first parameter
+ * of the constructor. The width and height determine the aspect ratio
+ */
+class PostScript (filename: String, _width: Double, _height: Double)
+ extends Graphics(_width, _height) {
+ /** Convert mm into 72th of inch.*/
+ def mm2ps(x: Double) : Double = round(x * 72.0 / 25.4);
+
+ def round(x: Double): Double =
+ scala.runtime.compat.Math.floor(x * 100.0 + 0.5) / 100.0;
+
+ def scaleAndCenter(frm: Frame, ratio:Double): Frame = {
+ val currentRatio = frm.edgeX.norm / frm.edgeY.norm;
+ if (currentRatio < ratio) {
+ val newEdgeX = frm.edgeX;
+ val newEdgeY = frm.edgeY * (currentRatio /ratio);
+ val newOrigin = frm.origin + ((frm.edgeY - newEdgeY) / 2);
+ new Frame(newOrigin, newEdgeX, newEdgeY)
+ }
+ else {
+ val newEdgeX = frm.edgeX * (ratio / currentRatio);
+ val newEdgeY = frm.edgeY;
+ val newOrigin = frm.origin + ((frm.edgeX - newEdgeX) / 2);
+ new Frame(newOrigin, newEdgeX, newEdgeY)
+ }
+ }
+
+ /** Line thickness in millimeters.*/
+ val line_thickness : Double = 0.05;
+
+ /** Width, height, left and right margins in mm.*/
+ val psWidth: Double = 210.0;
+ val psHeight: Double = 297.0;
+ val psWidthMargin: Double = 15.0;
+ val psHeightMargin: Double = 15.0;
+
+ val frame: Frame = {
+ val origin = new Vector(mm2ps(psWidthMargin), mm2ps(psHeightMargin));
+ val edgeX = new Vector(mm2ps(psWidth) - 2 * mm2ps(psWidthMargin), 0);
+ val edgeY = new Vector(0, mm2ps(psHeight) - 2 * mm2ps(psHeightMargin));
+ scaleAndCenter(new Frame(origin, edgeX, edgeY), width / height)
+ }
+
+ def plotLine(x1: Double, y1: Double, x2: Double, y2: Double): Unit = {
+ Console.println(round(x1) + " " + round(y1) + " m " +
+ round(x2) + " " + round(y2) + " l");
+ }
+
+ /** Print the PS header.*/
+ Console.println("%!PS-Adobe-3.0 EPSF-3.0\n%%Title: ProgrammationIV");
+ Console.println("%%Creator: LAMP");
+ Console.println("%%BoundingBox: 0 0 " + mm2ps(psWidth) + " " + mm2ps(psHeight));
+ Console.println("%%EndComments\n");
+ Console.println("/m {moveto} bind def\n/l {lineto} bind def\n");
+ Console.println(mm2ps(line_thickness) + " setlinewidth\nnewpath");
+
+ /** Terminate the PS document and close the file stream. */
+ def close : Unit = {
+ Console.println("stroke\nshowpage\n%%EOF");
+ Console.flush;
+ }
+}
+
+//############################################################################
+
+object M0 {
+
+ /** Define the type of a painter as a function that takes a frame,
+ * draws itself onto it and returns nothing
+ */
+ type Painter = (Frame) => Unit;
+
+
+ /** Transform the frame in which the painter is to be drawn, hence
+ * changing the appearance of the painter
+ */
+ def transformPainter(origin: Vector, newX: Vector, newY: Vector)(painter: Painter): Painter = {
+ frame: Frame => {
+ val newOrigin = frame.coordMap(origin);
+ val newFrame = new Frame(newOrigin,
+ frame.coordMap(newX) - newOrigin,
+ frame.coordMap(newY) - newOrigin);
+ painter(newFrame)
+ }
+ }
+
+
+ /** Flip the painter vertically
+ */
+ def flipVert: Painter => Painter =
+ transformPainter(new Vector(0.0, 1.0),
+ new Vector(1.0, 1.0),
+ new Vector(0.0, 0.0));
+
+ /** Flip the painter horizontally
+ */
+ def flipHoriz: Painter => Painter =
+ transformPainter(new Vector(1.0, 0.0),
+ new Vector(0.0, 0.0),
+ new Vector(1.0, 1.0));
+
+ /** Compose a painter that draws p1 on the left of p2
+ */
+ def beside(p1: Painter, p2: Painter) : Painter = {
+ frame: Frame => {
+ transformPainter(new Vector(0.0, 0.0),
+ new Vector(0.5, 0.0),
+ new Vector(0.0, 1.0))(p1)(frame);
+ transformPainter(new Vector(0.5, 0.0),
+ new Vector(1.0, 0.0),
+ new Vector(0.5, 1.0))(p2)(frame)
+ }
+ }
+
+ /** Compose a painter that draws p1 below p2
+ */
+ def below(p1: Painter, p2: Painter): Painter = {
+ frame: Frame => {
+ transformPainter(new Vector(0.0, 0.0),
+ new Vector(1.0, 0.0),
+ new Vector(0.0, 0.5))(p1)(frame);
+ transformPainter(new Vector(0.0, 0.5),
+ new Vector(1.0, 0.5),
+ new Vector(0.0, 1.0))(p2)(frame)
+ }
+ }
+
+ def rightSplit(painter: Painter, n: Int): Painter = {
+ if (n == 0) painter
+ else {
+ val smaller = rightSplit(painter, n-1);
+ beside(painter, below(smaller, smaller))
+ }
+ }
+
+ // A small test painter.
+ def house(canvas: Graphics)(frame: Frame): Unit = {
+ canvas.drawPolySegment(frame)(List(new Vector(0.0, 0.0),
+ new Vector(1.0, 0.0),
+ new Vector(1.0, 2.0/3.0),
+ new Vector(0.0, 2.0/3.0),
+ new Vector(0.5, 1.0),
+ new Vector(1.0, 2.0/3.0),
+ new Vector(0.0, 0.0),
+ new Vector(0.0, 2.0/3.0),
+ new Vector(1.0, 0.0)));
+ canvas.repaint
+ }
+
+ def test = {
+ val psfile = "-";
+ val canvas: Graphics = new PostScript(psfile, 2, 2);
+
+ // the identity frame
+ val identFrame = new Frame(new Vector(0.0,0.0),
+ new Vector(1.0,0.0),
+ new Vector(0.0,1.0));
+
+ // Create a basic painter...
+ val p: Painter = house(canvas);
+ // ...then compose it with itself.
+ val threeHouses = beside(p, beside(p, flipVert(p)));
+
+ // Use the painter to draw the final image.
+ threeHouses(identFrame);
+
+ // Don't forget to close the canvas!
+ canvas.close
+ }
+}
+
+//############################################################################
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ M0.test;
+ ()
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/Course-2002-07.check b/test/files/run/Course-2002-07.check
new file mode 100644
index 0000000000..0a378e6d20
--- /dev/null
+++ b/test/files/run/Course-2002-07.check
@@ -0,0 +1,137 @@
+ 0 = 0
+ 1 = 1
+ 0 + 1 = 1
+ 1 + 2 = 3
+2 + 3 + 4 = 9
+
+ 0 = 0
+ 1 = 1
+ 0 + 1 = 1
+ 1 + 2 = 3
+2 + 3 + 4 = 9
+
+ 0 = 0
+ 1 = 1
+ 0 + 1 = 1
+ 1 + 2 = 3
+2 + 3 + 4 = 9
+
+ 0 = 0
+ 1 = 1
+ 0 + 1 = 1
+ 1 + 2 = 3
+2 + 3 + 4 = 9
+
+List() = concat(List())
+List() = concat(List(List()))
+List() = concat(List(List(),List()))
+List() = concat(List(List(),List(),List()))
+List(1,2,3,4,5,6) = concat(List(List(1,2,3,4,5,6)))
+List(1,2,3,4,5,6) = concat(List(List(1,2,3,4,5,6),List()))
+List(1,2,3,4,5,6) = concat(List(List(1,2,3),List(4,5,6)))
+List(1,2,3,4,5,6) = concat(List(List(),List(1,2,3,4,5,6)))
+List(1,2,3,4,5,6) = concat(List(List(1,2,3,4,5,6),List(),List()))
+List(1,2,3,4,5,6) = concat(List(List(1,2,3,4,5),List(6),List()))
+List(1,2,3,4,5,6) = concat(List(List(1,2,3),List(4,5,6),List()))
+List(1,2,3,4,5,6) = concat(List(List(1),List(2,3,4,5,6),List()))
+List(1,2,3,4,5,6) = concat(List(List(),List(1,2,3,4,5,6),List()))
+List(1,2,3,4,5,6) = concat(List(List(),List(1,2,3,4,5),List(6)))
+List(1,2,3,4,5,6) = concat(List(List(),List(1,2,3),List(4,5,6)))
+List(1,2,3,4,5,6) = concat(List(List(),List(1),List(2,3,4,5,6)))
+List(1,2,3,4,5,6) = concat(List(List(),List(),List(1,2,3,4,5,6)))
+List(1,2,3,4,5,6) = concat(List(List(1,2),List(3,4),List(5,6)))
+
+List() = zipFun(List(),List())
+List() = zipFun(List(),List(a,b,c))
+List() = zipFun(List(1,2,3),List())
+List((1,a)) = zipFun(List(1),List(a))
+List((1,a)) = zipFun(List(1),List(a,b,c))
+List((1,a)) = zipFun(List(1,2,3),List(a))
+List((1,a),(2,b)) = zipFun(List(1,2),List(a,b))
+List((1,a),(2,b)) = zipFun(List(1,2),List(a,b,c))
+List((1,a),(2,b)) = zipFun(List(1,2,3),List(a,b))
+List((1,a),(2,b),(3,c)) = zipFun(List(1,2,3),List(a,b,c))
+
+List() = heads(List())
+List() = heads(List(List()))
+List() = heads(List(List(),List()))
+List() = heads(List(List(),List(),List()))
+List(1) = heads(List(List(1,2,3,4,5,6)))
+List(1) = heads(List(List(1,2,3,4,5,6),List()))
+List(1) = heads(List(List(),List(1,2,3,4,5,6)))
+List(1) = heads(List(List(1,2,3,4,5,6),List(),List()))
+List(1) = heads(List(List(),List(1,2,3,4,5,6),List()))
+List(1) = heads(List(List(),List(),List(1,2,3,4,5,6)))
+List(1,2) = heads(List(List(1),List(2,3,4,5,6),List()))
+List(1,2) = heads(List(List(),List(1),List(2,3,4,5,6)))
+List(1,4) = heads(List(List(1,2,3),List(4,5,6)))
+List(1,4) = heads(List(List(1,2,3),List(4,5,6),List()))
+List(1,4) = heads(List(List(),List(1,2,3),List(4,5,6)))
+List(1,6) = heads(List(List(1,2,3,4,5),List(6),List()))
+List(1,6) = heads(List(List(),List(1,2,3,4,5),List(6)))
+List(1,3,5) = heads(List(List(1,2),List(3,4),List(5,6)))
+
+List() = heads(List())
+List() = heads(List(List()))
+List() = heads(List(List(),List()))
+List() = heads(List(List(),List(),List()))
+List(1) = heads(List(List(1,2,3,4,5,6)))
+List(1) = heads(List(List(1,2,3,4,5,6),List()))
+List(1) = heads(List(List(),List(1,2,3,4,5,6)))
+List(1) = heads(List(List(1,2,3,4,5,6),List(),List()))
+List(1) = heads(List(List(),List(1,2,3,4,5,6),List()))
+List(1) = heads(List(List(),List(),List(1,2,3,4,5,6)))
+List(1,2) = heads(List(List(1),List(2,3,4,5,6),List()))
+List(1,2) = heads(List(List(),List(1),List(2,3,4,5,6)))
+List(1,4) = heads(List(List(1,2,3),List(4,5,6)))
+List(1,4) = heads(List(List(1,2,3),List(4,5,6),List()))
+List(1,4) = heads(List(List(),List(1,2,3),List(4,5,6)))
+List(1,6) = heads(List(List(1,2,3,4,5),List(6),List()))
+List(1,6) = heads(List(List(),List(1,2,3,4,5),List(6)))
+List(1,3,5) = heads(List(List(1,2),List(3,4),List(5,6)))
+
+f (x) = Prod(Var(x), Var(x))
+f'(x) = Sum(Prod(Var(x), Number(1)), Prod(Var(x), Number(1)))
+
+f (x) = x * x
+f'(x) = x * 1 + x * 1
+g (x) = 2 * x * x + 3 * x
+g'(x) = 2 * x * 1 + x * (2 * 1 + x * 0) + 3 * 1 + x * 0
+g (3) = 27
+g'(3) = 15
+
+ta(x) = x + 3
+tb(x) = x + 3
+tc(x) = x + 3
+td(x) = x + 3
+te(x) = 2 * x + 3
+tf(x) = 2 * x + 3
+tg(x) = 6 * x
+th(x) = x^6
+
+f4(x) = x^4 + 7 * x^3 + 20 * x^2 + 23 * x + 5
+f3(x) = 4 * x^3 + 21 * x^2 + 40 * x + 23
+f2(x) = 12 * x^2 + 42 * x + 40
+f1(x) = 24 * x + 42
+f0(x) = 24
+
+f4(0) = 5 ok
+f4(1) = 56 ok
+f4(2) = 203 ok
+f4(3) = 524 ok
+f4(4) = 1121 ok
+
+f3(0) = 23 ok
+f3(1) = 88 ok
+f3(2) = 219 ok
+f3(3) = 440 ok
+
+f2(0) = 40 ok
+f2(1) = 94 ok
+f2(2) = 172 ok
+
+f1(0) = 42 ok
+f1(1) = 66 ok
+
+f0(0) = 24 ok
+
diff --git a/test/files/run/Course-2002-07.scala b/test/files/run/Course-2002-07.scala
new file mode 100644
index 0000000000..98f09aafb7
--- /dev/null
+++ b/test/files/run/Course-2002-07.scala
@@ -0,0 +1,726 @@
+//############################################################################
+// Programmation IV - 2002 - Week 07
+//############################################################################
+// $Id$
+
+import java.lang.System; // to avoid name clash with .NET's library
+
+object M0 {
+
+ trait Expr {
+ def isNumber: boolean;
+ def isSum: boolean;
+ def numValue: int;
+ def leftOp: Expr;
+ def rightOp: Expr;
+ }
+
+ class Number(n: int) extends Expr {
+ def isNumber: boolean = true;
+ def isSum: boolean = false;
+ def numValue: int = n;
+ def leftOp: Expr = error("Number.leftOp");
+ def rightOp: Expr = error("Number.rightOp");
+ }
+ class Sum(e1: Expr, e2: Expr) extends Expr {
+ def isNumber: boolean = false;
+ def isSum: boolean = true;
+ def numValue: int = error("Sum.numValue");
+ def leftOp: Expr = e1;
+ def rightOp: Expr = e2;
+ }
+
+ class Prod(e1: Expr, e2: Expr) extends Expr {
+ def isNumber: boolean = false;
+ def isSum: boolean = false;
+ def numValue: int = error("Prod.numValue");
+ def leftOp: Expr = e1;
+ def rightOp: Expr = e2;
+ }
+
+ class Var(x: String) extends Expr {
+ def isNumber: boolean = false;
+ def isSum: boolean = false;
+ def numValue: int = error("Var.numValue");
+ def leftOp: Expr = error("Var.leftOp");
+ def rightOp: Expr = error("Var.rightOp");
+ }
+
+ def eval(e: Expr): int = {
+ if (e.isNumber) e.numValue
+ else if (e.isSum) eval(e.leftOp) + eval(e.rightOp)
+ else error("unknown expression")
+ }
+
+ def test = {
+ System.out.println(" 0 = " + eval(new Number(0)));
+ System.out.println(" 1 = " + eval(new Number(1)));
+ System.out.println(" 0 + 1 = " +
+ eval(new Sum(new Number(0),new Number(1))));
+ System.out.println(" 1 + 2 = " +
+ eval(new Sum(new Number(1),new Number(2))));
+ System.out.println("2 + 3 + 4 = " +
+ eval(new Sum(new Sum(new Number(2),new Number(3)),new Number(4))));
+ System.out.println();
+ }
+
+}
+
+//############################################################################
+
+object M1 {
+
+ trait Expr {
+ def eval: int;
+ }
+ class Number(n: int) extends Expr {
+ def eval: int = n;
+ }
+ class Sum(e1: Expr, e2: Expr) extends Expr {
+ def eval: int = e1.eval + e2.eval;
+ }
+
+ def test = {
+ System.out.println(" 0 = " + new Number(0).eval);
+ System.out.println(" 1 = " + new Number(1).eval);
+ System.out.println(" 0 + 1 = " +
+ new Sum(new Number(0),new Number(1)).eval);
+ System.out.println(" 1 + 2 = " +
+ new Sum(new Number(1),new Number(2)).eval);
+ System.out.println("2 + 3 + 4 = " +
+ new Sum(new Sum(new Number(2),new Number(3)),new Number(4)).eval);
+ System.out.println();
+ }
+}
+
+//############################################################################
+
+object M2 {
+
+ trait Expr;
+ case class Number(n: int) extends Expr;
+ case class Sum(e1: Expr, e2: Expr) extends Expr;
+
+ def eval(e: Expr): int = e match {
+ case Number(n) => n
+ case Sum(e1, e2) => eval(e1) + eval(e2)
+ }
+
+ def test = {
+ System.out.println(" 0 = " + eval(Number(0)));
+ System.out.println(" 1 = " + eval(Number(1)));
+ System.out.println(" 0 + 1 = " + eval(Sum(Number(0),Number(1))));
+ System.out.println(" 1 + 2 = " + eval(Sum(Number(1),Number(2))));
+ System.out.println("2 + 3 + 4 = " + eval(Sum(Sum(Number(2),Number(3)),
+ Number(4))));
+ System.out.println();
+ }
+}
+
+//############################################################################
+
+object M3 {
+
+ trait Expr {
+ def eval: int = this match {
+ case Number(n) => n
+ case Sum(e1, e2) => e1.eval + e2.eval
+ }
+ }
+ case class Number(n: int) extends Expr;
+ case class Sum(e1: Expr, e2: Expr) extends Expr;
+
+ def test = {
+ System.out.println(" 0 = " + Number(0).eval);
+ System.out.println(" 1 = " + Number(1).eval);
+ System.out.println(" 0 + 1 = " + Sum(Number(0),Number(1)).eval);
+ System.out.println(" 1 + 2 = " + Sum(Number(1),Number(2)).eval);
+ System.out.println("2 + 3 + 4 = " + Sum(Sum(Number(2),Number(3)),
+ Number(4)).eval);
+ System.out.println();
+ }
+
+}
+
+//############################################################################
+
+object M4 {
+
+ def concat[a](xss: List[List[a]]): List[a] = xss match {
+ case List() => List()
+ case xs :: xss1 => xs ::: concat(xss1)
+ }
+
+ def test_concat[a](xss: List[List[a]]) = {
+ System.out.println(concat(xss).toString() + " = concat(" + xss + ")"); // !!! .toString()
+ }
+
+ def test = {
+ test_concat(List());
+ test_concat(List(List()));
+ test_concat(List(List(),List()));
+ test_concat(List(List(),List(),List()));
+
+ test_concat(List(List(1,2,3,4,5,6)));
+ test_concat(List(List(1,2,3,4,5,6),List[int]())); // !!! [int]
+ test_concat(List(List(1,2,3),List(4,5,6)));
+ test_concat(List(List[int](),List(1,2,3,4,5,6))); // !!! [int]
+ test_concat(List(List(1,2,3,4,5,6),List[int](),List[int]())); // !!! [int]
+ test_concat(List(List(1,2,3,4,5),List(6),List[int]())); // !!! [int]
+ test_concat(List(List(1,2,3),List(4,5,6),List[int]())); // !!! [int]
+ test_concat(List(List(1),List(2,3,4,5,6),List[int]())); // !!! [int]
+ test_concat(List(List[int](),List(1,2,3,4,5,6),List[int]())); // !!! [int]
+ test_concat(List(List[int](),List(1,2,3,4,5),List(6))); // !!! [int]
+ test_concat(List(List[int](),List(1,2,3),List(4,5,6))); // !!! [int]
+ test_concat(List(List[int](),List(1),List(2,3,4,5,6))); // !!! [int]
+ test_concat(List(List[int](),List[int](),List(1,2,3,4,5,6))); // !!! [int]
+ test_concat(List(List(1,2),List(3,4),List(5,6)));
+ System.out.println();
+ }
+
+}
+
+//############################################################################
+
+object M5 {
+
+ def zipFun[a,b](xs:List[a], ys:List[b]):List[Pair[a,b]] = Pair(xs,ys) match {
+ case Pair(List(), _) => List()
+ case Pair(_, List()) => List()
+ case Pair(x :: xs1, y :: ys1) => Pair(x, y) :: zipFun(xs1, ys1)
+ }
+
+ def test_zipFun[a,b](xs: List[a], ys: List[b]) = {
+ System.out.println(zipFun(xs,ys).toString() + " = zipFun(" + xs + "," + ys + ")"); // !!! .toString()
+ }
+
+ def test = {
+ test_zipFun(List(),List());
+ test_zipFun(List(),List('a','b','c'));
+ test_zipFun(List(1,2,3),List());
+
+ test_zipFun(List(1),List('a'));
+ test_zipFun(List(1),List('a','b','c'));
+ test_zipFun(List(1,2,3),List('a'));
+
+ test_zipFun(List(1,2),List('a','b'));
+ test_zipFun(List(1,2),List('a','b','c'));
+ test_zipFun(List(1,2,3),List('a','b'));
+
+ test_zipFun(List(1,2,3),List('a','b','c'));
+
+ System.out.println();
+ }
+
+}
+
+
+//############################################################################
+
+object M6 {
+
+ def zipFun[a,b](xs:List[a], ys:List[b]):List[Pair[a,b]] = Pair(xs,ys) match {
+ // !!! case Pair(List(), _), Pair(_, List()) => List()
+ case Pair(x :: xs1, y :: ys1) => Pair(x, y) :: zipFun(xs1, ys1)
+ }
+
+ def test_zipFun[a,b](xs: List[a], ys: List[b]) = {
+ System.out.println(zipFun(xs,ys).toString() + " = zipFun(" + xs + "," + ys + ")"); // !!! .toString()
+ }
+
+ def test = {
+ test_zipFun(List(),List());
+ test_zipFun(List(),List('a','b','c'));
+ test_zipFun(List(1,2,3),List());
+
+ test_zipFun(List(1),List('a'));
+ test_zipFun(List(1),List('a','b','c'));
+ test_zipFun(List(1,2,3),List('a'));
+
+ test_zipFun(List(1,2),List('a','b'));
+ test_zipFun(List(1,2),List('a','b','c'));
+ test_zipFun(List(1,2,3),List('a','b'));
+
+ test_zipFun(List(1,2,3),List('a','b','c'));
+
+ System.out.println();
+ }
+
+}
+
+//############################################################################
+
+object M7 {
+
+ def heads[a](xss: List[List[a]]): List[a] = xss flatMap {
+ case x :: xs => List(x)
+ case List() => List()
+ }
+
+ def test_heads[a](xss: List[List[a]]) = {
+ System.out.println(heads(xss).toString() + " = heads(" + xss + ")"); // !!! .toString()
+ }
+
+
+ def test = {
+ test_heads(List());
+ test_heads(List(List()));
+ test_heads(List(List(),List()));
+ test_heads(List(List(),List(),List()));
+
+ test_heads(List(List(1,2,3,4,5,6)));
+ test_heads(List(List(1,2,3,4,5,6),List[int]())); // !!! [int]
+ test_heads(List(List[int](),List(1,2,3,4,5,6))); // !!! [int]
+ test_heads(List(List(1,2,3,4,5,6),List[int](),List[int]())); // !!! [int]
+ test_heads(List(List[int](),List(1,2,3,4,5,6),List[int]())); // !!! [int]
+ test_heads(List(List[int](),List[int](),List(1,2,3,4,5,6))); // !!! [int]
+
+ test_heads(List(List(1),List(2,3,4,5,6),List[int]())); // !!! [int]
+ test_heads(List(List[int](),List(1),List(2,3,4,5,6))); // !!! [int]
+
+ test_heads(List(List(1,2,3),List(4,5,6)));
+ test_heads(List(List(1,2,3),List(4,5,6),List[int]())); // !!! [int]
+ test_heads(List(List[int](),List(1,2,3),List(4,5,6))); // !!! [int]
+
+ test_heads(List(List(1,2,3,4,5),List(6),List[int]())); // !!! [int]
+ test_heads(List(List[int](),List(1,2,3,4,5),List(6))); // !!! [int]
+
+ test_heads(List(List(1,2),List(3,4),List(5,6)));
+
+ System.out.println();
+ }
+
+}
+
+//############################################################################
+
+object M8 {
+
+ def heads[a](xss: List[List[a]]): List[a] = xss.flatMap {
+ y => y match {
+ case x :: xs => List(x)
+ case List() => List()
+ }
+ }
+
+ def test_heads[a](xss: List[List[a]]) = {
+ System.out.println(heads(xss).toString() + " = heads(" + xss + ")"); // !!! .toString()
+ }
+
+
+ def test = {
+ test_heads(List());
+ test_heads(List(List()));
+ test_heads(List(List(),List()));
+ test_heads(List(List(),List(),List()));
+
+ test_heads(List(List(1,2,3,4,5,6)));
+ test_heads(List(List(1,2,3,4,5,6),List[int]())); // !!! [int]
+ test_heads(List(List[int](),List(1,2,3,4,5,6))); // !!! [int]
+ test_heads(List(List(1,2,3,4,5,6),List[int](),List[int]())); // !!! [int]
+ test_heads(List(List[int](),List(1,2,3,4,5,6),List[int]())); // !!! [int]
+ test_heads(List(List[int](),List[int](),List(1,2,3,4,5,6))); // !!! [int]
+
+ test_heads(List(List(1),List(2,3,4,5,6),List[int]())); // !!! [int]
+ test_heads(List(List[int](),List(1),List(2,3,4,5,6))); // !!! [int]
+
+ test_heads(List(List(1,2,3),List(4,5,6)));
+ test_heads(List(List(1,2,3),List(4,5,6),List[int]())); // !!! [int]
+ test_heads(List(List[int](),List(1,2,3),List(4,5,6))); // !!!
+
+ test_heads(List(List(1,2,3,4,5),List(6),List[int]())); // !!! [int]
+ test_heads(List(List[int](),List(1,2,3,4,5),List(6))); // !!! [int]
+
+ test_heads(List(List(1,2),List(3,4),List(5,6)));
+
+ System.out.println();
+ }
+
+}
+
+//############################################################################
+
+object M9 {
+
+ trait Expr {
+ def derive(v: Var): Expr = this match {
+ case Number(_) => Number(0)
+ case Var(name) => if (name == v.name) Number(1) else Number(0)
+ case Sum(e1, e2) => Sum(e1 derive v, e2 derive v)
+ case Prod(e1, e2) => Sum(Prod(e1, e2 derive v), Prod(e2, e1 derive v))
+ }
+ }
+ case class Number(x: int) extends Expr {
+ override def toString() = "Number(" + x + ")"; // !!! remove !
+ }
+ case class Var(name: String) extends Expr {
+ override def toString() = "Var(" + name + ")"; // !!! remove !
+ }
+ case class Sum(e1: Expr, e2: Expr) extends Expr {
+ override def toString() = "Sum(" + e1 + ", " + e2 + ")"; // !!! remove !
+ }
+ case class Prod(e1: Expr, e2: Expr) extends Expr {
+ override def toString() = "Prod(" + e1 + ", " + e2 + ")"; // !!! remove !
+ }
+
+ def test = {
+ val x = Var("x");
+ val f0 = Prod(x, x);
+ val f1 = f0 derive x;
+ System.out.println("f (x) = " + f0);
+ System.out.println("f'(x) = " + f1);
+ System.out.println();
+ }
+
+}
+
+//############################################################################
+
+object MA {
+
+ def lookup[k,v](xs: List[Pair[k,v]], k: k): v = xs match {
+ case List() => error("no value for " + k)
+ case Pair(k1,v1) :: xs1 => if (k1 == k) v1 else lookup(xs1, k)
+ }
+
+ trait Expr {
+ def + (that: Expr) = Sum(this, that);
+ def * (that: Expr) = Prod(this, that);
+ def derive(v: Var): Expr = this match {
+ case Number(_) => Number(0)
+ case Var(name) => if (name == v.name) Number(1) else Number(0)
+ case Sum(e1, e2) => (e1 derive v) + (e2 derive v)
+ case Prod(e1, e2) => e1 * (e2 derive v) + e2 * (e1 derive v)
+ }
+ }
+ case class Number(x: int) extends Expr {
+ override def toString() = x.toString()
+ }
+ case class Var(name: String) extends Expr {
+ override def toString() = name;
+ }
+ case class Sum(e1: Expr, e2: Expr) extends Expr {
+ override def toString() = e1.toString() + " + " + e2.toString();
+ }
+ case class Prod(e1: Expr, e2: Expr) extends Expr {
+ override def toString() = {
+ def factorToString(e: Expr) = e match {
+ case Sum(_, _) => "(" + e.toString() + ")"
+ case _ => e.toString()
+ }
+ factorToString(e1) + " * " + factorToString(e2);
+ }
+ }
+
+ def eval(e: Expr): int = e match {
+ case Number(n) => n
+ case Var(_) => error("cannot evaluate variable")
+ case Sum(e1, e2) => eval(e1) + eval(e2)
+ case Prod(e1, e2) => eval(e1) * eval(e2)
+ }
+
+ def evalvars(xs: List[Pair[String,int]]): Expr => Int = {
+ def loop(e: Expr): int = e match {
+ case Number(n) => n
+ case Var(name) => lookup(xs,name)
+ case Sum(e1, e2) => loop(e1) + loop(e2)
+ case Prod(e1, e2) => loop(e1) * loop(e2)
+ }
+ loop
+ }
+
+ def test = {
+ val x = Var("x");
+
+ val f0 = x * x;
+ val f1 = f0 derive x;
+ System.out.println("f (x) = " + f0);
+ System.out.println("f'(x) = " + f1);
+
+ val g0 = Number(2) * x * x + Number(3) * x;
+ val g1 = g0 derive x;
+ System.out.println("g (x) = " + g0);
+ System.out.println("g'(x) = " + g1);
+ System.out.println("g (3) = " + evalvars(List(Pair("x",3)))(g0));
+ System.out.println("g'(3) = " + evalvars(List(Pair("x",3)))(g1));
+
+ System.out.println();
+ }
+
+}
+
+//############################################################################
+
+object Utils {
+
+ private def power0(x: int, y: int): int =
+ if (y == 1) x else if (y % 2 == 0) power0(x*x,y/2) else x*power0(x, y-1);
+
+ def power(x: int, y: int): int = Pair(x,y) match {
+ case Pair(0,0) => error("power(0,0)")
+ case Pair(0,_) => 0
+ case Pair(1,_) => 1
+ case Pair(_,0) => 1
+ case Pair(_,1) => x
+ case Pair(_,2) => x*x
+ case Pair(_,_) => if (y < 0) 1/power0(x,y) else power0(x,y)
+ }
+
+ def lookup(entries: List[Pair[String,int]], key: String):int = entries match{
+ case List() => error("no value for " + key)
+ case Pair(k,v) :: _ if (k == key) => v
+ case _ :: rest => lookup(rest, key)
+ }
+
+ def compare(xs: List[String], ys: List[String]): int = Pair(xs,ys) match{
+ case Pair(List(), List()) => 0
+ case Pair(List(), _ ) => -1
+ case Pair(_ , List()) => +1
+ case Pair(x::xs , y::ys ) => {
+ val diff = x.compareTo(y);
+ if (diff != 0) diff else compare(xs,ys)
+ }
+ }
+
+}
+
+object MB {
+
+ import Utils._;
+
+
+ trait Expr {
+
+ private def count: int = this match {
+ case Lit(n) => n
+ case Mul(Lit(n),_) => n
+ case _ => 1
+ }
+
+ private def term: Expr = this match {
+ case Lit(_) => Lit(1)
+ case Mul(Lit(_),r) => r
+ case _ => this
+ }
+
+ private def vars: List[String] = this match {
+ case Var(n) => List(n)
+ case Mul(l,r) => l.vars ::: r.vars
+ case Pow(l,n) => { val vs = l.vars; List.range(0,n).flatMap(i => vs) }
+ case _ => List()
+ }
+
+ private def +< (that: Expr): boolean = (this +<? that) < 0;
+ private def +<= (that: Expr): boolean = (this +<? that) <= 0;
+ private def +<? (that: Expr): int = Pair(this,that) match {
+ case Pair(Add(_,_), _ ) => 0
+ case Pair(_ , Add(_,_)) => 0
+ case Pair(_ , _ ) => compare(this.vars,that.vars)
+ }
+
+ def + (that: Expr): Expr = if (that +<= this) Pair(this,that) match {
+ case Pair(_ , Lit(0) ) => this
+ case Pair(Lit(l) , Lit(r) ) => Lit(l + r)
+ case Pair(_ , Add(rl,rr)) => (this + rl) + rr
+ case Pair(Add(ll,lr), _ ) if (lr +<= that) => ll + (that + lr)
+ case Pair(_ , _ ) => {
+ val l = this.term;
+ val r = that.term;
+ if (l equ r) Lit(this.count + that.count) * r else Add(this, that)
+ }
+ } else that + this;
+
+ private def *< (that: Expr): boolean = (this *<? that) < 0;
+ private def *<= (that: Expr): boolean = (this *<? that) <= 0;
+ private def *<? (that: Expr): int = Pair(this,that) match {
+ case Pair(Mul(_,_), _ ) => 0
+ case Pair(_ , Mul(_,_)) => 0
+ case Pair(Add(_,_), Add(_,_)) => 0
+ case Pair(Add(_,_), _ ) => -1
+ case Pair(_ , Add(_,_)) => +1
+ case Pair(Lit(_) , Lit(_) ) => 0
+ case Pair(Lit(_) , _ ) => -1
+ case Pair(_ , Lit(_) ) => +1
+ case Pair(Var(l) , Var(r) ) => l.compareTo(r)
+ case Pair(Var(_) , Pow(r,_)) => if (this *<= r) -1 else +1
+ case Pair(Pow(l,_), Var(_) ) => if (l *< that) -1 else +1
+ case Pair(Pow(l,_), Pow(r,_)) => l *<? r
+ }
+
+ def * (that: Expr): Expr = if (this *<= that) Pair(this,that) match {
+ case Pair(Lit(0) , _ ) => this
+ case Pair(Lit(1) , _ ) => that
+ case Pair(Mul(ll,lr), r ) => ll * (lr * r)
+ case Pair(Add(ll,lr), r ) => ll * r + lr * r
+ case Pair(Lit(l) , Lit(r) ) => Lit(l * r)
+ case Pair(Var(_) , Var(_) ) if (this equ that) => Pow(this,2)
+ case Pair(Var(_) , Pow(r,n) ) if (this equ r) => Pow(this,n + 1)
+ case Pair(Pow(ll,lr), Pow(rl,rr)) if (ll equ rl) => Pow(ll,lr + rr)
+ case Pair(l , Mul(rl,rr)) if (rl *<= l) => (rl * l) * rr
+ case Pair(_ , _ ) => Mul(this,that)
+ } else that * this;
+
+ def ^ (that: int): Expr = Pair(this,that) match {
+ case Pair(_ ,1) => this
+ case Pair(Lit(i) ,n) => Lit(power(i,n))
+ case Pair(Var(_) ,n) => Pow(this,n)
+ case Pair(Add(_,_),n) => this * (this ^ (n - 1))
+ case Pair(Mul(l,r),n) => (l ^ n) * (r ^ n)
+ case Pair(Pow(e,m),n) => Pow(e,m + n)
+ }
+
+ def derive(v: Var): Expr = this match {
+ case Lit(_) => Lit(0)
+ case Var(name) => if (name == v.name) Lit(1) else Lit(0)
+ case Add(e1, e2) => (e1 derive v) + (e2 derive v)
+ case Mul(e1, e2) => e1 * (e2 derive v) + e2 * (e1 derive v)
+ case Pow(e1, i2) => Lit(i2) * (e1 derive v) * (e1 ^ (i2 - 1))
+ }
+
+ def evaluate(vars: List[Pair[String,int]]): int = this match {
+ case Lit(cst) => cst
+ case Var (name) => lookup(vars, name)
+ case Add (l, r) => l.evaluate(vars) + r.evaluate(vars)
+ case Mul (l, r) => l.evaluate(vars) * r.evaluate(vars)
+ case Pow(l, r) => power(l.evaluate(vars), r)
+ }
+
+ def equ(that: Expr): boolean = Pair(this,that) match {
+ case Pair(Lit(l) ,Lit(r)) => l == r
+ case Pair(Var(l) ,Var(r)) => l == r
+ case Pair(Add(ll,lr),Add(rl,rr)) => (ll equ rl) && (lr equ rr)
+ case Pair(Mul(ll,lr),Mul(rl,rr)) => (ll equ rl) && (lr equ rr)
+ case Pair(Pow(ll,lr),Pow(rl,rr)) => (ll equ rl) && (lr == rr)
+ case _ => false
+ }
+
+ }
+
+ case class Lit(x: int) extends Expr {
+ override def toString() = x.toString()
+ }
+
+ case class Var(name: String) extends Expr {
+ override def toString() = name;
+ }
+
+ case class Add(e1: Expr, e2: Expr) extends Expr {
+ override def toString() = e1.toString() + " + " + e2.toString(); // !!! .toString
+ }
+
+ case class Mul(e1: Expr, e2: Expr) extends Expr {
+ override def toString() = {
+ def factorToString(e: Expr) = e match {
+ case Add(_, _) => "(" + e.toString() + ")"
+ case _ => e.toString()
+ }
+ factorToString(e1) + " * " + factorToString(e2);
+ }
+ }
+
+ case class Pow(e1: Expr, i2: int) extends Expr {
+ override def toString() = {
+ def factorToString(e: Expr) = e match {
+ case Add(_, _) => "(" + e.toString() + ")"
+ case Mul(_, _) => "(" + e.toString() + ")"
+ case _ => e.toString()
+ }
+ factorToString(e1) + "^" + i2;
+ }
+ }
+
+ def test = {
+ val _1 = Lit(1);
+ val _2 = Lit(2);
+ val _3 = Lit(3);
+ val _4 = Lit(4);
+ val _5 = Lit(5);
+
+ val x = Var("x");
+
+ val ta = (_1 + (_2 + x));
+ val tb = (_1 + (x + _2));
+ val tc = ((_1 + x) + _2);
+ val td = ((x + _1) + _2);
+ val te = ((x + _1) + (x + _2));
+ val tf = ((_1 + x) + (_2 + x));
+ val tg = x + x + (x * _2) + x + x;
+ val th = x * x * (x ^ 2) * x * x;
+
+ System.out.println("ta(x) = " + ta);
+ System.out.println("tb(x) = " + tb);
+ System.out.println("tc(x) = " + tc);
+ System.out.println("td(x) = " + td);
+ System.out.println("te(x) = " + te);
+ System.out.println("tf(x) = " + tf);
+ System.out.println("tg(x) = " + tg);
+ System.out.println("th(x) = " + th);
+ System.out.println();
+
+ val f4 = (x+ _3)*(_2+x)*x*(x+ _1) + (x+ _5)*(x*(x+ _2)+x+ _1) + (x^2) + x;
+ val f3 = f4.derive(x);
+ val f2 = f3.derive(x);
+ val f1 = f2.derive(x);
+ val f0 = f1.derive(x);
+
+ System.out.println("f4(x) = " + f4);
+ System.out.println("f3(x) = " + f3);
+ System.out.println("f2(x) = " + f2);
+ System.out.println("f1(x) = " + f1);
+ System.out.println("f0(x) = " + f0);
+ System.out.println();
+
+ def check(n: String, f: Expr, x: int, e: int) = {
+ val a: int = f.evaluate(List(Pair("x",x)));
+ val s: String = if (a == e) "ok" else "KO(" + e + ")";
+ System.out.println(n + "(" + x + ") = " + a + " " + s);
+ }
+
+ check("f4", f4, 0, 5);
+ check("f4", f4, 1, 56);
+ check("f4", f4, 2, 203);
+ check("f4", f4, 3, 524);
+ check("f4", f4, 4, 1121);
+ System.out.println();
+
+ check("f3", f3, 0, 23);
+ check("f3", f3, 1, 88);
+ check("f3", f3, 2, 219);
+ check("f3", f3, 3, 440);
+ System.out.println();
+
+ check("f2", f2, 0, 40);
+ check("f2", f2, 1, 94);
+ check("f2", f2, 2, 172);
+ System.out.println();
+
+ check("f1", f1, 0, 42);
+ check("f1", f1, 1, 66);
+ System.out.println();
+
+ check("f0", f0, 0, 24);
+ System.out.println();
+ }
+}
+
+//############################################################################
+
+object Test {
+ def main(args: Array[String]): unit = {
+ M0.test;
+ M1.test;
+ M2.test;
+ M3.test;
+ M4.test;
+ M5.test;
+ // !!! M6.test;
+ M7.test;
+ M8.test;
+ M9.test;
+ MA.test;
+ MB.test;
+ ()
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/Course-2002-08.check b/test/files/run/Course-2002-08.check
new file mode 100644
index 0000000000..ec25c77524
--- /dev/null
+++ b/test/files/run/Course-2002-08.check
@@ -0,0 +1,171 @@
+x = abc
+count = 111
+x = hello
+count = 112
+
+account deposit 50 -> ()
+account withdraw 20 -> 30
+account withdraw 20 -> 10
+account withdraw 15 ->
+
+x deposit 30 -> ()
+y withdraw 20 ->
+
+x deposit 30 -> ()
+x withdraw 20 -> 10
+
+x deposit 30 -> ()
+y withdraw 20 -> 10
+
+2^0 = 1.0
+2^1 = 2.0
+2^2 = 4.0
+2^3 = 8.0
+
+2^0 = 1.0
+2^1 = 2.0
+2^2 = 4.0
+2^3 = 8.0
+
+1 2 3
+List(1,2,3)
+
+out 0 new-value = false
+*** simulation started ***
+out 1 new-value = true
+!0 = 1
+
+*** simulation started ***
+out 2 new-value = false
+!1 = 0
+
+out 2 new-value = false
+
+*** simulation started ***
+0 & 0 = 0
+
+*** simulation started ***
+0 & 1 = 0
+
+*** simulation started ***
+out 11 new-value = true
+out 11 new-value = false
+1 & 0 = 0
+
+*** simulation started ***
+out 14 new-value = true
+1 & 1 = 1
+
+out 14 new-value = false
+
+*** simulation started ***
+0 | 0 = 0
+
+*** simulation started ***
+out 24 new-value = true
+0 | 1 = 1
+
+*** simulation started ***
+1 | 0 = 1
+
+*** simulation started ***
+1 | 1 = 1
+
+sum 34 new-value = false
+carry 34 new-value = false
+
+*** simulation started ***
+0 + 0 = 0
+
+*** simulation started ***
+sum 47 new-value = true
+0 + 1 = 1
+
+*** simulation started ***
+carry 50 new-value = true
+carry 50 new-value = false
+sum 54 new-value = false
+sum 54 new-value = true
+1 + 0 = 1
+
+*** simulation started ***
+carry 57 new-value = true
+sum 61 new-value = false
+1 + 1 = 2
+
+sum 61 new-value = false
+carry 61 new-value = false
+
+*** simulation started ***
+0 + 0 + 0 = 0
+
+*** simulation started ***
+sum 82 new-value = true
+0 + 0 + 1 = 1
+
+*** simulation started ***
+sum 89 new-value = false
+carry 90 new-value = true
+sum 97 new-value = true
+carry 98 new-value = false
+0 + 1 + 0 = 1
+
+*** simulation started ***
+sum 113 new-value = false
+carry 114 new-value = true
+0 + 1 + 1 = 2
+
+*** simulation started ***
+sum 121 new-value = true
+carry 122 new-value = false
+sum 129 new-value = false
+sum 129 new-value = true
+1 + 0 + 0 = 1
+
+*** simulation started ***
+carry 137 new-value = true
+sum 144 new-value = false
+1 + 0 + 1 = 2
+
+*** simulation started ***
+carry 152 new-value = false
+sum 152 new-value = true
+sum 158 new-value = false
+carry 159 new-value = true
+1 + 1 + 0 = 2
+
+*** simulation started ***
+sum 173 new-value = true
+1 + 1 + 1 = 3
+
+in 0 new-value = false
+ctrl0 0 new-value = false
+ctrl1 0 new-value = false
+ctrl2 0 new-value = false
+out0 0 new-value = false
+out1 0 new-value = false
+out2 0 new-value = false
+out3 0 new-value = false
+out4 0 new-value = false
+out5 0 new-value = false
+out6 0 new-value = false
+out7 0 new-value = false
+in 0 new-value = true
+*** simulation started ***
+out0 10 new-value = true
+ctrl0 10 new-value = true
+*** simulation started ***
+out1 13 new-value = true
+out0 14 new-value = false
+ctrl1 14 new-value = true
+*** simulation started ***
+out3 20 new-value = true
+out1 21 new-value = false
+ctrl2 21 new-value = true
+*** simulation started ***
+out7 30 new-value = true
+out3 31 new-value = false
+ctrl0 31 new-value = false
+*** simulation started ***
+out7 34 new-value = false
+out6 35 new-value = true
diff --git a/test/files/run/Course-2002-08.scala b/test/files/run/Course-2002-08.scala
new file mode 100644
index 0000000000..a0d679d3d1
--- /dev/null
+++ b/test/files/run/Course-2002-08.scala
@@ -0,0 +1,602 @@
+//############################################################################
+// Programmation IV - 2002 - Week 08
+//############################################################################
+// $Id$
+
+import List._;
+
+object M0 {
+
+ var x: String = "abc";
+ var count = 111;
+
+ def test = {
+ Console.println("x = " + x);
+ Console.println("count = " + count);
+ x = "hello";
+ count = count + 1;
+ Console.println("x = " + x);
+ Console.println("count = " + count);
+ Console.println;
+ }
+}
+
+//############################################################################
+
+object M1 {
+
+ class BankAccount() {
+ private var balance = 0;
+ def deposit(amount: Int): Unit =
+ if (amount > 0) balance = balance + amount;
+
+ def withdraw(amount: Int): Int =
+ if (0 < amount && amount <= balance) {
+ balance = balance - amount;
+ balance
+ } else error("insufficient funds");
+ }
+
+ def test0 = {
+ val account = new BankAccount();
+ Console.print("account deposit 50 -> ");
+ Console.println((account deposit 50).toString()); // !!! .toString
+ Console.print("account withdraw 20 -> ");
+ Console.println(account withdraw 20);
+ Console.print("account withdraw 20 -> ");
+ Console.println(account withdraw 20);
+ Console.print("account withdraw 15 -> ");
+ Console.println;
+ }
+
+ def test1 = {
+ val x = new BankAccount();
+ val y = new BankAccount();
+ Console.print("x deposit 30 -> ");
+ Console.println((x deposit 30).toString()); // !!! .toString
+ Console.print("y withdraw 20 -> ");
+ Console.println;
+ }
+
+ def test2 = {
+ val x = new BankAccount();
+ val y = new BankAccount();
+ Console.print("x deposit 30 -> ");
+ Console.println((x deposit 30).toString()); // !!! .toString
+ Console.print("x withdraw 20 -> ");
+ Console.println(x withdraw 20);
+ }
+
+ def test3 = {
+ val x = new BankAccount();
+ val y = x;
+ Console.print("x deposit 30 -> ");
+ Console.println((x deposit 30).toString()); // !!! .toString
+ Console.print("y withdraw 20 -> ");
+ Console.println(y withdraw 20);
+ }
+
+ def test = {
+ test0; Console.println;
+ test1; Console.println;
+ test2; Console.println;
+ test3; Console.println;
+ }
+}
+
+
+//############################################################################
+
+object M2 {
+
+ def While(condition: => Boolean)(command: => Unit): Unit =
+ if (condition) {
+ command; While(condition)(command)
+ } else {
+ }
+
+ def power (x: Double, exp: Int): Double = {
+ var r = 1.0;
+ var i = exp;
+ While (i > 0) { r = r * x; i = i - 1 }
+ r
+ }
+
+ def test = {
+ Console.println("2^0 = " + power(2,0));
+ Console.println("2^1 = " + power(2,1));
+ Console.println("2^2 = " + power(2,2));
+ Console.println("2^3 = " + power(2,3));
+ Console.println;
+ }
+}
+
+//############################################################################
+
+object M3 {
+
+ def power (x: Double, exp: Int): Double = {
+ var r = 1.0;
+ var i = exp;
+ while (i > 0) { r = r * x; i = i - 1 }
+ r
+ }
+
+ def test = {
+ Console.println("2^0 = " + power(2,0));
+ Console.println("2^1 = " + power(2,1));
+ Console.println("2^2 = " + power(2,2));
+ Console.println("2^3 = " + power(2,3));
+ Console.println;
+ }
+}
+
+//############################################################################
+
+object M4 {
+
+ def test = {
+ for (val i <- range(1, 4)) { Console.print(i + " ") };
+ Console.println;
+ Console.println(for (val i <- range(1, 4)) yield i);
+ Console.println;
+ }
+}
+
+//############################################################################
+
+object M5 {
+
+ type Action = () => Unit;
+
+ class Wire() {
+ private var sigVal = false;
+ private var actions: List[Action] = List();
+ def getSignal = sigVal;
+ def setSignal(s: Boolean) =
+ if (s != sigVal) {
+ sigVal = s;
+ actions.foreach(action => action());
+ }
+ def addAction(a: Action) = {
+ actions = a :: actions; a()
+ }
+ }
+
+ abstract class Simulation() {
+ private type Agenda = List[Pair[Int, Action]];
+ private var agenda: Agenda = List();
+ private var curtime = 0;
+ def currentTime: Int = curtime;
+
+ def afterDelay(delay: Int)(action: Action): Unit = {
+ def insert(ag: Agenda, time: Int): Agenda = ag match {
+ case List() =>
+ List(Pair(time, action))
+ case Pair(t, act) :: ag1 =>
+ if (time < t) Pair(time, action) :: ag
+ else Pair(t, act) :: insert(ag1, time)
+ }
+ agenda = insert(agenda, curtime + delay)
+ }
+
+ private def next: Unit = agenda match {
+ case List() => ()
+ case Pair(time, action) :: ag1 => {
+ agenda = ag1;
+ curtime = time;
+ action();
+ }
+ }
+
+ def run: Unit = {
+ afterDelay(0){() => Console.println("*** simulation started ***"); }
+ while (!agenda.isEmpty) { next }
+ }
+ }
+
+ abstract class BasicCircuitSimulation() extends Simulation() {
+
+ val InverterDelay: Int;
+ val AndGateDelay: Int;
+ val OrGateDelay: Int;
+
+ def inverter(input: Wire, output: Wire): Unit = {
+ def invertAction() = {
+ val inputSig = input.getSignal;
+ afterDelay(InverterDelay) {() => output.setSignal(!inputSig) };
+ }
+ input addAction invertAction
+ }
+
+ def andGate(a1: Wire, a2: Wire, output: Wire): Unit = {
+ def andAction() = {
+ val a1Sig = a1.getSignal;
+ val a2Sig = a2.getSignal;
+ afterDelay(AndGateDelay) {() => output.setSignal(a1Sig & a2Sig) };
+ }
+ a1 addAction andAction;
+ a2 addAction andAction;
+ }
+
+ def orGate(o1: Wire, o2: Wire, output: Wire): Unit = {
+ def orAction() = {
+ val o1Sig = o1.getSignal;
+ val o2Sig = o2.getSignal;
+ afterDelay(OrGateDelay) {() => output.setSignal(o1Sig | o2Sig) };
+ }
+ o1 addAction orAction;
+ o2 addAction orAction;
+ }
+
+ def probe(name: String, wire: Wire): Unit = {
+ wire addAction {() =>
+ Console.println(
+ name + " " + currentTime + " new-value = " + wire.getSignal);
+ }
+ }
+ }
+
+ abstract class CircuitSimulation() extends BasicCircuitSimulation() {
+
+ def halfAdder(a: Wire, b: Wire, s: Wire, c: Wire): Unit = {
+ val d = new Wire();
+ val e = new Wire();
+ orGate(a, b, d);
+ andGate(a, b, c);
+ inverter(c, e);
+ andGate(d, e, s);
+ }
+
+ def fullAdder(a: Wire, b: Wire, cin: Wire, sum: Wire, cout: Wire): Unit = {
+ val s = new Wire();
+ val c1 = new Wire();
+ val c2 = new Wire();
+ halfAdder(a, cin, s, c1);
+ halfAdder(b, s, sum, c2);
+ orGate(c1, c2, cout);
+ }
+ }
+
+ class Test() extends CircuitSimulation() {
+
+ val InverterDelay = 1;
+ val AndGateDelay = 3;
+ val OrGateDelay = 5;
+
+ def invert = {
+ val ain = new Wire();
+ val cout = new Wire();
+ inverter(ain, cout);
+
+ def result = if (cout.getSignal) 1 else 0;
+
+ def test(a: Int) = {
+ ain setSignal (if (a == 0) false else true);
+ run;
+ Console.println("!" + a + " = " + result);
+ Console.println;
+ }
+
+ probe("out ", cout);
+
+ test(0);
+ test(1);
+ }
+
+ def and = {
+ val ain = new Wire();
+ val bin = new Wire();
+ val cout = new Wire();
+ andGate(ain, bin, cout);
+
+ def result = if (cout.getSignal) 1 else 0;
+
+ def test(a: Int, b: Int) = {
+ ain setSignal (if (a == 0) false else true);
+ bin setSignal (if (b == 0) false else true);
+ run;
+ Console.println(a + " & " + b + " = " + result);
+ Console.println;
+ }
+
+ probe("out ", cout);
+ Console.println;
+
+ test(0,0);
+ test(0,1);
+ test(1,0);
+ test(1,1);
+ }
+
+ def or = {
+ val ain = new Wire();
+ val bin = new Wire();
+ val cout = new Wire();
+ orGate(ain, bin, cout);
+
+ def result = if (cout.getSignal) 1 else 0;
+
+ def test(a: Int, b: Int) = {
+ ain setSignal (if (a == 0) false else true);
+ bin setSignal (if (b == 0) false else true);
+ run;
+ Console.println(a + " | " + b + " = " + result);
+ Console.println;
+ }
+
+ probe("out ", cout);
+ Console.println;
+
+ test(0,0);
+ test(0,1);
+ test(1,0);
+ test(1,1);
+ }
+
+ def half = {
+ val ain = new Wire();
+ val bin = new Wire();
+ val sout = new Wire();
+ val cout = new Wire();
+ halfAdder(ain, bin, sout, cout);
+
+ def result =
+ ((if (sout.getSignal) 1 else 0) +
+ (if (cout.getSignal) 2 else 0));
+
+ def test(a: Int, b: Int) = {
+ ain setSignal (if (a == 0) false else true);
+ bin setSignal (if (b == 0) false else true);
+ run;
+ Console.println(a + " + " + b + " = " + result);
+ Console.println;
+ }
+
+ probe("sum ", sout);
+ probe("carry", cout);
+ Console.println;
+
+ test(0,0);
+ test(0,1);
+ test(1,0);
+ test(1,1);
+ }
+
+ def full = {
+ val ain = new Wire();
+ val bin = new Wire();
+ val cin = new Wire();
+ val sout = new Wire();
+ val cout = new Wire();
+ fullAdder(ain, bin, cin, sout, cout);
+
+ def result =
+ ((if (sout.getSignal) 1 else 0) +
+ (if (cout.getSignal) 2 else 0));
+
+ def test(a: Int, b: Int, c: Int) = {
+ ain setSignal (if (a == 0) false else true);
+ bin setSignal (if (b == 0) false else true);
+ cin setSignal (if (c == 0) false else true);
+ run;
+ Console.println(a + " + " + b + " + " + c + " = " + result);
+ Console.println;
+ }
+
+ probe("sum ", sout);
+ probe("carry", cout);
+ Console.println;
+
+ test(0,0,0);
+ test(0,0,1);
+ test(0,1,0);
+ test(0,1,1);
+ test(1,0,0);
+ test(1,0,1);
+ test(1,1,0);
+ test(1,1,1);
+ }
+ }
+
+ def test = {
+ val sim = new Test();
+ sim.invert;
+ sim.and;
+ sim.or;
+ sim.half;
+ sim.full;
+ }
+}
+
+//############################################################################
+
+class Simulator() {
+
+ type Action = () => Unit;
+ type Agenda = List[Pair[Int, Action]];
+
+ private var agenda: Agenda = List();
+ private var curtime = 0;
+
+ def afterDelay(delay: Int)(action: Action) = {
+ def insert(ag: Agenda, time: Int): Agenda = ag match {
+ case List() =>
+ List(Pair(time, action))
+ case Pair(t, act) :: ag1 =>
+ if (time < t) Pair(time, action) :: ag
+ else Pair(t, act) :: insert(ag1, time)
+ }
+ agenda = insert(agenda, curtime + delay)
+ }
+
+ def next: Unit = agenda match {
+ case List() => ()
+ case Pair(time, action) :: rest => {
+ agenda = rest;
+ curtime = time;
+ action();
+ }
+ }
+
+ protected def currentTime: Int = curtime;
+
+ def run = {
+ afterDelay(0){() => Console.println("*** simulation started ***"); }
+ while (!agenda.isEmpty) { next }
+ }
+}
+
+class Wire() {
+ private var sigVal = false;
+ private var actions: List[() => Unit] = List();
+ def getSignal = sigVal;
+ def setSignal(s: Boolean) =
+ if (s != sigVal) {
+ sigVal = s;
+ actions.foreach(action => action());
+ }
+ def addAction(a: () => Unit) = {
+ actions = a :: actions;
+ a()
+ }
+}
+
+abstract class BasicCircuitSimulator() extends Simulator() {
+
+ def probe(name: String, wire: Wire): Unit = {
+ wire addAction {() =>
+ Console.println(
+ name + " " + currentTime + " new-value = " + wire.getSignal);
+ }
+ }
+
+ val InverterDelay: Int;
+ val AndGateDelay: Int;
+ val OrGateDelay: Int;
+
+ def inverter(input: Wire, output: Wire) = {
+ def invertAction() = {
+ val inputSig = input.getSignal;
+ afterDelay(InverterDelay) {() => output.setSignal(!inputSig) };
+ }
+ input addAction invertAction
+ }
+
+ def andGate(a1: Wire, a2: Wire, output: Wire) = {
+ def andAction() = {
+ val a1Sig = a1.getSignal;
+ val a2Sig = a2.getSignal;
+ afterDelay(AndGateDelay) {() => output.setSignal(a1Sig & a2Sig) };
+ }
+ a1 addAction andAction;
+ a2 addAction andAction
+ }
+
+ def orGate(a1: Wire, a2: Wire, output: Wire) = {
+ def orAction() = {
+ val a1Sig = a1.getSignal;
+ val a2Sig = a2.getSignal;
+ afterDelay(OrGateDelay) {() => output.setSignal(a1Sig | a2Sig) };
+ }
+ a1 addAction orAction;
+ a2 addAction orAction
+ }
+
+ def orGate2(a1: Wire, a2: Wire, output: Wire) = {
+ val w1 = new Wire();
+ val w2 = new Wire();
+ val w3 = new Wire();
+ inverter(a1, w1);
+ inverter(a2, w2);
+ andGate(w1, w2, w3);
+ inverter(w3, output);
+ }
+}
+
+abstract class CircuitSimulator() extends BasicCircuitSimulator() {
+ def demux2(in: Wire, ctrl: List[Wire], out: List[Wire]) : Unit = {
+ val ctrlN = ctrl.map(w => { val iw = new Wire(); inverter(w,iw); iw});
+ val w0 = new Wire();
+ val w1 = new Wire();
+ val w2 = new Wire();
+ val w3 = new Wire();
+
+ andGate(in, ctrl(1), w3);
+ andGate(in, ctrl(1), w2);
+ andGate(in, ctrlN(1), w1);
+ andGate(in, ctrlN(1), w0);
+
+ andGate(w3, ctrl(0), out(3));
+ andGate(w2, ctrlN(0), out(2));
+ andGate(w1, ctrl(0), out(1));
+ andGate(w0, ctrlN(0), out(0));
+ }
+
+ def connect(in: Wire, out: Wire) = {
+ in addAction {() => out.setSignal(in.getSignal); }
+ }
+
+ def demux(in: Wire, ctrl: List[Wire], out: List[Wire]): Unit = ctrl match {
+ case List() => connect(in, out.head);
+ case c :: rest =>
+ val c_ = new Wire();
+ val w1 = new Wire();
+ val w2 = new Wire();
+ inverter(c, c_);
+ andGate(in, c_, w1);
+ andGate(in, c, w2);
+ demux(w1, rest, out.drop(out.length / 2));
+ demux(w2, rest, out.take(out.length / 2));
+ }
+}
+
+class Main() extends CircuitSimulator() {
+
+ val InverterDelay = 1;
+ val AndGateDelay = 3;
+ val OrGateDelay = 5;
+
+ def main = {
+ val n = 3;
+ val outNum = 1 << n;
+
+ val in = new Wire();
+ val ctrl = for (val x <- range(0,n)) yield { new Wire() };
+ val out = for (val x <- range(0,outNum)) yield { new Wire() };
+
+ demux(in, ctrl.reverse, out.reverse);
+
+ probe("in", in);
+ for (val Pair(x,c) <- range(0,n) zip ctrl) { probe("ctrl" + x, c) }
+ for (val Pair(x,o) <- range(0,outNum) zip out) { probe("out" + x, o) }
+
+ in.setSignal(true);
+ run;
+ ctrl(0).setSignal(true);
+ run;
+ ctrl(1).setSignal(true);
+ run;
+ ctrl(2).setSignal(true);
+ run;
+ ctrl(0).setSignal(false);
+ run;
+ }
+}
+
+//############################################################################
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ M0.test;
+ M1.test;
+ M2.test;
+ M3.test;
+ M4.test;
+ M5.test;
+ new Main().main;
+ ()
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/Course-2002-09.check b/test/files/run/Course-2002-09.check
new file mode 100644
index 0000000000..765962aad8
--- /dev/null
+++ b/test/files/run/Course-2002-09.check
@@ -0,0 +1,50 @@
+Probe: f = 32.0
+Probe: c = 0.0
+Probe: f = ?
+Probe: c = ?
+
+Probe: f = 212.0
+Probe: c = 100.0
+Probe: f = ?
+Probe: c = ?
+
+Probe: c = 0.0
+Probe: f = 32.0
+Probe: c = ?
+Probe: f = ?
+
+Probe: c = 100.0
+Probe: f = 212.0
+Probe: c = ?
+Probe: f = ?
+
+0.0 Celsius -> 32.0 Fahrenheits
+100.0 Celsius -> 212.0 Fahrenheits
+32.0 Fahrenheits -> 0.0 Celsius
+212.0 Fahrenheits -> 100.0 Celsius
+
+a = ?, b = ?, c = ? => ? * ? = ?
+a = 2, b = ?, c = ? => 2.0 * ? = ?
+a = ?, b = 3, c = ? => ? * 3.0 = ?
+a = ?, b = ?, c = 6 => ? * ? = 6.0
+a = 2, b = 3, c = ? => 2.0 * 3.0 = 6.0
+a = 2, b = ?, c = 6 => 2.0 * 3.0 = 6.0
+a = ?, b = 3, c = 6 => 2.0 * 3.0 = 6.0
+a = 2, b = 3, c = 6 => 2.0 * 3.0 = 6.0
+
+a = 0, b = ?, c = ? => 0.0 * ? = 0.0
+a = ?, b = 0, c = ? => ? * 0.0 = 0.0
+a = ?, b = ?, c = 0 => ? * ? = 0.0
+a = 0, b = 7, c = ? => 0.0 * 7.0 = 0.0
+a = 7, b = 0, c = ? => 7.0 * 0.0 = 0.0
+a = 0, b = 0, c = ? => 0.0 * 0.0 = 0.0
+a = 0, b = ?, c = 0 => 0.0 * ? = 0.0
+a = ?, b = 0, c = 0 => ? * 0.0 = 0.0
+a = 0, b = 7, c = 0 => 0.0 * 7.0 = 0.0
+a = 7, b = 0, c = 0 => 7.0 * 0.0 = 0.0
+a = 0, b = 0, c = 0 => 0.0 * 0.0 = 0.0
+
+a = 3, b = 4 => c = 5.0
+a = 3, c = 5 => b = 4.0
+b = 4, c = 5 => a = 3.0
+
diff --git a/test/files/run/Course-2002-09.scala b/test/files/run/Course-2002-09.scala
new file mode 100644
index 0000000000..65f9adad2b
--- /dev/null
+++ b/test/files/run/Course-2002-09.scala
@@ -0,0 +1,334 @@
+//############################################################################
+// Programmation IV - 2002 - Week 09
+//############################################################################
+// $Id$
+
+trait Constraint {
+ def newValue: Unit;
+ def dropValue: Unit
+}
+
+object NoConstraint extends Constraint {
+ def newValue: Unit = error("NoConstraint.newValue");
+ def dropValue: Unit = error("NoConstraint.dropValue");
+}
+
+class Adder(a1: Quantity,a2: Quantity,sum: Quantity) extends Constraint {
+ def newValue = Triple(a1.getValue, a2.getValue, sum.getValue) match {
+ case Triple(Some(x1), Some(x2), _ ) => sum.setValue(x1 + x2, this)
+ case Triple(Some(x1), _ , Some(r)) => a2.setValue(r - x1, this)
+ case Triple(_ , Some(x2), Some(r)) => a1.setValue(r - x2, this)
+ case _ =>
+ }
+ def dropValue: Unit = {
+ a1.forgetValue(this); a2.forgetValue(this); sum.forgetValue(this);
+ }
+ a1 connect this;
+ a2 connect this;
+ sum connect this;
+}
+
+class Multiplier(m1: Quantity, m2: Quantity, prod: Quantity)
+ extends Constraint {
+ def newValue = Triple(m1.getValue, m2.getValue, prod.getValue) match {
+ case Triple(Some(0d), _ , _ ) => prod.setValue(0, this);
+ case Triple(_ , Some(0d), _ ) => prod.setValue(0, this);
+ case Triple(Some(x1), Some(x2), _ ) => prod.setValue(x1 * x2, this)
+ case Triple(Some(x1), _ , Some(r)) => m2.setValue(r / x1, this)
+ case Triple(_, Some(x2), Some(r)) => m1.setValue(r / x2, this)
+ case _ =>
+ }
+ def dropValue: Unit = {
+ m1.forgetValue(this); m2.forgetValue(this); prod.forgetValue(this);
+ }
+ m1 connect this;
+ m2 connect this;
+ prod connect this;
+}
+
+class Squarer(square: Quantity, root: Quantity) extends Constraint {
+ def newValue: Unit = Pair(square.getValue, root.getValue) match {
+ case Pair(Some(x), _ )if (x < 0) => error("Square of negative number")
+ case Pair(Some(x), _ ) =>
+ root.setValue(scala.runtime.compat.Math.sqrt(x), this)
+ case Pair(_ , Some(x)) => square.setValue(x*x, this)
+ case _ =>
+ }
+ def dropValue: Unit = {
+ square.forgetValue(this); root.forgetValue(this);
+ }
+ square connect this;
+ root connect this;
+}
+
+class Eq(a: Quantity, b: Quantity) extends Constraint {
+ def newValue = Pair(a.getValue, b.getValue) match {
+ case Pair(Some(x), _ ) => b.setValue(x, this);
+ case Pair(_ , Some(y)) => a.setValue(y, this);
+ }
+ def dropValue: Unit = {
+ a.forgetValue(this); b.forgetValue(this);
+ }
+ a connect this;
+ b connect this;
+}
+
+class Constant(q: Quantity, v: double) extends Constraint {
+ def newValue: Unit = error("Constant.newValue");
+ def dropValue: Unit = error("Constant.dropValue");
+ q connect this;
+ q.setValue(v, this);
+}
+
+class Probe(name: String, q: Quantity) extends Constraint {
+ def newValue: Unit = printProbe(q.getValue);
+ def dropValue: Unit = printProbe(None);
+ private def printProbe(v: Option[double]): Unit = {
+ val vstr = v match {
+ case Some(x) => x.toString()
+ case None => "?"
+ }
+ Console.println("Probe: " + name + " = " + vstr);
+ }
+ q connect this
+}
+
+class Quantity() {
+ private var value: Option[double] = None;
+ private var constraints: List[Constraint] = List();
+ private var informant: Constraint = null;
+
+ def getValue: Option[double] = value;
+
+ def setValue(v: double, setter: Constraint) = value match {
+ case Some(v1) =>
+ if (v != v1) error("Error! contradiction: " + v + " and " + v1);
+ case None =>
+ informant = setter; value = Some(v);
+ for (val c <- constraints; !(c == informant)) {
+ c.newValue;
+ }
+ }
+ def setValue(v: double): Unit = setValue(v, NoConstraint);
+
+ def forgetValue(retractor: Constraint): Unit = {
+ if (retractor == informant) {
+ value = None;
+ for (val c <- constraints; !(c == informant)) c.dropValue;
+ }
+ }
+ def forgetValue: Unit = forgetValue(NoConstraint);
+
+ def connect(c: Constraint) = {
+ constraints = c :: constraints;
+ value match {
+ case Some(_) => c.newValue
+ case None =>
+ }
+ }
+
+ def +(that: Quantity): Quantity = {
+ val sum = new Quantity();
+ new Adder(this, that, sum);
+ sum;
+ }
+
+ def *(that: Quantity): Quantity = {
+ val prod = new Quantity();
+ new Multiplier(this, that, prod);
+ prod;
+ }
+
+ def square: Quantity = {
+ val square = new Quantity();
+ new Squarer(square, this);
+ square;
+ }
+
+ def sqrt: Quantity = {
+ val root = new Quantity();
+ new Squarer(this, root);
+ root;
+ }
+
+ def ===(that: Quantity): Constraint = {
+ new Eq(this, that);
+ }
+
+ override def toString(): String = value match {
+ case None => " ?"
+ case Some(v) => v.toString()
+ }
+
+ def str: String = toString();
+}
+
+//############################################################################
+
+object M0 {
+
+ def CFconverter(c: Quantity, f: Quantity) = {
+ val u = new Quantity();
+ val v = new Quantity();
+ val w = new Quantity();
+ val x = new Quantity();
+ val y = new Quantity();
+ new Multiplier(c, w, u);
+ new Multiplier(v, x, u);
+ new Adder(v, y, f);
+ new Constant(w, 9);
+ new Constant(x, 5);
+ new Constant(y, 32);
+ }
+
+ def test = {
+ val c = new Quantity(); new Probe("c", c);
+ val f = new Quantity(); new Probe("f", f);
+ CFconverter(c, f);
+
+ c.setValue(0);
+ c.forgetValue;
+ Console.println;
+
+ c.setValue(100);
+ c.forgetValue;
+ Console.println;
+
+ f.setValue(32);
+ f.forgetValue;
+ Console.println;
+
+ f.setValue(212);
+ f.forgetValue;
+ Console.println;
+ }
+}
+
+//############################################################################
+
+object M1 {
+
+ def constant(x: double): Quantity = {
+ val q = new Quantity();
+ new Constant(q, x);
+ q
+ }
+
+ def CFconverter(c: Quantity, f: Quantity) = {
+ val v = new Quantity();
+ constant(9) * c === constant(5) * v;
+ v + constant(32) === f;
+ }
+
+ def show_c2f(c: Quantity, f: Quantity, v: int) = {
+ c.setValue(v);
+ Console.println(c.str + " Celsius -> " + f.str + " Fahrenheits");
+ c.forgetValue;
+ }
+
+ def show_f2c(c: Quantity, f: Quantity, v: int) = {
+ f.setValue(v);
+ Console.println(f.str + " Fahrenheits -> " + c.str + " Celsius");
+ f.forgetValue;
+ }
+
+ def test = {
+ val c = new Quantity();
+ val f = new Quantity();
+ CFconverter(c, f);
+
+ show_c2f(c, f, 0);
+ show_c2f(c, f, 100);
+ show_f2c(c, f, 32);
+ show_f2c(c, f, 212);
+ Console.println;
+ }
+}
+
+//############################################################################
+
+object M2 {
+
+ val a = new Quantity();
+ val b = new Quantity();
+ val c = a * b;
+
+ def set(q: Quantity, o: Option[int]): String = {
+ o match {
+ case None => "?"
+ case Some(v) => q.setValue(v); v.toString()
+ };
+ }
+
+ def show(x: Option[int], y: Option[int], z: Option[int]) = {
+ Console.print("a = " +set(a,x)+ ", b = " +set(b,y)+ ", c = " +set(c,z));
+ Console.println(" => " + a.str + " * " + b.str + " = " + c.str);
+ a.forgetValue; b.forgetValue; c.forgetValue;
+ }
+
+ def test = {
+ show(None , None , None );
+ show(Some(2), None , None );
+ show(None , Some(3), None );
+ show(None , None , Some(6));
+ show(Some(2), Some(3), None );
+ show(Some(2), None , Some(6));
+ show(None , Some(3), Some(6));
+ show(Some(2), Some(3), Some(6));
+ Console.println;
+
+ show(Some(0), None , None );
+ show(None , Some(0), None );
+ show(None , None , Some(0));
+ show(Some(0), Some(7), None );
+ show(Some(7), Some(0), None );
+ show(Some(0), Some(0), None );
+ show(Some(0), None , Some(0));
+ show(None , Some(0), Some(0));
+ show(Some(0), Some(7), Some(0));
+ show(Some(7), Some(0), Some(0));
+ show(Some(0), Some(0), Some(0));
+ Console.println;
+ }
+}
+
+
+//############################################################################
+
+object M3 {
+
+ def test = {
+ val a = new Quantity();
+ val b = new Quantity();
+ val c = new Quantity();
+ c === (a.square + b.square).sqrt;
+
+ a.setValue(3); b.setValue(4);
+ Console.println("a = 3, b = 4 => c = " + c.str);
+ a.forgetValue; b.forgetValue;
+
+ a.setValue(3); c.setValue(5);
+ Console.println("a = 3, c = 5 => b = " + b.str);
+ a.forgetValue; c.forgetValue;
+
+ b.setValue(4); c.setValue(5);
+ Console.println("b = 4, c = 5 => a = " + a.str);
+ b.forgetValue; c.forgetValue;
+
+ Console.println;
+ }
+}
+
+//############################################################################
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ M0.test;
+ M1.test;
+ M2.test;
+ M3.test;
+ ()
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/Course-2002-10.check b/test/files/run/Course-2002-10.check
new file mode 100644
index 0000000000..207b671f05
--- /dev/null
+++ b/test/files/run/Course-2002-10.check
@@ -0,0 +1,46 @@
+fib(0) = 0
+fib(1) = 1
+fib(2) = 1
+fib(3) = 2
+fib(4) = 3
+fib(5) = 5
+fib(6) = 8
+fib(7) = 13
+fib(8) = 21
+fib(9) = 34
+fib(10) = 55
+fib(11) = 89
+fib(12) = 144
+fib(13) = 233
+fib(14) = 377
+fib(15) = 610
+fib(16) = 987
+fib(17) = 1597
+fib(18) = 2584
+fib(19) = 4181
+
+pi(0) = 4.0 , 3.166666666666667 , 4.0
+pi(1) = 2.666666666666667 , 3.1333333333333337, 3.166666666666667
+pi(2) = 3.466666666666667 , 3.1452380952380956, 3.142105263157895
+pi(3) = 2.8952380952380956, 3.1396825396825396, 3.1415993573190044
+pi(4) = 3.33968253968254 , 3.142712842712843 , 3.141592714033778
+pi(5) = 2.976046176046176 , 3.140881340881341 , 3.1415926539752923
+pi(6) = 3.283738483738484 , 3.142071817071817 , 3.141592653591176
+pi(7) = 3.017071817071817 , 3.1412548236077646, 3.141592653589777
+pi(8) = 3.252365934718876 , 3.1418396189294024, 3.141592653589794
+pi(9) = 3.0418396189294024, 3.141406718496502 , 3.1415926535897936
+pi = 3.141592653589793 , 3.141592653589793 , 3.141592653589793
+
+ln(0) = 1.0 , 0.7 , 1.0
+ln(1) = 0.5 , 0.6904761904761905, 0.7
+ln(2) = 0.8333333333333333, 0.6944444444444444, 0.6932773109243697
+ln(3) = 0.5833333333333333, 0.6924242424242424, 0.6931488693329254
+ln(4) = 0.7833333333333333, 0.6935897435897436, 0.6931471960735491
+ln(5) = 0.6166666666666667, 0.6928571428571428, 0.6931471806635636
+ln(6) = 0.7595238095238095, 0.6933473389355742, 0.6931471805604038
+ln(7) = 0.6345238095238095, 0.6930033416875522, 0.6931471805599444
+ln(8) = 0.7456349206349207, 0.6932539682539682, 0.6931471805599426
+ln(9) = 0.6456349206349206, 0.6930657506744463, 0.6931471805599453
+ln = 0.6931471805599453, 0.6931471805599453, 0.6931471805599453
+
+prime numbers: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113
diff --git a/test/files/run/Course-2002-10.scala b/test/files/run/Course-2002-10.scala
new file mode 100644
index 0000000000..e634309018
--- /dev/null
+++ b/test/files/run/Course-2002-10.scala
@@ -0,0 +1,136 @@
+//############################################################################
+// Programmation IV - 2002 - Week 10
+//############################################################################
+// $Id$
+
+import java.lang.System; // to avoid name clash with .NET's library
+
+object M0 {
+
+ def addStream (s1: Stream[int], s2: Stream[int]): Stream[int] =
+ Stream.cons(s1.head + s2.head, addStream(s1.tail, s2.tail));
+
+ val fib: Stream[int] =
+ Stream.cons(0, Stream.cons(1, addStream(this.fib, this.fib.tail)));
+
+ def test = {
+ var i = 0;
+ fib.take(20).foreach(n => {System.out.println("fib("+i+") = "+n); i=i+1});
+ System.out.println();
+ }
+}
+
+//############################################################################
+
+object M1 {
+
+ def scale(x: double, s: Stream[double]): Stream[double] =
+ s map (e: double => e*x);
+
+ def partialSums(s: Stream[double]): Stream[double] =
+ Stream.cons(s.head, partialSums(s.tail) map (x => x + s.head));
+
+ def euler(s: Stream[double]): Stream[double] = {
+ val nm1 = s at 0;
+ val n = s at 1;
+ val np1 = s at 2;
+ Stream.cons(np1 - ((np1 - n)*(np1 - n) / (nm1 - 2*n + np1)),euler(s.tail))
+ };
+
+ def better(s: Stream[double], transform: Stream[double] => Stream[double])
+ : Stream[Stream[double]] =
+ Stream.cons(s, better(transform(s), transform));
+
+ def veryGood(s: Stream[double], transform: Stream[double] => Stream[double])
+ : Stream[double] =
+ better(s, transform) map (x => x.head);
+
+ def lnSummands(n: double): Stream[double] =
+ Stream.cons(1.0 / n, lnSummands(n + 1.0) map (x: double => -x));
+
+ var ln0 = partialSums(lnSummands(1.0));
+ var ln1 = euler(ln0);
+ var ln2 = veryGood(ln0, euler);
+
+ def piSummands(n: double): Stream[double] =
+ Stream.cons(1.0 / n, piSummands(n + 2.0) map (x: double => -x));
+
+ var pi0 = scale(4.0, partialSums(piSummands(1.0)));
+ var pi1 = euler(pi0);
+ var pi2 = veryGood(pi0, euler);
+
+ def pad(s: String, n: int): String =
+ if (n <= 0) s.substring(0, s.length() + n)
+ else pad(s + " ", n - 1);
+ def str(d: double) = { val s = d.toString(); pad(s, 18 - s.length()) };
+
+ def test = {
+ var i = 0;
+ while (i < 10) {
+ System.out.print("pi("+i+") = ");
+ System.out.print(str(pi0.at(i)) + ", ");
+ System.out.print(str(pi1.at(i)) + ", ");
+ System.out.print(str(pi2.at(i)) + "\n");
+ i = i + 1;
+ }
+ System.out.print("pi = ");
+ System.out.print(str(Math.PI) + ", ");
+ System.out.print(str(Math.PI) + ", ");
+ System.out.print(str(Math.PI) + "\n");
+ System.out.println();
+ i = 0;
+ while (i < 10) {
+ System.out.print("ln("+i+") = ");
+ System.out.print(str(ln0.at(i)) + ", ");
+ System.out.print(str(ln1.at(i)) + ", ");
+ System.out.print(str(ln2.at(i)) + "\n");
+ i = i + 1;
+ }
+ System.out.print("ln = ");
+ System.out.print(str(Math.log(2)) + ", ");
+ System.out.print(str(Math.log(2)) + ", ");
+ System.out.print(str(Math.log(2)) + "\n");
+ System.out.println();
+ }
+}
+
+//############################################################################
+
+object M2 {
+
+ class IntIterator(start: int) extends Iterator[int] {
+ var current: int = start;
+ def hasNext = true;
+ def next = { current = current + 1; current - 1 };
+ }
+
+ class PrimeIterator() extends Iterator[int] {
+ var current: Iterator[int] = new IntIterator(2);
+ def hasNext = true;
+ def next = {
+ val p = current.next;
+ current = current filter { x => !((x % p) == 0) };
+ p
+ }
+ }
+
+ def test = {
+ val i = (new PrimeIterator()).take(30);
+ System.out.print("prime numbers:");
+ while (i.hasNext) { System.out.print(" " + i.next); }
+ System.out.println();
+ }
+}
+
+//############################################################################
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ M0.test;
+ M1.test;
+ M2.test;
+ ()
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/Course-2002-13.check b/test/files/run/Course-2002-13.check
new file mode 100644
index 0000000000..913c4e4edd
--- /dev/null
+++ b/test/files/run/Course-2002-13.check
@@ -0,0 +1,14 @@
+List(S = jean,V = mange,A = le,D = grand,N = table)
+List(S = jean,V = mange,A = le,D = grand,N = cheval)
+
+List(S = jean,V = mange,A = le,D = grand,N = cheval)
+List(S = jean,V = mange,A = la,D = belle,N = table)
+
+List(S = jean,V = mange,A = le,D = nil,N = cheval)
+List(S = jean,V = mange,A = le,D = cons(grand,nil),N = cheval)
+List(S = jean,V = mange,A = le,D = cons(grand,cons(grand,nil)),N = cheval)
+List(S = jean,V = mange,A = la,D = nil,N = table)
+yes
+yes
+no
+
diff --git a/test/files/run/Course-2002-13.scala b/test/files/run/Course-2002-13.scala
new file mode 100644
index 0000000000..e98d8944a8
--- /dev/null
+++ b/test/files/run/Course-2002-13.scala
@@ -0,0 +1,324 @@
+//############################################################################
+// Programmation IV - 2002 - Week 13
+//############################################################################
+// $Id$
+
+class Tokenizer(s: String, delimiters: String) extends Iterator[String] {
+
+ private var i = 0;
+
+ def isDelimiter(ch: Char) = {
+ var i = 0;
+ while (i < delimiters.length() && delimiters.charAt(i) != ch) { i = i + 1 }
+ i < delimiters.length()
+ }
+
+ def hasNext: boolean = {
+ while (i < s.length() && s.charAt(i) <= ' ') { i = i + 1 }
+ i < s.length()
+ }
+
+ def next: String =
+ if (hasNext) {
+ val start = i;
+ var ch = s.charAt(i); i = i + 1;
+ if (isDelimiter(ch)) ch.toString()
+ else {
+ while (i < s.length() &&
+ s.charAt(i) > ' ' &&
+ !isDelimiter(s.charAt(i))){ i = i + 1 }
+ s.substring(start, i)
+ }
+ } else "";
+
+}
+
+object Terms {
+
+ val debug = false;
+
+ trait Term {
+ def map(s: Subst): Term;
+ def tyvars: List[String];
+ }
+
+ case class Binding(name: String, term: Term) {
+ term match { case Var(n) if (name == n) => error("bad binding") case _ => () }
+ override def toString() = name + " = " + term;
+ }
+
+ type Subst = List[Binding];
+
+ def lookup(s: Subst, name: String): Option[Term] = s match {
+ case List() => None
+ case b :: s1 => if (name == b.name) Some(b.term) else lookup(s1, name)
+ }
+
+ case class Var(a: String) extends Term {
+ override def toString() = a;
+ def map(s: Subst): Term = lookup(s, a) match {
+ case Some(b) => b map s
+ case None => this;
+ }
+ def tyvars = List(a);
+ }
+
+ case class Con(a: String, ts: List[Term]) extends Term {
+ override def toString() =
+ a + (if (ts.isEmpty) "" else ts.mkString("(", ",", ")"));
+ def map(s: Subst): Term = Con(a, ts map (t => t map s));
+ def tyvars = (ts flatMap (t => t.tyvars)).removeDuplicates;
+ }
+
+ private var count = 0;
+ def newVar(prefix: String) = { count = count + 1; Var(prefix + count) }
+
+ val NoTerm = Con("<none>", List());
+
+ def unify1(x: Term, y: Term, s: Subst): Option[Subst] = Pair(x, y) match {
+ case Pair(Var(a), Var(b)) if (a == b) =>
+ Some(s)
+ case Pair(Var(a), _) => lookup(s, a) match {
+ case Some(x1) => unify(x1, y, s)
+ case None => if (y.tyvars contains a) None else Some(Binding(a, y) :: s)
+ }
+ case Pair(_, Var(b)) => lookup(s, b) match {
+ case Some(y1) => unify(x, y1, s)
+ case None => if (x.tyvars contains b) None else Some(Binding(b, x) :: s)
+ }
+ case Pair(Con(a, xs), Con(b, ys)) if (a == b) =>
+ unify(xs, ys, s)
+ case _ => None
+ }
+
+ def unify(x: Term, y: Term, s: Subst): Option[Subst] = {
+ val ss = unify1(x, y, s);
+ if (debug) Console.println("unify " + x + " with " + y + " = " + ss);
+ ss
+ }
+
+ def unify(xs: List[Term], ys: List[Term], s: Subst): Option[Subst] = Pair(xs, ys) match {
+ case Pair(List(), List()) => Some(s)
+ case Pair(x :: xs1, y :: ys1) =>
+ unify(x, y, s) match {
+ case Some(s1) => unify(xs1, ys1, s1)
+ case None => None
+ }
+ case _ => None
+ }
+}
+
+import Terms._;
+
+object Programs {
+
+ case class Clause(lhs: Term, rhs: List[Term]) {
+ def tyvars =
+ (lhs.tyvars ::: (rhs flatMap (t => t.tyvars))).removeDuplicates;
+ def newInstance = {
+ var s: Subst = List();
+ for (val a <- tyvars) { s = Binding(a, newVar(a)) :: s }
+ Clause(lhs map s, rhs map (t => t map s))
+ }
+ override def toString() =
+ lhs.toString() + " :- " + rhs.mkString("", ",", "") + ".";
+ }
+
+ def list2stream[a](xs: List[a]): Stream[a] = xs match {
+ case List() => Stream.empty
+ case x :: xs1 => Stream.cons(x, list2stream(xs1))
+ }
+ def option2stream[a](xo: Option[a]): Stream[a] = xo match {
+ case None => Stream.empty
+ case Some(x) => Stream.cons(x, Stream.empty)
+ }
+
+ def solve(query: List[Term], clauses: List[Clause]): Stream[Subst] = {
+
+ def solve2(query: List[Term], s: Subst): Stream[Subst] = query match {
+ case List() =>
+ Stream.cons(s, Stream.empty)
+ case Con("not", qs) :: query1 =>
+ if (solve1(qs, s).isEmpty) Stream.cons(s, Stream.empty)
+ else Stream.empty
+ case q :: query1 =>
+ for (val clause <- list2stream(clauses);
+ val s1 <- tryClause(clause.newInstance, q, s);
+ val s2 <- solve1(query1, s1)) yield s2
+ }
+
+ def solve1(query: List[Term], s: Subst): Stream[Subst] = {
+ val ss = solve2(query, s);
+ if (debug) Console.println("solved " + query + " = " + ss);
+ ss
+ }
+
+ def tryClause(c: Clause, q: Term, s: Subst): Stream[Subst] = {
+ if (debug) Console.println("trying " + c);
+ for (val s1 <- option2stream(unify(q, c.lhs, s));
+ val s2 <- solve1(c.rhs, s1)) yield s2;
+ }
+
+ solve1(query, List())
+ }
+}
+
+import Programs._;
+
+class Parser(s: String) {
+ val it = new Tokenizer(s, "(),.?");
+
+ var token: String = it.next;
+
+ def syntaxError(msg: String): Unit = error(msg + ", but " + token + " found");
+
+ def rep[a](p: => a): List[a] = {
+ val t = p;
+ if (token == ",") { token = it.next; t :: rep(p) } else List(t)
+ }
+
+ def constructor: Term = {
+ val a = token;
+ token = it.next;
+ Con(a,
+ if (token equals "(") {
+ token = it.next;
+ val ts: List[Term] = if (token equals ")") List() else rep(term);
+ if (token equals ")") token = it.next else syntaxError("`)' expected");
+ ts
+ } else List())
+ }
+
+ def term: Term = {
+ val ch = token.charAt(0);
+ if ('A' <= ch && ch <= 'Z') { val a = token; token = it.next; Var(a) }
+ else if (it.isDelimiter(ch)) { syntaxError("term expected"); null }
+ else constructor
+ }
+
+ def line: Clause = {
+ val result =
+ if (token equals "?") {
+ token = it.next;
+ Clause(NoTerm, rep(constructor));
+ } else {
+ Clause(
+ constructor,
+ if (token equals ":-") { token = it.next; rep(constructor) } else List())
+ }
+ if (token equals ".") token = it.next else syntaxError("`.' expected");
+ result
+ }
+
+ def all: List[Clause] = if (token equals "") List() else line :: all;
+}
+
+object Prolog {
+
+ def processor: String => Unit = {
+ var program: List[Clause] = List();
+ var solutions: Stream[Subst] = Stream.empty;
+ var tvs: List[String] = List();
+ { input =>
+ new Parser(input).all foreach { c =>
+ if (c.lhs == NoTerm) {
+ c.rhs match {
+ case List(Con("more", List())) =>
+ solutions = solutions.tail;
+ case _ =>
+ solutions = solve(c.rhs, program);
+ tvs = c.tyvars;
+ }
+ if (solutions.isEmpty) {
+ Console.println("no")
+ } else {
+ val s: Subst = solutions.head
+ .filter(b => tvs contains b.name)
+ .map(b => Binding(b.name, b.term map solutions.head))
+ .reverse;
+ if (s.isEmpty) Console.println("yes")
+ else Console.println(s);
+ }
+ } else {
+ program = program ::: List(c);
+ }
+ }
+ }
+ }
+
+ def process(code: String) = processor(code);
+}
+
+//############################################################################
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ Prolog.process(
+ "sujet(jean).\n" +
+ "sujet(marie).\n" +
+ "verbe(mange).\n" +
+ "verbe(dort).\n" +
+ "article(le).\n" +
+ "article(la).\n" +
+ "adjectif(grand).\n" +
+ "adjectif(belle).\n" +
+ "nom(table).\n" +
+ "nom(cheval).\n" +
+
+ "complement(A,D,N) :- article(A), adjectif(D), nom(N).\n" +
+ "phrase(S,V,A,D,N) :- sujet(S), verbe(V), complement(A,D,N).\n" +
+
+ "?phrase(S,V,A,D,N).\n" + "?more.\n"
+ );
+ Console.println;
+
+ Prolog.process(
+ "sujet(jean).\n" +
+ "sujet(marie).\n" +
+ "verbe(mange).\n" +
+ "verbe(dort).\n" +
+ "article(le,m).\n" +
+ "article(la,f).\n" +
+ "adjectif(grand,m).\n" +
+ "adjectif(belle,f).\n" +
+ "nom(table,f).\n" +
+ "nom(cheval,m).\n" +
+
+ "complement(A,D,N) :- article(A,G), adjectif(D,G), nom(N,G).\n" +
+ "phrase(S,V,A,D,N) :- sujet(S), verbe(V), complement(A,D,N).\n" +
+
+ "?phrase(S,V,A,D,N).\n" + "?more.\n"
+ );
+ Console.println;
+
+ Prolog.process(
+ "sujet(jean).\n" +
+ "sujet(marie).\n" +
+ "verbe(mange).\n" +
+ "verbe(dort).\n" +
+ "article(le,m).\n" +
+ "article(la,f).\n" +
+ "adjectif(grand,m).\n" +
+ "adjectif(belle,f).\n" +
+ "nom(table,f).\n" +
+ "nom(cheval,m).\n" +
+
+ "adjectifs(nil,G).\n" +
+ "adjectifs(cons(A1,nil),G) :- adjectif(A1,G).\n" +
+ "adjectifs(cons(A1,cons(A2,nil)),G) :- adjectif(A1,G),adjectif(A2,G).\n"+
+ "complement(A,D,N) :- article(A,G), adjectifs(D,G), nom(N,G).\n" +
+ "phrase(S,V,A,D,N) :- sujet(S), verbe(V), complement(A,D,N).\n" +
+
+ "?phrase(S,V,A,D,N).\n" + "?more.\n" + "?more.\n" + "?more.\n" +
+
+ "?phrase(jean,mange,le,nil,cheval).\n" +
+ "?phrase(jean,mange,le,cons(grand,nil),cheval).\n" +
+ "?phrase(jean,mange,le,cons(grand,nil),table).\n"
+ );
+ Console.println;
+
+ ()
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/NestedClasses.check b/test/files/run/NestedClasses.check
new file mode 100644
index 0000000000..a7ebc386e0
--- /dev/null
+++ b/test/files/run/NestedClasses.check
@@ -0,0 +1,9 @@
+e.e1 = 119
+cc.m = 3
+cc.am = 1
+cc.bm = 2
+aaa.f = 111
+bbb1.f = 42
+bbb2.f = 24
+bbb3.f = 24
+bbb4.f = 24
diff --git a/test/files/run/NestedClasses.scala b/test/files/run/NestedClasses.scala
new file mode 100644
index 0000000000..5a427144fc
--- /dev/null
+++ b/test/files/run/NestedClasses.scala
@@ -0,0 +1,98 @@
+//############################################################################
+// Test nested classes
+//############################################################################
+// $Id$
+
+// The following set of classes tests nasty references to "outer"
+// values.
+
+class A(pa : Int) {
+ def a1 = pa;
+ class B(pb : Int) {
+ def b1 = pa+pb+a1;
+ class C(pc : Int) extends A(b1) {
+ def c1 = pc+pb+pa
+ }
+ val c1 = new C(13)
+ }
+}
+
+trait M {
+ def m1 = 1
+}
+
+class A1(x : Int) extends A(x) with M {
+ class D extends B(14) {
+ val c2 = new C(15);
+ class E extends C(16) {
+ def e1 = c1+b1+a1+m1;
+ def e2 = new D();
+ }
+ }
+}
+
+// The following set of classes test qualified "this" and "super"
+// references.
+
+class AA {
+ def m = 1;
+ class BB {
+ def m = 2;
+ class CC {
+ def m = 3;
+ def am = AA.this.m;
+ def bm = BB.this.m;
+ }
+ }
+}
+
+class AAA {
+ def f = 42;
+}
+
+class BBB extends AAA {
+ override def f = 24;
+}
+
+class AAA1 extends AAA {
+ override def f = 111;
+ class BBB1 extends BBB {
+ override def f = AAA1.super.f;
+ }
+ class BBB2 extends BBB {
+ override def f = BBB2.super.f;
+ }
+ class BBB3 extends BBB {
+ override def f = super.f;
+ }
+ class BBB4 extends BBB { }
+}
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ val a = new A1(12);
+ val d = new a.D;
+ val e = new d.E;
+ Console.println("e.e1 = " + e.e1);
+
+ val aa = new AA;
+ val bb = new aa.BB;
+ val cc = new bb.CC;
+ Console.println("cc.m = " + cc.m);
+ Console.println("cc.am = " + cc.am);
+ Console.println("cc.bm = " + cc.bm);
+
+ val aaa = new AAA1;
+ val bbb1 = new aaa.BBB1;
+ val bbb2 = new aaa.BBB2;
+ val bbb3 = new aaa.BBB3;
+ val bbb4 = new aaa.BBB4;
+ Console.println("aaa.f = " + aaa.f);
+ Console.println("bbb1.f = " + bbb1.f);
+ Console.println("bbb2.f = " + bbb2.f);
+ Console.println("bbb3.f = " + bbb3.f);
+ Console.println("bbb4.f = " + bbb4.f);
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/all.lst b/test/files/run/all.lst
new file mode 100644
index 0000000000..5742905aa8
--- /dev/null
+++ b/test/files/run/all.lst
@@ -0,0 +1,32 @@
+arrays.scala
+boolexprs.scala
+bridges.scala
+bugs.scala
+constructors.scala
+Course-2002-01.scala
+Course-2002-02.scala
+Course-2002-03.scala
+Course-2002-04.scala
+Course-2002-05.scala
+Course-2002-06.scala
+Course-2002-07.scala
+Course-2002-08.scala
+Course-2002-09.scala
+Course-2002-10.scala
+Course-2002-13.scala
+enums.scala
+exceptions.scala
+imports.scala
+iq.scala
+iterators.scala
+lisp.scala
+lists.scala
+literals.scala
+map_test.scala
+misc.scala
+mixins.scala
+NestedClasses.scala
+overloads.scala
+regularpatmat.scala
+runtime.scala
+tailcalls.scala
diff --git a/test/files/run/arrays.check b/test/files/run/arrays.check
new file mode 100644
index 0000000000..8a0c57deae
--- /dev/null
+++ b/test/files/run/arrays.check
@@ -0,0 +1 @@
+checks: 2300
diff --git a/test/files/run/arrays.scala b/test/files/run/arrays.scala
new file mode 100644
index 0000000000..eee62afcb3
--- /dev/null
+++ b/test/files/run/arrays.scala
@@ -0,0 +1,912 @@
+//############################################################################
+// Arrays
+//############################################################################
+// $Id$
+
+//############################################################################
+
+object Test {
+
+ //##########################################################################
+ // Types
+
+ type Strings = List[String];
+ type Map = scala.collection.Map[Int, Any];
+ type HashMap = scala.collection.mutable.HashMap[Int, Any];
+ type TreeMap = scala.collection.immutable.TreeMap[Int, Any];
+
+ //##########################################################################
+ // Identity Functions
+
+ def id_Ta_T[T <: Any ](x: T): T = x;
+ def id_Tr_T[T <: AnyRef ](x: T): T = x;
+ def id_To_T[T <: Object ](x: T): T = x;
+
+ def id_Ta_a[T <: Any ](x: T): Any = x;
+ def id_Tr_a[T <: AnyRef ](x: T): Any = x;
+ def id_To_a[T <: Object ](x: T): Any = x;
+
+ def id_Tr_r[T <: AnyRef ](x: T): AnyRef = x;
+ def id_To_r[T <: Object ](x: T): AnyRef = x;
+
+ def id_To_o[T <: Object ](x: T): Object = x;
+
+ def id_TSa_T [S <: Any , T <: Array[S]](x: T): T = x;
+ def id_TSv_T [S <: AnyVal , T <: Array[S]](x: T): T = x;
+ def id_TSr_T [S <: AnyRef , T <: Array[S]](x: T): T = x;
+ def id_TSo_T [S <: Object , T <: Array[S]](x: T): T = x;
+ def id_TSm_T [S <: Map , T <: Array[S]](x: T): T = x;
+ def id_TSn_T [S <: Strings, T <: Array[S]](x: T): T = x;
+
+ def id_TSa_Ss[S <: Any , T <: Array[S]](x: T): Array[S] = x;
+ def id_TSv_Ss[S <: AnyVal , T <: Array[S]](x: T): Array[S] = x;
+ def id_TSr_Ss[S <: AnyRef , T <: Array[S]](x: T): Array[S] = x;
+ def id_TSo_Ss[S <: Object , T <: Array[S]](x: T): Array[S] = x;
+ def id_TSm_Ss[S <: Map , T <: Array[S]](x: T): Array[S] = x;
+ def id_TSn_Ss[S <: Strings, T <: Array[S]](x: T): Array[S] = x;
+
+ def id_TSa_a [S <: Any , T <: Array[S]](x: T): Any = x;
+ def id_TSv_a [S <: AnyVal , T <: Array[S]](x: T): Any = x;
+ def id_TSr_a [S <: AnyRef , T <: Array[S]](x: T): Any = x;
+ def id_TSo_a [S <: Object , T <: Array[S]](x: T): Any = x;
+ def id_TSm_a [S <: Map , T <: Array[S]](x: T): Any = x;
+ def id_TSn_a [S <: Strings, T <: Array[S]](x: T): Any = x;
+
+ def id_TSa_r [S <: Any , T <: Array[S]](x: T): AnyRef = x;
+ def id_TSv_r [S <: AnyVal , T <: Array[S]](x: T): AnyRef = x;
+ def id_TSr_r [S <: AnyRef , T <: Array[S]](x: T): AnyRef = x;
+ def id_TSo_r [S <: Object , T <: Array[S]](x: T): AnyRef = x;
+ def id_TSm_r [S <: Map , T <: Array[S]](x: T): AnyRef = x;
+ def id_TSn_r [S <: Strings, T <: Array[S]](x: T): AnyRef = x;
+
+ def id_TSa_o [S <: Any , T <: Array[S]](x: T): Object = x;
+ def id_TSv_o [S <: AnyVal , T <: Array[S]](x: T): Object = x;
+ def id_TSr_o [S <: AnyRef , T <: Array[S]](x: T): Object = x;
+ def id_TSo_o [S <: Object , T <: Array[S]](x: T): Object = x;
+ def id_TSm_o [S <: Map , T <: Array[S]](x: T): Object = x;
+ def id_TSn_o [S <: Strings, T <: Array[S]](x: T): Object = x;
+
+ def id_Sas_Ss[S <: Any ](xs: Array[S]): Array[S] = xs;
+ def id_Svs_Ss[S <: AnyVal ](xs: Array[S]): Array[S] = xs;
+ def id_Srs_Ss[S <: AnyRef ](xs: Array[S]): Array[S] = xs;
+ def id_Sos_Ss[S <: Object ](xs: Array[S]): Array[S] = xs;
+ def id_Sms_Ss[S <: Map ](xs: Array[S]): Array[S] = xs;
+ def id_Sns_Ss[S <: Strings](xs: Array[S]): Array[S] = xs;
+
+ def id_Sas_a [S <: Any ](xs: Array[S]): Any = xs;
+ def id_Svs_a [S <: AnyVal ](xs: Array[S]): Any = xs;
+ def id_Srs_a [S <: AnyRef ](xs: Array[S]): Any = xs;
+ def id_Sos_a [S <: Object ](xs: Array[S]): Any = xs;
+ def id_Sms_a [S <: Map ](xs: Array[S]): Any = xs;
+ def id_Sns_a [S <: Strings](xs: Array[S]): Any = xs;
+
+ def id_Sas_r [S <: Any ](xs: Array[S]): AnyRef = xs;
+ def id_Svs_r [S <: AnyVal ](xs: Array[S]): AnyRef = xs;
+ def id_Srs_r [S <: AnyRef ](xs: Array[S]): AnyRef = xs;
+ def id_Sos_r [S <: Object ](xs: Array[S]): AnyRef = xs;
+ def id_Sms_r [S <: Map ](xs: Array[S]): AnyRef = xs;
+ def id_Sns_r [S <: Strings](xs: Array[S]): AnyRef = xs;
+
+ def id_Sas_o [S <: Any ](xs: Array[S]): Object = xs;
+ def id_Svs_o [S <: AnyVal ](xs: Array[S]): Object = xs;
+ def id_Srs_o [S <: AnyRef ](xs: Array[S]): Object = xs;
+ def id_Sos_o [S <: Object ](xs: Array[S]): Object = xs;
+ def id_Sms_o [S <: Map ](xs: Array[S]): Object = xs;
+ def id_Sns_o [S <: Strings](xs: Array[S]): Object = xs;
+
+ //##########################################################################
+ // Generic Checks
+
+ type Check[T] = Array[T] => Unit;
+
+ var checks: Int = 0;
+
+ def check(test0: Boolean, actual: Any, expected: Any): Unit = {
+ val test1: Boolean = actual == expected;
+ if (!test0 || !test1) {
+ val s0 = if (test0) "ok" else "KO";
+ val s1 = if (test1) "ok" else "KO";
+ val s2 = actual.toString();
+ val s3 = expected.toString();
+ error(s0 + " - " + s1 + ": " + s2 + " != " + s3);
+ }
+ checks = checks + 1;
+ }
+
+ def check_Ta[T <: Any ](xs: Array[T], l: Int, x0: T, c: Check[T]): Unit ={
+ check(xs.length == l, xs.length, l);
+ check(xs(0) == x0, xs(0), x0);
+ c(xs);
+ }
+
+ def check_Tv[T <: AnyVal ](xs: Array[T], l: Int, x0: T, c: Check[T]): Unit ={
+ check(xs.length == l, xs.length, l);
+ check(xs(0) == x0, xs(0), x0);
+ check_Ta(xs, l, x0, c);
+ c(xs);
+ }
+
+ def check_Tr[T <: AnyRef ](xs: Array[T], l: Int, x0: T, c: Check[T]): Unit ={
+ check(xs.length == l, xs.length, l);
+ check(xs(0) == x0, xs(0), x0);
+ check_Ta(xs, l, x0, c);
+ c(xs);
+ }
+
+ def check_To[T <: Object ](xs: Array[T], l: Int, x0: T, c: Check[T]): Unit ={
+ check(xs.length == l, xs.length, l);
+ check(xs(0) == x0, xs(0), x0);
+ check_Ta(xs, l, x0, c);
+ check_Tr(xs, l, x0, c);
+ c(xs);
+ }
+
+ def check_Tm[T <: Map ](xs: Array[T], l: Int, x0: T, c: Check[T]): Unit ={
+ check(xs.length == l, xs.length, l);
+ check(xs(0) == x0, xs(0), x0);
+ check_Ta(xs, l, x0, c);
+ check_Tr(xs, l, x0, c);
+ check_To(xs, l, x0, c);
+ c(xs);
+ }
+
+ def check_Tn[T <: Strings](xs: Array[T], l: Int, x0: T, c: Check[T]): Unit ={
+ check(xs.length == l, xs.length, l);
+ check(xs(0) == x0, xs(0), x0);
+ check_Ta(xs, l, x0, c);
+ check_Tr(xs, l, x0, c);
+ check_To(xs, l, x0, c);
+ c(xs);
+ }
+
+ //##########################################################################
+ // Values
+
+ import scala.runtime.compat.Math._;
+
+ val u0: Unit = ();
+ val u1: Unit = ();
+
+ val z0: Boolean = false;
+ val z1: Boolean = true;
+
+ val b0: Byte = MIN_BYTE;
+ val b1: Byte = 1;
+ val b2: Byte = MAX_BYTE;
+
+ val s0: Short = MIN_SHORT;
+ val s1: Short = 2;
+ val s2: Short = MAX_SHORT;
+
+ val c0: Char = MIN_CHAR;
+ val c1: Char = '3';
+ val c2: Char = MAX_CHAR;
+
+ val i0: Int = MIN_INT;
+ val i1: Int = 4;
+ val i2: Int = MAX_INT;
+
+ val l0: Long = MIN_LONG;
+ val l1: Int = 5;
+ val l2: Long = MAX_LONG;
+
+ val f0: Float = MIN_FLOAT;
+ val f1: Int = 6;
+ val f2: Float = MAX_FLOAT;
+
+ val d0: Double = MIN_DOUBLE;
+ val d1: Int = 7;
+ val d2: Double = MAX_DOUBLE;
+
+ val a0: Unit = ();
+ val a1: Boolean = false;
+ val a2: Int = 0;
+ val a3: AllRef = null;
+ val a4: String = "a-z";
+ val a5: Symbol = 'token;
+ val a6: HashMap = new HashMap();
+ val a7: TreeMap = scala.collection.immutable.TreeMap.Empty[Int, Any];
+ val a8: Strings = List("a", "z");
+
+ val v0: Unit = ();
+ val v1: Boolean = false;
+ val v2: Int = 0;
+ val v3: Long = l2;
+ val v4: Float = f2;
+ val v5: Double = d2;
+
+ val r0: AllRef = a3;
+ val r1: String = a4;
+ val r2: Symbol = a5;
+ val r3: HashMap = a6;
+ val r4: TreeMap = a7;
+ val r5: Strings = a8;
+
+ val o0: AllRef = r0;
+ val o1: String = r1;
+ val o2: Symbol = r2;
+ val o3: HashMap = r3;
+ val o4: TreeMap = r4;
+ val o5: Strings = r5;
+
+ val m0: AllRef = r0;
+ val m1: HashMap = r3;
+ val m2: TreeMap = r4;
+
+ val n0: AllRef = r0;
+ val n1: Strings = r5;
+ val n2: Nil.type= Nil;
+
+ //##########################################################################
+ // Specific Checks
+
+ def ucheck(xs: Array[Unit ]): Unit = {
+ check(xs.length == 2, xs.length, 2);
+ check(xs(0) == u0, xs(0), u0);
+ check(xs(1) == u1, xs(1), u1);
+ }
+
+ def zcheck(xs: Array[Boolean]): Unit = {
+ check(xs.length == 2, xs.length, 2);
+ check(xs(0) == z0, xs(0), z0);
+ check(xs(1) == z1, xs(1), z1);
+ }
+
+ def bcheck(xs: Array[Byte ]): Unit = {
+ check(xs.length == 3, xs.length, 3);
+ check(xs(0) == b0, xs(0), b0);
+ check(xs(1) == b1, xs(1), b1);
+ check(xs(2) == b2, xs(2), b2);
+ }
+
+ def scheck(xs: Array[Short ]): Unit = {
+ check(xs.length == 3, xs.length, 3);
+ check(xs(0) == s0, xs(0), s0);
+ check(xs(1) == s1, xs(1), s1);
+ check(xs(2) == s2, xs(2), s2);
+ }
+
+ def ccheck(xs: Array[Char ]): Unit = {
+ check(xs.length == 3, xs.length, 3);
+ check(xs(0) == c0, xs(0), c0);
+ check(xs(1) == c1, xs(1), c1);
+ check(xs(2) == c2, xs(2), c2);
+ }
+
+ def icheck(xs: Array[Int ]): Unit = {
+ check(xs.length == 3, xs.length, 3);
+ check(xs(0) == i0, xs(0), i0);
+ check(xs(1) == i1, xs(1), i1);
+ check(xs(2) == i2, xs(2), i2);
+ }
+
+ def lcheck(xs: Array[Long ]): Unit = {
+ check(xs.length == 3, xs.length, 3);
+ check(xs(0) == l0, xs(0), l0);
+ check(xs(1) == l1, xs(1), l1: Long); // !!! : Long
+ check(xs(2) == l2, xs(2), l2);
+ }
+
+ def fcheck(xs: Array[Float ]): Unit = {
+ check(xs.length == 3, xs.length, 3);
+ check(xs(0) == f0, xs(0), f0);
+ check(xs(1) == f1, xs(1), f1: Float); // !!! : Float
+ check(xs(2) == f2, xs(2), f2);
+ }
+
+ def dcheck(xs: Array[Double ]): Unit = {
+ check(xs.length == 3, xs.length, 3);
+ check(xs(0) == d0, xs(0), d0);
+ check(xs(1) == d1, xs(1), d1: Double); // !!! : Double
+ check(xs(2) == d2, xs(2), d2);
+ }
+
+ def rcheck(xs: Array[AnyRef ]): Unit = {
+ check(xs.length == 6, xs.length, 6);
+ check(xs(0) == r0, xs(0), r0);
+ check(xs(1) == r1, xs(1), r1);
+ check(xs(2) == r2, xs(2), r2);
+ check(xs(3) == r3, xs(3), r3);
+ check(xs(4) == r4, xs(4), r4);
+ check(xs(5) == r5, xs(5), r5);
+ }
+
+ def ocheck(xs: Array[Object ]): Unit = {
+ check(xs.length == 6, xs.length, 6);
+ check(xs(0) == o0, xs(0), o0);
+ check(xs(1) == o1, xs(1), o1);
+ check(xs(2) == o2, xs(2), o2);
+ check(xs(3) == o3, xs(3), o3);
+ check(xs(4) == o4, xs(4), o4);
+ check(xs(5) == o5, xs(5), o5);
+ }
+
+ def mcheck(xs: Array[Map ]): Unit = {
+ check(xs.length == 3, xs.length, 3);
+ check(xs(0) == m0, xs(0), m0);
+ check(xs(1) == m1, xs(1), m1);
+ check(xs(2) == m2, xs(2), m2);
+ }
+
+ def ncheck(xs: Array[Strings]): Unit = {
+ check(xs.length == 3, xs.length, 3);
+ check(xs(0) == n0, xs(0), n0);
+ check(xs(1) == n1, xs(1), n1);
+ check(xs(2) == n2, xs(2), n2);
+ }
+
+ //##########################################################################
+ // Arrays
+
+ val uarray: Array[Unit ] = Array(u0, u1);
+ val zarray: Array[Boolean] = Array(z0, z1);
+ val barray: Array[Byte ] = Array(b0, b1, b2);
+ val sarray: Array[Short ] = Array(s0, s1, s2);
+ val carray: Array[Char ] = Array(c0, c1, c2);
+ val iarray: Array[Int ] = Array(i0, i1, i2);
+ val larray: Array[Long ] = Array(l0, l1, l2);
+ val farray: Array[Float ] = Array(f0, f1, f2);
+ val darray: Array[Double ] = Array(d0, d1, d2);
+ val rarray: Array[AnyRef ] = Array(r0, r1, r2, r4, r4, r5);
+ val oarray: Array[Object ] = Array(o0, o1, o2, o4, o4, o5);
+ val marray: Array[Map ] = Array(m0, m1, m2);
+ val narray: Array[Strings] = Array(n0, n1, n2);
+
+ //##########################################################################
+ // Main
+
+ def main(args: Array[String]): Unit = {
+
+ //######################################################################
+
+ ucheck(uarray);
+ zcheck(zarray);
+ bcheck(barray);
+ scheck(sarray);
+ ccheck(carray);
+ icheck(iarray);
+ lcheck(larray);
+ fcheck(farray);
+ dcheck(darray);
+ rcheck(rarray);
+ ocheck(oarray);
+ mcheck(marray);
+ ncheck(narray);
+
+ //######################################################################
+
+ ucheck(id_Ta_T(uarray));
+ zcheck(id_Ta_T(zarray));
+ bcheck(id_Ta_T(barray));
+ scheck(id_Ta_T(sarray));
+ ccheck(id_Ta_T(carray));
+ icheck(id_Ta_T(iarray));
+ lcheck(id_Ta_T(larray));
+ fcheck(id_Ta_T(farray));
+ dcheck(id_Ta_T(darray));
+ rcheck(id_Ta_T(rarray));
+ ocheck(id_Ta_T(oarray));
+ mcheck(id_Ta_T(marray));
+ ncheck(id_Ta_T(narray));
+
+ ucheck(id_Tr_T(uarray));
+ zcheck(id_Tr_T(zarray));
+ bcheck(id_Tr_T(barray));
+ scheck(id_Tr_T(sarray));
+ ccheck(id_Tr_T(carray));
+ icheck(id_Tr_T(iarray));
+ lcheck(id_Tr_T(larray));
+ fcheck(id_Tr_T(farray));
+ dcheck(id_Tr_T(darray));
+ rcheck(id_Tr_T(rarray));
+ ocheck(id_Tr_T(oarray));
+ mcheck(id_Tr_T(marray));
+ ncheck(id_Tr_T(narray));
+
+ ucheck(id_To_T(uarray));
+ zcheck(id_To_T(zarray));
+ bcheck(id_To_T(barray));
+ scheck(id_To_T(sarray));
+ ccheck(id_To_T(carray));
+ icheck(id_To_T(iarray));
+ lcheck(id_To_T(larray));
+ fcheck(id_To_T(farray));
+ dcheck(id_To_T(darray));
+ rcheck(id_To_T(rarray));
+ ocheck(id_To_T(oarray));
+ mcheck(id_To_T(marray));
+ ncheck(id_To_T(narray));
+
+ ucheck(id_Ta_a(uarray).asInstanceOf[Array[Unit ]]);
+ zcheck(id_Ta_a(zarray).asInstanceOf[Array[Boolean]]);
+ bcheck(id_Ta_a(barray).asInstanceOf[Array[Byte ]]);
+ scheck(id_Ta_a(sarray).asInstanceOf[Array[Short ]]);
+ ccheck(id_Ta_a(carray).asInstanceOf[Array[Char ]]);
+ icheck(id_Ta_a(iarray).asInstanceOf[Array[Int ]]);
+ lcheck(id_Ta_a(larray).asInstanceOf[Array[Long ]]);
+ fcheck(id_Ta_a(farray).asInstanceOf[Array[Float ]]);
+ dcheck(id_Ta_a(darray).asInstanceOf[Array[Double ]]);
+ rcheck(id_Ta_a(rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_Ta_a(oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_Ta_a(marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_Ta_a(narray).asInstanceOf[Array[Strings]]);
+
+ ucheck(id_Tr_a(uarray).asInstanceOf[Array[Unit ]]);
+ zcheck(id_Tr_a(zarray).asInstanceOf[Array[Boolean]]);
+ bcheck(id_Tr_a(barray).asInstanceOf[Array[Byte ]]);
+ scheck(id_Tr_a(sarray).asInstanceOf[Array[Short ]]);
+ ccheck(id_Tr_a(carray).asInstanceOf[Array[Char ]]);
+ icheck(id_Tr_a(iarray).asInstanceOf[Array[Int ]]);
+ lcheck(id_Tr_a(larray).asInstanceOf[Array[Long ]]);
+ fcheck(id_Tr_a(farray).asInstanceOf[Array[Float ]]);
+ dcheck(id_Tr_a(darray).asInstanceOf[Array[Double ]]);
+ rcheck(id_Tr_a(rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_Tr_a(oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_Tr_a(marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_Tr_a(narray).asInstanceOf[Array[Strings]]);
+
+ ucheck(id_To_a(uarray).asInstanceOf[Array[Unit ]]);
+ zcheck(id_To_a(zarray).asInstanceOf[Array[Boolean]]);
+ bcheck(id_To_a(barray).asInstanceOf[Array[Byte ]]);
+ scheck(id_To_a(sarray).asInstanceOf[Array[Short ]]);
+ ccheck(id_To_a(carray).asInstanceOf[Array[Char ]]);
+ icheck(id_To_a(iarray).asInstanceOf[Array[Int ]]);
+ lcheck(id_To_a(larray).asInstanceOf[Array[Long ]]);
+ fcheck(id_To_a(farray).asInstanceOf[Array[Float ]]);
+ dcheck(id_To_a(darray).asInstanceOf[Array[Double ]]);
+ rcheck(id_To_a(rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_To_a(oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_To_a(marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_To_a(narray).asInstanceOf[Array[Strings]]);
+
+ ucheck(id_Tr_r(uarray).asInstanceOf[Array[Unit ]]);
+ zcheck(id_Tr_r(zarray).asInstanceOf[Array[Boolean]]);
+ bcheck(id_Tr_r(barray).asInstanceOf[Array[Byte ]]);
+ scheck(id_Tr_r(sarray).asInstanceOf[Array[Short ]]);
+ ccheck(id_Tr_r(carray).asInstanceOf[Array[Char ]]);
+ icheck(id_Tr_r(iarray).asInstanceOf[Array[Int ]]);
+ lcheck(id_Tr_r(larray).asInstanceOf[Array[Long ]]);
+ fcheck(id_Tr_r(farray).asInstanceOf[Array[Float ]]);
+ dcheck(id_Tr_r(darray).asInstanceOf[Array[Double ]]);
+ rcheck(id_Tr_r(rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_Tr_r(oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_Tr_r(marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_Tr_r(narray).asInstanceOf[Array[Strings]]);
+
+ ucheck(id_To_r(uarray).asInstanceOf[Array[Unit ]]);
+ zcheck(id_To_r(zarray).asInstanceOf[Array[Boolean]]);
+ bcheck(id_To_r(barray).asInstanceOf[Array[Byte ]]);
+ scheck(id_To_r(sarray).asInstanceOf[Array[Short ]]);
+ ccheck(id_To_r(carray).asInstanceOf[Array[Char ]]);
+ icheck(id_To_r(iarray).asInstanceOf[Array[Int ]]);
+ lcheck(id_To_r(larray).asInstanceOf[Array[Long ]]);
+ fcheck(id_To_r(farray).asInstanceOf[Array[Float ]]);
+ dcheck(id_To_r(darray).asInstanceOf[Array[Double ]]);
+ rcheck(id_To_r(rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_To_r(oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_To_r(marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_To_r(narray).asInstanceOf[Array[Strings]]);
+
+ ucheck(id_To_o(uarray).asInstanceOf[Array[Unit ]]);
+ zcheck(id_To_o(zarray).asInstanceOf[Array[Boolean]]);
+ bcheck(id_To_o(barray).asInstanceOf[Array[Byte ]]);
+ scheck(id_To_o(sarray).asInstanceOf[Array[Short ]]);
+ ccheck(id_To_o(carray).asInstanceOf[Array[Char ]]);
+ icheck(id_To_o(iarray).asInstanceOf[Array[Int ]]);
+ lcheck(id_To_o(larray).asInstanceOf[Array[Long ]]);
+ fcheck(id_To_o(farray).asInstanceOf[Array[Float ]]);
+ dcheck(id_To_o(darray).asInstanceOf[Array[Double ]]);
+ rcheck(id_To_o(rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_To_o(oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_To_o(marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_To_o(narray).asInstanceOf[Array[Strings]]);
+
+ //######################################################################
+
+ ucheck(id_TSa_T [Unit , Array[Unit ]](uarray));
+ zcheck(id_TSa_T [Boolean, Array[Boolean]](zarray));
+ bcheck(id_TSa_T [Byte , Array[Byte ]](barray));
+ scheck(id_TSa_T [Short , Array[Short ]](sarray));
+ ccheck(id_TSa_T [Char , Array[Char ]](carray));
+ icheck(id_TSa_T [Int , Array[Int ]](iarray));
+ lcheck(id_TSa_T [Long , Array[Long ]](larray));
+ fcheck(id_TSa_T [Float , Array[Float ]](farray));
+ dcheck(id_TSa_T [Double , Array[Double ]](darray));
+ rcheck(id_TSa_T [AnyRef , Array[AnyRef ]](rarray));
+ ocheck(id_TSa_T [Object , Array[Object ]](oarray));
+ mcheck(id_TSa_T [Map , Array[Map ]](marray));
+ ncheck(id_TSa_T [Strings, Array[Strings]](narray));
+
+ ucheck(id_TSv_T [Unit , Array[Unit ]](uarray));
+ zcheck(id_TSv_T [Boolean, Array[Boolean]](zarray));
+ bcheck(id_TSv_T [Byte , Array[Byte ]](barray));
+ scheck(id_TSv_T [Short , Array[Short ]](sarray));
+ ccheck(id_TSv_T [Char , Array[Char ]](carray));
+ icheck(id_TSv_T [Int , Array[Int ]](iarray));
+ lcheck(id_TSv_T [Long , Array[Long ]](larray));
+ fcheck(id_TSv_T [Float , Array[Float ]](farray));
+ dcheck(id_TSv_T [Double , Array[Double ]](darray));
+
+ rcheck(id_TSr_T [AnyRef , Array[AnyRef ]](rarray));
+ ocheck(id_TSr_T [Object , Array[Object ]](oarray));
+ mcheck(id_TSr_T [Map , Array[Map ]](marray));
+ ncheck(id_TSr_T [Strings, Array[Strings]](narray));
+
+ rcheck(id_TSo_T [AnyRef , Array[AnyRef ]](rarray));
+ ocheck(id_TSo_T [Object , Array[Object ]](oarray));
+ mcheck(id_TSo_T [Map , Array[Map ]](marray));
+ ncheck(id_TSo_T [Strings, Array[Strings]](narray));
+
+ mcheck(id_TSm_T [Map , Array[Map ]](marray));
+
+ ncheck(id_TSn_T [Strings, Array[Strings]](narray));
+
+ //######################################################################
+
+ ucheck(id_TSa_Ss[Unit , Array[Unit ]](uarray));
+ zcheck(id_TSa_Ss[Boolean, Array[Boolean]](zarray));
+ bcheck(id_TSa_Ss[Byte , Array[Byte ]](barray));
+ scheck(id_TSa_Ss[Short , Array[Short ]](sarray));
+ ccheck(id_TSa_Ss[Char , Array[Char ]](carray));
+ icheck(id_TSa_Ss[Int , Array[Int ]](iarray));
+ lcheck(id_TSa_Ss[Long , Array[Long ]](larray));
+ fcheck(id_TSa_Ss[Float , Array[Float ]](farray));
+ dcheck(id_TSa_Ss[Double , Array[Double ]](darray));
+ rcheck(id_TSa_Ss[AnyRef , Array[AnyRef ]](rarray));
+ ocheck(id_TSa_Ss[Object , Array[Object ]](oarray));
+ mcheck(id_TSa_Ss[Map , Array[Map ]](marray));
+ ncheck(id_TSa_Ss[Strings, Array[Strings]](narray));
+
+ ucheck(id_TSv_Ss[Unit , Array[Unit ]](uarray));
+ zcheck(id_TSv_Ss[Boolean, Array[Boolean]](zarray));
+ bcheck(id_TSv_Ss[Byte , Array[Byte ]](barray));
+ scheck(id_TSv_Ss[Short , Array[Short ]](sarray));
+ ccheck(id_TSv_Ss[Char , Array[Char ]](carray));
+ icheck(id_TSv_Ss[Int , Array[Int ]](iarray));
+ lcheck(id_TSv_Ss[Long , Array[Long ]](larray));
+ fcheck(id_TSv_Ss[Float , Array[Float ]](farray));
+ dcheck(id_TSv_Ss[Double , Array[Double ]](darray));
+
+ rcheck(id_TSr_Ss[AnyRef , Array[AnyRef ]](rarray));
+ ocheck(id_TSr_Ss[Object , Array[Object ]](oarray));
+ mcheck(id_TSr_Ss[Map , Array[Map ]](marray));
+ ncheck(id_TSr_Ss[Strings, Array[Strings]](narray));
+
+ rcheck(id_TSo_Ss[AnyRef , Array[AnyRef ]](rarray));
+ ocheck(id_TSo_Ss[Object , Array[Object ]](oarray));
+ mcheck(id_TSo_Ss[Map , Array[Map ]](marray));
+ ncheck(id_TSo_Ss[Strings, Array[Strings]](narray));
+
+ mcheck(id_TSm_Ss[Map , Array[Map ]](marray));
+
+ ncheck(id_TSn_Ss[Strings, Array[Strings]](narray));
+
+ //######################################################################
+
+ ucheck(id_TSa_a [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
+ zcheck(id_TSa_a [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
+ bcheck(id_TSa_a [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
+ scheck(id_TSa_a [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
+ ccheck(id_TSa_a [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
+ icheck(id_TSa_a [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
+ lcheck(id_TSa_a [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
+ fcheck(id_TSa_a [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
+ dcheck(id_TSa_a [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
+ rcheck(id_TSa_a [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_TSa_a [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_TSa_a [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_TSa_a [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ ucheck(id_TSv_a [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
+ zcheck(id_TSv_a [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
+ bcheck(id_TSv_a [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
+ scheck(id_TSv_a [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
+ ccheck(id_TSv_a [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
+ icheck(id_TSv_a [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
+ lcheck(id_TSv_a [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
+ fcheck(id_TSv_a [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
+ dcheck(id_TSv_a [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
+
+ rcheck(id_TSr_a [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_TSr_a [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_TSr_a [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_TSr_a [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ rcheck(id_TSo_a [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_TSo_a [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_TSo_a [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_TSo_a [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ mcheck(id_TSm_a [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+
+ ncheck(id_TSn_a [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ //######################################################################
+
+ ucheck(id_TSa_r [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
+ zcheck(id_TSa_r [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
+ bcheck(id_TSa_r [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
+ scheck(id_TSa_r [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
+ ccheck(id_TSa_r [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
+ icheck(id_TSa_r [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
+ lcheck(id_TSa_r [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
+ fcheck(id_TSa_r [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
+ dcheck(id_TSa_r [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
+ rcheck(id_TSa_r [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_TSa_r [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_TSa_r [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_TSa_r [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ ucheck(id_TSv_r [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
+ zcheck(id_TSv_r [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
+ bcheck(id_TSv_r [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
+ scheck(id_TSv_r [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
+ ccheck(id_TSv_r [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
+ icheck(id_TSv_r [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
+ lcheck(id_TSv_r [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
+ fcheck(id_TSv_r [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
+ dcheck(id_TSv_r [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
+
+ rcheck(id_TSr_r [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_TSr_r [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_TSr_r [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_TSr_r [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ rcheck(id_TSo_r [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_TSo_r [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_TSo_r [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_TSo_r [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ mcheck(id_TSm_r [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+
+ ncheck(id_TSn_r [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ //######################################################################
+
+ ucheck(id_TSa_o [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
+ zcheck(id_TSa_o [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
+ bcheck(id_TSa_o [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
+ scheck(id_TSa_o [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
+ ccheck(id_TSa_o [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
+ icheck(id_TSa_o [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
+ lcheck(id_TSa_o [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
+ fcheck(id_TSa_o [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
+ dcheck(id_TSa_o [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
+ rcheck(id_TSa_o [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_TSa_o [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_TSa_o [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_TSa_o [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ ucheck(id_TSv_o [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
+ zcheck(id_TSv_o [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
+ bcheck(id_TSv_o [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
+ scheck(id_TSv_o [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
+ ccheck(id_TSv_o [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
+ icheck(id_TSv_o [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
+ lcheck(id_TSv_o [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
+ fcheck(id_TSv_o [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
+ dcheck(id_TSv_o [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
+
+ rcheck(id_TSr_o [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_TSr_o [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_TSr_o [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_TSr_o [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ rcheck(id_TSo_o [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_TSo_o [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_TSo_o [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_TSo_o [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ mcheck(id_TSm_o [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+
+ ncheck(id_TSn_o [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ //######################################################################
+
+ ucheck(id_Sas_Ss[Unit ](uarray));
+ zcheck(id_Sas_Ss[Boolean](zarray));
+ bcheck(id_Sas_Ss[Byte ](barray));
+ scheck(id_Sas_Ss[Short ](sarray));
+ ccheck(id_Sas_Ss[Char ](carray));
+ icheck(id_Sas_Ss[Int ](iarray));
+ lcheck(id_Sas_Ss[Long ](larray));
+ fcheck(id_Sas_Ss[Float ](farray));
+ dcheck(id_Sas_Ss[Double ](darray));
+ rcheck(id_Sas_Ss[AnyRef ](rarray));
+ ocheck(id_Sas_Ss[Object ](oarray));
+ mcheck(id_Sas_Ss[Map ](marray));
+ ncheck(id_Sas_Ss[Strings](narray));
+
+ ucheck(id_Svs_Ss[Unit ](uarray));
+ zcheck(id_Svs_Ss[Boolean](zarray));
+ bcheck(id_Svs_Ss[Byte ](barray));
+ scheck(id_Svs_Ss[Short ](sarray));
+ ccheck(id_Svs_Ss[Char ](carray));
+ icheck(id_Svs_Ss[Int ](iarray));
+ lcheck(id_Svs_Ss[Long ](larray));
+ fcheck(id_Svs_Ss[Float ](farray));
+ dcheck(id_Svs_Ss[Double ](darray));
+
+ rcheck(id_Srs_Ss[AnyRef ](rarray));
+ ocheck(id_Srs_Ss[Object ](oarray));
+ mcheck(id_Srs_Ss[Map ](marray));
+ ncheck(id_Srs_Ss[Strings](narray));
+
+ rcheck(id_Sos_Ss[AnyRef ](rarray));
+ ocheck(id_Sos_Ss[Object ](oarray));
+ mcheck(id_Sos_Ss[Map ](marray));
+ ncheck(id_Sos_Ss[Strings](narray));
+
+ mcheck(id_Sms_Ss[Map ](marray));
+
+ ncheck(id_Sns_Ss[Strings](narray));
+
+ //######################################################################
+
+ ucheck(id_TSa_a [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
+ zcheck(id_TSa_a [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
+ bcheck(id_TSa_a [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
+ scheck(id_TSa_a [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
+ ccheck(id_TSa_a [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
+ icheck(id_TSa_a [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
+ lcheck(id_TSa_a [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
+ fcheck(id_TSa_a [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
+ dcheck(id_TSa_a [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
+ rcheck(id_TSa_a [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_TSa_a [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_TSa_a [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_TSa_a [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ ucheck(id_TSv_a [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
+ zcheck(id_TSv_a [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
+ bcheck(id_TSv_a [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
+ scheck(id_TSv_a [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
+ ccheck(id_TSv_a [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
+ icheck(id_TSv_a [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
+ lcheck(id_TSv_a [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
+ fcheck(id_TSv_a [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
+ dcheck(id_TSv_a [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
+
+ rcheck(id_TSr_a [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_TSr_a [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_TSr_a [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_TSr_a [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ rcheck(id_TSo_a [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_TSo_a [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_TSo_a [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_TSo_a [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ mcheck(id_TSm_a [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+
+ ncheck(id_TSn_a [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ //######################################################################
+
+ ucheck(id_TSa_r [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
+ zcheck(id_TSa_r [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
+ bcheck(id_TSa_r [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
+ scheck(id_TSa_r [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
+ ccheck(id_TSa_r [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
+ icheck(id_TSa_r [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
+ lcheck(id_TSa_r [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
+ fcheck(id_TSa_r [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
+ dcheck(id_TSa_r [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
+ rcheck(id_TSa_r [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_TSa_r [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_TSa_r [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_TSa_r [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ ucheck(id_TSv_r [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
+ zcheck(id_TSv_r [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
+ bcheck(id_TSv_r [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
+ scheck(id_TSv_r [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
+ ccheck(id_TSv_r [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
+ icheck(id_TSv_r [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
+ lcheck(id_TSv_r [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
+ fcheck(id_TSv_r [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
+ dcheck(id_TSv_r [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
+
+ rcheck(id_TSr_r [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_TSr_r [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_TSr_r [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_TSr_r [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ rcheck(id_TSo_r [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_TSo_r [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_TSo_r [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_TSo_r [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ mcheck(id_TSm_r [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+
+ ncheck(id_TSn_r [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ //######################################################################
+
+ ucheck(id_TSa_o [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
+ zcheck(id_TSa_o [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
+ bcheck(id_TSa_o [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
+ scheck(id_TSa_o [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
+ ccheck(id_TSa_o [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
+ icheck(id_TSa_o [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
+ lcheck(id_TSa_o [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
+ fcheck(id_TSa_o [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
+ dcheck(id_TSa_o [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
+ rcheck(id_TSa_o [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_TSa_o [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_TSa_o [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_TSa_o [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ ucheck(id_TSv_o [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
+ zcheck(id_TSv_o [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
+ bcheck(id_TSv_o [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
+ scheck(id_TSv_o [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
+ ccheck(id_TSv_o [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
+ icheck(id_TSv_o [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
+ lcheck(id_TSv_o [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
+ fcheck(id_TSv_o [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
+ dcheck(id_TSv_o [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
+
+ rcheck(id_TSr_o [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_TSr_o [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_TSr_o [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_TSr_o [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ rcheck(id_TSo_o [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
+ ocheck(id_TSo_o [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
+ mcheck(id_TSo_o [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+ ncheck(id_TSo_o [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ mcheck(id_TSm_o [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
+
+ ncheck(id_TSn_o [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
+
+ //######################################################################
+
+ check_Ta(uarray, 2, u0, ucheck);
+ check_Ta(zarray, 2, z0, zcheck);
+ check_Ta(barray, 3, b0, bcheck);
+ check_Ta(sarray, 3, s0, scheck);
+ check_Ta(carray, 3, c0, ccheck);
+ check_Ta(iarray, 3, i0, icheck);
+ check_Ta(larray, 3, l0, lcheck);
+ check_Ta(farray, 3, f0, fcheck);
+ check_Ta(darray, 3, d0, dcheck);
+ check_Ta(rarray, 6, r0, rcheck);
+ check_Ta(oarray, 6, o0, ocheck);
+ check_Ta(marray, 3, m0, mcheck);
+ check_Ta(narray, 3, n0, ncheck);
+
+ check_Tv(uarray, 2, u0, ucheck);
+ check_Tv(zarray, 2, z0, zcheck);
+ check_Tv(barray, 3, b0, bcheck);
+ check_Tv(sarray, 3, s0, scheck);
+ check_Tv(carray, 3, c0, ccheck);
+ check_Tv(iarray, 3, i0, icheck);
+ check_Tv(larray, 3, l0, lcheck);
+ check_Tv(farray, 3, f0, fcheck);
+ check_Tv(darray, 3, d0, dcheck);
+
+ check_Tr(rarray, 6, r0, rcheck);
+ check_Tr(oarray, 6, o0, ocheck);
+ check_Tr(marray, 3, m0, mcheck);
+ check_Tr(narray, 3, n0, ncheck);
+
+ check_To(rarray, 6, r0, rcheck);
+ check_To(oarray, 6, o0, ocheck);
+ check_To(marray, 3, m0, mcheck);
+ check_To(narray, 3, n0, ncheck);
+
+ check_Tm(marray, 3, m0, mcheck);
+
+ check_Tn(narray, 3, n0, ncheck);
+
+ //######################################################################
+
+ Console.println("checks: " + checks);
+
+ //######################################################################
+ }
+
+ //##########################################################################
+}
diff --git a/test/files/run/boolexprs.check b/test/files/run/boolexprs.check
new file mode 100644
index 0000000000..cd2c735894
--- /dev/null
+++ b/test/files/run/boolexprs.check
@@ -0,0 +1,3 @@
+test Test1 was successful
+test Test2 was successful
+
diff --git a/test/files/run/boolexprs.scala b/test/files/run/boolexprs.scala
new file mode 100644
index 0000000000..7080f84b56
--- /dev/null
+++ b/test/files/run/boolexprs.scala
@@ -0,0 +1,61 @@
+//############################################################################
+// Boolean Expressions
+//############################################################################
+// $Id$
+
+class Counter {
+ private var n: Int = 0;
+ def incrThen(b: Boolean) = if (b) n = n + 1;
+ def value = n;
+}
+
+object Test1 {
+ var flag = false;
+ def flip: boolean = { val tmp = flag; flag = !flag; tmp }
+ def run: Int = {
+ val c = new Counter;
+ c.incrThen(flip || flip);
+ c.value
+ }
+}
+
+object Test2 {
+ val a = Array(false);
+
+ def run: Int = {
+ val c = new Counter;
+ c.incrThen(true && a(0));
+ c.incrThen(false || Nil.length > 0);
+ c.value
+ }
+}
+
+//############################################################################
+// Test code
+
+object Test {
+ def check_success(name: String, closure: => Int, expected: Int): Unit = {
+ Console.print("test " + name);
+ try {
+ val actual: Int = closure;
+ if (actual == expected) {
+ Console.print(" was successful");
+ } else {
+ Console.print(" failed: expected "+ expected +", found "+ actual);
+ }
+ } catch {
+ case exception: Throwable => {
+ Console.print(" raised exception " + exception);
+ }
+ }
+ Console.println;
+ }
+
+ def main(args: Array[String]): Unit = {
+ check_success("Test1", Test1.run, 1);
+ check_success("Test2", Test2.run, 0);
+ Console.println;
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/bridges.scala b/test/files/run/bridges.scala
new file mode 100644
index 0000000000..bf3781fde0
--- /dev/null
+++ b/test/files/run/bridges.scala
@@ -0,0 +1,7123 @@
+//############################################################################
+// Test bridge methods
+//############################################################################
+// $Id$
+
+class A;
+class B;
+class C;
+class D;
+
+object Help {
+ val max: Int = 4;
+ var next: Int = 0;
+ var vars: Array[String] = new Array[String](max);
+ def init: Unit = {
+ var i = 0;
+ while (i < max) { vars(i) = null; i = i + 1; }
+ next = 0;
+ }
+ def check(count: Int, value: String): Boolean = {
+ var b: Boolean = true;
+ var i: Int = 0;
+ while (i < count) { if (vars(i) != value) b = false; i = i + 1; }
+ while (i < max) { if (vars(i) != null) b = false; i = i + 1; }
+ b;
+ }
+ def print: Unit = {
+ var i = 0;
+ while (i < max) { if (i > 0) Console.print(", "); Console.print(vars(i)); i = i + 1; }
+ }
+ def foo = { vars(next) = "foo"; next = next + 1; }
+ def bar = { vars(next) = "bar"; next = next + 1; }
+ def mix = { vars(next) = "mix"; next = next + 1; }
+ def sub = { vars(next) = "sub"; next = next + 1; }
+}
+
+import Help.foo;
+import Help.bar;
+import Help.mix;
+import Help.sub;
+
+abstract class Foo___ { type I<:AnyRef; def f: I ; f; }
+abstract class Foo__f { type I<:AnyRef; def f: I = {foo; null}; f; }
+abstract class Foo_I_ { class I ; def f: I ; f; }
+abstract class Foo_If { class I ; def f: I = {foo; null}; f; }
+abstract class FooX__[X] { type I<:AnyRef; def f: I ; f; }
+abstract class FooX_f[X] { type I<:AnyRef; def f: I = {foo; null}; f; }
+abstract class FooXI_[X] { class I ; def f: I ; f; }
+abstract class FooXIf[X] { class I ; def f: I = {foo; null}; f; }
+
+trait Bar___ { type I<:AnyRef; def f: I ; f; }
+trait Bar__f { type I<:AnyRef; def f: I = {bar; null}; f; }
+trait Bar_I_ { class I ; def f: I ; f; }
+trait Bar_If { class I ; def f: I = {bar; null}; f; }
+trait BarY__[Y] { type I<:AnyRef; def f: I ; f; }
+trait BarY_f[Y] { type I<:AnyRef; def f: I = {bar; null}; f; }
+trait BarYI_[Y] { class I ; def f: I ; f; }
+trait BarYIf[Y] { class I ; def f: I = {bar; null}; f; }
+
+
+/* */abstract class Mix___eFoo___ extends Foo___ { ; ; f; }
+/* */abstract class Mix___eFoo___wBar___ extends Foo___ with Bar___ { ; ; f; }
+/* */abstract class Mix___eFoo___wBar__f extends Foo___ with Bar__f { ; ; f; }
+/* */abstract class Mix___eFoo___wBar_I_ extends Foo___ with Bar_I_ { ; ; f; }
+/* *//* */ class Mix___eFoo___wBar_If extends Foo___ with Bar_If { ; ; f; }
+/* */abstract class Mix___eFoo___wBarY__ extends Foo___ with BarY__[B] { ; ; f; }
+/* */abstract class Mix___eFoo___wBarY_f extends Foo___ with BarY_f[B] { ; ; f; }
+/* */abstract class Mix___eFoo___wBarYI_ extends Foo___ with BarYI_[B] { ; ; f; }
+/* *//* */ class Mix___eFoo___wBarYIf extends Foo___ with BarYIf[B] { ; ; f; }
+/* */abstract class Mix___eFoo__f extends Foo__f { ; ; f; }
+/* */abstract class Mix___eFoo__fwBar___ extends Foo__f with Bar___ { ; ; f; }
+// */abstract class Mix___eFoo__fwBar__f extends Foo__f with Bar__f { ; ; f; }
+/* *//* */ class Mix___eFoo__fwBar_I_ extends Foo__f with Bar_I_ { ; ; f; }
+// *//* */ class Mix___eFoo__fwBar_If extends Foo__f with Bar_If { ; ; f; }
+/* */abstract class Mix___eFoo__fwBarY__ extends Foo__f with BarY__[B] { ; ; f; }
+// */abstract class Mix___eFoo__fwBarY_f extends Foo__f with BarY_f[B] { ; ; f; }
+/* *//* */ class Mix___eFoo__fwBarYI_ extends Foo__f with BarYI_[B] { ; ; f; }
+// *//* */ class Mix___eFoo__fwBarYIf extends Foo__f with BarYIf[B] { ; ; f; }
+/* */abstract class Mix___eFoo_I_ extends Foo_I_ { ; ; f; }
+/* */abstract class Mix___eFoo_I_wBar___ extends Foo_I_ with Bar___ { ; ; f; }
+/* *//* */ class Mix___eFoo_I_wBar__f extends Foo_I_ with Bar__f { ; ; f; }
+// */abstract class Mix___eFoo_I_wBar_I_ extends Foo_I_ with Bar_I_ { ; ; f; }
+// *//* */ class Mix___eFoo_I_wBar_If extends Foo_I_ with Bar_If { ; ; f; }
+/* */abstract class Mix___eFoo_I_wBarY__ extends Foo_I_ with BarY__[B] { ; ; f; }
+/* *//* */ class Mix___eFoo_I_wBarY_f extends Foo_I_ with BarY_f[B] { ; ; f; }
+// */abstract class Mix___eFoo_I_wBarYI_ extends Foo_I_ with BarYI_[B] { ; ; f; }
+// *//* */ class Mix___eFoo_I_wBarYIf extends Foo_I_ with BarYIf[B] { ; ; f; }
+/* *//* */ class Mix___eFoo_If extends Foo_If { ; ; f; }
+/* *//* */ class Mix___eFoo_IfwBar___ extends Foo_If with Bar___ { ; ; f; }
+// *//* */ class Mix___eFoo_IfwBar__f extends Foo_If with Bar__f { ; ; f; }
+// *//* */ class Mix___eFoo_IfwBar_I_ extends Foo_If with Bar_I_ { ; ; f; }
+// *//* */ class Mix___eFoo_IfwBar_If extends Foo_If with Bar_If { ; ; f; }
+/* *//* */ class Mix___eFoo_IfwBarY__ extends Foo_If with BarY__[B] { ; ; f; }
+// *//* */ class Mix___eFoo_IfwBarY_f extends Foo_If with BarY_f[B] { ; ; f; }
+// *//* */ class Mix___eFoo_IfwBarYI_ extends Foo_If with BarYI_[B] { ; ; f; }
+// *//* */ class Mix___eFoo_IfwBarYIf extends Foo_If with BarYIf[B] { ; ; f; }
+/* */abstract class Mix___eFooX__ extends FooX__[A] { ; ; f; }
+/* */abstract class Mix___eFooX__wBar___ extends FooX__[A] with Bar___ { ; ; f; }
+/* */abstract class Mix___eFooX__wBar__f extends FooX__[A] with Bar__f { ; ; f; }
+/* */abstract class Mix___eFooX__wBar_I_ extends FooX__[A] with Bar_I_ { ; ; f; }
+/* *//* */ class Mix___eFooX__wBar_If extends FooX__[A] with Bar_If { ; ; f; }
+/* */abstract class Mix___eFooX__wBarY__ extends FooX__[A] with BarY__[B] { ; ; f; }
+/* */abstract class Mix___eFooX__wBarY_f extends FooX__[A] with BarY_f[B] { ; ; f; }
+/* */abstract class Mix___eFooX__wBarYI_ extends FooX__[A] with BarYI_[B] { ; ; f; }
+/* *//* */ class Mix___eFooX__wBarYIf extends FooX__[A] with BarYIf[B] { ; ; f; }
+/* */abstract class Mix___eFooX_f extends FooX_f[A] { ; ; f; }
+/* */abstract class Mix___eFooX_fwBar___ extends FooX_f[A] with Bar___ { ; ; f; }
+// */abstract class Mix___eFooX_fwBar__f extends FooX_f[A] with Bar__f { ; ; f; }
+/* *//* */ class Mix___eFooX_fwBar_I_ extends FooX_f[A] with Bar_I_ { ; ; f; }
+// *//* */ class Mix___eFooX_fwBar_If extends FooX_f[A] with Bar_If { ; ; f; }
+/* */abstract class Mix___eFooX_fwBarY__ extends FooX_f[A] with BarY__[B] { ; ; f; }
+// */abstract class Mix___eFooX_fwBarY_f extends FooX_f[A] with BarY_f[B] { ; ; f; }
+/* *//* */ class Mix___eFooX_fwBarYI_ extends FooX_f[A] with BarYI_[B] { ; ; f; }
+// *//* */ class Mix___eFooX_fwBarYIf extends FooX_f[A] with BarYIf[B] { ; ; f; }
+/* */abstract class Mix___eFooXI_ extends FooXI_[A] { ; ; f; }
+/* */abstract class Mix___eFooXI_wBar___ extends FooXI_[A] with Bar___ { ; ; f; }
+/* *//* */ class Mix___eFooXI_wBar__f extends FooXI_[A] with Bar__f { ; ; f; }
+// */abstract class Mix___eFooXI_wBar_I_ extends FooXI_[A] with Bar_I_ { ; ; f; }
+// *//* */ class Mix___eFooXI_wBar_If extends FooXI_[A] with Bar_If { ; ; f; }
+/* */abstract class Mix___eFooXI_wBarY__ extends FooXI_[A] with BarY__[B] { ; ; f; }
+/* *//* */ class Mix___eFooXI_wBarY_f extends FooXI_[A] with BarY_f[B] { ; ; f; }
+// */abstract class Mix___eFooXI_wBarYI_ extends FooXI_[A] with BarYI_[B] { ; ; f; }
+// *//* */ class Mix___eFooXI_wBarYIf extends FooXI_[A] with BarYIf[B] { ; ; f; }
+/* *//* */ class Mix___eFooXIf extends FooXIf[A] { ; ; f; }
+/* *//* */ class Mix___eFooXIfwBar___ extends FooXIf[A] with Bar___ { ; ; f; }
+// *//* */ class Mix___eFooXIfwBar__f extends FooXIf[A] with Bar__f { ; ; f; }
+// *//* */ class Mix___eFooXIfwBar_I_ extends FooXIf[A] with Bar_I_ { ; ; f; }
+// *//* */ class Mix___eFooXIfwBar_If extends FooXIf[A] with Bar_If { ; ; f; }
+/* *//* */ class Mix___eFooXIfwBarY__ extends FooXIf[A] with BarY__[B] { ; ; f; }
+// *//* */ class Mix___eFooXIfwBarY_f extends FooXIf[A] with BarY_f[B] { ; ; f; }
+// *//* */ class Mix___eFooXIfwBarYI_ extends FooXIf[A] with BarYI_[B] { ; ; f; }
+// *//* */ class Mix___eFooXIfwBarYIf extends FooXIf[A] with BarYIf[B] { ; ; f; }
+
+/* */abstract class Mix__feFoo___ extends Foo___ { ; def f: I = {mix; null}; f; }
+/* */abstract class Mix__feFoo___wBar___ extends Foo___ with Bar___ { ; def f: I = {mix; null}; f; }
+/* */abstract class Mix__feFoo___wBar__f extends Foo___ with Bar__f { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFoo___wBar_I_ extends Foo___ with Bar_I_ { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFoo___wBar_If extends Foo___ with Bar_If { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__feFoo___wBarY__ extends Foo___ with BarY__[B] { ; def f: I = {mix; null}; f; }
+/* */abstract class Mix__feFoo___wBarY_f extends Foo___ with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFoo___wBarYI_ extends Foo___ with BarYI_[B] { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFoo___wBarYIf extends Foo___ with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__feFoo__f extends Foo__f { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__feFoo__fwBar___ extends Foo__f with Bar___ { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__feFoo__fwBar__f extends Foo__f with Bar__f { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFoo__fwBar_I_ extends Foo__f with Bar_I_ { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFoo__fwBar_If extends Foo__f with Bar_If { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__feFoo__fwBarY__ extends Foo__f with BarY__[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__feFoo__fwBarY_f extends Foo__f with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFoo__fwBarYI_ extends Foo__f with BarYI_[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFoo__fwBarYIf extends Foo__f with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFoo_I_ extends Foo_I_ { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFoo_I_wBar___ extends Foo_I_ with Bar___ { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFoo_I_wBar__f extends Foo_I_ with Bar__f { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__feFoo_I_wBar_I_ extends Foo_I_ with Bar_I_ { ; def f: I = {mix; null}; f; }
+// *//* */ class Mix__feFoo_I_wBar_If extends Foo_I_ with Bar_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFoo_I_wBarY__ extends Foo_I_ with BarY__[B] { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFoo_I_wBarY_f extends Foo_I_ with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__feFoo_I_wBarYI_ extends Foo_I_ with BarYI_[B] { ; def f: I = {mix; null}; f; }
+// *//* */ class Mix__feFoo_I_wBarYIf extends Foo_I_ with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFoo_If extends Foo_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFoo_IfwBar___ extends Foo_If with Bar___ { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFoo_IfwBar__f extends Foo_If with Bar__f { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__feFoo_IfwBar_I_ extends Foo_If with Bar_I_ { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__feFoo_IfwBar_If extends Foo_If with Bar_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFoo_IfwBarY__ extends Foo_If with BarY__[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFoo_IfwBarY_f extends Foo_If with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__feFoo_IfwBarYI_ extends Foo_If with BarYI_[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__feFoo_IfwBarYIf extends Foo_If with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__feFooX__ extends FooX__[A] { ; def f: I = {mix; null}; f; }
+/* */abstract class Mix__feFooX__wBar___ extends FooX__[A] with Bar___ { ; def f: I = {mix; null}; f; }
+/* */abstract class Mix__feFooX__wBar__f extends FooX__[A] with Bar__f { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFooX__wBar_I_ extends FooX__[A] with Bar_I_ { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFooX__wBar_If extends FooX__[A] with Bar_If { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__feFooX__wBarY__ extends FooX__[A] with BarY__[B] { ; def f: I = {mix; null}; f; }
+/* */abstract class Mix__feFooX__wBarY_f extends FooX__[A] with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFooX__wBarYI_ extends FooX__[A] with BarYI_[B] { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFooX__wBarYIf extends FooX__[A] with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__feFooX_f extends FooX_f[A] { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__feFooX_fwBar___ extends FooX_f[A] with Bar___ { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__feFooX_fwBar__f extends FooX_f[A] with Bar__f { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFooX_fwBar_I_ extends FooX_f[A] with Bar_I_ { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFooX_fwBar_If extends FooX_f[A] with Bar_If { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__feFooX_fwBarY__ extends FooX_f[A] with BarY__[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__feFooX_fwBarY_f extends FooX_f[A] with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFooX_fwBarYI_ extends FooX_f[A] with BarYI_[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFooX_fwBarYIf extends FooX_f[A] with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFooXI_ extends FooXI_[A] { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFooXI_wBar___ extends FooXI_[A] with Bar___ { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFooXI_wBar__f extends FooXI_[A] with Bar__f { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__feFooXI_wBar_I_ extends FooXI_[A] with Bar_I_ { ; def f: I = {mix; null}; f; }
+// *//* */ class Mix__feFooXI_wBar_If extends FooXI_[A] with Bar_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFooXI_wBarY__ extends FooXI_[A] with BarY__[B] { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFooXI_wBarY_f extends FooXI_[A] with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__feFooXI_wBarYI_ extends FooXI_[A] with BarYI_[B] { ; def f: I = {mix; null}; f; }
+// *//* */ class Mix__feFooXI_wBarYIf extends FooXI_[A] with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFooXIf extends FooXIf[A] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFooXIfwBar___ extends FooXIf[A] with Bar___ { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFooXIfwBar__f extends FooXIf[A] with Bar__f { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__feFooXIfwBar_I_ extends FooXIf[A] with Bar_I_ { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__feFooXIfwBar_If extends FooXIf[A] with Bar_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFooXIfwBarY__ extends FooXIf[A] with BarY__[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__feFooXIfwBarY_f extends FooXIf[A] with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__feFooXIfwBarYI_ extends FooXIf[A] with BarYI_[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__feFooXIfwBarYIf extends FooXIf[A] with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+
+/* */abstract class Mix_I_eFoo___ extends Foo___ { class I; ; f; }
+/* */abstract class Mix_I_eFoo___wBar___ extends Foo___ with Bar___ { class I; ; f; }
+/* *//* */ class Mix_I_eFoo___wBar__f extends Foo___ with Bar__f { class I; ; f; }
+// */abstract class Mix_I_eFoo___wBar_I_ extends Foo___ with Bar_I_ { class I; ; f; }
+// *//* */ class Mix_I_eFoo___wBar_If extends Foo___ with Bar_If { class I; ; f; }
+/* */abstract class Mix_I_eFoo___wBarY__ extends Foo___ with BarY__[B] { class I; ; f; }
+/* *//* */ class Mix_I_eFoo___wBarY_f extends Foo___ with BarY_f[B] { class I; ; f; }
+// */abstract class Mix_I_eFoo___wBarYI_ extends Foo___ with BarYI_[B] { class I; ; f; }
+// *//* */ class Mix_I_eFoo___wBarYIf extends Foo___ with BarYIf[B] { class I; ; f; }
+/* *//* */ class Mix_I_eFoo__f extends Foo__f { class I; ; f; }
+/* *//* */ class Mix_I_eFoo__fwBar___ extends Foo__f with Bar___ { class I; ; f; }
+// *//* */ class Mix_I_eFoo__fwBar__f extends Foo__f with Bar__f { class I; ; f; }
+// *//* */ class Mix_I_eFoo__fwBar_I_ extends Foo__f with Bar_I_ { class I; ; f; }
+// *//* */ class Mix_I_eFoo__fwBar_If extends Foo__f with Bar_If { class I; ; f; }
+/* *//* */ class Mix_I_eFoo__fwBarY__ extends Foo__f with BarY__[B] { class I; ; f; }
+// *//* */ class Mix_I_eFoo__fwBarY_f extends Foo__f with BarY_f[B] { class I; ; f; }
+// *//* */ class Mix_I_eFoo__fwBarYI_ extends Foo__f with BarYI_[B] { class I; ; f; }
+// *//* */ class Mix_I_eFoo__fwBarYIf extends Foo__f with BarYIf[B] { class I; ; f; }
+// */abstract class Mix_I_eFoo_I_ extends Foo_I_ { class I; ; f; }
+// */abstract class Mix_I_eFoo_I_wBar___ extends Foo_I_ with Bar___ { class I; ; f; }
+// *//* */ class Mix_I_eFoo_I_wBar__f extends Foo_I_ with Bar__f { class I; ; f; }
+// */abstract class Mix_I_eFoo_I_wBar_I_ extends Foo_I_ with Bar_I_ { class I; ; f; }
+// *//* */ class Mix_I_eFoo_I_wBar_If extends Foo_I_ with Bar_If { class I; ; f; }
+// */abstract class Mix_I_eFoo_I_wBarY__ extends Foo_I_ with BarY__[B] { class I; ; f; }
+// *//* */ class Mix_I_eFoo_I_wBarY_f extends Foo_I_ with BarY_f[B] { class I; ; f; }
+// */abstract class Mix_I_eFoo_I_wBarYI_ extends Foo_I_ with BarYI_[B] { class I; ; f; }
+// *//* */ class Mix_I_eFoo_I_wBarYIf extends Foo_I_ with BarYIf[B] { class I; ; f; }
+// *//* */ class Mix_I_eFoo_If extends Foo_If { class I; ; f; }
+// *//* */ class Mix_I_eFoo_IfwBar___ extends Foo_If with Bar___ { class I; ; f; }
+// *//* */ class Mix_I_eFoo_IfwBar__f extends Foo_If with Bar__f { class I; ; f; }
+// *//* */ class Mix_I_eFoo_IfwBar_I_ extends Foo_If with Bar_I_ { class I; ; f; }
+// *//* */ class Mix_I_eFoo_IfwBar_If extends Foo_If with Bar_If { class I; ; f; }
+// *//* */ class Mix_I_eFoo_IfwBarY__ extends Foo_If with BarY__[B] { class I; ; f; }
+// *//* */ class Mix_I_eFoo_IfwBarY_f extends Foo_If with BarY_f[B] { class I; ; f; }
+// *//* */ class Mix_I_eFoo_IfwBarYI_ extends Foo_If with BarYI_[B] { class I; ; f; }
+// *//* */ class Mix_I_eFoo_IfwBarYIf extends Foo_If with BarYIf[B] { class I; ; f; }
+/* */abstract class Mix_I_eFooX__ extends FooX__[A] { class I; ; f; }
+/* */abstract class Mix_I_eFooX__wBar___ extends FooX__[A] with Bar___ { class I; ; f; }
+/* *//* */ class Mix_I_eFooX__wBar__f extends FooX__[A] with Bar__f { class I; ; f; }
+// */abstract class Mix_I_eFooX__wBar_I_ extends FooX__[A] with Bar_I_ { class I; ; f; }
+// *//* */ class Mix_I_eFooX__wBar_If extends FooX__[A] with Bar_If { class I; ; f; }
+/* */abstract class Mix_I_eFooX__wBarY__ extends FooX__[A] with BarY__[B] { class I; ; f; }
+/* *//* */ class Mix_I_eFooX__wBarY_f extends FooX__[A] with BarY_f[B] { class I; ; f; }
+// */abstract class Mix_I_eFooX__wBarYI_ extends FooX__[A] with BarYI_[B] { class I; ; f; }
+// *//* */ class Mix_I_eFooX__wBarYIf extends FooX__[A] with BarYIf[B] { class I; ; f; }
+/* *//* */ class Mix_I_eFooX_f extends FooX_f[A] { class I; ; f; }
+/* *//* */ class Mix_I_eFooX_fwBar___ extends FooX_f[A] with Bar___ { class I; ; f; }
+// *//* */ class Mix_I_eFooX_fwBar__f extends FooX_f[A] with Bar__f { class I; ; f; }
+// *//* */ class Mix_I_eFooX_fwBar_I_ extends FooX_f[A] with Bar_I_ { class I; ; f; }
+// *//* */ class Mix_I_eFooX_fwBar_If extends FooX_f[A] with Bar_If { class I; ; f; }
+/* *//* */ class Mix_I_eFooX_fwBarY__ extends FooX_f[A] with BarY__[B] { class I; ; f; }
+// *//* */ class Mix_I_eFooX_fwBarY_f extends FooX_f[A] with BarY_f[B] { class I; ; f; }
+// *//* */ class Mix_I_eFooX_fwBarYI_ extends FooX_f[A] with BarYI_[B] { class I; ; f; }
+// *//* */ class Mix_I_eFooX_fwBarYIf extends FooX_f[A] with BarYIf[B] { class I; ; f; }
+// */abstract class Mix_I_eFooXI_ extends FooXI_[A] { class I; ; f; }
+// */abstract class Mix_I_eFooXI_wBar___ extends FooXI_[A] with Bar___ { class I; ; f; }
+// *//* */ class Mix_I_eFooXI_wBar__f extends FooXI_[A] with Bar__f { class I; ; f; }
+// */abstract class Mix_I_eFooXI_wBar_I_ extends FooXI_[A] with Bar_I_ { class I; ; f; }
+// *//* */ class Mix_I_eFooXI_wBar_If extends FooXI_[A] with Bar_If { class I; ; f; }
+// */abstract class Mix_I_eFooXI_wBarY__ extends FooXI_[A] with BarY__[B] { class I; ; f; }
+// *//* */ class Mix_I_eFooXI_wBarY_f extends FooXI_[A] with BarY_f[B] { class I; ; f; }
+// */abstract class Mix_I_eFooXI_wBarYI_ extends FooXI_[A] with BarYI_[B] { class I; ; f; }
+// *//* */ class Mix_I_eFooXI_wBarYIf extends FooXI_[A] with BarYIf[B] { class I; ; f; }
+// *//* */ class Mix_I_eFooXIf extends FooXIf[A] { class I; ; f; }
+// *//* */ class Mix_I_eFooXIfwBar___ extends FooXIf[A] with Bar___ { class I; ; f; }
+// *//* */ class Mix_I_eFooXIfwBar__f extends FooXIf[A] with Bar__f { class I; ; f; }
+// *//* */ class Mix_I_eFooXIfwBar_I_ extends FooXIf[A] with Bar_I_ { class I; ; f; }
+// *//* */ class Mix_I_eFooXIfwBar_If extends FooXIf[A] with Bar_If { class I; ; f; }
+// *//* */ class Mix_I_eFooXIfwBarY__ extends FooXIf[A] with BarY__[B] { class I; ; f; }
+// *//* */ class Mix_I_eFooXIfwBarY_f extends FooXIf[A] with BarY_f[B] { class I; ; f; }
+// *//* */ class Mix_I_eFooXIfwBarYI_ extends FooXIf[A] with BarYI_[B] { class I; ; f; }
+// *//* */ class Mix_I_eFooXIfwBarYIf extends FooXIf[A] with BarYIf[B] { class I; ; f; }
+
+/* *//* */ class Mix_IfeFoo___ extends Foo___ { class I; def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfeFoo___wBar___ extends Foo___ with Bar___ { class I; def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfeFoo___wBar__f extends Foo___ with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo___wBar_I_ extends Foo___ with Bar_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo___wBar_If extends Foo___ with Bar_If { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfeFoo___wBarY__ extends Foo___ with BarY__[B] { class I; def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfeFoo___wBarY_f extends Foo___ with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo___wBarYI_ extends Foo___ with BarYI_[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo___wBarYIf extends Foo___ with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfeFoo__f extends Foo__f { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfeFoo__fwBar___ extends Foo__f with Bar___ { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfeFoo__fwBar__f extends Foo__f with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo__fwBar_I_ extends Foo__f with Bar_I_ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo__fwBar_If extends Foo__f with Bar_If { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfeFoo__fwBarY__ extends Foo__f with BarY__[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfeFoo__fwBarY_f extends Foo__f with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo__fwBarYI_ extends Foo__f with BarYI_[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo__fwBarYIf extends Foo__f with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo_I_ extends Foo_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo_I_wBar___ extends Foo_I_ with Bar___ { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo_I_wBar__f extends Foo_I_ with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo_I_wBar_I_ extends Foo_I_ with Bar_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo_I_wBar_If extends Foo_I_ with Bar_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo_I_wBarY__ extends Foo_I_ with BarY__[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo_I_wBarY_f extends Foo_I_ with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo_I_wBarYI_ extends Foo_I_ with BarYI_[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo_I_wBarYIf extends Foo_I_ with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo_If extends Foo_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo_IfwBar___ extends Foo_If with Bar___ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo_IfwBar__f extends Foo_If with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo_IfwBar_I_ extends Foo_If with Bar_I_ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo_IfwBar_If extends Foo_If with Bar_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo_IfwBarY__ extends Foo_If with BarY__[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo_IfwBarY_f extends Foo_If with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo_IfwBarYI_ extends Foo_If with BarYI_[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFoo_IfwBarYIf extends Foo_If with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfeFooX__ extends FooX__[A] { class I; def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfeFooX__wBar___ extends FooX__[A] with Bar___ { class I; def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfeFooX__wBar__f extends FooX__[A] with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooX__wBar_I_ extends FooX__[A] with Bar_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooX__wBar_If extends FooX__[A] with Bar_If { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfeFooX__wBarY__ extends FooX__[A] with BarY__[B] { class I; def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfeFooX__wBarY_f extends FooX__[A] with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooX__wBarYI_ extends FooX__[A] with BarYI_[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooX__wBarYIf extends FooX__[A] with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfeFooX_f extends FooX_f[A] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfeFooX_fwBar___ extends FooX_f[A] with Bar___ { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfeFooX_fwBar__f extends FooX_f[A] with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooX_fwBar_I_ extends FooX_f[A] with Bar_I_ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooX_fwBar_If extends FooX_f[A] with Bar_If { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfeFooX_fwBarY__ extends FooX_f[A] with BarY__[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfeFooX_fwBarY_f extends FooX_f[A] with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooX_fwBarYI_ extends FooX_f[A] with BarYI_[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooX_fwBarYIf extends FooX_f[A] with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooXI_ extends FooXI_[A] { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooXI_wBar___ extends FooXI_[A] with Bar___ { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooXI_wBar__f extends FooXI_[A] with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooXI_wBar_I_ extends FooXI_[A] with Bar_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooXI_wBar_If extends FooXI_[A] with Bar_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooXI_wBarY__ extends FooXI_[A] with BarY__[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooXI_wBarY_f extends FooXI_[A] with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooXI_wBarYI_ extends FooXI_[A] with BarYI_[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooXI_wBarYIf extends FooXI_[A] with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooXIf extends FooXIf[A] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooXIfwBar___ extends FooXIf[A] with Bar___ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooXIfwBar__f extends FooXIf[A] with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooXIfwBar_I_ extends FooXIf[A] with Bar_I_ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooXIfwBar_If extends FooXIf[A] with Bar_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooXIfwBarY__ extends FooXIf[A] with BarY__[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooXIfwBarY_f extends FooXIf[A] with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooXIfwBarYI_ extends FooXIf[A] with BarYI_[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfeFooXIfwBarYIf extends FooXIf[A] with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+
+/* */abstract class MixZ__eFoo___ [Z] extends Foo___ { ; ; f; }
+/* */abstract class MixZ__eFoo___wBar___[Z] extends Foo___ with Bar___ { ; ; f; }
+/* */abstract class MixZ__eFoo___wBar__f[Z] extends Foo___ with Bar__f { ; ; f; }
+/* */abstract class MixZ__eFoo___wBar_I_[Z] extends Foo___ with Bar_I_ { ; ; f; }
+/* *//* */ class MixZ__eFoo___wBar_If[Z] extends Foo___ with Bar_If { ; ; f; }
+/* */abstract class MixZ__eFoo___wBarY__[Z] extends Foo___ with BarY__[B] { ; ; f; }
+/* */abstract class MixZ__eFoo___wBarY_f[Z] extends Foo___ with BarY_f[B] { ; ; f; }
+/* */abstract class MixZ__eFoo___wBarYI_[Z] extends Foo___ with BarYI_[B] { ; ; f; }
+/* *//* */ class MixZ__eFoo___wBarYIf[Z] extends Foo___ with BarYIf[B] { ; ; f; }
+/* */abstract class MixZ__eFoo__f [Z] extends Foo__f { ; ; f; }
+/* */abstract class MixZ__eFoo__fwBar___[Z] extends Foo__f with Bar___ { ; ; f; }
+// */abstract class MixZ__eFoo__fwBar__f[Z] extends Foo__f with Bar__f { ; ; f; }
+/* *//* */ class MixZ__eFoo__fwBar_I_[Z] extends Foo__f with Bar_I_ { ; ; f; }
+// *//* */ class MixZ__eFoo__fwBar_If[Z] extends Foo__f with Bar_If { ; ; f; }
+/* */abstract class MixZ__eFoo__fwBarY__[Z] extends Foo__f with BarY__[B] { ; ; f; }
+// */abstract class MixZ__eFoo__fwBarY_f[Z] extends Foo__f with BarY_f[B] { ; ; f; }
+/* *//* */ class MixZ__eFoo__fwBarYI_[Z] extends Foo__f with BarYI_[B] { ; ; f; }
+// *//* */ class MixZ__eFoo__fwBarYIf[Z] extends Foo__f with BarYIf[B] { ; ; f; }
+/* */abstract class MixZ__eFoo_I_ [Z] extends Foo_I_ { ; ; f; }
+/* */abstract class MixZ__eFoo_I_wBar___[Z] extends Foo_I_ with Bar___ { ; ; f; }
+/* *//* */ class MixZ__eFoo_I_wBar__f[Z] extends Foo_I_ with Bar__f { ; ; f; }
+// */abstract class MixZ__eFoo_I_wBar_I_[Z] extends Foo_I_ with Bar_I_ { ; ; f; }
+// *//* */ class MixZ__eFoo_I_wBar_If[Z] extends Foo_I_ with Bar_If { ; ; f; }
+/* */abstract class MixZ__eFoo_I_wBarY__[Z] extends Foo_I_ with BarY__[B] { ; ; f; }
+/* *//* */ class MixZ__eFoo_I_wBarY_f[Z] extends Foo_I_ with BarY_f[B] { ; ; f; }
+// */abstract class MixZ__eFoo_I_wBarYI_[Z] extends Foo_I_ with BarYI_[B] { ; ; f; }
+// *//* */ class MixZ__eFoo_I_wBarYIf[Z] extends Foo_I_ with BarYIf[B] { ; ; f; }
+/* *//* */ class MixZ__eFoo_If [Z] extends Foo_If { ; ; f; }
+/* *//* */ class MixZ__eFoo_IfwBar___[Z] extends Foo_If with Bar___ { ; ; f; }
+// *//* */ class MixZ__eFoo_IfwBar__f[Z] extends Foo_If with Bar__f { ; ; f; }
+// *//* */ class MixZ__eFoo_IfwBar_I_[Z] extends Foo_If with Bar_I_ { ; ; f; }
+// *//* */ class MixZ__eFoo_IfwBar_If[Z] extends Foo_If with Bar_If { ; ; f; }
+/* *//* */ class MixZ__eFoo_IfwBarY__[Z] extends Foo_If with BarY__[B] { ; ; f; }
+// *//* */ class MixZ__eFoo_IfwBarY_f[Z] extends Foo_If with BarY_f[B] { ; ; f; }
+// *//* */ class MixZ__eFoo_IfwBarYI_[Z] extends Foo_If with BarYI_[B] { ; ; f; }
+// *//* */ class MixZ__eFoo_IfwBarYIf[Z] extends Foo_If with BarYIf[B] { ; ; f; }
+/* */abstract class MixZ__eFooX__ [Z] extends FooX__[A] { ; ; f; }
+/* */abstract class MixZ__eFooX__wBar___[Z] extends FooX__[A] with Bar___ { ; ; f; }
+/* */abstract class MixZ__eFooX__wBar__f[Z] extends FooX__[A] with Bar__f { ; ; f; }
+/* */abstract class MixZ__eFooX__wBar_I_[Z] extends FooX__[A] with Bar_I_ { ; ; f; }
+/* *//* */ class MixZ__eFooX__wBar_If[Z] extends FooX__[A] with Bar_If { ; ; f; }
+/* */abstract class MixZ__eFooX__wBarY__[Z] extends FooX__[A] with BarY__[B] { ; ; f; }
+/* */abstract class MixZ__eFooX__wBarY_f[Z] extends FooX__[A] with BarY_f[B] { ; ; f; }
+/* */abstract class MixZ__eFooX__wBarYI_[Z] extends FooX__[A] with BarYI_[B] { ; ; f; }
+/* *//* */ class MixZ__eFooX__wBarYIf[Z] extends FooX__[A] with BarYIf[B] { ; ; f; }
+/* */abstract class MixZ__eFooX_f [Z] extends FooX_f[A] { ; ; f; }
+/* */abstract class MixZ__eFooX_fwBar___[Z] extends FooX_f[A] with Bar___ { ; ; f; }
+// */abstract class MixZ__eFooX_fwBar__f[Z] extends FooX_f[A] with Bar__f { ; ; f; }
+/* *//* */ class MixZ__eFooX_fwBar_I_[Z] extends FooX_f[A] with Bar_I_ { ; ; f; }
+// *//* */ class MixZ__eFooX_fwBar_If[Z] extends FooX_f[A] with Bar_If { ; ; f; }
+/* */abstract class MixZ__eFooX_fwBarY__[Z] extends FooX_f[A] with BarY__[B] { ; ; f; }
+// */abstract class MixZ__eFooX_fwBarY_f[Z] extends FooX_f[A] with BarY_f[B] { ; ; f; }
+/* *//* */ class MixZ__eFooX_fwBarYI_[Z] extends FooX_f[A] with BarYI_[B] { ; ; f; }
+// *//* */ class MixZ__eFooX_fwBarYIf[Z] extends FooX_f[A] with BarYIf[B] { ; ; f; }
+/* */abstract class MixZ__eFooXI_ [Z] extends FooXI_[A] { ; ; f; }
+/* */abstract class MixZ__eFooXI_wBar___[Z] extends FooXI_[A] with Bar___ { ; ; f; }
+/* *//* */ class MixZ__eFooXI_wBar__f[Z] extends FooXI_[A] with Bar__f { ; ; f; }
+// */abstract class MixZ__eFooXI_wBar_I_[Z] extends FooXI_[A] with Bar_I_ { ; ; f; }
+// *//* */ class MixZ__eFooXI_wBar_If[Z] extends FooXI_[A] with Bar_If { ; ; f; }
+/* */abstract class MixZ__eFooXI_wBarY__[Z] extends FooXI_[A] with BarY__[B] { ; ; f; }
+/* *//* */ class MixZ__eFooXI_wBarY_f[Z] extends FooXI_[A] with BarY_f[B] { ; ; f; }
+// */abstract class MixZ__eFooXI_wBarYI_[Z] extends FooXI_[A] with BarYI_[B] { ; ; f; }
+// *//* */ class MixZ__eFooXI_wBarYIf[Z] extends FooXI_[A] with BarYIf[B] { ; ; f; }
+/* *//* */ class MixZ__eFooXIf [Z] extends FooXIf[A] { ; ; f; }
+/* *//* */ class MixZ__eFooXIfwBar___[Z] extends FooXIf[A] with Bar___ { ; ; f; }
+// *//* */ class MixZ__eFooXIfwBar__f[Z] extends FooXIf[A] with Bar__f { ; ; f; }
+// *//* */ class MixZ__eFooXIfwBar_I_[Z] extends FooXIf[A] with Bar_I_ { ; ; f; }
+// *//* */ class MixZ__eFooXIfwBar_If[Z] extends FooXIf[A] with Bar_If { ; ; f; }
+/* *//* */ class MixZ__eFooXIfwBarY__[Z] extends FooXIf[A] with BarY__[B] { ; ; f; }
+// *//* */ class MixZ__eFooXIfwBarY_f[Z] extends FooXIf[A] with BarY_f[B] { ; ; f; }
+// *//* */ class MixZ__eFooXIfwBarYI_[Z] extends FooXIf[A] with BarYI_[B] { ; ; f; }
+// *//* */ class MixZ__eFooXIfwBarYIf[Z] extends FooXIf[A] with BarYIf[B] { ; ; f; }
+
+/* */abstract class MixZ_feFoo___ [Z] extends Foo___ { ; def f: I = {mix; null}; f; }
+/* */abstract class MixZ_feFoo___wBar___[Z] extends Foo___ with Bar___ { ; def f: I = {mix; null}; f; }
+/* */abstract class MixZ_feFoo___wBar__f[Z] extends Foo___ with Bar__f { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFoo___wBar_I_[Z] extends Foo___ with Bar_I_ { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFoo___wBar_If[Z] extends Foo___ with Bar_If { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_feFoo___wBarY__[Z] extends Foo___ with BarY__[B] { ; def f: I = {mix; null}; f; }
+/* */abstract class MixZ_feFoo___wBarY_f[Z] extends Foo___ with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFoo___wBarYI_[Z] extends Foo___ with BarYI_[B] { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFoo___wBarYIf[Z] extends Foo___ with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_feFoo__f [Z] extends Foo__f { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_feFoo__fwBar___[Z] extends Foo__f with Bar___ { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_feFoo__fwBar__f[Z] extends Foo__f with Bar__f { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFoo__fwBar_I_[Z] extends Foo__f with Bar_I_ { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFoo__fwBar_If[Z] extends Foo__f with Bar_If { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_feFoo__fwBarY__[Z] extends Foo__f with BarY__[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_feFoo__fwBarY_f[Z] extends Foo__f with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFoo__fwBarYI_[Z] extends Foo__f with BarYI_[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFoo__fwBarYIf[Z] extends Foo__f with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFoo_I_ [Z] extends Foo_I_ { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFoo_I_wBar___[Z] extends Foo_I_ with Bar___ { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFoo_I_wBar__f[Z] extends Foo_I_ with Bar__f { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_feFoo_I_wBar_I_[Z] extends Foo_I_ with Bar_I_ { ; def f: I = {mix; null}; f; }
+// *//* */ class MixZ_feFoo_I_wBar_If[Z] extends Foo_I_ with Bar_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFoo_I_wBarY__[Z] extends Foo_I_ with BarY__[B] { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFoo_I_wBarY_f[Z] extends Foo_I_ with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_feFoo_I_wBarYI_[Z] extends Foo_I_ with BarYI_[B] { ; def f: I = {mix; null}; f; }
+// *//* */ class MixZ_feFoo_I_wBarYIf[Z] extends Foo_I_ with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFoo_If [Z] extends Foo_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFoo_IfwBar___[Z] extends Foo_If with Bar___ { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFoo_IfwBar__f[Z] extends Foo_If with Bar__f { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_feFoo_IfwBar_I_[Z] extends Foo_If with Bar_I_ { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_feFoo_IfwBar_If[Z] extends Foo_If with Bar_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFoo_IfwBarY__[Z] extends Foo_If with BarY__[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFoo_IfwBarY_f[Z] extends Foo_If with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_feFoo_IfwBarYI_[Z] extends Foo_If with BarYI_[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_feFoo_IfwBarYIf[Z] extends Foo_If with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_feFooX__ [Z] extends FooX__[A] { ; def f: I = {mix; null}; f; }
+/* */abstract class MixZ_feFooX__wBar___[Z] extends FooX__[A] with Bar___ { ; def f: I = {mix; null}; f; }
+/* */abstract class MixZ_feFooX__wBar__f[Z] extends FooX__[A] with Bar__f { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFooX__wBar_I_[Z] extends FooX__[A] with Bar_I_ { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFooX__wBar_If[Z] extends FooX__[A] with Bar_If { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_feFooX__wBarY__[Z] extends FooX__[A] with BarY__[B] { ; def f: I = {mix; null}; f; }
+/* */abstract class MixZ_feFooX__wBarY_f[Z] extends FooX__[A] with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFooX__wBarYI_[Z] extends FooX__[A] with BarYI_[B] { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFooX__wBarYIf[Z] extends FooX__[A] with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_feFooX_f [Z] extends FooX_f[A] { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_feFooX_fwBar___[Z] extends FooX_f[A] with Bar___ { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_feFooX_fwBar__f[Z] extends FooX_f[A] with Bar__f { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFooX_fwBar_I_[Z] extends FooX_f[A] with Bar_I_ { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFooX_fwBar_If[Z] extends FooX_f[A] with Bar_If { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_feFooX_fwBarY__[Z] extends FooX_f[A] with BarY__[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_feFooX_fwBarY_f[Z] extends FooX_f[A] with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFooX_fwBarYI_[Z] extends FooX_f[A] with BarYI_[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFooX_fwBarYIf[Z] extends FooX_f[A] with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFooXI_ [Z] extends FooXI_[A] { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFooXI_wBar___[Z] extends FooXI_[A] with Bar___ { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFooXI_wBar__f[Z] extends FooXI_[A] with Bar__f { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_feFooXI_wBar_I_[Z] extends FooXI_[A] with Bar_I_ { ; def f: I = {mix; null}; f; }
+// *//* */ class MixZ_feFooXI_wBar_If[Z] extends FooXI_[A] with Bar_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFooXI_wBarY__[Z] extends FooXI_[A] with BarY__[B] { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFooXI_wBarY_f[Z] extends FooXI_[A] with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_feFooXI_wBarYI_[Z] extends FooXI_[A] with BarYI_[B] { ; def f: I = {mix; null}; f; }
+// *//* */ class MixZ_feFooXI_wBarYIf[Z] extends FooXI_[A] with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFooXIf [Z] extends FooXIf[A] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFooXIfwBar___[Z] extends FooXIf[A] with Bar___ { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFooXIfwBar__f[Z] extends FooXIf[A] with Bar__f { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_feFooXIfwBar_I_[Z] extends FooXIf[A] with Bar_I_ { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_feFooXIfwBar_If[Z] extends FooXIf[A] with Bar_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFooXIfwBarY__[Z] extends FooXIf[A] with BarY__[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_feFooXIfwBarY_f[Z] extends FooXIf[A] with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_feFooXIfwBarYI_[Z] extends FooXIf[A] with BarYI_[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_feFooXIfwBarYIf[Z] extends FooXIf[A] with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+
+/* */abstract class MixZI_eFoo___ [Z] extends Foo___ { class I; ; f; }
+/* */abstract class MixZI_eFoo___wBar___[Z] extends Foo___ with Bar___ { class I; ; f; }
+/* *//* */ class MixZI_eFoo___wBar__f[Z] extends Foo___ with Bar__f { class I; ; f; }
+// */abstract class MixZI_eFoo___wBar_I_[Z] extends Foo___ with Bar_I_ { class I; ; f; }
+// *//* */ class MixZI_eFoo___wBar_If[Z] extends Foo___ with Bar_If { class I; ; f; }
+/* */abstract class MixZI_eFoo___wBarY__[Z] extends Foo___ with BarY__[B] { class I; ; f; }
+/* *//* */ class MixZI_eFoo___wBarY_f[Z] extends Foo___ with BarY_f[B] { class I; ; f; }
+// */abstract class MixZI_eFoo___wBarYI_[Z] extends Foo___ with BarYI_[B] { class I; ; f; }
+// *//* */ class MixZI_eFoo___wBarYIf[Z] extends Foo___ with BarYIf[B] { class I; ; f; }
+/* *//* */ class MixZI_eFoo__f [Z] extends Foo__f { class I; ; f; }
+/* *//* */ class MixZI_eFoo__fwBar___[Z] extends Foo__f with Bar___ { class I; ; f; }
+// *//* */ class MixZI_eFoo__fwBar__f[Z] extends Foo__f with Bar__f { class I; ; f; }
+// *//* */ class MixZI_eFoo__fwBar_I_[Z] extends Foo__f with Bar_I_ { class I; ; f; }
+// *//* */ class MixZI_eFoo__fwBar_If[Z] extends Foo__f with Bar_If { class I; ; f; }
+/* *//* */ class MixZI_eFoo__fwBarY__[Z] extends Foo__f with BarY__[B] { class I; ; f; }
+// *//* */ class MixZI_eFoo__fwBarY_f[Z] extends Foo__f with BarY_f[B] { class I; ; f; }
+// *//* */ class MixZI_eFoo__fwBarYI_[Z] extends Foo__f with BarYI_[B] { class I; ; f; }
+// *//* */ class MixZI_eFoo__fwBarYIf[Z] extends Foo__f with BarYIf[B] { class I; ; f; }
+// */abstract class MixZI_eFoo_I_ [Z] extends Foo_I_ { class I; ; f; }
+// */abstract class MixZI_eFoo_I_wBar___[Z] extends Foo_I_ with Bar___ { class I; ; f; }
+// *//* */ class MixZI_eFoo_I_wBar__f[Z] extends Foo_I_ with Bar__f { class I; ; f; }
+// */abstract class MixZI_eFoo_I_wBar_I_[Z] extends Foo_I_ with Bar_I_ { class I; ; f; }
+// *//* */ class MixZI_eFoo_I_wBar_If[Z] extends Foo_I_ with Bar_If { class I; ; f; }
+// */abstract class MixZI_eFoo_I_wBarY__[Z] extends Foo_I_ with BarY__[B] { class I; ; f; }
+// *//* */ class MixZI_eFoo_I_wBarY_f[Z] extends Foo_I_ with BarY_f[B] { class I; ; f; }
+// */abstract class MixZI_eFoo_I_wBarYI_[Z] extends Foo_I_ with BarYI_[B] { class I; ; f; }
+// *//* */ class MixZI_eFoo_I_wBarYIf[Z] extends Foo_I_ with BarYIf[B] { class I; ; f; }
+// *//* */ class MixZI_eFoo_If [Z] extends Foo_If { class I; ; f; }
+// *//* */ class MixZI_eFoo_IfwBar___[Z] extends Foo_If with Bar___ { class I; ; f; }
+// *//* */ class MixZI_eFoo_IfwBar__f[Z] extends Foo_If with Bar__f { class I; ; f; }
+// *//* */ class MixZI_eFoo_IfwBar_I_[Z] extends Foo_If with Bar_I_ { class I; ; f; }
+// *//* */ class MixZI_eFoo_IfwBar_If[Z] extends Foo_If with Bar_If { class I; ; f; }
+// *//* */ class MixZI_eFoo_IfwBarY__[Z] extends Foo_If with BarY__[B] { class I; ; f; }
+// *//* */ class MixZI_eFoo_IfwBarY_f[Z] extends Foo_If with BarY_f[B] { class I; ; f; }
+// *//* */ class MixZI_eFoo_IfwBarYI_[Z] extends Foo_If with BarYI_[B] { class I; ; f; }
+// *//* */ class MixZI_eFoo_IfwBarYIf[Z] extends Foo_If with BarYIf[B] { class I; ; f; }
+/* */abstract class MixZI_eFooX__ [Z] extends FooX__[A] { class I; ; f; }
+/* */abstract class MixZI_eFooX__wBar___[Z] extends FooX__[A] with Bar___ { class I; ; f; }
+/* *//* */ class MixZI_eFooX__wBar__f[Z] extends FooX__[A] with Bar__f { class I; ; f; }
+// */abstract class MixZI_eFooX__wBar_I_[Z] extends FooX__[A] with Bar_I_ { class I; ; f; }
+// *//* */ class MixZI_eFooX__wBar_If[Z] extends FooX__[A] with Bar_If { class I; ; f; }
+/* */abstract class MixZI_eFooX__wBarY__[Z] extends FooX__[A] with BarY__[B] { class I; ; f; }
+/* *//* */ class MixZI_eFooX__wBarY_f[Z] extends FooX__[A] with BarY_f[B] { class I; ; f; }
+// */abstract class MixZI_eFooX__wBarYI_[Z] extends FooX__[A] with BarYI_[B] { class I; ; f; }
+// *//* */ class MixZI_eFooX__wBarYIf[Z] extends FooX__[A] with BarYIf[B] { class I; ; f; }
+/* *//* */ class MixZI_eFooX_f [Z] extends FooX_f[A] { class I; ; f; }
+/* *//* */ class MixZI_eFooX_fwBar___[Z] extends FooX_f[A] with Bar___ { class I; ; f; }
+// *//* */ class MixZI_eFooX_fwBar__f[Z] extends FooX_f[A] with Bar__f { class I; ; f; }
+// *//* */ class MixZI_eFooX_fwBar_I_[Z] extends FooX_f[A] with Bar_I_ { class I; ; f; }
+// *//* */ class MixZI_eFooX_fwBar_If[Z] extends FooX_f[A] with Bar_If { class I; ; f; }
+/* *//* */ class MixZI_eFooX_fwBarY__[Z] extends FooX_f[A] with BarY__[B] { class I; ; f; }
+// *//* */ class MixZI_eFooX_fwBarY_f[Z] extends FooX_f[A] with BarY_f[B] { class I; ; f; }
+// *//* */ class MixZI_eFooX_fwBarYI_[Z] extends FooX_f[A] with BarYI_[B] { class I; ; f; }
+// *//* */ class MixZI_eFooX_fwBarYIf[Z] extends FooX_f[A] with BarYIf[B] { class I; ; f; }
+// */abstract class MixZI_eFooXI_ [Z] extends FooXI_[A] { class I; ; f; }
+// */abstract class MixZI_eFooXI_wBar___[Z] extends FooXI_[A] with Bar___ { class I; ; f; }
+// *//* */ class MixZI_eFooXI_wBar__f[Z] extends FooXI_[A] with Bar__f { class I; ; f; }
+// */abstract class MixZI_eFooXI_wBar_I_[Z] extends FooXI_[A] with Bar_I_ { class I; ; f; }
+// *//* */ class MixZI_eFooXI_wBar_If[Z] extends FooXI_[A] with Bar_If { class I; ; f; }
+// */abstract class MixZI_eFooXI_wBarY__[Z] extends FooXI_[A] with BarY__[B] { class I; ; f; }
+// *//* */ class MixZI_eFooXI_wBarY_f[Z] extends FooXI_[A] with BarY_f[B] { class I; ; f; }
+// */abstract class MixZI_eFooXI_wBarYI_[Z] extends FooXI_[A] with BarYI_[B] { class I; ; f; }
+// *//* */ class MixZI_eFooXI_wBarYIf[Z] extends FooXI_[A] with BarYIf[B] { class I; ; f; }
+// *//* */ class MixZI_eFooXIf [Z] extends FooXIf[A] { class I; ; f; }
+// *//* */ class MixZI_eFooXIfwBar___[Z] extends FooXIf[A] with Bar___ { class I; ; f; }
+// *//* */ class MixZI_eFooXIfwBar__f[Z] extends FooXIf[A] with Bar__f { class I; ; f; }
+// *//* */ class MixZI_eFooXIfwBar_I_[Z] extends FooXIf[A] with Bar_I_ { class I; ; f; }
+// *//* */ class MixZI_eFooXIfwBar_If[Z] extends FooXIf[A] with Bar_If { class I; ; f; }
+// *//* */ class MixZI_eFooXIfwBarY__[Z] extends FooXIf[A] with BarY__[B] { class I; ; f; }
+// *//* */ class MixZI_eFooXIfwBarY_f[Z] extends FooXIf[A] with BarY_f[B] { class I; ; f; }
+// *//* */ class MixZI_eFooXIfwBarYI_[Z] extends FooXIf[A] with BarYI_[B] { class I; ; f; }
+// *//* */ class MixZI_eFooXIfwBarYIf[Z] extends FooXIf[A] with BarYIf[B] { class I; ; f; }
+
+/* *//* */ class MixZIfeFoo___ [Z] extends Foo___ { class I; def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfeFoo___wBar___[Z] extends Foo___ with Bar___ { class I; def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfeFoo___wBar__f[Z] extends Foo___ with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo___wBar_I_[Z] extends Foo___ with Bar_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo___wBar_If[Z] extends Foo___ with Bar_If { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfeFoo___wBarY__[Z] extends Foo___ with BarY__[B] { class I; def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfeFoo___wBarY_f[Z] extends Foo___ with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo___wBarYI_[Z] extends Foo___ with BarYI_[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo___wBarYIf[Z] extends Foo___ with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfeFoo__f [Z] extends Foo__f { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfeFoo__fwBar___[Z] extends Foo__f with Bar___ { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfeFoo__fwBar__f[Z] extends Foo__f with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo__fwBar_I_[Z] extends Foo__f with Bar_I_ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo__fwBar_If[Z] extends Foo__f with Bar_If { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfeFoo__fwBarY__[Z] extends Foo__f with BarY__[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfeFoo__fwBarY_f[Z] extends Foo__f with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo__fwBarYI_[Z] extends Foo__f with BarYI_[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo__fwBarYIf[Z] extends Foo__f with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo_I_ [Z] extends Foo_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo_I_wBar___[Z] extends Foo_I_ with Bar___ { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo_I_wBar__f[Z] extends Foo_I_ with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo_I_wBar_I_[Z] extends Foo_I_ with Bar_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo_I_wBar_If[Z] extends Foo_I_ with Bar_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo_I_wBarY__[Z] extends Foo_I_ with BarY__[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo_I_wBarY_f[Z] extends Foo_I_ with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo_I_wBarYI_[Z] extends Foo_I_ with BarYI_[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo_I_wBarYIf[Z] extends Foo_I_ with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo_If [Z] extends Foo_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo_IfwBar___[Z] extends Foo_If with Bar___ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo_IfwBar__f[Z] extends Foo_If with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo_IfwBar_I_[Z] extends Foo_If with Bar_I_ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo_IfwBar_If[Z] extends Foo_If with Bar_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo_IfwBarY__[Z] extends Foo_If with BarY__[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo_IfwBarY_f[Z] extends Foo_If with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo_IfwBarYI_[Z] extends Foo_If with BarYI_[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFoo_IfwBarYIf[Z] extends Foo_If with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfeFooX__ [Z] extends FooX__[A] { class I; def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfeFooX__wBar___[Z] extends FooX__[A] with Bar___ { class I; def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfeFooX__wBar__f[Z] extends FooX__[A] with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooX__wBar_I_[Z] extends FooX__[A] with Bar_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooX__wBar_If[Z] extends FooX__[A] with Bar_If { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfeFooX__wBarY__[Z] extends FooX__[A] with BarY__[B] { class I; def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfeFooX__wBarY_f[Z] extends FooX__[A] with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooX__wBarYI_[Z] extends FooX__[A] with BarYI_[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooX__wBarYIf[Z] extends FooX__[A] with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfeFooX_f [Z] extends FooX_f[A] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfeFooX_fwBar___[Z] extends FooX_f[A] with Bar___ { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfeFooX_fwBar__f[Z] extends FooX_f[A] with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooX_fwBar_I_[Z] extends FooX_f[A] with Bar_I_ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooX_fwBar_If[Z] extends FooX_f[A] with Bar_If { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfeFooX_fwBarY__[Z] extends FooX_f[A] with BarY__[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfeFooX_fwBarY_f[Z] extends FooX_f[A] with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooX_fwBarYI_[Z] extends FooX_f[A] with BarYI_[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooX_fwBarYIf[Z] extends FooX_f[A] with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooXI_ [Z] extends FooXI_[A] { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooXI_wBar___[Z] extends FooXI_[A] with Bar___ { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooXI_wBar__f[Z] extends FooXI_[A] with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooXI_wBar_I_[Z] extends FooXI_[A] with Bar_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooXI_wBar_If[Z] extends FooXI_[A] with Bar_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooXI_wBarY__[Z] extends FooXI_[A] with BarY__[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooXI_wBarY_f[Z] extends FooXI_[A] with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooXI_wBarYI_[Z] extends FooXI_[A] with BarYI_[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooXI_wBarYIf[Z] extends FooXI_[A] with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooXIf [Z] extends FooXIf[A] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooXIfwBar___[Z] extends FooXIf[A] with Bar___ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooXIfwBar__f[Z] extends FooXIf[A] with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooXIfwBar_I_[Z] extends FooXIf[A] with Bar_I_ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooXIfwBar_If[Z] extends FooXIf[A] with Bar_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooXIfwBarY__[Z] extends FooXIf[A] with BarY__[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooXIfwBarY_f[Z] extends FooXIf[A] with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooXIfwBarYI_[Z] extends FooXIf[A] with BarYI_[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfeFooXIfwBarYIf[Z] extends FooXIf[A] with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+
+
+
+/* */abstract class Mix___wFoo___ extends Foo___ { ; ; f; }
+/* */abstract class Mix___wFoo___wBar___ extends Foo___ with Bar___ { ; ; f; }
+/* */abstract class Mix___wFoo___wBar__f extends Foo___ with Bar__f { ; ; f; }
+/* */abstract class Mix___wFoo___wBar_I_ extends Foo___ with Bar_I_ { ; ; f; }
+/* *//* */ class Mix___wFoo___wBar_If extends Foo___ with Bar_If { ; ; f; }
+/* */abstract class Mix___wFoo___wBarY__ extends Foo___ with BarY__[B] { ; ; f; }
+/* */abstract class Mix___wFoo___wBarY_f extends Foo___ with BarY_f[B] { ; ; f; }
+/* */abstract class Mix___wFoo___wBarYI_ extends Foo___ with BarYI_[B] { ; ; f; }
+/* *//* */ class Mix___wFoo___wBarYIf extends Foo___ with BarYIf[B] { ; ; f; }
+/* */abstract class Mix___wFoo__f extends Foo__f { ; ; f; }
+/* */abstract class Mix___wFoo__fwBar___ extends Foo__f with Bar___ { ; ; f; }
+// */abstract class Mix___wFoo__fwBar__f extends Foo__f with Bar__f { ; ; f; }
+/* *//* */ class Mix___wFoo__fwBar_I_ extends Foo__f with Bar_I_ { ; ; f; }
+// *//* */ class Mix___wFoo__fwBar_If extends Foo__f with Bar_If { ; ; f; }
+/* */abstract class Mix___wFoo__fwBarY__ extends Foo__f with BarY__[B] { ; ; f; }
+// */abstract class Mix___wFoo__fwBarY_f extends Foo__f with BarY_f[B] { ; ; f; }
+/* *//* */ class Mix___wFoo__fwBarYI_ extends Foo__f with BarYI_[B] { ; ; f; }
+// *//* */ class Mix___wFoo__fwBarYIf extends Foo__f with BarYIf[B] { ; ; f; }
+/* */abstract class Mix___wFoo_I_ extends Foo_I_ { ; ; f; }
+/* */abstract class Mix___wFoo_I_wBar___ extends Foo_I_ with Bar___ { ; ; f; }
+/* *//* */ class Mix___wFoo_I_wBar__f extends Foo_I_ with Bar__f { ; ; f; }
+// */abstract class Mix___wFoo_I_wBar_I_ extends Foo_I_ with Bar_I_ { ; ; f; }
+// *//* */ class Mix___wFoo_I_wBar_If extends Foo_I_ with Bar_If { ; ; f; }
+/* */abstract class Mix___wFoo_I_wBarY__ extends Foo_I_ with BarY__[B] { ; ; f; }
+/* *//* */ class Mix___wFoo_I_wBarY_f extends Foo_I_ with BarY_f[B] { ; ; f; }
+// */abstract class Mix___wFoo_I_wBarYI_ extends Foo_I_ with BarYI_[B] { ; ; f; }
+// *//* */ class Mix___wFoo_I_wBarYIf extends Foo_I_ with BarYIf[B] { ; ; f; }
+/* *//* */ class Mix___wFoo_If extends Foo_If { ; ; f; }
+/* *//* */ class Mix___wFoo_IfwBar___ extends Foo_If with Bar___ { ; ; f; }
+// *//* */ class Mix___wFoo_IfwBar__f extends Foo_If with Bar__f { ; ; f; }
+// *//* */ class Mix___wFoo_IfwBar_I_ extends Foo_If with Bar_I_ { ; ; f; }
+// *//* */ class Mix___wFoo_IfwBar_If extends Foo_If with Bar_If { ; ; f; }
+/* *//* */ class Mix___wFoo_IfwBarY__ extends Foo_If with BarY__[B] { ; ; f; }
+// *//* */ class Mix___wFoo_IfwBarY_f extends Foo_If with BarY_f[B] { ; ; f; }
+// *//* */ class Mix___wFoo_IfwBarYI_ extends Foo_If with BarYI_[B] { ; ; f; }
+// *//* */ class Mix___wFoo_IfwBarYIf extends Foo_If with BarYIf[B] { ; ; f; }
+/* */abstract class Mix___wFooX__ extends FooX__[A] { ; ; f; }
+/* */abstract class Mix___wFooX__wBar___ extends FooX__[A] with Bar___ { ; ; f; }
+/* */abstract class Mix___wFooX__wBar__f extends FooX__[A] with Bar__f { ; ; f; }
+/* */abstract class Mix___wFooX__wBar_I_ extends FooX__[A] with Bar_I_ { ; ; f; }
+/* *//* */ class Mix___wFooX__wBar_If extends FooX__[A] with Bar_If { ; ; f; }
+/* */abstract class Mix___wFooX__wBarY__ extends FooX__[A] with BarY__[B] { ; ; f; }
+/* */abstract class Mix___wFooX__wBarY_f extends FooX__[A] with BarY_f[B] { ; ; f; }
+/* */abstract class Mix___wFooX__wBarYI_ extends FooX__[A] with BarYI_[B] { ; ; f; }
+/* *//* */ class Mix___wFooX__wBarYIf extends FooX__[A] with BarYIf[B] { ; ; f; }
+/* */abstract class Mix___wFooX_f extends FooX_f[A] { ; ; f; }
+/* */abstract class Mix___wFooX_fwBar___ extends FooX_f[A] with Bar___ { ; ; f; }
+// */abstract class Mix___wFooX_fwBar__f extends FooX_f[A] with Bar__f { ; ; f; }
+/* *//* */ class Mix___wFooX_fwBar_I_ extends FooX_f[A] with Bar_I_ { ; ; f; }
+// *//* */ class Mix___wFooX_fwBar_If extends FooX_f[A] with Bar_If { ; ; f; }
+/* */abstract class Mix___wFooX_fwBarY__ extends FooX_f[A] with BarY__[B] { ; ; f; }
+// */abstract class Mix___wFooX_fwBarY_f extends FooX_f[A] with BarY_f[B] { ; ; f; }
+/* *//* */ class Mix___wFooX_fwBarYI_ extends FooX_f[A] with BarYI_[B] { ; ; f; }
+// *//* */ class Mix___wFooX_fwBarYIf extends FooX_f[A] with BarYIf[B] { ; ; f; }
+/* */abstract class Mix___wFooXI_ extends FooXI_[A] { ; ; f; }
+/* */abstract class Mix___wFooXI_wBar___ extends FooXI_[A] with Bar___ { ; ; f; }
+/* *//* */ class Mix___wFooXI_wBar__f extends FooXI_[A] with Bar__f { ; ; f; }
+// */abstract class Mix___wFooXI_wBar_I_ extends FooXI_[A] with Bar_I_ { ; ; f; }
+// *//* */ class Mix___wFooXI_wBar_If extends FooXI_[A] with Bar_If { ; ; f; }
+/* */abstract class Mix___wFooXI_wBarY__ extends FooXI_[A] with BarY__[B] { ; ; f; }
+/* *//* */ class Mix___wFooXI_wBarY_f extends FooXI_[A] with BarY_f[B] { ; ; f; }
+// */abstract class Mix___wFooXI_wBarYI_ extends FooXI_[A] with BarYI_[B] { ; ; f; }
+// *//* */ class Mix___wFooXI_wBarYIf extends FooXI_[A] with BarYIf[B] { ; ; f; }
+/* *//* */ class Mix___wFooXIf extends FooXIf[A] { ; ; f; }
+/* *//* */ class Mix___wFooXIfwBar___ extends FooXIf[A] with Bar___ { ; ; f; }
+// *//* */ class Mix___wFooXIfwBar__f extends FooXIf[A] with Bar__f { ; ; f; }
+// *//* */ class Mix___wFooXIfwBar_I_ extends FooXIf[A] with Bar_I_ { ; ; f; }
+// *//* */ class Mix___wFooXIfwBar_If extends FooXIf[A] with Bar_If { ; ; f; }
+/* *//* */ class Mix___wFooXIfwBarY__ extends FooXIf[A] with BarY__[B] { ; ; f; }
+// *//* */ class Mix___wFooXIfwBarY_f extends FooXIf[A] with BarY_f[B] { ; ; f; }
+// *//* */ class Mix___wFooXIfwBarYI_ extends FooXIf[A] with BarYI_[B] { ; ; f; }
+// *//* */ class Mix___wFooXIfwBarYIf extends FooXIf[A] with BarYIf[B] { ; ; f; }
+
+/* */abstract class Mix__fwFoo___ extends Foo___ { ; def f: I = {mix; null}; f; }
+/* */abstract class Mix__fwFoo___wBar___ extends Foo___ with Bar___ { ; def f: I = {mix; null}; f; }
+/* */abstract class Mix__fwFoo___wBar__f extends Foo___ with Bar__f { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFoo___wBar_I_ extends Foo___ with Bar_I_ { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFoo___wBar_If extends Foo___ with Bar_If { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__fwFoo___wBarY__ extends Foo___ with BarY__[B] { ; def f: I = {mix; null}; f; }
+/* */abstract class Mix__fwFoo___wBarY_f extends Foo___ with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFoo___wBarYI_ extends Foo___ with BarYI_[B] { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFoo___wBarYIf extends Foo___ with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__fwFoo__f extends Foo__f { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__fwFoo__fwBar___ extends Foo__f with Bar___ { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__fwFoo__fwBar__f extends Foo__f with Bar__f { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFoo__fwBar_I_ extends Foo__f with Bar_I_ { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFoo__fwBar_If extends Foo__f with Bar_If { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__fwFoo__fwBarY__ extends Foo__f with BarY__[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__fwFoo__fwBarY_f extends Foo__f with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFoo__fwBarYI_ extends Foo__f with BarYI_[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFoo__fwBarYIf extends Foo__f with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFoo_I_ extends Foo_I_ { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFoo_I_wBar___ extends Foo_I_ with Bar___ { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFoo_I_wBar__f extends Foo_I_ with Bar__f { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__fwFoo_I_wBar_I_ extends Foo_I_ with Bar_I_ { ; def f: I = {mix; null}; f; }
+// *//* */ class Mix__fwFoo_I_wBar_If extends Foo_I_ with Bar_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFoo_I_wBarY__ extends Foo_I_ with BarY__[B] { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFoo_I_wBarY_f extends Foo_I_ with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__fwFoo_I_wBarYI_ extends Foo_I_ with BarYI_[B] { ; def f: I = {mix; null}; f; }
+// *//* */ class Mix__fwFoo_I_wBarYIf extends Foo_I_ with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFoo_If extends Foo_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFoo_IfwBar___ extends Foo_If with Bar___ { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFoo_IfwBar__f extends Foo_If with Bar__f { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__fwFoo_IfwBar_I_ extends Foo_If with Bar_I_ { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__fwFoo_IfwBar_If extends Foo_If with Bar_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFoo_IfwBarY__ extends Foo_If with BarY__[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFoo_IfwBarY_f extends Foo_If with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__fwFoo_IfwBarYI_ extends Foo_If with BarYI_[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__fwFoo_IfwBarYIf extends Foo_If with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__fwFooX__ extends FooX__[A] { ; def f: I = {mix; null}; f; }
+/* */abstract class Mix__fwFooX__wBar___ extends FooX__[A] with Bar___ { ; def f: I = {mix; null}; f; }
+/* */abstract class Mix__fwFooX__wBar__f extends FooX__[A] with Bar__f { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFooX__wBar_I_ extends FooX__[A] with Bar_I_ { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFooX__wBar_If extends FooX__[A] with Bar_If { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__fwFooX__wBarY__ extends FooX__[A] with BarY__[B] { ; def f: I = {mix; null}; f; }
+/* */abstract class Mix__fwFooX__wBarY_f extends FooX__[A] with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFooX__wBarYI_ extends FooX__[A] with BarYI_[B] { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFooX__wBarYIf extends FooX__[A] with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__fwFooX_f extends FooX_f[A] { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__fwFooX_fwBar___ extends FooX_f[A] with Bar___ { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__fwFooX_fwBar__f extends FooX_f[A] with Bar__f { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFooX_fwBar_I_ extends FooX_f[A] with Bar_I_ { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFooX_fwBar_If extends FooX_f[A] with Bar_If { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__fwFooX_fwBarY__ extends FooX_f[A] with BarY__[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class Mix__fwFooX_fwBarY_f extends FooX_f[A] with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFooX_fwBarYI_ extends FooX_f[A] with BarYI_[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFooX_fwBarYIf extends FooX_f[A] with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFooXI_ extends FooXI_[A] { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFooXI_wBar___ extends FooXI_[A] with Bar___ { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFooXI_wBar__f extends FooXI_[A] with Bar__f { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__fwFooXI_wBar_I_ extends FooXI_[A] with Bar_I_ { ; def f: I = {mix; null}; f; }
+// *//* */ class Mix__fwFooXI_wBar_If extends FooXI_[A] with Bar_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFooXI_wBarY__ extends FooXI_[A] with BarY__[B] { ; def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFooXI_wBarY_f extends FooXI_[A] with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__fwFooXI_wBarYI_ extends FooXI_[A] with BarYI_[B] { ; def f: I = {mix; null}; f; }
+// *//* */ class Mix__fwFooXI_wBarYIf extends FooXI_[A] with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFooXIf extends FooXIf[A] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFooXIfwBar___ extends FooXIf[A] with Bar___ { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFooXIfwBar__f extends FooXIf[A] with Bar__f { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__fwFooXIfwBar_I_ extends FooXIf[A] with Bar_I_ { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__fwFooXIfwBar_If extends FooXIf[A] with Bar_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFooXIfwBarY__ extends FooXIf[A] with BarY__[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix__fwFooXIfwBarY_f extends FooXIf[A] with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__fwFooXIfwBarYI_ extends FooXIf[A] with BarYI_[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class Mix__fwFooXIfwBarYIf extends FooXIf[A] with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+
+/* */abstract class Mix_I_wFoo___ extends Foo___ { class I; ; f; }
+/* */abstract class Mix_I_wFoo___wBar___ extends Foo___ with Bar___ { class I; ; f; }
+/* *//* */ class Mix_I_wFoo___wBar__f extends Foo___ with Bar__f { class I; ; f; }
+// */abstract class Mix_I_wFoo___wBar_I_ extends Foo___ with Bar_I_ { class I; ; f; }
+// *//* */ class Mix_I_wFoo___wBar_If extends Foo___ with Bar_If { class I; ; f; }
+/* */abstract class Mix_I_wFoo___wBarY__ extends Foo___ with BarY__[B] { class I; ; f; }
+/* *//* */ class Mix_I_wFoo___wBarY_f extends Foo___ with BarY_f[B] { class I; ; f; }
+// */abstract class Mix_I_wFoo___wBarYI_ extends Foo___ with BarYI_[B] { class I; ; f; }
+// *//* */ class Mix_I_wFoo___wBarYIf extends Foo___ with BarYIf[B] { class I; ; f; }
+/* *//* */ class Mix_I_wFoo__f extends Foo__f { class I; ; f; }
+/* *//* */ class Mix_I_wFoo__fwBar___ extends Foo__f with Bar___ { class I; ; f; }
+// *//* */ class Mix_I_wFoo__fwBar__f extends Foo__f with Bar__f { class I; ; f; }
+// *//* */ class Mix_I_wFoo__fwBar_I_ extends Foo__f with Bar_I_ { class I; ; f; }
+// *//* */ class Mix_I_wFoo__fwBar_If extends Foo__f with Bar_If { class I; ; f; }
+/* *//* */ class Mix_I_wFoo__fwBarY__ extends Foo__f with BarY__[B] { class I; ; f; }
+// *//* */ class Mix_I_wFoo__fwBarY_f extends Foo__f with BarY_f[B] { class I; ; f; }
+// *//* */ class Mix_I_wFoo__fwBarYI_ extends Foo__f with BarYI_[B] { class I; ; f; }
+// *//* */ class Mix_I_wFoo__fwBarYIf extends Foo__f with BarYIf[B] { class I; ; f; }
+// */abstract class Mix_I_wFoo_I_ extends Foo_I_ { class I; ; f; }
+// */abstract class Mix_I_wFoo_I_wBar___ extends Foo_I_ with Bar___ { class I; ; f; }
+// *//* */ class Mix_I_wFoo_I_wBar__f extends Foo_I_ with Bar__f { class I; ; f; }
+// */abstract class Mix_I_wFoo_I_wBar_I_ extends Foo_I_ with Bar_I_ { class I; ; f; }
+// *//* */ class Mix_I_wFoo_I_wBar_If extends Foo_I_ with Bar_If { class I; ; f; }
+// */abstract class Mix_I_wFoo_I_wBarY__ extends Foo_I_ with BarY__[B] { class I; ; f; }
+// *//* */ class Mix_I_wFoo_I_wBarY_f extends Foo_I_ with BarY_f[B] { class I; ; f; }
+// */abstract class Mix_I_wFoo_I_wBarYI_ extends Foo_I_ with BarYI_[B] { class I; ; f; }
+// *//* */ class Mix_I_wFoo_I_wBarYIf extends Foo_I_ with BarYIf[B] { class I; ; f; }
+// *//* */ class Mix_I_wFoo_If extends Foo_If { class I; ; f; }
+// *//* */ class Mix_I_wFoo_IfwBar___ extends Foo_If with Bar___ { class I; ; f; }
+// *//* */ class Mix_I_wFoo_IfwBar__f extends Foo_If with Bar__f { class I; ; f; }
+// *//* */ class Mix_I_wFoo_IfwBar_I_ extends Foo_If with Bar_I_ { class I; ; f; }
+// *//* */ class Mix_I_wFoo_IfwBar_If extends Foo_If with Bar_If { class I; ; f; }
+// *//* */ class Mix_I_wFoo_IfwBarY__ extends Foo_If with BarY__[B] { class I; ; f; }
+// *//* */ class Mix_I_wFoo_IfwBarY_f extends Foo_If with BarY_f[B] { class I; ; f; }
+// *//* */ class Mix_I_wFoo_IfwBarYI_ extends Foo_If with BarYI_[B] { class I; ; f; }
+// *//* */ class Mix_I_wFoo_IfwBarYIf extends Foo_If with BarYIf[B] { class I; ; f; }
+/* */abstract class Mix_I_wFooX__ extends FooX__[A] { class I; ; f; }
+/* */abstract class Mix_I_wFooX__wBar___ extends FooX__[A] with Bar___ { class I; ; f; }
+/* *//* */ class Mix_I_wFooX__wBar__f extends FooX__[A] with Bar__f { class I; ; f; }
+// */abstract class Mix_I_wFooX__wBar_I_ extends FooX__[A] with Bar_I_ { class I; ; f; }
+// *//* */ class Mix_I_wFooX__wBar_If extends FooX__[A] with Bar_If { class I; ; f; }
+/* */abstract class Mix_I_wFooX__wBarY__ extends FooX__[A] with BarY__[B] { class I; ; f; }
+/* *//* */ class Mix_I_wFooX__wBarY_f extends FooX__[A] with BarY_f[B] { class I; ; f; }
+// */abstract class Mix_I_wFooX__wBarYI_ extends FooX__[A] with BarYI_[B] { class I; ; f; }
+// *//* */ class Mix_I_wFooX__wBarYIf extends FooX__[A] with BarYIf[B] { class I; ; f; }
+/* *//* */ class Mix_I_wFooX_f extends FooX_f[A] { class I; ; f; }
+/* *//* */ class Mix_I_wFooX_fwBar___ extends FooX_f[A] with Bar___ { class I; ; f; }
+// *//* */ class Mix_I_wFooX_fwBar__f extends FooX_f[A] with Bar__f { class I; ; f; }
+// *//* */ class Mix_I_wFooX_fwBar_I_ extends FooX_f[A] with Bar_I_ { class I; ; f; }
+// *//* */ class Mix_I_wFooX_fwBar_If extends FooX_f[A] with Bar_If { class I; ; f; }
+/* *//* */ class Mix_I_wFooX_fwBarY__ extends FooX_f[A] with BarY__[B] { class I; ; f; }
+// *//* */ class Mix_I_wFooX_fwBarY_f extends FooX_f[A] with BarY_f[B] { class I; ; f; }
+// *//* */ class Mix_I_wFooX_fwBarYI_ extends FooX_f[A] with BarYI_[B] { class I; ; f; }
+// *//* */ class Mix_I_wFooX_fwBarYIf extends FooX_f[A] with BarYIf[B] { class I; ; f; }
+// */abstract class Mix_I_wFooXI_ extends FooXI_[A] { class I; ; f; }
+// */abstract class Mix_I_wFooXI_wBar___ extends FooXI_[A] with Bar___ { class I; ; f; }
+// *//* */ class Mix_I_wFooXI_wBar__f extends FooXI_[A] with Bar__f { class I; ; f; }
+// */abstract class Mix_I_wFooXI_wBar_I_ extends FooXI_[A] with Bar_I_ { class I; ; f; }
+// *//* */ class Mix_I_wFooXI_wBar_If extends FooXI_[A] with Bar_If { class I; ; f; }
+// */abstract class Mix_I_wFooXI_wBarY__ extends FooXI_[A] with BarY__[B] { class I; ; f; }
+// *//* */ class Mix_I_wFooXI_wBarY_f extends FooXI_[A] with BarY_f[B] { class I; ; f; }
+// */abstract class Mix_I_wFooXI_wBarYI_ extends FooXI_[A] with BarYI_[B] { class I; ; f; }
+// *//* */ class Mix_I_wFooXI_wBarYIf extends FooXI_[A] with BarYIf[B] { class I; ; f; }
+// *//* */ class Mix_I_wFooXIf extends FooXIf[A] { class I; ; f; }
+// *//* */ class Mix_I_wFooXIfwBar___ extends FooXIf[A] with Bar___ { class I; ; f; }
+// *//* */ class Mix_I_wFooXIfwBar__f extends FooXIf[A] with Bar__f { class I; ; f; }
+// *//* */ class Mix_I_wFooXIfwBar_I_ extends FooXIf[A] with Bar_I_ { class I; ; f; }
+// *//* */ class Mix_I_wFooXIfwBar_If extends FooXIf[A] with Bar_If { class I; ; f; }
+// *//* */ class Mix_I_wFooXIfwBarY__ extends FooXIf[A] with BarY__[B] { class I; ; f; }
+// *//* */ class Mix_I_wFooXIfwBarY_f extends FooXIf[A] with BarY_f[B] { class I; ; f; }
+// *//* */ class Mix_I_wFooXIfwBarYI_ extends FooXIf[A] with BarYI_[B] { class I; ; f; }
+// *//* */ class Mix_I_wFooXIfwBarYIf extends FooXIf[A] with BarYIf[B] { class I; ; f; }
+
+/* *//* */ class Mix_IfwFoo___ extends Foo___ { class I; def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfwFoo___wBar___ extends Foo___ with Bar___ { class I; def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfwFoo___wBar__f extends Foo___ with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo___wBar_I_ extends Foo___ with Bar_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo___wBar_If extends Foo___ with Bar_If { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfwFoo___wBarY__ extends Foo___ with BarY__[B] { class I; def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfwFoo___wBarY_f extends Foo___ with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo___wBarYI_ extends Foo___ with BarYI_[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo___wBarYIf extends Foo___ with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfwFoo__f extends Foo__f { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfwFoo__fwBar___ extends Foo__f with Bar___ { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfwFoo__fwBar__f extends Foo__f with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo__fwBar_I_ extends Foo__f with Bar_I_ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo__fwBar_If extends Foo__f with Bar_If { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfwFoo__fwBarY__ extends Foo__f with BarY__[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfwFoo__fwBarY_f extends Foo__f with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo__fwBarYI_ extends Foo__f with BarYI_[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo__fwBarYIf extends Foo__f with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo_I_ extends Foo_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo_I_wBar___ extends Foo_I_ with Bar___ { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo_I_wBar__f extends Foo_I_ with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo_I_wBar_I_ extends Foo_I_ with Bar_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo_I_wBar_If extends Foo_I_ with Bar_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo_I_wBarY__ extends Foo_I_ with BarY__[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo_I_wBarY_f extends Foo_I_ with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo_I_wBarYI_ extends Foo_I_ with BarYI_[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo_I_wBarYIf extends Foo_I_ with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo_If extends Foo_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo_IfwBar___ extends Foo_If with Bar___ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo_IfwBar__f extends Foo_If with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo_IfwBar_I_ extends Foo_If with Bar_I_ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo_IfwBar_If extends Foo_If with Bar_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo_IfwBarY__ extends Foo_If with BarY__[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo_IfwBarY_f extends Foo_If with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo_IfwBarYI_ extends Foo_If with BarYI_[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFoo_IfwBarYIf extends Foo_If with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfwFooX__ extends FooX__[A] { class I; def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfwFooX__wBar___ extends FooX__[A] with Bar___ { class I; def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfwFooX__wBar__f extends FooX__[A] with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooX__wBar_I_ extends FooX__[A] with Bar_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooX__wBar_If extends FooX__[A] with Bar_If { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfwFooX__wBarY__ extends FooX__[A] with BarY__[B] { class I; def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfwFooX__wBarY_f extends FooX__[A] with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooX__wBarYI_ extends FooX__[A] with BarYI_[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooX__wBarYIf extends FooX__[A] with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfwFooX_f extends FooX_f[A] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfwFooX_fwBar___ extends FooX_f[A] with Bar___ { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfwFooX_fwBar__f extends FooX_f[A] with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooX_fwBar_I_ extends FooX_f[A] with Bar_I_ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooX_fwBar_If extends FooX_f[A] with Bar_If { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfwFooX_fwBarY__ extends FooX_f[A] with BarY__[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class Mix_IfwFooX_fwBarY_f extends FooX_f[A] with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooX_fwBarYI_ extends FooX_f[A] with BarYI_[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooX_fwBarYIf extends FooX_f[A] with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooXI_ extends FooXI_[A] { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooXI_wBar___ extends FooXI_[A] with Bar___ { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooXI_wBar__f extends FooXI_[A] with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooXI_wBar_I_ extends FooXI_[A] with Bar_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooXI_wBar_If extends FooXI_[A] with Bar_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooXI_wBarY__ extends FooXI_[A] with BarY__[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooXI_wBarY_f extends FooXI_[A] with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooXI_wBarYI_ extends FooXI_[A] with BarYI_[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooXI_wBarYIf extends FooXI_[A] with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooXIf extends FooXIf[A] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooXIfwBar___ extends FooXIf[A] with Bar___ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooXIfwBar__f extends FooXIf[A] with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooXIfwBar_I_ extends FooXIf[A] with Bar_I_ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooXIfwBar_If extends FooXIf[A] with Bar_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooXIfwBarY__ extends FooXIf[A] with BarY__[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooXIfwBarY_f extends FooXIf[A] with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooXIfwBarYI_ extends FooXIf[A] with BarYI_[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class Mix_IfwFooXIfwBarYIf extends FooXIf[A] with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+
+/* */abstract class MixZ__wFoo___ [Z] extends Foo___ { ; ; f; }
+/* */abstract class MixZ__wFoo___wBar___[Z] extends Foo___ with Bar___ { ; ; f; }
+/* */abstract class MixZ__wFoo___wBar__f[Z] extends Foo___ with Bar__f { ; ; f; }
+/* */abstract class MixZ__wFoo___wBar_I_[Z] extends Foo___ with Bar_I_ { ; ; f; }
+/* *//* */ class MixZ__wFoo___wBar_If[Z] extends Foo___ with Bar_If { ; ; f; }
+/* */abstract class MixZ__wFoo___wBarY__[Z] extends Foo___ with BarY__[B] { ; ; f; }
+/* */abstract class MixZ__wFoo___wBarY_f[Z] extends Foo___ with BarY_f[B] { ; ; f; }
+/* */abstract class MixZ__wFoo___wBarYI_[Z] extends Foo___ with BarYI_[B] { ; ; f; }
+/* *//* */ class MixZ__wFoo___wBarYIf[Z] extends Foo___ with BarYIf[B] { ; ; f; }
+/* */abstract class MixZ__wFoo__f [Z] extends Foo__f { ; ; f; }
+/* */abstract class MixZ__wFoo__fwBar___[Z] extends Foo__f with Bar___ { ; ; f; }
+// */abstract class MixZ__wFoo__fwBar__f[Z] extends Foo__f with Bar__f { ; ; f; }
+/* *//* */ class MixZ__wFoo__fwBar_I_[Z] extends Foo__f with Bar_I_ { ; ; f; }
+// *//* */ class MixZ__wFoo__fwBar_If[Z] extends Foo__f with Bar_If { ; ; f; }
+/* */abstract class MixZ__wFoo__fwBarY__[Z] extends Foo__f with BarY__[B] { ; ; f; }
+// */abstract class MixZ__wFoo__fwBarY_f[Z] extends Foo__f with BarY_f[B] { ; ; f; }
+/* *//* */ class MixZ__wFoo__fwBarYI_[Z] extends Foo__f with BarYI_[B] { ; ; f; }
+// *//* */ class MixZ__wFoo__fwBarYIf[Z] extends Foo__f with BarYIf[B] { ; ; f; }
+/* */abstract class MixZ__wFoo_I_ [Z] extends Foo_I_ { ; ; f; }
+/* */abstract class MixZ__wFoo_I_wBar___[Z] extends Foo_I_ with Bar___ { ; ; f; }
+/* *//* */ class MixZ__wFoo_I_wBar__f[Z] extends Foo_I_ with Bar__f { ; ; f; }
+// */abstract class MixZ__wFoo_I_wBar_I_[Z] extends Foo_I_ with Bar_I_ { ; ; f; }
+// *//* */ class MixZ__wFoo_I_wBar_If[Z] extends Foo_I_ with Bar_If { ; ; f; }
+/* */abstract class MixZ__wFoo_I_wBarY__[Z] extends Foo_I_ with BarY__[B] { ; ; f; }
+/* *//* */ class MixZ__wFoo_I_wBarY_f[Z] extends Foo_I_ with BarY_f[B] { ; ; f; }
+// */abstract class MixZ__wFoo_I_wBarYI_[Z] extends Foo_I_ with BarYI_[B] { ; ; f; }
+// *//* */ class MixZ__wFoo_I_wBarYIf[Z] extends Foo_I_ with BarYIf[B] { ; ; f; }
+/* *//* */ class MixZ__wFoo_If [Z] extends Foo_If { ; ; f; }
+/* *//* */ class MixZ__wFoo_IfwBar___[Z] extends Foo_If with Bar___ { ; ; f; }
+// *//* */ class MixZ__wFoo_IfwBar__f[Z] extends Foo_If with Bar__f { ; ; f; }
+// *//* */ class MixZ__wFoo_IfwBar_I_[Z] extends Foo_If with Bar_I_ { ; ; f; }
+// *//* */ class MixZ__wFoo_IfwBar_If[Z] extends Foo_If with Bar_If { ; ; f; }
+/* *//* */ class MixZ__wFoo_IfwBarY__[Z] extends Foo_If with BarY__[B] { ; ; f; }
+// *//* */ class MixZ__wFoo_IfwBarY_f[Z] extends Foo_If with BarY_f[B] { ; ; f; }
+// *//* */ class MixZ__wFoo_IfwBarYI_[Z] extends Foo_If with BarYI_[B] { ; ; f; }
+// *//* */ class MixZ__wFoo_IfwBarYIf[Z] extends Foo_If with BarYIf[B] { ; ; f; }
+/* */abstract class MixZ__wFooX__ [Z] extends FooX__[A] { ; ; f; }
+/* */abstract class MixZ__wFooX__wBar___[Z] extends FooX__[A] with Bar___ { ; ; f; }
+/* */abstract class MixZ__wFooX__wBar__f[Z] extends FooX__[A] with Bar__f { ; ; f; }
+/* */abstract class MixZ__wFooX__wBar_I_[Z] extends FooX__[A] with Bar_I_ { ; ; f; }
+/* *//* */ class MixZ__wFooX__wBar_If[Z] extends FooX__[A] with Bar_If { ; ; f; }
+/* */abstract class MixZ__wFooX__wBarY__[Z] extends FooX__[A] with BarY__[B] { ; ; f; }
+/* */abstract class MixZ__wFooX__wBarY_f[Z] extends FooX__[A] with BarY_f[B] { ; ; f; }
+/* */abstract class MixZ__wFooX__wBarYI_[Z] extends FooX__[A] with BarYI_[B] { ; ; f; }
+/* *//* */ class MixZ__wFooX__wBarYIf[Z] extends FooX__[A] with BarYIf[B] { ; ; f; }
+/* */abstract class MixZ__wFooX_f [Z] extends FooX_f[A] { ; ; f; }
+/* */abstract class MixZ__wFooX_fwBar___[Z] extends FooX_f[A] with Bar___ { ; ; f; }
+// */abstract class MixZ__wFooX_fwBar__f[Z] extends FooX_f[A] with Bar__f { ; ; f; }
+/* *//* */ class MixZ__wFooX_fwBar_I_[Z] extends FooX_f[A] with Bar_I_ { ; ; f; }
+// *//* */ class MixZ__wFooX_fwBar_If[Z] extends FooX_f[A] with Bar_If { ; ; f; }
+/* */abstract class MixZ__wFooX_fwBarY__[Z] extends FooX_f[A] with BarY__[B] { ; ; f; }
+// */abstract class MixZ__wFooX_fwBarY_f[Z] extends FooX_f[A] with BarY_f[B] { ; ; f; }
+/* *//* */ class MixZ__wFooX_fwBarYI_[Z] extends FooX_f[A] with BarYI_[B] { ; ; f; }
+// *//* */ class MixZ__wFooX_fwBarYIf[Z] extends FooX_f[A] with BarYIf[B] { ; ; f; }
+/* */abstract class MixZ__wFooXI_ [Z] extends FooXI_[A] { ; ; f; }
+/* */abstract class MixZ__wFooXI_wBar___[Z] extends FooXI_[A] with Bar___ { ; ; f; }
+/* *//* */ class MixZ__wFooXI_wBar__f[Z] extends FooXI_[A] with Bar__f { ; ; f; }
+// */abstract class MixZ__wFooXI_wBar_I_[Z] extends FooXI_[A] with Bar_I_ { ; ; f; }
+// *//* */ class MixZ__wFooXI_wBar_If[Z] extends FooXI_[A] with Bar_If { ; ; f; }
+/* */abstract class MixZ__wFooXI_wBarY__[Z] extends FooXI_[A] with BarY__[B] { ; ; f; }
+/* *//* */ class MixZ__wFooXI_wBarY_f[Z] extends FooXI_[A] with BarY_f[B] { ; ; f; }
+// */abstract class MixZ__wFooXI_wBarYI_[Z] extends FooXI_[A] with BarYI_[B] { ; ; f; }
+// *//* */ class MixZ__wFooXI_wBarYIf[Z] extends FooXI_[A] with BarYIf[B] { ; ; f; }
+/* *//* */ class MixZ__wFooXIf [Z] extends FooXIf[A] { ; ; f; }
+/* *//* */ class MixZ__wFooXIfwBar___[Z] extends FooXIf[A] with Bar___ { ; ; f; }
+// *//* */ class MixZ__wFooXIfwBar__f[Z] extends FooXIf[A] with Bar__f { ; ; f; }
+// *//* */ class MixZ__wFooXIfwBar_I_[Z] extends FooXIf[A] with Bar_I_ { ; ; f; }
+// *//* */ class MixZ__wFooXIfwBar_If[Z] extends FooXIf[A] with Bar_If { ; ; f; }
+/* *//* */ class MixZ__wFooXIfwBarY__[Z] extends FooXIf[A] with BarY__[B] { ; ; f; }
+// *//* */ class MixZ__wFooXIfwBarY_f[Z] extends FooXIf[A] with BarY_f[B] { ; ; f; }
+// *//* */ class MixZ__wFooXIfwBarYI_[Z] extends FooXIf[A] with BarYI_[B] { ; ; f; }
+// *//* */ class MixZ__wFooXIfwBarYIf[Z] extends FooXIf[A] with BarYIf[B] { ; ; f; }
+
+/* */abstract class MixZ_fwFoo___ [Z] extends Foo___ { ; def f: I = {mix; null}; f; }
+/* */abstract class MixZ_fwFoo___wBar___[Z] extends Foo___ with Bar___ { ; def f: I = {mix; null}; f; }
+/* */abstract class MixZ_fwFoo___wBar__f[Z] extends Foo___ with Bar__f { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFoo___wBar_I_[Z] extends Foo___ with Bar_I_ { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFoo___wBar_If[Z] extends Foo___ with Bar_If { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_fwFoo___wBarY__[Z] extends Foo___ with BarY__[B] { ; def f: I = {mix; null}; f; }
+/* */abstract class MixZ_fwFoo___wBarY_f[Z] extends Foo___ with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFoo___wBarYI_[Z] extends Foo___ with BarYI_[B] { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFoo___wBarYIf[Z] extends Foo___ with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_fwFoo__f [Z] extends Foo__f { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_fwFoo__fwBar___[Z] extends Foo__f with Bar___ { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_fwFoo__fwBar__f[Z] extends Foo__f with Bar__f { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFoo__fwBar_I_[Z] extends Foo__f with Bar_I_ { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFoo__fwBar_If[Z] extends Foo__f with Bar_If { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_fwFoo__fwBarY__[Z] extends Foo__f with BarY__[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_fwFoo__fwBarY_f[Z] extends Foo__f with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFoo__fwBarYI_[Z] extends Foo__f with BarYI_[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFoo__fwBarYIf[Z] extends Foo__f with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFoo_I_ [Z] extends Foo_I_ { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFoo_I_wBar___[Z] extends Foo_I_ with Bar___ { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFoo_I_wBar__f[Z] extends Foo_I_ with Bar__f { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_fwFoo_I_wBar_I_[Z] extends Foo_I_ with Bar_I_ { ; def f: I = {mix; null}; f; }
+// *//* */ class MixZ_fwFoo_I_wBar_If[Z] extends Foo_I_ with Bar_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFoo_I_wBarY__[Z] extends Foo_I_ with BarY__[B] { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFoo_I_wBarY_f[Z] extends Foo_I_ with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_fwFoo_I_wBarYI_[Z] extends Foo_I_ with BarYI_[B] { ; def f: I = {mix; null}; f; }
+// *//* */ class MixZ_fwFoo_I_wBarYIf[Z] extends Foo_I_ with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFoo_If [Z] extends Foo_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFoo_IfwBar___[Z] extends Foo_If with Bar___ { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFoo_IfwBar__f[Z] extends Foo_If with Bar__f { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_fwFoo_IfwBar_I_[Z] extends Foo_If with Bar_I_ { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_fwFoo_IfwBar_If[Z] extends Foo_If with Bar_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFoo_IfwBarY__[Z] extends Foo_If with BarY__[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFoo_IfwBarY_f[Z] extends Foo_If with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_fwFoo_IfwBarYI_[Z] extends Foo_If with BarYI_[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_fwFoo_IfwBarYIf[Z] extends Foo_If with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_fwFooX__ [Z] extends FooX__[A] { ; def f: I = {mix; null}; f; }
+/* */abstract class MixZ_fwFooX__wBar___[Z] extends FooX__[A] with Bar___ { ; def f: I = {mix; null}; f; }
+/* */abstract class MixZ_fwFooX__wBar__f[Z] extends FooX__[A] with Bar__f { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFooX__wBar_I_[Z] extends FooX__[A] with Bar_I_ { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFooX__wBar_If[Z] extends FooX__[A] with Bar_If { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_fwFooX__wBarY__[Z] extends FooX__[A] with BarY__[B] { ; def f: I = {mix; null}; f; }
+/* */abstract class MixZ_fwFooX__wBarY_f[Z] extends FooX__[A] with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFooX__wBarYI_[Z] extends FooX__[A] with BarYI_[B] { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFooX__wBarYIf[Z] extends FooX__[A] with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_fwFooX_f [Z] extends FooX_f[A] { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_fwFooX_fwBar___[Z] extends FooX_f[A] with Bar___ { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_fwFooX_fwBar__f[Z] extends FooX_f[A] with Bar__f { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFooX_fwBar_I_[Z] extends FooX_f[A] with Bar_I_ { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFooX_fwBar_If[Z] extends FooX_f[A] with Bar_If { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_fwFooX_fwBarY__[Z] extends FooX_f[A] with BarY__[B] { ; override def f: I = {mix; null}; f; }
+/* */abstract class MixZ_fwFooX_fwBarY_f[Z] extends FooX_f[A] with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFooX_fwBarYI_[Z] extends FooX_f[A] with BarYI_[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFooX_fwBarYIf[Z] extends FooX_f[A] with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFooXI_ [Z] extends FooXI_[A] { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFooXI_wBar___[Z] extends FooXI_[A] with Bar___ { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFooXI_wBar__f[Z] extends FooXI_[A] with Bar__f { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_fwFooXI_wBar_I_[Z] extends FooXI_[A] with Bar_I_ { ; def f: I = {mix; null}; f; }
+// *//* */ class MixZ_fwFooXI_wBar_If[Z] extends FooXI_[A] with Bar_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFooXI_wBarY__[Z] extends FooXI_[A] with BarY__[B] { ; def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFooXI_wBarY_f[Z] extends FooXI_[A] with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_fwFooXI_wBarYI_[Z] extends FooXI_[A] with BarYI_[B] { ; def f: I = {mix; null}; f; }
+// *//* */ class MixZ_fwFooXI_wBarYIf[Z] extends FooXI_[A] with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFooXIf [Z] extends FooXIf[A] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFooXIfwBar___[Z] extends FooXIf[A] with Bar___ { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFooXIfwBar__f[Z] extends FooXIf[A] with Bar__f { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_fwFooXIfwBar_I_[Z] extends FooXIf[A] with Bar_I_ { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_fwFooXIfwBar_If[Z] extends FooXIf[A] with Bar_If { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFooXIfwBarY__[Z] extends FooXIf[A] with BarY__[B] { ; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZ_fwFooXIfwBarY_f[Z] extends FooXIf[A] with BarY_f[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_fwFooXIfwBarYI_[Z] extends FooXIf[A] with BarYI_[B] { ; override def f: I = {mix; null}; f; }
+// *//* */ class MixZ_fwFooXIfwBarYIf[Z] extends FooXIf[A] with BarYIf[B] { ; override def f: I = {mix; null}; f; }
+
+/* */abstract class MixZI_wFoo___ [Z] extends Foo___ { class I; ; f; }
+/* */abstract class MixZI_wFoo___wBar___[Z] extends Foo___ with Bar___ { class I; ; f; }
+/* *//* */ class MixZI_wFoo___wBar__f[Z] extends Foo___ with Bar__f { class I; ; f; }
+// */abstract class MixZI_wFoo___wBar_I_[Z] extends Foo___ with Bar_I_ { class I; ; f; }
+// *//* */ class MixZI_wFoo___wBar_If[Z] extends Foo___ with Bar_If { class I; ; f; }
+/* */abstract class MixZI_wFoo___wBarY__[Z] extends Foo___ with BarY__[B] { class I; ; f; }
+/* *//* */ class MixZI_wFoo___wBarY_f[Z] extends Foo___ with BarY_f[B] { class I; ; f; }
+// */abstract class MixZI_wFoo___wBarYI_[Z] extends Foo___ with BarYI_[B] { class I; ; f; }
+// *//* */ class MixZI_wFoo___wBarYIf[Z] extends Foo___ with BarYIf[B] { class I; ; f; }
+/* *//* */ class MixZI_wFoo__f [Z] extends Foo__f { class I; ; f; }
+/* *//* */ class MixZI_wFoo__fwBar___[Z] extends Foo__f with Bar___ { class I; ; f; }
+// *//* */ class MixZI_wFoo__fwBar__f[Z] extends Foo__f with Bar__f { class I; ; f; }
+// *//* */ class MixZI_wFoo__fwBar_I_[Z] extends Foo__f with Bar_I_ { class I; ; f; }
+// *//* */ class MixZI_wFoo__fwBar_If[Z] extends Foo__f with Bar_If { class I; ; f; }
+/* *//* */ class MixZI_wFoo__fwBarY__[Z] extends Foo__f with BarY__[B] { class I; ; f; }
+// *//* */ class MixZI_wFoo__fwBarY_f[Z] extends Foo__f with BarY_f[B] { class I; ; f; }
+// *//* */ class MixZI_wFoo__fwBarYI_[Z] extends Foo__f with BarYI_[B] { class I; ; f; }
+// *//* */ class MixZI_wFoo__fwBarYIf[Z] extends Foo__f with BarYIf[B] { class I; ; f; }
+// */abstract class MixZI_wFoo_I_ [Z] extends Foo_I_ { class I; ; f; }
+// */abstract class MixZI_wFoo_I_wBar___[Z] extends Foo_I_ with Bar___ { class I; ; f; }
+// *//* */ class MixZI_wFoo_I_wBar__f[Z] extends Foo_I_ with Bar__f { class I; ; f; }
+// */abstract class MixZI_wFoo_I_wBar_I_[Z] extends Foo_I_ with Bar_I_ { class I; ; f; }
+// *//* */ class MixZI_wFoo_I_wBar_If[Z] extends Foo_I_ with Bar_If { class I; ; f; }
+// */abstract class MixZI_wFoo_I_wBarY__[Z] extends Foo_I_ with BarY__[B] { class I; ; f; }
+// *//* */ class MixZI_wFoo_I_wBarY_f[Z] extends Foo_I_ with BarY_f[B] { class I; ; f; }
+// */abstract class MixZI_wFoo_I_wBarYI_[Z] extends Foo_I_ with BarYI_[B] { class I; ; f; }
+// *//* */ class MixZI_wFoo_I_wBarYIf[Z] extends Foo_I_ with BarYIf[B] { class I; ; f; }
+// *//* */ class MixZI_wFoo_If [Z] extends Foo_If { class I; ; f; }
+// *//* */ class MixZI_wFoo_IfwBar___[Z] extends Foo_If with Bar___ { class I; ; f; }
+// *//* */ class MixZI_wFoo_IfwBar__f[Z] extends Foo_If with Bar__f { class I; ; f; }
+// *//* */ class MixZI_wFoo_IfwBar_I_[Z] extends Foo_If with Bar_I_ { class I; ; f; }
+// *//* */ class MixZI_wFoo_IfwBar_If[Z] extends Foo_If with Bar_If { class I; ; f; }
+// *//* */ class MixZI_wFoo_IfwBarY__[Z] extends Foo_If with BarY__[B] { class I; ; f; }
+// *//* */ class MixZI_wFoo_IfwBarY_f[Z] extends Foo_If with BarY_f[B] { class I; ; f; }
+// *//* */ class MixZI_wFoo_IfwBarYI_[Z] extends Foo_If with BarYI_[B] { class I; ; f; }
+// *//* */ class MixZI_wFoo_IfwBarYIf[Z] extends Foo_If with BarYIf[B] { class I; ; f; }
+/* */abstract class MixZI_wFooX__ [Z] extends FooX__[A] { class I; ; f; }
+/* */abstract class MixZI_wFooX__wBar___[Z] extends FooX__[A] with Bar___ { class I; ; f; }
+/* *//* */ class MixZI_wFooX__wBar__f[Z] extends FooX__[A] with Bar__f { class I; ; f; }
+// */abstract class MixZI_wFooX__wBar_I_[Z] extends FooX__[A] with Bar_I_ { class I; ; f; }
+// *//* */ class MixZI_wFooX__wBar_If[Z] extends FooX__[A] with Bar_If { class I; ; f; }
+/* */abstract class MixZI_wFooX__wBarY__[Z] extends FooX__[A] with BarY__[B] { class I; ; f; }
+/* *//* */ class MixZI_wFooX__wBarY_f[Z] extends FooX__[A] with BarY_f[B] { class I; ; f; }
+// */abstract class MixZI_wFooX__wBarYI_[Z] extends FooX__[A] with BarYI_[B] { class I; ; f; }
+// *//* */ class MixZI_wFooX__wBarYIf[Z] extends FooX__[A] with BarYIf[B] { class I; ; f; }
+/* *//* */ class MixZI_wFooX_f [Z] extends FooX_f[A] { class I; ; f; }
+/* *//* */ class MixZI_wFooX_fwBar___[Z] extends FooX_f[A] with Bar___ { class I; ; f; }
+// *//* */ class MixZI_wFooX_fwBar__f[Z] extends FooX_f[A] with Bar__f { class I; ; f; }
+// *//* */ class MixZI_wFooX_fwBar_I_[Z] extends FooX_f[A] with Bar_I_ { class I; ; f; }
+// *//* */ class MixZI_wFooX_fwBar_If[Z] extends FooX_f[A] with Bar_If { class I; ; f; }
+/* *//* */ class MixZI_wFooX_fwBarY__[Z] extends FooX_f[A] with BarY__[B] { class I; ; f; }
+// *//* */ class MixZI_wFooX_fwBarY_f[Z] extends FooX_f[A] with BarY_f[B] { class I; ; f; }
+// *//* */ class MixZI_wFooX_fwBarYI_[Z] extends FooX_f[A] with BarYI_[B] { class I; ; f; }
+// *//* */ class MixZI_wFooX_fwBarYIf[Z] extends FooX_f[A] with BarYIf[B] { class I; ; f; }
+// */abstract class MixZI_wFooXI_ [Z] extends FooXI_[A] { class I; ; f; }
+// */abstract class MixZI_wFooXI_wBar___[Z] extends FooXI_[A] with Bar___ { class I; ; f; }
+// *//* */ class MixZI_wFooXI_wBar__f[Z] extends FooXI_[A] with Bar__f { class I; ; f; }
+// */abstract class MixZI_wFooXI_wBar_I_[Z] extends FooXI_[A] with Bar_I_ { class I; ; f; }
+// *//* */ class MixZI_wFooXI_wBar_If[Z] extends FooXI_[A] with Bar_If { class I; ; f; }
+// */abstract class MixZI_wFooXI_wBarY__[Z] extends FooXI_[A] with BarY__[B] { class I; ; f; }
+// *//* */ class MixZI_wFooXI_wBarY_f[Z] extends FooXI_[A] with BarY_f[B] { class I; ; f; }
+// */abstract class MixZI_wFooXI_wBarYI_[Z] extends FooXI_[A] with BarYI_[B] { class I; ; f; }
+// *//* */ class MixZI_wFooXI_wBarYIf[Z] extends FooXI_[A] with BarYIf[B] { class I; ; f; }
+// *//* */ class MixZI_wFooXIf [Z] extends FooXIf[A] { class I; ; f; }
+// *//* */ class MixZI_wFooXIfwBar___[Z] extends FooXIf[A] with Bar___ { class I; ; f; }
+// *//* */ class MixZI_wFooXIfwBar__f[Z] extends FooXIf[A] with Bar__f { class I; ; f; }
+// *//* */ class MixZI_wFooXIfwBar_I_[Z] extends FooXIf[A] with Bar_I_ { class I; ; f; }
+// *//* */ class MixZI_wFooXIfwBar_If[Z] extends FooXIf[A] with Bar_If { class I; ; f; }
+// *//* */ class MixZI_wFooXIfwBarY__[Z] extends FooXIf[A] with BarY__[B] { class I; ; f; }
+// *//* */ class MixZI_wFooXIfwBarY_f[Z] extends FooXIf[A] with BarY_f[B] { class I; ; f; }
+// *//* */ class MixZI_wFooXIfwBarYI_[Z] extends FooXIf[A] with BarYI_[B] { class I; ; f; }
+// *//* */ class MixZI_wFooXIfwBarYIf[Z] extends FooXIf[A] with BarYIf[B] { class I; ; f; }
+
+/* *//* */ class MixZIfwFoo___ [Z] extends Foo___ { class I; def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfwFoo___wBar___[Z] extends Foo___ with Bar___ { class I; def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfwFoo___wBar__f[Z] extends Foo___ with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo___wBar_I_[Z] extends Foo___ with Bar_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo___wBar_If[Z] extends Foo___ with Bar_If { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfwFoo___wBarY__[Z] extends Foo___ with BarY__[B] { class I; def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfwFoo___wBarY_f[Z] extends Foo___ with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo___wBarYI_[Z] extends Foo___ with BarYI_[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo___wBarYIf[Z] extends Foo___ with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfwFoo__f [Z] extends Foo__f { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfwFoo__fwBar___[Z] extends Foo__f with Bar___ { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfwFoo__fwBar__f[Z] extends Foo__f with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo__fwBar_I_[Z] extends Foo__f with Bar_I_ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo__fwBar_If[Z] extends Foo__f with Bar_If { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfwFoo__fwBarY__[Z] extends Foo__f with BarY__[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfwFoo__fwBarY_f[Z] extends Foo__f with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo__fwBarYI_[Z] extends Foo__f with BarYI_[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo__fwBarYIf[Z] extends Foo__f with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo_I_ [Z] extends Foo_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo_I_wBar___[Z] extends Foo_I_ with Bar___ { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo_I_wBar__f[Z] extends Foo_I_ with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo_I_wBar_I_[Z] extends Foo_I_ with Bar_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo_I_wBar_If[Z] extends Foo_I_ with Bar_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo_I_wBarY__[Z] extends Foo_I_ with BarY__[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo_I_wBarY_f[Z] extends Foo_I_ with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo_I_wBarYI_[Z] extends Foo_I_ with BarYI_[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo_I_wBarYIf[Z] extends Foo_I_ with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo_If [Z] extends Foo_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo_IfwBar___[Z] extends Foo_If with Bar___ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo_IfwBar__f[Z] extends Foo_If with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo_IfwBar_I_[Z] extends Foo_If with Bar_I_ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo_IfwBar_If[Z] extends Foo_If with Bar_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo_IfwBarY__[Z] extends Foo_If with BarY__[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo_IfwBarY_f[Z] extends Foo_If with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo_IfwBarYI_[Z] extends Foo_If with BarYI_[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFoo_IfwBarYIf[Z] extends Foo_If with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfwFooX__ [Z] extends FooX__[A] { class I; def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfwFooX__wBar___[Z] extends FooX__[A] with Bar___ { class I; def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfwFooX__wBar__f[Z] extends FooX__[A] with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooX__wBar_I_[Z] extends FooX__[A] with Bar_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooX__wBar_If[Z] extends FooX__[A] with Bar_If { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfwFooX__wBarY__[Z] extends FooX__[A] with BarY__[B] { class I; def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfwFooX__wBarY_f[Z] extends FooX__[A] with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooX__wBarYI_[Z] extends FooX__[A] with BarYI_[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooX__wBarYIf[Z] extends FooX__[A] with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfwFooX_f [Z] extends FooX_f[A] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfwFooX_fwBar___[Z] extends FooX_f[A] with Bar___ { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfwFooX_fwBar__f[Z] extends FooX_f[A] with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooX_fwBar_I_[Z] extends FooX_f[A] with Bar_I_ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooX_fwBar_If[Z] extends FooX_f[A] with Bar_If { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfwFooX_fwBarY__[Z] extends FooX_f[A] with BarY__[B] { class I; override def f: I = {mix; null}; f; }
+/* *//* */ class MixZIfwFooX_fwBarY_f[Z] extends FooX_f[A] with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooX_fwBarYI_[Z] extends FooX_f[A] with BarYI_[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooX_fwBarYIf[Z] extends FooX_f[A] with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooXI_ [Z] extends FooXI_[A] { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooXI_wBar___[Z] extends FooXI_[A] with Bar___ { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooXI_wBar__f[Z] extends FooXI_[A] with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooXI_wBar_I_[Z] extends FooXI_[A] with Bar_I_ { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooXI_wBar_If[Z] extends FooXI_[A] with Bar_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooXI_wBarY__[Z] extends FooXI_[A] with BarY__[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooXI_wBarY_f[Z] extends FooXI_[A] with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooXI_wBarYI_[Z] extends FooXI_[A] with BarYI_[B] { class I; def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooXI_wBarYIf[Z] extends FooXI_[A] with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooXIf [Z] extends FooXIf[A] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooXIfwBar___[Z] extends FooXIf[A] with Bar___ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooXIfwBar__f[Z] extends FooXIf[A] with Bar__f { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooXIfwBar_I_[Z] extends FooXIf[A] with Bar_I_ { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooXIfwBar_If[Z] extends FooXIf[A] with Bar_If { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooXIfwBarY__[Z] extends FooXIf[A] with BarY__[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooXIfwBarY_f[Z] extends FooXIf[A] with BarY_f[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooXIfwBarYI_[Z] extends FooXIf[A] with BarYI_[B] { class I; override def f: I = {mix; null}; f; }
+// *//* */ class MixZIfwFooXIfwBarYIf[Z] extends FooXIf[A] with BarYIf[B] { class I; override def f: I = {mix; null}; f; }
+
+
+
+
+
+/* */class S_____eFoo___ extends Mix___eFoo___ { class I; def f: I = {sub; null}; f; }
+/* */class S_____eFoo___wBar___ extends Mix___eFoo___wBar___ { class I; def f: I = {sub; null}; f; }
+/* */class S_____eFoo___wBar__f extends Mix___eFoo___wBar__f { class I; ; f; }
+/* */class S_____eFoo___wBar_I_ extends Mix___eFoo___wBar_I_ { ; def f: I = {sub; null}; f; }
+/* */class S_____eFoo___wBar_If extends Mix___eFoo___wBar_If { ; ; f; }
+/* */class S_____eFoo___wBarY__ extends Mix___eFoo___wBarY__ { class I; def f: I = {sub; null}; f; }
+/* */class S_____eFoo___wBarY_f extends Mix___eFoo___wBarY_f { class I; ; f; }
+/* */class S_____eFoo___wBarYI_ extends Mix___eFoo___wBarYI_ { ; def f: I = {sub; null}; f; }
+/* */class S_____eFoo___wBarYIf extends Mix___eFoo___wBarYIf { ; ; f; }
+/* */class S_____eFoo__f extends Mix___eFoo__f { class I; ; f; }
+/* */class S_____eFoo__fwBar___ extends Mix___eFoo__fwBar___ { class I; ; f; }
+// */class S_____eFoo__fwBar__f extends Mix___eFoo__fwBar__f { class I; ; f; }
+/* */class S_____eFoo__fwBar_I_ extends Mix___eFoo__fwBar_I_ { ; ; f; }
+// */class S_____eFoo__fwBar_If extends Mix___eFoo__fwBar_If { ; ; f; }
+/* */class S_____eFoo__fwBarY__ extends Mix___eFoo__fwBarY__ { class I; ; f; }
+// */class S_____eFoo__fwBarY_f extends Mix___eFoo__fwBarY_f { class I; ; f; }
+/* */class S_____eFoo__fwBarYI_ extends Mix___eFoo__fwBarYI_ { ; ; f; }
+// */class S_____eFoo__fwBarYIf extends Mix___eFoo__fwBarYIf { ; ; f; }
+/* */class S_____eFoo_I_ extends Mix___eFoo_I_ { ; def f: I = {sub; null}; f; }
+/* */class S_____eFoo_I_wBar___ extends Mix___eFoo_I_wBar___ { ; def f: I = {sub; null}; f; }
+/* */class S_____eFoo_I_wBar__f extends Mix___eFoo_I_wBar__f { ; ; f; }
+// */class S_____eFoo_I_wBar_I_ extends Mix___eFoo_I_wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S_____eFoo_I_wBar_If extends Mix___eFoo_I_wBar_If { ; ; f; }
+/* */class S_____eFoo_I_wBarY__ extends Mix___eFoo_I_wBarY__ { ; def f: I = {sub; null}; f; }
+/* */class S_____eFoo_I_wBarY_f extends Mix___eFoo_I_wBarY_f { ; ; f; }
+// */class S_____eFoo_I_wBarYI_ extends Mix___eFoo_I_wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S_____eFoo_I_wBarYIf extends Mix___eFoo_I_wBarYIf { ; ; f; }
+/* */class S_____eFoo_If extends Mix___eFoo_If { ; ; f; }
+/* */class S_____eFoo_IfwBar___ extends Mix___eFoo_IfwBar___ { ; ; f; }
+// */class S_____eFoo_IfwBar__f extends Mix___eFoo_IfwBar__f { ; ; f; }
+// */class S_____eFoo_IfwBar_I_ extends Mix___eFoo_IfwBar_I_ { ; ; f; }
+// */class S_____eFoo_IfwBar_If extends Mix___eFoo_IfwBar_If { ; ; f; }
+/* */class S_____eFoo_IfwBarY__ extends Mix___eFoo_IfwBarY__ { ; ; f; }
+// */class S_____eFoo_IfwBarY_f extends Mix___eFoo_IfwBarY_f { ; ; f; }
+// */class S_____eFoo_IfwBarYI_ extends Mix___eFoo_IfwBarYI_ { ; ; f; }
+// */class S_____eFoo_IfwBarYIf extends Mix___eFoo_IfwBarYIf { ; ; f; }
+/* */class S_____eFooX__ extends Mix___eFooX__ { class I; def f: I = {sub; null}; f; }
+/* */class S_____eFooX__wBar___ extends Mix___eFooX__wBar___ { class I; def f: I = {sub; null}; f; }
+/* */class S_____eFooX__wBar__f extends Mix___eFooX__wBar__f { class I; ; f; }
+/* */class S_____eFooX__wBar_I_ extends Mix___eFooX__wBar_I_ { ; def f: I = {sub; null}; f; }
+/* */class S_____eFooX__wBar_If extends Mix___eFooX__wBar_If { ; ; f; }
+/* */class S_____eFooX__wBarY__ extends Mix___eFooX__wBarY__ { class I; def f: I = {sub; null}; f; }
+/* */class S_____eFooX__wBarY_f extends Mix___eFooX__wBarY_f { class I; ; f; }
+/* */class S_____eFooX__wBarYI_ extends Mix___eFooX__wBarYI_ { ; def f: I = {sub; null}; f; }
+/* */class S_____eFooX__wBarYIf extends Mix___eFooX__wBarYIf { ; ; f; }
+/* */class S_____eFooX_f extends Mix___eFooX_f { class I; ; f; }
+/* */class S_____eFooX_fwBar___ extends Mix___eFooX_fwBar___ { class I; ; f; }
+// */class S_____eFooX_fwBar__f extends Mix___eFooX_fwBar__f { class I; ; f; }
+/* */class S_____eFooX_fwBar_I_ extends Mix___eFooX_fwBar_I_ { ; ; f; }
+// */class S_____eFooX_fwBar_If extends Mix___eFooX_fwBar_If { ; ; f; }
+/* */class S_____eFooX_fwBarY__ extends Mix___eFooX_fwBarY__ { class I; ; f; }
+// */class S_____eFooX_fwBarY_f extends Mix___eFooX_fwBarY_f { class I; ; f; }
+/* */class S_____eFooX_fwBarYI_ extends Mix___eFooX_fwBarYI_ { ; ; f; }
+// */class S_____eFooX_fwBarYIf extends Mix___eFooX_fwBarYIf { ; ; f; }
+/* */class S_____eFooXI_ extends Mix___eFooXI_ { ; def f: I = {sub; null}; f; }
+/* */class S_____eFooXI_wBar___ extends Mix___eFooXI_wBar___ { ; def f: I = {sub; null}; f; }
+/* */class S_____eFooXI_wBar__f extends Mix___eFooXI_wBar__f { ; ; f; }
+// */class S_____eFooXI_wBar_I_ extends Mix___eFooXI_wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S_____eFooXI_wBar_If extends Mix___eFooXI_wBar_If { ; ; f; }
+/* */class S_____eFooXI_wBarY__ extends Mix___eFooXI_wBarY__ { ; def f: I = {sub; null}; f; }
+/* */class S_____eFooXI_wBarY_f extends Mix___eFooXI_wBarY_f { ; ; f; }
+// */class S_____eFooXI_wBarYI_ extends Mix___eFooXI_wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S_____eFooXI_wBarYIf extends Mix___eFooXI_wBarYIf { ; ; f; }
+/* */class S_____eFooXIf extends Mix___eFooXIf { ; ; f; }
+/* */class S_____eFooXIfwBar___ extends Mix___eFooXIfwBar___ { ; ; f; }
+// */class S_____eFooXIfwBar__f extends Mix___eFooXIfwBar__f { ; ; f; }
+// */class S_____eFooXIfwBar_I_ extends Mix___eFooXIfwBar_I_ { ; ; f; }
+// */class S_____eFooXIfwBar_If extends Mix___eFooXIfwBar_If { ; ; f; }
+/* */class S_____eFooXIfwBarY__ extends Mix___eFooXIfwBarY__ { ; ; f; }
+// */class S_____eFooXIfwBarY_f extends Mix___eFooXIfwBarY_f { ; ; f; }
+// */class S_____eFooXIfwBarYI_ extends Mix___eFooXIfwBarYI_ { ; ; f; }
+// */class S_____eFooXIfwBarYIf extends Mix___eFooXIfwBarYIf { ; ; f; }
+
+/* */class S____feFoo___ extends Mix__feFoo___ { class I; ; f; }
+/* */class S____feFoo___wBar___ extends Mix__feFoo___wBar___ { class I; ; f; }
+/* */class S____feFoo___wBar__f extends Mix__feFoo___wBar__f { class I; ; f; }
+/* */class S____feFoo___wBar_I_ extends Mix__feFoo___wBar_I_ { ; ; f; }
+/* */class S____feFoo___wBar_If extends Mix__feFoo___wBar_If { ; ; f; }
+/* */class S____feFoo___wBarY__ extends Mix__feFoo___wBarY__ { class I; ; f; }
+/* */class S____feFoo___wBarY_f extends Mix__feFoo___wBarY_f { class I; ; f; }
+/* */class S____feFoo___wBarYI_ extends Mix__feFoo___wBarYI_ { ; ; f; }
+/* */class S____feFoo___wBarYIf extends Mix__feFoo___wBarYIf { ; ; f; }
+/* */class S____feFoo__f extends Mix__feFoo__f { class I; ; f; }
+/* */class S____feFoo__fwBar___ extends Mix__feFoo__fwBar___ { class I; ; f; }
+/* */class S____feFoo__fwBar__f extends Mix__feFoo__fwBar__f { class I; ; f; }
+/* */class S____feFoo__fwBar_I_ extends Mix__feFoo__fwBar_I_ { ; ; f; }
+/* */class S____feFoo__fwBar_If extends Mix__feFoo__fwBar_If { ; ; f; }
+/* */class S____feFoo__fwBarY__ extends Mix__feFoo__fwBarY__ { class I; ; f; }
+/* */class S____feFoo__fwBarY_f extends Mix__feFoo__fwBarY_f { class I; ; f; }
+/* */class S____feFoo__fwBarYI_ extends Mix__feFoo__fwBarYI_ { ; ; f; }
+/* */class S____feFoo__fwBarYIf extends Mix__feFoo__fwBarYIf { ; ; f; }
+/* */class S____feFoo_I_ extends Mix__feFoo_I_ { ; ; f; }
+/* */class S____feFoo_I_wBar___ extends Mix__feFoo_I_wBar___ { ; ; f; }
+/* */class S____feFoo_I_wBar__f extends Mix__feFoo_I_wBar__f { ; ; f; }
+// */class S____feFoo_I_wBar_I_ extends Mix__feFoo_I_wBar_I_ { ; ; f; }
+// */class S____feFoo_I_wBar_If extends Mix__feFoo_I_wBar_If { ; ; f; }
+/* */class S____feFoo_I_wBarY__ extends Mix__feFoo_I_wBarY__ { ; ; f; }
+/* */class S____feFoo_I_wBarY_f extends Mix__feFoo_I_wBarY_f { ; ; f; }
+// */class S____feFoo_I_wBarYI_ extends Mix__feFoo_I_wBarYI_ { ; ; f; }
+// */class S____feFoo_I_wBarYIf extends Mix__feFoo_I_wBarYIf { ; ; f; }
+/* */class S____feFoo_If extends Mix__feFoo_If { ; ; f; }
+/* */class S____feFoo_IfwBar___ extends Mix__feFoo_IfwBar___ { ; ; f; }
+/* */class S____feFoo_IfwBar__f extends Mix__feFoo_IfwBar__f { ; ; f; }
+// */class S____feFoo_IfwBar_I_ extends Mix__feFoo_IfwBar_I_ { ; ; f; }
+// */class S____feFoo_IfwBar_If extends Mix__feFoo_IfwBar_If { ; ; f; }
+/* */class S____feFoo_IfwBarY__ extends Mix__feFoo_IfwBarY__ { ; ; f; }
+/* */class S____feFoo_IfwBarY_f extends Mix__feFoo_IfwBarY_f { ; ; f; }
+// */class S____feFoo_IfwBarYI_ extends Mix__feFoo_IfwBarYI_ { ; ; f; }
+// */class S____feFoo_IfwBarYIf extends Mix__feFoo_IfwBarYIf { ; ; f; }
+/* */class S____feFooX__ extends Mix__feFooX__ { class I; ; f; }
+/* */class S____feFooX__wBar___ extends Mix__feFooX__wBar___ { class I; ; f; }
+/* */class S____feFooX__wBar__f extends Mix__feFooX__wBar__f { class I; ; f; }
+/* */class S____feFooX__wBar_I_ extends Mix__feFooX__wBar_I_ { ; ; f; }
+/* */class S____feFooX__wBar_If extends Mix__feFooX__wBar_If { ; ; f; }
+/* */class S____feFooX__wBarY__ extends Mix__feFooX__wBarY__ { class I; ; f; }
+/* */class S____feFooX__wBarY_f extends Mix__feFooX__wBarY_f { class I; ; f; }
+/* */class S____feFooX__wBarYI_ extends Mix__feFooX__wBarYI_ { ; ; f; }
+/* */class S____feFooX__wBarYIf extends Mix__feFooX__wBarYIf { ; ; f; }
+/* */class S____feFooX_f extends Mix__feFooX_f { class I; ; f; }
+/* */class S____feFooX_fwBar___ extends Mix__feFooX_fwBar___ { class I; ; f; }
+/* */class S____feFooX_fwBar__f extends Mix__feFooX_fwBar__f { class I; ; f; }
+/* */class S____feFooX_fwBar_I_ extends Mix__feFooX_fwBar_I_ { ; ; f; }
+/* */class S____feFooX_fwBar_If extends Mix__feFooX_fwBar_If { ; ; f; }
+/* */class S____feFooX_fwBarY__ extends Mix__feFooX_fwBarY__ { class I; ; f; }
+/* */class S____feFooX_fwBarY_f extends Mix__feFooX_fwBarY_f { class I; ; f; }
+/* */class S____feFooX_fwBarYI_ extends Mix__feFooX_fwBarYI_ { ; ; f; }
+/* */class S____feFooX_fwBarYIf extends Mix__feFooX_fwBarYIf { ; ; f; }
+/* */class S____feFooXI_ extends Mix__feFooXI_ { ; ; f; }
+/* */class S____feFooXI_wBar___ extends Mix__feFooXI_wBar___ { ; ; f; }
+/* */class S____feFooXI_wBar__f extends Mix__feFooXI_wBar__f { ; ; f; }
+// */class S____feFooXI_wBar_I_ extends Mix__feFooXI_wBar_I_ { ; ; f; }
+// */class S____feFooXI_wBar_If extends Mix__feFooXI_wBar_If { ; ; f; }
+/* */class S____feFooXI_wBarY__ extends Mix__feFooXI_wBarY__ { ; ; f; }
+/* */class S____feFooXI_wBarY_f extends Mix__feFooXI_wBarY_f { ; ; f; }
+// */class S____feFooXI_wBarYI_ extends Mix__feFooXI_wBarYI_ { ; ; f; }
+// */class S____feFooXI_wBarYIf extends Mix__feFooXI_wBarYIf { ; ; f; }
+/* */class S____feFooXIf extends Mix__feFooXIf { ; ; f; }
+/* */class S____feFooXIfwBar___ extends Mix__feFooXIfwBar___ { ; ; f; }
+/* */class S____feFooXIfwBar__f extends Mix__feFooXIfwBar__f { ; ; f; }
+// */class S____feFooXIfwBar_I_ extends Mix__feFooXIfwBar_I_ { ; ; f; }
+// */class S____feFooXIfwBar_If extends Mix__feFooXIfwBar_If { ; ; f; }
+/* */class S____feFooXIfwBarY__ extends Mix__feFooXIfwBarY__ { ; ; f; }
+/* */class S____feFooXIfwBarY_f extends Mix__feFooXIfwBarY_f { ; ; f; }
+// */class S____feFooXIfwBarYI_ extends Mix__feFooXIfwBarYI_ { ; ; f; }
+// */class S____feFooXIfwBarYIf extends Mix__feFooXIfwBarYIf { ; ; f; }
+
+/* */class S___I_eFoo___ extends Mix_I_eFoo___ { ; def f: I = {sub; null}; f; }
+/* */class S___I_eFoo___wBar___ extends Mix_I_eFoo___wBar___ { ; def f: I = {sub; null}; f; }
+/* */class S___I_eFoo___wBar__f extends Mix_I_eFoo___wBar__f { ; ; f; }
+// */class S___I_eFoo___wBar_I_ extends Mix_I_eFoo___wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S___I_eFoo___wBar_If extends Mix_I_eFoo___wBar_If { ; ; f; }
+/* */class S___I_eFoo___wBarY__ extends Mix_I_eFoo___wBarY__ { ; def f: I = {sub; null}; f; }
+/* */class S___I_eFoo___wBarY_f extends Mix_I_eFoo___wBarY_f { ; ; f; }
+// */class S___I_eFoo___wBarYI_ extends Mix_I_eFoo___wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S___I_eFoo___wBarYIf extends Mix_I_eFoo___wBarYIf { ; ; f; }
+/* */class S___I_eFoo__f extends Mix_I_eFoo__f { ; ; f; }
+/* */class S___I_eFoo__fwBar___ extends Mix_I_eFoo__fwBar___ { ; ; f; }
+// */class S___I_eFoo__fwBar__f extends Mix_I_eFoo__fwBar__f { ; ; f; }
+// */class S___I_eFoo__fwBar_I_ extends Mix_I_eFoo__fwBar_I_ { ; ; f; }
+// */class S___I_eFoo__fwBar_If extends Mix_I_eFoo__fwBar_If { ; ; f; }
+/* */class S___I_eFoo__fwBarY__ extends Mix_I_eFoo__fwBarY__ { ; ; f; }
+// */class S___I_eFoo__fwBarY_f extends Mix_I_eFoo__fwBarY_f { ; ; f; }
+// */class S___I_eFoo__fwBarYI_ extends Mix_I_eFoo__fwBarYI_ { ; ; f; }
+// */class S___I_eFoo__fwBarYIf extends Mix_I_eFoo__fwBarYIf { ; ; f; }
+// */class S___I_eFoo_I_ extends Mix_I_eFoo_I_ { ; def f: I = {sub; null}; f; }
+// */class S___I_eFoo_I_wBar___ extends Mix_I_eFoo_I_wBar___ { ; def f: I = {sub; null}; f; }
+// */class S___I_eFoo_I_wBar__f extends Mix_I_eFoo_I_wBar__f { ; ; f; }
+// */class S___I_eFoo_I_wBar_I_ extends Mix_I_eFoo_I_wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S___I_eFoo_I_wBar_If extends Mix_I_eFoo_I_wBar_If { ; ; f; }
+// */class S___I_eFoo_I_wBarY__ extends Mix_I_eFoo_I_wBarY__ { ; def f: I = {sub; null}; f; }
+// */class S___I_eFoo_I_wBarY_f extends Mix_I_eFoo_I_wBarY_f { ; ; f; }
+// */class S___I_eFoo_I_wBarYI_ extends Mix_I_eFoo_I_wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S___I_eFoo_I_wBarYIf extends Mix_I_eFoo_I_wBarYIf { ; ; f; }
+// */class S___I_eFoo_If extends Mix_I_eFoo_If { ; ; f; }
+// */class S___I_eFoo_IfwBar___ extends Mix_I_eFoo_IfwBar___ { ; ; f; }
+// */class S___I_eFoo_IfwBar__f extends Mix_I_eFoo_IfwBar__f { ; ; f; }
+// */class S___I_eFoo_IfwBar_I_ extends Mix_I_eFoo_IfwBar_I_ { ; ; f; }
+// */class S___I_eFoo_IfwBar_If extends Mix_I_eFoo_IfwBar_If { ; ; f; }
+// */class S___I_eFoo_IfwBarY__ extends Mix_I_eFoo_IfwBarY__ { ; ; f; }
+// */class S___I_eFoo_IfwBarY_f extends Mix_I_eFoo_IfwBarY_f { ; ; f; }
+// */class S___I_eFoo_IfwBarYI_ extends Mix_I_eFoo_IfwBarYI_ { ; ; f; }
+// */class S___I_eFoo_IfwBarYIf extends Mix_I_eFoo_IfwBarYIf { ; ; f; }
+/* */class S___I_eFooX__ extends Mix_I_eFooX__ { ; def f: I = {sub; null}; f; }
+/* */class S___I_eFooX__wBar___ extends Mix_I_eFooX__wBar___ { ; def f: I = {sub; null}; f; }
+/* */class S___I_eFooX__wBar__f extends Mix_I_eFooX__wBar__f { ; ; f; }
+// */class S___I_eFooX__wBar_I_ extends Mix_I_eFooX__wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S___I_eFooX__wBar_If extends Mix_I_eFooX__wBar_If { ; ; f; }
+/* */class S___I_eFooX__wBarY__ extends Mix_I_eFooX__wBarY__ { ; def f: I = {sub; null}; f; }
+/* */class S___I_eFooX__wBarY_f extends Mix_I_eFooX__wBarY_f { ; ; f; }
+// */class S___I_eFooX__wBarYI_ extends Mix_I_eFooX__wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S___I_eFooX__wBarYIf extends Mix_I_eFooX__wBarYIf { ; ; f; }
+/* */class S___I_eFooX_f extends Mix_I_eFooX_f { ; ; f; }
+/* */class S___I_eFooX_fwBar___ extends Mix_I_eFooX_fwBar___ { ; ; f; }
+// */class S___I_eFooX_fwBar__f extends Mix_I_eFooX_fwBar__f { ; ; f; }
+// */class S___I_eFooX_fwBar_I_ extends Mix_I_eFooX_fwBar_I_ { ; ; f; }
+// */class S___I_eFooX_fwBar_If extends Mix_I_eFooX_fwBar_If { ; ; f; }
+/* */class S___I_eFooX_fwBarY__ extends Mix_I_eFooX_fwBarY__ { ; ; f; }
+// */class S___I_eFooX_fwBarY_f extends Mix_I_eFooX_fwBarY_f { ; ; f; }
+// */class S___I_eFooX_fwBarYI_ extends Mix_I_eFooX_fwBarYI_ { ; ; f; }
+// */class S___I_eFooX_fwBarYIf extends Mix_I_eFooX_fwBarYIf { ; ; f; }
+// */class S___I_eFooXI_ extends Mix_I_eFooXI_ { ; def f: I = {sub; null}; f; }
+// */class S___I_eFooXI_wBar___ extends Mix_I_eFooXI_wBar___ { ; def f: I = {sub; null}; f; }
+// */class S___I_eFooXI_wBar__f extends Mix_I_eFooXI_wBar__f { ; ; f; }
+// */class S___I_eFooXI_wBar_I_ extends Mix_I_eFooXI_wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S___I_eFooXI_wBar_If extends Mix_I_eFooXI_wBar_If { ; ; f; }
+// */class S___I_eFooXI_wBarY__ extends Mix_I_eFooXI_wBarY__ { ; def f: I = {sub; null}; f; }
+// */class S___I_eFooXI_wBarY_f extends Mix_I_eFooXI_wBarY_f { ; ; f; }
+// */class S___I_eFooXI_wBarYI_ extends Mix_I_eFooXI_wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S___I_eFooXI_wBarYIf extends Mix_I_eFooXI_wBarYIf { ; ; f; }
+// */class S___I_eFooXIf extends Mix_I_eFooXIf { ; ; f; }
+// */class S___I_eFooXIfwBar___ extends Mix_I_eFooXIfwBar___ { ; ; f; }
+// */class S___I_eFooXIfwBar__f extends Mix_I_eFooXIfwBar__f { ; ; f; }
+// */class S___I_eFooXIfwBar_I_ extends Mix_I_eFooXIfwBar_I_ { ; ; f; }
+// */class S___I_eFooXIfwBar_If extends Mix_I_eFooXIfwBar_If { ; ; f; }
+// */class S___I_eFooXIfwBarY__ extends Mix_I_eFooXIfwBarY__ { ; ; f; }
+// */class S___I_eFooXIfwBarY_f extends Mix_I_eFooXIfwBarY_f { ; ; f; }
+// */class S___I_eFooXIfwBarYI_ extends Mix_I_eFooXIfwBarYI_ { ; ; f; }
+// */class S___I_eFooXIfwBarYIf extends Mix_I_eFooXIfwBarYIf { ; ; f; }
+
+/* */class S___IfeFoo___ extends Mix_IfeFoo___ { ; ; f; }
+/* */class S___IfeFoo___wBar___ extends Mix_IfeFoo___wBar___ { ; ; f; }
+/* */class S___IfeFoo___wBar__f extends Mix_IfeFoo___wBar__f { ; ; f; }
+// */class S___IfeFoo___wBar_I_ extends Mix_IfeFoo___wBar_I_ { ; ; f; }
+// */class S___IfeFoo___wBar_If extends Mix_IfeFoo___wBar_If { ; ; f; }
+/* */class S___IfeFoo___wBarY__ extends Mix_IfeFoo___wBarY__ { ; ; f; }
+/* */class S___IfeFoo___wBarY_f extends Mix_IfeFoo___wBarY_f { ; ; f; }
+// */class S___IfeFoo___wBarYI_ extends Mix_IfeFoo___wBarYI_ { ; ; f; }
+// */class S___IfeFoo___wBarYIf extends Mix_IfeFoo___wBarYIf { ; ; f; }
+/* */class S___IfeFoo__f extends Mix_IfeFoo__f { ; ; f; }
+/* */class S___IfeFoo__fwBar___ extends Mix_IfeFoo__fwBar___ { ; ; f; }
+/* */class S___IfeFoo__fwBar__f extends Mix_IfeFoo__fwBar__f { ; ; f; }
+// */class S___IfeFoo__fwBar_I_ extends Mix_IfeFoo__fwBar_I_ { ; ; f; }
+// */class S___IfeFoo__fwBar_If extends Mix_IfeFoo__fwBar_If { ; ; f; }
+/* */class S___IfeFoo__fwBarY__ extends Mix_IfeFoo__fwBarY__ { ; ; f; }
+/* */class S___IfeFoo__fwBarY_f extends Mix_IfeFoo__fwBarY_f { ; ; f; }
+// */class S___IfeFoo__fwBarYI_ extends Mix_IfeFoo__fwBarYI_ { ; ; f; }
+// */class S___IfeFoo__fwBarYIf extends Mix_IfeFoo__fwBarYIf { ; ; f; }
+// */class S___IfeFoo_I_ extends Mix_IfeFoo_I_ { ; ; f; }
+// */class S___IfeFoo_I_wBar___ extends Mix_IfeFoo_I_wBar___ { ; ; f; }
+// */class S___IfeFoo_I_wBar__f extends Mix_IfeFoo_I_wBar__f { ; ; f; }
+// */class S___IfeFoo_I_wBar_I_ extends Mix_IfeFoo_I_wBar_I_ { ; ; f; }
+// */class S___IfeFoo_I_wBar_If extends Mix_IfeFoo_I_wBar_If { ; ; f; }
+// */class S___IfeFoo_I_wBarY__ extends Mix_IfeFoo_I_wBarY__ { ; ; f; }
+// */class S___IfeFoo_I_wBarY_f extends Mix_IfeFoo_I_wBarY_f { ; ; f; }
+// */class S___IfeFoo_I_wBarYI_ extends Mix_IfeFoo_I_wBarYI_ { ; ; f; }
+// */class S___IfeFoo_I_wBarYIf extends Mix_IfeFoo_I_wBarYIf { ; ; f; }
+// */class S___IfeFoo_If extends Mix_IfeFoo_If { ; ; f; }
+// */class S___IfeFoo_IfwBar___ extends Mix_IfeFoo_IfwBar___ { ; ; f; }
+// */class S___IfeFoo_IfwBar__f extends Mix_IfeFoo_IfwBar__f { ; ; f; }
+// */class S___IfeFoo_IfwBar_I_ extends Mix_IfeFoo_IfwBar_I_ { ; ; f; }
+// */class S___IfeFoo_IfwBar_If extends Mix_IfeFoo_IfwBar_If { ; ; f; }
+// */class S___IfeFoo_IfwBarY__ extends Mix_IfeFoo_IfwBarY__ { ; ; f; }
+// */class S___IfeFoo_IfwBarY_f extends Mix_IfeFoo_IfwBarY_f { ; ; f; }
+// */class S___IfeFoo_IfwBarYI_ extends Mix_IfeFoo_IfwBarYI_ { ; ; f; }
+// */class S___IfeFoo_IfwBarYIf extends Mix_IfeFoo_IfwBarYIf { ; ; f; }
+/* */class S___IfeFooX__ extends Mix_IfeFooX__ { ; ; f; }
+/* */class S___IfeFooX__wBar___ extends Mix_IfeFooX__wBar___ { ; ; f; }
+/* */class S___IfeFooX__wBar__f extends Mix_IfeFooX__wBar__f { ; ; f; }
+// */class S___IfeFooX__wBar_I_ extends Mix_IfeFooX__wBar_I_ { ; ; f; }
+// */class S___IfeFooX__wBar_If extends Mix_IfeFooX__wBar_If { ; ; f; }
+/* */class S___IfeFooX__wBarY__ extends Mix_IfeFooX__wBarY__ { ; ; f; }
+/* */class S___IfeFooX__wBarY_f extends Mix_IfeFooX__wBarY_f { ; ; f; }
+// */class S___IfeFooX__wBarYI_ extends Mix_IfeFooX__wBarYI_ { ; ; f; }
+// */class S___IfeFooX__wBarYIf extends Mix_IfeFooX__wBarYIf { ; ; f; }
+/* */class S___IfeFooX_f extends Mix_IfeFooX_f { ; ; f; }
+/* */class S___IfeFooX_fwBar___ extends Mix_IfeFooX_fwBar___ { ; ; f; }
+/* */class S___IfeFooX_fwBar__f extends Mix_IfeFooX_fwBar__f { ; ; f; }
+// */class S___IfeFooX_fwBar_I_ extends Mix_IfeFooX_fwBar_I_ { ; ; f; }
+// */class S___IfeFooX_fwBar_If extends Mix_IfeFooX_fwBar_If { ; ; f; }
+/* */class S___IfeFooX_fwBarY__ extends Mix_IfeFooX_fwBarY__ { ; ; f; }
+/* */class S___IfeFooX_fwBarY_f extends Mix_IfeFooX_fwBarY_f { ; ; f; }
+// */class S___IfeFooX_fwBarYI_ extends Mix_IfeFooX_fwBarYI_ { ; ; f; }
+// */class S___IfeFooX_fwBarYIf extends Mix_IfeFooX_fwBarYIf { ; ; f; }
+// */class S___IfeFooXI_ extends Mix_IfeFooXI_ { ; ; f; }
+// */class S___IfeFooXI_wBar___ extends Mix_IfeFooXI_wBar___ { ; ; f; }
+// */class S___IfeFooXI_wBar__f extends Mix_IfeFooXI_wBar__f { ; ; f; }
+// */class S___IfeFooXI_wBar_I_ extends Mix_IfeFooXI_wBar_I_ { ; ; f; }
+// */class S___IfeFooXI_wBar_If extends Mix_IfeFooXI_wBar_If { ; ; f; }
+// */class S___IfeFooXI_wBarY__ extends Mix_IfeFooXI_wBarY__ { ; ; f; }
+// */class S___IfeFooXI_wBarY_f extends Mix_IfeFooXI_wBarY_f { ; ; f; }
+// */class S___IfeFooXI_wBarYI_ extends Mix_IfeFooXI_wBarYI_ { ; ; f; }
+// */class S___IfeFooXI_wBarYIf extends Mix_IfeFooXI_wBarYIf { ; ; f; }
+// */class S___IfeFooXIf extends Mix_IfeFooXIf { ; ; f; }
+// */class S___IfeFooXIfwBar___ extends Mix_IfeFooXIfwBar___ { ; ; f; }
+// */class S___IfeFooXIfwBar__f extends Mix_IfeFooXIfwBar__f { ; ; f; }
+// */class S___IfeFooXIfwBar_I_ extends Mix_IfeFooXIfwBar_I_ { ; ; f; }
+// */class S___IfeFooXIfwBar_If extends Mix_IfeFooXIfwBar_If { ; ; f; }
+// */class S___IfeFooXIfwBarY__ extends Mix_IfeFooXIfwBarY__ { ; ; f; }
+// */class S___IfeFooXIfwBarY_f extends Mix_IfeFooXIfwBarY_f { ; ; f; }
+// */class S___IfeFooXIfwBarYI_ extends Mix_IfeFooXIfwBarYI_ { ; ; f; }
+// */class S___IfeFooXIfwBarYIf extends Mix_IfeFooXIfwBarYIf { ; ; f; }
+
+/* */class S__Z__eFoo___ extends MixZ__eFoo___ [C] { class I; def f: I = {sub; null}; f; }
+/* */class S__Z__eFoo___wBar___ extends MixZ__eFoo___wBar___[C] { class I; def f: I = {sub; null}; f; }
+/* */class S__Z__eFoo___wBar__f extends MixZ__eFoo___wBar__f[C] { class I; ; f; }
+/* */class S__Z__eFoo___wBar_I_ extends MixZ__eFoo___wBar_I_[C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__eFoo___wBar_If extends MixZ__eFoo___wBar_If[C] { ; ; f; }
+/* */class S__Z__eFoo___wBarY__ extends MixZ__eFoo___wBarY__[C] { class I; def f: I = {sub; null}; f; }
+/* */class S__Z__eFoo___wBarY_f extends MixZ__eFoo___wBarY_f[C] { class I; ; f; }
+/* */class S__Z__eFoo___wBarYI_ extends MixZ__eFoo___wBarYI_[C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__eFoo___wBarYIf extends MixZ__eFoo___wBarYIf[C] { ; ; f; }
+/* */class S__Z__eFoo__f extends MixZ__eFoo__f [C] { class I; ; f; }
+/* */class S__Z__eFoo__fwBar___ extends MixZ__eFoo__fwBar___[C] { class I; ; f; }
+// */class S__Z__eFoo__fwBar__f extends MixZ__eFoo__fwBar__f[C] { class I; ; f; }
+/* */class S__Z__eFoo__fwBar_I_ extends MixZ__eFoo__fwBar_I_[C] { ; ; f; }
+// */class S__Z__eFoo__fwBar_If extends MixZ__eFoo__fwBar_If[C] { ; ; f; }
+/* */class S__Z__eFoo__fwBarY__ extends MixZ__eFoo__fwBarY__[C] { class I; ; f; }
+// */class S__Z__eFoo__fwBarY_f extends MixZ__eFoo__fwBarY_f[C] { class I; ; f; }
+/* */class S__Z__eFoo__fwBarYI_ extends MixZ__eFoo__fwBarYI_[C] { ; ; f; }
+// */class S__Z__eFoo__fwBarYIf extends MixZ__eFoo__fwBarYIf[C] { ; ; f; }
+/* */class S__Z__eFoo_I_ extends MixZ__eFoo_I_ [C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__eFoo_I_wBar___ extends MixZ__eFoo_I_wBar___[C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__eFoo_I_wBar__f extends MixZ__eFoo_I_wBar__f[C] { ; ; f; }
+// */class S__Z__eFoo_I_wBar_I_ extends MixZ__eFoo_I_wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S__Z__eFoo_I_wBar_If extends MixZ__eFoo_I_wBar_If[C] { ; ; f; }
+/* */class S__Z__eFoo_I_wBarY__ extends MixZ__eFoo_I_wBarY__[C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__eFoo_I_wBarY_f extends MixZ__eFoo_I_wBarY_f[C] { ; ; f; }
+// */class S__Z__eFoo_I_wBarYI_ extends MixZ__eFoo_I_wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S__Z__eFoo_I_wBarYIf extends MixZ__eFoo_I_wBarYIf[C] { ; ; f; }
+/* */class S__Z__eFoo_If extends MixZ__eFoo_If [C] { ; ; f; }
+/* */class S__Z__eFoo_IfwBar___ extends MixZ__eFoo_IfwBar___[C] { ; ; f; }
+// */class S__Z__eFoo_IfwBar__f extends MixZ__eFoo_IfwBar__f[C] { ; ; f; }
+// */class S__Z__eFoo_IfwBar_I_ extends MixZ__eFoo_IfwBar_I_[C] { ; ; f; }
+// */class S__Z__eFoo_IfwBar_If extends MixZ__eFoo_IfwBar_If[C] { ; ; f; }
+/* */class S__Z__eFoo_IfwBarY__ extends MixZ__eFoo_IfwBarY__[C] { ; ; f; }
+// */class S__Z__eFoo_IfwBarY_f extends MixZ__eFoo_IfwBarY_f[C] { ; ; f; }
+// */class S__Z__eFoo_IfwBarYI_ extends MixZ__eFoo_IfwBarYI_[C] { ; ; f; }
+// */class S__Z__eFoo_IfwBarYIf extends MixZ__eFoo_IfwBarYIf[C] { ; ; f; }
+/* */class S__Z__eFooX__ extends MixZ__eFooX__ [C] { class I; def f: I = {sub; null}; f; }
+/* */class S__Z__eFooX__wBar___ extends MixZ__eFooX__wBar___[C] { class I; def f: I = {sub; null}; f; }
+/* */class S__Z__eFooX__wBar__f extends MixZ__eFooX__wBar__f[C] { class I; ; f; }
+/* */class S__Z__eFooX__wBar_I_ extends MixZ__eFooX__wBar_I_[C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__eFooX__wBar_If extends MixZ__eFooX__wBar_If[C] { ; ; f; }
+/* */class S__Z__eFooX__wBarY__ extends MixZ__eFooX__wBarY__[C] { class I; def f: I = {sub; null}; f; }
+/* */class S__Z__eFooX__wBarY_f extends MixZ__eFooX__wBarY_f[C] { class I; ; f; }
+/* */class S__Z__eFooX__wBarYI_ extends MixZ__eFooX__wBarYI_[C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__eFooX__wBarYIf extends MixZ__eFooX__wBarYIf[C] { ; ; f; }
+/* */class S__Z__eFooX_f extends MixZ__eFooX_f [C] { class I; ; f; }
+/* */class S__Z__eFooX_fwBar___ extends MixZ__eFooX_fwBar___[C] { class I; ; f; }
+// */class S__Z__eFooX_fwBar__f extends MixZ__eFooX_fwBar__f[C] { class I; ; f; }
+/* */class S__Z__eFooX_fwBar_I_ extends MixZ__eFooX_fwBar_I_[C] { ; ; f; }
+// */class S__Z__eFooX_fwBar_If extends MixZ__eFooX_fwBar_If[C] { ; ; f; }
+/* */class S__Z__eFooX_fwBarY__ extends MixZ__eFooX_fwBarY__[C] { class I; ; f; }
+// */class S__Z__eFooX_fwBarY_f extends MixZ__eFooX_fwBarY_f[C] { class I; ; f; }
+/* */class S__Z__eFooX_fwBarYI_ extends MixZ__eFooX_fwBarYI_[C] { ; ; f; }
+// */class S__Z__eFooX_fwBarYIf extends MixZ__eFooX_fwBarYIf[C] { ; ; f; }
+/* */class S__Z__eFooXI_ extends MixZ__eFooXI_ [C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__eFooXI_wBar___ extends MixZ__eFooXI_wBar___[C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__eFooXI_wBar__f extends MixZ__eFooXI_wBar__f[C] { ; ; f; }
+// */class S__Z__eFooXI_wBar_I_ extends MixZ__eFooXI_wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S__Z__eFooXI_wBar_If extends MixZ__eFooXI_wBar_If[C] { ; ; f; }
+/* */class S__Z__eFooXI_wBarY__ extends MixZ__eFooXI_wBarY__[C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__eFooXI_wBarY_f extends MixZ__eFooXI_wBarY_f[C] { ; ; f; }
+// */class S__Z__eFooXI_wBarYI_ extends MixZ__eFooXI_wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S__Z__eFooXI_wBarYIf extends MixZ__eFooXI_wBarYIf[C] { ; ; f; }
+/* */class S__Z__eFooXIf extends MixZ__eFooXIf [C] { ; ; f; }
+/* */class S__Z__eFooXIfwBar___ extends MixZ__eFooXIfwBar___[C] { ; ; f; }
+// */class S__Z__eFooXIfwBar__f extends MixZ__eFooXIfwBar__f[C] { ; ; f; }
+// */class S__Z__eFooXIfwBar_I_ extends MixZ__eFooXIfwBar_I_[C] { ; ; f; }
+// */class S__Z__eFooXIfwBar_If extends MixZ__eFooXIfwBar_If[C] { ; ; f; }
+/* */class S__Z__eFooXIfwBarY__ extends MixZ__eFooXIfwBarY__[C] { ; ; f; }
+// */class S__Z__eFooXIfwBarY_f extends MixZ__eFooXIfwBarY_f[C] { ; ; f; }
+// */class S__Z__eFooXIfwBarYI_ extends MixZ__eFooXIfwBarYI_[C] { ; ; f; }
+// */class S__Z__eFooXIfwBarYIf extends MixZ__eFooXIfwBarYIf[C] { ; ; f; }
+
+/* */class S__Z_feFoo___ extends MixZ_feFoo___ [C] { class I; ; f; }
+/* */class S__Z_feFoo___wBar___ extends MixZ_feFoo___wBar___[C] { class I; ; f; }
+/* */class S__Z_feFoo___wBar__f extends MixZ_feFoo___wBar__f[C] { class I; ; f; }
+/* */class S__Z_feFoo___wBar_I_ extends MixZ_feFoo___wBar_I_[C] { ; ; f; }
+/* */class S__Z_feFoo___wBar_If extends MixZ_feFoo___wBar_If[C] { ; ; f; }
+/* */class S__Z_feFoo___wBarY__ extends MixZ_feFoo___wBarY__[C] { class I; ; f; }
+/* */class S__Z_feFoo___wBarY_f extends MixZ_feFoo___wBarY_f[C] { class I; ; f; }
+/* */class S__Z_feFoo___wBarYI_ extends MixZ_feFoo___wBarYI_[C] { ; ; f; }
+/* */class S__Z_feFoo___wBarYIf extends MixZ_feFoo___wBarYIf[C] { ; ; f; }
+/* */class S__Z_feFoo__f extends MixZ_feFoo__f [C] { class I; ; f; }
+/* */class S__Z_feFoo__fwBar___ extends MixZ_feFoo__fwBar___[C] { class I; ; f; }
+/* */class S__Z_feFoo__fwBar__f extends MixZ_feFoo__fwBar__f[C] { class I; ; f; }
+/* */class S__Z_feFoo__fwBar_I_ extends MixZ_feFoo__fwBar_I_[C] { ; ; f; }
+/* */class S__Z_feFoo__fwBar_If extends MixZ_feFoo__fwBar_If[C] { ; ; f; }
+/* */class S__Z_feFoo__fwBarY__ extends MixZ_feFoo__fwBarY__[C] { class I; ; f; }
+/* */class S__Z_feFoo__fwBarY_f extends MixZ_feFoo__fwBarY_f[C] { class I; ; f; }
+/* */class S__Z_feFoo__fwBarYI_ extends MixZ_feFoo__fwBarYI_[C] { ; ; f; }
+/* */class S__Z_feFoo__fwBarYIf extends MixZ_feFoo__fwBarYIf[C] { ; ; f; }
+/* */class S__Z_feFoo_I_ extends MixZ_feFoo_I_ [C] { ; ; f; }
+/* */class S__Z_feFoo_I_wBar___ extends MixZ_feFoo_I_wBar___[C] { ; ; f; }
+/* */class S__Z_feFoo_I_wBar__f extends MixZ_feFoo_I_wBar__f[C] { ; ; f; }
+// */class S__Z_feFoo_I_wBar_I_ extends MixZ_feFoo_I_wBar_I_[C] { ; ; f; }
+// */class S__Z_feFoo_I_wBar_If extends MixZ_feFoo_I_wBar_If[C] { ; ; f; }
+/* */class S__Z_feFoo_I_wBarY__ extends MixZ_feFoo_I_wBarY__[C] { ; ; f; }
+/* */class S__Z_feFoo_I_wBarY_f extends MixZ_feFoo_I_wBarY_f[C] { ; ; f; }
+// */class S__Z_feFoo_I_wBarYI_ extends MixZ_feFoo_I_wBarYI_[C] { ; ; f; }
+// */class S__Z_feFoo_I_wBarYIf extends MixZ_feFoo_I_wBarYIf[C] { ; ; f; }
+/* */class S__Z_feFoo_If extends MixZ_feFoo_If [C] { ; ; f; }
+/* */class S__Z_feFoo_IfwBar___ extends MixZ_feFoo_IfwBar___[C] { ; ; f; }
+/* */class S__Z_feFoo_IfwBar__f extends MixZ_feFoo_IfwBar__f[C] { ; ; f; }
+// */class S__Z_feFoo_IfwBar_I_ extends MixZ_feFoo_IfwBar_I_[C] { ; ; f; }
+// */class S__Z_feFoo_IfwBar_If extends MixZ_feFoo_IfwBar_If[C] { ; ; f; }
+/* */class S__Z_feFoo_IfwBarY__ extends MixZ_feFoo_IfwBarY__[C] { ; ; f; }
+/* */class S__Z_feFoo_IfwBarY_f extends MixZ_feFoo_IfwBarY_f[C] { ; ; f; }
+// */class S__Z_feFoo_IfwBarYI_ extends MixZ_feFoo_IfwBarYI_[C] { ; ; f; }
+// */class S__Z_feFoo_IfwBarYIf extends MixZ_feFoo_IfwBarYIf[C] { ; ; f; }
+/* */class S__Z_feFooX__ extends MixZ_feFooX__ [C] { class I; ; f; }
+/* */class S__Z_feFooX__wBar___ extends MixZ_feFooX__wBar___[C] { class I; ; f; }
+/* */class S__Z_feFooX__wBar__f extends MixZ_feFooX__wBar__f[C] { class I; ; f; }
+/* */class S__Z_feFooX__wBar_I_ extends MixZ_feFooX__wBar_I_[C] { ; ; f; }
+/* */class S__Z_feFooX__wBar_If extends MixZ_feFooX__wBar_If[C] { ; ; f; }
+/* */class S__Z_feFooX__wBarY__ extends MixZ_feFooX__wBarY__[C] { class I; ; f; }
+/* */class S__Z_feFooX__wBarY_f extends MixZ_feFooX__wBarY_f[C] { class I; ; f; }
+/* */class S__Z_feFooX__wBarYI_ extends MixZ_feFooX__wBarYI_[C] { ; ; f; }
+/* */class S__Z_feFooX__wBarYIf extends MixZ_feFooX__wBarYIf[C] { ; ; f; }
+/* */class S__Z_feFooX_f extends MixZ_feFooX_f [C] { class I; ; f; }
+/* */class S__Z_feFooX_fwBar___ extends MixZ_feFooX_fwBar___[C] { class I; ; f; }
+/* */class S__Z_feFooX_fwBar__f extends MixZ_feFooX_fwBar__f[C] { class I; ; f; }
+/* */class S__Z_feFooX_fwBar_I_ extends MixZ_feFooX_fwBar_I_[C] { ; ; f; }
+/* */class S__Z_feFooX_fwBar_If extends MixZ_feFooX_fwBar_If[C] { ; ; f; }
+/* */class S__Z_feFooX_fwBarY__ extends MixZ_feFooX_fwBarY__[C] { class I; ; f; }
+/* */class S__Z_feFooX_fwBarY_f extends MixZ_feFooX_fwBarY_f[C] { class I; ; f; }
+/* */class S__Z_feFooX_fwBarYI_ extends MixZ_feFooX_fwBarYI_[C] { ; ; f; }
+/* */class S__Z_feFooX_fwBarYIf extends MixZ_feFooX_fwBarYIf[C] { ; ; f; }
+/* */class S__Z_feFooXI_ extends MixZ_feFooXI_ [C] { ; ; f; }
+/* */class S__Z_feFooXI_wBar___ extends MixZ_feFooXI_wBar___[C] { ; ; f; }
+/* */class S__Z_feFooXI_wBar__f extends MixZ_feFooXI_wBar__f[C] { ; ; f; }
+// */class S__Z_feFooXI_wBar_I_ extends MixZ_feFooXI_wBar_I_[C] { ; ; f; }
+// */class S__Z_feFooXI_wBar_If extends MixZ_feFooXI_wBar_If[C] { ; ; f; }
+/* */class S__Z_feFooXI_wBarY__ extends MixZ_feFooXI_wBarY__[C] { ; ; f; }
+/* */class S__Z_feFooXI_wBarY_f extends MixZ_feFooXI_wBarY_f[C] { ; ; f; }
+// */class S__Z_feFooXI_wBarYI_ extends MixZ_feFooXI_wBarYI_[C] { ; ; f; }
+// */class S__Z_feFooXI_wBarYIf extends MixZ_feFooXI_wBarYIf[C] { ; ; f; }
+/* */class S__Z_feFooXIf extends MixZ_feFooXIf [C] { ; ; f; }
+/* */class S__Z_feFooXIfwBar___ extends MixZ_feFooXIfwBar___[C] { ; ; f; }
+/* */class S__Z_feFooXIfwBar__f extends MixZ_feFooXIfwBar__f[C] { ; ; f; }
+// */class S__Z_feFooXIfwBar_I_ extends MixZ_feFooXIfwBar_I_[C] { ; ; f; }
+// */class S__Z_feFooXIfwBar_If extends MixZ_feFooXIfwBar_If[C] { ; ; f; }
+/* */class S__Z_feFooXIfwBarY__ extends MixZ_feFooXIfwBarY__[C] { ; ; f; }
+/* */class S__Z_feFooXIfwBarY_f extends MixZ_feFooXIfwBarY_f[C] { ; ; f; }
+// */class S__Z_feFooXIfwBarYI_ extends MixZ_feFooXIfwBarYI_[C] { ; ; f; }
+// */class S__Z_feFooXIfwBarYIf extends MixZ_feFooXIfwBarYIf[C] { ; ; f; }
+
+/* */class S__ZI_eFoo___ extends MixZI_eFoo___ [C] { ; def f: I = {sub; null}; f; }
+/* */class S__ZI_eFoo___wBar___ extends MixZI_eFoo___wBar___[C] { ; def f: I = {sub; null}; f; }
+/* */class S__ZI_eFoo___wBar__f extends MixZI_eFoo___wBar__f[C] { ; ; f; }
+// */class S__ZI_eFoo___wBar_I_ extends MixZI_eFoo___wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_eFoo___wBar_If extends MixZI_eFoo___wBar_If[C] { ; ; f; }
+/* */class S__ZI_eFoo___wBarY__ extends MixZI_eFoo___wBarY__[C] { ; def f: I = {sub; null}; f; }
+/* */class S__ZI_eFoo___wBarY_f extends MixZI_eFoo___wBarY_f[C] { ; ; f; }
+// */class S__ZI_eFoo___wBarYI_ extends MixZI_eFoo___wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_eFoo___wBarYIf extends MixZI_eFoo___wBarYIf[C] { ; ; f; }
+/* */class S__ZI_eFoo__f extends MixZI_eFoo__f [C] { ; ; f; }
+/* */class S__ZI_eFoo__fwBar___ extends MixZI_eFoo__fwBar___[C] { ; ; f; }
+// */class S__ZI_eFoo__fwBar__f extends MixZI_eFoo__fwBar__f[C] { ; ; f; }
+// */class S__ZI_eFoo__fwBar_I_ extends MixZI_eFoo__fwBar_I_[C] { ; ; f; }
+// */class S__ZI_eFoo__fwBar_If extends MixZI_eFoo__fwBar_If[C] { ; ; f; }
+/* */class S__ZI_eFoo__fwBarY__ extends MixZI_eFoo__fwBarY__[C] { ; ; f; }
+// */class S__ZI_eFoo__fwBarY_f extends MixZI_eFoo__fwBarY_f[C] { ; ; f; }
+// */class S__ZI_eFoo__fwBarYI_ extends MixZI_eFoo__fwBarYI_[C] { ; ; f; }
+// */class S__ZI_eFoo__fwBarYIf extends MixZI_eFoo__fwBarYIf[C] { ; ; f; }
+// */class S__ZI_eFoo_I_ extends MixZI_eFoo_I_ [C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_eFoo_I_wBar___ extends MixZI_eFoo_I_wBar___[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_eFoo_I_wBar__f extends MixZI_eFoo_I_wBar__f[C] { ; ; f; }
+// */class S__ZI_eFoo_I_wBar_I_ extends MixZI_eFoo_I_wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_eFoo_I_wBar_If extends MixZI_eFoo_I_wBar_If[C] { ; ; f; }
+// */class S__ZI_eFoo_I_wBarY__ extends MixZI_eFoo_I_wBarY__[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_eFoo_I_wBarY_f extends MixZI_eFoo_I_wBarY_f[C] { ; ; f; }
+// */class S__ZI_eFoo_I_wBarYI_ extends MixZI_eFoo_I_wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_eFoo_I_wBarYIf extends MixZI_eFoo_I_wBarYIf[C] { ; ; f; }
+// */class S__ZI_eFoo_If extends MixZI_eFoo_If [C] { ; ; f; }
+// */class S__ZI_eFoo_IfwBar___ extends MixZI_eFoo_IfwBar___[C] { ; ; f; }
+// */class S__ZI_eFoo_IfwBar__f extends MixZI_eFoo_IfwBar__f[C] { ; ; f; }
+// */class S__ZI_eFoo_IfwBar_I_ extends MixZI_eFoo_IfwBar_I_[C] { ; ; f; }
+// */class S__ZI_eFoo_IfwBar_If extends MixZI_eFoo_IfwBar_If[C] { ; ; f; }
+// */class S__ZI_eFoo_IfwBarY__ extends MixZI_eFoo_IfwBarY__[C] { ; ; f; }
+// */class S__ZI_eFoo_IfwBarY_f extends MixZI_eFoo_IfwBarY_f[C] { ; ; f; }
+// */class S__ZI_eFoo_IfwBarYI_ extends MixZI_eFoo_IfwBarYI_[C] { ; ; f; }
+// */class S__ZI_eFoo_IfwBarYIf extends MixZI_eFoo_IfwBarYIf[C] { ; ; f; }
+/* */class S__ZI_eFooX__ extends MixZI_eFooX__ [C] { ; def f: I = {sub; null}; f; }
+/* */class S__ZI_eFooX__wBar___ extends MixZI_eFooX__wBar___[C] { ; def f: I = {sub; null}; f; }
+/* */class S__ZI_eFooX__wBar__f extends MixZI_eFooX__wBar__f[C] { ; ; f; }
+// */class S__ZI_eFooX__wBar_I_ extends MixZI_eFooX__wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_eFooX__wBar_If extends MixZI_eFooX__wBar_If[C] { ; ; f; }
+/* */class S__ZI_eFooX__wBarY__ extends MixZI_eFooX__wBarY__[C] { ; def f: I = {sub; null}; f; }
+/* */class S__ZI_eFooX__wBarY_f extends MixZI_eFooX__wBarY_f[C] { ; ; f; }
+// */class S__ZI_eFooX__wBarYI_ extends MixZI_eFooX__wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_eFooX__wBarYIf extends MixZI_eFooX__wBarYIf[C] { ; ; f; }
+/* */class S__ZI_eFooX_f extends MixZI_eFooX_f [C] { ; ; f; }
+/* */class S__ZI_eFooX_fwBar___ extends MixZI_eFooX_fwBar___[C] { ; ; f; }
+// */class S__ZI_eFooX_fwBar__f extends MixZI_eFooX_fwBar__f[C] { ; ; f; }
+// */class S__ZI_eFooX_fwBar_I_ extends MixZI_eFooX_fwBar_I_[C] { ; ; f; }
+// */class S__ZI_eFooX_fwBar_If extends MixZI_eFooX_fwBar_If[C] { ; ; f; }
+/* */class S__ZI_eFooX_fwBarY__ extends MixZI_eFooX_fwBarY__[C] { ; ; f; }
+// */class S__ZI_eFooX_fwBarY_f extends MixZI_eFooX_fwBarY_f[C] { ; ; f; }
+// */class S__ZI_eFooX_fwBarYI_ extends MixZI_eFooX_fwBarYI_[C] { ; ; f; }
+// */class S__ZI_eFooX_fwBarYIf extends MixZI_eFooX_fwBarYIf[C] { ; ; f; }
+// */class S__ZI_eFooXI_ extends MixZI_eFooXI_ [C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_eFooXI_wBar___ extends MixZI_eFooXI_wBar___[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_eFooXI_wBar__f extends MixZI_eFooXI_wBar__f[C] { ; ; f; }
+// */class S__ZI_eFooXI_wBar_I_ extends MixZI_eFooXI_wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_eFooXI_wBar_If extends MixZI_eFooXI_wBar_If[C] { ; ; f; }
+// */class S__ZI_eFooXI_wBarY__ extends MixZI_eFooXI_wBarY__[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_eFooXI_wBarY_f extends MixZI_eFooXI_wBarY_f[C] { ; ; f; }
+// */class S__ZI_eFooXI_wBarYI_ extends MixZI_eFooXI_wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_eFooXI_wBarYIf extends MixZI_eFooXI_wBarYIf[C] { ; ; f; }
+// */class S__ZI_eFooXIf extends MixZI_eFooXIf [C] { ; ; f; }
+// */class S__ZI_eFooXIfwBar___ extends MixZI_eFooXIfwBar___[C] { ; ; f; }
+// */class S__ZI_eFooXIfwBar__f extends MixZI_eFooXIfwBar__f[C] { ; ; f; }
+// */class S__ZI_eFooXIfwBar_I_ extends MixZI_eFooXIfwBar_I_[C] { ; ; f; }
+// */class S__ZI_eFooXIfwBar_If extends MixZI_eFooXIfwBar_If[C] { ; ; f; }
+// */class S__ZI_eFooXIfwBarY__ extends MixZI_eFooXIfwBarY__[C] { ; ; f; }
+// */class S__ZI_eFooXIfwBarY_f extends MixZI_eFooXIfwBarY_f[C] { ; ; f; }
+// */class S__ZI_eFooXIfwBarYI_ extends MixZI_eFooXIfwBarYI_[C] { ; ; f; }
+// */class S__ZI_eFooXIfwBarYIf extends MixZI_eFooXIfwBarYIf[C] { ; ; f; }
+
+/* */class S__ZIfeFoo___ extends MixZIfeFoo___ [C] { ; ; f; }
+/* */class S__ZIfeFoo___wBar___ extends MixZIfeFoo___wBar___[C] { ; ; f; }
+/* */class S__ZIfeFoo___wBar__f extends MixZIfeFoo___wBar__f[C] { ; ; f; }
+// */class S__ZIfeFoo___wBar_I_ extends MixZIfeFoo___wBar_I_[C] { ; ; f; }
+// */class S__ZIfeFoo___wBar_If extends MixZIfeFoo___wBar_If[C] { ; ; f; }
+/* */class S__ZIfeFoo___wBarY__ extends MixZIfeFoo___wBarY__[C] { ; ; f; }
+/* */class S__ZIfeFoo___wBarY_f extends MixZIfeFoo___wBarY_f[C] { ; ; f; }
+// */class S__ZIfeFoo___wBarYI_ extends MixZIfeFoo___wBarYI_[C] { ; ; f; }
+// */class S__ZIfeFoo___wBarYIf extends MixZIfeFoo___wBarYIf[C] { ; ; f; }
+/* */class S__ZIfeFoo__f extends MixZIfeFoo__f [C] { ; ; f; }
+/* */class S__ZIfeFoo__fwBar___ extends MixZIfeFoo__fwBar___[C] { ; ; f; }
+/* */class S__ZIfeFoo__fwBar__f extends MixZIfeFoo__fwBar__f[C] { ; ; f; }
+// */class S__ZIfeFoo__fwBar_I_ extends MixZIfeFoo__fwBar_I_[C] { ; ; f; }
+// */class S__ZIfeFoo__fwBar_If extends MixZIfeFoo__fwBar_If[C] { ; ; f; }
+/* */class S__ZIfeFoo__fwBarY__ extends MixZIfeFoo__fwBarY__[C] { ; ; f; }
+/* */class S__ZIfeFoo__fwBarY_f extends MixZIfeFoo__fwBarY_f[C] { ; ; f; }
+// */class S__ZIfeFoo__fwBarYI_ extends MixZIfeFoo__fwBarYI_[C] { ; ; f; }
+// */class S__ZIfeFoo__fwBarYIf extends MixZIfeFoo__fwBarYIf[C] { ; ; f; }
+// */class S__ZIfeFoo_I_ extends MixZIfeFoo_I_ [C] { ; ; f; }
+// */class S__ZIfeFoo_I_wBar___ extends MixZIfeFoo_I_wBar___[C] { ; ; f; }
+// */class S__ZIfeFoo_I_wBar__f extends MixZIfeFoo_I_wBar__f[C] { ; ; f; }
+// */class S__ZIfeFoo_I_wBar_I_ extends MixZIfeFoo_I_wBar_I_[C] { ; ; f; }
+// */class S__ZIfeFoo_I_wBar_If extends MixZIfeFoo_I_wBar_If[C] { ; ; f; }
+// */class S__ZIfeFoo_I_wBarY__ extends MixZIfeFoo_I_wBarY__[C] { ; ; f; }
+// */class S__ZIfeFoo_I_wBarY_f extends MixZIfeFoo_I_wBarY_f[C] { ; ; f; }
+// */class S__ZIfeFoo_I_wBarYI_ extends MixZIfeFoo_I_wBarYI_[C] { ; ; f; }
+// */class S__ZIfeFoo_I_wBarYIf extends MixZIfeFoo_I_wBarYIf[C] { ; ; f; }
+// */class S__ZIfeFoo_If extends MixZIfeFoo_If [C] { ; ; f; }
+// */class S__ZIfeFoo_IfwBar___ extends MixZIfeFoo_IfwBar___[C] { ; ; f; }
+// */class S__ZIfeFoo_IfwBar__f extends MixZIfeFoo_IfwBar__f[C] { ; ; f; }
+// */class S__ZIfeFoo_IfwBar_I_ extends MixZIfeFoo_IfwBar_I_[C] { ; ; f; }
+// */class S__ZIfeFoo_IfwBar_If extends MixZIfeFoo_IfwBar_If[C] { ; ; f; }
+// */class S__ZIfeFoo_IfwBarY__ extends MixZIfeFoo_IfwBarY__[C] { ; ; f; }
+// */class S__ZIfeFoo_IfwBarY_f extends MixZIfeFoo_IfwBarY_f[C] { ; ; f; }
+// */class S__ZIfeFoo_IfwBarYI_ extends MixZIfeFoo_IfwBarYI_[C] { ; ; f; }
+// */class S__ZIfeFoo_IfwBarYIf extends MixZIfeFoo_IfwBarYIf[C] { ; ; f; }
+/* */class S__ZIfeFooX__ extends MixZIfeFooX__ [C] { ; ; f; }
+/* */class S__ZIfeFooX__wBar___ extends MixZIfeFooX__wBar___[C] { ; ; f; }
+/* */class S__ZIfeFooX__wBar__f extends MixZIfeFooX__wBar__f[C] { ; ; f; }
+// */class S__ZIfeFooX__wBar_I_ extends MixZIfeFooX__wBar_I_[C] { ; ; f; }
+// */class S__ZIfeFooX__wBar_If extends MixZIfeFooX__wBar_If[C] { ; ; f; }
+/* */class S__ZIfeFooX__wBarY__ extends MixZIfeFooX__wBarY__[C] { ; ; f; }
+/* */class S__ZIfeFooX__wBarY_f extends MixZIfeFooX__wBarY_f[C] { ; ; f; }
+// */class S__ZIfeFooX__wBarYI_ extends MixZIfeFooX__wBarYI_[C] { ; ; f; }
+// */class S__ZIfeFooX__wBarYIf extends MixZIfeFooX__wBarYIf[C] { ; ; f; }
+/* */class S__ZIfeFooX_f extends MixZIfeFooX_f [C] { ; ; f; }
+/* */class S__ZIfeFooX_fwBar___ extends MixZIfeFooX_fwBar___[C] { ; ; f; }
+/* */class S__ZIfeFooX_fwBar__f extends MixZIfeFooX_fwBar__f[C] { ; ; f; }
+// */class S__ZIfeFooX_fwBar_I_ extends MixZIfeFooX_fwBar_I_[C] { ; ; f; }
+// */class S__ZIfeFooX_fwBar_If extends MixZIfeFooX_fwBar_If[C] { ; ; f; }
+/* */class S__ZIfeFooX_fwBarY__ extends MixZIfeFooX_fwBarY__[C] { ; ; f; }
+/* */class S__ZIfeFooX_fwBarY_f extends MixZIfeFooX_fwBarY_f[C] { ; ; f; }
+// */class S__ZIfeFooX_fwBarYI_ extends MixZIfeFooX_fwBarYI_[C] { ; ; f; }
+// */class S__ZIfeFooX_fwBarYIf extends MixZIfeFooX_fwBarYIf[C] { ; ; f; }
+// */class S__ZIfeFooXI_ extends MixZIfeFooXI_ [C] { ; ; f; }
+// */class S__ZIfeFooXI_wBar___ extends MixZIfeFooXI_wBar___[C] { ; ; f; }
+// */class S__ZIfeFooXI_wBar__f extends MixZIfeFooXI_wBar__f[C] { ; ; f; }
+// */class S__ZIfeFooXI_wBar_I_ extends MixZIfeFooXI_wBar_I_[C] { ; ; f; }
+// */class S__ZIfeFooXI_wBar_If extends MixZIfeFooXI_wBar_If[C] { ; ; f; }
+// */class S__ZIfeFooXI_wBarY__ extends MixZIfeFooXI_wBarY__[C] { ; ; f; }
+// */class S__ZIfeFooXI_wBarY_f extends MixZIfeFooXI_wBarY_f[C] { ; ; f; }
+// */class S__ZIfeFooXI_wBarYI_ extends MixZIfeFooXI_wBarYI_[C] { ; ; f; }
+// */class S__ZIfeFooXI_wBarYIf extends MixZIfeFooXI_wBarYIf[C] { ; ; f; }
+// */class S__ZIfeFooXIf extends MixZIfeFooXIf [C] { ; ; f; }
+// */class S__ZIfeFooXIfwBar___ extends MixZIfeFooXIfwBar___[C] { ; ; f; }
+// */class S__ZIfeFooXIfwBar__f extends MixZIfeFooXIfwBar__f[C] { ; ; f; }
+// */class S__ZIfeFooXIfwBar_I_ extends MixZIfeFooXIfwBar_I_[C] { ; ; f; }
+// */class S__ZIfeFooXIfwBar_If extends MixZIfeFooXIfwBar_If[C] { ; ; f; }
+// */class S__ZIfeFooXIfwBarY__ extends MixZIfeFooXIfwBarY__[C] { ; ; f; }
+// */class S__ZIfeFooXIfwBarY_f extends MixZIfeFooXIfwBarY_f[C] { ; ; f; }
+// */class S__ZIfeFooXIfwBarYI_ extends MixZIfeFooXIfwBarYI_[C] { ; ; f; }
+// */class S__ZIfeFooXIfwBarYIf extends MixZIfeFooXIfwBarYIf[C] { ; ; f; }
+
+
+
+/* */class S_____wFoo___ extends Mix___wFoo___ { class I; def f: I = {sub; null}; f; }
+/* */class S_____wFoo___wBar___ extends Mix___wFoo___wBar___ { class I; def f: I = {sub; null}; f; }
+/* */class S_____wFoo___wBar__f extends Mix___wFoo___wBar__f { class I; ; f; }
+/* */class S_____wFoo___wBar_I_ extends Mix___wFoo___wBar_I_ { ; def f: I = {sub; null}; f; }
+/* */class S_____wFoo___wBar_If extends Mix___wFoo___wBar_If { ; ; f; }
+/* */class S_____wFoo___wBarY__ extends Mix___wFoo___wBarY__ { class I; def f: I = {sub; null}; f; }
+/* */class S_____wFoo___wBarY_f extends Mix___wFoo___wBarY_f { class I; ; f; }
+/* */class S_____wFoo___wBarYI_ extends Mix___wFoo___wBarYI_ { ; def f: I = {sub; null}; f; }
+/* */class S_____wFoo___wBarYIf extends Mix___wFoo___wBarYIf { ; ; f; }
+/* */class S_____wFoo__f extends Mix___wFoo__f { class I; ; f; }
+/* */class S_____wFoo__fwBar___ extends Mix___wFoo__fwBar___ { class I; ; f; }
+// */class S_____wFoo__fwBar__f extends Mix___wFoo__fwBar__f { class I; ; f; }
+/* */class S_____wFoo__fwBar_I_ extends Mix___wFoo__fwBar_I_ { ; ; f; }
+// */class S_____wFoo__fwBar_If extends Mix___wFoo__fwBar_If { ; ; f; }
+/* */class S_____wFoo__fwBarY__ extends Mix___wFoo__fwBarY__ { class I; ; f; }
+// */class S_____wFoo__fwBarY_f extends Mix___wFoo__fwBarY_f { class I; ; f; }
+/* */class S_____wFoo__fwBarYI_ extends Mix___wFoo__fwBarYI_ { ; ; f; }
+// */class S_____wFoo__fwBarYIf extends Mix___wFoo__fwBarYIf { ; ; f; }
+/* */class S_____wFoo_I_ extends Mix___wFoo_I_ { ; def f: I = {sub; null}; f; }
+/* */class S_____wFoo_I_wBar___ extends Mix___wFoo_I_wBar___ { ; def f: I = {sub; null}; f; }
+/* */class S_____wFoo_I_wBar__f extends Mix___wFoo_I_wBar__f { ; ; f; }
+// */class S_____wFoo_I_wBar_I_ extends Mix___wFoo_I_wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S_____wFoo_I_wBar_If extends Mix___wFoo_I_wBar_If { ; ; f; }
+/* */class S_____wFoo_I_wBarY__ extends Mix___wFoo_I_wBarY__ { ; def f: I = {sub; null}; f; }
+/* */class S_____wFoo_I_wBarY_f extends Mix___wFoo_I_wBarY_f { ; ; f; }
+// */class S_____wFoo_I_wBarYI_ extends Mix___wFoo_I_wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S_____wFoo_I_wBarYIf extends Mix___wFoo_I_wBarYIf { ; ; f; }
+/* */class S_____wFoo_If extends Mix___wFoo_If { ; ; f; }
+/* */class S_____wFoo_IfwBar___ extends Mix___wFoo_IfwBar___ { ; ; f; }
+// */class S_____wFoo_IfwBar__f extends Mix___wFoo_IfwBar__f { ; ; f; }
+// */class S_____wFoo_IfwBar_I_ extends Mix___wFoo_IfwBar_I_ { ; ; f; }
+// */class S_____wFoo_IfwBar_If extends Mix___wFoo_IfwBar_If { ; ; f; }
+/* */class S_____wFoo_IfwBarY__ extends Mix___wFoo_IfwBarY__ { ; ; f; }
+// */class S_____wFoo_IfwBarY_f extends Mix___wFoo_IfwBarY_f { ; ; f; }
+// */class S_____wFoo_IfwBarYI_ extends Mix___wFoo_IfwBarYI_ { ; ; f; }
+// */class S_____wFoo_IfwBarYIf extends Mix___wFoo_IfwBarYIf { ; ; f; }
+/* */class S_____wFooX__ extends Mix___wFooX__ { class I; def f: I = {sub; null}; f; }
+/* */class S_____wFooX__wBar___ extends Mix___wFooX__wBar___ { class I; def f: I = {sub; null}; f; }
+/* */class S_____wFooX__wBar__f extends Mix___wFooX__wBar__f { class I; ; f; }
+/* */class S_____wFooX__wBar_I_ extends Mix___wFooX__wBar_I_ { ; def f: I = {sub; null}; f; }
+/* */class S_____wFooX__wBar_If extends Mix___wFooX__wBar_If { ; ; f; }
+/* */class S_____wFooX__wBarY__ extends Mix___wFooX__wBarY__ { class I; def f: I = {sub; null}; f; }
+/* */class S_____wFooX__wBarY_f extends Mix___wFooX__wBarY_f { class I; ; f; }
+/* */class S_____wFooX__wBarYI_ extends Mix___wFooX__wBarYI_ { ; def f: I = {sub; null}; f; }
+/* */class S_____wFooX__wBarYIf extends Mix___wFooX__wBarYIf { ; ; f; }
+/* */class S_____wFooX_f extends Mix___wFooX_f { class I; ; f; }
+/* */class S_____wFooX_fwBar___ extends Mix___wFooX_fwBar___ { class I; ; f; }
+// */class S_____wFooX_fwBar__f extends Mix___wFooX_fwBar__f { class I; ; f; }
+/* */class S_____wFooX_fwBar_I_ extends Mix___wFooX_fwBar_I_ { ; ; f; }
+// */class S_____wFooX_fwBar_If extends Mix___wFooX_fwBar_If { ; ; f; }
+/* */class S_____wFooX_fwBarY__ extends Mix___wFooX_fwBarY__ { class I; ; f; }
+// */class S_____wFooX_fwBarY_f extends Mix___wFooX_fwBarY_f { class I; ; f; }
+/* */class S_____wFooX_fwBarYI_ extends Mix___wFooX_fwBarYI_ { ; ; f; }
+// */class S_____wFooX_fwBarYIf extends Mix___wFooX_fwBarYIf { ; ; f; }
+/* */class S_____wFooXI_ extends Mix___wFooXI_ { ; def f: I = {sub; null}; f; }
+/* */class S_____wFooXI_wBar___ extends Mix___wFooXI_wBar___ { ; def f: I = {sub; null}; f; }
+/* */class S_____wFooXI_wBar__f extends Mix___wFooXI_wBar__f { ; ; f; }
+// */class S_____wFooXI_wBar_I_ extends Mix___wFooXI_wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S_____wFooXI_wBar_If extends Mix___wFooXI_wBar_If { ; ; f; }
+/* */class S_____wFooXI_wBarY__ extends Mix___wFooXI_wBarY__ { ; def f: I = {sub; null}; f; }
+/* */class S_____wFooXI_wBarY_f extends Mix___wFooXI_wBarY_f { ; ; f; }
+// */class S_____wFooXI_wBarYI_ extends Mix___wFooXI_wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S_____wFooXI_wBarYIf extends Mix___wFooXI_wBarYIf { ; ; f; }
+/* */class S_____wFooXIf extends Mix___wFooXIf { ; ; f; }
+/* */class S_____wFooXIfwBar___ extends Mix___wFooXIfwBar___ { ; ; f; }
+// */class S_____wFooXIfwBar__f extends Mix___wFooXIfwBar__f { ; ; f; }
+// */class S_____wFooXIfwBar_I_ extends Mix___wFooXIfwBar_I_ { ; ; f; }
+// */class S_____wFooXIfwBar_If extends Mix___wFooXIfwBar_If { ; ; f; }
+/* */class S_____wFooXIfwBarY__ extends Mix___wFooXIfwBarY__ { ; ; f; }
+// */class S_____wFooXIfwBarY_f extends Mix___wFooXIfwBarY_f { ; ; f; }
+// */class S_____wFooXIfwBarYI_ extends Mix___wFooXIfwBarYI_ { ; ; f; }
+// */class S_____wFooXIfwBarYIf extends Mix___wFooXIfwBarYIf { ; ; f; }
+
+/* */class S____fwFoo___ extends Mix__fwFoo___ { class I; ; f; }
+/* */class S____fwFoo___wBar___ extends Mix__fwFoo___wBar___ { class I; ; f; }
+/* */class S____fwFoo___wBar__f extends Mix__fwFoo___wBar__f { class I; ; f; }
+/* */class S____fwFoo___wBar_I_ extends Mix__fwFoo___wBar_I_ { ; ; f; }
+/* */class S____fwFoo___wBar_If extends Mix__fwFoo___wBar_If { ; ; f; }
+/* */class S____fwFoo___wBarY__ extends Mix__fwFoo___wBarY__ { class I; ; f; }
+/* */class S____fwFoo___wBarY_f extends Mix__fwFoo___wBarY_f { class I; ; f; }
+/* */class S____fwFoo___wBarYI_ extends Mix__fwFoo___wBarYI_ { ; ; f; }
+/* */class S____fwFoo___wBarYIf extends Mix__fwFoo___wBarYIf { ; ; f; }
+/* */class S____fwFoo__f extends Mix__fwFoo__f { class I; ; f; }
+/* */class S____fwFoo__fwBar___ extends Mix__fwFoo__fwBar___ { class I; ; f; }
+/* */class S____fwFoo__fwBar__f extends Mix__fwFoo__fwBar__f { class I; ; f; }
+/* */class S____fwFoo__fwBar_I_ extends Mix__fwFoo__fwBar_I_ { ; ; f; }
+/* */class S____fwFoo__fwBar_If extends Mix__fwFoo__fwBar_If { ; ; f; }
+/* */class S____fwFoo__fwBarY__ extends Mix__fwFoo__fwBarY__ { class I; ; f; }
+/* */class S____fwFoo__fwBarY_f extends Mix__fwFoo__fwBarY_f { class I; ; f; }
+/* */class S____fwFoo__fwBarYI_ extends Mix__fwFoo__fwBarYI_ { ; ; f; }
+/* */class S____fwFoo__fwBarYIf extends Mix__fwFoo__fwBarYIf { ; ; f; }
+/* */class S____fwFoo_I_ extends Mix__fwFoo_I_ { ; ; f; }
+/* */class S____fwFoo_I_wBar___ extends Mix__fwFoo_I_wBar___ { ; ; f; }
+/* */class S____fwFoo_I_wBar__f extends Mix__fwFoo_I_wBar__f { ; ; f; }
+// */class S____fwFoo_I_wBar_I_ extends Mix__fwFoo_I_wBar_I_ { ; ; f; }
+// */class S____fwFoo_I_wBar_If extends Mix__fwFoo_I_wBar_If { ; ; f; }
+/* */class S____fwFoo_I_wBarY__ extends Mix__fwFoo_I_wBarY__ { ; ; f; }
+/* */class S____fwFoo_I_wBarY_f extends Mix__fwFoo_I_wBarY_f { ; ; f; }
+// */class S____fwFoo_I_wBarYI_ extends Mix__fwFoo_I_wBarYI_ { ; ; f; }
+// */class S____fwFoo_I_wBarYIf extends Mix__fwFoo_I_wBarYIf { ; ; f; }
+/* */class S____fwFoo_If extends Mix__fwFoo_If { ; ; f; }
+/* */class S____fwFoo_IfwBar___ extends Mix__fwFoo_IfwBar___ { ; ; f; }
+/* */class S____fwFoo_IfwBar__f extends Mix__fwFoo_IfwBar__f { ; ; f; }
+// */class S____fwFoo_IfwBar_I_ extends Mix__fwFoo_IfwBar_I_ { ; ; f; }
+// */class S____fwFoo_IfwBar_If extends Mix__fwFoo_IfwBar_If { ; ; f; }
+/* */class S____fwFoo_IfwBarY__ extends Mix__fwFoo_IfwBarY__ { ; ; f; }
+/* */class S____fwFoo_IfwBarY_f extends Mix__fwFoo_IfwBarY_f { ; ; f; }
+// */class S____fwFoo_IfwBarYI_ extends Mix__fwFoo_IfwBarYI_ { ; ; f; }
+// */class S____fwFoo_IfwBarYIf extends Mix__fwFoo_IfwBarYIf { ; ; f; }
+/* */class S____fwFooX__ extends Mix__fwFooX__ { class I; ; f; }
+/* */class S____fwFooX__wBar___ extends Mix__fwFooX__wBar___ { class I; ; f; }
+/* */class S____fwFooX__wBar__f extends Mix__fwFooX__wBar__f { class I; ; f; }
+/* */class S____fwFooX__wBar_I_ extends Mix__fwFooX__wBar_I_ { ; ; f; }
+/* */class S____fwFooX__wBar_If extends Mix__fwFooX__wBar_If { ; ; f; }
+/* */class S____fwFooX__wBarY__ extends Mix__fwFooX__wBarY__ { class I; ; f; }
+/* */class S____fwFooX__wBarY_f extends Mix__fwFooX__wBarY_f { class I; ; f; }
+/* */class S____fwFooX__wBarYI_ extends Mix__fwFooX__wBarYI_ { ; ; f; }
+/* */class S____fwFooX__wBarYIf extends Mix__fwFooX__wBarYIf { ; ; f; }
+/* */class S____fwFooX_f extends Mix__fwFooX_f { class I; ; f; }
+/* */class S____fwFooX_fwBar___ extends Mix__fwFooX_fwBar___ { class I; ; f; }
+/* */class S____fwFooX_fwBar__f extends Mix__fwFooX_fwBar__f { class I; ; f; }
+/* */class S____fwFooX_fwBar_I_ extends Mix__fwFooX_fwBar_I_ { ; ; f; }
+/* */class S____fwFooX_fwBar_If extends Mix__fwFooX_fwBar_If { ; ; f; }
+/* */class S____fwFooX_fwBarY__ extends Mix__fwFooX_fwBarY__ { class I; ; f; }
+/* */class S____fwFooX_fwBarY_f extends Mix__fwFooX_fwBarY_f { class I; ; f; }
+/* */class S____fwFooX_fwBarYI_ extends Mix__fwFooX_fwBarYI_ { ; ; f; }
+/* */class S____fwFooX_fwBarYIf extends Mix__fwFooX_fwBarYIf { ; ; f; }
+/* */class S____fwFooXI_ extends Mix__fwFooXI_ { ; ; f; }
+/* */class S____fwFooXI_wBar___ extends Mix__fwFooXI_wBar___ { ; ; f; }
+/* */class S____fwFooXI_wBar__f extends Mix__fwFooXI_wBar__f { ; ; f; }
+// */class S____fwFooXI_wBar_I_ extends Mix__fwFooXI_wBar_I_ { ; ; f; }
+// */class S____fwFooXI_wBar_If extends Mix__fwFooXI_wBar_If { ; ; f; }
+/* */class S____fwFooXI_wBarY__ extends Mix__fwFooXI_wBarY__ { ; ; f; }
+/* */class S____fwFooXI_wBarY_f extends Mix__fwFooXI_wBarY_f { ; ; f; }
+// */class S____fwFooXI_wBarYI_ extends Mix__fwFooXI_wBarYI_ { ; ; f; }
+// */class S____fwFooXI_wBarYIf extends Mix__fwFooXI_wBarYIf { ; ; f; }
+/* */class S____fwFooXIf extends Mix__fwFooXIf { ; ; f; }
+/* */class S____fwFooXIfwBar___ extends Mix__fwFooXIfwBar___ { ; ; f; }
+/* */class S____fwFooXIfwBar__f extends Mix__fwFooXIfwBar__f { ; ; f; }
+// */class S____fwFooXIfwBar_I_ extends Mix__fwFooXIfwBar_I_ { ; ; f; }
+// */class S____fwFooXIfwBar_If extends Mix__fwFooXIfwBar_If { ; ; f; }
+/* */class S____fwFooXIfwBarY__ extends Mix__fwFooXIfwBarY__ { ; ; f; }
+/* */class S____fwFooXIfwBarY_f extends Mix__fwFooXIfwBarY_f { ; ; f; }
+// */class S____fwFooXIfwBarYI_ extends Mix__fwFooXIfwBarYI_ { ; ; f; }
+// */class S____fwFooXIfwBarYIf extends Mix__fwFooXIfwBarYIf { ; ; f; }
+
+/* */class S___I_wFoo___ extends Mix_I_wFoo___ { ; def f: I = {sub; null}; f; }
+/* */class S___I_wFoo___wBar___ extends Mix_I_wFoo___wBar___ { ; def f: I = {sub; null}; f; }
+/* */class S___I_wFoo___wBar__f extends Mix_I_wFoo___wBar__f { ; ; f; }
+// */class S___I_wFoo___wBar_I_ extends Mix_I_wFoo___wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S___I_wFoo___wBar_If extends Mix_I_wFoo___wBar_If { ; ; f; }
+/* */class S___I_wFoo___wBarY__ extends Mix_I_wFoo___wBarY__ { ; def f: I = {sub; null}; f; }
+/* */class S___I_wFoo___wBarY_f extends Mix_I_wFoo___wBarY_f { ; ; f; }
+// */class S___I_wFoo___wBarYI_ extends Mix_I_wFoo___wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S___I_wFoo___wBarYIf extends Mix_I_wFoo___wBarYIf { ; ; f; }
+/* */class S___I_wFoo__f extends Mix_I_wFoo__f { ; ; f; }
+/* */class S___I_wFoo__fwBar___ extends Mix_I_wFoo__fwBar___ { ; ; f; }
+// */class S___I_wFoo__fwBar__f extends Mix_I_wFoo__fwBar__f { ; ; f; }
+// */class S___I_wFoo__fwBar_I_ extends Mix_I_wFoo__fwBar_I_ { ; ; f; }
+// */class S___I_wFoo__fwBar_If extends Mix_I_wFoo__fwBar_If { ; ; f; }
+/* */class S___I_wFoo__fwBarY__ extends Mix_I_wFoo__fwBarY__ { ; ; f; }
+// */class S___I_wFoo__fwBarY_f extends Mix_I_wFoo__fwBarY_f { ; ; f; }
+// */class S___I_wFoo__fwBarYI_ extends Mix_I_wFoo__fwBarYI_ { ; ; f; }
+// */class S___I_wFoo__fwBarYIf extends Mix_I_wFoo__fwBarYIf { ; ; f; }
+// */class S___I_wFoo_I_ extends Mix_I_wFoo_I_ { ; def f: I = {sub; null}; f; }
+// */class S___I_wFoo_I_wBar___ extends Mix_I_wFoo_I_wBar___ { ; def f: I = {sub; null}; f; }
+// */class S___I_wFoo_I_wBar__f extends Mix_I_wFoo_I_wBar__f { ; ; f; }
+// */class S___I_wFoo_I_wBar_I_ extends Mix_I_wFoo_I_wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S___I_wFoo_I_wBar_If extends Mix_I_wFoo_I_wBar_If { ; ; f; }
+// */class S___I_wFoo_I_wBarY__ extends Mix_I_wFoo_I_wBarY__ { ; def f: I = {sub; null}; f; }
+// */class S___I_wFoo_I_wBarY_f extends Mix_I_wFoo_I_wBarY_f { ; ; f; }
+// */class S___I_wFoo_I_wBarYI_ extends Mix_I_wFoo_I_wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S___I_wFoo_I_wBarYIf extends Mix_I_wFoo_I_wBarYIf { ; ; f; }
+// */class S___I_wFoo_If extends Mix_I_wFoo_If { ; ; f; }
+// */class S___I_wFoo_IfwBar___ extends Mix_I_wFoo_IfwBar___ { ; ; f; }
+// */class S___I_wFoo_IfwBar__f extends Mix_I_wFoo_IfwBar__f { ; ; f; }
+// */class S___I_wFoo_IfwBar_I_ extends Mix_I_wFoo_IfwBar_I_ { ; ; f; }
+// */class S___I_wFoo_IfwBar_If extends Mix_I_wFoo_IfwBar_If { ; ; f; }
+// */class S___I_wFoo_IfwBarY__ extends Mix_I_wFoo_IfwBarY__ { ; ; f; }
+// */class S___I_wFoo_IfwBarY_f extends Mix_I_wFoo_IfwBarY_f { ; ; f; }
+// */class S___I_wFoo_IfwBarYI_ extends Mix_I_wFoo_IfwBarYI_ { ; ; f; }
+// */class S___I_wFoo_IfwBarYIf extends Mix_I_wFoo_IfwBarYIf { ; ; f; }
+/* */class S___I_wFooX__ extends Mix_I_wFooX__ { ; def f: I = {sub; null}; f; }
+/* */class S___I_wFooX__wBar___ extends Mix_I_wFooX__wBar___ { ; def f: I = {sub; null}; f; }
+/* */class S___I_wFooX__wBar__f extends Mix_I_wFooX__wBar__f { ; ; f; }
+// */class S___I_wFooX__wBar_I_ extends Mix_I_wFooX__wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S___I_wFooX__wBar_If extends Mix_I_wFooX__wBar_If { ; ; f; }
+/* */class S___I_wFooX__wBarY__ extends Mix_I_wFooX__wBarY__ { ; def f: I = {sub; null}; f; }
+/* */class S___I_wFooX__wBarY_f extends Mix_I_wFooX__wBarY_f { ; ; f; }
+// */class S___I_wFooX__wBarYI_ extends Mix_I_wFooX__wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S___I_wFooX__wBarYIf extends Mix_I_wFooX__wBarYIf { ; ; f; }
+/* */class S___I_wFooX_f extends Mix_I_wFooX_f { ; ; f; }
+/* */class S___I_wFooX_fwBar___ extends Mix_I_wFooX_fwBar___ { ; ; f; }
+// */class S___I_wFooX_fwBar__f extends Mix_I_wFooX_fwBar__f { ; ; f; }
+// */class S___I_wFooX_fwBar_I_ extends Mix_I_wFooX_fwBar_I_ { ; ; f; }
+// */class S___I_wFooX_fwBar_If extends Mix_I_wFooX_fwBar_If { ; ; f; }
+/* */class S___I_wFooX_fwBarY__ extends Mix_I_wFooX_fwBarY__ { ; ; f; }
+// */class S___I_wFooX_fwBarY_f extends Mix_I_wFooX_fwBarY_f { ; ; f; }
+// */class S___I_wFooX_fwBarYI_ extends Mix_I_wFooX_fwBarYI_ { ; ; f; }
+// */class S___I_wFooX_fwBarYIf extends Mix_I_wFooX_fwBarYIf { ; ; f; }
+// */class S___I_wFooXI_ extends Mix_I_wFooXI_ { ; def f: I = {sub; null}; f; }
+// */class S___I_wFooXI_wBar___ extends Mix_I_wFooXI_wBar___ { ; def f: I = {sub; null}; f; }
+// */class S___I_wFooXI_wBar__f extends Mix_I_wFooXI_wBar__f { ; ; f; }
+// */class S___I_wFooXI_wBar_I_ extends Mix_I_wFooXI_wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S___I_wFooXI_wBar_If extends Mix_I_wFooXI_wBar_If { ; ; f; }
+// */class S___I_wFooXI_wBarY__ extends Mix_I_wFooXI_wBarY__ { ; def f: I = {sub; null}; f; }
+// */class S___I_wFooXI_wBarY_f extends Mix_I_wFooXI_wBarY_f { ; ; f; }
+// */class S___I_wFooXI_wBarYI_ extends Mix_I_wFooXI_wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S___I_wFooXI_wBarYIf extends Mix_I_wFooXI_wBarYIf { ; ; f; }
+// */class S___I_wFooXIf extends Mix_I_wFooXIf { ; ; f; }
+// */class S___I_wFooXIfwBar___ extends Mix_I_wFooXIfwBar___ { ; ; f; }
+// */class S___I_wFooXIfwBar__f extends Mix_I_wFooXIfwBar__f { ; ; f; }
+// */class S___I_wFooXIfwBar_I_ extends Mix_I_wFooXIfwBar_I_ { ; ; f; }
+// */class S___I_wFooXIfwBar_If extends Mix_I_wFooXIfwBar_If { ; ; f; }
+// */class S___I_wFooXIfwBarY__ extends Mix_I_wFooXIfwBarY__ { ; ; f; }
+// */class S___I_wFooXIfwBarY_f extends Mix_I_wFooXIfwBarY_f { ; ; f; }
+// */class S___I_wFooXIfwBarYI_ extends Mix_I_wFooXIfwBarYI_ { ; ; f; }
+// */class S___I_wFooXIfwBarYIf extends Mix_I_wFooXIfwBarYIf { ; ; f; }
+
+/* */class S___IfwFoo___ extends Mix_IfwFoo___ { ; ; f; }
+/* */class S___IfwFoo___wBar___ extends Mix_IfwFoo___wBar___ { ; ; f; }
+/* */class S___IfwFoo___wBar__f extends Mix_IfwFoo___wBar__f { ; ; f; }
+// */class S___IfwFoo___wBar_I_ extends Mix_IfwFoo___wBar_I_ { ; ; f; }
+// */class S___IfwFoo___wBar_If extends Mix_IfwFoo___wBar_If { ; ; f; }
+/* */class S___IfwFoo___wBarY__ extends Mix_IfwFoo___wBarY__ { ; ; f; }
+/* */class S___IfwFoo___wBarY_f extends Mix_IfwFoo___wBarY_f { ; ; f; }
+// */class S___IfwFoo___wBarYI_ extends Mix_IfwFoo___wBarYI_ { ; ; f; }
+// */class S___IfwFoo___wBarYIf extends Mix_IfwFoo___wBarYIf { ; ; f; }
+/* */class S___IfwFoo__f extends Mix_IfwFoo__f { ; ; f; }
+/* */class S___IfwFoo__fwBar___ extends Mix_IfwFoo__fwBar___ { ; ; f; }
+/* */class S___IfwFoo__fwBar__f extends Mix_IfwFoo__fwBar__f { ; ; f; }
+// */class S___IfwFoo__fwBar_I_ extends Mix_IfwFoo__fwBar_I_ { ; ; f; }
+// */class S___IfwFoo__fwBar_If extends Mix_IfwFoo__fwBar_If { ; ; f; }
+/* */class S___IfwFoo__fwBarY__ extends Mix_IfwFoo__fwBarY__ { ; ; f; }
+/* */class S___IfwFoo__fwBarY_f extends Mix_IfwFoo__fwBarY_f { ; ; f; }
+// */class S___IfwFoo__fwBarYI_ extends Mix_IfwFoo__fwBarYI_ { ; ; f; }
+// */class S___IfwFoo__fwBarYIf extends Mix_IfwFoo__fwBarYIf { ; ; f; }
+// */class S___IfwFoo_I_ extends Mix_IfwFoo_I_ { ; ; f; }
+// */class S___IfwFoo_I_wBar___ extends Mix_IfwFoo_I_wBar___ { ; ; f; }
+// */class S___IfwFoo_I_wBar__f extends Mix_IfwFoo_I_wBar__f { ; ; f; }
+// */class S___IfwFoo_I_wBar_I_ extends Mix_IfwFoo_I_wBar_I_ { ; ; f; }
+// */class S___IfwFoo_I_wBar_If extends Mix_IfwFoo_I_wBar_If { ; ; f; }
+// */class S___IfwFoo_I_wBarY__ extends Mix_IfwFoo_I_wBarY__ { ; ; f; }
+// */class S___IfwFoo_I_wBarY_f extends Mix_IfwFoo_I_wBarY_f { ; ; f; }
+// */class S___IfwFoo_I_wBarYI_ extends Mix_IfwFoo_I_wBarYI_ { ; ; f; }
+// */class S___IfwFoo_I_wBarYIf extends Mix_IfwFoo_I_wBarYIf { ; ; f; }
+// */class S___IfwFoo_If extends Mix_IfwFoo_If { ; ; f; }
+// */class S___IfwFoo_IfwBar___ extends Mix_IfwFoo_IfwBar___ { ; ; f; }
+// */class S___IfwFoo_IfwBar__f extends Mix_IfwFoo_IfwBar__f { ; ; f; }
+// */class S___IfwFoo_IfwBar_I_ extends Mix_IfwFoo_IfwBar_I_ { ; ; f; }
+// */class S___IfwFoo_IfwBar_If extends Mix_IfwFoo_IfwBar_If { ; ; f; }
+// */class S___IfwFoo_IfwBarY__ extends Mix_IfwFoo_IfwBarY__ { ; ; f; }
+// */class S___IfwFoo_IfwBarY_f extends Mix_IfwFoo_IfwBarY_f { ; ; f; }
+// */class S___IfwFoo_IfwBarYI_ extends Mix_IfwFoo_IfwBarYI_ { ; ; f; }
+// */class S___IfwFoo_IfwBarYIf extends Mix_IfwFoo_IfwBarYIf { ; ; f; }
+/* */class S___IfwFooX__ extends Mix_IfwFooX__ { ; ; f; }
+/* */class S___IfwFooX__wBar___ extends Mix_IfwFooX__wBar___ { ; ; f; }
+/* */class S___IfwFooX__wBar__f extends Mix_IfwFooX__wBar__f { ; ; f; }
+// */class S___IfwFooX__wBar_I_ extends Mix_IfwFooX__wBar_I_ { ; ; f; }
+// */class S___IfwFooX__wBar_If extends Mix_IfwFooX__wBar_If { ; ; f; }
+/* */class S___IfwFooX__wBarY__ extends Mix_IfwFooX__wBarY__ { ; ; f; }
+/* */class S___IfwFooX__wBarY_f extends Mix_IfwFooX__wBarY_f { ; ; f; }
+// */class S___IfwFooX__wBarYI_ extends Mix_IfwFooX__wBarYI_ { ; ; f; }
+// */class S___IfwFooX__wBarYIf extends Mix_IfwFooX__wBarYIf { ; ; f; }
+/* */class S___IfwFooX_f extends Mix_IfwFooX_f { ; ; f; }
+/* */class S___IfwFooX_fwBar___ extends Mix_IfwFooX_fwBar___ { ; ; f; }
+/* */class S___IfwFooX_fwBar__f extends Mix_IfwFooX_fwBar__f { ; ; f; }
+// */class S___IfwFooX_fwBar_I_ extends Mix_IfwFooX_fwBar_I_ { ; ; f; }
+// */class S___IfwFooX_fwBar_If extends Mix_IfwFooX_fwBar_If { ; ; f; }
+/* */class S___IfwFooX_fwBarY__ extends Mix_IfwFooX_fwBarY__ { ; ; f; }
+/* */class S___IfwFooX_fwBarY_f extends Mix_IfwFooX_fwBarY_f { ; ; f; }
+// */class S___IfwFooX_fwBarYI_ extends Mix_IfwFooX_fwBarYI_ { ; ; f; }
+// */class S___IfwFooX_fwBarYIf extends Mix_IfwFooX_fwBarYIf { ; ; f; }
+// */class S___IfwFooXI_ extends Mix_IfwFooXI_ { ; ; f; }
+// */class S___IfwFooXI_wBar___ extends Mix_IfwFooXI_wBar___ { ; ; f; }
+// */class S___IfwFooXI_wBar__f extends Mix_IfwFooXI_wBar__f { ; ; f; }
+// */class S___IfwFooXI_wBar_I_ extends Mix_IfwFooXI_wBar_I_ { ; ; f; }
+// */class S___IfwFooXI_wBar_If extends Mix_IfwFooXI_wBar_If { ; ; f; }
+// */class S___IfwFooXI_wBarY__ extends Mix_IfwFooXI_wBarY__ { ; ; f; }
+// */class S___IfwFooXI_wBarY_f extends Mix_IfwFooXI_wBarY_f { ; ; f; }
+// */class S___IfwFooXI_wBarYI_ extends Mix_IfwFooXI_wBarYI_ { ; ; f; }
+// */class S___IfwFooXI_wBarYIf extends Mix_IfwFooXI_wBarYIf { ; ; f; }
+// */class S___IfwFooXIf extends Mix_IfwFooXIf { ; ; f; }
+// */class S___IfwFooXIfwBar___ extends Mix_IfwFooXIfwBar___ { ; ; f; }
+// */class S___IfwFooXIfwBar__f extends Mix_IfwFooXIfwBar__f { ; ; f; }
+// */class S___IfwFooXIfwBar_I_ extends Mix_IfwFooXIfwBar_I_ { ; ; f; }
+// */class S___IfwFooXIfwBar_If extends Mix_IfwFooXIfwBar_If { ; ; f; }
+// */class S___IfwFooXIfwBarY__ extends Mix_IfwFooXIfwBarY__ { ; ; f; }
+// */class S___IfwFooXIfwBarY_f extends Mix_IfwFooXIfwBarY_f { ; ; f; }
+// */class S___IfwFooXIfwBarYI_ extends Mix_IfwFooXIfwBarYI_ { ; ; f; }
+// */class S___IfwFooXIfwBarYIf extends Mix_IfwFooXIfwBarYIf { ; ; f; }
+
+/* */class S__Z__wFoo___ extends MixZ__wFoo___ [C] { class I; def f: I = {sub; null}; f; }
+/* */class S__Z__wFoo___wBar___ extends MixZ__wFoo___wBar___[C] { class I; def f: I = {sub; null}; f; }
+/* */class S__Z__wFoo___wBar__f extends MixZ__wFoo___wBar__f[C] { class I; ; f; }
+/* */class S__Z__wFoo___wBar_I_ extends MixZ__wFoo___wBar_I_[C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__wFoo___wBar_If extends MixZ__wFoo___wBar_If[C] { ; ; f; }
+/* */class S__Z__wFoo___wBarY__ extends MixZ__wFoo___wBarY__[C] { class I; def f: I = {sub; null}; f; }
+/* */class S__Z__wFoo___wBarY_f extends MixZ__wFoo___wBarY_f[C] { class I; ; f; }
+/* */class S__Z__wFoo___wBarYI_ extends MixZ__wFoo___wBarYI_[C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__wFoo___wBarYIf extends MixZ__wFoo___wBarYIf[C] { ; ; f; }
+/* */class S__Z__wFoo__f extends MixZ__wFoo__f [C] { class I; ; f; }
+/* */class S__Z__wFoo__fwBar___ extends MixZ__wFoo__fwBar___[C] { class I; ; f; }
+// */class S__Z__wFoo__fwBar__f extends MixZ__wFoo__fwBar__f[C] { class I; ; f; }
+/* */class S__Z__wFoo__fwBar_I_ extends MixZ__wFoo__fwBar_I_[C] { ; ; f; }
+// */class S__Z__wFoo__fwBar_If extends MixZ__wFoo__fwBar_If[C] { ; ; f; }
+/* */class S__Z__wFoo__fwBarY__ extends MixZ__wFoo__fwBarY__[C] { class I; ; f; }
+// */class S__Z__wFoo__fwBarY_f extends MixZ__wFoo__fwBarY_f[C] { class I; ; f; }
+/* */class S__Z__wFoo__fwBarYI_ extends MixZ__wFoo__fwBarYI_[C] { ; ; f; }
+// */class S__Z__wFoo__fwBarYIf extends MixZ__wFoo__fwBarYIf[C] { ; ; f; }
+/* */class S__Z__wFoo_I_ extends MixZ__wFoo_I_ [C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__wFoo_I_wBar___ extends MixZ__wFoo_I_wBar___[C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__wFoo_I_wBar__f extends MixZ__wFoo_I_wBar__f[C] { ; ; f; }
+// */class S__Z__wFoo_I_wBar_I_ extends MixZ__wFoo_I_wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S__Z__wFoo_I_wBar_If extends MixZ__wFoo_I_wBar_If[C] { ; ; f; }
+/* */class S__Z__wFoo_I_wBarY__ extends MixZ__wFoo_I_wBarY__[C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__wFoo_I_wBarY_f extends MixZ__wFoo_I_wBarY_f[C] { ; ; f; }
+// */class S__Z__wFoo_I_wBarYI_ extends MixZ__wFoo_I_wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S__Z__wFoo_I_wBarYIf extends MixZ__wFoo_I_wBarYIf[C] { ; ; f; }
+/* */class S__Z__wFoo_If extends MixZ__wFoo_If [C] { ; ; f; }
+/* */class S__Z__wFoo_IfwBar___ extends MixZ__wFoo_IfwBar___[C] { ; ; f; }
+// */class S__Z__wFoo_IfwBar__f extends MixZ__wFoo_IfwBar__f[C] { ; ; f; }
+// */class S__Z__wFoo_IfwBar_I_ extends MixZ__wFoo_IfwBar_I_[C] { ; ; f; }
+// */class S__Z__wFoo_IfwBar_If extends MixZ__wFoo_IfwBar_If[C] { ; ; f; }
+/* */class S__Z__wFoo_IfwBarY__ extends MixZ__wFoo_IfwBarY__[C] { ; ; f; }
+// */class S__Z__wFoo_IfwBarY_f extends MixZ__wFoo_IfwBarY_f[C] { ; ; f; }
+// */class S__Z__wFoo_IfwBarYI_ extends MixZ__wFoo_IfwBarYI_[C] { ; ; f; }
+// */class S__Z__wFoo_IfwBarYIf extends MixZ__wFoo_IfwBarYIf[C] { ; ; f; }
+/* */class S__Z__wFooX__ extends MixZ__wFooX__ [C] { class I; def f: I = {sub; null}; f; }
+/* */class S__Z__wFooX__wBar___ extends MixZ__wFooX__wBar___[C] { class I; def f: I = {sub; null}; f; }
+/* */class S__Z__wFooX__wBar__f extends MixZ__wFooX__wBar__f[C] { class I; ; f; }
+/* */class S__Z__wFooX__wBar_I_ extends MixZ__wFooX__wBar_I_[C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__wFooX__wBar_If extends MixZ__wFooX__wBar_If[C] { ; ; f; }
+/* */class S__Z__wFooX__wBarY__ extends MixZ__wFooX__wBarY__[C] { class I; def f: I = {sub; null}; f; }
+/* */class S__Z__wFooX__wBarY_f extends MixZ__wFooX__wBarY_f[C] { class I; ; f; }
+/* */class S__Z__wFooX__wBarYI_ extends MixZ__wFooX__wBarYI_[C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__wFooX__wBarYIf extends MixZ__wFooX__wBarYIf[C] { ; ; f; }
+/* */class S__Z__wFooX_f extends MixZ__wFooX_f [C] { class I; ; f; }
+/* */class S__Z__wFooX_fwBar___ extends MixZ__wFooX_fwBar___[C] { class I; ; f; }
+// */class S__Z__wFooX_fwBar__f extends MixZ__wFooX_fwBar__f[C] { class I; ; f; }
+/* */class S__Z__wFooX_fwBar_I_ extends MixZ__wFooX_fwBar_I_[C] { ; ; f; }
+// */class S__Z__wFooX_fwBar_If extends MixZ__wFooX_fwBar_If[C] { ; ; f; }
+/* */class S__Z__wFooX_fwBarY__ extends MixZ__wFooX_fwBarY__[C] { class I; ; f; }
+// */class S__Z__wFooX_fwBarY_f extends MixZ__wFooX_fwBarY_f[C] { class I; ; f; }
+/* */class S__Z__wFooX_fwBarYI_ extends MixZ__wFooX_fwBarYI_[C] { ; ; f; }
+// */class S__Z__wFooX_fwBarYIf extends MixZ__wFooX_fwBarYIf[C] { ; ; f; }
+/* */class S__Z__wFooXI_ extends MixZ__wFooXI_ [C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__wFooXI_wBar___ extends MixZ__wFooXI_wBar___[C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__wFooXI_wBar__f extends MixZ__wFooXI_wBar__f[C] { ; ; f; }
+// */class S__Z__wFooXI_wBar_I_ extends MixZ__wFooXI_wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S__Z__wFooXI_wBar_If extends MixZ__wFooXI_wBar_If[C] { ; ; f; }
+/* */class S__Z__wFooXI_wBarY__ extends MixZ__wFooXI_wBarY__[C] { ; def f: I = {sub; null}; f; }
+/* */class S__Z__wFooXI_wBarY_f extends MixZ__wFooXI_wBarY_f[C] { ; ; f; }
+// */class S__Z__wFooXI_wBarYI_ extends MixZ__wFooXI_wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S__Z__wFooXI_wBarYIf extends MixZ__wFooXI_wBarYIf[C] { ; ; f; }
+/* */class S__Z__wFooXIf extends MixZ__wFooXIf [C] { ; ; f; }
+/* */class S__Z__wFooXIfwBar___ extends MixZ__wFooXIfwBar___[C] { ; ; f; }
+// */class S__Z__wFooXIfwBar__f extends MixZ__wFooXIfwBar__f[C] { ; ; f; }
+// */class S__Z__wFooXIfwBar_I_ extends MixZ__wFooXIfwBar_I_[C] { ; ; f; }
+// */class S__Z__wFooXIfwBar_If extends MixZ__wFooXIfwBar_If[C] { ; ; f; }
+/* */class S__Z__wFooXIfwBarY__ extends MixZ__wFooXIfwBarY__[C] { ; ; f; }
+// */class S__Z__wFooXIfwBarY_f extends MixZ__wFooXIfwBarY_f[C] { ; ; f; }
+// */class S__Z__wFooXIfwBarYI_ extends MixZ__wFooXIfwBarYI_[C] { ; ; f; }
+// */class S__Z__wFooXIfwBarYIf extends MixZ__wFooXIfwBarYIf[C] { ; ; f; }
+
+/* */class S__Z_fwFoo___ extends MixZ_fwFoo___ [C] { class I; ; f; }
+/* */class S__Z_fwFoo___wBar___ extends MixZ_fwFoo___wBar___[C] { class I; ; f; }
+/* */class S__Z_fwFoo___wBar__f extends MixZ_fwFoo___wBar__f[C] { class I; ; f; }
+/* */class S__Z_fwFoo___wBar_I_ extends MixZ_fwFoo___wBar_I_[C] { ; ; f; }
+/* */class S__Z_fwFoo___wBar_If extends MixZ_fwFoo___wBar_If[C] { ; ; f; }
+/* */class S__Z_fwFoo___wBarY__ extends MixZ_fwFoo___wBarY__[C] { class I; ; f; }
+/* */class S__Z_fwFoo___wBarY_f extends MixZ_fwFoo___wBarY_f[C] { class I; ; f; }
+/* */class S__Z_fwFoo___wBarYI_ extends MixZ_fwFoo___wBarYI_[C] { ; ; f; }
+/* */class S__Z_fwFoo___wBarYIf extends MixZ_fwFoo___wBarYIf[C] { ; ; f; }
+/* */class S__Z_fwFoo__f extends MixZ_fwFoo__f [C] { class I; ; f; }
+/* */class S__Z_fwFoo__fwBar___ extends MixZ_fwFoo__fwBar___[C] { class I; ; f; }
+/* */class S__Z_fwFoo__fwBar__f extends MixZ_fwFoo__fwBar__f[C] { class I; ; f; }
+/* */class S__Z_fwFoo__fwBar_I_ extends MixZ_fwFoo__fwBar_I_[C] { ; ; f; }
+/* */class S__Z_fwFoo__fwBar_If extends MixZ_fwFoo__fwBar_If[C] { ; ; f; }
+/* */class S__Z_fwFoo__fwBarY__ extends MixZ_fwFoo__fwBarY__[C] { class I; ; f; }
+/* */class S__Z_fwFoo__fwBarY_f extends MixZ_fwFoo__fwBarY_f[C] { class I; ; f; }
+/* */class S__Z_fwFoo__fwBarYI_ extends MixZ_fwFoo__fwBarYI_[C] { ; ; f; }
+/* */class S__Z_fwFoo__fwBarYIf extends MixZ_fwFoo__fwBarYIf[C] { ; ; f; }
+/* */class S__Z_fwFoo_I_ extends MixZ_fwFoo_I_ [C] { ; ; f; }
+/* */class S__Z_fwFoo_I_wBar___ extends MixZ_fwFoo_I_wBar___[C] { ; ; f; }
+/* */class S__Z_fwFoo_I_wBar__f extends MixZ_fwFoo_I_wBar__f[C] { ; ; f; }
+// */class S__Z_fwFoo_I_wBar_I_ extends MixZ_fwFoo_I_wBar_I_[C] { ; ; f; }
+// */class S__Z_fwFoo_I_wBar_If extends MixZ_fwFoo_I_wBar_If[C] { ; ; f; }
+/* */class S__Z_fwFoo_I_wBarY__ extends MixZ_fwFoo_I_wBarY__[C] { ; ; f; }
+/* */class S__Z_fwFoo_I_wBarY_f extends MixZ_fwFoo_I_wBarY_f[C] { ; ; f; }
+// */class S__Z_fwFoo_I_wBarYI_ extends MixZ_fwFoo_I_wBarYI_[C] { ; ; f; }
+// */class S__Z_fwFoo_I_wBarYIf extends MixZ_fwFoo_I_wBarYIf[C] { ; ; f; }
+/* */class S__Z_fwFoo_If extends MixZ_fwFoo_If [C] { ; ; f; }
+/* */class S__Z_fwFoo_IfwBar___ extends MixZ_fwFoo_IfwBar___[C] { ; ; f; }
+/* */class S__Z_fwFoo_IfwBar__f extends MixZ_fwFoo_IfwBar__f[C] { ; ; f; }
+// */class S__Z_fwFoo_IfwBar_I_ extends MixZ_fwFoo_IfwBar_I_[C] { ; ; f; }
+// */class S__Z_fwFoo_IfwBar_If extends MixZ_fwFoo_IfwBar_If[C] { ; ; f; }
+/* */class S__Z_fwFoo_IfwBarY__ extends MixZ_fwFoo_IfwBarY__[C] { ; ; f; }
+/* */class S__Z_fwFoo_IfwBarY_f extends MixZ_fwFoo_IfwBarY_f[C] { ; ; f; }
+// */class S__Z_fwFoo_IfwBarYI_ extends MixZ_fwFoo_IfwBarYI_[C] { ; ; f; }
+// */class S__Z_fwFoo_IfwBarYIf extends MixZ_fwFoo_IfwBarYIf[C] { ; ; f; }
+/* */class S__Z_fwFooX__ extends MixZ_fwFooX__ [C] { class I; ; f; }
+/* */class S__Z_fwFooX__wBar___ extends MixZ_fwFooX__wBar___[C] { class I; ; f; }
+/* */class S__Z_fwFooX__wBar__f extends MixZ_fwFooX__wBar__f[C] { class I; ; f; }
+/* */class S__Z_fwFooX__wBar_I_ extends MixZ_fwFooX__wBar_I_[C] { ; ; f; }
+/* */class S__Z_fwFooX__wBar_If extends MixZ_fwFooX__wBar_If[C] { ; ; f; }
+/* */class S__Z_fwFooX__wBarY__ extends MixZ_fwFooX__wBarY__[C] { class I; ; f; }
+/* */class S__Z_fwFooX__wBarY_f extends MixZ_fwFooX__wBarY_f[C] { class I; ; f; }
+/* */class S__Z_fwFooX__wBarYI_ extends MixZ_fwFooX__wBarYI_[C] { ; ; f; }
+/* */class S__Z_fwFooX__wBarYIf extends MixZ_fwFooX__wBarYIf[C] { ; ; f; }
+/* */class S__Z_fwFooX_f extends MixZ_fwFooX_f [C] { class I; ; f; }
+/* */class S__Z_fwFooX_fwBar___ extends MixZ_fwFooX_fwBar___[C] { class I; ; f; }
+/* */class S__Z_fwFooX_fwBar__f extends MixZ_fwFooX_fwBar__f[C] { class I; ; f; }
+/* */class S__Z_fwFooX_fwBar_I_ extends MixZ_fwFooX_fwBar_I_[C] { ; ; f; }
+/* */class S__Z_fwFooX_fwBar_If extends MixZ_fwFooX_fwBar_If[C] { ; ; f; }
+/* */class S__Z_fwFooX_fwBarY__ extends MixZ_fwFooX_fwBarY__[C] { class I; ; f; }
+/* */class S__Z_fwFooX_fwBarY_f extends MixZ_fwFooX_fwBarY_f[C] { class I; ; f; }
+/* */class S__Z_fwFooX_fwBarYI_ extends MixZ_fwFooX_fwBarYI_[C] { ; ; f; }
+/* */class S__Z_fwFooX_fwBarYIf extends MixZ_fwFooX_fwBarYIf[C] { ; ; f; }
+/* */class S__Z_fwFooXI_ extends MixZ_fwFooXI_ [C] { ; ; f; }
+/* */class S__Z_fwFooXI_wBar___ extends MixZ_fwFooXI_wBar___[C] { ; ; f; }
+/* */class S__Z_fwFooXI_wBar__f extends MixZ_fwFooXI_wBar__f[C] { ; ; f; }
+// */class S__Z_fwFooXI_wBar_I_ extends MixZ_fwFooXI_wBar_I_[C] { ; ; f; }
+// */class S__Z_fwFooXI_wBar_If extends MixZ_fwFooXI_wBar_If[C] { ; ; f; }
+/* */class S__Z_fwFooXI_wBarY__ extends MixZ_fwFooXI_wBarY__[C] { ; ; f; }
+/* */class S__Z_fwFooXI_wBarY_f extends MixZ_fwFooXI_wBarY_f[C] { ; ; f; }
+// */class S__Z_fwFooXI_wBarYI_ extends MixZ_fwFooXI_wBarYI_[C] { ; ; f; }
+// */class S__Z_fwFooXI_wBarYIf extends MixZ_fwFooXI_wBarYIf[C] { ; ; f; }
+/* */class S__Z_fwFooXIf extends MixZ_fwFooXIf [C] { ; ; f; }
+/* */class S__Z_fwFooXIfwBar___ extends MixZ_fwFooXIfwBar___[C] { ; ; f; }
+/* */class S__Z_fwFooXIfwBar__f extends MixZ_fwFooXIfwBar__f[C] { ; ; f; }
+// */class S__Z_fwFooXIfwBar_I_ extends MixZ_fwFooXIfwBar_I_[C] { ; ; f; }
+// */class S__Z_fwFooXIfwBar_If extends MixZ_fwFooXIfwBar_If[C] { ; ; f; }
+/* */class S__Z_fwFooXIfwBarY__ extends MixZ_fwFooXIfwBarY__[C] { ; ; f; }
+/* */class S__Z_fwFooXIfwBarY_f extends MixZ_fwFooXIfwBarY_f[C] { ; ; f; }
+// */class S__Z_fwFooXIfwBarYI_ extends MixZ_fwFooXIfwBarYI_[C] { ; ; f; }
+// */class S__Z_fwFooXIfwBarYIf extends MixZ_fwFooXIfwBarYIf[C] { ; ; f; }
+
+/* */class S__ZI_wFoo___ extends MixZI_wFoo___ [C] { ; def f: I = {sub; null}; f; }
+/* */class S__ZI_wFoo___wBar___ extends MixZI_wFoo___wBar___[C] { ; def f: I = {sub; null}; f; }
+/* */class S__ZI_wFoo___wBar__f extends MixZI_wFoo___wBar__f[C] { ; ; f; }
+// */class S__ZI_wFoo___wBar_I_ extends MixZI_wFoo___wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_wFoo___wBar_If extends MixZI_wFoo___wBar_If[C] { ; ; f; }
+/* */class S__ZI_wFoo___wBarY__ extends MixZI_wFoo___wBarY__[C] { ; def f: I = {sub; null}; f; }
+/* */class S__ZI_wFoo___wBarY_f extends MixZI_wFoo___wBarY_f[C] { ; ; f; }
+// */class S__ZI_wFoo___wBarYI_ extends MixZI_wFoo___wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_wFoo___wBarYIf extends MixZI_wFoo___wBarYIf[C] { ; ; f; }
+/* */class S__ZI_wFoo__f extends MixZI_wFoo__f [C] { ; ; f; }
+/* */class S__ZI_wFoo__fwBar___ extends MixZI_wFoo__fwBar___[C] { ; ; f; }
+// */class S__ZI_wFoo__fwBar__f extends MixZI_wFoo__fwBar__f[C] { ; ; f; }
+// */class S__ZI_wFoo__fwBar_I_ extends MixZI_wFoo__fwBar_I_[C] { ; ; f; }
+// */class S__ZI_wFoo__fwBar_If extends MixZI_wFoo__fwBar_If[C] { ; ; f; }
+/* */class S__ZI_wFoo__fwBarY__ extends MixZI_wFoo__fwBarY__[C] { ; ; f; }
+// */class S__ZI_wFoo__fwBarY_f extends MixZI_wFoo__fwBarY_f[C] { ; ; f; }
+// */class S__ZI_wFoo__fwBarYI_ extends MixZI_wFoo__fwBarYI_[C] { ; ; f; }
+// */class S__ZI_wFoo__fwBarYIf extends MixZI_wFoo__fwBarYIf[C] { ; ; f; }
+// */class S__ZI_wFoo_I_ extends MixZI_wFoo_I_ [C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_wFoo_I_wBar___ extends MixZI_wFoo_I_wBar___[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_wFoo_I_wBar__f extends MixZI_wFoo_I_wBar__f[C] { ; ; f; }
+// */class S__ZI_wFoo_I_wBar_I_ extends MixZI_wFoo_I_wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_wFoo_I_wBar_If extends MixZI_wFoo_I_wBar_If[C] { ; ; f; }
+// */class S__ZI_wFoo_I_wBarY__ extends MixZI_wFoo_I_wBarY__[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_wFoo_I_wBarY_f extends MixZI_wFoo_I_wBarY_f[C] { ; ; f; }
+// */class S__ZI_wFoo_I_wBarYI_ extends MixZI_wFoo_I_wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_wFoo_I_wBarYIf extends MixZI_wFoo_I_wBarYIf[C] { ; ; f; }
+// */class S__ZI_wFoo_If extends MixZI_wFoo_If [C] { ; ; f; }
+// */class S__ZI_wFoo_IfwBar___ extends MixZI_wFoo_IfwBar___[C] { ; ; f; }
+// */class S__ZI_wFoo_IfwBar__f extends MixZI_wFoo_IfwBar__f[C] { ; ; f; }
+// */class S__ZI_wFoo_IfwBar_I_ extends MixZI_wFoo_IfwBar_I_[C] { ; ; f; }
+// */class S__ZI_wFoo_IfwBar_If extends MixZI_wFoo_IfwBar_If[C] { ; ; f; }
+// */class S__ZI_wFoo_IfwBarY__ extends MixZI_wFoo_IfwBarY__[C] { ; ; f; }
+// */class S__ZI_wFoo_IfwBarY_f extends MixZI_wFoo_IfwBarY_f[C] { ; ; f; }
+// */class S__ZI_wFoo_IfwBarYI_ extends MixZI_wFoo_IfwBarYI_[C] { ; ; f; }
+// */class S__ZI_wFoo_IfwBarYIf extends MixZI_wFoo_IfwBarYIf[C] { ; ; f; }
+/* */class S__ZI_wFooX__ extends MixZI_wFooX__ [C] { ; def f: I = {sub; null}; f; }
+/* */class S__ZI_wFooX__wBar___ extends MixZI_wFooX__wBar___[C] { ; def f: I = {sub; null}; f; }
+/* */class S__ZI_wFooX__wBar__f extends MixZI_wFooX__wBar__f[C] { ; ; f; }
+// */class S__ZI_wFooX__wBar_I_ extends MixZI_wFooX__wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_wFooX__wBar_If extends MixZI_wFooX__wBar_If[C] { ; ; f; }
+/* */class S__ZI_wFooX__wBarY__ extends MixZI_wFooX__wBarY__[C] { ; def f: I = {sub; null}; f; }
+/* */class S__ZI_wFooX__wBarY_f extends MixZI_wFooX__wBarY_f[C] { ; ; f; }
+// */class S__ZI_wFooX__wBarYI_ extends MixZI_wFooX__wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_wFooX__wBarYIf extends MixZI_wFooX__wBarYIf[C] { ; ; f; }
+/* */class S__ZI_wFooX_f extends MixZI_wFooX_f [C] { ; ; f; }
+/* */class S__ZI_wFooX_fwBar___ extends MixZI_wFooX_fwBar___[C] { ; ; f; }
+// */class S__ZI_wFooX_fwBar__f extends MixZI_wFooX_fwBar__f[C] { ; ; f; }
+// */class S__ZI_wFooX_fwBar_I_ extends MixZI_wFooX_fwBar_I_[C] { ; ; f; }
+// */class S__ZI_wFooX_fwBar_If extends MixZI_wFooX_fwBar_If[C] { ; ; f; }
+/* */class S__ZI_wFooX_fwBarY__ extends MixZI_wFooX_fwBarY__[C] { ; ; f; }
+// */class S__ZI_wFooX_fwBarY_f extends MixZI_wFooX_fwBarY_f[C] { ; ; f; }
+// */class S__ZI_wFooX_fwBarYI_ extends MixZI_wFooX_fwBarYI_[C] { ; ; f; }
+// */class S__ZI_wFooX_fwBarYIf extends MixZI_wFooX_fwBarYIf[C] { ; ; f; }
+// */class S__ZI_wFooXI_ extends MixZI_wFooXI_ [C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_wFooXI_wBar___ extends MixZI_wFooXI_wBar___[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_wFooXI_wBar__f extends MixZI_wFooXI_wBar__f[C] { ; ; f; }
+// */class S__ZI_wFooXI_wBar_I_ extends MixZI_wFooXI_wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_wFooXI_wBar_If extends MixZI_wFooXI_wBar_If[C] { ; ; f; }
+// */class S__ZI_wFooXI_wBarY__ extends MixZI_wFooXI_wBarY__[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_wFooXI_wBarY_f extends MixZI_wFooXI_wBarY_f[C] { ; ; f; }
+// */class S__ZI_wFooXI_wBarYI_ extends MixZI_wFooXI_wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S__ZI_wFooXI_wBarYIf extends MixZI_wFooXI_wBarYIf[C] { ; ; f; }
+// */class S__ZI_wFooXIf extends MixZI_wFooXIf [C] { ; ; f; }
+// */class S__ZI_wFooXIfwBar___ extends MixZI_wFooXIfwBar___[C] { ; ; f; }
+// */class S__ZI_wFooXIfwBar__f extends MixZI_wFooXIfwBar__f[C] { ; ; f; }
+// */class S__ZI_wFooXIfwBar_I_ extends MixZI_wFooXIfwBar_I_[C] { ; ; f; }
+// */class S__ZI_wFooXIfwBar_If extends MixZI_wFooXIfwBar_If[C] { ; ; f; }
+// */class S__ZI_wFooXIfwBarY__ extends MixZI_wFooXIfwBarY__[C] { ; ; f; }
+// */class S__ZI_wFooXIfwBarY_f extends MixZI_wFooXIfwBarY_f[C] { ; ; f; }
+// */class S__ZI_wFooXIfwBarYI_ extends MixZI_wFooXIfwBarYI_[C] { ; ; f; }
+// */class S__ZI_wFooXIfwBarYIf extends MixZI_wFooXIfwBarYIf[C] { ; ; f; }
+
+/* */class S__ZIfwFoo___ extends MixZIfwFoo___ [C] { ; ; f; }
+/* */class S__ZIfwFoo___wBar___ extends MixZIfwFoo___wBar___[C] { ; ; f; }
+/* */class S__ZIfwFoo___wBar__f extends MixZIfwFoo___wBar__f[C] { ; ; f; }
+// */class S__ZIfwFoo___wBar_I_ extends MixZIfwFoo___wBar_I_[C] { ; ; f; }
+// */class S__ZIfwFoo___wBar_If extends MixZIfwFoo___wBar_If[C] { ; ; f; }
+/* */class S__ZIfwFoo___wBarY__ extends MixZIfwFoo___wBarY__[C] { ; ; f; }
+/* */class S__ZIfwFoo___wBarY_f extends MixZIfwFoo___wBarY_f[C] { ; ; f; }
+// */class S__ZIfwFoo___wBarYI_ extends MixZIfwFoo___wBarYI_[C] { ; ; f; }
+// */class S__ZIfwFoo___wBarYIf extends MixZIfwFoo___wBarYIf[C] { ; ; f; }
+/* */class S__ZIfwFoo__f extends MixZIfwFoo__f [C] { ; ; f; }
+/* */class S__ZIfwFoo__fwBar___ extends MixZIfwFoo__fwBar___[C] { ; ; f; }
+/* */class S__ZIfwFoo__fwBar__f extends MixZIfwFoo__fwBar__f[C] { ; ; f; }
+// */class S__ZIfwFoo__fwBar_I_ extends MixZIfwFoo__fwBar_I_[C] { ; ; f; }
+// */class S__ZIfwFoo__fwBar_If extends MixZIfwFoo__fwBar_If[C] { ; ; f; }
+/* */class S__ZIfwFoo__fwBarY__ extends MixZIfwFoo__fwBarY__[C] { ; ; f; }
+/* */class S__ZIfwFoo__fwBarY_f extends MixZIfwFoo__fwBarY_f[C] { ; ; f; }
+// */class S__ZIfwFoo__fwBarYI_ extends MixZIfwFoo__fwBarYI_[C] { ; ; f; }
+// */class S__ZIfwFoo__fwBarYIf extends MixZIfwFoo__fwBarYIf[C] { ; ; f; }
+// */class S__ZIfwFoo_I_ extends MixZIfwFoo_I_ [C] { ; ; f; }
+// */class S__ZIfwFoo_I_wBar___ extends MixZIfwFoo_I_wBar___[C] { ; ; f; }
+// */class S__ZIfwFoo_I_wBar__f extends MixZIfwFoo_I_wBar__f[C] { ; ; f; }
+// */class S__ZIfwFoo_I_wBar_I_ extends MixZIfwFoo_I_wBar_I_[C] { ; ; f; }
+// */class S__ZIfwFoo_I_wBar_If extends MixZIfwFoo_I_wBar_If[C] { ; ; f; }
+// */class S__ZIfwFoo_I_wBarY__ extends MixZIfwFoo_I_wBarY__[C] { ; ; f; }
+// */class S__ZIfwFoo_I_wBarY_f extends MixZIfwFoo_I_wBarY_f[C] { ; ; f; }
+// */class S__ZIfwFoo_I_wBarYI_ extends MixZIfwFoo_I_wBarYI_[C] { ; ; f; }
+// */class S__ZIfwFoo_I_wBarYIf extends MixZIfwFoo_I_wBarYIf[C] { ; ; f; }
+// */class S__ZIfwFoo_If extends MixZIfwFoo_If [C] { ; ; f; }
+// */class S__ZIfwFoo_IfwBar___ extends MixZIfwFoo_IfwBar___[C] { ; ; f; }
+// */class S__ZIfwFoo_IfwBar__f extends MixZIfwFoo_IfwBar__f[C] { ; ; f; }
+// */class S__ZIfwFoo_IfwBar_I_ extends MixZIfwFoo_IfwBar_I_[C] { ; ; f; }
+// */class S__ZIfwFoo_IfwBar_If extends MixZIfwFoo_IfwBar_If[C] { ; ; f; }
+// */class S__ZIfwFoo_IfwBarY__ extends MixZIfwFoo_IfwBarY__[C] { ; ; f; }
+// */class S__ZIfwFoo_IfwBarY_f extends MixZIfwFoo_IfwBarY_f[C] { ; ; f; }
+// */class S__ZIfwFoo_IfwBarYI_ extends MixZIfwFoo_IfwBarYI_[C] { ; ; f; }
+// */class S__ZIfwFoo_IfwBarYIf extends MixZIfwFoo_IfwBarYIf[C] { ; ; f; }
+/* */class S__ZIfwFooX__ extends MixZIfwFooX__ [C] { ; ; f; }
+/* */class S__ZIfwFooX__wBar___ extends MixZIfwFooX__wBar___[C] { ; ; f; }
+/* */class S__ZIfwFooX__wBar__f extends MixZIfwFooX__wBar__f[C] { ; ; f; }
+// */class S__ZIfwFooX__wBar_I_ extends MixZIfwFooX__wBar_I_[C] { ; ; f; }
+// */class S__ZIfwFooX__wBar_If extends MixZIfwFooX__wBar_If[C] { ; ; f; }
+/* */class S__ZIfwFooX__wBarY__ extends MixZIfwFooX__wBarY__[C] { ; ; f; }
+/* */class S__ZIfwFooX__wBarY_f extends MixZIfwFooX__wBarY_f[C] { ; ; f; }
+// */class S__ZIfwFooX__wBarYI_ extends MixZIfwFooX__wBarYI_[C] { ; ; f; }
+// */class S__ZIfwFooX__wBarYIf extends MixZIfwFooX__wBarYIf[C] { ; ; f; }
+/* */class S__ZIfwFooX_f extends MixZIfwFooX_f [C] { ; ; f; }
+/* */class S__ZIfwFooX_fwBar___ extends MixZIfwFooX_fwBar___[C] { ; ; f; }
+/* */class S__ZIfwFooX_fwBar__f extends MixZIfwFooX_fwBar__f[C] { ; ; f; }
+// */class S__ZIfwFooX_fwBar_I_ extends MixZIfwFooX_fwBar_I_[C] { ; ; f; }
+// */class S__ZIfwFooX_fwBar_If extends MixZIfwFooX_fwBar_If[C] { ; ; f; }
+/* */class S__ZIfwFooX_fwBarY__ extends MixZIfwFooX_fwBarY__[C] { ; ; f; }
+/* */class S__ZIfwFooX_fwBarY_f extends MixZIfwFooX_fwBarY_f[C] { ; ; f; }
+// */class S__ZIfwFooX_fwBarYI_ extends MixZIfwFooX_fwBarYI_[C] { ; ; f; }
+// */class S__ZIfwFooX_fwBarYIf extends MixZIfwFooX_fwBarYIf[C] { ; ; f; }
+// */class S__ZIfwFooXI_ extends MixZIfwFooXI_ [C] { ; ; f; }
+// */class S__ZIfwFooXI_wBar___ extends MixZIfwFooXI_wBar___[C] { ; ; f; }
+// */class S__ZIfwFooXI_wBar__f extends MixZIfwFooXI_wBar__f[C] { ; ; f; }
+// */class S__ZIfwFooXI_wBar_I_ extends MixZIfwFooXI_wBar_I_[C] { ; ; f; }
+// */class S__ZIfwFooXI_wBar_If extends MixZIfwFooXI_wBar_If[C] { ; ; f; }
+// */class S__ZIfwFooXI_wBarY__ extends MixZIfwFooXI_wBarY__[C] { ; ; f; }
+// */class S__ZIfwFooXI_wBarY_f extends MixZIfwFooXI_wBarY_f[C] { ; ; f; }
+// */class S__ZIfwFooXI_wBarYI_ extends MixZIfwFooXI_wBarYI_[C] { ; ; f; }
+// */class S__ZIfwFooXI_wBarYIf extends MixZIfwFooXI_wBarYIf[C] { ; ; f; }
+// */class S__ZIfwFooXIf extends MixZIfwFooXIf [C] { ; ; f; }
+// */class S__ZIfwFooXIfwBar___ extends MixZIfwFooXIfwBar___[C] { ; ; f; }
+// */class S__ZIfwFooXIfwBar__f extends MixZIfwFooXIfwBar__f[C] { ; ; f; }
+// */class S__ZIfwFooXIfwBar_I_ extends MixZIfwFooXIfwBar_I_[C] { ; ; f; }
+// */class S__ZIfwFooXIfwBar_If extends MixZIfwFooXIfwBar_If[C] { ; ; f; }
+// */class S__ZIfwFooXIfwBarY__ extends MixZIfwFooXIfwBarY__[C] { ; ; f; }
+// */class S__ZIfwFooXIfwBarY_f extends MixZIfwFooXIfwBarY_f[C] { ; ; f; }
+// */class S__ZIfwFooXIfwBarYI_ extends MixZIfwFooXIfwBarYI_[C] { ; ; f; }
+// */class S__ZIfwFooXIfwBarYIf extends MixZIfwFooXIfwBarYIf[C] { ; ; f; }
+
+
+
+/* */class S_T___eFoo___ [T] extends Mix___eFoo___ { class I; def f: I = {sub; null}; f; }
+/* */class S_T___eFoo___wBar___[T] extends Mix___eFoo___wBar___ { class I; def f: I = {sub; null}; f; }
+/* */class S_T___eFoo___wBar__f[T] extends Mix___eFoo___wBar__f { class I; ; f; }
+/* */class S_T___eFoo___wBar_I_[T] extends Mix___eFoo___wBar_I_ { ; def f: I = {sub; null}; f; }
+/* */class S_T___eFoo___wBar_If[T] extends Mix___eFoo___wBar_If { ; ; f; }
+/* */class S_T___eFoo___wBarY__[T] extends Mix___eFoo___wBarY__ { class I; def f: I = {sub; null}; f; }
+/* */class S_T___eFoo___wBarY_f[T] extends Mix___eFoo___wBarY_f { class I; ; f; }
+/* */class S_T___eFoo___wBarYI_[T] extends Mix___eFoo___wBarYI_ { ; def f: I = {sub; null}; f; }
+/* */class S_T___eFoo___wBarYIf[T] extends Mix___eFoo___wBarYIf { ; ; f; }
+/* */class S_T___eFoo__f [T] extends Mix___eFoo__f { class I; ; f; }
+/* */class S_T___eFoo__fwBar___[T] extends Mix___eFoo__fwBar___ { class I; ; f; }
+// */class S_T___eFoo__fwBar__f[T] extends Mix___eFoo__fwBar__f { class I; ; f; }
+/* */class S_T___eFoo__fwBar_I_[T] extends Mix___eFoo__fwBar_I_ { ; ; f; }
+// */class S_T___eFoo__fwBar_If[T] extends Mix___eFoo__fwBar_If { ; ; f; }
+/* */class S_T___eFoo__fwBarY__[T] extends Mix___eFoo__fwBarY__ { class I; ; f; }
+// */class S_T___eFoo__fwBarY_f[T] extends Mix___eFoo__fwBarY_f { class I; ; f; }
+/* */class S_T___eFoo__fwBarYI_[T] extends Mix___eFoo__fwBarYI_ { ; ; f; }
+// */class S_T___eFoo__fwBarYIf[T] extends Mix___eFoo__fwBarYIf { ; ; f; }
+/* */class S_T___eFoo_I_ [T] extends Mix___eFoo_I_ { ; def f: I = {sub; null}; f; }
+/* */class S_T___eFoo_I_wBar___[T] extends Mix___eFoo_I_wBar___ { ; def f: I = {sub; null}; f; }
+/* */class S_T___eFoo_I_wBar__f[T] extends Mix___eFoo_I_wBar__f { ; ; f; }
+// */class S_T___eFoo_I_wBar_I_[T] extends Mix___eFoo_I_wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S_T___eFoo_I_wBar_If[T] extends Mix___eFoo_I_wBar_If { ; ; f; }
+/* */class S_T___eFoo_I_wBarY__[T] extends Mix___eFoo_I_wBarY__ { ; def f: I = {sub; null}; f; }
+/* */class S_T___eFoo_I_wBarY_f[T] extends Mix___eFoo_I_wBarY_f { ; ; f; }
+// */class S_T___eFoo_I_wBarYI_[T] extends Mix___eFoo_I_wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S_T___eFoo_I_wBarYIf[T] extends Mix___eFoo_I_wBarYIf { ; ; f; }
+/* */class S_T___eFoo_If [T] extends Mix___eFoo_If { ; ; f; }
+/* */class S_T___eFoo_IfwBar___[T] extends Mix___eFoo_IfwBar___ { ; ; f; }
+// */class S_T___eFoo_IfwBar__f[T] extends Mix___eFoo_IfwBar__f { ; ; f; }
+// */class S_T___eFoo_IfwBar_I_[T] extends Mix___eFoo_IfwBar_I_ { ; ; f; }
+// */class S_T___eFoo_IfwBar_If[T] extends Mix___eFoo_IfwBar_If { ; ; f; }
+/* */class S_T___eFoo_IfwBarY__[T] extends Mix___eFoo_IfwBarY__ { ; ; f; }
+// */class S_T___eFoo_IfwBarY_f[T] extends Mix___eFoo_IfwBarY_f { ; ; f; }
+// */class S_T___eFoo_IfwBarYI_[T] extends Mix___eFoo_IfwBarYI_ { ; ; f; }
+// */class S_T___eFoo_IfwBarYIf[T] extends Mix___eFoo_IfwBarYIf { ; ; f; }
+/* */class S_T___eFooX__ [T] extends Mix___eFooX__ { class I; def f: I = {sub; null}; f; }
+/* */class S_T___eFooX__wBar___[T] extends Mix___eFooX__wBar___ { class I; def f: I = {sub; null}; f; }
+/* */class S_T___eFooX__wBar__f[T] extends Mix___eFooX__wBar__f { class I; ; f; }
+/* */class S_T___eFooX__wBar_I_[T] extends Mix___eFooX__wBar_I_ { ; def f: I = {sub; null}; f; }
+/* */class S_T___eFooX__wBar_If[T] extends Mix___eFooX__wBar_If { ; ; f; }
+/* */class S_T___eFooX__wBarY__[T] extends Mix___eFooX__wBarY__ { class I; def f: I = {sub; null}; f; }
+/* */class S_T___eFooX__wBarY_f[T] extends Mix___eFooX__wBarY_f { class I; ; f; }
+/* */class S_T___eFooX__wBarYI_[T] extends Mix___eFooX__wBarYI_ { ; def f: I = {sub; null}; f; }
+/* */class S_T___eFooX__wBarYIf[T] extends Mix___eFooX__wBarYIf { ; ; f; }
+/* */class S_T___eFooX_f [T] extends Mix___eFooX_f { class I; ; f; }
+/* */class S_T___eFooX_fwBar___[T] extends Mix___eFooX_fwBar___ { class I; ; f; }
+// */class S_T___eFooX_fwBar__f[T] extends Mix___eFooX_fwBar__f { class I; ; f; }
+/* */class S_T___eFooX_fwBar_I_[T] extends Mix___eFooX_fwBar_I_ { ; ; f; }
+// */class S_T___eFooX_fwBar_If[T] extends Mix___eFooX_fwBar_If { ; ; f; }
+/* */class S_T___eFooX_fwBarY__[T] extends Mix___eFooX_fwBarY__ { class I; ; f; }
+// */class S_T___eFooX_fwBarY_f[T] extends Mix___eFooX_fwBarY_f { class I; ; f; }
+/* */class S_T___eFooX_fwBarYI_[T] extends Mix___eFooX_fwBarYI_ { ; ; f; }
+// */class S_T___eFooX_fwBarYIf[T] extends Mix___eFooX_fwBarYIf { ; ; f; }
+/* */class S_T___eFooXI_ [T] extends Mix___eFooXI_ { ; def f: I = {sub; null}; f; }
+/* */class S_T___eFooXI_wBar___[T] extends Mix___eFooXI_wBar___ { ; def f: I = {sub; null}; f; }
+/* */class S_T___eFooXI_wBar__f[T] extends Mix___eFooXI_wBar__f { ; ; f; }
+// */class S_T___eFooXI_wBar_I_[T] extends Mix___eFooXI_wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S_T___eFooXI_wBar_If[T] extends Mix___eFooXI_wBar_If { ; ; f; }
+/* */class S_T___eFooXI_wBarY__[T] extends Mix___eFooXI_wBarY__ { ; def f: I = {sub; null}; f; }
+/* */class S_T___eFooXI_wBarY_f[T] extends Mix___eFooXI_wBarY_f { ; ; f; }
+// */class S_T___eFooXI_wBarYI_[T] extends Mix___eFooXI_wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S_T___eFooXI_wBarYIf[T] extends Mix___eFooXI_wBarYIf { ; ; f; }
+/* */class S_T___eFooXIf [T] extends Mix___eFooXIf { ; ; f; }
+/* */class S_T___eFooXIfwBar___[T] extends Mix___eFooXIfwBar___ { ; ; f; }
+// */class S_T___eFooXIfwBar__f[T] extends Mix___eFooXIfwBar__f { ; ; f; }
+// */class S_T___eFooXIfwBar_I_[T] extends Mix___eFooXIfwBar_I_ { ; ; f; }
+// */class S_T___eFooXIfwBar_If[T] extends Mix___eFooXIfwBar_If { ; ; f; }
+/* */class S_T___eFooXIfwBarY__[T] extends Mix___eFooXIfwBarY__ { ; ; f; }
+// */class S_T___eFooXIfwBarY_f[T] extends Mix___eFooXIfwBarY_f { ; ; f; }
+// */class S_T___eFooXIfwBarYI_[T] extends Mix___eFooXIfwBarYI_ { ; ; f; }
+// */class S_T___eFooXIfwBarYIf[T] extends Mix___eFooXIfwBarYIf { ; ; f; }
+
+/* */class S_T__feFoo___ [T] extends Mix__feFoo___ { class I; ; f; }
+/* */class S_T__feFoo___wBar___[T] extends Mix__feFoo___wBar___ { class I; ; f; }
+/* */class S_T__feFoo___wBar__f[T] extends Mix__feFoo___wBar__f { class I; ; f; }
+/* */class S_T__feFoo___wBar_I_[T] extends Mix__feFoo___wBar_I_ { ; ; f; }
+/* */class S_T__feFoo___wBar_If[T] extends Mix__feFoo___wBar_If { ; ; f; }
+/* */class S_T__feFoo___wBarY__[T] extends Mix__feFoo___wBarY__ { class I; ; f; }
+/* */class S_T__feFoo___wBarY_f[T] extends Mix__feFoo___wBarY_f { class I; ; f; }
+/* */class S_T__feFoo___wBarYI_[T] extends Mix__feFoo___wBarYI_ { ; ; f; }
+/* */class S_T__feFoo___wBarYIf[T] extends Mix__feFoo___wBarYIf { ; ; f; }
+/* */class S_T__feFoo__f [T] extends Mix__feFoo__f { class I; ; f; }
+/* */class S_T__feFoo__fwBar___[T] extends Mix__feFoo__fwBar___ { class I; ; f; }
+/* */class S_T__feFoo__fwBar__f[T] extends Mix__feFoo__fwBar__f { class I; ; f; }
+/* */class S_T__feFoo__fwBar_I_[T] extends Mix__feFoo__fwBar_I_ { ; ; f; }
+/* */class S_T__feFoo__fwBar_If[T] extends Mix__feFoo__fwBar_If { ; ; f; }
+/* */class S_T__feFoo__fwBarY__[T] extends Mix__feFoo__fwBarY__ { class I; ; f; }
+/* */class S_T__feFoo__fwBarY_f[T] extends Mix__feFoo__fwBarY_f { class I; ; f; }
+/* */class S_T__feFoo__fwBarYI_[T] extends Mix__feFoo__fwBarYI_ { ; ; f; }
+/* */class S_T__feFoo__fwBarYIf[T] extends Mix__feFoo__fwBarYIf { ; ; f; }
+/* */class S_T__feFoo_I_ [T] extends Mix__feFoo_I_ { ; ; f; }
+/* */class S_T__feFoo_I_wBar___[T] extends Mix__feFoo_I_wBar___ { ; ; f; }
+/* */class S_T__feFoo_I_wBar__f[T] extends Mix__feFoo_I_wBar__f { ; ; f; }
+// */class S_T__feFoo_I_wBar_I_[T] extends Mix__feFoo_I_wBar_I_ { ; ; f; }
+// */class S_T__feFoo_I_wBar_If[T] extends Mix__feFoo_I_wBar_If { ; ; f; }
+/* */class S_T__feFoo_I_wBarY__[T] extends Mix__feFoo_I_wBarY__ { ; ; f; }
+/* */class S_T__feFoo_I_wBarY_f[T] extends Mix__feFoo_I_wBarY_f { ; ; f; }
+// */class S_T__feFoo_I_wBarYI_[T] extends Mix__feFoo_I_wBarYI_ { ; ; f; }
+// */class S_T__feFoo_I_wBarYIf[T] extends Mix__feFoo_I_wBarYIf { ; ; f; }
+/* */class S_T__feFoo_If [T] extends Mix__feFoo_If { ; ; f; }
+/* */class S_T__feFoo_IfwBar___[T] extends Mix__feFoo_IfwBar___ { ; ; f; }
+/* */class S_T__feFoo_IfwBar__f[T] extends Mix__feFoo_IfwBar__f { ; ; f; }
+// */class S_T__feFoo_IfwBar_I_[T] extends Mix__feFoo_IfwBar_I_ { ; ; f; }
+// */class S_T__feFoo_IfwBar_If[T] extends Mix__feFoo_IfwBar_If { ; ; f; }
+/* */class S_T__feFoo_IfwBarY__[T] extends Mix__feFoo_IfwBarY__ { ; ; f; }
+/* */class S_T__feFoo_IfwBarY_f[T] extends Mix__feFoo_IfwBarY_f { ; ; f; }
+// */class S_T__feFoo_IfwBarYI_[T] extends Mix__feFoo_IfwBarYI_ { ; ; f; }
+// */class S_T__feFoo_IfwBarYIf[T] extends Mix__feFoo_IfwBarYIf { ; ; f; }
+/* */class S_T__feFooX__ [T] extends Mix__feFooX__ { class I; ; f; }
+/* */class S_T__feFooX__wBar___[T] extends Mix__feFooX__wBar___ { class I; ; f; }
+/* */class S_T__feFooX__wBar__f[T] extends Mix__feFooX__wBar__f { class I; ; f; }
+/* */class S_T__feFooX__wBar_I_[T] extends Mix__feFooX__wBar_I_ { ; ; f; }
+/* */class S_T__feFooX__wBar_If[T] extends Mix__feFooX__wBar_If { ; ; f; }
+/* */class S_T__feFooX__wBarY__[T] extends Mix__feFooX__wBarY__ { class I; ; f; }
+/* */class S_T__feFooX__wBarY_f[T] extends Mix__feFooX__wBarY_f { class I; ; f; }
+/* */class S_T__feFooX__wBarYI_[T] extends Mix__feFooX__wBarYI_ { ; ; f; }
+/* */class S_T__feFooX__wBarYIf[T] extends Mix__feFooX__wBarYIf { ; ; f; }
+/* */class S_T__feFooX_f [T] extends Mix__feFooX_f { class I; ; f; }
+/* */class S_T__feFooX_fwBar___[T] extends Mix__feFooX_fwBar___ { class I; ; f; }
+/* */class S_T__feFooX_fwBar__f[T] extends Mix__feFooX_fwBar__f { class I; ; f; }
+/* */class S_T__feFooX_fwBar_I_[T] extends Mix__feFooX_fwBar_I_ { ; ; f; }
+/* */class S_T__feFooX_fwBar_If[T] extends Mix__feFooX_fwBar_If { ; ; f; }
+/* */class S_T__feFooX_fwBarY__[T] extends Mix__feFooX_fwBarY__ { class I; ; f; }
+/* */class S_T__feFooX_fwBarY_f[T] extends Mix__feFooX_fwBarY_f { class I; ; f; }
+/* */class S_T__feFooX_fwBarYI_[T] extends Mix__feFooX_fwBarYI_ { ; ; f; }
+/* */class S_T__feFooX_fwBarYIf[T] extends Mix__feFooX_fwBarYIf { ; ; f; }
+/* */class S_T__feFooXI_ [T] extends Mix__feFooXI_ { ; ; f; }
+/* */class S_T__feFooXI_wBar___[T] extends Mix__feFooXI_wBar___ { ; ; f; }
+/* */class S_T__feFooXI_wBar__f[T] extends Mix__feFooXI_wBar__f { ; ; f; }
+// */class S_T__feFooXI_wBar_I_[T] extends Mix__feFooXI_wBar_I_ { ; ; f; }
+// */class S_T__feFooXI_wBar_If[T] extends Mix__feFooXI_wBar_If { ; ; f; }
+/* */class S_T__feFooXI_wBarY__[T] extends Mix__feFooXI_wBarY__ { ; ; f; }
+/* */class S_T__feFooXI_wBarY_f[T] extends Mix__feFooXI_wBarY_f { ; ; f; }
+// */class S_T__feFooXI_wBarYI_[T] extends Mix__feFooXI_wBarYI_ { ; ; f; }
+// */class S_T__feFooXI_wBarYIf[T] extends Mix__feFooXI_wBarYIf { ; ; f; }
+/* */class S_T__feFooXIf [T] extends Mix__feFooXIf { ; ; f; }
+/* */class S_T__feFooXIfwBar___[T] extends Mix__feFooXIfwBar___ { ; ; f; }
+/* */class S_T__feFooXIfwBar__f[T] extends Mix__feFooXIfwBar__f { ; ; f; }
+// */class S_T__feFooXIfwBar_I_[T] extends Mix__feFooXIfwBar_I_ { ; ; f; }
+// */class S_T__feFooXIfwBar_If[T] extends Mix__feFooXIfwBar_If { ; ; f; }
+/* */class S_T__feFooXIfwBarY__[T] extends Mix__feFooXIfwBarY__ { ; ; f; }
+/* */class S_T__feFooXIfwBarY_f[T] extends Mix__feFooXIfwBarY_f { ; ; f; }
+// */class S_T__feFooXIfwBarYI_[T] extends Mix__feFooXIfwBarYI_ { ; ; f; }
+// */class S_T__feFooXIfwBarYIf[T] extends Mix__feFooXIfwBarYIf { ; ; f; }
+
+/* */class S_T_I_eFoo___ [T] extends Mix_I_eFoo___ { ; def f: I = {sub; null}; f; }
+/* */class S_T_I_eFoo___wBar___[T] extends Mix_I_eFoo___wBar___ { ; def f: I = {sub; null}; f; }
+/* */class S_T_I_eFoo___wBar__f[T] extends Mix_I_eFoo___wBar__f { ; ; f; }
+// */class S_T_I_eFoo___wBar_I_[T] extends Mix_I_eFoo___wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_eFoo___wBar_If[T] extends Mix_I_eFoo___wBar_If { ; ; f; }
+/* */class S_T_I_eFoo___wBarY__[T] extends Mix_I_eFoo___wBarY__ { ; def f: I = {sub; null}; f; }
+/* */class S_T_I_eFoo___wBarY_f[T] extends Mix_I_eFoo___wBarY_f { ; ; f; }
+// */class S_T_I_eFoo___wBarYI_[T] extends Mix_I_eFoo___wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_eFoo___wBarYIf[T] extends Mix_I_eFoo___wBarYIf { ; ; f; }
+/* */class S_T_I_eFoo__f [T] extends Mix_I_eFoo__f { ; ; f; }
+/* */class S_T_I_eFoo__fwBar___[T] extends Mix_I_eFoo__fwBar___ { ; ; f; }
+// */class S_T_I_eFoo__fwBar__f[T] extends Mix_I_eFoo__fwBar__f { ; ; f; }
+// */class S_T_I_eFoo__fwBar_I_[T] extends Mix_I_eFoo__fwBar_I_ { ; ; f; }
+// */class S_T_I_eFoo__fwBar_If[T] extends Mix_I_eFoo__fwBar_If { ; ; f; }
+/* */class S_T_I_eFoo__fwBarY__[T] extends Mix_I_eFoo__fwBarY__ { ; ; f; }
+// */class S_T_I_eFoo__fwBarY_f[T] extends Mix_I_eFoo__fwBarY_f { ; ; f; }
+// */class S_T_I_eFoo__fwBarYI_[T] extends Mix_I_eFoo__fwBarYI_ { ; ; f; }
+// */class S_T_I_eFoo__fwBarYIf[T] extends Mix_I_eFoo__fwBarYIf { ; ; f; }
+// */class S_T_I_eFoo_I_ [T] extends Mix_I_eFoo_I_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_eFoo_I_wBar___[T] extends Mix_I_eFoo_I_wBar___ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_eFoo_I_wBar__f[T] extends Mix_I_eFoo_I_wBar__f { ; ; f; }
+// */class S_T_I_eFoo_I_wBar_I_[T] extends Mix_I_eFoo_I_wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_eFoo_I_wBar_If[T] extends Mix_I_eFoo_I_wBar_If { ; ; f; }
+// */class S_T_I_eFoo_I_wBarY__[T] extends Mix_I_eFoo_I_wBarY__ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_eFoo_I_wBarY_f[T] extends Mix_I_eFoo_I_wBarY_f { ; ; f; }
+// */class S_T_I_eFoo_I_wBarYI_[T] extends Mix_I_eFoo_I_wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_eFoo_I_wBarYIf[T] extends Mix_I_eFoo_I_wBarYIf { ; ; f; }
+// */class S_T_I_eFoo_If [T] extends Mix_I_eFoo_If { ; ; f; }
+// */class S_T_I_eFoo_IfwBar___[T] extends Mix_I_eFoo_IfwBar___ { ; ; f; }
+// */class S_T_I_eFoo_IfwBar__f[T] extends Mix_I_eFoo_IfwBar__f { ; ; f; }
+// */class S_T_I_eFoo_IfwBar_I_[T] extends Mix_I_eFoo_IfwBar_I_ { ; ; f; }
+// */class S_T_I_eFoo_IfwBar_If[T] extends Mix_I_eFoo_IfwBar_If { ; ; f; }
+// */class S_T_I_eFoo_IfwBarY__[T] extends Mix_I_eFoo_IfwBarY__ { ; ; f; }
+// */class S_T_I_eFoo_IfwBarY_f[T] extends Mix_I_eFoo_IfwBarY_f { ; ; f; }
+// */class S_T_I_eFoo_IfwBarYI_[T] extends Mix_I_eFoo_IfwBarYI_ { ; ; f; }
+// */class S_T_I_eFoo_IfwBarYIf[T] extends Mix_I_eFoo_IfwBarYIf { ; ; f; }
+/* */class S_T_I_eFooX__ [T] extends Mix_I_eFooX__ { ; def f: I = {sub; null}; f; }
+/* */class S_T_I_eFooX__wBar___[T] extends Mix_I_eFooX__wBar___ { ; def f: I = {sub; null}; f; }
+/* */class S_T_I_eFooX__wBar__f[T] extends Mix_I_eFooX__wBar__f { ; ; f; }
+// */class S_T_I_eFooX__wBar_I_[T] extends Mix_I_eFooX__wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_eFooX__wBar_If[T] extends Mix_I_eFooX__wBar_If { ; ; f; }
+/* */class S_T_I_eFooX__wBarY__[T] extends Mix_I_eFooX__wBarY__ { ; def f: I = {sub; null}; f; }
+/* */class S_T_I_eFooX__wBarY_f[T] extends Mix_I_eFooX__wBarY_f { ; ; f; }
+// */class S_T_I_eFooX__wBarYI_[T] extends Mix_I_eFooX__wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_eFooX__wBarYIf[T] extends Mix_I_eFooX__wBarYIf { ; ; f; }
+/* */class S_T_I_eFooX_f [T] extends Mix_I_eFooX_f { ; ; f; }
+/* */class S_T_I_eFooX_fwBar___[T] extends Mix_I_eFooX_fwBar___ { ; ; f; }
+// */class S_T_I_eFooX_fwBar__f[T] extends Mix_I_eFooX_fwBar__f { ; ; f; }
+// */class S_T_I_eFooX_fwBar_I_[T] extends Mix_I_eFooX_fwBar_I_ { ; ; f; }
+// */class S_T_I_eFooX_fwBar_If[T] extends Mix_I_eFooX_fwBar_If { ; ; f; }
+/* */class S_T_I_eFooX_fwBarY__[T] extends Mix_I_eFooX_fwBarY__ { ; ; f; }
+// */class S_T_I_eFooX_fwBarY_f[T] extends Mix_I_eFooX_fwBarY_f { ; ; f; }
+// */class S_T_I_eFooX_fwBarYI_[T] extends Mix_I_eFooX_fwBarYI_ { ; ; f; }
+// */class S_T_I_eFooX_fwBarYIf[T] extends Mix_I_eFooX_fwBarYIf { ; ; f; }
+// */class S_T_I_eFooXI_ [T] extends Mix_I_eFooXI_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_eFooXI_wBar___[T] extends Mix_I_eFooXI_wBar___ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_eFooXI_wBar__f[T] extends Mix_I_eFooXI_wBar__f { ; ; f; }
+// */class S_T_I_eFooXI_wBar_I_[T] extends Mix_I_eFooXI_wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_eFooXI_wBar_If[T] extends Mix_I_eFooXI_wBar_If { ; ; f; }
+// */class S_T_I_eFooXI_wBarY__[T] extends Mix_I_eFooXI_wBarY__ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_eFooXI_wBarY_f[T] extends Mix_I_eFooXI_wBarY_f { ; ; f; }
+// */class S_T_I_eFooXI_wBarYI_[T] extends Mix_I_eFooXI_wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_eFooXI_wBarYIf[T] extends Mix_I_eFooXI_wBarYIf { ; ; f; }
+// */class S_T_I_eFooXIf [T] extends Mix_I_eFooXIf { ; ; f; }
+// */class S_T_I_eFooXIfwBar___[T] extends Mix_I_eFooXIfwBar___ { ; ; f; }
+// */class S_T_I_eFooXIfwBar__f[T] extends Mix_I_eFooXIfwBar__f { ; ; f; }
+// */class S_T_I_eFooXIfwBar_I_[T] extends Mix_I_eFooXIfwBar_I_ { ; ; f; }
+// */class S_T_I_eFooXIfwBar_If[T] extends Mix_I_eFooXIfwBar_If { ; ; f; }
+// */class S_T_I_eFooXIfwBarY__[T] extends Mix_I_eFooXIfwBarY__ { ; ; f; }
+// */class S_T_I_eFooXIfwBarY_f[T] extends Mix_I_eFooXIfwBarY_f { ; ; f; }
+// */class S_T_I_eFooXIfwBarYI_[T] extends Mix_I_eFooXIfwBarYI_ { ; ; f; }
+// */class S_T_I_eFooXIfwBarYIf[T] extends Mix_I_eFooXIfwBarYIf { ; ; f; }
+
+/* */class S_T_IfeFoo___ [T] extends Mix_IfeFoo___ { ; ; f; }
+/* */class S_T_IfeFoo___wBar___[T] extends Mix_IfeFoo___wBar___ { ; ; f; }
+/* */class S_T_IfeFoo___wBar__f[T] extends Mix_IfeFoo___wBar__f { ; ; f; }
+// */class S_T_IfeFoo___wBar_I_[T] extends Mix_IfeFoo___wBar_I_ { ; ; f; }
+// */class S_T_IfeFoo___wBar_If[T] extends Mix_IfeFoo___wBar_If { ; ; f; }
+/* */class S_T_IfeFoo___wBarY__[T] extends Mix_IfeFoo___wBarY__ { ; ; f; }
+/* */class S_T_IfeFoo___wBarY_f[T] extends Mix_IfeFoo___wBarY_f { ; ; f; }
+// */class S_T_IfeFoo___wBarYI_[T] extends Mix_IfeFoo___wBarYI_ { ; ; f; }
+// */class S_T_IfeFoo___wBarYIf[T] extends Mix_IfeFoo___wBarYIf { ; ; f; }
+/* */class S_T_IfeFoo__f [T] extends Mix_IfeFoo__f { ; ; f; }
+/* */class S_T_IfeFoo__fwBar___[T] extends Mix_IfeFoo__fwBar___ { ; ; f; }
+/* */class S_T_IfeFoo__fwBar__f[T] extends Mix_IfeFoo__fwBar__f { ; ; f; }
+// */class S_T_IfeFoo__fwBar_I_[T] extends Mix_IfeFoo__fwBar_I_ { ; ; f; }
+// */class S_T_IfeFoo__fwBar_If[T] extends Mix_IfeFoo__fwBar_If { ; ; f; }
+/* */class S_T_IfeFoo__fwBarY__[T] extends Mix_IfeFoo__fwBarY__ { ; ; f; }
+/* */class S_T_IfeFoo__fwBarY_f[T] extends Mix_IfeFoo__fwBarY_f { ; ; f; }
+// */class S_T_IfeFoo__fwBarYI_[T] extends Mix_IfeFoo__fwBarYI_ { ; ; f; }
+// */class S_T_IfeFoo__fwBarYIf[T] extends Mix_IfeFoo__fwBarYIf { ; ; f; }
+// */class S_T_IfeFoo_I_ [T] extends Mix_IfeFoo_I_ { ; ; f; }
+// */class S_T_IfeFoo_I_wBar___[T] extends Mix_IfeFoo_I_wBar___ { ; ; f; }
+// */class S_T_IfeFoo_I_wBar__f[T] extends Mix_IfeFoo_I_wBar__f { ; ; f; }
+// */class S_T_IfeFoo_I_wBar_I_[T] extends Mix_IfeFoo_I_wBar_I_ { ; ; f; }
+// */class S_T_IfeFoo_I_wBar_If[T] extends Mix_IfeFoo_I_wBar_If { ; ; f; }
+// */class S_T_IfeFoo_I_wBarY__[T] extends Mix_IfeFoo_I_wBarY__ { ; ; f; }
+// */class S_T_IfeFoo_I_wBarY_f[T] extends Mix_IfeFoo_I_wBarY_f { ; ; f; }
+// */class S_T_IfeFoo_I_wBarYI_[T] extends Mix_IfeFoo_I_wBarYI_ { ; ; f; }
+// */class S_T_IfeFoo_I_wBarYIf[T] extends Mix_IfeFoo_I_wBarYIf { ; ; f; }
+// */class S_T_IfeFoo_If [T] extends Mix_IfeFoo_If { ; ; f; }
+// */class S_T_IfeFoo_IfwBar___[T] extends Mix_IfeFoo_IfwBar___ { ; ; f; }
+// */class S_T_IfeFoo_IfwBar__f[T] extends Mix_IfeFoo_IfwBar__f { ; ; f; }
+// */class S_T_IfeFoo_IfwBar_I_[T] extends Mix_IfeFoo_IfwBar_I_ { ; ; f; }
+// */class S_T_IfeFoo_IfwBar_If[T] extends Mix_IfeFoo_IfwBar_If { ; ; f; }
+// */class S_T_IfeFoo_IfwBarY__[T] extends Mix_IfeFoo_IfwBarY__ { ; ; f; }
+// */class S_T_IfeFoo_IfwBarY_f[T] extends Mix_IfeFoo_IfwBarY_f { ; ; f; }
+// */class S_T_IfeFoo_IfwBarYI_[T] extends Mix_IfeFoo_IfwBarYI_ { ; ; f; }
+// */class S_T_IfeFoo_IfwBarYIf[T] extends Mix_IfeFoo_IfwBarYIf { ; ; f; }
+/* */class S_T_IfeFooX__ [T] extends Mix_IfeFooX__ { ; ; f; }
+/* */class S_T_IfeFooX__wBar___[T] extends Mix_IfeFooX__wBar___ { ; ; f; }
+/* */class S_T_IfeFooX__wBar__f[T] extends Mix_IfeFooX__wBar__f { ; ; f; }
+// */class S_T_IfeFooX__wBar_I_[T] extends Mix_IfeFooX__wBar_I_ { ; ; f; }
+// */class S_T_IfeFooX__wBar_If[T] extends Mix_IfeFooX__wBar_If { ; ; f; }
+/* */class S_T_IfeFooX__wBarY__[T] extends Mix_IfeFooX__wBarY__ { ; ; f; }
+/* */class S_T_IfeFooX__wBarY_f[T] extends Mix_IfeFooX__wBarY_f { ; ; f; }
+// */class S_T_IfeFooX__wBarYI_[T] extends Mix_IfeFooX__wBarYI_ { ; ; f; }
+// */class S_T_IfeFooX__wBarYIf[T] extends Mix_IfeFooX__wBarYIf { ; ; f; }
+/* */class S_T_IfeFooX_f [T] extends Mix_IfeFooX_f { ; ; f; }
+/* */class S_T_IfeFooX_fwBar___[T] extends Mix_IfeFooX_fwBar___ { ; ; f; }
+/* */class S_T_IfeFooX_fwBar__f[T] extends Mix_IfeFooX_fwBar__f { ; ; f; }
+// */class S_T_IfeFooX_fwBar_I_[T] extends Mix_IfeFooX_fwBar_I_ { ; ; f; }
+// */class S_T_IfeFooX_fwBar_If[T] extends Mix_IfeFooX_fwBar_If { ; ; f; }
+/* */class S_T_IfeFooX_fwBarY__[T] extends Mix_IfeFooX_fwBarY__ { ; ; f; }
+/* */class S_T_IfeFooX_fwBarY_f[T] extends Mix_IfeFooX_fwBarY_f { ; ; f; }
+// */class S_T_IfeFooX_fwBarYI_[T] extends Mix_IfeFooX_fwBarYI_ { ; ; f; }
+// */class S_T_IfeFooX_fwBarYIf[T] extends Mix_IfeFooX_fwBarYIf { ; ; f; }
+// */class S_T_IfeFooXI_ [T] extends Mix_IfeFooXI_ { ; ; f; }
+// */class S_T_IfeFooXI_wBar___[T] extends Mix_IfeFooXI_wBar___ { ; ; f; }
+// */class S_T_IfeFooXI_wBar__f[T] extends Mix_IfeFooXI_wBar__f { ; ; f; }
+// */class S_T_IfeFooXI_wBar_I_[T] extends Mix_IfeFooXI_wBar_I_ { ; ; f; }
+// */class S_T_IfeFooXI_wBar_If[T] extends Mix_IfeFooXI_wBar_If { ; ; f; }
+// */class S_T_IfeFooXI_wBarY__[T] extends Mix_IfeFooXI_wBarY__ { ; ; f; }
+// */class S_T_IfeFooXI_wBarY_f[T] extends Mix_IfeFooXI_wBarY_f { ; ; f; }
+// */class S_T_IfeFooXI_wBarYI_[T] extends Mix_IfeFooXI_wBarYI_ { ; ; f; }
+// */class S_T_IfeFooXI_wBarYIf[T] extends Mix_IfeFooXI_wBarYIf { ; ; f; }
+// */class S_T_IfeFooXIf [T] extends Mix_IfeFooXIf { ; ; f; }
+// */class S_T_IfeFooXIfwBar___[T] extends Mix_IfeFooXIfwBar___ { ; ; f; }
+// */class S_T_IfeFooXIfwBar__f[T] extends Mix_IfeFooXIfwBar__f { ; ; f; }
+// */class S_T_IfeFooXIfwBar_I_[T] extends Mix_IfeFooXIfwBar_I_ { ; ; f; }
+// */class S_T_IfeFooXIfwBar_If[T] extends Mix_IfeFooXIfwBar_If { ; ; f; }
+// */class S_T_IfeFooXIfwBarY__[T] extends Mix_IfeFooXIfwBarY__ { ; ; f; }
+// */class S_T_IfeFooXIfwBarY_f[T] extends Mix_IfeFooXIfwBarY_f { ; ; f; }
+// */class S_T_IfeFooXIfwBarYI_[T] extends Mix_IfeFooXIfwBarYI_ { ; ; f; }
+// */class S_T_IfeFooXIfwBarYIf[T] extends Mix_IfeFooXIfwBarYIf { ; ; f; }
+
+/* */class S_TZ__eFoo___ [T] extends MixZ__eFoo___ [C] { class I; def f: I = {sub; null}; f; }
+/* */class S_TZ__eFoo___wBar___[T] extends MixZ__eFoo___wBar___[C] { class I; def f: I = {sub; null}; f; }
+/* */class S_TZ__eFoo___wBar__f[T] extends MixZ__eFoo___wBar__f[C] { class I; ; f; }
+/* */class S_TZ__eFoo___wBar_I_[T] extends MixZ__eFoo___wBar_I_[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__eFoo___wBar_If[T] extends MixZ__eFoo___wBar_If[C] { ; ; f; }
+/* */class S_TZ__eFoo___wBarY__[T] extends MixZ__eFoo___wBarY__[C] { class I; def f: I = {sub; null}; f; }
+/* */class S_TZ__eFoo___wBarY_f[T] extends MixZ__eFoo___wBarY_f[C] { class I; ; f; }
+/* */class S_TZ__eFoo___wBarYI_[T] extends MixZ__eFoo___wBarYI_[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__eFoo___wBarYIf[T] extends MixZ__eFoo___wBarYIf[C] { ; ; f; }
+/* */class S_TZ__eFoo__f [T] extends MixZ__eFoo__f [C] { class I; ; f; }
+/* */class S_TZ__eFoo__fwBar___[T] extends MixZ__eFoo__fwBar___[C] { class I; ; f; }
+// */class S_TZ__eFoo__fwBar__f[T] extends MixZ__eFoo__fwBar__f[C] { class I; ; f; }
+/* */class S_TZ__eFoo__fwBar_I_[T] extends MixZ__eFoo__fwBar_I_[C] { ; ; f; }
+// */class S_TZ__eFoo__fwBar_If[T] extends MixZ__eFoo__fwBar_If[C] { ; ; f; }
+/* */class S_TZ__eFoo__fwBarY__[T] extends MixZ__eFoo__fwBarY__[C] { class I; ; f; }
+// */class S_TZ__eFoo__fwBarY_f[T] extends MixZ__eFoo__fwBarY_f[C] { class I; ; f; }
+/* */class S_TZ__eFoo__fwBarYI_[T] extends MixZ__eFoo__fwBarYI_[C] { ; ; f; }
+// */class S_TZ__eFoo__fwBarYIf[T] extends MixZ__eFoo__fwBarYIf[C] { ; ; f; }
+/* */class S_TZ__eFoo_I_ [T] extends MixZ__eFoo_I_ [C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__eFoo_I_wBar___[T] extends MixZ__eFoo_I_wBar___[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__eFoo_I_wBar__f[T] extends MixZ__eFoo_I_wBar__f[C] { ; ; f; }
+// */class S_TZ__eFoo_I_wBar_I_[T] extends MixZ__eFoo_I_wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZ__eFoo_I_wBar_If[T] extends MixZ__eFoo_I_wBar_If[C] { ; ; f; }
+/* */class S_TZ__eFoo_I_wBarY__[T] extends MixZ__eFoo_I_wBarY__[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__eFoo_I_wBarY_f[T] extends MixZ__eFoo_I_wBarY_f[C] { ; ; f; }
+// */class S_TZ__eFoo_I_wBarYI_[T] extends MixZ__eFoo_I_wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZ__eFoo_I_wBarYIf[T] extends MixZ__eFoo_I_wBarYIf[C] { ; ; f; }
+/* */class S_TZ__eFoo_If [T] extends MixZ__eFoo_If [C] { ; ; f; }
+/* */class S_TZ__eFoo_IfwBar___[T] extends MixZ__eFoo_IfwBar___[C] { ; ; f; }
+// */class S_TZ__eFoo_IfwBar__f[T] extends MixZ__eFoo_IfwBar__f[C] { ; ; f; }
+// */class S_TZ__eFoo_IfwBar_I_[T] extends MixZ__eFoo_IfwBar_I_[C] { ; ; f; }
+// */class S_TZ__eFoo_IfwBar_If[T] extends MixZ__eFoo_IfwBar_If[C] { ; ; f; }
+/* */class S_TZ__eFoo_IfwBarY__[T] extends MixZ__eFoo_IfwBarY__[C] { ; ; f; }
+// */class S_TZ__eFoo_IfwBarY_f[T] extends MixZ__eFoo_IfwBarY_f[C] { ; ; f; }
+// */class S_TZ__eFoo_IfwBarYI_[T] extends MixZ__eFoo_IfwBarYI_[C] { ; ; f; }
+// */class S_TZ__eFoo_IfwBarYIf[T] extends MixZ__eFoo_IfwBarYIf[C] { ; ; f; }
+/* */class S_TZ__eFooX__ [T] extends MixZ__eFooX__ [C] { class I; def f: I = {sub; null}; f; }
+/* */class S_TZ__eFooX__wBar___[T] extends MixZ__eFooX__wBar___[C] { class I; def f: I = {sub; null}; f; }
+/* */class S_TZ__eFooX__wBar__f[T] extends MixZ__eFooX__wBar__f[C] { class I; ; f; }
+/* */class S_TZ__eFooX__wBar_I_[T] extends MixZ__eFooX__wBar_I_[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__eFooX__wBar_If[T] extends MixZ__eFooX__wBar_If[C] { ; ; f; }
+/* */class S_TZ__eFooX__wBarY__[T] extends MixZ__eFooX__wBarY__[C] { class I; def f: I = {sub; null}; f; }
+/* */class S_TZ__eFooX__wBarY_f[T] extends MixZ__eFooX__wBarY_f[C] { class I; ; f; }
+/* */class S_TZ__eFooX__wBarYI_[T] extends MixZ__eFooX__wBarYI_[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__eFooX__wBarYIf[T] extends MixZ__eFooX__wBarYIf[C] { ; ; f; }
+/* */class S_TZ__eFooX_f [T] extends MixZ__eFooX_f [C] { class I; ; f; }
+/* */class S_TZ__eFooX_fwBar___[T] extends MixZ__eFooX_fwBar___[C] { class I; ; f; }
+// */class S_TZ__eFooX_fwBar__f[T] extends MixZ__eFooX_fwBar__f[C] { class I; ; f; }
+/* */class S_TZ__eFooX_fwBar_I_[T] extends MixZ__eFooX_fwBar_I_[C] { ; ; f; }
+// */class S_TZ__eFooX_fwBar_If[T] extends MixZ__eFooX_fwBar_If[C] { ; ; f; }
+/* */class S_TZ__eFooX_fwBarY__[T] extends MixZ__eFooX_fwBarY__[C] { class I; ; f; }
+// */class S_TZ__eFooX_fwBarY_f[T] extends MixZ__eFooX_fwBarY_f[C] { class I; ; f; }
+/* */class S_TZ__eFooX_fwBarYI_[T] extends MixZ__eFooX_fwBarYI_[C] { ; ; f; }
+// */class S_TZ__eFooX_fwBarYIf[T] extends MixZ__eFooX_fwBarYIf[C] { ; ; f; }
+/* */class S_TZ__eFooXI_ [T] extends MixZ__eFooXI_ [C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__eFooXI_wBar___[T] extends MixZ__eFooXI_wBar___[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__eFooXI_wBar__f[T] extends MixZ__eFooXI_wBar__f[C] { ; ; f; }
+// */class S_TZ__eFooXI_wBar_I_[T] extends MixZ__eFooXI_wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZ__eFooXI_wBar_If[T] extends MixZ__eFooXI_wBar_If[C] { ; ; f; }
+/* */class S_TZ__eFooXI_wBarY__[T] extends MixZ__eFooXI_wBarY__[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__eFooXI_wBarY_f[T] extends MixZ__eFooXI_wBarY_f[C] { ; ; f; }
+// */class S_TZ__eFooXI_wBarYI_[T] extends MixZ__eFooXI_wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZ__eFooXI_wBarYIf[T] extends MixZ__eFooXI_wBarYIf[C] { ; ; f; }
+/* */class S_TZ__eFooXIf [T] extends MixZ__eFooXIf [C] { ; ; f; }
+/* */class S_TZ__eFooXIfwBar___[T] extends MixZ__eFooXIfwBar___[C] { ; ; f; }
+// */class S_TZ__eFooXIfwBar__f[T] extends MixZ__eFooXIfwBar__f[C] { ; ; f; }
+// */class S_TZ__eFooXIfwBar_I_[T] extends MixZ__eFooXIfwBar_I_[C] { ; ; f; }
+// */class S_TZ__eFooXIfwBar_If[T] extends MixZ__eFooXIfwBar_If[C] { ; ; f; }
+/* */class S_TZ__eFooXIfwBarY__[T] extends MixZ__eFooXIfwBarY__[C] { ; ; f; }
+// */class S_TZ__eFooXIfwBarY_f[T] extends MixZ__eFooXIfwBarY_f[C] { ; ; f; }
+// */class S_TZ__eFooXIfwBarYI_[T] extends MixZ__eFooXIfwBarYI_[C] { ; ; f; }
+// */class S_TZ__eFooXIfwBarYIf[T] extends MixZ__eFooXIfwBarYIf[C] { ; ; f; }
+
+/* */class S_TZ_feFoo___ [T] extends MixZ_feFoo___ [C] { class I; ; f; }
+/* */class S_TZ_feFoo___wBar___[T] extends MixZ_feFoo___wBar___[C] { class I; ; f; }
+/* */class S_TZ_feFoo___wBar__f[T] extends MixZ_feFoo___wBar__f[C] { class I; ; f; }
+/* */class S_TZ_feFoo___wBar_I_[T] extends MixZ_feFoo___wBar_I_[C] { ; ; f; }
+/* */class S_TZ_feFoo___wBar_If[T] extends MixZ_feFoo___wBar_If[C] { ; ; f; }
+/* */class S_TZ_feFoo___wBarY__[T] extends MixZ_feFoo___wBarY__[C] { class I; ; f; }
+/* */class S_TZ_feFoo___wBarY_f[T] extends MixZ_feFoo___wBarY_f[C] { class I; ; f; }
+/* */class S_TZ_feFoo___wBarYI_[T] extends MixZ_feFoo___wBarYI_[C] { ; ; f; }
+/* */class S_TZ_feFoo___wBarYIf[T] extends MixZ_feFoo___wBarYIf[C] { ; ; f; }
+/* */class S_TZ_feFoo__f [T] extends MixZ_feFoo__f [C] { class I; ; f; }
+/* */class S_TZ_feFoo__fwBar___[T] extends MixZ_feFoo__fwBar___[C] { class I; ; f; }
+/* */class S_TZ_feFoo__fwBar__f[T] extends MixZ_feFoo__fwBar__f[C] { class I; ; f; }
+/* */class S_TZ_feFoo__fwBar_I_[T] extends MixZ_feFoo__fwBar_I_[C] { ; ; f; }
+/* */class S_TZ_feFoo__fwBar_If[T] extends MixZ_feFoo__fwBar_If[C] { ; ; f; }
+/* */class S_TZ_feFoo__fwBarY__[T] extends MixZ_feFoo__fwBarY__[C] { class I; ; f; }
+/* */class S_TZ_feFoo__fwBarY_f[T] extends MixZ_feFoo__fwBarY_f[C] { class I; ; f; }
+/* */class S_TZ_feFoo__fwBarYI_[T] extends MixZ_feFoo__fwBarYI_[C] { ; ; f; }
+/* */class S_TZ_feFoo__fwBarYIf[T] extends MixZ_feFoo__fwBarYIf[C] { ; ; f; }
+/* */class S_TZ_feFoo_I_ [T] extends MixZ_feFoo_I_ [C] { ; ; f; }
+/* */class S_TZ_feFoo_I_wBar___[T] extends MixZ_feFoo_I_wBar___[C] { ; ; f; }
+/* */class S_TZ_feFoo_I_wBar__f[T] extends MixZ_feFoo_I_wBar__f[C] { ; ; f; }
+// */class S_TZ_feFoo_I_wBar_I_[T] extends MixZ_feFoo_I_wBar_I_[C] { ; ; f; }
+// */class S_TZ_feFoo_I_wBar_If[T] extends MixZ_feFoo_I_wBar_If[C] { ; ; f; }
+/* */class S_TZ_feFoo_I_wBarY__[T] extends MixZ_feFoo_I_wBarY__[C] { ; ; f; }
+/* */class S_TZ_feFoo_I_wBarY_f[T] extends MixZ_feFoo_I_wBarY_f[C] { ; ; f; }
+// */class S_TZ_feFoo_I_wBarYI_[T] extends MixZ_feFoo_I_wBarYI_[C] { ; ; f; }
+// */class S_TZ_feFoo_I_wBarYIf[T] extends MixZ_feFoo_I_wBarYIf[C] { ; ; f; }
+/* */class S_TZ_feFoo_If [T] extends MixZ_feFoo_If [C] { ; ; f; }
+/* */class S_TZ_feFoo_IfwBar___[T] extends MixZ_feFoo_IfwBar___[C] { ; ; f; }
+/* */class S_TZ_feFoo_IfwBar__f[T] extends MixZ_feFoo_IfwBar__f[C] { ; ; f; }
+// */class S_TZ_feFoo_IfwBar_I_[T] extends MixZ_feFoo_IfwBar_I_[C] { ; ; f; }
+// */class S_TZ_feFoo_IfwBar_If[T] extends MixZ_feFoo_IfwBar_If[C] { ; ; f; }
+/* */class S_TZ_feFoo_IfwBarY__[T] extends MixZ_feFoo_IfwBarY__[C] { ; ; f; }
+/* */class S_TZ_feFoo_IfwBarY_f[T] extends MixZ_feFoo_IfwBarY_f[C] { ; ; f; }
+// */class S_TZ_feFoo_IfwBarYI_[T] extends MixZ_feFoo_IfwBarYI_[C] { ; ; f; }
+// */class S_TZ_feFoo_IfwBarYIf[T] extends MixZ_feFoo_IfwBarYIf[C] { ; ; f; }
+/* */class S_TZ_feFooX__ [T] extends MixZ_feFooX__ [C] { class I; ; f; }
+/* */class S_TZ_feFooX__wBar___[T] extends MixZ_feFooX__wBar___[C] { class I; ; f; }
+/* */class S_TZ_feFooX__wBar__f[T] extends MixZ_feFooX__wBar__f[C] { class I; ; f; }
+/* */class S_TZ_feFooX__wBar_I_[T] extends MixZ_feFooX__wBar_I_[C] { ; ; f; }
+/* */class S_TZ_feFooX__wBar_If[T] extends MixZ_feFooX__wBar_If[C] { ; ; f; }
+/* */class S_TZ_feFooX__wBarY__[T] extends MixZ_feFooX__wBarY__[C] { class I; ; f; }
+/* */class S_TZ_feFooX__wBarY_f[T] extends MixZ_feFooX__wBarY_f[C] { class I; ; f; }
+/* */class S_TZ_feFooX__wBarYI_[T] extends MixZ_feFooX__wBarYI_[C] { ; ; f; }
+/* */class S_TZ_feFooX__wBarYIf[T] extends MixZ_feFooX__wBarYIf[C] { ; ; f; }
+/* */class S_TZ_feFooX_f [T] extends MixZ_feFooX_f [C] { class I; ; f; }
+/* */class S_TZ_feFooX_fwBar___[T] extends MixZ_feFooX_fwBar___[C] { class I; ; f; }
+/* */class S_TZ_feFooX_fwBar__f[T] extends MixZ_feFooX_fwBar__f[C] { class I; ; f; }
+/* */class S_TZ_feFooX_fwBar_I_[T] extends MixZ_feFooX_fwBar_I_[C] { ; ; f; }
+/* */class S_TZ_feFooX_fwBar_If[T] extends MixZ_feFooX_fwBar_If[C] { ; ; f; }
+/* */class S_TZ_feFooX_fwBarY__[T] extends MixZ_feFooX_fwBarY__[C] { class I; ; f; }
+/* */class S_TZ_feFooX_fwBarY_f[T] extends MixZ_feFooX_fwBarY_f[C] { class I; ; f; }
+/* */class S_TZ_feFooX_fwBarYI_[T] extends MixZ_feFooX_fwBarYI_[C] { ; ; f; }
+/* */class S_TZ_feFooX_fwBarYIf[T] extends MixZ_feFooX_fwBarYIf[C] { ; ; f; }
+/* */class S_TZ_feFooXI_ [T] extends MixZ_feFooXI_ [C] { ; ; f; }
+/* */class S_TZ_feFooXI_wBar___[T] extends MixZ_feFooXI_wBar___[C] { ; ; f; }
+/* */class S_TZ_feFooXI_wBar__f[T] extends MixZ_feFooXI_wBar__f[C] { ; ; f; }
+// */class S_TZ_feFooXI_wBar_I_[T] extends MixZ_feFooXI_wBar_I_[C] { ; ; f; }
+// */class S_TZ_feFooXI_wBar_If[T] extends MixZ_feFooXI_wBar_If[C] { ; ; f; }
+/* */class S_TZ_feFooXI_wBarY__[T] extends MixZ_feFooXI_wBarY__[C] { ; ; f; }
+/* */class S_TZ_feFooXI_wBarY_f[T] extends MixZ_feFooXI_wBarY_f[C] { ; ; f; }
+// */class S_TZ_feFooXI_wBarYI_[T] extends MixZ_feFooXI_wBarYI_[C] { ; ; f; }
+// */class S_TZ_feFooXI_wBarYIf[T] extends MixZ_feFooXI_wBarYIf[C] { ; ; f; }
+/* */class S_TZ_feFooXIf [T] extends MixZ_feFooXIf [C] { ; ; f; }
+/* */class S_TZ_feFooXIfwBar___[T] extends MixZ_feFooXIfwBar___[C] { ; ; f; }
+/* */class S_TZ_feFooXIfwBar__f[T] extends MixZ_feFooXIfwBar__f[C] { ; ; f; }
+// */class S_TZ_feFooXIfwBar_I_[T] extends MixZ_feFooXIfwBar_I_[C] { ; ; f; }
+// */class S_TZ_feFooXIfwBar_If[T] extends MixZ_feFooXIfwBar_If[C] { ; ; f; }
+/* */class S_TZ_feFooXIfwBarY__[T] extends MixZ_feFooXIfwBarY__[C] { ; ; f; }
+/* */class S_TZ_feFooXIfwBarY_f[T] extends MixZ_feFooXIfwBarY_f[C] { ; ; f; }
+// */class S_TZ_feFooXIfwBarYI_[T] extends MixZ_feFooXIfwBarYI_[C] { ; ; f; }
+// */class S_TZ_feFooXIfwBarYIf[T] extends MixZ_feFooXIfwBarYIf[C] { ; ; f; }
+
+/* */class S_TZI_eFoo___ [T] extends MixZI_eFoo___ [C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZI_eFoo___wBar___[T] extends MixZI_eFoo___wBar___[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZI_eFoo___wBar__f[T] extends MixZI_eFoo___wBar__f[C] { ; ; f; }
+// */class S_TZI_eFoo___wBar_I_[T] extends MixZI_eFoo___wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_eFoo___wBar_If[T] extends MixZI_eFoo___wBar_If[C] { ; ; f; }
+/* */class S_TZI_eFoo___wBarY__[T] extends MixZI_eFoo___wBarY__[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZI_eFoo___wBarY_f[T] extends MixZI_eFoo___wBarY_f[C] { ; ; f; }
+// */class S_TZI_eFoo___wBarYI_[T] extends MixZI_eFoo___wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_eFoo___wBarYIf[T] extends MixZI_eFoo___wBarYIf[C] { ; ; f; }
+/* */class S_TZI_eFoo__f [T] extends MixZI_eFoo__f [C] { ; ; f; }
+/* */class S_TZI_eFoo__fwBar___[T] extends MixZI_eFoo__fwBar___[C] { ; ; f; }
+// */class S_TZI_eFoo__fwBar__f[T] extends MixZI_eFoo__fwBar__f[C] { ; ; f; }
+// */class S_TZI_eFoo__fwBar_I_[T] extends MixZI_eFoo__fwBar_I_[C] { ; ; f; }
+// */class S_TZI_eFoo__fwBar_If[T] extends MixZI_eFoo__fwBar_If[C] { ; ; f; }
+/* */class S_TZI_eFoo__fwBarY__[T] extends MixZI_eFoo__fwBarY__[C] { ; ; f; }
+// */class S_TZI_eFoo__fwBarY_f[T] extends MixZI_eFoo__fwBarY_f[C] { ; ; f; }
+// */class S_TZI_eFoo__fwBarYI_[T] extends MixZI_eFoo__fwBarYI_[C] { ; ; f; }
+// */class S_TZI_eFoo__fwBarYIf[T] extends MixZI_eFoo__fwBarYIf[C] { ; ; f; }
+// */class S_TZI_eFoo_I_ [T] extends MixZI_eFoo_I_ [C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_eFoo_I_wBar___[T] extends MixZI_eFoo_I_wBar___[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_eFoo_I_wBar__f[T] extends MixZI_eFoo_I_wBar__f[C] { ; ; f; }
+// */class S_TZI_eFoo_I_wBar_I_[T] extends MixZI_eFoo_I_wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_eFoo_I_wBar_If[T] extends MixZI_eFoo_I_wBar_If[C] { ; ; f; }
+// */class S_TZI_eFoo_I_wBarY__[T] extends MixZI_eFoo_I_wBarY__[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_eFoo_I_wBarY_f[T] extends MixZI_eFoo_I_wBarY_f[C] { ; ; f; }
+// */class S_TZI_eFoo_I_wBarYI_[T] extends MixZI_eFoo_I_wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_eFoo_I_wBarYIf[T] extends MixZI_eFoo_I_wBarYIf[C] { ; ; f; }
+// */class S_TZI_eFoo_If [T] extends MixZI_eFoo_If [C] { ; ; f; }
+// */class S_TZI_eFoo_IfwBar___[T] extends MixZI_eFoo_IfwBar___[C] { ; ; f; }
+// */class S_TZI_eFoo_IfwBar__f[T] extends MixZI_eFoo_IfwBar__f[C] { ; ; f; }
+// */class S_TZI_eFoo_IfwBar_I_[T] extends MixZI_eFoo_IfwBar_I_[C] { ; ; f; }
+// */class S_TZI_eFoo_IfwBar_If[T] extends MixZI_eFoo_IfwBar_If[C] { ; ; f; }
+// */class S_TZI_eFoo_IfwBarY__[T] extends MixZI_eFoo_IfwBarY__[C] { ; ; f; }
+// */class S_TZI_eFoo_IfwBarY_f[T] extends MixZI_eFoo_IfwBarY_f[C] { ; ; f; }
+// */class S_TZI_eFoo_IfwBarYI_[T] extends MixZI_eFoo_IfwBarYI_[C] { ; ; f; }
+// */class S_TZI_eFoo_IfwBarYIf[T] extends MixZI_eFoo_IfwBarYIf[C] { ; ; f; }
+/* */class S_TZI_eFooX__ [T] extends MixZI_eFooX__ [C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZI_eFooX__wBar___[T] extends MixZI_eFooX__wBar___[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZI_eFooX__wBar__f[T] extends MixZI_eFooX__wBar__f[C] { ; ; f; }
+// */class S_TZI_eFooX__wBar_I_[T] extends MixZI_eFooX__wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_eFooX__wBar_If[T] extends MixZI_eFooX__wBar_If[C] { ; ; f; }
+/* */class S_TZI_eFooX__wBarY__[T] extends MixZI_eFooX__wBarY__[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZI_eFooX__wBarY_f[T] extends MixZI_eFooX__wBarY_f[C] { ; ; f; }
+// */class S_TZI_eFooX__wBarYI_[T] extends MixZI_eFooX__wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_eFooX__wBarYIf[T] extends MixZI_eFooX__wBarYIf[C] { ; ; f; }
+/* */class S_TZI_eFooX_f [T] extends MixZI_eFooX_f [C] { ; ; f; }
+/* */class S_TZI_eFooX_fwBar___[T] extends MixZI_eFooX_fwBar___[C] { ; ; f; }
+// */class S_TZI_eFooX_fwBar__f[T] extends MixZI_eFooX_fwBar__f[C] { ; ; f; }
+// */class S_TZI_eFooX_fwBar_I_[T] extends MixZI_eFooX_fwBar_I_[C] { ; ; f; }
+// */class S_TZI_eFooX_fwBar_If[T] extends MixZI_eFooX_fwBar_If[C] { ; ; f; }
+/* */class S_TZI_eFooX_fwBarY__[T] extends MixZI_eFooX_fwBarY__[C] { ; ; f; }
+// */class S_TZI_eFooX_fwBarY_f[T] extends MixZI_eFooX_fwBarY_f[C] { ; ; f; }
+// */class S_TZI_eFooX_fwBarYI_[T] extends MixZI_eFooX_fwBarYI_[C] { ; ; f; }
+// */class S_TZI_eFooX_fwBarYIf[T] extends MixZI_eFooX_fwBarYIf[C] { ; ; f; }
+// */class S_TZI_eFooXI_ [T] extends MixZI_eFooXI_ [C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_eFooXI_wBar___[T] extends MixZI_eFooXI_wBar___[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_eFooXI_wBar__f[T] extends MixZI_eFooXI_wBar__f[C] { ; ; f; }
+// */class S_TZI_eFooXI_wBar_I_[T] extends MixZI_eFooXI_wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_eFooXI_wBar_If[T] extends MixZI_eFooXI_wBar_If[C] { ; ; f; }
+// */class S_TZI_eFooXI_wBarY__[T] extends MixZI_eFooXI_wBarY__[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_eFooXI_wBarY_f[T] extends MixZI_eFooXI_wBarY_f[C] { ; ; f; }
+// */class S_TZI_eFooXI_wBarYI_[T] extends MixZI_eFooXI_wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_eFooXI_wBarYIf[T] extends MixZI_eFooXI_wBarYIf[C] { ; ; f; }
+// */class S_TZI_eFooXIf [T] extends MixZI_eFooXIf [C] { ; ; f; }
+// */class S_TZI_eFooXIfwBar___[T] extends MixZI_eFooXIfwBar___[C] { ; ; f; }
+// */class S_TZI_eFooXIfwBar__f[T] extends MixZI_eFooXIfwBar__f[C] { ; ; f; }
+// */class S_TZI_eFooXIfwBar_I_[T] extends MixZI_eFooXIfwBar_I_[C] { ; ; f; }
+// */class S_TZI_eFooXIfwBar_If[T] extends MixZI_eFooXIfwBar_If[C] { ; ; f; }
+// */class S_TZI_eFooXIfwBarY__[T] extends MixZI_eFooXIfwBarY__[C] { ; ; f; }
+// */class S_TZI_eFooXIfwBarY_f[T] extends MixZI_eFooXIfwBarY_f[C] { ; ; f; }
+// */class S_TZI_eFooXIfwBarYI_[T] extends MixZI_eFooXIfwBarYI_[C] { ; ; f; }
+// */class S_TZI_eFooXIfwBarYIf[T] extends MixZI_eFooXIfwBarYIf[C] { ; ; f; }
+
+/* */class S_TZIfeFoo___ [T] extends MixZIfeFoo___ [C] { ; ; f; }
+/* */class S_TZIfeFoo___wBar___[T] extends MixZIfeFoo___wBar___[C] { ; ; f; }
+/* */class S_TZIfeFoo___wBar__f[T] extends MixZIfeFoo___wBar__f[C] { ; ; f; }
+// */class S_TZIfeFoo___wBar_I_[T] extends MixZIfeFoo___wBar_I_[C] { ; ; f; }
+// */class S_TZIfeFoo___wBar_If[T] extends MixZIfeFoo___wBar_If[C] { ; ; f; }
+/* */class S_TZIfeFoo___wBarY__[T] extends MixZIfeFoo___wBarY__[C] { ; ; f; }
+/* */class S_TZIfeFoo___wBarY_f[T] extends MixZIfeFoo___wBarY_f[C] { ; ; f; }
+// */class S_TZIfeFoo___wBarYI_[T] extends MixZIfeFoo___wBarYI_[C] { ; ; f; }
+// */class S_TZIfeFoo___wBarYIf[T] extends MixZIfeFoo___wBarYIf[C] { ; ; f; }
+/* */class S_TZIfeFoo__f [T] extends MixZIfeFoo__f [C] { ; ; f; }
+/* */class S_TZIfeFoo__fwBar___[T] extends MixZIfeFoo__fwBar___[C] { ; ; f; }
+/* */class S_TZIfeFoo__fwBar__f[T] extends MixZIfeFoo__fwBar__f[C] { ; ; f; }
+// */class S_TZIfeFoo__fwBar_I_[T] extends MixZIfeFoo__fwBar_I_[C] { ; ; f; }
+// */class S_TZIfeFoo__fwBar_If[T] extends MixZIfeFoo__fwBar_If[C] { ; ; f; }
+/* */class S_TZIfeFoo__fwBarY__[T] extends MixZIfeFoo__fwBarY__[C] { ; ; f; }
+/* */class S_TZIfeFoo__fwBarY_f[T] extends MixZIfeFoo__fwBarY_f[C] { ; ; f; }
+// */class S_TZIfeFoo__fwBarYI_[T] extends MixZIfeFoo__fwBarYI_[C] { ; ; f; }
+// */class S_TZIfeFoo__fwBarYIf[T] extends MixZIfeFoo__fwBarYIf[C] { ; ; f; }
+// */class S_TZIfeFoo_I_ [T] extends MixZIfeFoo_I_ [C] { ; ; f; }
+// */class S_TZIfeFoo_I_wBar___[T] extends MixZIfeFoo_I_wBar___[C] { ; ; f; }
+// */class S_TZIfeFoo_I_wBar__f[T] extends MixZIfeFoo_I_wBar__f[C] { ; ; f; }
+// */class S_TZIfeFoo_I_wBar_I_[T] extends MixZIfeFoo_I_wBar_I_[C] { ; ; f; }
+// */class S_TZIfeFoo_I_wBar_If[T] extends MixZIfeFoo_I_wBar_If[C] { ; ; f; }
+// */class S_TZIfeFoo_I_wBarY__[T] extends MixZIfeFoo_I_wBarY__[C] { ; ; f; }
+// */class S_TZIfeFoo_I_wBarY_f[T] extends MixZIfeFoo_I_wBarY_f[C] { ; ; f; }
+// */class S_TZIfeFoo_I_wBarYI_[T] extends MixZIfeFoo_I_wBarYI_[C] { ; ; f; }
+// */class S_TZIfeFoo_I_wBarYIf[T] extends MixZIfeFoo_I_wBarYIf[C] { ; ; f; }
+// */class S_TZIfeFoo_If [T] extends MixZIfeFoo_If [C] { ; ; f; }
+// */class S_TZIfeFoo_IfwBar___[T] extends MixZIfeFoo_IfwBar___[C] { ; ; f; }
+// */class S_TZIfeFoo_IfwBar__f[T] extends MixZIfeFoo_IfwBar__f[C] { ; ; f; }
+// */class S_TZIfeFoo_IfwBar_I_[T] extends MixZIfeFoo_IfwBar_I_[C] { ; ; f; }
+// */class S_TZIfeFoo_IfwBar_If[T] extends MixZIfeFoo_IfwBar_If[C] { ; ; f; }
+// */class S_TZIfeFoo_IfwBarY__[T] extends MixZIfeFoo_IfwBarY__[C] { ; ; f; }
+// */class S_TZIfeFoo_IfwBarY_f[T] extends MixZIfeFoo_IfwBarY_f[C] { ; ; f; }
+// */class S_TZIfeFoo_IfwBarYI_[T] extends MixZIfeFoo_IfwBarYI_[C] { ; ; f; }
+// */class S_TZIfeFoo_IfwBarYIf[T] extends MixZIfeFoo_IfwBarYIf[C] { ; ; f; }
+/* */class S_TZIfeFooX__ [T] extends MixZIfeFooX__ [C] { ; ; f; }
+/* */class S_TZIfeFooX__wBar___[T] extends MixZIfeFooX__wBar___[C] { ; ; f; }
+/* */class S_TZIfeFooX__wBar__f[T] extends MixZIfeFooX__wBar__f[C] { ; ; f; }
+// */class S_TZIfeFooX__wBar_I_[T] extends MixZIfeFooX__wBar_I_[C] { ; ; f; }
+// */class S_TZIfeFooX__wBar_If[T] extends MixZIfeFooX__wBar_If[C] { ; ; f; }
+/* */class S_TZIfeFooX__wBarY__[T] extends MixZIfeFooX__wBarY__[C] { ; ; f; }
+/* */class S_TZIfeFooX__wBarY_f[T] extends MixZIfeFooX__wBarY_f[C] { ; ; f; }
+// */class S_TZIfeFooX__wBarYI_[T] extends MixZIfeFooX__wBarYI_[C] { ; ; f; }
+// */class S_TZIfeFooX__wBarYIf[T] extends MixZIfeFooX__wBarYIf[C] { ; ; f; }
+/* */class S_TZIfeFooX_f [T] extends MixZIfeFooX_f [C] { ; ; f; }
+/* */class S_TZIfeFooX_fwBar___[T] extends MixZIfeFooX_fwBar___[C] { ; ; f; }
+/* */class S_TZIfeFooX_fwBar__f[T] extends MixZIfeFooX_fwBar__f[C] { ; ; f; }
+// */class S_TZIfeFooX_fwBar_I_[T] extends MixZIfeFooX_fwBar_I_[C] { ; ; f; }
+// */class S_TZIfeFooX_fwBar_If[T] extends MixZIfeFooX_fwBar_If[C] { ; ; f; }
+/* */class S_TZIfeFooX_fwBarY__[T] extends MixZIfeFooX_fwBarY__[C] { ; ; f; }
+/* */class S_TZIfeFooX_fwBarY_f[T] extends MixZIfeFooX_fwBarY_f[C] { ; ; f; }
+// */class S_TZIfeFooX_fwBarYI_[T] extends MixZIfeFooX_fwBarYI_[C] { ; ; f; }
+// */class S_TZIfeFooX_fwBarYIf[T] extends MixZIfeFooX_fwBarYIf[C] { ; ; f; }
+// */class S_TZIfeFooXI_ [T] extends MixZIfeFooXI_ [C] { ; ; f; }
+// */class S_TZIfeFooXI_wBar___[T] extends MixZIfeFooXI_wBar___[C] { ; ; f; }
+// */class S_TZIfeFooXI_wBar__f[T] extends MixZIfeFooXI_wBar__f[C] { ; ; f; }
+// */class S_TZIfeFooXI_wBar_I_[T] extends MixZIfeFooXI_wBar_I_[C] { ; ; f; }
+// */class S_TZIfeFooXI_wBar_If[T] extends MixZIfeFooXI_wBar_If[C] { ; ; f; }
+// */class S_TZIfeFooXI_wBarY__[T] extends MixZIfeFooXI_wBarY__[C] { ; ; f; }
+// */class S_TZIfeFooXI_wBarY_f[T] extends MixZIfeFooXI_wBarY_f[C] { ; ; f; }
+// */class S_TZIfeFooXI_wBarYI_[T] extends MixZIfeFooXI_wBarYI_[C] { ; ; f; }
+// */class S_TZIfeFooXI_wBarYIf[T] extends MixZIfeFooXI_wBarYIf[C] { ; ; f; }
+// */class S_TZIfeFooXIf [T] extends MixZIfeFooXIf [C] { ; ; f; }
+// */class S_TZIfeFooXIfwBar___[T] extends MixZIfeFooXIfwBar___[C] { ; ; f; }
+// */class S_TZIfeFooXIfwBar__f[T] extends MixZIfeFooXIfwBar__f[C] { ; ; f; }
+// */class S_TZIfeFooXIfwBar_I_[T] extends MixZIfeFooXIfwBar_I_[C] { ; ; f; }
+// */class S_TZIfeFooXIfwBar_If[T] extends MixZIfeFooXIfwBar_If[C] { ; ; f; }
+// */class S_TZIfeFooXIfwBarY__[T] extends MixZIfeFooXIfwBarY__[C] { ; ; f; }
+// */class S_TZIfeFooXIfwBarY_f[T] extends MixZIfeFooXIfwBarY_f[C] { ; ; f; }
+// */class S_TZIfeFooXIfwBarYI_[T] extends MixZIfeFooXIfwBarYI_[C] { ; ; f; }
+// */class S_TZIfeFooXIfwBarYIf[T] extends MixZIfeFooXIfwBarYIf[C] { ; ; f; }
+
+
+
+/* */class S_T___wFoo___ [T] extends Mix___wFoo___ { class I; def f: I = {sub; null}; f; }
+/* */class S_T___wFoo___wBar___[T] extends Mix___wFoo___wBar___ { class I; def f: I = {sub; null}; f; }
+/* */class S_T___wFoo___wBar__f[T] extends Mix___wFoo___wBar__f { class I; ; f; }
+/* */class S_T___wFoo___wBar_I_[T] extends Mix___wFoo___wBar_I_ { ; def f: I = {sub; null}; f; }
+/* */class S_T___wFoo___wBar_If[T] extends Mix___wFoo___wBar_If { ; ; f; }
+/* */class S_T___wFoo___wBarY__[T] extends Mix___wFoo___wBarY__ { class I; def f: I = {sub; null}; f; }
+/* */class S_T___wFoo___wBarY_f[T] extends Mix___wFoo___wBarY_f { class I; ; f; }
+/* */class S_T___wFoo___wBarYI_[T] extends Mix___wFoo___wBarYI_ { ; def f: I = {sub; null}; f; }
+/* */class S_T___wFoo___wBarYIf[T] extends Mix___wFoo___wBarYIf { ; ; f; }
+/* */class S_T___wFoo__f [T] extends Mix___wFoo__f { class I; ; f; }
+/* */class S_T___wFoo__fwBar___[T] extends Mix___wFoo__fwBar___ { class I; ; f; }
+// */class S_T___wFoo__fwBar__f[T] extends Mix___wFoo__fwBar__f { class I; ; f; }
+/* */class S_T___wFoo__fwBar_I_[T] extends Mix___wFoo__fwBar_I_ { ; ; f; }
+// */class S_T___wFoo__fwBar_If[T] extends Mix___wFoo__fwBar_If { ; ; f; }
+/* */class S_T___wFoo__fwBarY__[T] extends Mix___wFoo__fwBarY__ { class I; ; f; }
+// */class S_T___wFoo__fwBarY_f[T] extends Mix___wFoo__fwBarY_f { class I; ; f; }
+/* */class S_T___wFoo__fwBarYI_[T] extends Mix___wFoo__fwBarYI_ { ; ; f; }
+// */class S_T___wFoo__fwBarYIf[T] extends Mix___wFoo__fwBarYIf { ; ; f; }
+/* */class S_T___wFoo_I_ [T] extends Mix___wFoo_I_ { ; def f: I = {sub; null}; f; }
+/* */class S_T___wFoo_I_wBar___[T] extends Mix___wFoo_I_wBar___ { ; def f: I = {sub; null}; f; }
+/* */class S_T___wFoo_I_wBar__f[T] extends Mix___wFoo_I_wBar__f { ; ; f; }
+// */class S_T___wFoo_I_wBar_I_[T] extends Mix___wFoo_I_wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S_T___wFoo_I_wBar_If[T] extends Mix___wFoo_I_wBar_If { ; ; f; }
+/* */class S_T___wFoo_I_wBarY__[T] extends Mix___wFoo_I_wBarY__ { ; def f: I = {sub; null}; f; }
+/* */class S_T___wFoo_I_wBarY_f[T] extends Mix___wFoo_I_wBarY_f { ; ; f; }
+// */class S_T___wFoo_I_wBarYI_[T] extends Mix___wFoo_I_wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S_T___wFoo_I_wBarYIf[T] extends Mix___wFoo_I_wBarYIf { ; ; f; }
+/* */class S_T___wFoo_If [T] extends Mix___wFoo_If { ; ; f; }
+/* */class S_T___wFoo_IfwBar___[T] extends Mix___wFoo_IfwBar___ { ; ; f; }
+// */class S_T___wFoo_IfwBar__f[T] extends Mix___wFoo_IfwBar__f { ; ; f; }
+// */class S_T___wFoo_IfwBar_I_[T] extends Mix___wFoo_IfwBar_I_ { ; ; f; }
+// */class S_T___wFoo_IfwBar_If[T] extends Mix___wFoo_IfwBar_If { ; ; f; }
+/* */class S_T___wFoo_IfwBarY__[T] extends Mix___wFoo_IfwBarY__ { ; ; f; }
+// */class S_T___wFoo_IfwBarY_f[T] extends Mix___wFoo_IfwBarY_f { ; ; f; }
+// */class S_T___wFoo_IfwBarYI_[T] extends Mix___wFoo_IfwBarYI_ { ; ; f; }
+// */class S_T___wFoo_IfwBarYIf[T] extends Mix___wFoo_IfwBarYIf { ; ; f; }
+/* */class S_T___wFooX__ [T] extends Mix___wFooX__ { class I; def f: I = {sub; null}; f; }
+/* */class S_T___wFooX__wBar___[T] extends Mix___wFooX__wBar___ { class I; def f: I = {sub; null}; f; }
+/* */class S_T___wFooX__wBar__f[T] extends Mix___wFooX__wBar__f { class I; ; f; }
+/* */class S_T___wFooX__wBar_I_[T] extends Mix___wFooX__wBar_I_ { ; def f: I = {sub; null}; f; }
+/* */class S_T___wFooX__wBar_If[T] extends Mix___wFooX__wBar_If { ; ; f; }
+/* */class S_T___wFooX__wBarY__[T] extends Mix___wFooX__wBarY__ { class I; def f: I = {sub; null}; f; }
+/* */class S_T___wFooX__wBarY_f[T] extends Mix___wFooX__wBarY_f { class I; ; f; }
+/* */class S_T___wFooX__wBarYI_[T] extends Mix___wFooX__wBarYI_ { ; def f: I = {sub; null}; f; }
+/* */class S_T___wFooX__wBarYIf[T] extends Mix___wFooX__wBarYIf { ; ; f; }
+/* */class S_T___wFooX_f [T] extends Mix___wFooX_f { class I; ; f; }
+/* */class S_T___wFooX_fwBar___[T] extends Mix___wFooX_fwBar___ { class I; ; f; }
+// */class S_T___wFooX_fwBar__f[T] extends Mix___wFooX_fwBar__f { class I; ; f; }
+/* */class S_T___wFooX_fwBar_I_[T] extends Mix___wFooX_fwBar_I_ { ; ; f; }
+// */class S_T___wFooX_fwBar_If[T] extends Mix___wFooX_fwBar_If { ; ; f; }
+/* */class S_T___wFooX_fwBarY__[T] extends Mix___wFooX_fwBarY__ { class I; ; f; }
+// */class S_T___wFooX_fwBarY_f[T] extends Mix___wFooX_fwBarY_f { class I; ; f; }
+/* */class S_T___wFooX_fwBarYI_[T] extends Mix___wFooX_fwBarYI_ { ; ; f; }
+// */class S_T___wFooX_fwBarYIf[T] extends Mix___wFooX_fwBarYIf { ; ; f; }
+/* */class S_T___wFooXI_ [T] extends Mix___wFooXI_ { ; def f: I = {sub; null}; f; }
+/* */class S_T___wFooXI_wBar___[T] extends Mix___wFooXI_wBar___ { ; def f: I = {sub; null}; f; }
+/* */class S_T___wFooXI_wBar__f[T] extends Mix___wFooXI_wBar__f { ; ; f; }
+// */class S_T___wFooXI_wBar_I_[T] extends Mix___wFooXI_wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S_T___wFooXI_wBar_If[T] extends Mix___wFooXI_wBar_If { ; ; f; }
+/* */class S_T___wFooXI_wBarY__[T] extends Mix___wFooXI_wBarY__ { ; def f: I = {sub; null}; f; }
+/* */class S_T___wFooXI_wBarY_f[T] extends Mix___wFooXI_wBarY_f { ; ; f; }
+// */class S_T___wFooXI_wBarYI_[T] extends Mix___wFooXI_wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S_T___wFooXI_wBarYIf[T] extends Mix___wFooXI_wBarYIf { ; ; f; }
+/* */class S_T___wFooXIf [T] extends Mix___wFooXIf { ; ; f; }
+/* */class S_T___wFooXIfwBar___[T] extends Mix___wFooXIfwBar___ { ; ; f; }
+// */class S_T___wFooXIfwBar__f[T] extends Mix___wFooXIfwBar__f { ; ; f; }
+// */class S_T___wFooXIfwBar_I_[T] extends Mix___wFooXIfwBar_I_ { ; ; f; }
+// */class S_T___wFooXIfwBar_If[T] extends Mix___wFooXIfwBar_If { ; ; f; }
+/* */class S_T___wFooXIfwBarY__[T] extends Mix___wFooXIfwBarY__ { ; ; f; }
+// */class S_T___wFooXIfwBarY_f[T] extends Mix___wFooXIfwBarY_f { ; ; f; }
+// */class S_T___wFooXIfwBarYI_[T] extends Mix___wFooXIfwBarYI_ { ; ; f; }
+// */class S_T___wFooXIfwBarYIf[T] extends Mix___wFooXIfwBarYIf { ; ; f; }
+
+/* */class S_T__fwFoo___ [T] extends Mix__fwFoo___ { class I; ; f; }
+/* */class S_T__fwFoo___wBar___[T] extends Mix__fwFoo___wBar___ { class I; ; f; }
+/* */class S_T__fwFoo___wBar__f[T] extends Mix__fwFoo___wBar__f { class I; ; f; }
+/* */class S_T__fwFoo___wBar_I_[T] extends Mix__fwFoo___wBar_I_ { ; ; f; }
+/* */class S_T__fwFoo___wBar_If[T] extends Mix__fwFoo___wBar_If { ; ; f; }
+/* */class S_T__fwFoo___wBarY__[T] extends Mix__fwFoo___wBarY__ { class I; ; f; }
+/* */class S_T__fwFoo___wBarY_f[T] extends Mix__fwFoo___wBarY_f { class I; ; f; }
+/* */class S_T__fwFoo___wBarYI_[T] extends Mix__fwFoo___wBarYI_ { ; ; f; }
+/* */class S_T__fwFoo___wBarYIf[T] extends Mix__fwFoo___wBarYIf { ; ; f; }
+/* */class S_T__fwFoo__f [T] extends Mix__fwFoo__f { class I; ; f; }
+/* */class S_T__fwFoo__fwBar___[T] extends Mix__fwFoo__fwBar___ { class I; ; f; }
+/* */class S_T__fwFoo__fwBar__f[T] extends Mix__fwFoo__fwBar__f { class I; ; f; }
+/* */class S_T__fwFoo__fwBar_I_[T] extends Mix__fwFoo__fwBar_I_ { ; ; f; }
+/* */class S_T__fwFoo__fwBar_If[T] extends Mix__fwFoo__fwBar_If { ; ; f; }
+/* */class S_T__fwFoo__fwBarY__[T] extends Mix__fwFoo__fwBarY__ { class I; ; f; }
+/* */class S_T__fwFoo__fwBarY_f[T] extends Mix__fwFoo__fwBarY_f { class I; ; f; }
+/* */class S_T__fwFoo__fwBarYI_[T] extends Mix__fwFoo__fwBarYI_ { ; ; f; }
+/* */class S_T__fwFoo__fwBarYIf[T] extends Mix__fwFoo__fwBarYIf { ; ; f; }
+/* */class S_T__fwFoo_I_ [T] extends Mix__fwFoo_I_ { ; ; f; }
+/* */class S_T__fwFoo_I_wBar___[T] extends Mix__fwFoo_I_wBar___ { ; ; f; }
+/* */class S_T__fwFoo_I_wBar__f[T] extends Mix__fwFoo_I_wBar__f { ; ; f; }
+// */class S_T__fwFoo_I_wBar_I_[T] extends Mix__fwFoo_I_wBar_I_ { ; ; f; }
+// */class S_T__fwFoo_I_wBar_If[T] extends Mix__fwFoo_I_wBar_If { ; ; f; }
+/* */class S_T__fwFoo_I_wBarY__[T] extends Mix__fwFoo_I_wBarY__ { ; ; f; }
+/* */class S_T__fwFoo_I_wBarY_f[T] extends Mix__fwFoo_I_wBarY_f { ; ; f; }
+// */class S_T__fwFoo_I_wBarYI_[T] extends Mix__fwFoo_I_wBarYI_ { ; ; f; }
+// */class S_T__fwFoo_I_wBarYIf[T] extends Mix__fwFoo_I_wBarYIf { ; ; f; }
+/* */class S_T__fwFoo_If [T] extends Mix__fwFoo_If { ; ; f; }
+/* */class S_T__fwFoo_IfwBar___[T] extends Mix__fwFoo_IfwBar___ { ; ; f; }
+/* */class S_T__fwFoo_IfwBar__f[T] extends Mix__fwFoo_IfwBar__f { ; ; f; }
+// */class S_T__fwFoo_IfwBar_I_[T] extends Mix__fwFoo_IfwBar_I_ { ; ; f; }
+// */class S_T__fwFoo_IfwBar_If[T] extends Mix__fwFoo_IfwBar_If { ; ; f; }
+/* */class S_T__fwFoo_IfwBarY__[T] extends Mix__fwFoo_IfwBarY__ { ; ; f; }
+/* */class S_T__fwFoo_IfwBarY_f[T] extends Mix__fwFoo_IfwBarY_f { ; ; f; }
+// */class S_T__fwFoo_IfwBarYI_[T] extends Mix__fwFoo_IfwBarYI_ { ; ; f; }
+// */class S_T__fwFoo_IfwBarYIf[T] extends Mix__fwFoo_IfwBarYIf { ; ; f; }
+/* */class S_T__fwFooX__ [T] extends Mix__fwFooX__ { class I; ; f; }
+/* */class S_T__fwFooX__wBar___[T] extends Mix__fwFooX__wBar___ { class I; ; f; }
+/* */class S_T__fwFooX__wBar__f[T] extends Mix__fwFooX__wBar__f { class I; ; f; }
+/* */class S_T__fwFooX__wBar_I_[T] extends Mix__fwFooX__wBar_I_ { ; ; f; }
+/* */class S_T__fwFooX__wBar_If[T] extends Mix__fwFooX__wBar_If { ; ; f; }
+/* */class S_T__fwFooX__wBarY__[T] extends Mix__fwFooX__wBarY__ { class I; ; f; }
+/* */class S_T__fwFooX__wBarY_f[T] extends Mix__fwFooX__wBarY_f { class I; ; f; }
+/* */class S_T__fwFooX__wBarYI_[T] extends Mix__fwFooX__wBarYI_ { ; ; f; }
+/* */class S_T__fwFooX__wBarYIf[T] extends Mix__fwFooX__wBarYIf { ; ; f; }
+/* */class S_T__fwFooX_f [T] extends Mix__fwFooX_f { class I; ; f; }
+/* */class S_T__fwFooX_fwBar___[T] extends Mix__fwFooX_fwBar___ { class I; ; f; }
+/* */class S_T__fwFooX_fwBar__f[T] extends Mix__fwFooX_fwBar__f { class I; ; f; }
+/* */class S_T__fwFooX_fwBar_I_[T] extends Mix__fwFooX_fwBar_I_ { ; ; f; }
+/* */class S_T__fwFooX_fwBar_If[T] extends Mix__fwFooX_fwBar_If { ; ; f; }
+/* */class S_T__fwFooX_fwBarY__[T] extends Mix__fwFooX_fwBarY__ { class I; ; f; }
+/* */class S_T__fwFooX_fwBarY_f[T] extends Mix__fwFooX_fwBarY_f { class I; ; f; }
+/* */class S_T__fwFooX_fwBarYI_[T] extends Mix__fwFooX_fwBarYI_ { ; ; f; }
+/* */class S_T__fwFooX_fwBarYIf[T] extends Mix__fwFooX_fwBarYIf { ; ; f; }
+/* */class S_T__fwFooXI_ [T] extends Mix__fwFooXI_ { ; ; f; }
+/* */class S_T__fwFooXI_wBar___[T] extends Mix__fwFooXI_wBar___ { ; ; f; }
+/* */class S_T__fwFooXI_wBar__f[T] extends Mix__fwFooXI_wBar__f { ; ; f; }
+// */class S_T__fwFooXI_wBar_I_[T] extends Mix__fwFooXI_wBar_I_ { ; ; f; }
+// */class S_T__fwFooXI_wBar_If[T] extends Mix__fwFooXI_wBar_If { ; ; f; }
+/* */class S_T__fwFooXI_wBarY__[T] extends Mix__fwFooXI_wBarY__ { ; ; f; }
+/* */class S_T__fwFooXI_wBarY_f[T] extends Mix__fwFooXI_wBarY_f { ; ; f; }
+// */class S_T__fwFooXI_wBarYI_[T] extends Mix__fwFooXI_wBarYI_ { ; ; f; }
+// */class S_T__fwFooXI_wBarYIf[T] extends Mix__fwFooXI_wBarYIf { ; ; f; }
+/* */class S_T__fwFooXIf [T] extends Mix__fwFooXIf { ; ; f; }
+/* */class S_T__fwFooXIfwBar___[T] extends Mix__fwFooXIfwBar___ { ; ; f; }
+/* */class S_T__fwFooXIfwBar__f[T] extends Mix__fwFooXIfwBar__f { ; ; f; }
+// */class S_T__fwFooXIfwBar_I_[T] extends Mix__fwFooXIfwBar_I_ { ; ; f; }
+// */class S_T__fwFooXIfwBar_If[T] extends Mix__fwFooXIfwBar_If { ; ; f; }
+/* */class S_T__fwFooXIfwBarY__[T] extends Mix__fwFooXIfwBarY__ { ; ; f; }
+/* */class S_T__fwFooXIfwBarY_f[T] extends Mix__fwFooXIfwBarY_f { ; ; f; }
+// */class S_T__fwFooXIfwBarYI_[T] extends Mix__fwFooXIfwBarYI_ { ; ; f; }
+// */class S_T__fwFooXIfwBarYIf[T] extends Mix__fwFooXIfwBarYIf { ; ; f; }
+
+/* */class S_T_I_wFoo___ [T] extends Mix_I_wFoo___ { ; def f: I = {sub; null}; f; }
+/* */class S_T_I_wFoo___wBar___[T] extends Mix_I_wFoo___wBar___ { ; def f: I = {sub; null}; f; }
+/* */class S_T_I_wFoo___wBar__f[T] extends Mix_I_wFoo___wBar__f { ; ; f; }
+// */class S_T_I_wFoo___wBar_I_[T] extends Mix_I_wFoo___wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_wFoo___wBar_If[T] extends Mix_I_wFoo___wBar_If { ; ; f; }
+/* */class S_T_I_wFoo___wBarY__[T] extends Mix_I_wFoo___wBarY__ { ; def f: I = {sub; null}; f; }
+/* */class S_T_I_wFoo___wBarY_f[T] extends Mix_I_wFoo___wBarY_f { ; ; f; }
+// */class S_T_I_wFoo___wBarYI_[T] extends Mix_I_wFoo___wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_wFoo___wBarYIf[T] extends Mix_I_wFoo___wBarYIf { ; ; f; }
+/* */class S_T_I_wFoo__f [T] extends Mix_I_wFoo__f { ; ; f; }
+/* */class S_T_I_wFoo__fwBar___[T] extends Mix_I_wFoo__fwBar___ { ; ; f; }
+// */class S_T_I_wFoo__fwBar__f[T] extends Mix_I_wFoo__fwBar__f { ; ; f; }
+// */class S_T_I_wFoo__fwBar_I_[T] extends Mix_I_wFoo__fwBar_I_ { ; ; f; }
+// */class S_T_I_wFoo__fwBar_If[T] extends Mix_I_wFoo__fwBar_If { ; ; f; }
+/* */class S_T_I_wFoo__fwBarY__[T] extends Mix_I_wFoo__fwBarY__ { ; ; f; }
+// */class S_T_I_wFoo__fwBarY_f[T] extends Mix_I_wFoo__fwBarY_f { ; ; f; }
+// */class S_T_I_wFoo__fwBarYI_[T] extends Mix_I_wFoo__fwBarYI_ { ; ; f; }
+// */class S_T_I_wFoo__fwBarYIf[T] extends Mix_I_wFoo__fwBarYIf { ; ; f; }
+// */class S_T_I_wFoo_I_ [T] extends Mix_I_wFoo_I_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_wFoo_I_wBar___[T] extends Mix_I_wFoo_I_wBar___ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_wFoo_I_wBar__f[T] extends Mix_I_wFoo_I_wBar__f { ; ; f; }
+// */class S_T_I_wFoo_I_wBar_I_[T] extends Mix_I_wFoo_I_wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_wFoo_I_wBar_If[T] extends Mix_I_wFoo_I_wBar_If { ; ; f; }
+// */class S_T_I_wFoo_I_wBarY__[T] extends Mix_I_wFoo_I_wBarY__ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_wFoo_I_wBarY_f[T] extends Mix_I_wFoo_I_wBarY_f { ; ; f; }
+// */class S_T_I_wFoo_I_wBarYI_[T] extends Mix_I_wFoo_I_wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_wFoo_I_wBarYIf[T] extends Mix_I_wFoo_I_wBarYIf { ; ; f; }
+// */class S_T_I_wFoo_If [T] extends Mix_I_wFoo_If { ; ; f; }
+// */class S_T_I_wFoo_IfwBar___[T] extends Mix_I_wFoo_IfwBar___ { ; ; f; }
+// */class S_T_I_wFoo_IfwBar__f[T] extends Mix_I_wFoo_IfwBar__f { ; ; f; }
+// */class S_T_I_wFoo_IfwBar_I_[T] extends Mix_I_wFoo_IfwBar_I_ { ; ; f; }
+// */class S_T_I_wFoo_IfwBar_If[T] extends Mix_I_wFoo_IfwBar_If { ; ; f; }
+// */class S_T_I_wFoo_IfwBarY__[T] extends Mix_I_wFoo_IfwBarY__ { ; ; f; }
+// */class S_T_I_wFoo_IfwBarY_f[T] extends Mix_I_wFoo_IfwBarY_f { ; ; f; }
+// */class S_T_I_wFoo_IfwBarYI_[T] extends Mix_I_wFoo_IfwBarYI_ { ; ; f; }
+// */class S_T_I_wFoo_IfwBarYIf[T] extends Mix_I_wFoo_IfwBarYIf { ; ; f; }
+/* */class S_T_I_wFooX__ [T] extends Mix_I_wFooX__ { ; def f: I = {sub; null}; f; }
+/* */class S_T_I_wFooX__wBar___[T] extends Mix_I_wFooX__wBar___ { ; def f: I = {sub; null}; f; }
+/* */class S_T_I_wFooX__wBar__f[T] extends Mix_I_wFooX__wBar__f { ; ; f; }
+// */class S_T_I_wFooX__wBar_I_[T] extends Mix_I_wFooX__wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_wFooX__wBar_If[T] extends Mix_I_wFooX__wBar_If { ; ; f; }
+/* */class S_T_I_wFooX__wBarY__[T] extends Mix_I_wFooX__wBarY__ { ; def f: I = {sub; null}; f; }
+/* */class S_T_I_wFooX__wBarY_f[T] extends Mix_I_wFooX__wBarY_f { ; ; f; }
+// */class S_T_I_wFooX__wBarYI_[T] extends Mix_I_wFooX__wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_wFooX__wBarYIf[T] extends Mix_I_wFooX__wBarYIf { ; ; f; }
+/* */class S_T_I_wFooX_f [T] extends Mix_I_wFooX_f { ; ; f; }
+/* */class S_T_I_wFooX_fwBar___[T] extends Mix_I_wFooX_fwBar___ { ; ; f; }
+// */class S_T_I_wFooX_fwBar__f[T] extends Mix_I_wFooX_fwBar__f { ; ; f; }
+// */class S_T_I_wFooX_fwBar_I_[T] extends Mix_I_wFooX_fwBar_I_ { ; ; f; }
+// */class S_T_I_wFooX_fwBar_If[T] extends Mix_I_wFooX_fwBar_If { ; ; f; }
+/* */class S_T_I_wFooX_fwBarY__[T] extends Mix_I_wFooX_fwBarY__ { ; ; f; }
+// */class S_T_I_wFooX_fwBarY_f[T] extends Mix_I_wFooX_fwBarY_f { ; ; f; }
+// */class S_T_I_wFooX_fwBarYI_[T] extends Mix_I_wFooX_fwBarYI_ { ; ; f; }
+// */class S_T_I_wFooX_fwBarYIf[T] extends Mix_I_wFooX_fwBarYIf { ; ; f; }
+// */class S_T_I_wFooXI_ [T] extends Mix_I_wFooXI_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_wFooXI_wBar___[T] extends Mix_I_wFooXI_wBar___ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_wFooXI_wBar__f[T] extends Mix_I_wFooXI_wBar__f { ; ; f; }
+// */class S_T_I_wFooXI_wBar_I_[T] extends Mix_I_wFooXI_wBar_I_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_wFooXI_wBar_If[T] extends Mix_I_wFooXI_wBar_If { ; ; f; }
+// */class S_T_I_wFooXI_wBarY__[T] extends Mix_I_wFooXI_wBarY__ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_wFooXI_wBarY_f[T] extends Mix_I_wFooXI_wBarY_f { ; ; f; }
+// */class S_T_I_wFooXI_wBarYI_[T] extends Mix_I_wFooXI_wBarYI_ { ; def f: I = {sub; null}; f; }
+// */class S_T_I_wFooXI_wBarYIf[T] extends Mix_I_wFooXI_wBarYIf { ; ; f; }
+// */class S_T_I_wFooXIf [T] extends Mix_I_wFooXIf { ; ; f; }
+// */class S_T_I_wFooXIfwBar___[T] extends Mix_I_wFooXIfwBar___ { ; ; f; }
+// */class S_T_I_wFooXIfwBar__f[T] extends Mix_I_wFooXIfwBar__f { ; ; f; }
+// */class S_T_I_wFooXIfwBar_I_[T] extends Mix_I_wFooXIfwBar_I_ { ; ; f; }
+// */class S_T_I_wFooXIfwBar_If[T] extends Mix_I_wFooXIfwBar_If { ; ; f; }
+// */class S_T_I_wFooXIfwBarY__[T] extends Mix_I_wFooXIfwBarY__ { ; ; f; }
+// */class S_T_I_wFooXIfwBarY_f[T] extends Mix_I_wFooXIfwBarY_f { ; ; f; }
+// */class S_T_I_wFooXIfwBarYI_[T] extends Mix_I_wFooXIfwBarYI_ { ; ; f; }
+// */class S_T_I_wFooXIfwBarYIf[T] extends Mix_I_wFooXIfwBarYIf { ; ; f; }
+
+/* */class S_T_IfwFoo___ [T] extends Mix_IfwFoo___ { ; ; f; }
+/* */class S_T_IfwFoo___wBar___[T] extends Mix_IfwFoo___wBar___ { ; ; f; }
+/* */class S_T_IfwFoo___wBar__f[T] extends Mix_IfwFoo___wBar__f { ; ; f; }
+// */class S_T_IfwFoo___wBar_I_[T] extends Mix_IfwFoo___wBar_I_ { ; ; f; }
+// */class S_T_IfwFoo___wBar_If[T] extends Mix_IfwFoo___wBar_If { ; ; f; }
+/* */class S_T_IfwFoo___wBarY__[T] extends Mix_IfwFoo___wBarY__ { ; ; f; }
+/* */class S_T_IfwFoo___wBarY_f[T] extends Mix_IfwFoo___wBarY_f { ; ; f; }
+// */class S_T_IfwFoo___wBarYI_[T] extends Mix_IfwFoo___wBarYI_ { ; ; f; }
+// */class S_T_IfwFoo___wBarYIf[T] extends Mix_IfwFoo___wBarYIf { ; ; f; }
+/* */class S_T_IfwFoo__f [T] extends Mix_IfwFoo__f { ; ; f; }
+/* */class S_T_IfwFoo__fwBar___[T] extends Mix_IfwFoo__fwBar___ { ; ; f; }
+/* */class S_T_IfwFoo__fwBar__f[T] extends Mix_IfwFoo__fwBar__f { ; ; f; }
+// */class S_T_IfwFoo__fwBar_I_[T] extends Mix_IfwFoo__fwBar_I_ { ; ; f; }
+// */class S_T_IfwFoo__fwBar_If[T] extends Mix_IfwFoo__fwBar_If { ; ; f; }
+/* */class S_T_IfwFoo__fwBarY__[T] extends Mix_IfwFoo__fwBarY__ { ; ; f; }
+/* */class S_T_IfwFoo__fwBarY_f[T] extends Mix_IfwFoo__fwBarY_f { ; ; f; }
+// */class S_T_IfwFoo__fwBarYI_[T] extends Mix_IfwFoo__fwBarYI_ { ; ; f; }
+// */class S_T_IfwFoo__fwBarYIf[T] extends Mix_IfwFoo__fwBarYIf { ; ; f; }
+// */class S_T_IfwFoo_I_ [T] extends Mix_IfwFoo_I_ { ; ; f; }
+// */class S_T_IfwFoo_I_wBar___[T] extends Mix_IfwFoo_I_wBar___ { ; ; f; }
+// */class S_T_IfwFoo_I_wBar__f[T] extends Mix_IfwFoo_I_wBar__f { ; ; f; }
+// */class S_T_IfwFoo_I_wBar_I_[T] extends Mix_IfwFoo_I_wBar_I_ { ; ; f; }
+// */class S_T_IfwFoo_I_wBar_If[T] extends Mix_IfwFoo_I_wBar_If { ; ; f; }
+// */class S_T_IfwFoo_I_wBarY__[T] extends Mix_IfwFoo_I_wBarY__ { ; ; f; }
+// */class S_T_IfwFoo_I_wBarY_f[T] extends Mix_IfwFoo_I_wBarY_f { ; ; f; }
+// */class S_T_IfwFoo_I_wBarYI_[T] extends Mix_IfwFoo_I_wBarYI_ { ; ; f; }
+// */class S_T_IfwFoo_I_wBarYIf[T] extends Mix_IfwFoo_I_wBarYIf { ; ; f; }
+// */class S_T_IfwFoo_If [T] extends Mix_IfwFoo_If { ; ; f; }
+// */class S_T_IfwFoo_IfwBar___[T] extends Mix_IfwFoo_IfwBar___ { ; ; f; }
+// */class S_T_IfwFoo_IfwBar__f[T] extends Mix_IfwFoo_IfwBar__f { ; ; f; }
+// */class S_T_IfwFoo_IfwBar_I_[T] extends Mix_IfwFoo_IfwBar_I_ { ; ; f; }
+// */class S_T_IfwFoo_IfwBar_If[T] extends Mix_IfwFoo_IfwBar_If { ; ; f; }
+// */class S_T_IfwFoo_IfwBarY__[T] extends Mix_IfwFoo_IfwBarY__ { ; ; f; }
+// */class S_T_IfwFoo_IfwBarY_f[T] extends Mix_IfwFoo_IfwBarY_f { ; ; f; }
+// */class S_T_IfwFoo_IfwBarYI_[T] extends Mix_IfwFoo_IfwBarYI_ { ; ; f; }
+// */class S_T_IfwFoo_IfwBarYIf[T] extends Mix_IfwFoo_IfwBarYIf { ; ; f; }
+/* */class S_T_IfwFooX__ [T] extends Mix_IfwFooX__ { ; ; f; }
+/* */class S_T_IfwFooX__wBar___[T] extends Mix_IfwFooX__wBar___ { ; ; f; }
+/* */class S_T_IfwFooX__wBar__f[T] extends Mix_IfwFooX__wBar__f { ; ; f; }
+// */class S_T_IfwFooX__wBar_I_[T] extends Mix_IfwFooX__wBar_I_ { ; ; f; }
+// */class S_T_IfwFooX__wBar_If[T] extends Mix_IfwFooX__wBar_If { ; ; f; }
+/* */class S_T_IfwFooX__wBarY__[T] extends Mix_IfwFooX__wBarY__ { ; ; f; }
+/* */class S_T_IfwFooX__wBarY_f[T] extends Mix_IfwFooX__wBarY_f { ; ; f; }
+// */class S_T_IfwFooX__wBarYI_[T] extends Mix_IfwFooX__wBarYI_ { ; ; f; }
+// */class S_T_IfwFooX__wBarYIf[T] extends Mix_IfwFooX__wBarYIf { ; ; f; }
+/* */class S_T_IfwFooX_f [T] extends Mix_IfwFooX_f { ; ; f; }
+/* */class S_T_IfwFooX_fwBar___[T] extends Mix_IfwFooX_fwBar___ { ; ; f; }
+/* */class S_T_IfwFooX_fwBar__f[T] extends Mix_IfwFooX_fwBar__f { ; ; f; }
+// */class S_T_IfwFooX_fwBar_I_[T] extends Mix_IfwFooX_fwBar_I_ { ; ; f; }
+// */class S_T_IfwFooX_fwBar_If[T] extends Mix_IfwFooX_fwBar_If { ; ; f; }
+/* */class S_T_IfwFooX_fwBarY__[T] extends Mix_IfwFooX_fwBarY__ { ; ; f; }
+/* */class S_T_IfwFooX_fwBarY_f[T] extends Mix_IfwFooX_fwBarY_f { ; ; f; }
+// */class S_T_IfwFooX_fwBarYI_[T] extends Mix_IfwFooX_fwBarYI_ { ; ; f; }
+// */class S_T_IfwFooX_fwBarYIf[T] extends Mix_IfwFooX_fwBarYIf { ; ; f; }
+// */class S_T_IfwFooXI_ [T] extends Mix_IfwFooXI_ { ; ; f; }
+// */class S_T_IfwFooXI_wBar___[T] extends Mix_IfwFooXI_wBar___ { ; ; f; }
+// */class S_T_IfwFooXI_wBar__f[T] extends Mix_IfwFooXI_wBar__f { ; ; f; }
+// */class S_T_IfwFooXI_wBar_I_[T] extends Mix_IfwFooXI_wBar_I_ { ; ; f; }
+// */class S_T_IfwFooXI_wBar_If[T] extends Mix_IfwFooXI_wBar_If { ; ; f; }
+// */class S_T_IfwFooXI_wBarY__[T] extends Mix_IfwFooXI_wBarY__ { ; ; f; }
+// */class S_T_IfwFooXI_wBarY_f[T] extends Mix_IfwFooXI_wBarY_f { ; ; f; }
+// */class S_T_IfwFooXI_wBarYI_[T] extends Mix_IfwFooXI_wBarYI_ { ; ; f; }
+// */class S_T_IfwFooXI_wBarYIf[T] extends Mix_IfwFooXI_wBarYIf { ; ; f; }
+// */class S_T_IfwFooXIf [T] extends Mix_IfwFooXIf { ; ; f; }
+// */class S_T_IfwFooXIfwBar___[T] extends Mix_IfwFooXIfwBar___ { ; ; f; }
+// */class S_T_IfwFooXIfwBar__f[T] extends Mix_IfwFooXIfwBar__f { ; ; f; }
+// */class S_T_IfwFooXIfwBar_I_[T] extends Mix_IfwFooXIfwBar_I_ { ; ; f; }
+// */class S_T_IfwFooXIfwBar_If[T] extends Mix_IfwFooXIfwBar_If { ; ; f; }
+// */class S_T_IfwFooXIfwBarY__[T] extends Mix_IfwFooXIfwBarY__ { ; ; f; }
+// */class S_T_IfwFooXIfwBarY_f[T] extends Mix_IfwFooXIfwBarY_f { ; ; f; }
+// */class S_T_IfwFooXIfwBarYI_[T] extends Mix_IfwFooXIfwBarYI_ { ; ; f; }
+// */class S_T_IfwFooXIfwBarYIf[T] extends Mix_IfwFooXIfwBarYIf { ; ; f; }
+
+/* */class S_TZ__wFoo___ [T] extends MixZ__wFoo___ [C] { class I; def f: I = {sub; null}; f; }
+/* */class S_TZ__wFoo___wBar___[T] extends MixZ__wFoo___wBar___[C] { class I; def f: I = {sub; null}; f; }
+/* */class S_TZ__wFoo___wBar__f[T] extends MixZ__wFoo___wBar__f[C] { class I; ; f; }
+/* */class S_TZ__wFoo___wBar_I_[T] extends MixZ__wFoo___wBar_I_[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__wFoo___wBar_If[T] extends MixZ__wFoo___wBar_If[C] { ; ; f; }
+/* */class S_TZ__wFoo___wBarY__[T] extends MixZ__wFoo___wBarY__[C] { class I; def f: I = {sub; null}; f; }
+/* */class S_TZ__wFoo___wBarY_f[T] extends MixZ__wFoo___wBarY_f[C] { class I; ; f; }
+/* */class S_TZ__wFoo___wBarYI_[T] extends MixZ__wFoo___wBarYI_[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__wFoo___wBarYIf[T] extends MixZ__wFoo___wBarYIf[C] { ; ; f; }
+/* */class S_TZ__wFoo__f [T] extends MixZ__wFoo__f [C] { class I; ; f; }
+/* */class S_TZ__wFoo__fwBar___[T] extends MixZ__wFoo__fwBar___[C] { class I; ; f; }
+// */class S_TZ__wFoo__fwBar__f[T] extends MixZ__wFoo__fwBar__f[C] { class I; ; f; }
+/* */class S_TZ__wFoo__fwBar_I_[T] extends MixZ__wFoo__fwBar_I_[C] { ; ; f; }
+// */class S_TZ__wFoo__fwBar_If[T] extends MixZ__wFoo__fwBar_If[C] { ; ; f; }
+/* */class S_TZ__wFoo__fwBarY__[T] extends MixZ__wFoo__fwBarY__[C] { class I; ; f; }
+// */class S_TZ__wFoo__fwBarY_f[T] extends MixZ__wFoo__fwBarY_f[C] { class I; ; f; }
+/* */class S_TZ__wFoo__fwBarYI_[T] extends MixZ__wFoo__fwBarYI_[C] { ; ; f; }
+// */class S_TZ__wFoo__fwBarYIf[T] extends MixZ__wFoo__fwBarYIf[C] { ; ; f; }
+/* */class S_TZ__wFoo_I_ [T] extends MixZ__wFoo_I_ [C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__wFoo_I_wBar___[T] extends MixZ__wFoo_I_wBar___[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__wFoo_I_wBar__f[T] extends MixZ__wFoo_I_wBar__f[C] { ; ; f; }
+// */class S_TZ__wFoo_I_wBar_I_[T] extends MixZ__wFoo_I_wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZ__wFoo_I_wBar_If[T] extends MixZ__wFoo_I_wBar_If[C] { ; ; f; }
+/* */class S_TZ__wFoo_I_wBarY__[T] extends MixZ__wFoo_I_wBarY__[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__wFoo_I_wBarY_f[T] extends MixZ__wFoo_I_wBarY_f[C] { ; ; f; }
+// */class S_TZ__wFoo_I_wBarYI_[T] extends MixZ__wFoo_I_wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZ__wFoo_I_wBarYIf[T] extends MixZ__wFoo_I_wBarYIf[C] { ; ; f; }
+/* */class S_TZ__wFoo_If [T] extends MixZ__wFoo_If [C] { ; ; f; }
+/* */class S_TZ__wFoo_IfwBar___[T] extends MixZ__wFoo_IfwBar___[C] { ; ; f; }
+// */class S_TZ__wFoo_IfwBar__f[T] extends MixZ__wFoo_IfwBar__f[C] { ; ; f; }
+// */class S_TZ__wFoo_IfwBar_I_[T] extends MixZ__wFoo_IfwBar_I_[C] { ; ; f; }
+// */class S_TZ__wFoo_IfwBar_If[T] extends MixZ__wFoo_IfwBar_If[C] { ; ; f; }
+/* */class S_TZ__wFoo_IfwBarY__[T] extends MixZ__wFoo_IfwBarY__[C] { ; ; f; }
+// */class S_TZ__wFoo_IfwBarY_f[T] extends MixZ__wFoo_IfwBarY_f[C] { ; ; f; }
+// */class S_TZ__wFoo_IfwBarYI_[T] extends MixZ__wFoo_IfwBarYI_[C] { ; ; f; }
+// */class S_TZ__wFoo_IfwBarYIf[T] extends MixZ__wFoo_IfwBarYIf[C] { ; ; f; }
+/* */class S_TZ__wFooX__ [T] extends MixZ__wFooX__ [C] { class I; def f: I = {sub; null}; f; }
+/* */class S_TZ__wFooX__wBar___[T] extends MixZ__wFooX__wBar___[C] { class I; def f: I = {sub; null}; f; }
+/* */class S_TZ__wFooX__wBar__f[T] extends MixZ__wFooX__wBar__f[C] { class I; ; f; }
+/* */class S_TZ__wFooX__wBar_I_[T] extends MixZ__wFooX__wBar_I_[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__wFooX__wBar_If[T] extends MixZ__wFooX__wBar_If[C] { ; ; f; }
+/* */class S_TZ__wFooX__wBarY__[T] extends MixZ__wFooX__wBarY__[C] { class I; def f: I = {sub; null}; f; }
+/* */class S_TZ__wFooX__wBarY_f[T] extends MixZ__wFooX__wBarY_f[C] { class I; ; f; }
+/* */class S_TZ__wFooX__wBarYI_[T] extends MixZ__wFooX__wBarYI_[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__wFooX__wBarYIf[T] extends MixZ__wFooX__wBarYIf[C] { ; ; f; }
+/* */class S_TZ__wFooX_f [T] extends MixZ__wFooX_f [C] { class I; ; f; }
+/* */class S_TZ__wFooX_fwBar___[T] extends MixZ__wFooX_fwBar___[C] { class I; ; f; }
+// */class S_TZ__wFooX_fwBar__f[T] extends MixZ__wFooX_fwBar__f[C] { class I; ; f; }
+/* */class S_TZ__wFooX_fwBar_I_[T] extends MixZ__wFooX_fwBar_I_[C] { ; ; f; }
+// */class S_TZ__wFooX_fwBar_If[T] extends MixZ__wFooX_fwBar_If[C] { ; ; f; }
+/* */class S_TZ__wFooX_fwBarY__[T] extends MixZ__wFooX_fwBarY__[C] { class I; ; f; }
+// */class S_TZ__wFooX_fwBarY_f[T] extends MixZ__wFooX_fwBarY_f[C] { class I; ; f; }
+/* */class S_TZ__wFooX_fwBarYI_[T] extends MixZ__wFooX_fwBarYI_[C] { ; ; f; }
+// */class S_TZ__wFooX_fwBarYIf[T] extends MixZ__wFooX_fwBarYIf[C] { ; ; f; }
+/* */class S_TZ__wFooXI_ [T] extends MixZ__wFooXI_ [C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__wFooXI_wBar___[T] extends MixZ__wFooXI_wBar___[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__wFooXI_wBar__f[T] extends MixZ__wFooXI_wBar__f[C] { ; ; f; }
+// */class S_TZ__wFooXI_wBar_I_[T] extends MixZ__wFooXI_wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZ__wFooXI_wBar_If[T] extends MixZ__wFooXI_wBar_If[C] { ; ; f; }
+/* */class S_TZ__wFooXI_wBarY__[T] extends MixZ__wFooXI_wBarY__[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZ__wFooXI_wBarY_f[T] extends MixZ__wFooXI_wBarY_f[C] { ; ; f; }
+// */class S_TZ__wFooXI_wBarYI_[T] extends MixZ__wFooXI_wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZ__wFooXI_wBarYIf[T] extends MixZ__wFooXI_wBarYIf[C] { ; ; f; }
+/* */class S_TZ__wFooXIf [T] extends MixZ__wFooXIf [C] { ; ; f; }
+/* */class S_TZ__wFooXIfwBar___[T] extends MixZ__wFooXIfwBar___[C] { ; ; f; }
+// */class S_TZ__wFooXIfwBar__f[T] extends MixZ__wFooXIfwBar__f[C] { ; ; f; }
+// */class S_TZ__wFooXIfwBar_I_[T] extends MixZ__wFooXIfwBar_I_[C] { ; ; f; }
+// */class S_TZ__wFooXIfwBar_If[T] extends MixZ__wFooXIfwBar_If[C] { ; ; f; }
+/* */class S_TZ__wFooXIfwBarY__[T] extends MixZ__wFooXIfwBarY__[C] { ; ; f; }
+// */class S_TZ__wFooXIfwBarY_f[T] extends MixZ__wFooXIfwBarY_f[C] { ; ; f; }
+// */class S_TZ__wFooXIfwBarYI_[T] extends MixZ__wFooXIfwBarYI_[C] { ; ; f; }
+// */class S_TZ__wFooXIfwBarYIf[T] extends MixZ__wFooXIfwBarYIf[C] { ; ; f; }
+
+/* */class S_TZ_fwFoo___ [T] extends MixZ_fwFoo___ [C] { class I; ; f; }
+/* */class S_TZ_fwFoo___wBar___[T] extends MixZ_fwFoo___wBar___[C] { class I; ; f; }
+/* */class S_TZ_fwFoo___wBar__f[T] extends MixZ_fwFoo___wBar__f[C] { class I; ; f; }
+/* */class S_TZ_fwFoo___wBar_I_[T] extends MixZ_fwFoo___wBar_I_[C] { ; ; f; }
+/* */class S_TZ_fwFoo___wBar_If[T] extends MixZ_fwFoo___wBar_If[C] { ; ; f; }
+/* */class S_TZ_fwFoo___wBarY__[T] extends MixZ_fwFoo___wBarY__[C] { class I; ; f; }
+/* */class S_TZ_fwFoo___wBarY_f[T] extends MixZ_fwFoo___wBarY_f[C] { class I; ; f; }
+/* */class S_TZ_fwFoo___wBarYI_[T] extends MixZ_fwFoo___wBarYI_[C] { ; ; f; }
+/* */class S_TZ_fwFoo___wBarYIf[T] extends MixZ_fwFoo___wBarYIf[C] { ; ; f; }
+/* */class S_TZ_fwFoo__f [T] extends MixZ_fwFoo__f [C] { class I; ; f; }
+/* */class S_TZ_fwFoo__fwBar___[T] extends MixZ_fwFoo__fwBar___[C] { class I; ; f; }
+/* */class S_TZ_fwFoo__fwBar__f[T] extends MixZ_fwFoo__fwBar__f[C] { class I; ; f; }
+/* */class S_TZ_fwFoo__fwBar_I_[T] extends MixZ_fwFoo__fwBar_I_[C] { ; ; f; }
+/* */class S_TZ_fwFoo__fwBar_If[T] extends MixZ_fwFoo__fwBar_If[C] { ; ; f; }
+/* */class S_TZ_fwFoo__fwBarY__[T] extends MixZ_fwFoo__fwBarY__[C] { class I; ; f; }
+/* */class S_TZ_fwFoo__fwBarY_f[T] extends MixZ_fwFoo__fwBarY_f[C] { class I; ; f; }
+/* */class S_TZ_fwFoo__fwBarYI_[T] extends MixZ_fwFoo__fwBarYI_[C] { ; ; f; }
+/* */class S_TZ_fwFoo__fwBarYIf[T] extends MixZ_fwFoo__fwBarYIf[C] { ; ; f; }
+/* */class S_TZ_fwFoo_I_ [T] extends MixZ_fwFoo_I_ [C] { ; ; f; }
+/* */class S_TZ_fwFoo_I_wBar___[T] extends MixZ_fwFoo_I_wBar___[C] { ; ; f; }
+/* */class S_TZ_fwFoo_I_wBar__f[T] extends MixZ_fwFoo_I_wBar__f[C] { ; ; f; }
+// */class S_TZ_fwFoo_I_wBar_I_[T] extends MixZ_fwFoo_I_wBar_I_[C] { ; ; f; }
+// */class S_TZ_fwFoo_I_wBar_If[T] extends MixZ_fwFoo_I_wBar_If[C] { ; ; f; }
+/* */class S_TZ_fwFoo_I_wBarY__[T] extends MixZ_fwFoo_I_wBarY__[C] { ; ; f; }
+/* */class S_TZ_fwFoo_I_wBarY_f[T] extends MixZ_fwFoo_I_wBarY_f[C] { ; ; f; }
+// */class S_TZ_fwFoo_I_wBarYI_[T] extends MixZ_fwFoo_I_wBarYI_[C] { ; ; f; }
+// */class S_TZ_fwFoo_I_wBarYIf[T] extends MixZ_fwFoo_I_wBarYIf[C] { ; ; f; }
+/* */class S_TZ_fwFoo_If [T] extends MixZ_fwFoo_If [C] { ; ; f; }
+/* */class S_TZ_fwFoo_IfwBar___[T] extends MixZ_fwFoo_IfwBar___[C] { ; ; f; }
+/* */class S_TZ_fwFoo_IfwBar__f[T] extends MixZ_fwFoo_IfwBar__f[C] { ; ; f; }
+// */class S_TZ_fwFoo_IfwBar_I_[T] extends MixZ_fwFoo_IfwBar_I_[C] { ; ; f; }
+// */class S_TZ_fwFoo_IfwBar_If[T] extends MixZ_fwFoo_IfwBar_If[C] { ; ; f; }
+/* */class S_TZ_fwFoo_IfwBarY__[T] extends MixZ_fwFoo_IfwBarY__[C] { ; ; f; }
+/* */class S_TZ_fwFoo_IfwBarY_f[T] extends MixZ_fwFoo_IfwBarY_f[C] { ; ; f; }
+// */class S_TZ_fwFoo_IfwBarYI_[T] extends MixZ_fwFoo_IfwBarYI_[C] { ; ; f; }
+// */class S_TZ_fwFoo_IfwBarYIf[T] extends MixZ_fwFoo_IfwBarYIf[C] { ; ; f; }
+/* */class S_TZ_fwFooX__ [T] extends MixZ_fwFooX__ [C] { class I; ; f; }
+/* */class S_TZ_fwFooX__wBar___[T] extends MixZ_fwFooX__wBar___[C] { class I; ; f; }
+/* */class S_TZ_fwFooX__wBar__f[T] extends MixZ_fwFooX__wBar__f[C] { class I; ; f; }
+/* */class S_TZ_fwFooX__wBar_I_[T] extends MixZ_fwFooX__wBar_I_[C] { ; ; f; }
+/* */class S_TZ_fwFooX__wBar_If[T] extends MixZ_fwFooX__wBar_If[C] { ; ; f; }
+/* */class S_TZ_fwFooX__wBarY__[T] extends MixZ_fwFooX__wBarY__[C] { class I; ; f; }
+/* */class S_TZ_fwFooX__wBarY_f[T] extends MixZ_fwFooX__wBarY_f[C] { class I; ; f; }
+/* */class S_TZ_fwFooX__wBarYI_[T] extends MixZ_fwFooX__wBarYI_[C] { ; ; f; }
+/* */class S_TZ_fwFooX__wBarYIf[T] extends MixZ_fwFooX__wBarYIf[C] { ; ; f; }
+/* */class S_TZ_fwFooX_f [T] extends MixZ_fwFooX_f [C] { class I; ; f; }
+/* */class S_TZ_fwFooX_fwBar___[T] extends MixZ_fwFooX_fwBar___[C] { class I; ; f; }
+/* */class S_TZ_fwFooX_fwBar__f[T] extends MixZ_fwFooX_fwBar__f[C] { class I; ; f; }
+/* */class S_TZ_fwFooX_fwBar_I_[T] extends MixZ_fwFooX_fwBar_I_[C] { ; ; f; }
+/* */class S_TZ_fwFooX_fwBar_If[T] extends MixZ_fwFooX_fwBar_If[C] { ; ; f; }
+/* */class S_TZ_fwFooX_fwBarY__[T] extends MixZ_fwFooX_fwBarY__[C] { class I; ; f; }
+/* */class S_TZ_fwFooX_fwBarY_f[T] extends MixZ_fwFooX_fwBarY_f[C] { class I; ; f; }
+/* */class S_TZ_fwFooX_fwBarYI_[T] extends MixZ_fwFooX_fwBarYI_[C] { ; ; f; }
+/* */class S_TZ_fwFooX_fwBarYIf[T] extends MixZ_fwFooX_fwBarYIf[C] { ; ; f; }
+/* */class S_TZ_fwFooXI_ [T] extends MixZ_fwFooXI_ [C] { ; ; f; }
+/* */class S_TZ_fwFooXI_wBar___[T] extends MixZ_fwFooXI_wBar___[C] { ; ; f; }
+/* */class S_TZ_fwFooXI_wBar__f[T] extends MixZ_fwFooXI_wBar__f[C] { ; ; f; }
+// */class S_TZ_fwFooXI_wBar_I_[T] extends MixZ_fwFooXI_wBar_I_[C] { ; ; f; }
+// */class S_TZ_fwFooXI_wBar_If[T] extends MixZ_fwFooXI_wBar_If[C] { ; ; f; }
+/* */class S_TZ_fwFooXI_wBarY__[T] extends MixZ_fwFooXI_wBarY__[C] { ; ; f; }
+/* */class S_TZ_fwFooXI_wBarY_f[T] extends MixZ_fwFooXI_wBarY_f[C] { ; ; f; }
+// */class S_TZ_fwFooXI_wBarYI_[T] extends MixZ_fwFooXI_wBarYI_[C] { ; ; f; }
+// */class S_TZ_fwFooXI_wBarYIf[T] extends MixZ_fwFooXI_wBarYIf[C] { ; ; f; }
+/* */class S_TZ_fwFooXIf [T] extends MixZ_fwFooXIf [C] { ; ; f; }
+/* */class S_TZ_fwFooXIfwBar___[T] extends MixZ_fwFooXIfwBar___[C] { ; ; f; }
+/* */class S_TZ_fwFooXIfwBar__f[T] extends MixZ_fwFooXIfwBar__f[C] { ; ; f; }
+// */class S_TZ_fwFooXIfwBar_I_[T] extends MixZ_fwFooXIfwBar_I_[C] { ; ; f; }
+// */class S_TZ_fwFooXIfwBar_If[T] extends MixZ_fwFooXIfwBar_If[C] { ; ; f; }
+/* */class S_TZ_fwFooXIfwBarY__[T] extends MixZ_fwFooXIfwBarY__[C] { ; ; f; }
+/* */class S_TZ_fwFooXIfwBarY_f[T] extends MixZ_fwFooXIfwBarY_f[C] { ; ; f; }
+// */class S_TZ_fwFooXIfwBarYI_[T] extends MixZ_fwFooXIfwBarYI_[C] { ; ; f; }
+// */class S_TZ_fwFooXIfwBarYIf[T] extends MixZ_fwFooXIfwBarYIf[C] { ; ; f; }
+
+/* */class S_TZI_wFoo___ [T] extends MixZI_wFoo___ [C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZI_wFoo___wBar___[T] extends MixZI_wFoo___wBar___[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZI_wFoo___wBar__f[T] extends MixZI_wFoo___wBar__f[C] { ; ; f; }
+// */class S_TZI_wFoo___wBar_I_[T] extends MixZI_wFoo___wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_wFoo___wBar_If[T] extends MixZI_wFoo___wBar_If[C] { ; ; f; }
+/* */class S_TZI_wFoo___wBarY__[T] extends MixZI_wFoo___wBarY__[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZI_wFoo___wBarY_f[T] extends MixZI_wFoo___wBarY_f[C] { ; ; f; }
+// */class S_TZI_wFoo___wBarYI_[T] extends MixZI_wFoo___wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_wFoo___wBarYIf[T] extends MixZI_wFoo___wBarYIf[C] { ; ; f; }
+/* */class S_TZI_wFoo__f [T] extends MixZI_wFoo__f [C] { ; ; f; }
+/* */class S_TZI_wFoo__fwBar___[T] extends MixZI_wFoo__fwBar___[C] { ; ; f; }
+// */class S_TZI_wFoo__fwBar__f[T] extends MixZI_wFoo__fwBar__f[C] { ; ; f; }
+// */class S_TZI_wFoo__fwBar_I_[T] extends MixZI_wFoo__fwBar_I_[C] { ; ; f; }
+// */class S_TZI_wFoo__fwBar_If[T] extends MixZI_wFoo__fwBar_If[C] { ; ; f; }
+/* */class S_TZI_wFoo__fwBarY__[T] extends MixZI_wFoo__fwBarY__[C] { ; ; f; }
+// */class S_TZI_wFoo__fwBarY_f[T] extends MixZI_wFoo__fwBarY_f[C] { ; ; f; }
+// */class S_TZI_wFoo__fwBarYI_[T] extends MixZI_wFoo__fwBarYI_[C] { ; ; f; }
+// */class S_TZI_wFoo__fwBarYIf[T] extends MixZI_wFoo__fwBarYIf[C] { ; ; f; }
+// */class S_TZI_wFoo_I_ [T] extends MixZI_wFoo_I_ [C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_wFoo_I_wBar___[T] extends MixZI_wFoo_I_wBar___[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_wFoo_I_wBar__f[T] extends MixZI_wFoo_I_wBar__f[C] { ; ; f; }
+// */class S_TZI_wFoo_I_wBar_I_[T] extends MixZI_wFoo_I_wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_wFoo_I_wBar_If[T] extends MixZI_wFoo_I_wBar_If[C] { ; ; f; }
+// */class S_TZI_wFoo_I_wBarY__[T] extends MixZI_wFoo_I_wBarY__[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_wFoo_I_wBarY_f[T] extends MixZI_wFoo_I_wBarY_f[C] { ; ; f; }
+// */class S_TZI_wFoo_I_wBarYI_[T] extends MixZI_wFoo_I_wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_wFoo_I_wBarYIf[T] extends MixZI_wFoo_I_wBarYIf[C] { ; ; f; }
+// */class S_TZI_wFoo_If [T] extends MixZI_wFoo_If [C] { ; ; f; }
+// */class S_TZI_wFoo_IfwBar___[T] extends MixZI_wFoo_IfwBar___[C] { ; ; f; }
+// */class S_TZI_wFoo_IfwBar__f[T] extends MixZI_wFoo_IfwBar__f[C] { ; ; f; }
+// */class S_TZI_wFoo_IfwBar_I_[T] extends MixZI_wFoo_IfwBar_I_[C] { ; ; f; }
+// */class S_TZI_wFoo_IfwBar_If[T] extends MixZI_wFoo_IfwBar_If[C] { ; ; f; }
+// */class S_TZI_wFoo_IfwBarY__[T] extends MixZI_wFoo_IfwBarY__[C] { ; ; f; }
+// */class S_TZI_wFoo_IfwBarY_f[T] extends MixZI_wFoo_IfwBarY_f[C] { ; ; f; }
+// */class S_TZI_wFoo_IfwBarYI_[T] extends MixZI_wFoo_IfwBarYI_[C] { ; ; f; }
+// */class S_TZI_wFoo_IfwBarYIf[T] extends MixZI_wFoo_IfwBarYIf[C] { ; ; f; }
+/* */class S_TZI_wFooX__ [T] extends MixZI_wFooX__ [C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZI_wFooX__wBar___[T] extends MixZI_wFooX__wBar___[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZI_wFooX__wBar__f[T] extends MixZI_wFooX__wBar__f[C] { ; ; f; }
+// */class S_TZI_wFooX__wBar_I_[T] extends MixZI_wFooX__wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_wFooX__wBar_If[T] extends MixZI_wFooX__wBar_If[C] { ; ; f; }
+/* */class S_TZI_wFooX__wBarY__[T] extends MixZI_wFooX__wBarY__[C] { ; def f: I = {sub; null}; f; }
+/* */class S_TZI_wFooX__wBarY_f[T] extends MixZI_wFooX__wBarY_f[C] { ; ; f; }
+// */class S_TZI_wFooX__wBarYI_[T] extends MixZI_wFooX__wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_wFooX__wBarYIf[T] extends MixZI_wFooX__wBarYIf[C] { ; ; f; }
+/* */class S_TZI_wFooX_f [T] extends MixZI_wFooX_f [C] { ; ; f; }
+/* */class S_TZI_wFooX_fwBar___[T] extends MixZI_wFooX_fwBar___[C] { ; ; f; }
+// */class S_TZI_wFooX_fwBar__f[T] extends MixZI_wFooX_fwBar__f[C] { ; ; f; }
+// */class S_TZI_wFooX_fwBar_I_[T] extends MixZI_wFooX_fwBar_I_[C] { ; ; f; }
+// */class S_TZI_wFooX_fwBar_If[T] extends MixZI_wFooX_fwBar_If[C] { ; ; f; }
+/* */class S_TZI_wFooX_fwBarY__[T] extends MixZI_wFooX_fwBarY__[C] { ; ; f; }
+// */class S_TZI_wFooX_fwBarY_f[T] extends MixZI_wFooX_fwBarY_f[C] { ; ; f; }
+// */class S_TZI_wFooX_fwBarYI_[T] extends MixZI_wFooX_fwBarYI_[C] { ; ; f; }
+// */class S_TZI_wFooX_fwBarYIf[T] extends MixZI_wFooX_fwBarYIf[C] { ; ; f; }
+// */class S_TZI_wFooXI_ [T] extends MixZI_wFooXI_ [C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_wFooXI_wBar___[T] extends MixZI_wFooXI_wBar___[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_wFooXI_wBar__f[T] extends MixZI_wFooXI_wBar__f[C] { ; ; f; }
+// */class S_TZI_wFooXI_wBar_I_[T] extends MixZI_wFooXI_wBar_I_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_wFooXI_wBar_If[T] extends MixZI_wFooXI_wBar_If[C] { ; ; f; }
+// */class S_TZI_wFooXI_wBarY__[T] extends MixZI_wFooXI_wBarY__[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_wFooXI_wBarY_f[T] extends MixZI_wFooXI_wBarY_f[C] { ; ; f; }
+// */class S_TZI_wFooXI_wBarYI_[T] extends MixZI_wFooXI_wBarYI_[C] { ; def f: I = {sub; null}; f; }
+// */class S_TZI_wFooXI_wBarYIf[T] extends MixZI_wFooXI_wBarYIf[C] { ; ; f; }
+// */class S_TZI_wFooXIf [T] extends MixZI_wFooXIf [C] { ; ; f; }
+// */class S_TZI_wFooXIfwBar___[T] extends MixZI_wFooXIfwBar___[C] { ; ; f; }
+// */class S_TZI_wFooXIfwBar__f[T] extends MixZI_wFooXIfwBar__f[C] { ; ; f; }
+// */class S_TZI_wFooXIfwBar_I_[T] extends MixZI_wFooXIfwBar_I_[C] { ; ; f; }
+// */class S_TZI_wFooXIfwBar_If[T] extends MixZI_wFooXIfwBar_If[C] { ; ; f; }
+// */class S_TZI_wFooXIfwBarY__[T] extends MixZI_wFooXIfwBarY__[C] { ; ; f; }
+// */class S_TZI_wFooXIfwBarY_f[T] extends MixZI_wFooXIfwBarY_f[C] { ; ; f; }
+// */class S_TZI_wFooXIfwBarYI_[T] extends MixZI_wFooXIfwBarYI_[C] { ; ; f; }
+// */class S_TZI_wFooXIfwBarYIf[T] extends MixZI_wFooXIfwBarYIf[C] { ; ; f; }
+
+/* */class S_TZIfwFoo___ [T] extends MixZIfwFoo___ [C] { ; ; f; }
+/* */class S_TZIfwFoo___wBar___[T] extends MixZIfwFoo___wBar___[C] { ; ; f; }
+/* */class S_TZIfwFoo___wBar__f[T] extends MixZIfwFoo___wBar__f[C] { ; ; f; }
+// */class S_TZIfwFoo___wBar_I_[T] extends MixZIfwFoo___wBar_I_[C] { ; ; f; }
+// */class S_TZIfwFoo___wBar_If[T] extends MixZIfwFoo___wBar_If[C] { ; ; f; }
+/* */class S_TZIfwFoo___wBarY__[T] extends MixZIfwFoo___wBarY__[C] { ; ; f; }
+/* */class S_TZIfwFoo___wBarY_f[T] extends MixZIfwFoo___wBarY_f[C] { ; ; f; }
+// */class S_TZIfwFoo___wBarYI_[T] extends MixZIfwFoo___wBarYI_[C] { ; ; f; }
+// */class S_TZIfwFoo___wBarYIf[T] extends MixZIfwFoo___wBarYIf[C] { ; ; f; }
+/* */class S_TZIfwFoo__f [T] extends MixZIfwFoo__f [C] { ; ; f; }
+/* */class S_TZIfwFoo__fwBar___[T] extends MixZIfwFoo__fwBar___[C] { ; ; f; }
+/* */class S_TZIfwFoo__fwBar__f[T] extends MixZIfwFoo__fwBar__f[C] { ; ; f; }
+// */class S_TZIfwFoo__fwBar_I_[T] extends MixZIfwFoo__fwBar_I_[C] { ; ; f; }
+// */class S_TZIfwFoo__fwBar_If[T] extends MixZIfwFoo__fwBar_If[C] { ; ; f; }
+/* */class S_TZIfwFoo__fwBarY__[T] extends MixZIfwFoo__fwBarY__[C] { ; ; f; }
+/* */class S_TZIfwFoo__fwBarY_f[T] extends MixZIfwFoo__fwBarY_f[C] { ; ; f; }
+// */class S_TZIfwFoo__fwBarYI_[T] extends MixZIfwFoo__fwBarYI_[C] { ; ; f; }
+// */class S_TZIfwFoo__fwBarYIf[T] extends MixZIfwFoo__fwBarYIf[C] { ; ; f; }
+// */class S_TZIfwFoo_I_ [T] extends MixZIfwFoo_I_ [C] { ; ; f; }
+// */class S_TZIfwFoo_I_wBar___[T] extends MixZIfwFoo_I_wBar___[C] { ; ; f; }
+// */class S_TZIfwFoo_I_wBar__f[T] extends MixZIfwFoo_I_wBar__f[C] { ; ; f; }
+// */class S_TZIfwFoo_I_wBar_I_[T] extends MixZIfwFoo_I_wBar_I_[C] { ; ; f; }
+// */class S_TZIfwFoo_I_wBar_If[T] extends MixZIfwFoo_I_wBar_If[C] { ; ; f; }
+// */class S_TZIfwFoo_I_wBarY__[T] extends MixZIfwFoo_I_wBarY__[C] { ; ; f; }
+// */class S_TZIfwFoo_I_wBarY_f[T] extends MixZIfwFoo_I_wBarY_f[C] { ; ; f; }
+// */class S_TZIfwFoo_I_wBarYI_[T] extends MixZIfwFoo_I_wBarYI_[C] { ; ; f; }
+// */class S_TZIfwFoo_I_wBarYIf[T] extends MixZIfwFoo_I_wBarYIf[C] { ; ; f; }
+// */class S_TZIfwFoo_If [T] extends MixZIfwFoo_If [C] { ; ; f; }
+// */class S_TZIfwFoo_IfwBar___[T] extends MixZIfwFoo_IfwBar___[C] { ; ; f; }
+// */class S_TZIfwFoo_IfwBar__f[T] extends MixZIfwFoo_IfwBar__f[C] { ; ; f; }
+// */class S_TZIfwFoo_IfwBar_I_[T] extends MixZIfwFoo_IfwBar_I_[C] { ; ; f; }
+// */class S_TZIfwFoo_IfwBar_If[T] extends MixZIfwFoo_IfwBar_If[C] { ; ; f; }
+// */class S_TZIfwFoo_IfwBarY__[T] extends MixZIfwFoo_IfwBarY__[C] { ; ; f; }
+// */class S_TZIfwFoo_IfwBarY_f[T] extends MixZIfwFoo_IfwBarY_f[C] { ; ; f; }
+// */class S_TZIfwFoo_IfwBarYI_[T] extends MixZIfwFoo_IfwBarYI_[C] { ; ; f; }
+// */class S_TZIfwFoo_IfwBarYIf[T] extends MixZIfwFoo_IfwBarYIf[C] { ; ; f; }
+/* */class S_TZIfwFooX__ [T] extends MixZIfwFooX__ [C] { ; ; f; }
+/* */class S_TZIfwFooX__wBar___[T] extends MixZIfwFooX__wBar___[C] { ; ; f; }
+/* */class S_TZIfwFooX__wBar__f[T] extends MixZIfwFooX__wBar__f[C] { ; ; f; }
+// */class S_TZIfwFooX__wBar_I_[T] extends MixZIfwFooX__wBar_I_[C] { ; ; f; }
+// */class S_TZIfwFooX__wBar_If[T] extends MixZIfwFooX__wBar_If[C] { ; ; f; }
+/* */class S_TZIfwFooX__wBarY__[T] extends MixZIfwFooX__wBarY__[C] { ; ; f; }
+/* */class S_TZIfwFooX__wBarY_f[T] extends MixZIfwFooX__wBarY_f[C] { ; ; f; }
+// */class S_TZIfwFooX__wBarYI_[T] extends MixZIfwFooX__wBarYI_[C] { ; ; f; }
+// */class S_TZIfwFooX__wBarYIf[T] extends MixZIfwFooX__wBarYIf[C] { ; ; f; }
+/* */class S_TZIfwFooX_f [T] extends MixZIfwFooX_f [C] { ; ; f; }
+/* */class S_TZIfwFooX_fwBar___[T] extends MixZIfwFooX_fwBar___[C] { ; ; f; }
+/* */class S_TZIfwFooX_fwBar__f[T] extends MixZIfwFooX_fwBar__f[C] { ; ; f; }
+// */class S_TZIfwFooX_fwBar_I_[T] extends MixZIfwFooX_fwBar_I_[C] { ; ; f; }
+// */class S_TZIfwFooX_fwBar_If[T] extends MixZIfwFooX_fwBar_If[C] { ; ; f; }
+/* */class S_TZIfwFooX_fwBarY__[T] extends MixZIfwFooX_fwBarY__[C] { ; ; f; }
+/* */class S_TZIfwFooX_fwBarY_f[T] extends MixZIfwFooX_fwBarY_f[C] { ; ; f; }
+// */class S_TZIfwFooX_fwBarYI_[T] extends MixZIfwFooX_fwBarYI_[C] { ; ; f; }
+// */class S_TZIfwFooX_fwBarYIf[T] extends MixZIfwFooX_fwBarYIf[C] { ; ; f; }
+// */class S_TZIfwFooXI_ [T] extends MixZIfwFooXI_ [C] { ; ; f; }
+// */class S_TZIfwFooXI_wBar___[T] extends MixZIfwFooXI_wBar___[C] { ; ; f; }
+// */class S_TZIfwFooXI_wBar__f[T] extends MixZIfwFooXI_wBar__f[C] { ; ; f; }
+// */class S_TZIfwFooXI_wBar_I_[T] extends MixZIfwFooXI_wBar_I_[C] { ; ; f; }
+// */class S_TZIfwFooXI_wBar_If[T] extends MixZIfwFooXI_wBar_If[C] { ; ; f; }
+// */class S_TZIfwFooXI_wBarY__[T] extends MixZIfwFooXI_wBarY__[C] { ; ; f; }
+// */class S_TZIfwFooXI_wBarY_f[T] extends MixZIfwFooXI_wBarY_f[C] { ; ; f; }
+// */class S_TZIfwFooXI_wBarYI_[T] extends MixZIfwFooXI_wBarYI_[C] { ; ; f; }
+// */class S_TZIfwFooXI_wBarYIf[T] extends MixZIfwFooXI_wBarYIf[C] { ; ; f; }
+// */class S_TZIfwFooXIf [T] extends MixZIfwFooXIf [C] { ; ; f; }
+// */class S_TZIfwFooXIfwBar___[T] extends MixZIfwFooXIfwBar___[C] { ; ; f; }
+// */class S_TZIfwFooXIfwBar__f[T] extends MixZIfwFooXIfwBar__f[C] { ; ; f; }
+// */class S_TZIfwFooXIfwBar_I_[T] extends MixZIfwFooXIfwBar_I_[C] { ; ; f; }
+// */class S_TZIfwFooXIfwBar_If[T] extends MixZIfwFooXIfwBar_If[C] { ; ; f; }
+// */class S_TZIfwFooXIfwBarY__[T] extends MixZIfwFooXIfwBarY__[C] { ; ; f; }
+// */class S_TZIfwFooXIfwBarY_f[T] extends MixZIfwFooXIfwBarY_f[C] { ; ; f; }
+// */class S_TZIfwFooXIfwBarYI_[T] extends MixZIfwFooXIfwBarYI_[C] { ; ; f; }
+// */class S_TZIfwFooXIfwBarYIf[T] extends MixZIfwFooXIfwBarYIf[C] { ; ; f; }
+
+
+
+object Test {
+ var errors: Int = 0;
+ def test(name: String, test: => Any, count: Int, value: String) = {
+ try {
+ Help.init;
+ test;
+ if (!Help.check(count, value)) {
+ Console.print(name + " failed: ");
+ Help.print;
+ Console.println;
+ errors = errors + 1;
+ }
+ } catch {
+ case exception => {
+ Console.print(name + " raised exception " + exception);
+ Console.println;
+ errors = errors + 1;
+ }
+ }
+ }
+
+ def main(args:Array[String]): Unit = {
+
+ // */abstract test("Mix___eFoo___ ", new Mix___eFoo___ , 2, null );
+ // */abstract test("Mix___eFoo___wBar___", new Mix___eFoo___wBar___ , 3, null );
+ // */abstract test("Mix___eFoo___wBar__f", new Mix___eFoo___wBar__f , 3, "bar");
+ // */abstract test("Mix___eFoo___wBar_I_", new Mix___eFoo___wBar_I_ , 3, null );
+ /* *//* */ test("Mix___eFoo___wBar_If", new Mix___eFoo___wBar_If , 3, "bar");
+ // */abstract test("Mix___eFoo___wBarY__", new Mix___eFoo___wBarY__ , 3, null );
+ // */abstract test("Mix___eFoo___wBarY_f", new Mix___eFoo___wBarY_f , 3, "bar");
+ // */abstract test("Mix___eFoo___wBarYI_", new Mix___eFoo___wBarYI_ , 3, null );
+ /* *//* */ test("Mix___eFoo___wBarYIf", new Mix___eFoo___wBarYIf , 3, "bar");
+ // */abstract test("Mix___eFoo__f ", new Mix___eFoo__f , 2, "foo");
+ // */abstract test("Mix___eFoo__fwBar___", new Mix___eFoo__fwBar___ , 3, "foo");
+ // */abstract test("Mix___eFoo__fwBar__f", new Mix___eFoo__fwBar__f , 3, "bar");
+ /* *//* */ test("Mix___eFoo__fwBar_I_", new Mix___eFoo__fwBar_I_ , 3, "foo");
+ // *//* */ test("Mix___eFoo__fwBar_If", new Mix___eFoo__fwBar_If , 3, "bar");
+ // */abstract test("Mix___eFoo__fwBarY__", new Mix___eFoo__fwBarY__ , 3, "foo");
+ // */abstract test("Mix___eFoo__fwBarY_f", new Mix___eFoo__fwBarY_f , 3, "bar");
+ /* *//* */ test("Mix___eFoo__fwBarYI_", new Mix___eFoo__fwBarYI_ , 3, "foo");
+ // *//* */ test("Mix___eFoo__fwBarYIf", new Mix___eFoo__fwBarYIf , 3, "bar");
+ // */abstract test("Mix___eFoo_I_ ", new Mix___eFoo_I_ , 2, null );
+ // */abstract test("Mix___eFoo_I_wBar___", new Mix___eFoo_I_wBar___ , 3, null );
+ /* *//* */ test("Mix___eFoo_I_wBar__f", new Mix___eFoo_I_wBar__f , 3, "bar");
+ // */abstract test("Mix___eFoo_I_wBar_I_", new Mix___eFoo_I_wBar_I_ , 3, null );
+ // *//* */ test("Mix___eFoo_I_wBar_If", new Mix___eFoo_I_wBar_If , 3, "bar");
+ // */abstract test("Mix___eFoo_I_wBarY__", new Mix___eFoo_I_wBarY__ , 3, null );
+ /* *//* */ test("Mix___eFoo_I_wBarY_f", new Mix___eFoo_I_wBarY_f , 3, "bar");
+ // */abstract test("Mix___eFoo_I_wBarYI_", new Mix___eFoo_I_wBarYI_ , 3, null );
+ // *//* */ test("Mix___eFoo_I_wBarYIf", new Mix___eFoo_I_wBarYIf , 3, "bar");
+ /* *//* */ test("Mix___eFoo_If ", new Mix___eFoo_If , 2, "foo");
+ /* *//* */ test("Mix___eFoo_IfwBar___", new Mix___eFoo_IfwBar___ , 3, "foo");
+ // *//* */ test("Mix___eFoo_IfwBar__f", new Mix___eFoo_IfwBar__f , 3, "bar");
+ // *//* */ test("Mix___eFoo_IfwBar_I_", new Mix___eFoo_IfwBar_I_ , 3, "foo");
+ // *//* */ test("Mix___eFoo_IfwBar_If", new Mix___eFoo_IfwBar_If , 3, "bar");
+ /* *//* */ test("Mix___eFoo_IfwBarY__", new Mix___eFoo_IfwBarY__ , 3, "foo");
+ // *//* */ test("Mix___eFoo_IfwBarY_f", new Mix___eFoo_IfwBarY_f , 3, "bar");
+ // *//* */ test("Mix___eFoo_IfwBarYI_", new Mix___eFoo_IfwBarYI_ , 3, "foo");
+ // *//* */ test("Mix___eFoo_IfwBarYIf", new Mix___eFoo_IfwBarYIf , 3, "bar");
+ // */abstract test("Mix___eFooX__ ", new Mix___eFooX__ , 2, null );
+ // */abstract test("Mix___eFooX__wBar___", new Mix___eFooX__wBar___ , 3, null );
+ // */abstract test("Mix___eFooX__wBar__f", new Mix___eFooX__wBar__f , 3, "bar");
+ // */abstract test("Mix___eFooX__wBar_I_", new Mix___eFooX__wBar_I_ , 3, null );
+ /* *//* */ test("Mix___eFooX__wBar_If", new Mix___eFooX__wBar_If , 3, "bar");
+ // */abstract test("Mix___eFooX__wBarY__", new Mix___eFooX__wBarY__ , 3, null );
+ // */abstract test("Mix___eFooX__wBarY_f", new Mix___eFooX__wBarY_f , 3, "bar");
+ // */abstract test("Mix___eFooX__wBarYI_", new Mix___eFooX__wBarYI_ , 3, null );
+ /* *//* */ test("Mix___eFooX__wBarYIf", new Mix___eFooX__wBarYIf , 3, "bar");
+ // */abstract test("Mix___eFooX_f ", new Mix___eFooX_f , 2, "foo");
+ // */abstract test("Mix___eFooX_fwBar___", new Mix___eFooX_fwBar___ , 3, "foo");
+ // */abstract test("Mix___eFooX_fwBar__f", new Mix___eFooX_fwBar__f , 3, "bar");
+ /* *//* */ test("Mix___eFooX_fwBar_I_", new Mix___eFooX_fwBar_I_ , 3, "foo");
+ // *//* */ test("Mix___eFooX_fwBar_If", new Mix___eFooX_fwBar_If , 3, "bar");
+ // */abstract test("Mix___eFooX_fwBarY__", new Mix___eFooX_fwBarY__ , 3, "foo");
+ // */abstract test("Mix___eFooX_fwBarY_f", new Mix___eFooX_fwBarY_f , 3, "bar");
+ /* *//* */ test("Mix___eFooX_fwBarYI_", new Mix___eFooX_fwBarYI_ , 3, "foo");
+ // *//* */ test("Mix___eFooX_fwBarYIf", new Mix___eFooX_fwBarYIf , 3, "bar");
+ // */abstract test("Mix___eFooXI_ ", new Mix___eFooXI_ , 2, null );
+ // */abstract test("Mix___eFooXI_wBar___", new Mix___eFooXI_wBar___ , 3, null );
+ /* *//* */ test("Mix___eFooXI_wBar__f", new Mix___eFooXI_wBar__f , 3, "bar");
+ // */abstract test("Mix___eFooXI_wBar_I_", new Mix___eFooXI_wBar_I_ , 3, null );
+ // *//* */ test("Mix___eFooXI_wBar_If", new Mix___eFooXI_wBar_If , 3, "bar");
+ // */abstract test("Mix___eFooXI_wBarY__", new Mix___eFooXI_wBarY__ , 3, null );
+ /* *//* */ test("Mix___eFooXI_wBarY_f", new Mix___eFooXI_wBarY_f , 3, "bar");
+ // */abstract test("Mix___eFooXI_wBarYI_", new Mix___eFooXI_wBarYI_ , 3, null );
+ // *//* */ test("Mix___eFooXI_wBarYIf", new Mix___eFooXI_wBarYIf , 3, "bar");
+ /* *//* */ test("Mix___eFooXIf ", new Mix___eFooXIf , 2, "foo");
+ /* *//* */ test("Mix___eFooXIfwBar___", new Mix___eFooXIfwBar___ , 3, "foo");
+ // *//* */ test("Mix___eFooXIfwBar__f", new Mix___eFooXIfwBar__f , 3, "bar");
+ // *//* */ test("Mix___eFooXIfwBar_I_", new Mix___eFooXIfwBar_I_ , 3, "foo");
+ // *//* */ test("Mix___eFooXIfwBar_If", new Mix___eFooXIfwBar_If , 3, "bar");
+ /* *//* */ test("Mix___eFooXIfwBarY__", new Mix___eFooXIfwBarY__ , 3, "foo");
+ // *//* */ test("Mix___eFooXIfwBarY_f", new Mix___eFooXIfwBarY_f , 3, "bar");
+ // *//* */ test("Mix___eFooXIfwBarYI_", new Mix___eFooXIfwBarYI_ , 3, "foo");
+ // *//* */ test("Mix___eFooXIfwBarYIf", new Mix___eFooXIfwBarYIf , 3, "bar");
+
+ // */abstract test("Mix__feFoo___ ", new Mix__feFoo___ , 2, "mix");
+ // */abstract test("Mix__feFoo___wBar___", new Mix__feFoo___wBar___ , 3, "mix");
+ // */abstract test("Mix__feFoo___wBar__f", new Mix__feFoo___wBar__f , 3, "mix");
+ /* *//* */ test("Mix__feFoo___wBar_I_", new Mix__feFoo___wBar_I_ , 3, "mix");
+ /* *//* */ test("Mix__feFoo___wBar_If", new Mix__feFoo___wBar_If , 3, "mix");
+ // */abstract test("Mix__feFoo___wBarY__", new Mix__feFoo___wBarY__ , 3, "mix");
+ // */abstract test("Mix__feFoo___wBarY_f", new Mix__feFoo___wBarY_f , 3, "mix");
+ /* *//* */ test("Mix__feFoo___wBarYI_", new Mix__feFoo___wBarYI_ , 3, "mix");
+ /* *//* */ test("Mix__feFoo___wBarYIf", new Mix__feFoo___wBarYIf , 3, "mix");
+ // */abstract test("Mix__feFoo__f ", new Mix__feFoo__f , 2, "mix");
+ // */abstract test("Mix__feFoo__fwBar___", new Mix__feFoo__fwBar___ , 3, "mix");
+ // */abstract test("Mix__feFoo__fwBar__f", new Mix__feFoo__fwBar__f , 3, "mix");
+ /* *//* */ test("Mix__feFoo__fwBar_I_", new Mix__feFoo__fwBar_I_ , 3, "mix");
+ /* *//* */ test("Mix__feFoo__fwBar_If", new Mix__feFoo__fwBar_If , 3, "mix");
+ // */abstract test("Mix__feFoo__fwBarY__", new Mix__feFoo__fwBarY__ , 3, "mix");
+ // */abstract test("Mix__feFoo__fwBarY_f", new Mix__feFoo__fwBarY_f , 3, "mix");
+ /* *//* */ test("Mix__feFoo__fwBarYI_", new Mix__feFoo__fwBarYI_ , 3, "mix");
+ /* *//* */ test("Mix__feFoo__fwBarYIf", new Mix__feFoo__fwBarYIf , 3, "mix");
+ /* *//* */ test("Mix__feFoo_I_ ", new Mix__feFoo_I_ , 2, "mix");
+ /* *//* */ test("Mix__feFoo_I_wBar___", new Mix__feFoo_I_wBar___ , 3, "mix");
+ /* *//* */ test("Mix__feFoo_I_wBar__f", new Mix__feFoo_I_wBar__f , 3, "mix");
+ // *//* */ test("Mix__feFoo_I_wBar_I_", new Mix__feFoo_I_wBar_I_ , 3, "mix");
+ // *//* */ test("Mix__feFoo_I_wBar_If", new Mix__feFoo_I_wBar_If , 3, "mix");
+ /* *//* */ test("Mix__feFoo_I_wBarY__", new Mix__feFoo_I_wBarY__ , 3, "mix");
+ /* *//* */ test("Mix__feFoo_I_wBarY_f", new Mix__feFoo_I_wBarY_f , 3, "mix");
+ // *//* */ test("Mix__feFoo_I_wBarYI_", new Mix__feFoo_I_wBarYI_ , 3, "mix");
+ // *//* */ test("Mix__feFoo_I_wBarYIf", new Mix__feFoo_I_wBarYIf , 3, "mix");
+ /* *//* */ test("Mix__feFoo_If ", new Mix__feFoo_If , 2, "mix");
+ /* *//* */ test("Mix__feFoo_IfwBar___", new Mix__feFoo_IfwBar___ , 3, "mix");
+ /* *//* */ test("Mix__feFoo_IfwBar__f", new Mix__feFoo_IfwBar__f , 3, "mix");
+ // *//* */ test("Mix__feFoo_IfwBar_I_", new Mix__feFoo_IfwBar_I_ , 3, "mix");
+ // *//* */ test("Mix__feFoo_IfwBar_If", new Mix__feFoo_IfwBar_If , 3, "mix");
+ /* *//* */ test("Mix__feFoo_IfwBarY__", new Mix__feFoo_IfwBarY__ , 3, "mix");
+ /* *//* */ test("Mix__feFoo_IfwBarY_f", new Mix__feFoo_IfwBarY_f , 3, "mix");
+ // *//* */ test("Mix__feFoo_IfwBarYI_", new Mix__feFoo_IfwBarYI_ , 3, "mix");
+ // *//* */ test("Mix__feFoo_IfwBarYIf", new Mix__feFoo_IfwBarYIf , 3, "mix");
+ // */abstract test("Mix__feFooX__ ", new Mix__feFooX__ , 2, "mix");
+ // */abstract test("Mix__feFooX__wBar___", new Mix__feFooX__wBar___ , 3, "mix");
+ // */abstract test("Mix__feFooX__wBar__f", new Mix__feFooX__wBar__f , 3, "mix");
+ /* *//* */ test("Mix__feFooX__wBar_I_", new Mix__feFooX__wBar_I_ , 3, "mix");
+ /* *//* */ test("Mix__feFooX__wBar_If", new Mix__feFooX__wBar_If , 3, "mix");
+ // */abstract test("Mix__feFooX__wBarY__", new Mix__feFooX__wBarY__ , 3, "mix");
+ // */abstract test("Mix__feFooX__wBarY_f", new Mix__feFooX__wBarY_f , 3, "mix");
+ /* *//* */ test("Mix__feFooX__wBarYI_", new Mix__feFooX__wBarYI_ , 3, "mix");
+ /* *//* */ test("Mix__feFooX__wBarYIf", new Mix__feFooX__wBarYIf , 3, "mix");
+ // */abstract test("Mix__feFooX_f ", new Mix__feFooX_f , 2, "mix");
+ // */abstract test("Mix__feFooX_fwBar___", new Mix__feFooX_fwBar___ , 3, "mix");
+ // */abstract test("Mix__feFooX_fwBar__f", new Mix__feFooX_fwBar__f , 3, "mix");
+ /* *//* */ test("Mix__feFooX_fwBar_I_", new Mix__feFooX_fwBar_I_ , 3, "mix");
+ /* *//* */ test("Mix__feFooX_fwBar_If", new Mix__feFooX_fwBar_If , 3, "mix");
+ // */abstract test("Mix__feFooX_fwBarY__", new Mix__feFooX_fwBarY__ , 3, "mix");
+ // */abstract test("Mix__feFooX_fwBarY_f", new Mix__feFooX_fwBarY_f , 3, "mix");
+ /* *//* */ test("Mix__feFooX_fwBarYI_", new Mix__feFooX_fwBarYI_ , 3, "mix");
+ /* *//* */ test("Mix__feFooX_fwBarYIf", new Mix__feFooX_fwBarYIf , 3, "mix");
+ /* *//* */ test("Mix__feFooXI_ ", new Mix__feFooXI_ , 2, "mix");
+ /* *//* */ test("Mix__feFooXI_wBar___", new Mix__feFooXI_wBar___ , 3, "mix");
+ /* *//* */ test("Mix__feFooXI_wBar__f", new Mix__feFooXI_wBar__f , 3, "mix");
+ // *//* */ test("Mix__feFooXI_wBar_I_", new Mix__feFooXI_wBar_I_ , 3, "mix");
+ // *//* */ test("Mix__feFooXI_wBar_If", new Mix__feFooXI_wBar_If , 3, "mix");
+ /* *//* */ test("Mix__feFooXI_wBarY__", new Mix__feFooXI_wBarY__ , 3, "mix");
+ /* *//* */ test("Mix__feFooXI_wBarY_f", new Mix__feFooXI_wBarY_f , 3, "mix");
+ // *//* */ test("Mix__feFooXI_wBarYI_", new Mix__feFooXI_wBarYI_ , 3, "mix");
+ // *//* */ test("Mix__feFooXI_wBarYIf", new Mix__feFooXI_wBarYIf , 3, "mix");
+ /* *//* */ test("Mix__feFooXIf ", new Mix__feFooXIf , 2, "mix");
+ /* *//* */ test("Mix__feFooXIfwBar___", new Mix__feFooXIfwBar___ , 3, "mix");
+ /* *//* */ test("Mix__feFooXIfwBar__f", new Mix__feFooXIfwBar__f , 3, "mix");
+ // *//* */ test("Mix__feFooXIfwBar_I_", new Mix__feFooXIfwBar_I_ , 3, "mix");
+ // *//* */ test("Mix__feFooXIfwBar_If", new Mix__feFooXIfwBar_If , 3, "mix");
+ /* *//* */ test("Mix__feFooXIfwBarY__", new Mix__feFooXIfwBarY__ , 3, "mix");
+ /* *//* */ test("Mix__feFooXIfwBarY_f", new Mix__feFooXIfwBarY_f , 3, "mix");
+ // *//* */ test("Mix__feFooXIfwBarYI_", new Mix__feFooXIfwBarYI_ , 3, "mix");
+ // *//* */ test("Mix__feFooXIfwBarYIf", new Mix__feFooXIfwBarYIf , 3, "mix");
+
+ // */abstract test("Mix_I_eFoo___ ", new Mix_I_eFoo___ , 2, null );
+ // */abstract test("Mix_I_eFoo___wBar___", new Mix_I_eFoo___wBar___ , 3, null );
+ /* *//* */ test("Mix_I_eFoo___wBar__f", new Mix_I_eFoo___wBar__f , 3, "bar");
+ // */abstract test("Mix_I_eFoo___wBar_I_", new Mix_I_eFoo___wBar_I_ , 3, null );
+ // *//* */ test("Mix_I_eFoo___wBar_If", new Mix_I_eFoo___wBar_If , 3, "bar");
+ // */abstract test("Mix_I_eFoo___wBarY__", new Mix_I_eFoo___wBarY__ , 3, null );
+ /* *//* */ test("Mix_I_eFoo___wBarY_f", new Mix_I_eFoo___wBarY_f , 3, "bar");
+ // */abstract test("Mix_I_eFoo___wBarYI_", new Mix_I_eFoo___wBarYI_ , 3, null );
+ // *//* */ test("Mix_I_eFoo___wBarYIf", new Mix_I_eFoo___wBarYIf , 3, "bar");
+ /* *//* */ test("Mix_I_eFoo__f ", new Mix_I_eFoo__f , 2, "foo");
+ /* *//* */ test("Mix_I_eFoo__fwBar___", new Mix_I_eFoo__fwBar___ , 3, "foo");
+ // *//* */ test("Mix_I_eFoo__fwBar__f", new Mix_I_eFoo__fwBar__f , 3, "bar");
+ // *//* */ test("Mix_I_eFoo__fwBar_I_", new Mix_I_eFoo__fwBar_I_ , 3, "foo");
+ // *//* */ test("Mix_I_eFoo__fwBar_If", new Mix_I_eFoo__fwBar_If , 3, "bar");
+ /* *//* */ test("Mix_I_eFoo__fwBarY__", new Mix_I_eFoo__fwBarY__ , 3, "foo");
+ // *//* */ test("Mix_I_eFoo__fwBarY_f", new Mix_I_eFoo__fwBarY_f , 3, "bar");
+ // *//* */ test("Mix_I_eFoo__fwBarYI_", new Mix_I_eFoo__fwBarYI_ , 3, "foo");
+ // *//* */ test("Mix_I_eFoo__fwBarYIf", new Mix_I_eFoo__fwBarYIf , 3, "bar");
+ // */abstract test("Mix_I_eFoo_I_ ", new Mix_I_eFoo_I_ , 2, null );
+ // */abstract test("Mix_I_eFoo_I_wBar___", new Mix_I_eFoo_I_wBar___ , 3, null );
+ // *//* */ test("Mix_I_eFoo_I_wBar__f", new Mix_I_eFoo_I_wBar__f , 3, "bar");
+ // */abstract test("Mix_I_eFoo_I_wBar_I_", new Mix_I_eFoo_I_wBar_I_ , 3, null );
+ // *//* */ test("Mix_I_eFoo_I_wBar_If", new Mix_I_eFoo_I_wBar_If , 3, "bar");
+ // */abstract test("Mix_I_eFoo_I_wBarY__", new Mix_I_eFoo_I_wBarY__ , 3, null );
+ // *//* */ test("Mix_I_eFoo_I_wBarY_f", new Mix_I_eFoo_I_wBarY_f , 3, "bar");
+ // */abstract test("Mix_I_eFoo_I_wBarYI_", new Mix_I_eFoo_I_wBarYI_ , 3, null );
+ // *//* */ test("Mix_I_eFoo_I_wBarYIf", new Mix_I_eFoo_I_wBarYIf , 3, "bar");
+ // *//* */ test("Mix_I_eFoo_If ", new Mix_I_eFoo_If , 2, "foo");
+ // *//* */ test("Mix_I_eFoo_IfwBar___", new Mix_I_eFoo_IfwBar___ , 3, "foo");
+ // *//* */ test("Mix_I_eFoo_IfwBar__f", new Mix_I_eFoo_IfwBar__f , 3, "bar");
+ // *//* */ test("Mix_I_eFoo_IfwBar_I_", new Mix_I_eFoo_IfwBar_I_ , 3, "foo");
+ // *//* */ test("Mix_I_eFoo_IfwBar_If", new Mix_I_eFoo_IfwBar_If , 3, "bar");
+ // *//* */ test("Mix_I_eFoo_IfwBarY__", new Mix_I_eFoo_IfwBarY__ , 3, "foo");
+ // *//* */ test("Mix_I_eFoo_IfwBarY_f", new Mix_I_eFoo_IfwBarY_f , 3, "bar");
+ // *//* */ test("Mix_I_eFoo_IfwBarYI_", new Mix_I_eFoo_IfwBarYI_ , 3, "foo");
+ // *//* */ test("Mix_I_eFoo_IfwBarYIf", new Mix_I_eFoo_IfwBarYIf , 3, "bar");
+ // */abstract test("Mix_I_eFooX__ ", new Mix_I_eFooX__ , 2, null );
+ // */abstract test("Mix_I_eFooX__wBar___", new Mix_I_eFooX__wBar___ , 3, null );
+ /* *//* */ test("Mix_I_eFooX__wBar__f", new Mix_I_eFooX__wBar__f , 3, "bar");
+ // */abstract test("Mix_I_eFooX__wBar_I_", new Mix_I_eFooX__wBar_I_ , 3, null );
+ // *//* */ test("Mix_I_eFooX__wBar_If", new Mix_I_eFooX__wBar_If , 3, "bar");
+ // */abstract test("Mix_I_eFooX__wBarY__", new Mix_I_eFooX__wBarY__ , 3, null );
+ /* *//* */ test("Mix_I_eFooX__wBarY_f", new Mix_I_eFooX__wBarY_f , 3, "bar");
+ // */abstract test("Mix_I_eFooX__wBarYI_", new Mix_I_eFooX__wBarYI_ , 3, null );
+ // *//* */ test("Mix_I_eFooX__wBarYIf", new Mix_I_eFooX__wBarYIf , 3, "bar");
+ /* *//* */ test("Mix_I_eFooX_f ", new Mix_I_eFooX_f , 2, "foo");
+ /* *//* */ test("Mix_I_eFooX_fwBar___", new Mix_I_eFooX_fwBar___ , 3, "foo");
+ // *//* */ test("Mix_I_eFooX_fwBar__f", new Mix_I_eFooX_fwBar__f , 3, "bar");
+ // *//* */ test("Mix_I_eFooX_fwBar_I_", new Mix_I_eFooX_fwBar_I_ , 3, "foo");
+ // *//* */ test("Mix_I_eFooX_fwBar_If", new Mix_I_eFooX_fwBar_If , 3, "bar");
+ /* *//* */ test("Mix_I_eFooX_fwBarY__", new Mix_I_eFooX_fwBarY__ , 3, "foo");
+ // *//* */ test("Mix_I_eFooX_fwBarY_f", new Mix_I_eFooX_fwBarY_f , 3, "bar");
+ // *//* */ test("Mix_I_eFooX_fwBarYI_", new Mix_I_eFooX_fwBarYI_ , 3, "foo");
+ // *//* */ test("Mix_I_eFooX_fwBarYIf", new Mix_I_eFooX_fwBarYIf , 3, "bar");
+ // */abstract test("Mix_I_eFooXI_ ", new Mix_I_eFooXI_ , 2, null );
+ // */abstract test("Mix_I_eFooXI_wBar___", new Mix_I_eFooXI_wBar___ , 3, null );
+ // *//* */ test("Mix_I_eFooXI_wBar__f", new Mix_I_eFooXI_wBar__f , 3, "bar");
+ // */abstract test("Mix_I_eFooXI_wBar_I_", new Mix_I_eFooXI_wBar_I_ , 3, null );
+ // *//* */ test("Mix_I_eFooXI_wBar_If", new Mix_I_eFooXI_wBar_If , 3, "bar");
+ // */abstract test("Mix_I_eFooXI_wBarY__", new Mix_I_eFooXI_wBarY__ , 3, null );
+ // *//* */ test("Mix_I_eFooXI_wBarY_f", new Mix_I_eFooXI_wBarY_f , 3, "bar");
+ // */abstract test("Mix_I_eFooXI_wBarYI_", new Mix_I_eFooXI_wBarYI_ , 3, null );
+ // *//* */ test("Mix_I_eFooXI_wBarYIf", new Mix_I_eFooXI_wBarYIf , 3, "bar");
+ // *//* */ test("Mix_I_eFooXIf ", new Mix_I_eFooXIf , 2, "foo");
+ // *//* */ test("Mix_I_eFooXIfwBar___", new Mix_I_eFooXIfwBar___ , 3, "foo");
+ // *//* */ test("Mix_I_eFooXIfwBar__f", new Mix_I_eFooXIfwBar__f , 3, "bar");
+ // *//* */ test("Mix_I_eFooXIfwBar_I_", new Mix_I_eFooXIfwBar_I_ , 3, "foo");
+ // *//* */ test("Mix_I_eFooXIfwBar_If", new Mix_I_eFooXIfwBar_If , 3, "bar");
+ // *//* */ test("Mix_I_eFooXIfwBarY__", new Mix_I_eFooXIfwBarY__ , 3, "foo");
+ // *//* */ test("Mix_I_eFooXIfwBarY_f", new Mix_I_eFooXIfwBarY_f , 3, "bar");
+ // *//* */ test("Mix_I_eFooXIfwBarYI_", new Mix_I_eFooXIfwBarYI_ , 3, "foo");
+ // *//* */ test("Mix_I_eFooXIfwBarYIf", new Mix_I_eFooXIfwBarYIf , 3, "bar");
+
+ /* *//* */ test("Mix_IfeFoo___ ", new Mix_IfeFoo___ , 2, "mix");
+ /* *//* */ test("Mix_IfeFoo___wBar___", new Mix_IfeFoo___wBar___ , 3, "mix");
+ /* *//* */ test("Mix_IfeFoo___wBar__f", new Mix_IfeFoo___wBar__f , 3, "mix");
+ // *//* */ test("Mix_IfeFoo___wBar_I_", new Mix_IfeFoo___wBar_I_ , 3, "mix");
+ // *//* */ test("Mix_IfeFoo___wBar_If", new Mix_IfeFoo___wBar_If , 3, "mix");
+ /* *//* */ test("Mix_IfeFoo___wBarY__", new Mix_IfeFoo___wBarY__ , 3, "mix");
+ /* *//* */ test("Mix_IfeFoo___wBarY_f", new Mix_IfeFoo___wBarY_f , 3, "mix");
+ // *//* */ test("Mix_IfeFoo___wBarYI_", new Mix_IfeFoo___wBarYI_ , 3, "mix");
+ // *//* */ test("Mix_IfeFoo___wBarYIf", new Mix_IfeFoo___wBarYIf , 3, "mix");
+ /* *//* */ test("Mix_IfeFoo__f ", new Mix_IfeFoo__f , 2, "mix");
+ /* *//* */ test("Mix_IfeFoo__fwBar___", new Mix_IfeFoo__fwBar___ , 3, "mix");
+ /* *//* */ test("Mix_IfeFoo__fwBar__f", new Mix_IfeFoo__fwBar__f , 3, "mix");
+ // *//* */ test("Mix_IfeFoo__fwBar_I_", new Mix_IfeFoo__fwBar_I_ , 3, "mix");
+ // *//* */ test("Mix_IfeFoo__fwBar_If", new Mix_IfeFoo__fwBar_If , 3, "mix");
+ /* *//* */ test("Mix_IfeFoo__fwBarY__", new Mix_IfeFoo__fwBarY__ , 3, "mix");
+ /* *//* */ test("Mix_IfeFoo__fwBarY_f", new Mix_IfeFoo__fwBarY_f , 3, "mix");
+ // *//* */ test("Mix_IfeFoo__fwBarYI_", new Mix_IfeFoo__fwBarYI_ , 3, "mix");
+ // *//* */ test("Mix_IfeFoo__fwBarYIf", new Mix_IfeFoo__fwBarYIf , 3, "mix");
+ // *//* */ test("Mix_IfeFoo_I_ ", new Mix_IfeFoo_I_ , 2, "mix");
+ // *//* */ test("Mix_IfeFoo_I_wBar___", new Mix_IfeFoo_I_wBar___ , 3, "mix");
+ // *//* */ test("Mix_IfeFoo_I_wBar__f", new Mix_IfeFoo_I_wBar__f , 3, "mix");
+ // *//* */ test("Mix_IfeFoo_I_wBar_I_", new Mix_IfeFoo_I_wBar_I_ , 3, "mix");
+ // *//* */ test("Mix_IfeFoo_I_wBar_If", new Mix_IfeFoo_I_wBar_If , 3, "mix");
+ // *//* */ test("Mix_IfeFoo_I_wBarY__", new Mix_IfeFoo_I_wBarY__ , 3, "mix");
+ // *//* */ test("Mix_IfeFoo_I_wBarY_f", new Mix_IfeFoo_I_wBarY_f , 3, "mix");
+ // *//* */ test("Mix_IfeFoo_I_wBarYI_", new Mix_IfeFoo_I_wBarYI_ , 3, "mix");
+ // *//* */ test("Mix_IfeFoo_I_wBarYIf", new Mix_IfeFoo_I_wBarYIf , 3, "mix");
+ // *//* */ test("Mix_IfeFoo_If ", new Mix_IfeFoo_If , 2, "mix");
+ // *//* */ test("Mix_IfeFoo_IfwBar___", new Mix_IfeFoo_IfwBar___ , 3, "mix");
+ // *//* */ test("Mix_IfeFoo_IfwBar__f", new Mix_IfeFoo_IfwBar__f , 3, "mix");
+ // *//* */ test("Mix_IfeFoo_IfwBar_I_", new Mix_IfeFoo_IfwBar_I_ , 3, "mix");
+ // *//* */ test("Mix_IfeFoo_IfwBar_If", new Mix_IfeFoo_IfwBar_If , 3, "mix");
+ // *//* */ test("Mix_IfeFoo_IfwBarY__", new Mix_IfeFoo_IfwBarY__ , 3, "mix");
+ // *//* */ test("Mix_IfeFoo_IfwBarY_f", new Mix_IfeFoo_IfwBarY_f , 3, "mix");
+ // *//* */ test("Mix_IfeFoo_IfwBarYI_", new Mix_IfeFoo_IfwBarYI_ , 3, "mix");
+ // *//* */ test("Mix_IfeFoo_IfwBarYIf", new Mix_IfeFoo_IfwBarYIf , 3, "mix");
+ /* *//* */ test("Mix_IfeFooX__ ", new Mix_IfeFooX__ , 2, "mix");
+ /* *//* */ test("Mix_IfeFooX__wBar___", new Mix_IfeFooX__wBar___ , 3, "mix");
+ /* *//* */ test("Mix_IfeFooX__wBar__f", new Mix_IfeFooX__wBar__f , 3, "mix");
+ // *//* */ test("Mix_IfeFooX__wBar_I_", new Mix_IfeFooX__wBar_I_ , 3, "mix");
+ // *//* */ test("Mix_IfeFooX__wBar_If", new Mix_IfeFooX__wBar_If , 3, "mix");
+ /* *//* */ test("Mix_IfeFooX__wBarY__", new Mix_IfeFooX__wBarY__ , 3, "mix");
+ /* *//* */ test("Mix_IfeFooX__wBarY_f", new Mix_IfeFooX__wBarY_f , 3, "mix");
+ // *//* */ test("Mix_IfeFooX__wBarYI_", new Mix_IfeFooX__wBarYI_ , 3, "mix");
+ // *//* */ test("Mix_IfeFooX__wBarYIf", new Mix_IfeFooX__wBarYIf , 3, "mix");
+ /* *//* */ test("Mix_IfeFooX_f ", new Mix_IfeFooX_f , 2, "mix");
+ /* *//* */ test("Mix_IfeFooX_fwBar___", new Mix_IfeFooX_fwBar___ , 3, "mix");
+ /* *//* */ test("Mix_IfeFooX_fwBar__f", new Mix_IfeFooX_fwBar__f , 3, "mix");
+ // *//* */ test("Mix_IfeFooX_fwBar_I_", new Mix_IfeFooX_fwBar_I_ , 3, "mix");
+ // *//* */ test("Mix_IfeFooX_fwBar_If", new Mix_IfeFooX_fwBar_If , 3, "mix");
+ /* *//* */ test("Mix_IfeFooX_fwBarY__", new Mix_IfeFooX_fwBarY__ , 3, "mix");
+ /* *//* */ test("Mix_IfeFooX_fwBarY_f", new Mix_IfeFooX_fwBarY_f , 3, "mix");
+ // *//* */ test("Mix_IfeFooX_fwBarYI_", new Mix_IfeFooX_fwBarYI_ , 3, "mix");
+ // *//* */ test("Mix_IfeFooX_fwBarYIf", new Mix_IfeFooX_fwBarYIf , 3, "mix");
+ // *//* */ test("Mix_IfeFooXI_ ", new Mix_IfeFooXI_ , 2, "mix");
+ // *//* */ test("Mix_IfeFooXI_wBar___", new Mix_IfeFooXI_wBar___ , 3, "mix");
+ // *//* */ test("Mix_IfeFooXI_wBar__f", new Mix_IfeFooXI_wBar__f , 3, "mix");
+ // *//* */ test("Mix_IfeFooXI_wBar_I_", new Mix_IfeFooXI_wBar_I_ , 3, "mix");
+ // *//* */ test("Mix_IfeFooXI_wBar_If", new Mix_IfeFooXI_wBar_If , 3, "mix");
+ // *//* */ test("Mix_IfeFooXI_wBarY__", new Mix_IfeFooXI_wBarY__ , 3, "mix");
+ // *//* */ test("Mix_IfeFooXI_wBarY_f", new Mix_IfeFooXI_wBarY_f , 3, "mix");
+ // *//* */ test("Mix_IfeFooXI_wBarYI_", new Mix_IfeFooXI_wBarYI_ , 3, "mix");
+ // *//* */ test("Mix_IfeFooXI_wBarYIf", new Mix_IfeFooXI_wBarYIf , 3, "mix");
+ // *//* */ test("Mix_IfeFooXIf ", new Mix_IfeFooXIf , 2, "mix");
+ // *//* */ test("Mix_IfeFooXIfwBar___", new Mix_IfeFooXIfwBar___ , 3, "mix");
+ // *//* */ test("Mix_IfeFooXIfwBar__f", new Mix_IfeFooXIfwBar__f , 3, "mix");
+ // *//* */ test("Mix_IfeFooXIfwBar_I_", new Mix_IfeFooXIfwBar_I_ , 3, "mix");
+ // *//* */ test("Mix_IfeFooXIfwBar_If", new Mix_IfeFooXIfwBar_If , 3, "mix");
+ // *//* */ test("Mix_IfeFooXIfwBarY__", new Mix_IfeFooXIfwBarY__ , 3, "mix");
+ // *//* */ test("Mix_IfeFooXIfwBarY_f", new Mix_IfeFooXIfwBarY_f , 3, "mix");
+ // *//* */ test("Mix_IfeFooXIfwBarYI_", new Mix_IfeFooXIfwBarYI_ , 3, "mix");
+ // *//* */ test("Mix_IfeFooXIfwBarYIf", new Mix_IfeFooXIfwBarYIf , 3, "mix");
+
+ // */abstract test("MixZ__eFoo___ ", new MixZ__eFoo___ [C], 2, null );
+ // */abstract test("MixZ__eFoo___wBar___", new MixZ__eFoo___wBar___[C], 3, null );
+ // */abstract test("MixZ__eFoo___wBar__f", new MixZ__eFoo___wBar__f[C], 3, "bar");
+ // */abstract test("MixZ__eFoo___wBar_I_", new MixZ__eFoo___wBar_I_[C], 3, null );
+ /* *//* */ test("MixZ__eFoo___wBar_If", new MixZ__eFoo___wBar_If[C], 3, "bar");
+ // */abstract test("MixZ__eFoo___wBarY__", new MixZ__eFoo___wBarY__[C], 3, null );
+ // */abstract test("MixZ__eFoo___wBarY_f", new MixZ__eFoo___wBarY_f[C], 3, "bar");
+ // */abstract test("MixZ__eFoo___wBarYI_", new MixZ__eFoo___wBarYI_[C], 3, null );
+ /* *//* */ test("MixZ__eFoo___wBarYIf", new MixZ__eFoo___wBarYIf[C], 3, "bar");
+ // */abstract test("MixZ__eFoo__f ", new MixZ__eFoo__f [C], 2, "foo");
+ // */abstract test("MixZ__eFoo__fwBar___", new MixZ__eFoo__fwBar___[C], 3, "foo");
+ // */abstract test("MixZ__eFoo__fwBar__f", new MixZ__eFoo__fwBar__f[C], 3, "bar");
+ /* *//* */ test("MixZ__eFoo__fwBar_I_", new MixZ__eFoo__fwBar_I_[C], 3, "foo");
+ // *//* */ test("MixZ__eFoo__fwBar_If", new MixZ__eFoo__fwBar_If[C], 3, "bar");
+ // */abstract test("MixZ__eFoo__fwBarY__", new MixZ__eFoo__fwBarY__[C], 3, "foo");
+ // */abstract test("MixZ__eFoo__fwBarY_f", new MixZ__eFoo__fwBarY_f[C], 3, "bar");
+ /* *//* */ test("MixZ__eFoo__fwBarYI_", new MixZ__eFoo__fwBarYI_[C], 3, "foo");
+ // *//* */ test("MixZ__eFoo__fwBarYIf", new MixZ__eFoo__fwBarYIf[C], 3, "bar");
+ // */abstract test("MixZ__eFoo_I_ ", new MixZ__eFoo_I_ [C], 2, null );
+ // */abstract test("MixZ__eFoo_I_wBar___", new MixZ__eFoo_I_wBar___[C], 3, null );
+ /* *//* */ test("MixZ__eFoo_I_wBar__f", new MixZ__eFoo_I_wBar__f[C], 3, "bar");
+ // */abstract test("MixZ__eFoo_I_wBar_I_", new MixZ__eFoo_I_wBar_I_[C], 3, null );
+ // *//* */ test("MixZ__eFoo_I_wBar_If", new MixZ__eFoo_I_wBar_If[C], 3, "bar");
+ // */abstract test("MixZ__eFoo_I_wBarY__", new MixZ__eFoo_I_wBarY__[C], 3, null );
+ /* *//* */ test("MixZ__eFoo_I_wBarY_f", new MixZ__eFoo_I_wBarY_f[C], 3, "bar");
+ // */abstract test("MixZ__eFoo_I_wBarYI_", new MixZ__eFoo_I_wBarYI_[C], 3, null );
+ // *//* */ test("MixZ__eFoo_I_wBarYIf", new MixZ__eFoo_I_wBarYIf[C], 3, "bar");
+ /* *//* */ test("MixZ__eFoo_If ", new MixZ__eFoo_If [C], 2, "foo");
+ /* *//* */ test("MixZ__eFoo_IfwBar___", new MixZ__eFoo_IfwBar___[C], 3, "foo");
+ // *//* */ test("MixZ__eFoo_IfwBar__f", new MixZ__eFoo_IfwBar__f[C], 3, "bar");
+ // *//* */ test("MixZ__eFoo_IfwBar_I_", new MixZ__eFoo_IfwBar_I_[C], 3, "foo");
+ // *//* */ test("MixZ__eFoo_IfwBar_If", new MixZ__eFoo_IfwBar_If[C], 3, "bar");
+ /* *//* */ test("MixZ__eFoo_IfwBarY__", new MixZ__eFoo_IfwBarY__[C], 3, "foo");
+ // *//* */ test("MixZ__eFoo_IfwBarY_f", new MixZ__eFoo_IfwBarY_f[C], 3, "bar");
+ // *//* */ test("MixZ__eFoo_IfwBarYI_", new MixZ__eFoo_IfwBarYI_[C], 3, "foo");
+ // *//* */ test("MixZ__eFoo_IfwBarYIf", new MixZ__eFoo_IfwBarYIf[C], 3, "bar");
+ // */abstract test("MixZ__eFooX__ ", new MixZ__eFooX__ [C], 2, null );
+ // */abstract test("MixZ__eFooX__wBar___", new MixZ__eFooX__wBar___[C], 3, null );
+ // */abstract test("MixZ__eFooX__wBar__f", new MixZ__eFooX__wBar__f[C], 3, "bar");
+ // */abstract test("MixZ__eFooX__wBar_I_", new MixZ__eFooX__wBar_I_[C], 3, null );
+ /* *//* */ test("MixZ__eFooX__wBar_If", new MixZ__eFooX__wBar_If[C], 3, "bar");
+ // */abstract test("MixZ__eFooX__wBarY__", new MixZ__eFooX__wBarY__[C], 3, null );
+ // */abstract test("MixZ__eFooX__wBarY_f", new MixZ__eFooX__wBarY_f[C], 3, "bar");
+ // */abstract test("MixZ__eFooX__wBarYI_", new MixZ__eFooX__wBarYI_[C], 3, null );
+ /* *//* */ test("MixZ__eFooX__wBarYIf", new MixZ__eFooX__wBarYIf[C], 3, "bar");
+ // */abstract test("MixZ__eFooX_f ", new MixZ__eFooX_f [C], 2, "foo");
+ // */abstract test("MixZ__eFooX_fwBar___", new MixZ__eFooX_fwBar___[C], 3, "foo");
+ // */abstract test("MixZ__eFooX_fwBar__f", new MixZ__eFooX_fwBar__f[C], 3, "bar");
+ /* *//* */ test("MixZ__eFooX_fwBar_I_", new MixZ__eFooX_fwBar_I_[C], 3, "foo");
+ // *//* */ test("MixZ__eFooX_fwBar_If", new MixZ__eFooX_fwBar_If[C], 3, "bar");
+ // */abstract test("MixZ__eFooX_fwBarY__", new MixZ__eFooX_fwBarY__[C], 3, "foo");
+ // */abstract test("MixZ__eFooX_fwBarY_f", new MixZ__eFooX_fwBarY_f[C], 3, "bar");
+ /* *//* */ test("MixZ__eFooX_fwBarYI_", new MixZ__eFooX_fwBarYI_[C], 3, "foo");
+ // *//* */ test("MixZ__eFooX_fwBarYIf", new MixZ__eFooX_fwBarYIf[C], 3, "bar");
+ // */abstract test("MixZ__eFooXI_ ", new MixZ__eFooXI_ [C], 2, null );
+ // */abstract test("MixZ__eFooXI_wBar___", new MixZ__eFooXI_wBar___[C], 3, null );
+ /* *//* */ test("MixZ__eFooXI_wBar__f", new MixZ__eFooXI_wBar__f[C], 3, "bar");
+ // */abstract test("MixZ__eFooXI_wBar_I_", new MixZ__eFooXI_wBar_I_[C], 3, null );
+ // *//* */ test("MixZ__eFooXI_wBar_If", new MixZ__eFooXI_wBar_If[C], 3, "bar");
+ // */abstract test("MixZ__eFooXI_wBarY__", new MixZ__eFooXI_wBarY__[C], 3, null );
+ /* *//* */ test("MixZ__eFooXI_wBarY_f", new MixZ__eFooXI_wBarY_f[C], 3, "bar");
+ // */abstract test("MixZ__eFooXI_wBarYI_", new MixZ__eFooXI_wBarYI_[C], 3, null );
+ // *//* */ test("MixZ__eFooXI_wBarYIf", new MixZ__eFooXI_wBarYIf[C], 3, "bar");
+ /* *//* */ test("MixZ__eFooXIf ", new MixZ__eFooXIf [C], 2, "foo");
+ /* *//* */ test("MixZ__eFooXIfwBar___", new MixZ__eFooXIfwBar___[C], 3, "foo");
+ // *//* */ test("MixZ__eFooXIfwBar__f", new MixZ__eFooXIfwBar__f[C], 3, "bar");
+ // *//* */ test("MixZ__eFooXIfwBar_I_", new MixZ__eFooXIfwBar_I_[C], 3, "foo");
+ // *//* */ test("MixZ__eFooXIfwBar_If", new MixZ__eFooXIfwBar_If[C], 3, "bar");
+ /* *//* */ test("MixZ__eFooXIfwBarY__", new MixZ__eFooXIfwBarY__[C], 3, "foo");
+ // *//* */ test("MixZ__eFooXIfwBarY_f", new MixZ__eFooXIfwBarY_f[C], 3, "bar");
+ // *//* */ test("MixZ__eFooXIfwBarYI_", new MixZ__eFooXIfwBarYI_[C], 3, "foo");
+ // *//* */ test("MixZ__eFooXIfwBarYIf", new MixZ__eFooXIfwBarYIf[C], 3, "bar");
+
+ // */abstract test("MixZ_feFoo___ ", new MixZ_feFoo___ [C], 2, "mix");
+ // */abstract test("MixZ_feFoo___wBar___", new MixZ_feFoo___wBar___[C], 3, "mix");
+ // */abstract test("MixZ_feFoo___wBar__f", new MixZ_feFoo___wBar__f[C], 3, "mix");
+ /* *//* */ test("MixZ_feFoo___wBar_I_", new MixZ_feFoo___wBar_I_[C], 3, "mix");
+ /* *//* */ test("MixZ_feFoo___wBar_If", new MixZ_feFoo___wBar_If[C], 3, "mix");
+ // */abstract test("MixZ_feFoo___wBarY__", new MixZ_feFoo___wBarY__[C], 3, "mix");
+ // */abstract test("MixZ_feFoo___wBarY_f", new MixZ_feFoo___wBarY_f[C], 3, "mix");
+ /* *//* */ test("MixZ_feFoo___wBarYI_", new MixZ_feFoo___wBarYI_[C], 3, "mix");
+ /* *//* */ test("MixZ_feFoo___wBarYIf", new MixZ_feFoo___wBarYIf[C], 3, "mix");
+ // */abstract test("MixZ_feFoo__f ", new MixZ_feFoo__f [C], 2, "mix");
+ // */abstract test("MixZ_feFoo__fwBar___", new MixZ_feFoo__fwBar___[C], 3, "mix");
+ // */abstract test("MixZ_feFoo__fwBar__f", new MixZ_feFoo__fwBar__f[C], 3, "mix");
+ /* *//* */ test("MixZ_feFoo__fwBar_I_", new MixZ_feFoo__fwBar_I_[C], 3, "mix");
+ /* *//* */ test("MixZ_feFoo__fwBar_If", new MixZ_feFoo__fwBar_If[C], 3, "mix");
+ // */abstract test("MixZ_feFoo__fwBarY__", new MixZ_feFoo__fwBarY__[C], 3, "mix");
+ // */abstract test("MixZ_feFoo__fwBarY_f", new MixZ_feFoo__fwBarY_f[C], 3, "mix");
+ /* *//* */ test("MixZ_feFoo__fwBarYI_", new MixZ_feFoo__fwBarYI_[C], 3, "mix");
+ /* *//* */ test("MixZ_feFoo__fwBarYIf", new MixZ_feFoo__fwBarYIf[C], 3, "mix");
+ /* *//* */ test("MixZ_feFoo_I_ ", new MixZ_feFoo_I_ [C], 2, "mix");
+ /* *//* */ test("MixZ_feFoo_I_wBar___", new MixZ_feFoo_I_wBar___[C], 3, "mix");
+ /* *//* */ test("MixZ_feFoo_I_wBar__f", new MixZ_feFoo_I_wBar__f[C], 3, "mix");
+ // *//* */ test("MixZ_feFoo_I_wBar_I_", new MixZ_feFoo_I_wBar_I_[C], 3, "mix");
+ // *//* */ test("MixZ_feFoo_I_wBar_If", new MixZ_feFoo_I_wBar_If[C], 3, "mix");
+ /* *//* */ test("MixZ_feFoo_I_wBarY__", new MixZ_feFoo_I_wBarY__[C], 3, "mix");
+ /* *//* */ test("MixZ_feFoo_I_wBarY_f", new MixZ_feFoo_I_wBarY_f[C], 3, "mix");
+ // *//* */ test("MixZ_feFoo_I_wBarYI_", new MixZ_feFoo_I_wBarYI_[C], 3, "mix");
+ // *//* */ test("MixZ_feFoo_I_wBarYIf", new MixZ_feFoo_I_wBarYIf[C], 3, "mix");
+ /* *//* */ test("MixZ_feFoo_If ", new MixZ_feFoo_If [C], 2, "mix");
+ /* *//* */ test("MixZ_feFoo_IfwBar___", new MixZ_feFoo_IfwBar___[C], 3, "mix");
+ /* *//* */ test("MixZ_feFoo_IfwBar__f", new MixZ_feFoo_IfwBar__f[C], 3, "mix");
+ // *//* */ test("MixZ_feFoo_IfwBar_I_", new MixZ_feFoo_IfwBar_I_[C], 3, "mix");
+ // *//* */ test("MixZ_feFoo_IfwBar_If", new MixZ_feFoo_IfwBar_If[C], 3, "mix");
+ /* *//* */ test("MixZ_feFoo_IfwBarY__", new MixZ_feFoo_IfwBarY__[C], 3, "mix");
+ /* *//* */ test("MixZ_feFoo_IfwBarY_f", new MixZ_feFoo_IfwBarY_f[C], 3, "mix");
+ // *//* */ test("MixZ_feFoo_IfwBarYI_", new MixZ_feFoo_IfwBarYI_[C], 3, "mix");
+ // *//* */ test("MixZ_feFoo_IfwBarYIf", new MixZ_feFoo_IfwBarYIf[C], 3, "mix");
+ // */abstract test("MixZ_feFooX__ ", new MixZ_feFooX__ [C], 2, "mix");
+ // */abstract test("MixZ_feFooX__wBar___", new MixZ_feFooX__wBar___[C], 3, "mix");
+ // */abstract test("MixZ_feFooX__wBar__f", new MixZ_feFooX__wBar__f[C], 3, "mix");
+ /* *//* */ test("MixZ_feFooX__wBar_I_", new MixZ_feFooX__wBar_I_[C], 3, "mix");
+ /* *//* */ test("MixZ_feFooX__wBar_If", new MixZ_feFooX__wBar_If[C], 3, "mix");
+ // */abstract test("MixZ_feFooX__wBarY__", new MixZ_feFooX__wBarY__[C], 3, "mix");
+ // */abstract test("MixZ_feFooX__wBarY_f", new MixZ_feFooX__wBarY_f[C], 3, "mix");
+ /* *//* */ test("MixZ_feFooX__wBarYI_", new MixZ_feFooX__wBarYI_[C], 3, "mix");
+ /* *//* */ test("MixZ_feFooX__wBarYIf", new MixZ_feFooX__wBarYIf[C], 3, "mix");
+ // */abstract test("MixZ_feFooX_f ", new MixZ_feFooX_f [C], 2, "mix");
+ // */abstract test("MixZ_feFooX_fwBar___", new MixZ_feFooX_fwBar___[C], 3, "mix");
+ // */abstract test("MixZ_feFooX_fwBar__f", new MixZ_feFooX_fwBar__f[C], 3, "mix");
+ /* *//* */ test("MixZ_feFooX_fwBar_I_", new MixZ_feFooX_fwBar_I_[C], 3, "mix");
+ /* *//* */ test("MixZ_feFooX_fwBar_If", new MixZ_feFooX_fwBar_If[C], 3, "mix");
+ // */abstract test("MixZ_feFooX_fwBarY__", new MixZ_feFooX_fwBarY__[C], 3, "mix");
+ // */abstract test("MixZ_feFooX_fwBarY_f", new MixZ_feFooX_fwBarY_f[C], 3, "mix");
+ /* *//* */ test("MixZ_feFooX_fwBarYI_", new MixZ_feFooX_fwBarYI_[C], 3, "mix");
+ /* *//* */ test("MixZ_feFooX_fwBarYIf", new MixZ_feFooX_fwBarYIf[C], 3, "mix");
+ /* *//* */ test("MixZ_feFooXI_ ", new MixZ_feFooXI_ [C], 2, "mix");
+ /* *//* */ test("MixZ_feFooXI_wBar___", new MixZ_feFooXI_wBar___[C], 3, "mix");
+ /* *//* */ test("MixZ_feFooXI_wBar__f", new MixZ_feFooXI_wBar__f[C], 3, "mix");
+ // *//* */ test("MixZ_feFooXI_wBar_I_", new MixZ_feFooXI_wBar_I_[C], 3, "mix");
+ // *//* */ test("MixZ_feFooXI_wBar_If", new MixZ_feFooXI_wBar_If[C], 3, "mix");
+ /* *//* */ test("MixZ_feFooXI_wBarY__", new MixZ_feFooXI_wBarY__[C], 3, "mix");
+ /* *//* */ test("MixZ_feFooXI_wBarY_f", new MixZ_feFooXI_wBarY_f[C], 3, "mix");
+ // *//* */ test("MixZ_feFooXI_wBarYI_", new MixZ_feFooXI_wBarYI_[C], 3, "mix");
+ // *//* */ test("MixZ_feFooXI_wBarYIf", new MixZ_feFooXI_wBarYIf[C], 3, "mix");
+ /* *//* */ test("MixZ_feFooXIf ", new MixZ_feFooXIf [C], 2, "mix");
+ /* *//* */ test("MixZ_feFooXIfwBar___", new MixZ_feFooXIfwBar___[C], 3, "mix");
+ /* *//* */ test("MixZ_feFooXIfwBar__f", new MixZ_feFooXIfwBar__f[C], 3, "mix");
+ // *//* */ test("MixZ_feFooXIfwBar_I_", new MixZ_feFooXIfwBar_I_[C], 3, "mix");
+ // *//* */ test("MixZ_feFooXIfwBar_If", new MixZ_feFooXIfwBar_If[C], 3, "mix");
+ /* *//* */ test("MixZ_feFooXIfwBarY__", new MixZ_feFooXIfwBarY__[C], 3, "mix");
+ /* *//* */ test("MixZ_feFooXIfwBarY_f", new MixZ_feFooXIfwBarY_f[C], 3, "mix");
+ // *//* */ test("MixZ_feFooXIfwBarYI_", new MixZ_feFooXIfwBarYI_[C], 3, "mix");
+ // *//* */ test("MixZ_feFooXIfwBarYIf", new MixZ_feFooXIfwBarYIf[C], 3, "mix");
+
+ // */abstract test("MixZI_eFoo___ ", new MixZI_eFoo___ [C], 2, null );
+ // */abstract test("MixZI_eFoo___wBar___", new MixZI_eFoo___wBar___[C], 3, null );
+ /* *//* */ test("MixZI_eFoo___wBar__f", new MixZI_eFoo___wBar__f[C], 3, "bar");
+ // */abstract test("MixZI_eFoo___wBar_I_", new MixZI_eFoo___wBar_I_[C], 3, null );
+ // *//* */ test("MixZI_eFoo___wBar_If", new MixZI_eFoo___wBar_If[C], 3, "bar");
+ // */abstract test("MixZI_eFoo___wBarY__", new MixZI_eFoo___wBarY__[C], 3, null );
+ /* *//* */ test("MixZI_eFoo___wBarY_f", new MixZI_eFoo___wBarY_f[C], 3, "bar");
+ // */abstract test("MixZI_eFoo___wBarYI_", new MixZI_eFoo___wBarYI_[C], 3, null );
+ // *//* */ test("MixZI_eFoo___wBarYIf", new MixZI_eFoo___wBarYIf[C], 3, "bar");
+ /* *//* */ test("MixZI_eFoo__f ", new MixZI_eFoo__f [C], 2, "foo");
+ /* *//* */ test("MixZI_eFoo__fwBar___", new MixZI_eFoo__fwBar___[C], 3, "foo");
+ // *//* */ test("MixZI_eFoo__fwBar__f", new MixZI_eFoo__fwBar__f[C], 3, "bar");
+ // *//* */ test("MixZI_eFoo__fwBar_I_", new MixZI_eFoo__fwBar_I_[C], 3, "foo");
+ // *//* */ test("MixZI_eFoo__fwBar_If", new MixZI_eFoo__fwBar_If[C], 3, "bar");
+ /* *//* */ test("MixZI_eFoo__fwBarY__", new MixZI_eFoo__fwBarY__[C], 3, "foo");
+ // *//* */ test("MixZI_eFoo__fwBarY_f", new MixZI_eFoo__fwBarY_f[C], 3, "bar");
+ // *//* */ test("MixZI_eFoo__fwBarYI_", new MixZI_eFoo__fwBarYI_[C], 3, "foo");
+ // *//* */ test("MixZI_eFoo__fwBarYIf", new MixZI_eFoo__fwBarYIf[C], 3, "bar");
+ // */abstract test("MixZI_eFoo_I_ ", new MixZI_eFoo_I_ [C], 2, null );
+ // */abstract test("MixZI_eFoo_I_wBar___", new MixZI_eFoo_I_wBar___[C], 3, null );
+ // *//* */ test("MixZI_eFoo_I_wBar__f", new MixZI_eFoo_I_wBar__f[C], 3, "bar");
+ // */abstract test("MixZI_eFoo_I_wBar_I_", new MixZI_eFoo_I_wBar_I_[C], 3, null );
+ // *//* */ test("MixZI_eFoo_I_wBar_If", new MixZI_eFoo_I_wBar_If[C], 3, "bar");
+ // */abstract test("MixZI_eFoo_I_wBarY__", new MixZI_eFoo_I_wBarY__[C], 3, null );
+ // *//* */ test("MixZI_eFoo_I_wBarY_f", new MixZI_eFoo_I_wBarY_f[C], 3, "bar");
+ // */abstract test("MixZI_eFoo_I_wBarYI_", new MixZI_eFoo_I_wBarYI_[C], 3, null );
+ // *//* */ test("MixZI_eFoo_I_wBarYIf", new MixZI_eFoo_I_wBarYIf[C], 3, "bar");
+ // *//* */ test("MixZI_eFoo_If ", new MixZI_eFoo_If [C], 2, "foo");
+ // *//* */ test("MixZI_eFoo_IfwBar___", new MixZI_eFoo_IfwBar___[C], 3, "foo");
+ // *//* */ test("MixZI_eFoo_IfwBar__f", new MixZI_eFoo_IfwBar__f[C], 3, "bar");
+ // *//* */ test("MixZI_eFoo_IfwBar_I_", new MixZI_eFoo_IfwBar_I_[C], 3, "foo");
+ // *//* */ test("MixZI_eFoo_IfwBar_If", new MixZI_eFoo_IfwBar_If[C], 3, "bar");
+ // *//* */ test("MixZI_eFoo_IfwBarY__", new MixZI_eFoo_IfwBarY__[C], 3, "foo");
+ // *//* */ test("MixZI_eFoo_IfwBarY_f", new MixZI_eFoo_IfwBarY_f[C], 3, "bar");
+ // *//* */ test("MixZI_eFoo_IfwBarYI_", new MixZI_eFoo_IfwBarYI_[C], 3, "foo");
+ // *//* */ test("MixZI_eFoo_IfwBarYIf", new MixZI_eFoo_IfwBarYIf[C], 3, "bar");
+ // */abstract test("MixZI_eFooX__ ", new MixZI_eFooX__ [C], 2, null );
+ // */abstract test("MixZI_eFooX__wBar___", new MixZI_eFooX__wBar___[C], 3, null );
+ /* *//* */ test("MixZI_eFooX__wBar__f", new MixZI_eFooX__wBar__f[C], 3, "bar");
+ // */abstract test("MixZI_eFooX__wBar_I_", new MixZI_eFooX__wBar_I_[C], 3, null );
+ // *//* */ test("MixZI_eFooX__wBar_If", new MixZI_eFooX__wBar_If[C], 3, "bar");
+ // */abstract test("MixZI_eFooX__wBarY__", new MixZI_eFooX__wBarY__[C], 3, null );
+ /* *//* */ test("MixZI_eFooX__wBarY_f", new MixZI_eFooX__wBarY_f[C], 3, "bar");
+ // */abstract test("MixZI_eFooX__wBarYI_", new MixZI_eFooX__wBarYI_[C], 3, null );
+ // *//* */ test("MixZI_eFooX__wBarYIf", new MixZI_eFooX__wBarYIf[C], 3, "bar");
+ /* *//* */ test("MixZI_eFooX_f ", new MixZI_eFooX_f [C], 2, "foo");
+ /* *//* */ test("MixZI_eFooX_fwBar___", new MixZI_eFooX_fwBar___[C], 3, "foo");
+ // *//* */ test("MixZI_eFooX_fwBar__f", new MixZI_eFooX_fwBar__f[C], 3, "bar");
+ // *//* */ test("MixZI_eFooX_fwBar_I_", new MixZI_eFooX_fwBar_I_[C], 3, "foo");
+ // *//* */ test("MixZI_eFooX_fwBar_If", new MixZI_eFooX_fwBar_If[C], 3, "bar");
+ /* *//* */ test("MixZI_eFooX_fwBarY__", new MixZI_eFooX_fwBarY__[C], 3, "foo");
+ // *//* */ test("MixZI_eFooX_fwBarY_f", new MixZI_eFooX_fwBarY_f[C], 3, "bar");
+ // *//* */ test("MixZI_eFooX_fwBarYI_", new MixZI_eFooX_fwBarYI_[C], 3, "foo");
+ // *//* */ test("MixZI_eFooX_fwBarYIf", new MixZI_eFooX_fwBarYIf[C], 3, "bar");
+ // */abstract test("MixZI_eFooXI_ ", new MixZI_eFooXI_ [C], 2, null );
+ // */abstract test("MixZI_eFooXI_wBar___", new MixZI_eFooXI_wBar___[C], 3, null );
+ // *//* */ test("MixZI_eFooXI_wBar__f", new MixZI_eFooXI_wBar__f[C], 3, "bar");
+ // */abstract test("MixZI_eFooXI_wBar_I_", new MixZI_eFooXI_wBar_I_[C], 3, null );
+ // *//* */ test("MixZI_eFooXI_wBar_If", new MixZI_eFooXI_wBar_If[C], 3, "bar");
+ // */abstract test("MixZI_eFooXI_wBarY__", new MixZI_eFooXI_wBarY__[C], 3, null );
+ // *//* */ test("MixZI_eFooXI_wBarY_f", new MixZI_eFooXI_wBarY_f[C], 3, "bar");
+ // */abstract test("MixZI_eFooXI_wBarYI_", new MixZI_eFooXI_wBarYI_[C], 3, null );
+ // *//* */ test("MixZI_eFooXI_wBarYIf", new MixZI_eFooXI_wBarYIf[C], 3, "bar");
+ // *//* */ test("MixZI_eFooXIf ", new MixZI_eFooXIf [C], 2, "foo");
+ // *//* */ test("MixZI_eFooXIfwBar___", new MixZI_eFooXIfwBar___[C], 3, "foo");
+ // *//* */ test("MixZI_eFooXIfwBar__f", new MixZI_eFooXIfwBar__f[C], 3, "bar");
+ // *//* */ test("MixZI_eFooXIfwBar_I_", new MixZI_eFooXIfwBar_I_[C], 3, "foo");
+ // *//* */ test("MixZI_eFooXIfwBar_If", new MixZI_eFooXIfwBar_If[C], 3, "bar");
+ // *//* */ test("MixZI_eFooXIfwBarY__", new MixZI_eFooXIfwBarY__[C], 3, "foo");
+ // *//* */ test("MixZI_eFooXIfwBarY_f", new MixZI_eFooXIfwBarY_f[C], 3, "bar");
+ // *//* */ test("MixZI_eFooXIfwBarYI_", new MixZI_eFooXIfwBarYI_[C], 3, "foo");
+ // *//* */ test("MixZI_eFooXIfwBarYIf", new MixZI_eFooXIfwBarYIf[C], 3, "bar");
+
+ /* *//* */ test("MixZIfeFoo___ ", new MixZIfeFoo___ [C], 2, "mix");
+ /* *//* */ test("MixZIfeFoo___wBar___", new MixZIfeFoo___wBar___[C], 3, "mix");
+ /* *//* */ test("MixZIfeFoo___wBar__f", new MixZIfeFoo___wBar__f[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo___wBar_I_", new MixZIfeFoo___wBar_I_[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo___wBar_If", new MixZIfeFoo___wBar_If[C], 3, "mix");
+ /* *//* */ test("MixZIfeFoo___wBarY__", new MixZIfeFoo___wBarY__[C], 3, "mix");
+ /* *//* */ test("MixZIfeFoo___wBarY_f", new MixZIfeFoo___wBarY_f[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo___wBarYI_", new MixZIfeFoo___wBarYI_[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo___wBarYIf", new MixZIfeFoo___wBarYIf[C], 3, "mix");
+ /* *//* */ test("MixZIfeFoo__f ", new MixZIfeFoo__f [C], 2, "mix");
+ /* *//* */ test("MixZIfeFoo__fwBar___", new MixZIfeFoo__fwBar___[C], 3, "mix");
+ /* *//* */ test("MixZIfeFoo__fwBar__f", new MixZIfeFoo__fwBar__f[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo__fwBar_I_", new MixZIfeFoo__fwBar_I_[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo__fwBar_If", new MixZIfeFoo__fwBar_If[C], 3, "mix");
+ /* *//* */ test("MixZIfeFoo__fwBarY__", new MixZIfeFoo__fwBarY__[C], 3, "mix");
+ /* *//* */ test("MixZIfeFoo__fwBarY_f", new MixZIfeFoo__fwBarY_f[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo__fwBarYI_", new MixZIfeFoo__fwBarYI_[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo__fwBarYIf", new MixZIfeFoo__fwBarYIf[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo_I_ ", new MixZIfeFoo_I_ [C], 2, "mix");
+ // *//* */ test("MixZIfeFoo_I_wBar___", new MixZIfeFoo_I_wBar___[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo_I_wBar__f", new MixZIfeFoo_I_wBar__f[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo_I_wBar_I_", new MixZIfeFoo_I_wBar_I_[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo_I_wBar_If", new MixZIfeFoo_I_wBar_If[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo_I_wBarY__", new MixZIfeFoo_I_wBarY__[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo_I_wBarY_f", new MixZIfeFoo_I_wBarY_f[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo_I_wBarYI_", new MixZIfeFoo_I_wBarYI_[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo_I_wBarYIf", new MixZIfeFoo_I_wBarYIf[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo_If ", new MixZIfeFoo_If [C], 2, "mix");
+ // *//* */ test("MixZIfeFoo_IfwBar___", new MixZIfeFoo_IfwBar___[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo_IfwBar__f", new MixZIfeFoo_IfwBar__f[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo_IfwBar_I_", new MixZIfeFoo_IfwBar_I_[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo_IfwBar_If", new MixZIfeFoo_IfwBar_If[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo_IfwBarY__", new MixZIfeFoo_IfwBarY__[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo_IfwBarY_f", new MixZIfeFoo_IfwBarY_f[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo_IfwBarYI_", new MixZIfeFoo_IfwBarYI_[C], 3, "mix");
+ // *//* */ test("MixZIfeFoo_IfwBarYIf", new MixZIfeFoo_IfwBarYIf[C], 3, "mix");
+ /* *//* */ test("MixZIfeFooX__ ", new MixZIfeFooX__ [C], 2, "mix");
+ /* *//* */ test("MixZIfeFooX__wBar___", new MixZIfeFooX__wBar___[C], 3, "mix");
+ /* *//* */ test("MixZIfeFooX__wBar__f", new MixZIfeFooX__wBar__f[C], 3, "mix");
+ // *//* */ test("MixZIfeFooX__wBar_I_", new MixZIfeFooX__wBar_I_[C], 3, "mix");
+ // *//* */ test("MixZIfeFooX__wBar_If", new MixZIfeFooX__wBar_If[C], 3, "mix");
+ /* *//* */ test("MixZIfeFooX__wBarY__", new MixZIfeFooX__wBarY__[C], 3, "mix");
+ /* *//* */ test("MixZIfeFooX__wBarY_f", new MixZIfeFooX__wBarY_f[C], 3, "mix");
+ // *//* */ test("MixZIfeFooX__wBarYI_", new MixZIfeFooX__wBarYI_[C], 3, "mix");
+ // *//* */ test("MixZIfeFooX__wBarYIf", new MixZIfeFooX__wBarYIf[C], 3, "mix");
+ /* *//* */ test("MixZIfeFooX_f ", new MixZIfeFooX_f [C], 2, "mix");
+ /* *//* */ test("MixZIfeFooX_fwBar___", new MixZIfeFooX_fwBar___[C], 3, "mix");
+ /* *//* */ test("MixZIfeFooX_fwBar__f", new MixZIfeFooX_fwBar__f[C], 3, "mix");
+ // *//* */ test("MixZIfeFooX_fwBar_I_", new MixZIfeFooX_fwBar_I_[C], 3, "mix");
+ // *//* */ test("MixZIfeFooX_fwBar_If", new MixZIfeFooX_fwBar_If[C], 3, "mix");
+ /* *//* */ test("MixZIfeFooX_fwBarY__", new MixZIfeFooX_fwBarY__[C], 3, "mix");
+ /* *//* */ test("MixZIfeFooX_fwBarY_f", new MixZIfeFooX_fwBarY_f[C], 3, "mix");
+ // *//* */ test("MixZIfeFooX_fwBarYI_", new MixZIfeFooX_fwBarYI_[C], 3, "mix");
+ // *//* */ test("MixZIfeFooX_fwBarYIf", new MixZIfeFooX_fwBarYIf[C], 3, "mix");
+ // *//* */ test("MixZIfeFooXI_ ", new MixZIfeFooXI_ [C], 2, "mix");
+ // *//* */ test("MixZIfeFooXI_wBar___", new MixZIfeFooXI_wBar___[C], 3, "mix");
+ // *//* */ test("MixZIfeFooXI_wBar__f", new MixZIfeFooXI_wBar__f[C], 3, "mix");
+ // *//* */ test("MixZIfeFooXI_wBar_I_", new MixZIfeFooXI_wBar_I_[C], 3, "mix");
+ // *//* */ test("MixZIfeFooXI_wBar_If", new MixZIfeFooXI_wBar_If[C], 3, "mix");
+ // *//* */ test("MixZIfeFooXI_wBarY__", new MixZIfeFooXI_wBarY__[C], 3, "mix");
+ // *//* */ test("MixZIfeFooXI_wBarY_f", new MixZIfeFooXI_wBarY_f[C], 3, "mix");
+ // *//* */ test("MixZIfeFooXI_wBarYI_", new MixZIfeFooXI_wBarYI_[C], 3, "mix");
+ // *//* */ test("MixZIfeFooXI_wBarYIf", new MixZIfeFooXI_wBarYIf[C], 3, "mix");
+ // *//* */ test("MixZIfeFooXIf ", new MixZIfeFooXIf [C], 2, "mix");
+ // *//* */ test("MixZIfeFooXIfwBar___", new MixZIfeFooXIfwBar___[C], 3, "mix");
+ // *//* */ test("MixZIfeFooXIfwBar__f", new MixZIfeFooXIfwBar__f[C], 3, "mix");
+ // *//* */ test("MixZIfeFooXIfwBar_I_", new MixZIfeFooXIfwBar_I_[C], 3, "mix");
+ // *//* */ test("MixZIfeFooXIfwBar_If", new MixZIfeFooXIfwBar_If[C], 3, "mix");
+ // *//* */ test("MixZIfeFooXIfwBarY__", new MixZIfeFooXIfwBarY__[C], 3, "mix");
+ // *//* */ test("MixZIfeFooXIfwBarY_f", new MixZIfeFooXIfwBarY_f[C], 3, "mix");
+ // *//* */ test("MixZIfeFooXIfwBarYI_", new MixZIfeFooXIfwBarYI_[C], 3, "mix");
+ // *//* */ test("MixZIfeFooXIfwBarYIf", new MixZIfeFooXIfwBarYIf[C], 3, "mix");
+
+
+
+ // */abstract test("Mix___wFoo___ ", new Mix___wFoo___ , 2, null );
+ // */abstract test("Mix___wFoo___wBar___", new Mix___wFoo___wBar___ , 3, null );
+ // */abstract test("Mix___wFoo___wBar__f", new Mix___wFoo___wBar__f , 3, "bar");
+ // */abstract test("Mix___wFoo___wBar_I_", new Mix___wFoo___wBar_I_ , 3, null );
+ /* *//* */ test("Mix___wFoo___wBar_If", new Mix___wFoo___wBar_If , 3, "bar");
+ // */abstract test("Mix___wFoo___wBarY__", new Mix___wFoo___wBarY__ , 3, null );
+ // */abstract test("Mix___wFoo___wBarY_f", new Mix___wFoo___wBarY_f , 3, "bar");
+ // */abstract test("Mix___wFoo___wBarYI_", new Mix___wFoo___wBarYI_ , 3, null );
+ /* *//* */ test("Mix___wFoo___wBarYIf", new Mix___wFoo___wBarYIf , 3, "bar");
+ // */abstract test("Mix___wFoo__f ", new Mix___wFoo__f , 2, "foo");
+ // */abstract test("Mix___wFoo__fwBar___", new Mix___wFoo__fwBar___ , 3, "foo");
+ // */abstract test("Mix___wFoo__fwBar__f", new Mix___wFoo__fwBar__f , 3, "bar");
+ /* *//* */ test("Mix___wFoo__fwBar_I_", new Mix___wFoo__fwBar_I_ , 3, "foo");
+ // *//* */ test("Mix___wFoo__fwBar_If", new Mix___wFoo__fwBar_If , 3, "bar");
+ // */abstract test("Mix___wFoo__fwBarY__", new Mix___wFoo__fwBarY__ , 3, "foo");
+ // */abstract test("Mix___wFoo__fwBarY_f", new Mix___wFoo__fwBarY_f , 3, "bar");
+ /* *//* */ test("Mix___wFoo__fwBarYI_", new Mix___wFoo__fwBarYI_ , 3, "foo");
+ // *//* */ test("Mix___wFoo__fwBarYIf", new Mix___wFoo__fwBarYIf , 3, "bar");
+ // */abstract test("Mix___wFoo_I_ ", new Mix___wFoo_I_ , 2, null );
+ // */abstract test("Mix___wFoo_I_wBar___", new Mix___wFoo_I_wBar___ , 3, null );
+ /* *//* */ test("Mix___wFoo_I_wBar__f", new Mix___wFoo_I_wBar__f , 3, "bar");
+ // */abstract test("Mix___wFoo_I_wBar_I_", new Mix___wFoo_I_wBar_I_ , 3, null );
+ // *//* */ test("Mix___wFoo_I_wBar_If", new Mix___wFoo_I_wBar_If , 3, "bar");
+ // */abstract test("Mix___wFoo_I_wBarY__", new Mix___wFoo_I_wBarY__ , 3, null );
+ /* *//* */ test("Mix___wFoo_I_wBarY_f", new Mix___wFoo_I_wBarY_f , 3, "bar");
+ // */abstract test("Mix___wFoo_I_wBarYI_", new Mix___wFoo_I_wBarYI_ , 3, null );
+ // *//* */ test("Mix___wFoo_I_wBarYIf", new Mix___wFoo_I_wBarYIf , 3, "bar");
+ /* *//* */ test("Mix___wFoo_If ", new Mix___wFoo_If , 2, "foo");
+ /* *//* */ test("Mix___wFoo_IfwBar___", new Mix___wFoo_IfwBar___ , 3, "foo");
+ // *//* */ test("Mix___wFoo_IfwBar__f", new Mix___wFoo_IfwBar__f , 3, "bar");
+ // *//* */ test("Mix___wFoo_IfwBar_I_", new Mix___wFoo_IfwBar_I_ , 3, "foo");
+ // *//* */ test("Mix___wFoo_IfwBar_If", new Mix___wFoo_IfwBar_If , 3, "bar");
+ /* *//* */ test("Mix___wFoo_IfwBarY__", new Mix___wFoo_IfwBarY__ , 3, "foo");
+ // *//* */ test("Mix___wFoo_IfwBarY_f", new Mix___wFoo_IfwBarY_f , 3, "bar");
+ // *//* */ test("Mix___wFoo_IfwBarYI_", new Mix___wFoo_IfwBarYI_ , 3, "foo");
+ // *//* */ test("Mix___wFoo_IfwBarYIf", new Mix___wFoo_IfwBarYIf , 3, "bar");
+ // */abstract test("Mix___wFooX__ ", new Mix___wFooX__ , 2, null );
+ // */abstract test("Mix___wFooX__wBar___", new Mix___wFooX__wBar___ , 3, null );
+ // */abstract test("Mix___wFooX__wBar__f", new Mix___wFooX__wBar__f , 3, "bar");
+ // */abstract test("Mix___wFooX__wBar_I_", new Mix___wFooX__wBar_I_ , 3, null );
+ /* *//* */ test("Mix___wFooX__wBar_If", new Mix___wFooX__wBar_If , 3, "bar");
+ // */abstract test("Mix___wFooX__wBarY__", new Mix___wFooX__wBarY__ , 3, null );
+ // */abstract test("Mix___wFooX__wBarY_f", new Mix___wFooX__wBarY_f , 3, "bar");
+ // */abstract test("Mix___wFooX__wBarYI_", new Mix___wFooX__wBarYI_ , 3, null );
+ /* *//* */ test("Mix___wFooX__wBarYIf", new Mix___wFooX__wBarYIf , 3, "bar");
+ // */abstract test("Mix___wFooX_f ", new Mix___wFooX_f , 2, "foo");
+ // */abstract test("Mix___wFooX_fwBar___", new Mix___wFooX_fwBar___ , 3, "foo");
+ // */abstract test("Mix___wFooX_fwBar__f", new Mix___wFooX_fwBar__f , 3, "bar");
+ /* *//* */ test("Mix___wFooX_fwBar_I_", new Mix___wFooX_fwBar_I_ , 3, "foo");
+ // *//* */ test("Mix___wFooX_fwBar_If", new Mix___wFooX_fwBar_If , 3, "bar");
+ // */abstract test("Mix___wFooX_fwBarY__", new Mix___wFooX_fwBarY__ , 3, "foo");
+ // */abstract test("Mix___wFooX_fwBarY_f", new Mix___wFooX_fwBarY_f , 3, "bar");
+ /* *//* */ test("Mix___wFooX_fwBarYI_", new Mix___wFooX_fwBarYI_ , 3, "foo");
+ // *//* */ test("Mix___wFooX_fwBarYIf", new Mix___wFooX_fwBarYIf , 3, "bar");
+ // */abstract test("Mix___wFooXI_ ", new Mix___wFooXI_ , 2, null );
+ // */abstract test("Mix___wFooXI_wBar___", new Mix___wFooXI_wBar___ , 3, null );
+ /* *//* */ test("Mix___wFooXI_wBar__f", new Mix___wFooXI_wBar__f , 3, "bar");
+ // */abstract test("Mix___wFooXI_wBar_I_", new Mix___wFooXI_wBar_I_ , 3, null );
+ // *//* */ test("Mix___wFooXI_wBar_If", new Mix___wFooXI_wBar_If , 3, "bar");
+ // */abstract test("Mix___wFooXI_wBarY__", new Mix___wFooXI_wBarY__ , 3, null );
+ /* *//* */ test("Mix___wFooXI_wBarY_f", new Mix___wFooXI_wBarY_f , 3, "bar");
+ // */abstract test("Mix___wFooXI_wBarYI_", new Mix___wFooXI_wBarYI_ , 3, null );
+ // *//* */ test("Mix___wFooXI_wBarYIf", new Mix___wFooXI_wBarYIf , 3, "bar");
+ /* *//* */ test("Mix___wFooXIf ", new Mix___wFooXIf , 2, "foo");
+ /* *//* */ test("Mix___wFooXIfwBar___", new Mix___wFooXIfwBar___ , 3, "foo");
+ // *//* */ test("Mix___wFooXIfwBar__f", new Mix___wFooXIfwBar__f , 3, "bar");
+ // *//* */ test("Mix___wFooXIfwBar_I_", new Mix___wFooXIfwBar_I_ , 3, "foo");
+ // *//* */ test("Mix___wFooXIfwBar_If", new Mix___wFooXIfwBar_If , 3, "bar");
+ /* *//* */ test("Mix___wFooXIfwBarY__", new Mix___wFooXIfwBarY__ , 3, "foo");
+ // *//* */ test("Mix___wFooXIfwBarY_f", new Mix___wFooXIfwBarY_f , 3, "bar");
+ // *//* */ test("Mix___wFooXIfwBarYI_", new Mix___wFooXIfwBarYI_ , 3, "foo");
+ // *//* */ test("Mix___wFooXIfwBarYIf", new Mix___wFooXIfwBarYIf , 3, "bar");
+
+ // */abstract test("Mix__fwFoo___ ", new Mix__fwFoo___ , 2, "mix");
+ // */abstract test("Mix__fwFoo___wBar___", new Mix__fwFoo___wBar___ , 3, "mix");
+ // */abstract test("Mix__fwFoo___wBar__f", new Mix__fwFoo___wBar__f , 3, "mix");
+ /* *//* */ test("Mix__fwFoo___wBar_I_", new Mix__fwFoo___wBar_I_ , 3, "mix");
+ /* *//* */ test("Mix__fwFoo___wBar_If", new Mix__fwFoo___wBar_If , 3, "mix");
+ // */abstract test("Mix__fwFoo___wBarY__", new Mix__fwFoo___wBarY__ , 3, "mix");
+ // */abstract test("Mix__fwFoo___wBarY_f", new Mix__fwFoo___wBarY_f , 3, "mix");
+ /* *//* */ test("Mix__fwFoo___wBarYI_", new Mix__fwFoo___wBarYI_ , 3, "mix");
+ /* *//* */ test("Mix__fwFoo___wBarYIf", new Mix__fwFoo___wBarYIf , 3, "mix");
+ // */abstract test("Mix__fwFoo__f ", new Mix__fwFoo__f , 2, "mix");
+ // */abstract test("Mix__fwFoo__fwBar___", new Mix__fwFoo__fwBar___ , 3, "mix");
+ // */abstract test("Mix__fwFoo__fwBar__f", new Mix__fwFoo__fwBar__f , 3, "mix");
+ /* *//* */ test("Mix__fwFoo__fwBar_I_", new Mix__fwFoo__fwBar_I_ , 3, "mix");
+ /* *//* */ test("Mix__fwFoo__fwBar_If", new Mix__fwFoo__fwBar_If , 3, "mix");
+ // */abstract test("Mix__fwFoo__fwBarY__", new Mix__fwFoo__fwBarY__ , 3, "mix");
+ // */abstract test("Mix__fwFoo__fwBarY_f", new Mix__fwFoo__fwBarY_f , 3, "mix");
+ /* *//* */ test("Mix__fwFoo__fwBarYI_", new Mix__fwFoo__fwBarYI_ , 3, "mix");
+ /* *//* */ test("Mix__fwFoo__fwBarYIf", new Mix__fwFoo__fwBarYIf , 3, "mix");
+ /* *//* */ test("Mix__fwFoo_I_ ", new Mix__fwFoo_I_ , 2, "mix");
+ /* *//* */ test("Mix__fwFoo_I_wBar___", new Mix__fwFoo_I_wBar___ , 3, "mix");
+ /* *//* */ test("Mix__fwFoo_I_wBar__f", new Mix__fwFoo_I_wBar__f , 3, "mix");
+ // *//* */ test("Mix__fwFoo_I_wBar_I_", new Mix__fwFoo_I_wBar_I_ , 3, "mix");
+ // *//* */ test("Mix__fwFoo_I_wBar_If", new Mix__fwFoo_I_wBar_If , 3, "mix");
+ /* *//* */ test("Mix__fwFoo_I_wBarY__", new Mix__fwFoo_I_wBarY__ , 3, "mix");
+ /* *//* */ test("Mix__fwFoo_I_wBarY_f", new Mix__fwFoo_I_wBarY_f , 3, "mix");
+ // *//* */ test("Mix__fwFoo_I_wBarYI_", new Mix__fwFoo_I_wBarYI_ , 3, "mix");
+ // *//* */ test("Mix__fwFoo_I_wBarYIf", new Mix__fwFoo_I_wBarYIf , 3, "mix");
+ /* *//* */ test("Mix__fwFoo_If ", new Mix__fwFoo_If , 2, "mix");
+ /* *//* */ test("Mix__fwFoo_IfwBar___", new Mix__fwFoo_IfwBar___ , 3, "mix");
+ /* *//* */ test("Mix__fwFoo_IfwBar__f", new Mix__fwFoo_IfwBar__f , 3, "mix");
+ // *//* */ test("Mix__fwFoo_IfwBar_I_", new Mix__fwFoo_IfwBar_I_ , 3, "mix");
+ // *//* */ test("Mix__fwFoo_IfwBar_If", new Mix__fwFoo_IfwBar_If , 3, "mix");
+ /* *//* */ test("Mix__fwFoo_IfwBarY__", new Mix__fwFoo_IfwBarY__ , 3, "mix");
+ /* *//* */ test("Mix__fwFoo_IfwBarY_f", new Mix__fwFoo_IfwBarY_f , 3, "mix");
+ // *//* */ test("Mix__fwFoo_IfwBarYI_", new Mix__fwFoo_IfwBarYI_ , 3, "mix");
+ // *//* */ test("Mix__fwFoo_IfwBarYIf", new Mix__fwFoo_IfwBarYIf , 3, "mix");
+ // */abstract test("Mix__fwFooX__ ", new Mix__fwFooX__ , 2, "mix");
+ // */abstract test("Mix__fwFooX__wBar___", new Mix__fwFooX__wBar___ , 3, "mix");
+ // */abstract test("Mix__fwFooX__wBar__f", new Mix__fwFooX__wBar__f , 3, "mix");
+ /* *//* */ test("Mix__fwFooX__wBar_I_", new Mix__fwFooX__wBar_I_ , 3, "mix");
+ /* *//* */ test("Mix__fwFooX__wBar_If", new Mix__fwFooX__wBar_If , 3, "mix");
+ // */abstract test("Mix__fwFooX__wBarY__", new Mix__fwFooX__wBarY__ , 3, "mix");
+ // */abstract test("Mix__fwFooX__wBarY_f", new Mix__fwFooX__wBarY_f , 3, "mix");
+ /* *//* */ test("Mix__fwFooX__wBarYI_", new Mix__fwFooX__wBarYI_ , 3, "mix");
+ /* *//* */ test("Mix__fwFooX__wBarYIf", new Mix__fwFooX__wBarYIf , 3, "mix");
+ // */abstract test("Mix__fwFooX_f ", new Mix__fwFooX_f , 2, "mix");
+ // */abstract test("Mix__fwFooX_fwBar___", new Mix__fwFooX_fwBar___ , 3, "mix");
+ // */abstract test("Mix__fwFooX_fwBar__f", new Mix__fwFooX_fwBar__f , 3, "mix");
+ /* *//* */ test("Mix__fwFooX_fwBar_I_", new Mix__fwFooX_fwBar_I_ , 3, "mix");
+ /* *//* */ test("Mix__fwFooX_fwBar_If", new Mix__fwFooX_fwBar_If , 3, "mix");
+ // */abstract test("Mix__fwFooX_fwBarY__", new Mix__fwFooX_fwBarY__ , 3, "mix");
+ // */abstract test("Mix__fwFooX_fwBarY_f", new Mix__fwFooX_fwBarY_f , 3, "mix");
+ /* *//* */ test("Mix__fwFooX_fwBarYI_", new Mix__fwFooX_fwBarYI_ , 3, "mix");
+ /* *//* */ test("Mix__fwFooX_fwBarYIf", new Mix__fwFooX_fwBarYIf , 3, "mix");
+ /* *//* */ test("Mix__fwFooXI_ ", new Mix__fwFooXI_ , 2, "mix");
+ /* *//* */ test("Mix__fwFooXI_wBar___", new Mix__fwFooXI_wBar___ , 3, "mix");
+ /* *//* */ test("Mix__fwFooXI_wBar__f", new Mix__fwFooXI_wBar__f , 3, "mix");
+ // *//* */ test("Mix__fwFooXI_wBar_I_", new Mix__fwFooXI_wBar_I_ , 3, "mix");
+ // *//* */ test("Mix__fwFooXI_wBar_If", new Mix__fwFooXI_wBar_If , 3, "mix");
+ /* *//* */ test("Mix__fwFooXI_wBarY__", new Mix__fwFooXI_wBarY__ , 3, "mix");
+ /* *//* */ test("Mix__fwFooXI_wBarY_f", new Mix__fwFooXI_wBarY_f , 3, "mix");
+ // *//* */ test("Mix__fwFooXI_wBarYI_", new Mix__fwFooXI_wBarYI_ , 3, "mix");
+ // *//* */ test("Mix__fwFooXI_wBarYIf", new Mix__fwFooXI_wBarYIf , 3, "mix");
+ /* *//* */ test("Mix__fwFooXIf ", new Mix__fwFooXIf , 2, "mix");
+ /* *//* */ test("Mix__fwFooXIfwBar___", new Mix__fwFooXIfwBar___ , 3, "mix");
+ /* *//* */ test("Mix__fwFooXIfwBar__f", new Mix__fwFooXIfwBar__f , 3, "mix");
+ // *//* */ test("Mix__fwFooXIfwBar_I_", new Mix__fwFooXIfwBar_I_ , 3, "mix");
+ // *//* */ test("Mix__fwFooXIfwBar_If", new Mix__fwFooXIfwBar_If , 3, "mix");
+ /* *//* */ test("Mix__fwFooXIfwBarY__", new Mix__fwFooXIfwBarY__ , 3, "mix");
+ /* *//* */ test("Mix__fwFooXIfwBarY_f", new Mix__fwFooXIfwBarY_f , 3, "mix");
+ // *//* */ test("Mix__fwFooXIfwBarYI_", new Mix__fwFooXIfwBarYI_ , 3, "mix");
+ // *//* */ test("Mix__fwFooXIfwBarYIf", new Mix__fwFooXIfwBarYIf , 3, "mix");
+
+ // */abstract test("Mix_I_wFoo___ ", new Mix_I_wFoo___ , 2, null );
+ // */abstract test("Mix_I_wFoo___wBar___", new Mix_I_wFoo___wBar___ , 3, null );
+ /* *//* */ test("Mix_I_wFoo___wBar__f", new Mix_I_wFoo___wBar__f , 3, "bar");
+ // */abstract test("Mix_I_wFoo___wBar_I_", new Mix_I_wFoo___wBar_I_ , 3, null );
+ // *//* */ test("Mix_I_wFoo___wBar_If", new Mix_I_wFoo___wBar_If , 3, "bar");
+ // */abstract test("Mix_I_wFoo___wBarY__", new Mix_I_wFoo___wBarY__ , 3, null );
+ /* *//* */ test("Mix_I_wFoo___wBarY_f", new Mix_I_wFoo___wBarY_f , 3, "bar");
+ // */abstract test("Mix_I_wFoo___wBarYI_", new Mix_I_wFoo___wBarYI_ , 3, null );
+ // *//* */ test("Mix_I_wFoo___wBarYIf", new Mix_I_wFoo___wBarYIf , 3, "bar");
+ /* *//* */ test("Mix_I_wFoo__f ", new Mix_I_wFoo__f , 2, "foo");
+ /* *//* */ test("Mix_I_wFoo__fwBar___", new Mix_I_wFoo__fwBar___ , 3, "foo");
+ // *//* */ test("Mix_I_wFoo__fwBar__f", new Mix_I_wFoo__fwBar__f , 3, "bar");
+ // *//* */ test("Mix_I_wFoo__fwBar_I_", new Mix_I_wFoo__fwBar_I_ , 3, "foo");
+ // *//* */ test("Mix_I_wFoo__fwBar_If", new Mix_I_wFoo__fwBar_If , 3, "bar");
+ /* *//* */ test("Mix_I_wFoo__fwBarY__", new Mix_I_wFoo__fwBarY__ , 3, "foo");
+ // *//* */ test("Mix_I_wFoo__fwBarY_f", new Mix_I_wFoo__fwBarY_f , 3, "bar");
+ // *//* */ test("Mix_I_wFoo__fwBarYI_", new Mix_I_wFoo__fwBarYI_ , 3, "foo");
+ // *//* */ test("Mix_I_wFoo__fwBarYIf", new Mix_I_wFoo__fwBarYIf , 3, "bar");
+ // */abstract test("Mix_I_wFoo_I_ ", new Mix_I_wFoo_I_ , 2, null );
+ // */abstract test("Mix_I_wFoo_I_wBar___", new Mix_I_wFoo_I_wBar___ , 3, null );
+ // *//* */ test("Mix_I_wFoo_I_wBar__f", new Mix_I_wFoo_I_wBar__f , 3, "bar");
+ // */abstract test("Mix_I_wFoo_I_wBar_I_", new Mix_I_wFoo_I_wBar_I_ , 3, null );
+ // *//* */ test("Mix_I_wFoo_I_wBar_If", new Mix_I_wFoo_I_wBar_If , 3, "bar");
+ // */abstract test("Mix_I_wFoo_I_wBarY__", new Mix_I_wFoo_I_wBarY__ , 3, null );
+ // *//* */ test("Mix_I_wFoo_I_wBarY_f", new Mix_I_wFoo_I_wBarY_f , 3, "bar");
+ // */abstract test("Mix_I_wFoo_I_wBarYI_", new Mix_I_wFoo_I_wBarYI_ , 3, null );
+ // *//* */ test("Mix_I_wFoo_I_wBarYIf", new Mix_I_wFoo_I_wBarYIf , 3, "bar");
+ // *//* */ test("Mix_I_wFoo_If ", new Mix_I_wFoo_If , 2, "foo");
+ // *//* */ test("Mix_I_wFoo_IfwBar___", new Mix_I_wFoo_IfwBar___ , 3, "foo");
+ // *//* */ test("Mix_I_wFoo_IfwBar__f", new Mix_I_wFoo_IfwBar__f , 3, "bar");
+ // *//* */ test("Mix_I_wFoo_IfwBar_I_", new Mix_I_wFoo_IfwBar_I_ , 3, "foo");
+ // *//* */ test("Mix_I_wFoo_IfwBar_If", new Mix_I_wFoo_IfwBar_If , 3, "bar");
+ // *//* */ test("Mix_I_wFoo_IfwBarY__", new Mix_I_wFoo_IfwBarY__ , 3, "foo");
+ // *//* */ test("Mix_I_wFoo_IfwBarY_f", new Mix_I_wFoo_IfwBarY_f , 3, "bar");
+ // *//* */ test("Mix_I_wFoo_IfwBarYI_", new Mix_I_wFoo_IfwBarYI_ , 3, "foo");
+ // *//* */ test("Mix_I_wFoo_IfwBarYIf", new Mix_I_wFoo_IfwBarYIf , 3, "bar");
+ // */abstract test("Mix_I_wFooX__ ", new Mix_I_wFooX__ , 2, null );
+ // */abstract test("Mix_I_wFooX__wBar___", new Mix_I_wFooX__wBar___ , 3, null );
+ /* *//* */ test("Mix_I_wFooX__wBar__f", new Mix_I_wFooX__wBar__f , 3, "bar");
+ // */abstract test("Mix_I_wFooX__wBar_I_", new Mix_I_wFooX__wBar_I_ , 3, null );
+ // *//* */ test("Mix_I_wFooX__wBar_If", new Mix_I_wFooX__wBar_If , 3, "bar");
+ // */abstract test("Mix_I_wFooX__wBarY__", new Mix_I_wFooX__wBarY__ , 3, null );
+ /* *//* */ test("Mix_I_wFooX__wBarY_f", new Mix_I_wFooX__wBarY_f , 3, "bar");
+ // */abstract test("Mix_I_wFooX__wBarYI_", new Mix_I_wFooX__wBarYI_ , 3, null );
+ // *//* */ test("Mix_I_wFooX__wBarYIf", new Mix_I_wFooX__wBarYIf , 3, "bar");
+ /* *//* */ test("Mix_I_wFooX_f ", new Mix_I_wFooX_f , 2, "foo");
+ /* *//* */ test("Mix_I_wFooX_fwBar___", new Mix_I_wFooX_fwBar___ , 3, "foo");
+ // *//* */ test("Mix_I_wFooX_fwBar__f", new Mix_I_wFooX_fwBar__f , 3, "bar");
+ // *//* */ test("Mix_I_wFooX_fwBar_I_", new Mix_I_wFooX_fwBar_I_ , 3, "foo");
+ // *//* */ test("Mix_I_wFooX_fwBar_If", new Mix_I_wFooX_fwBar_If , 3, "bar");
+ /* *//* */ test("Mix_I_wFooX_fwBarY__", new Mix_I_wFooX_fwBarY__ , 3, "foo");
+ // *//* */ test("Mix_I_wFooX_fwBarY_f", new Mix_I_wFooX_fwBarY_f , 3, "bar");
+ // *//* */ test("Mix_I_wFooX_fwBarYI_", new Mix_I_wFooX_fwBarYI_ , 3, "foo");
+ // *//* */ test("Mix_I_wFooX_fwBarYIf", new Mix_I_wFooX_fwBarYIf , 3, "bar");
+ // */abstract test("Mix_I_wFooXI_ ", new Mix_I_wFooXI_ , 2, null );
+ // */abstract test("Mix_I_wFooXI_wBar___", new Mix_I_wFooXI_wBar___ , 3, null );
+ // *//* */ test("Mix_I_wFooXI_wBar__f", new Mix_I_wFooXI_wBar__f , 3, "bar");
+ // */abstract test("Mix_I_wFooXI_wBar_I_", new Mix_I_wFooXI_wBar_I_ , 3, null );
+ // *//* */ test("Mix_I_wFooXI_wBar_If", new Mix_I_wFooXI_wBar_If , 3, "bar");
+ // */abstract test("Mix_I_wFooXI_wBarY__", new Mix_I_wFooXI_wBarY__ , 3, null );
+ // *//* */ test("Mix_I_wFooXI_wBarY_f", new Mix_I_wFooXI_wBarY_f , 3, "bar");
+ // */abstract test("Mix_I_wFooXI_wBarYI_", new Mix_I_wFooXI_wBarYI_ , 3, null );
+ // *//* */ test("Mix_I_wFooXI_wBarYIf", new Mix_I_wFooXI_wBarYIf , 3, "bar");
+ // *//* */ test("Mix_I_wFooXIf ", new Mix_I_wFooXIf , 2, "foo");
+ // *//* */ test("Mix_I_wFooXIfwBar___", new Mix_I_wFooXIfwBar___ , 3, "foo");
+ // *//* */ test("Mix_I_wFooXIfwBar__f", new Mix_I_wFooXIfwBar__f , 3, "bar");
+ // *//* */ test("Mix_I_wFooXIfwBar_I_", new Mix_I_wFooXIfwBar_I_ , 3, "foo");
+ // *//* */ test("Mix_I_wFooXIfwBar_If", new Mix_I_wFooXIfwBar_If , 3, "bar");
+ // *//* */ test("Mix_I_wFooXIfwBarY__", new Mix_I_wFooXIfwBarY__ , 3, "foo");
+ // *//* */ test("Mix_I_wFooXIfwBarY_f", new Mix_I_wFooXIfwBarY_f , 3, "bar");
+ // *//* */ test("Mix_I_wFooXIfwBarYI_", new Mix_I_wFooXIfwBarYI_ , 3, "foo");
+ // *//* */ test("Mix_I_wFooXIfwBarYIf", new Mix_I_wFooXIfwBarYIf , 3, "bar");
+
+ /* *//* */ test("Mix_IfwFoo___ ", new Mix_IfwFoo___ , 2, "mix");
+ /* *//* */ test("Mix_IfwFoo___wBar___", new Mix_IfwFoo___wBar___ , 3, "mix");
+ /* *//* */ test("Mix_IfwFoo___wBar__f", new Mix_IfwFoo___wBar__f , 3, "mix");
+ // *//* */ test("Mix_IfwFoo___wBar_I_", new Mix_IfwFoo___wBar_I_ , 3, "mix");
+ // *//* */ test("Mix_IfwFoo___wBar_If", new Mix_IfwFoo___wBar_If , 3, "mix");
+ /* *//* */ test("Mix_IfwFoo___wBarY__", new Mix_IfwFoo___wBarY__ , 3, "mix");
+ /* *//* */ test("Mix_IfwFoo___wBarY_f", new Mix_IfwFoo___wBarY_f , 3, "mix");
+ // *//* */ test("Mix_IfwFoo___wBarYI_", new Mix_IfwFoo___wBarYI_ , 3, "mix");
+ // *//* */ test("Mix_IfwFoo___wBarYIf", new Mix_IfwFoo___wBarYIf , 3, "mix");
+ /* *//* */ test("Mix_IfwFoo__f ", new Mix_IfwFoo__f , 2, "mix");
+ /* *//* */ test("Mix_IfwFoo__fwBar___", new Mix_IfwFoo__fwBar___ , 3, "mix");
+ /* *//* */ test("Mix_IfwFoo__fwBar__f", new Mix_IfwFoo__fwBar__f , 3, "mix");
+ // *//* */ test("Mix_IfwFoo__fwBar_I_", new Mix_IfwFoo__fwBar_I_ , 3, "mix");
+ // *//* */ test("Mix_IfwFoo__fwBar_If", new Mix_IfwFoo__fwBar_If , 3, "mix");
+ /* *//* */ test("Mix_IfwFoo__fwBarY__", new Mix_IfwFoo__fwBarY__ , 3, "mix");
+ /* *//* */ test("Mix_IfwFoo__fwBarY_f", new Mix_IfwFoo__fwBarY_f , 3, "mix");
+ // *//* */ test("Mix_IfwFoo__fwBarYI_", new Mix_IfwFoo__fwBarYI_ , 3, "mix");
+ // *//* */ test("Mix_IfwFoo__fwBarYIf", new Mix_IfwFoo__fwBarYIf , 3, "mix");
+ // *//* */ test("Mix_IfwFoo_I_ ", new Mix_IfwFoo_I_ , 2, "mix");
+ // *//* */ test("Mix_IfwFoo_I_wBar___", new Mix_IfwFoo_I_wBar___ , 3, "mix");
+ // *//* */ test("Mix_IfwFoo_I_wBar__f", new Mix_IfwFoo_I_wBar__f , 3, "mix");
+ // *//* */ test("Mix_IfwFoo_I_wBar_I_", new Mix_IfwFoo_I_wBar_I_ , 3, "mix");
+ // *//* */ test("Mix_IfwFoo_I_wBar_If", new Mix_IfwFoo_I_wBar_If , 3, "mix");
+ // *//* */ test("Mix_IfwFoo_I_wBarY__", new Mix_IfwFoo_I_wBarY__ , 3, "mix");
+ // *//* */ test("Mix_IfwFoo_I_wBarY_f", new Mix_IfwFoo_I_wBarY_f , 3, "mix");
+ // *//* */ test("Mix_IfwFoo_I_wBarYI_", new Mix_IfwFoo_I_wBarYI_ , 3, "mix");
+ // *//* */ test("Mix_IfwFoo_I_wBarYIf", new Mix_IfwFoo_I_wBarYIf , 3, "mix");
+ // *//* */ test("Mix_IfwFoo_If ", new Mix_IfwFoo_If , 2, "mix");
+ // *//* */ test("Mix_IfwFoo_IfwBar___", new Mix_IfwFoo_IfwBar___ , 3, "mix");
+ // *//* */ test("Mix_IfwFoo_IfwBar__f", new Mix_IfwFoo_IfwBar__f , 3, "mix");
+ // *//* */ test("Mix_IfwFoo_IfwBar_I_", new Mix_IfwFoo_IfwBar_I_ , 3, "mix");
+ // *//* */ test("Mix_IfwFoo_IfwBar_If", new Mix_IfwFoo_IfwBar_If , 3, "mix");
+ // *//* */ test("Mix_IfwFoo_IfwBarY__", new Mix_IfwFoo_IfwBarY__ , 3, "mix");
+ // *//* */ test("Mix_IfwFoo_IfwBarY_f", new Mix_IfwFoo_IfwBarY_f , 3, "mix");
+ // *//* */ test("Mix_IfwFoo_IfwBarYI_", new Mix_IfwFoo_IfwBarYI_ , 3, "mix");
+ // *//* */ test("Mix_IfwFoo_IfwBarYIf", new Mix_IfwFoo_IfwBarYIf , 3, "mix");
+ /* *//* */ test("Mix_IfwFooX__ ", new Mix_IfwFooX__ , 2, "mix");
+ /* *//* */ test("Mix_IfwFooX__wBar___", new Mix_IfwFooX__wBar___ , 3, "mix");
+ /* *//* */ test("Mix_IfwFooX__wBar__f", new Mix_IfwFooX__wBar__f , 3, "mix");
+ // *//* */ test("Mix_IfwFooX__wBar_I_", new Mix_IfwFooX__wBar_I_ , 3, "mix");
+ // *//* */ test("Mix_IfwFooX__wBar_If", new Mix_IfwFooX__wBar_If , 3, "mix");
+ /* *//* */ test("Mix_IfwFooX__wBarY__", new Mix_IfwFooX__wBarY__ , 3, "mix");
+ /* *//* */ test("Mix_IfwFooX__wBarY_f", new Mix_IfwFooX__wBarY_f , 3, "mix");
+ // *//* */ test("Mix_IfwFooX__wBarYI_", new Mix_IfwFooX__wBarYI_ , 3, "mix");
+ // *//* */ test("Mix_IfwFooX__wBarYIf", new Mix_IfwFooX__wBarYIf , 3, "mix");
+ /* *//* */ test("Mix_IfwFooX_f ", new Mix_IfwFooX_f , 2, "mix");
+ /* *//* */ test("Mix_IfwFooX_fwBar___", new Mix_IfwFooX_fwBar___ , 3, "mix");
+ /* *//* */ test("Mix_IfwFooX_fwBar__f", new Mix_IfwFooX_fwBar__f , 3, "mix");
+ // *//* */ test("Mix_IfwFooX_fwBar_I_", new Mix_IfwFooX_fwBar_I_ , 3, "mix");
+ // *//* */ test("Mix_IfwFooX_fwBar_If", new Mix_IfwFooX_fwBar_If , 3, "mix");
+ /* *//* */ test("Mix_IfwFooX_fwBarY__", new Mix_IfwFooX_fwBarY__ , 3, "mix");
+ /* *//* */ test("Mix_IfwFooX_fwBarY_f", new Mix_IfwFooX_fwBarY_f , 3, "mix");
+ // *//* */ test("Mix_IfwFooX_fwBarYI_", new Mix_IfwFooX_fwBarYI_ , 3, "mix");
+ // *//* */ test("Mix_IfwFooX_fwBarYIf", new Mix_IfwFooX_fwBarYIf , 3, "mix");
+ // *//* */ test("Mix_IfwFooXI_ ", new Mix_IfwFooXI_ , 2, "mix");
+ // *//* */ test("Mix_IfwFooXI_wBar___", new Mix_IfwFooXI_wBar___ , 3, "mix");
+ // *//* */ test("Mix_IfwFooXI_wBar__f", new Mix_IfwFooXI_wBar__f , 3, "mix");
+ // *//* */ test("Mix_IfwFooXI_wBar_I_", new Mix_IfwFooXI_wBar_I_ , 3, "mix");
+ // *//* */ test("Mix_IfwFooXI_wBar_If", new Mix_IfwFooXI_wBar_If , 3, "mix");
+ // *//* */ test("Mix_IfwFooXI_wBarY__", new Mix_IfwFooXI_wBarY__ , 3, "mix");
+ // *//* */ test("Mix_IfwFooXI_wBarY_f", new Mix_IfwFooXI_wBarY_f , 3, "mix");
+ // *//* */ test("Mix_IfwFooXI_wBarYI_", new Mix_IfwFooXI_wBarYI_ , 3, "mix");
+ // *//* */ test("Mix_IfwFooXI_wBarYIf", new Mix_IfwFooXI_wBarYIf , 3, "mix");
+ // *//* */ test("Mix_IfwFooXIf ", new Mix_IfwFooXIf , 2, "mix");
+ // *//* */ test("Mix_IfwFooXIfwBar___", new Mix_IfwFooXIfwBar___ , 3, "mix");
+ // *//* */ test("Mix_IfwFooXIfwBar__f", new Mix_IfwFooXIfwBar__f , 3, "mix");
+ // *//* */ test("Mix_IfwFooXIfwBar_I_", new Mix_IfwFooXIfwBar_I_ , 3, "mix");
+ // *//* */ test("Mix_IfwFooXIfwBar_If", new Mix_IfwFooXIfwBar_If , 3, "mix");
+ // *//* */ test("Mix_IfwFooXIfwBarY__", new Mix_IfwFooXIfwBarY__ , 3, "mix");
+ // *//* */ test("Mix_IfwFooXIfwBarY_f", new Mix_IfwFooXIfwBarY_f , 3, "mix");
+ // *//* */ test("Mix_IfwFooXIfwBarYI_", new Mix_IfwFooXIfwBarYI_ , 3, "mix");
+ // *//* */ test("Mix_IfwFooXIfwBarYIf", new Mix_IfwFooXIfwBarYIf , 3, "mix");
+
+ // */abstract test("MixZ__wFoo___ ", new MixZ__wFoo___ [C], 2, null );
+ // */abstract test("MixZ__wFoo___wBar___", new MixZ__wFoo___wBar___[C], 3, null );
+ // */abstract test("MixZ__wFoo___wBar__f", new MixZ__wFoo___wBar__f[C], 3, "bar");
+ // */abstract test("MixZ__wFoo___wBar_I_", new MixZ__wFoo___wBar_I_[C], 3, null );
+ /* *//* */ test("MixZ__wFoo___wBar_If", new MixZ__wFoo___wBar_If[C], 3, "bar");
+ // */abstract test("MixZ__wFoo___wBarY__", new MixZ__wFoo___wBarY__[C], 3, null );
+ // */abstract test("MixZ__wFoo___wBarY_f", new MixZ__wFoo___wBarY_f[C], 3, "bar");
+ // */abstract test("MixZ__wFoo___wBarYI_", new MixZ__wFoo___wBarYI_[C], 3, null );
+ /* *//* */ test("MixZ__wFoo___wBarYIf", new MixZ__wFoo___wBarYIf[C], 3, "bar");
+ // */abstract test("MixZ__wFoo__f ", new MixZ__wFoo__f [C], 2, "foo");
+ // */abstract test("MixZ__wFoo__fwBar___", new MixZ__wFoo__fwBar___[C], 3, "foo");
+ // */abstract test("MixZ__wFoo__fwBar__f", new MixZ__wFoo__fwBar__f[C], 3, "bar");
+ /* *//* */ test("MixZ__wFoo__fwBar_I_", new MixZ__wFoo__fwBar_I_[C], 3, "foo");
+ // *//* */ test("MixZ__wFoo__fwBar_If", new MixZ__wFoo__fwBar_If[C], 3, "bar");
+ // */abstract test("MixZ__wFoo__fwBarY__", new MixZ__wFoo__fwBarY__[C], 3, "foo");
+ // */abstract test("MixZ__wFoo__fwBarY_f", new MixZ__wFoo__fwBarY_f[C], 3, "bar");
+ /* *//* */ test("MixZ__wFoo__fwBarYI_", new MixZ__wFoo__fwBarYI_[C], 3, "foo");
+ // *//* */ test("MixZ__wFoo__fwBarYIf", new MixZ__wFoo__fwBarYIf[C], 3, "bar");
+ // */abstract test("MixZ__wFoo_I_ ", new MixZ__wFoo_I_ [C], 2, null );
+ // */abstract test("MixZ__wFoo_I_wBar___", new MixZ__wFoo_I_wBar___[C], 3, null );
+ /* *//* */ test("MixZ__wFoo_I_wBar__f", new MixZ__wFoo_I_wBar__f[C], 3, "bar");
+ // */abstract test("MixZ__wFoo_I_wBar_I_", new MixZ__wFoo_I_wBar_I_[C], 3, null );
+ // *//* */ test("MixZ__wFoo_I_wBar_If", new MixZ__wFoo_I_wBar_If[C], 3, "bar");
+ // */abstract test("MixZ__wFoo_I_wBarY__", new MixZ__wFoo_I_wBarY__[C], 3, null );
+ /* *//* */ test("MixZ__wFoo_I_wBarY_f", new MixZ__wFoo_I_wBarY_f[C], 3, "bar");
+ // */abstract test("MixZ__wFoo_I_wBarYI_", new MixZ__wFoo_I_wBarYI_[C], 3, null );
+ // *//* */ test("MixZ__wFoo_I_wBarYIf", new MixZ__wFoo_I_wBarYIf[C], 3, "bar");
+ /* *//* */ test("MixZ__wFoo_If ", new MixZ__wFoo_If [C], 2, "foo");
+ /* *//* */ test("MixZ__wFoo_IfwBar___", new MixZ__wFoo_IfwBar___[C], 3, "foo");
+ // *//* */ test("MixZ__wFoo_IfwBar__f", new MixZ__wFoo_IfwBar__f[C], 3, "bar");
+ // *//* */ test("MixZ__wFoo_IfwBar_I_", new MixZ__wFoo_IfwBar_I_[C], 3, "foo");
+ // *//* */ test("MixZ__wFoo_IfwBar_If", new MixZ__wFoo_IfwBar_If[C], 3, "bar");
+ /* *//* */ test("MixZ__wFoo_IfwBarY__", new MixZ__wFoo_IfwBarY__[C], 3, "foo");
+ // *//* */ test("MixZ__wFoo_IfwBarY_f", new MixZ__wFoo_IfwBarY_f[C], 3, "bar");
+ // *//* */ test("MixZ__wFoo_IfwBarYI_", new MixZ__wFoo_IfwBarYI_[C], 3, "foo");
+ // *//* */ test("MixZ__wFoo_IfwBarYIf", new MixZ__wFoo_IfwBarYIf[C], 3, "bar");
+ // */abstract test("MixZ__wFooX__ ", new MixZ__wFooX__ [C], 2, null );
+ // */abstract test("MixZ__wFooX__wBar___", new MixZ__wFooX__wBar___[C], 3, null );
+ // */abstract test("MixZ__wFooX__wBar__f", new MixZ__wFooX__wBar__f[C], 3, "bar");
+ // */abstract test("MixZ__wFooX__wBar_I_", new MixZ__wFooX__wBar_I_[C], 3, null );
+ /* *//* */ test("MixZ__wFooX__wBar_If", new MixZ__wFooX__wBar_If[C], 3, "bar");
+ // */abstract test("MixZ__wFooX__wBarY__", new MixZ__wFooX__wBarY__[C], 3, null );
+ // */abstract test("MixZ__wFooX__wBarY_f", new MixZ__wFooX__wBarY_f[C], 3, "bar");
+ // */abstract test("MixZ__wFooX__wBarYI_", new MixZ__wFooX__wBarYI_[C], 3, null );
+ /* *//* */ test("MixZ__wFooX__wBarYIf", new MixZ__wFooX__wBarYIf[C], 3, "bar");
+ // */abstract test("MixZ__wFooX_f ", new MixZ__wFooX_f [C], 2, "foo");
+ // */abstract test("MixZ__wFooX_fwBar___", new MixZ__wFooX_fwBar___[C], 3, "foo");
+ // */abstract test("MixZ__wFooX_fwBar__f", new MixZ__wFooX_fwBar__f[C], 3, "bar");
+ /* *//* */ test("MixZ__wFooX_fwBar_I_", new MixZ__wFooX_fwBar_I_[C], 3, "foo");
+ // *//* */ test("MixZ__wFooX_fwBar_If", new MixZ__wFooX_fwBar_If[C], 3, "bar");
+ // */abstract test("MixZ__wFooX_fwBarY__", new MixZ__wFooX_fwBarY__[C], 3, "foo");
+ // */abstract test("MixZ__wFooX_fwBarY_f", new MixZ__wFooX_fwBarY_f[C], 3, "bar");
+ /* *//* */ test("MixZ__wFooX_fwBarYI_", new MixZ__wFooX_fwBarYI_[C], 3, "foo");
+ // *//* */ test("MixZ__wFooX_fwBarYIf", new MixZ__wFooX_fwBarYIf[C], 3, "bar");
+ // */abstract test("MixZ__wFooXI_ ", new MixZ__wFooXI_ [C], 2, null );
+ // */abstract test("MixZ__wFooXI_wBar___", new MixZ__wFooXI_wBar___[C], 3, null );
+ /* *//* */ test("MixZ__wFooXI_wBar__f", new MixZ__wFooXI_wBar__f[C], 3, "bar");
+ // */abstract test("MixZ__wFooXI_wBar_I_", new MixZ__wFooXI_wBar_I_[C], 3, null );
+ // *//* */ test("MixZ__wFooXI_wBar_If", new MixZ__wFooXI_wBar_If[C], 3, "bar");
+ // */abstract test("MixZ__wFooXI_wBarY__", new MixZ__wFooXI_wBarY__[C], 3, null );
+ /* *//* */ test("MixZ__wFooXI_wBarY_f", new MixZ__wFooXI_wBarY_f[C], 3, "bar");
+ // */abstract test("MixZ__wFooXI_wBarYI_", new MixZ__wFooXI_wBarYI_[C], 3, null );
+ // *//* */ test("MixZ__wFooXI_wBarYIf", new MixZ__wFooXI_wBarYIf[C], 3, "bar");
+ /* *//* */ test("MixZ__wFooXIf ", new MixZ__wFooXIf [C], 2, "foo");
+ /* *//* */ test("MixZ__wFooXIfwBar___", new MixZ__wFooXIfwBar___[C], 3, "foo");
+ // *//* */ test("MixZ__wFooXIfwBar__f", new MixZ__wFooXIfwBar__f[C], 3, "bar");
+ // *//* */ test("MixZ__wFooXIfwBar_I_", new MixZ__wFooXIfwBar_I_[C], 3, "foo");
+ // *//* */ test("MixZ__wFooXIfwBar_If", new MixZ__wFooXIfwBar_If[C], 3, "bar");
+ /* *//* */ test("MixZ__wFooXIfwBarY__", new MixZ__wFooXIfwBarY__[C], 3, "foo");
+ // *//* */ test("MixZ__wFooXIfwBarY_f", new MixZ__wFooXIfwBarY_f[C], 3, "bar");
+ // *//* */ test("MixZ__wFooXIfwBarYI_", new MixZ__wFooXIfwBarYI_[C], 3, "foo");
+ // *//* */ test("MixZ__wFooXIfwBarYIf", new MixZ__wFooXIfwBarYIf[C], 3, "bar");
+
+ // */abstract test("MixZ_fwFoo___ ", new MixZ_fwFoo___ [C], 2, "mix");
+ // */abstract test("MixZ_fwFoo___wBar___", new MixZ_fwFoo___wBar___[C], 3, "mix");
+ // */abstract test("MixZ_fwFoo___wBar__f", new MixZ_fwFoo___wBar__f[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFoo___wBar_I_", new MixZ_fwFoo___wBar_I_[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFoo___wBar_If", new MixZ_fwFoo___wBar_If[C], 3, "mix");
+ // */abstract test("MixZ_fwFoo___wBarY__", new MixZ_fwFoo___wBarY__[C], 3, "mix");
+ // */abstract test("MixZ_fwFoo___wBarY_f", new MixZ_fwFoo___wBarY_f[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFoo___wBarYI_", new MixZ_fwFoo___wBarYI_[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFoo___wBarYIf", new MixZ_fwFoo___wBarYIf[C], 3, "mix");
+ // */abstract test("MixZ_fwFoo__f ", new MixZ_fwFoo__f [C], 2, "mix");
+ // */abstract test("MixZ_fwFoo__fwBar___", new MixZ_fwFoo__fwBar___[C], 3, "mix");
+ // */abstract test("MixZ_fwFoo__fwBar__f", new MixZ_fwFoo__fwBar__f[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFoo__fwBar_I_", new MixZ_fwFoo__fwBar_I_[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFoo__fwBar_If", new MixZ_fwFoo__fwBar_If[C], 3, "mix");
+ // */abstract test("MixZ_fwFoo__fwBarY__", new MixZ_fwFoo__fwBarY__[C], 3, "mix");
+ // */abstract test("MixZ_fwFoo__fwBarY_f", new MixZ_fwFoo__fwBarY_f[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFoo__fwBarYI_", new MixZ_fwFoo__fwBarYI_[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFoo__fwBarYIf", new MixZ_fwFoo__fwBarYIf[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFoo_I_ ", new MixZ_fwFoo_I_ [C], 2, "mix");
+ /* *//* */ test("MixZ_fwFoo_I_wBar___", new MixZ_fwFoo_I_wBar___[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFoo_I_wBar__f", new MixZ_fwFoo_I_wBar__f[C], 3, "mix");
+ // *//* */ test("MixZ_fwFoo_I_wBar_I_", new MixZ_fwFoo_I_wBar_I_[C], 3, "mix");
+ // *//* */ test("MixZ_fwFoo_I_wBar_If", new MixZ_fwFoo_I_wBar_If[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFoo_I_wBarY__", new MixZ_fwFoo_I_wBarY__[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFoo_I_wBarY_f", new MixZ_fwFoo_I_wBarY_f[C], 3, "mix");
+ // *//* */ test("MixZ_fwFoo_I_wBarYI_", new MixZ_fwFoo_I_wBarYI_[C], 3, "mix");
+ // *//* */ test("MixZ_fwFoo_I_wBarYIf", new MixZ_fwFoo_I_wBarYIf[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFoo_If ", new MixZ_fwFoo_If [C], 2, "mix");
+ /* *//* */ test("MixZ_fwFoo_IfwBar___", new MixZ_fwFoo_IfwBar___[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFoo_IfwBar__f", new MixZ_fwFoo_IfwBar__f[C], 3, "mix");
+ // *//* */ test("MixZ_fwFoo_IfwBar_I_", new MixZ_fwFoo_IfwBar_I_[C], 3, "mix");
+ // *//* */ test("MixZ_fwFoo_IfwBar_If", new MixZ_fwFoo_IfwBar_If[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFoo_IfwBarY__", new MixZ_fwFoo_IfwBarY__[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFoo_IfwBarY_f", new MixZ_fwFoo_IfwBarY_f[C], 3, "mix");
+ // *//* */ test("MixZ_fwFoo_IfwBarYI_", new MixZ_fwFoo_IfwBarYI_[C], 3, "mix");
+ // *//* */ test("MixZ_fwFoo_IfwBarYIf", new MixZ_fwFoo_IfwBarYIf[C], 3, "mix");
+ // */abstract test("MixZ_fwFooX__ ", new MixZ_fwFooX__ [C], 2, "mix");
+ // */abstract test("MixZ_fwFooX__wBar___", new MixZ_fwFooX__wBar___[C], 3, "mix");
+ // */abstract test("MixZ_fwFooX__wBar__f", new MixZ_fwFooX__wBar__f[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFooX__wBar_I_", new MixZ_fwFooX__wBar_I_[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFooX__wBar_If", new MixZ_fwFooX__wBar_If[C], 3, "mix");
+ // */abstract test("MixZ_fwFooX__wBarY__", new MixZ_fwFooX__wBarY__[C], 3, "mix");
+ // */abstract test("MixZ_fwFooX__wBarY_f", new MixZ_fwFooX__wBarY_f[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFooX__wBarYI_", new MixZ_fwFooX__wBarYI_[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFooX__wBarYIf", new MixZ_fwFooX__wBarYIf[C], 3, "mix");
+ // */abstract test("MixZ_fwFooX_f ", new MixZ_fwFooX_f [C], 2, "mix");
+ // */abstract test("MixZ_fwFooX_fwBar___", new MixZ_fwFooX_fwBar___[C], 3, "mix");
+ // */abstract test("MixZ_fwFooX_fwBar__f", new MixZ_fwFooX_fwBar__f[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFooX_fwBar_I_", new MixZ_fwFooX_fwBar_I_[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFooX_fwBar_If", new MixZ_fwFooX_fwBar_If[C], 3, "mix");
+ // */abstract test("MixZ_fwFooX_fwBarY__", new MixZ_fwFooX_fwBarY__[C], 3, "mix");
+ // */abstract test("MixZ_fwFooX_fwBarY_f", new MixZ_fwFooX_fwBarY_f[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFooX_fwBarYI_", new MixZ_fwFooX_fwBarYI_[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFooX_fwBarYIf", new MixZ_fwFooX_fwBarYIf[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFooXI_ ", new MixZ_fwFooXI_ [C], 2, "mix");
+ /* *//* */ test("MixZ_fwFooXI_wBar___", new MixZ_fwFooXI_wBar___[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFooXI_wBar__f", new MixZ_fwFooXI_wBar__f[C], 3, "mix");
+ // *//* */ test("MixZ_fwFooXI_wBar_I_", new MixZ_fwFooXI_wBar_I_[C], 3, "mix");
+ // *//* */ test("MixZ_fwFooXI_wBar_If", new MixZ_fwFooXI_wBar_If[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFooXI_wBarY__", new MixZ_fwFooXI_wBarY__[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFooXI_wBarY_f", new MixZ_fwFooXI_wBarY_f[C], 3, "mix");
+ // *//* */ test("MixZ_fwFooXI_wBarYI_", new MixZ_fwFooXI_wBarYI_[C], 3, "mix");
+ // *//* */ test("MixZ_fwFooXI_wBarYIf", new MixZ_fwFooXI_wBarYIf[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFooXIf ", new MixZ_fwFooXIf [C], 2, "mix");
+ /* *//* */ test("MixZ_fwFooXIfwBar___", new MixZ_fwFooXIfwBar___[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFooXIfwBar__f", new MixZ_fwFooXIfwBar__f[C], 3, "mix");
+ // *//* */ test("MixZ_fwFooXIfwBar_I_", new MixZ_fwFooXIfwBar_I_[C], 3, "mix");
+ // *//* */ test("MixZ_fwFooXIfwBar_If", new MixZ_fwFooXIfwBar_If[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFooXIfwBarY__", new MixZ_fwFooXIfwBarY__[C], 3, "mix");
+ /* *//* */ test("MixZ_fwFooXIfwBarY_f", new MixZ_fwFooXIfwBarY_f[C], 3, "mix");
+ // *//* */ test("MixZ_fwFooXIfwBarYI_", new MixZ_fwFooXIfwBarYI_[C], 3, "mix");
+ // *//* */ test("MixZ_fwFooXIfwBarYIf", new MixZ_fwFooXIfwBarYIf[C], 3, "mix");
+
+ // */abstract test("MixZI_wFoo___ ", new MixZI_wFoo___ [C], 2, null );
+ // */abstract test("MixZI_wFoo___wBar___", new MixZI_wFoo___wBar___[C], 3, null );
+ /* *//* */ test("MixZI_wFoo___wBar__f", new MixZI_wFoo___wBar__f[C], 3, "bar");
+ // */abstract test("MixZI_wFoo___wBar_I_", new MixZI_wFoo___wBar_I_[C], 3, null );
+ // *//* */ test("MixZI_wFoo___wBar_If", new MixZI_wFoo___wBar_If[C], 3, "bar");
+ // */abstract test("MixZI_wFoo___wBarY__", new MixZI_wFoo___wBarY__[C], 3, null );
+ /* *//* */ test("MixZI_wFoo___wBarY_f", new MixZI_wFoo___wBarY_f[C], 3, "bar");
+ // */abstract test("MixZI_wFoo___wBarYI_", new MixZI_wFoo___wBarYI_[C], 3, null );
+ // *//* */ test("MixZI_wFoo___wBarYIf", new MixZI_wFoo___wBarYIf[C], 3, "bar");
+ /* *//* */ test("MixZI_wFoo__f ", new MixZI_wFoo__f [C], 2, "foo");
+ /* *//* */ test("MixZI_wFoo__fwBar___", new MixZI_wFoo__fwBar___[C], 3, "foo");
+ // *//* */ test("MixZI_wFoo__fwBar__f", new MixZI_wFoo__fwBar__f[C], 3, "bar");
+ // *//* */ test("MixZI_wFoo__fwBar_I_", new MixZI_wFoo__fwBar_I_[C], 3, "foo");
+ // *//* */ test("MixZI_wFoo__fwBar_If", new MixZI_wFoo__fwBar_If[C], 3, "bar");
+ /* *//* */ test("MixZI_wFoo__fwBarY__", new MixZI_wFoo__fwBarY__[C], 3, "foo");
+ // *//* */ test("MixZI_wFoo__fwBarY_f", new MixZI_wFoo__fwBarY_f[C], 3, "bar");
+ // *//* */ test("MixZI_wFoo__fwBarYI_", new MixZI_wFoo__fwBarYI_[C], 3, "foo");
+ // *//* */ test("MixZI_wFoo__fwBarYIf", new MixZI_wFoo__fwBarYIf[C], 3, "bar");
+ // */abstract test("MixZI_wFoo_I_ ", new MixZI_wFoo_I_ [C], 2, null );
+ // */abstract test("MixZI_wFoo_I_wBar___", new MixZI_wFoo_I_wBar___[C], 3, null );
+ // *//* */ test("MixZI_wFoo_I_wBar__f", new MixZI_wFoo_I_wBar__f[C], 3, "bar");
+ // */abstract test("MixZI_wFoo_I_wBar_I_", new MixZI_wFoo_I_wBar_I_[C], 3, null );
+ // *//* */ test("MixZI_wFoo_I_wBar_If", new MixZI_wFoo_I_wBar_If[C], 3, "bar");
+ // */abstract test("MixZI_wFoo_I_wBarY__", new MixZI_wFoo_I_wBarY__[C], 3, null );
+ // *//* */ test("MixZI_wFoo_I_wBarY_f", new MixZI_wFoo_I_wBarY_f[C], 3, "bar");
+ // */abstract test("MixZI_wFoo_I_wBarYI_", new MixZI_wFoo_I_wBarYI_[C], 3, null );
+ // *//* */ test("MixZI_wFoo_I_wBarYIf", new MixZI_wFoo_I_wBarYIf[C], 3, "bar");
+ // *//* */ test("MixZI_wFoo_If ", new MixZI_wFoo_If [C], 2, "foo");
+ // *//* */ test("MixZI_wFoo_IfwBar___", new MixZI_wFoo_IfwBar___[C], 3, "foo");
+ // *//* */ test("MixZI_wFoo_IfwBar__f", new MixZI_wFoo_IfwBar__f[C], 3, "bar");
+ // *//* */ test("MixZI_wFoo_IfwBar_I_", new MixZI_wFoo_IfwBar_I_[C], 3, "foo");
+ // *//* */ test("MixZI_wFoo_IfwBar_If", new MixZI_wFoo_IfwBar_If[C], 3, "bar");
+ // *//* */ test("MixZI_wFoo_IfwBarY__", new MixZI_wFoo_IfwBarY__[C], 3, "foo");
+ // *//* */ test("MixZI_wFoo_IfwBarY_f", new MixZI_wFoo_IfwBarY_f[C], 3, "bar");
+ // *//* */ test("MixZI_wFoo_IfwBarYI_", new MixZI_wFoo_IfwBarYI_[C], 3, "foo");
+ // *//* */ test("MixZI_wFoo_IfwBarYIf", new MixZI_wFoo_IfwBarYIf[C], 3, "bar");
+ // */abstract test("MixZI_wFooX__ ", new MixZI_wFooX__ [C], 2, null );
+ // */abstract test("MixZI_wFooX__wBar___", new MixZI_wFooX__wBar___[C], 3, null );
+ /* *//* */ test("MixZI_wFooX__wBar__f", new MixZI_wFooX__wBar__f[C], 3, "bar");
+ // */abstract test("MixZI_wFooX__wBar_I_", new MixZI_wFooX__wBar_I_[C], 3, null );
+ // *//* */ test("MixZI_wFooX__wBar_If", new MixZI_wFooX__wBar_If[C], 3, "bar");
+ // */abstract test("MixZI_wFooX__wBarY__", new MixZI_wFooX__wBarY__[C], 3, null );
+ /* *//* */ test("MixZI_wFooX__wBarY_f", new MixZI_wFooX__wBarY_f[C], 3, "bar");
+ // */abstract test("MixZI_wFooX__wBarYI_", new MixZI_wFooX__wBarYI_[C], 3, null );
+ // *//* */ test("MixZI_wFooX__wBarYIf", new MixZI_wFooX__wBarYIf[C], 3, "bar");
+ /* *//* */ test("MixZI_wFooX_f ", new MixZI_wFooX_f [C], 2, "foo");
+ /* *//* */ test("MixZI_wFooX_fwBar___", new MixZI_wFooX_fwBar___[C], 3, "foo");
+ // *//* */ test("MixZI_wFooX_fwBar__f", new MixZI_wFooX_fwBar__f[C], 3, "bar");
+ // *//* */ test("MixZI_wFooX_fwBar_I_", new MixZI_wFooX_fwBar_I_[C], 3, "foo");
+ // *//* */ test("MixZI_wFooX_fwBar_If", new MixZI_wFooX_fwBar_If[C], 3, "bar");
+ /* *//* */ test("MixZI_wFooX_fwBarY__", new MixZI_wFooX_fwBarY__[C], 3, "foo");
+ // *//* */ test("MixZI_wFooX_fwBarY_f", new MixZI_wFooX_fwBarY_f[C], 3, "bar");
+ // *//* */ test("MixZI_wFooX_fwBarYI_", new MixZI_wFooX_fwBarYI_[C], 3, "foo");
+ // *//* */ test("MixZI_wFooX_fwBarYIf", new MixZI_wFooX_fwBarYIf[C], 3, "bar");
+ // */abstract test("MixZI_wFooXI_ ", new MixZI_wFooXI_ [C], 2, null );
+ // */abstract test("MixZI_wFooXI_wBar___", new MixZI_wFooXI_wBar___[C], 3, null );
+ // *//* */ test("MixZI_wFooXI_wBar__f", new MixZI_wFooXI_wBar__f[C], 3, "bar");
+ // */abstract test("MixZI_wFooXI_wBar_I_", new MixZI_wFooXI_wBar_I_[C], 3, null );
+ // *//* */ test("MixZI_wFooXI_wBar_If", new MixZI_wFooXI_wBar_If[C], 3, "bar");
+ // */abstract test("MixZI_wFooXI_wBarY__", new MixZI_wFooXI_wBarY__[C], 3, null );
+ // *//* */ test("MixZI_wFooXI_wBarY_f", new MixZI_wFooXI_wBarY_f[C], 3, "bar");
+ // */abstract test("MixZI_wFooXI_wBarYI_", new MixZI_wFooXI_wBarYI_[C], 3, null );
+ // *//* */ test("MixZI_wFooXI_wBarYIf", new MixZI_wFooXI_wBarYIf[C], 3, "bar");
+ // *//* */ test("MixZI_wFooXIf ", new MixZI_wFooXIf [C], 2, "foo");
+ // *//* */ test("MixZI_wFooXIfwBar___", new MixZI_wFooXIfwBar___[C], 3, "foo");
+ // *//* */ test("MixZI_wFooXIfwBar__f", new MixZI_wFooXIfwBar__f[C], 3, "bar");
+ // *//* */ test("MixZI_wFooXIfwBar_I_", new MixZI_wFooXIfwBar_I_[C], 3, "foo");
+ // *//* */ test("MixZI_wFooXIfwBar_If", new MixZI_wFooXIfwBar_If[C], 3, "bar");
+ // *//* */ test("MixZI_wFooXIfwBarY__", new MixZI_wFooXIfwBarY__[C], 3, "foo");
+ // *//* */ test("MixZI_wFooXIfwBarY_f", new MixZI_wFooXIfwBarY_f[C], 3, "bar");
+ // *//* */ test("MixZI_wFooXIfwBarYI_", new MixZI_wFooXIfwBarYI_[C], 3, "foo");
+ // *//* */ test("MixZI_wFooXIfwBarYIf", new MixZI_wFooXIfwBarYIf[C], 3, "bar");
+
+ /* *//* */ test("MixZIfwFoo___ ", new MixZIfwFoo___ [C], 2, "mix");
+ /* *//* */ test("MixZIfwFoo___wBar___", new MixZIfwFoo___wBar___[C], 3, "mix");
+ /* *//* */ test("MixZIfwFoo___wBar__f", new MixZIfwFoo___wBar__f[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo___wBar_I_", new MixZIfwFoo___wBar_I_[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo___wBar_If", new MixZIfwFoo___wBar_If[C], 3, "mix");
+ /* *//* */ test("MixZIfwFoo___wBarY__", new MixZIfwFoo___wBarY__[C], 3, "mix");
+ /* *//* */ test("MixZIfwFoo___wBarY_f", new MixZIfwFoo___wBarY_f[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo___wBarYI_", new MixZIfwFoo___wBarYI_[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo___wBarYIf", new MixZIfwFoo___wBarYIf[C], 3, "mix");
+ /* *//* */ test("MixZIfwFoo__f ", new MixZIfwFoo__f [C], 2, "mix");
+ /* *//* */ test("MixZIfwFoo__fwBar___", new MixZIfwFoo__fwBar___[C], 3, "mix");
+ /* *//* */ test("MixZIfwFoo__fwBar__f", new MixZIfwFoo__fwBar__f[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo__fwBar_I_", new MixZIfwFoo__fwBar_I_[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo__fwBar_If", new MixZIfwFoo__fwBar_If[C], 3, "mix");
+ /* *//* */ test("MixZIfwFoo__fwBarY__", new MixZIfwFoo__fwBarY__[C], 3, "mix");
+ /* *//* */ test("MixZIfwFoo__fwBarY_f", new MixZIfwFoo__fwBarY_f[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo__fwBarYI_", new MixZIfwFoo__fwBarYI_[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo__fwBarYIf", new MixZIfwFoo__fwBarYIf[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo_I_ ", new MixZIfwFoo_I_ [C], 2, "mix");
+ // *//* */ test("MixZIfwFoo_I_wBar___", new MixZIfwFoo_I_wBar___[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo_I_wBar__f", new MixZIfwFoo_I_wBar__f[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo_I_wBar_I_", new MixZIfwFoo_I_wBar_I_[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo_I_wBar_If", new MixZIfwFoo_I_wBar_If[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo_I_wBarY__", new MixZIfwFoo_I_wBarY__[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo_I_wBarY_f", new MixZIfwFoo_I_wBarY_f[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo_I_wBarYI_", new MixZIfwFoo_I_wBarYI_[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo_I_wBarYIf", new MixZIfwFoo_I_wBarYIf[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo_If ", new MixZIfwFoo_If [C], 2, "mix");
+ // *//* */ test("MixZIfwFoo_IfwBar___", new MixZIfwFoo_IfwBar___[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo_IfwBar__f", new MixZIfwFoo_IfwBar__f[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo_IfwBar_I_", new MixZIfwFoo_IfwBar_I_[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo_IfwBar_If", new MixZIfwFoo_IfwBar_If[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo_IfwBarY__", new MixZIfwFoo_IfwBarY__[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo_IfwBarY_f", new MixZIfwFoo_IfwBarY_f[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo_IfwBarYI_", new MixZIfwFoo_IfwBarYI_[C], 3, "mix");
+ // *//* */ test("MixZIfwFoo_IfwBarYIf", new MixZIfwFoo_IfwBarYIf[C], 3, "mix");
+ /* *//* */ test("MixZIfwFooX__ ", new MixZIfwFooX__ [C], 2, "mix");
+ /* *//* */ test("MixZIfwFooX__wBar___", new MixZIfwFooX__wBar___[C], 3, "mix");
+ /* *//* */ test("MixZIfwFooX__wBar__f", new MixZIfwFooX__wBar__f[C], 3, "mix");
+ // *//* */ test("MixZIfwFooX__wBar_I_", new MixZIfwFooX__wBar_I_[C], 3, "mix");
+ // *//* */ test("MixZIfwFooX__wBar_If", new MixZIfwFooX__wBar_If[C], 3, "mix");
+ /* *//* */ test("MixZIfwFooX__wBarY__", new MixZIfwFooX__wBarY__[C], 3, "mix");
+ /* *//* */ test("MixZIfwFooX__wBarY_f", new MixZIfwFooX__wBarY_f[C], 3, "mix");
+ // *//* */ test("MixZIfwFooX__wBarYI_", new MixZIfwFooX__wBarYI_[C], 3, "mix");
+ // *//* */ test("MixZIfwFooX__wBarYIf", new MixZIfwFooX__wBarYIf[C], 3, "mix");
+ /* *//* */ test("MixZIfwFooX_f ", new MixZIfwFooX_f [C], 2, "mix");
+ /* *//* */ test("MixZIfwFooX_fwBar___", new MixZIfwFooX_fwBar___[C], 3, "mix");
+ /* *//* */ test("MixZIfwFooX_fwBar__f", new MixZIfwFooX_fwBar__f[C], 3, "mix");
+ // *//* */ test("MixZIfwFooX_fwBar_I_", new MixZIfwFooX_fwBar_I_[C], 3, "mix");
+ // *//* */ test("MixZIfwFooX_fwBar_If", new MixZIfwFooX_fwBar_If[C], 3, "mix");
+ /* *//* */ test("MixZIfwFooX_fwBarY__", new MixZIfwFooX_fwBarY__[C], 3, "mix");
+ /* *//* */ test("MixZIfwFooX_fwBarY_f", new MixZIfwFooX_fwBarY_f[C], 3, "mix");
+ // *//* */ test("MixZIfwFooX_fwBarYI_", new MixZIfwFooX_fwBarYI_[C], 3, "mix");
+ // *//* */ test("MixZIfwFooX_fwBarYIf", new MixZIfwFooX_fwBarYIf[C], 3, "mix");
+ // *//* */ test("MixZIfwFooXI_ ", new MixZIfwFooXI_ [C], 2, "mix");
+ // *//* */ test("MixZIfwFooXI_wBar___", new MixZIfwFooXI_wBar___[C], 3, "mix");
+ // *//* */ test("MixZIfwFooXI_wBar__f", new MixZIfwFooXI_wBar__f[C], 3, "mix");
+ // *//* */ test("MixZIfwFooXI_wBar_I_", new MixZIfwFooXI_wBar_I_[C], 3, "mix");
+ // *//* */ test("MixZIfwFooXI_wBar_If", new MixZIfwFooXI_wBar_If[C], 3, "mix");
+ // *//* */ test("MixZIfwFooXI_wBarY__", new MixZIfwFooXI_wBarY__[C], 3, "mix");
+ // *//* */ test("MixZIfwFooXI_wBarY_f", new MixZIfwFooXI_wBarY_f[C], 3, "mix");
+ // *//* */ test("MixZIfwFooXI_wBarYI_", new MixZIfwFooXI_wBarYI_[C], 3, "mix");
+ // *//* */ test("MixZIfwFooXI_wBarYIf", new MixZIfwFooXI_wBarYIf[C], 3, "mix");
+ // *//* */ test("MixZIfwFooXIf ", new MixZIfwFooXIf [C], 2, "mix");
+ // *//* */ test("MixZIfwFooXIfwBar___", new MixZIfwFooXIfwBar___[C], 3, "mix");
+ // *//* */ test("MixZIfwFooXIfwBar__f", new MixZIfwFooXIfwBar__f[C], 3, "mix");
+ // *//* */ test("MixZIfwFooXIfwBar_I_", new MixZIfwFooXIfwBar_I_[C], 3, "mix");
+ // *//* */ test("MixZIfwFooXIfwBar_If", new MixZIfwFooXIfwBar_If[C], 3, "mix");
+ // *//* */ test("MixZIfwFooXIfwBarY__", new MixZIfwFooXIfwBarY__[C], 3, "mix");
+ // *//* */ test("MixZIfwFooXIfwBarY_f", new MixZIfwFooXIfwBarY_f[C], 3, "mix");
+ // *//* */ test("MixZIfwFooXIfwBarYI_", new MixZIfwFooXIfwBarYI_[C], 3, "mix");
+ // *//* */ test("MixZIfwFooXIfwBarYIf", new MixZIfwFooXIfwBarYIf[C], 3, "mix");
+
+
+
+
+
+ /* */test("S_____eFoo___ ", new S_____eFoo___ , 3, "sub");
+ /* */test("S_____eFoo___wBar___", new S_____eFoo___wBar___ , 4, "sub");
+ /* */test("S_____eFoo___wBar__f", new S_____eFoo___wBar__f , 4, "bar");
+ /* */test("S_____eFoo___wBar_I_", new S_____eFoo___wBar_I_ , 4, "sub");
+ /* */test("S_____eFoo___wBar_If", new S_____eFoo___wBar_If , 4, "bar");
+ /* */test("S_____eFoo___wBarY__", new S_____eFoo___wBarY__ , 4, "sub");
+ /* */test("S_____eFoo___wBarY_f", new S_____eFoo___wBarY_f , 4, "bar");
+ /* */test("S_____eFoo___wBarYI_", new S_____eFoo___wBarYI_ , 4, "sub");
+ /* */test("S_____eFoo___wBarYIf", new S_____eFoo___wBarYIf , 4, "bar");
+ /* */test("S_____eFoo__f ", new S_____eFoo__f , 3, "foo");
+ /* */test("S_____eFoo__fwBar___", new S_____eFoo__fwBar___ , 4, "foo");
+ // */test("S_____eFoo__fwBar__f", new S_____eFoo__fwBar__f , 4, "bar");
+ /* */test("S_____eFoo__fwBar_I_", new S_____eFoo__fwBar_I_ , 4, "foo");
+ // */test("S_____eFoo__fwBar_If", new S_____eFoo__fwBar_If , 4, "bar");
+ /* */test("S_____eFoo__fwBarY__", new S_____eFoo__fwBarY__ , 4, "foo");
+ // */test("S_____eFoo__fwBarY_f", new S_____eFoo__fwBarY_f , 4, "bar");
+ /* */test("S_____eFoo__fwBarYI_", new S_____eFoo__fwBarYI_ , 4, "foo");
+ // */test("S_____eFoo__fwBarYIf", new S_____eFoo__fwBarYIf , 4, "bar");
+ /* */test("S_____eFoo_I_ ", new S_____eFoo_I_ , 3, "sub");
+ /* */test("S_____eFoo_I_wBar___", new S_____eFoo_I_wBar___ , 4, "sub");
+ /* */test("S_____eFoo_I_wBar__f", new S_____eFoo_I_wBar__f , 4, "bar");
+ // */test("S_____eFoo_I_wBar_I_", new S_____eFoo_I_wBar_I_ , 4, "sub");
+ // */test("S_____eFoo_I_wBar_If", new S_____eFoo_I_wBar_If , 4, "bar");
+ /* */test("S_____eFoo_I_wBarY__", new S_____eFoo_I_wBarY__ , 4, "sub");
+ /* */test("S_____eFoo_I_wBarY_f", new S_____eFoo_I_wBarY_f , 4, "bar");
+ // */test("S_____eFoo_I_wBarYI_", new S_____eFoo_I_wBarYI_ , 4, "sub");
+ // */test("S_____eFoo_I_wBarYIf", new S_____eFoo_I_wBarYIf , 4, "bar");
+ /* */test("S_____eFoo_If ", new S_____eFoo_If , 3, "foo");
+ /* */test("S_____eFoo_IfwBar___", new S_____eFoo_IfwBar___ , 4, "foo");
+ // */test("S_____eFoo_IfwBar__f", new S_____eFoo_IfwBar__f , 4, "bar");
+ // */test("S_____eFoo_IfwBar_I_", new S_____eFoo_IfwBar_I_ , 4, "foo");
+ // */test("S_____eFoo_IfwBar_If", new S_____eFoo_IfwBar_If , 4, "bar");
+ /* */test("S_____eFoo_IfwBarY__", new S_____eFoo_IfwBarY__ , 4, "foo");
+ // */test("S_____eFoo_IfwBarY_f", new S_____eFoo_IfwBarY_f , 4, "bar");
+ // */test("S_____eFoo_IfwBarYI_", new S_____eFoo_IfwBarYI_ , 4, "foo");
+ // */test("S_____eFoo_IfwBarYIf", new S_____eFoo_IfwBarYIf , 4, "bar");
+ /* */test("S_____eFooX__ ", new S_____eFooX__ , 3, "sub");
+ /* */test("S_____eFooX__wBar___", new S_____eFooX__wBar___ , 4, "sub");
+ /* */test("S_____eFooX__wBar__f", new S_____eFooX__wBar__f , 4, "bar");
+ /* */test("S_____eFooX__wBar_I_", new S_____eFooX__wBar_I_ , 4, "sub");
+ /* */test("S_____eFooX__wBar_If", new S_____eFooX__wBar_If , 4, "bar");
+ /* */test("S_____eFooX__wBarY__", new S_____eFooX__wBarY__ , 4, "sub");
+ /* */test("S_____eFooX__wBarY_f", new S_____eFooX__wBarY_f , 4, "bar");
+ /* */test("S_____eFooX__wBarYI_", new S_____eFooX__wBarYI_ , 4, "sub");
+ /* */test("S_____eFooX__wBarYIf", new S_____eFooX__wBarYIf , 4, "bar");
+ /* */test("S_____eFooX_f ", new S_____eFooX_f , 3, "foo");
+ /* */test("S_____eFooX_fwBar___", new S_____eFooX_fwBar___ , 4, "foo");
+ // */test("S_____eFooX_fwBar__f", new S_____eFooX_fwBar__f , 4, "bar");
+ /* */test("S_____eFooX_fwBar_I_", new S_____eFooX_fwBar_I_ , 4, "foo");
+ // */test("S_____eFooX_fwBar_If", new S_____eFooX_fwBar_If , 4, "bar");
+ /* */test("S_____eFooX_fwBarY__", new S_____eFooX_fwBarY__ , 4, "foo");
+ // */test("S_____eFooX_fwBarY_f", new S_____eFooX_fwBarY_f , 4, "bar");
+ /* */test("S_____eFooX_fwBarYI_", new S_____eFooX_fwBarYI_ , 4, "foo");
+ // */test("S_____eFooX_fwBarYIf", new S_____eFooX_fwBarYIf , 4, "bar");
+ /* */test("S_____eFooXI_ ", new S_____eFooXI_ , 3, "sub");
+ /* */test("S_____eFooXI_wBar___", new S_____eFooXI_wBar___ , 4, "sub");
+ /* */test("S_____eFooXI_wBar__f", new S_____eFooXI_wBar__f , 4, "bar");
+ // */test("S_____eFooXI_wBar_I_", new S_____eFooXI_wBar_I_ , 4, "sub");
+ // */test("S_____eFooXI_wBar_If", new S_____eFooXI_wBar_If , 4, "bar");
+ /* */test("S_____eFooXI_wBarY__", new S_____eFooXI_wBarY__ , 4, "sub");
+ /* */test("S_____eFooXI_wBarY_f", new S_____eFooXI_wBarY_f , 4, "bar");
+ // */test("S_____eFooXI_wBarYI_", new S_____eFooXI_wBarYI_ , 4, "sub");
+ // */test("S_____eFooXI_wBarYIf", new S_____eFooXI_wBarYIf , 4, "bar");
+ /* */test("S_____eFooXIf ", new S_____eFooXIf , 3, "foo");
+ /* */test("S_____eFooXIfwBar___", new S_____eFooXIfwBar___ , 4, "foo");
+ // */test("S_____eFooXIfwBar__f", new S_____eFooXIfwBar__f , 4, "bar");
+ // */test("S_____eFooXIfwBar_I_", new S_____eFooXIfwBar_I_ , 4, "foo");
+ // */test("S_____eFooXIfwBar_If", new S_____eFooXIfwBar_If , 4, "bar");
+ /* */test("S_____eFooXIfwBarY__", new S_____eFooXIfwBarY__ , 4, "foo");
+ // */test("S_____eFooXIfwBarY_f", new S_____eFooXIfwBarY_f , 4, "bar");
+ // */test("S_____eFooXIfwBarYI_", new S_____eFooXIfwBarYI_ , 4, "foo");
+ // */test("S_____eFooXIfwBarYIf", new S_____eFooXIfwBarYIf , 4, "bar");
+
+ /* */test("S____feFoo___ ", new S____feFoo___ , 3, "mix");
+ /* */test("S____feFoo___wBar___", new S____feFoo___wBar___ , 4, "mix");
+ /* */test("S____feFoo___wBar__f", new S____feFoo___wBar__f , 4, "mix");
+ /* */test("S____feFoo___wBar_I_", new S____feFoo___wBar_I_ , 4, "mix");
+ /* */test("S____feFoo___wBar_If", new S____feFoo___wBar_If , 4, "mix");
+ /* */test("S____feFoo___wBarY__", new S____feFoo___wBarY__ , 4, "mix");
+ /* */test("S____feFoo___wBarY_f", new S____feFoo___wBarY_f , 4, "mix");
+ /* */test("S____feFoo___wBarYI_", new S____feFoo___wBarYI_ , 4, "mix");
+ /* */test("S____feFoo___wBarYIf", new S____feFoo___wBarYIf , 4, "mix");
+ /* */test("S____feFoo__f ", new S____feFoo__f , 3, "mix");
+ /* */test("S____feFoo__fwBar___", new S____feFoo__fwBar___ , 4, "mix");
+ /* */test("S____feFoo__fwBar__f", new S____feFoo__fwBar__f , 4, "mix");
+ /* */test("S____feFoo__fwBar_I_", new S____feFoo__fwBar_I_ , 4, "mix");
+ /* */test("S____feFoo__fwBar_If", new S____feFoo__fwBar_If , 4, "mix");
+ /* */test("S____feFoo__fwBarY__", new S____feFoo__fwBarY__ , 4, "mix");
+ /* */test("S____feFoo__fwBarY_f", new S____feFoo__fwBarY_f , 4, "mix");
+ /* */test("S____feFoo__fwBarYI_", new S____feFoo__fwBarYI_ , 4, "mix");
+ /* */test("S____feFoo__fwBarYIf", new S____feFoo__fwBarYIf , 4, "mix");
+ /* */test("S____feFoo_I_ ", new S____feFoo_I_ , 3, "mix");
+ /* */test("S____feFoo_I_wBar___", new S____feFoo_I_wBar___ , 4, "mix");
+ /* */test("S____feFoo_I_wBar__f", new S____feFoo_I_wBar__f , 4, "mix");
+ // */test("S____feFoo_I_wBar_I_", new S____feFoo_I_wBar_I_ , 4, "mix");
+ // */test("S____feFoo_I_wBar_If", new S____feFoo_I_wBar_If , 4, "mix");
+ /* */test("S____feFoo_I_wBarY__", new S____feFoo_I_wBarY__ , 4, "mix");
+ /* */test("S____feFoo_I_wBarY_f", new S____feFoo_I_wBarY_f , 4, "mix");
+ // */test("S____feFoo_I_wBarYI_", new S____feFoo_I_wBarYI_ , 4, "mix");
+ // */test("S____feFoo_I_wBarYIf", new S____feFoo_I_wBarYIf , 4, "mix");
+ /* */test("S____feFoo_If ", new S____feFoo_If , 3, "mix");
+ /* */test("S____feFoo_IfwBar___", new S____feFoo_IfwBar___ , 4, "mix");
+ /* */test("S____feFoo_IfwBar__f", new S____feFoo_IfwBar__f , 4, "mix");
+ // */test("S____feFoo_IfwBar_I_", new S____feFoo_IfwBar_I_ , 4, "mix");
+ // */test("S____feFoo_IfwBar_If", new S____feFoo_IfwBar_If , 4, "mix");
+ /* */test("S____feFoo_IfwBarY__", new S____feFoo_IfwBarY__ , 4, "mix");
+ /* */test("S____feFoo_IfwBarY_f", new S____feFoo_IfwBarY_f , 4, "mix");
+ // */test("S____feFoo_IfwBarYI_", new S____feFoo_IfwBarYI_ , 4, "mix");
+ // */test("S____feFoo_IfwBarYIf", new S____feFoo_IfwBarYIf , 4, "mix");
+ /* */test("S____feFooX__ ", new S____feFooX__ , 3, "mix");
+ /* */test("S____feFooX__wBar___", new S____feFooX__wBar___ , 4, "mix");
+ /* */test("S____feFooX__wBar__f", new S____feFooX__wBar__f , 4, "mix");
+ /* */test("S____feFooX__wBar_I_", new S____feFooX__wBar_I_ , 4, "mix");
+ /* */test("S____feFooX__wBar_If", new S____feFooX__wBar_If , 4, "mix");
+ /* */test("S____feFooX__wBarY__", new S____feFooX__wBarY__ , 4, "mix");
+ /* */test("S____feFooX__wBarY_f", new S____feFooX__wBarY_f , 4, "mix");
+ /* */test("S____feFooX__wBarYI_", new S____feFooX__wBarYI_ , 4, "mix");
+ /* */test("S____feFooX__wBarYIf", new S____feFooX__wBarYIf , 4, "mix");
+ /* */test("S____feFooX_f ", new S____feFooX_f , 3, "mix");
+ /* */test("S____feFooX_fwBar___", new S____feFooX_fwBar___ , 4, "mix");
+ /* */test("S____feFooX_fwBar__f", new S____feFooX_fwBar__f , 4, "mix");
+ /* */test("S____feFooX_fwBar_I_", new S____feFooX_fwBar_I_ , 4, "mix");
+ /* */test("S____feFooX_fwBar_If", new S____feFooX_fwBar_If , 4, "mix");
+ /* */test("S____feFooX_fwBarY__", new S____feFooX_fwBarY__ , 4, "mix");
+ /* */test("S____feFooX_fwBarY_f", new S____feFooX_fwBarY_f , 4, "mix");
+ /* */test("S____feFooX_fwBarYI_", new S____feFooX_fwBarYI_ , 4, "mix");
+ /* */test("S____feFooX_fwBarYIf", new S____feFooX_fwBarYIf , 4, "mix");
+ /* */test("S____feFooXI_ ", new S____feFooXI_ , 3, "mix");
+ /* */test("S____feFooXI_wBar___", new S____feFooXI_wBar___ , 4, "mix");
+ /* */test("S____feFooXI_wBar__f", new S____feFooXI_wBar__f , 4, "mix");
+ // */test("S____feFooXI_wBar_I_", new S____feFooXI_wBar_I_ , 4, "mix");
+ // */test("S____feFooXI_wBar_If", new S____feFooXI_wBar_If , 4, "mix");
+ /* */test("S____feFooXI_wBarY__", new S____feFooXI_wBarY__ , 4, "mix");
+ /* */test("S____feFooXI_wBarY_f", new S____feFooXI_wBarY_f , 4, "mix");
+ // */test("S____feFooXI_wBarYI_", new S____feFooXI_wBarYI_ , 4, "mix");
+ // */test("S____feFooXI_wBarYIf", new S____feFooXI_wBarYIf , 4, "mix");
+ /* */test("S____feFooXIf ", new S____feFooXIf , 3, "mix");
+ /* */test("S____feFooXIfwBar___", new S____feFooXIfwBar___ , 4, "mix");
+ /* */test("S____feFooXIfwBar__f", new S____feFooXIfwBar__f , 4, "mix");
+ // */test("S____feFooXIfwBar_I_", new S____feFooXIfwBar_I_ , 4, "mix");
+ // */test("S____feFooXIfwBar_If", new S____feFooXIfwBar_If , 4, "mix");
+ /* */test("S____feFooXIfwBarY__", new S____feFooXIfwBarY__ , 4, "mix");
+ /* */test("S____feFooXIfwBarY_f", new S____feFooXIfwBarY_f , 4, "mix");
+ // */test("S____feFooXIfwBarYI_", new S____feFooXIfwBarYI_ , 4, "mix");
+ // */test("S____feFooXIfwBarYIf", new S____feFooXIfwBarYIf , 4, "mix");
+
+ /* */test("S___I_eFoo___ ", new S___I_eFoo___ , 3, "sub");
+ /* */test("S___I_eFoo___wBar___", new S___I_eFoo___wBar___ , 4, "sub");
+ /* */test("S___I_eFoo___wBar__f", new S___I_eFoo___wBar__f , 4, "bar");
+ // */test("S___I_eFoo___wBar_I_", new S___I_eFoo___wBar_I_ , 4, "sub");
+ // */test("S___I_eFoo___wBar_If", new S___I_eFoo___wBar_If , 4, "bar");
+ /* */test("S___I_eFoo___wBarY__", new S___I_eFoo___wBarY__ , 4, "sub");
+ /* */test("S___I_eFoo___wBarY_f", new S___I_eFoo___wBarY_f , 4, "bar");
+ // */test("S___I_eFoo___wBarYI_", new S___I_eFoo___wBarYI_ , 4, "sub");
+ // */test("S___I_eFoo___wBarYIf", new S___I_eFoo___wBarYIf , 4, "bar");
+ /* */test("S___I_eFoo__f ", new S___I_eFoo__f , 3, "foo");
+ /* */test("S___I_eFoo__fwBar___", new S___I_eFoo__fwBar___ , 4, "foo");
+ // */test("S___I_eFoo__fwBar__f", new S___I_eFoo__fwBar__f , 4, "bar");
+ // */test("S___I_eFoo__fwBar_I_", new S___I_eFoo__fwBar_I_ , 4, "foo");
+ // */test("S___I_eFoo__fwBar_If", new S___I_eFoo__fwBar_If , 4, "bar");
+ /* */test("S___I_eFoo__fwBarY__", new S___I_eFoo__fwBarY__ , 4, "foo");
+ // */test("S___I_eFoo__fwBarY_f", new S___I_eFoo__fwBarY_f , 4, "bar");
+ // */test("S___I_eFoo__fwBarYI_", new S___I_eFoo__fwBarYI_ , 4, "foo");
+ // */test("S___I_eFoo__fwBarYIf", new S___I_eFoo__fwBarYIf , 4, "bar");
+ // */test("S___I_eFoo_I_ ", new S___I_eFoo_I_ , 3, "sub");
+ // */test("S___I_eFoo_I_wBar___", new S___I_eFoo_I_wBar___ , 4, "sub");
+ // */test("S___I_eFoo_I_wBar__f", new S___I_eFoo_I_wBar__f , 4, "bar");
+ // */test("S___I_eFoo_I_wBar_I_", new S___I_eFoo_I_wBar_I_ , 4, "sub");
+ // */test("S___I_eFoo_I_wBar_If", new S___I_eFoo_I_wBar_If , 4, "bar");
+ // */test("S___I_eFoo_I_wBarY__", new S___I_eFoo_I_wBarY__ , 4, "sub");
+ // */test("S___I_eFoo_I_wBarY_f", new S___I_eFoo_I_wBarY_f , 4, "bar");
+ // */test("S___I_eFoo_I_wBarYI_", new S___I_eFoo_I_wBarYI_ , 4, "sub");
+ // */test("S___I_eFoo_I_wBarYIf", new S___I_eFoo_I_wBarYIf , 4, "bar");
+ // */test("S___I_eFoo_If ", new S___I_eFoo_If , 3, "foo");
+ // */test("S___I_eFoo_IfwBar___", new S___I_eFoo_IfwBar___ , 4, "foo");
+ // */test("S___I_eFoo_IfwBar__f", new S___I_eFoo_IfwBar__f , 4, "bar");
+ // */test("S___I_eFoo_IfwBar_I_", new S___I_eFoo_IfwBar_I_ , 4, "foo");
+ // */test("S___I_eFoo_IfwBar_If", new S___I_eFoo_IfwBar_If , 4, "bar");
+ // */test("S___I_eFoo_IfwBarY__", new S___I_eFoo_IfwBarY__ , 4, "foo");
+ // */test("S___I_eFoo_IfwBarY_f", new S___I_eFoo_IfwBarY_f , 4, "bar");
+ // */test("S___I_eFoo_IfwBarYI_", new S___I_eFoo_IfwBarYI_ , 4, "foo");
+ // */test("S___I_eFoo_IfwBarYIf", new S___I_eFoo_IfwBarYIf , 4, "bar");
+ /* */test("S___I_eFooX__ ", new S___I_eFooX__ , 3, "sub");
+ /* */test("S___I_eFooX__wBar___", new S___I_eFooX__wBar___ , 4, "sub");
+ /* */test("S___I_eFooX__wBar__f", new S___I_eFooX__wBar__f , 4, "bar");
+ // */test("S___I_eFooX__wBar_I_", new S___I_eFooX__wBar_I_ , 4, "sub");
+ // */test("S___I_eFooX__wBar_If", new S___I_eFooX__wBar_If , 4, "bar");
+ /* */test("S___I_eFooX__wBarY__", new S___I_eFooX__wBarY__ , 4, "sub");
+ /* */test("S___I_eFooX__wBarY_f", new S___I_eFooX__wBarY_f , 4, "bar");
+ // */test("S___I_eFooX__wBarYI_", new S___I_eFooX__wBarYI_ , 4, "sub");
+ // */test("S___I_eFooX__wBarYIf", new S___I_eFooX__wBarYIf , 4, "bar");
+ /* */test("S___I_eFooX_f ", new S___I_eFooX_f , 3, "foo");
+ /* */test("S___I_eFooX_fwBar___", new S___I_eFooX_fwBar___ , 4, "foo");
+ // */test("S___I_eFooX_fwBar__f", new S___I_eFooX_fwBar__f , 4, "bar");
+ // */test("S___I_eFooX_fwBar_I_", new S___I_eFooX_fwBar_I_ , 4, "foo");
+ // */test("S___I_eFooX_fwBar_If", new S___I_eFooX_fwBar_If , 4, "bar");
+ /* */test("S___I_eFooX_fwBarY__", new S___I_eFooX_fwBarY__ , 4, "foo");
+ // */test("S___I_eFooX_fwBarY_f", new S___I_eFooX_fwBarY_f , 4, "bar");
+ // */test("S___I_eFooX_fwBarYI_", new S___I_eFooX_fwBarYI_ , 4, "foo");
+ // */test("S___I_eFooX_fwBarYIf", new S___I_eFooX_fwBarYIf , 4, "bar");
+ // */test("S___I_eFooXI_ ", new S___I_eFooXI_ , 3, "sub");
+ // */test("S___I_eFooXI_wBar___", new S___I_eFooXI_wBar___ , 4, "sub");
+ // */test("S___I_eFooXI_wBar__f", new S___I_eFooXI_wBar__f , 4, "bar");
+ // */test("S___I_eFooXI_wBar_I_", new S___I_eFooXI_wBar_I_ , 4, "sub");
+ // */test("S___I_eFooXI_wBar_If", new S___I_eFooXI_wBar_If , 4, "bar");
+ // */test("S___I_eFooXI_wBarY__", new S___I_eFooXI_wBarY__ , 4, "sub");
+ // */test("S___I_eFooXI_wBarY_f", new S___I_eFooXI_wBarY_f , 4, "bar");
+ // */test("S___I_eFooXI_wBarYI_", new S___I_eFooXI_wBarYI_ , 4, "sub");
+ // */test("S___I_eFooXI_wBarYIf", new S___I_eFooXI_wBarYIf , 4, "bar");
+ // */test("S___I_eFooXIf ", new S___I_eFooXIf , 3, "foo");
+ // */test("S___I_eFooXIfwBar___", new S___I_eFooXIfwBar___ , 4, "foo");
+ // */test("S___I_eFooXIfwBar__f", new S___I_eFooXIfwBar__f , 4, "bar");
+ // */test("S___I_eFooXIfwBar_I_", new S___I_eFooXIfwBar_I_ , 4, "foo");
+ // */test("S___I_eFooXIfwBar_If", new S___I_eFooXIfwBar_If , 4, "bar");
+ // */test("S___I_eFooXIfwBarY__", new S___I_eFooXIfwBarY__ , 4, "foo");
+ // */test("S___I_eFooXIfwBarY_f", new S___I_eFooXIfwBarY_f , 4, "bar");
+ // */test("S___I_eFooXIfwBarYI_", new S___I_eFooXIfwBarYI_ , 4, "foo");
+ // */test("S___I_eFooXIfwBarYIf", new S___I_eFooXIfwBarYIf , 4, "bar");
+
+ /* */test("S___IfeFoo___ ", new S___IfeFoo___ , 3, "mix");
+ /* */test("S___IfeFoo___wBar___", new S___IfeFoo___wBar___ , 4, "mix");
+ /* */test("S___IfeFoo___wBar__f", new S___IfeFoo___wBar__f , 4, "mix");
+ // */test("S___IfeFoo___wBar_I_", new S___IfeFoo___wBar_I_ , 4, "mix");
+ // */test("S___IfeFoo___wBar_If", new S___IfeFoo___wBar_If , 4, "mix");
+ /* */test("S___IfeFoo___wBarY__", new S___IfeFoo___wBarY__ , 4, "mix");
+ /* */test("S___IfeFoo___wBarY_f", new S___IfeFoo___wBarY_f , 4, "mix");
+ // */test("S___IfeFoo___wBarYI_", new S___IfeFoo___wBarYI_ , 4, "mix");
+ // */test("S___IfeFoo___wBarYIf", new S___IfeFoo___wBarYIf , 4, "mix");
+ /* */test("S___IfeFoo__f ", new S___IfeFoo__f , 3, "mix");
+ /* */test("S___IfeFoo__fwBar___", new S___IfeFoo__fwBar___ , 4, "mix");
+ /* */test("S___IfeFoo__fwBar__f", new S___IfeFoo__fwBar__f , 4, "mix");
+ // */test("S___IfeFoo__fwBar_I_", new S___IfeFoo__fwBar_I_ , 4, "mix");
+ // */test("S___IfeFoo__fwBar_If", new S___IfeFoo__fwBar_If , 4, "mix");
+ /* */test("S___IfeFoo__fwBarY__", new S___IfeFoo__fwBarY__ , 4, "mix");
+ /* */test("S___IfeFoo__fwBarY_f", new S___IfeFoo__fwBarY_f , 4, "mix");
+ // */test("S___IfeFoo__fwBarYI_", new S___IfeFoo__fwBarYI_ , 4, "mix");
+ // */test("S___IfeFoo__fwBarYIf", new S___IfeFoo__fwBarYIf , 4, "mix");
+ // */test("S___IfeFoo_I_ ", new S___IfeFoo_I_ , 3, "mix");
+ // */test("S___IfeFoo_I_wBar___", new S___IfeFoo_I_wBar___ , 4, "mix");
+ // */test("S___IfeFoo_I_wBar__f", new S___IfeFoo_I_wBar__f , 4, "mix");
+ // */test("S___IfeFoo_I_wBar_I_", new S___IfeFoo_I_wBar_I_ , 4, "mix");
+ // */test("S___IfeFoo_I_wBar_If", new S___IfeFoo_I_wBar_If , 4, "mix");
+ // */test("S___IfeFoo_I_wBarY__", new S___IfeFoo_I_wBarY__ , 4, "mix");
+ // */test("S___IfeFoo_I_wBarY_f", new S___IfeFoo_I_wBarY_f , 4, "mix");
+ // */test("S___IfeFoo_I_wBarYI_", new S___IfeFoo_I_wBarYI_ , 4, "mix");
+ // */test("S___IfeFoo_I_wBarYIf", new S___IfeFoo_I_wBarYIf , 4, "mix");
+ // */test("S___IfeFoo_If ", new S___IfeFoo_If , 3, "mix");
+ // */test("S___IfeFoo_IfwBar___", new S___IfeFoo_IfwBar___ , 4, "mix");
+ // */test("S___IfeFoo_IfwBar__f", new S___IfeFoo_IfwBar__f , 4, "mix");
+ // */test("S___IfeFoo_IfwBar_I_", new S___IfeFoo_IfwBar_I_ , 4, "mix");
+ // */test("S___IfeFoo_IfwBar_If", new S___IfeFoo_IfwBar_If , 4, "mix");
+ // */test("S___IfeFoo_IfwBarY__", new S___IfeFoo_IfwBarY__ , 4, "mix");
+ // */test("S___IfeFoo_IfwBarY_f", new S___IfeFoo_IfwBarY_f , 4, "mix");
+ // */test("S___IfeFoo_IfwBarYI_", new S___IfeFoo_IfwBarYI_ , 4, "mix");
+ // */test("S___IfeFoo_IfwBarYIf", new S___IfeFoo_IfwBarYIf , 4, "mix");
+ /* */test("S___IfeFooX__ ", new S___IfeFooX__ , 3, "mix");
+ /* */test("S___IfeFooX__wBar___", new S___IfeFooX__wBar___ , 4, "mix");
+ /* */test("S___IfeFooX__wBar__f", new S___IfeFooX__wBar__f , 4, "mix");
+ // */test("S___IfeFooX__wBar_I_", new S___IfeFooX__wBar_I_ , 4, "mix");
+ // */test("S___IfeFooX__wBar_If", new S___IfeFooX__wBar_If , 4, "mix");
+ /* */test("S___IfeFooX__wBarY__", new S___IfeFooX__wBarY__ , 4, "mix");
+ /* */test("S___IfeFooX__wBarY_f", new S___IfeFooX__wBarY_f , 4, "mix");
+ // */test("S___IfeFooX__wBarYI_", new S___IfeFooX__wBarYI_ , 4, "mix");
+ // */test("S___IfeFooX__wBarYIf", new S___IfeFooX__wBarYIf , 4, "mix");
+ /* */test("S___IfeFooX_f ", new S___IfeFooX_f , 3, "mix");
+ /* */test("S___IfeFooX_fwBar___", new S___IfeFooX_fwBar___ , 4, "mix");
+ /* */test("S___IfeFooX_fwBar__f", new S___IfeFooX_fwBar__f , 4, "mix");
+ // */test("S___IfeFooX_fwBar_I_", new S___IfeFooX_fwBar_I_ , 4, "mix");
+ // */test("S___IfeFooX_fwBar_If", new S___IfeFooX_fwBar_If , 4, "mix");
+ /* */test("S___IfeFooX_fwBarY__", new S___IfeFooX_fwBarY__ , 4, "mix");
+ /* */test("S___IfeFooX_fwBarY_f", new S___IfeFooX_fwBarY_f , 4, "mix");
+ // */test("S___IfeFooX_fwBarYI_", new S___IfeFooX_fwBarYI_ , 4, "mix");
+ // */test("S___IfeFooX_fwBarYIf", new S___IfeFooX_fwBarYIf , 4, "mix");
+ // */test("S___IfeFooXI_ ", new S___IfeFooXI_ , 3, "mix");
+ // */test("S___IfeFooXI_wBar___", new S___IfeFooXI_wBar___ , 4, "mix");
+ // */test("S___IfeFooXI_wBar__f", new S___IfeFooXI_wBar__f , 4, "mix");
+ // */test("S___IfeFooXI_wBar_I_", new S___IfeFooXI_wBar_I_ , 4, "mix");
+ // */test("S___IfeFooXI_wBar_If", new S___IfeFooXI_wBar_If , 4, "mix");
+ // */test("S___IfeFooXI_wBarY__", new S___IfeFooXI_wBarY__ , 4, "mix");
+ // */test("S___IfeFooXI_wBarY_f", new S___IfeFooXI_wBarY_f , 4, "mix");
+ // */test("S___IfeFooXI_wBarYI_", new S___IfeFooXI_wBarYI_ , 4, "mix");
+ // */test("S___IfeFooXI_wBarYIf", new S___IfeFooXI_wBarYIf , 4, "mix");
+ // */test("S___IfeFooXIf ", new S___IfeFooXIf , 3, "mix");
+ // */test("S___IfeFooXIfwBar___", new S___IfeFooXIfwBar___ , 4, "mix");
+ // */test("S___IfeFooXIfwBar__f", new S___IfeFooXIfwBar__f , 4, "mix");
+ // */test("S___IfeFooXIfwBar_I_", new S___IfeFooXIfwBar_I_ , 4, "mix");
+ // */test("S___IfeFooXIfwBar_If", new S___IfeFooXIfwBar_If , 4, "mix");
+ // */test("S___IfeFooXIfwBarY__", new S___IfeFooXIfwBarY__ , 4, "mix");
+ // */test("S___IfeFooXIfwBarY_f", new S___IfeFooXIfwBarY_f , 4, "mix");
+ // */test("S___IfeFooXIfwBarYI_", new S___IfeFooXIfwBarYI_ , 4, "mix");
+ // */test("S___IfeFooXIfwBarYIf", new S___IfeFooXIfwBarYIf , 4, "mix");
+
+ /* */test("S__Z__eFoo___ ", new S__Z__eFoo___ , 3, "sub");
+ /* */test("S__Z__eFoo___wBar___", new S__Z__eFoo___wBar___ , 4, "sub");
+ /* */test("S__Z__eFoo___wBar__f", new S__Z__eFoo___wBar__f , 4, "bar");
+ /* */test("S__Z__eFoo___wBar_I_", new S__Z__eFoo___wBar_I_ , 4, "sub");
+ /* */test("S__Z__eFoo___wBar_If", new S__Z__eFoo___wBar_If , 4, "bar");
+ /* */test("S__Z__eFoo___wBarY__", new S__Z__eFoo___wBarY__ , 4, "sub");
+ /* */test("S__Z__eFoo___wBarY_f", new S__Z__eFoo___wBarY_f , 4, "bar");
+ /* */test("S__Z__eFoo___wBarYI_", new S__Z__eFoo___wBarYI_ , 4, "sub");
+ /* */test("S__Z__eFoo___wBarYIf", new S__Z__eFoo___wBarYIf , 4, "bar");
+ /* */test("S__Z__eFoo__f ", new S__Z__eFoo__f , 3, "foo");
+ /* */test("S__Z__eFoo__fwBar___", new S__Z__eFoo__fwBar___ , 4, "foo");
+ // */test("S__Z__eFoo__fwBar__f", new S__Z__eFoo__fwBar__f , 4, "bar");
+ /* */test("S__Z__eFoo__fwBar_I_", new S__Z__eFoo__fwBar_I_ , 4, "foo");
+ // */test("S__Z__eFoo__fwBar_If", new S__Z__eFoo__fwBar_If , 4, "bar");
+ /* */test("S__Z__eFoo__fwBarY__", new S__Z__eFoo__fwBarY__ , 4, "foo");
+ // */test("S__Z__eFoo__fwBarY_f", new S__Z__eFoo__fwBarY_f , 4, "bar");
+ /* */test("S__Z__eFoo__fwBarYI_", new S__Z__eFoo__fwBarYI_ , 4, "foo");
+ // */test("S__Z__eFoo__fwBarYIf", new S__Z__eFoo__fwBarYIf , 4, "bar");
+ /* */test("S__Z__eFoo_I_ ", new S__Z__eFoo_I_ , 3, "sub");
+ /* */test("S__Z__eFoo_I_wBar___", new S__Z__eFoo_I_wBar___ , 4, "sub");
+ /* */test("S__Z__eFoo_I_wBar__f", new S__Z__eFoo_I_wBar__f , 4, "bar");
+ // */test("S__Z__eFoo_I_wBar_I_", new S__Z__eFoo_I_wBar_I_ , 4, "sub");
+ // */test("S__Z__eFoo_I_wBar_If", new S__Z__eFoo_I_wBar_If , 4, "bar");
+ /* */test("S__Z__eFoo_I_wBarY__", new S__Z__eFoo_I_wBarY__ , 4, "sub");
+ /* */test("S__Z__eFoo_I_wBarY_f", new S__Z__eFoo_I_wBarY_f , 4, "bar");
+ // */test("S__Z__eFoo_I_wBarYI_", new S__Z__eFoo_I_wBarYI_ , 4, "sub");
+ // */test("S__Z__eFoo_I_wBarYIf", new S__Z__eFoo_I_wBarYIf , 4, "bar");
+ /* */test("S__Z__eFoo_If ", new S__Z__eFoo_If , 3, "foo");
+ /* */test("S__Z__eFoo_IfwBar___", new S__Z__eFoo_IfwBar___ , 4, "foo");
+ // */test("S__Z__eFoo_IfwBar__f", new S__Z__eFoo_IfwBar__f , 4, "bar");
+ // */test("S__Z__eFoo_IfwBar_I_", new S__Z__eFoo_IfwBar_I_ , 4, "foo");
+ // */test("S__Z__eFoo_IfwBar_If", new S__Z__eFoo_IfwBar_If , 4, "bar");
+ /* */test("S__Z__eFoo_IfwBarY__", new S__Z__eFoo_IfwBarY__ , 4, "foo");
+ // */test("S__Z__eFoo_IfwBarY_f", new S__Z__eFoo_IfwBarY_f , 4, "bar");
+ // */test("S__Z__eFoo_IfwBarYI_", new S__Z__eFoo_IfwBarYI_ , 4, "foo");
+ // */test("S__Z__eFoo_IfwBarYIf", new S__Z__eFoo_IfwBarYIf , 4, "bar");
+ /* */test("S__Z__eFooX__ ", new S__Z__eFooX__ , 3, "sub");
+ /* */test("S__Z__eFooX__wBar___", new S__Z__eFooX__wBar___ , 4, "sub");
+ /* */test("S__Z__eFooX__wBar__f", new S__Z__eFooX__wBar__f , 4, "bar");
+ /* */test("S__Z__eFooX__wBar_I_", new S__Z__eFooX__wBar_I_ , 4, "sub");
+ /* */test("S__Z__eFooX__wBar_If", new S__Z__eFooX__wBar_If , 4, "bar");
+ /* */test("S__Z__eFooX__wBarY__", new S__Z__eFooX__wBarY__ , 4, "sub");
+ /* */test("S__Z__eFooX__wBarY_f", new S__Z__eFooX__wBarY_f , 4, "bar");
+ /* */test("S__Z__eFooX__wBarYI_", new S__Z__eFooX__wBarYI_ , 4, "sub");
+ /* */test("S__Z__eFooX__wBarYIf", new S__Z__eFooX__wBarYIf , 4, "bar");
+ /* */test("S__Z__eFooX_f ", new S__Z__eFooX_f , 3, "foo");
+ /* */test("S__Z__eFooX_fwBar___", new S__Z__eFooX_fwBar___ , 4, "foo");
+ // */test("S__Z__eFooX_fwBar__f", new S__Z__eFooX_fwBar__f , 4, "bar");
+ /* */test("S__Z__eFooX_fwBar_I_", new S__Z__eFooX_fwBar_I_ , 4, "foo");
+ // */test("S__Z__eFooX_fwBar_If", new S__Z__eFooX_fwBar_If , 4, "bar");
+ /* */test("S__Z__eFooX_fwBarY__", new S__Z__eFooX_fwBarY__ , 4, "foo");
+ // */test("S__Z__eFooX_fwBarY_f", new S__Z__eFooX_fwBarY_f , 4, "bar");
+ /* */test("S__Z__eFooX_fwBarYI_", new S__Z__eFooX_fwBarYI_ , 4, "foo");
+ // */test("S__Z__eFooX_fwBarYIf", new S__Z__eFooX_fwBarYIf , 4, "bar");
+ /* */test("S__Z__eFooXI_ ", new S__Z__eFooXI_ , 3, "sub");
+ /* */test("S__Z__eFooXI_wBar___", new S__Z__eFooXI_wBar___ , 4, "sub");
+ /* */test("S__Z__eFooXI_wBar__f", new S__Z__eFooXI_wBar__f , 4, "bar");
+ // */test("S__Z__eFooXI_wBar_I_", new S__Z__eFooXI_wBar_I_ , 4, "sub");
+ // */test("S__Z__eFooXI_wBar_If", new S__Z__eFooXI_wBar_If , 4, "bar");
+ /* */test("S__Z__eFooXI_wBarY__", new S__Z__eFooXI_wBarY__ , 4, "sub");
+ /* */test("S__Z__eFooXI_wBarY_f", new S__Z__eFooXI_wBarY_f , 4, "bar");
+ // */test("S__Z__eFooXI_wBarYI_", new S__Z__eFooXI_wBarYI_ , 4, "sub");
+ // */test("S__Z__eFooXI_wBarYIf", new S__Z__eFooXI_wBarYIf , 4, "bar");
+ /* */test("S__Z__eFooXIf ", new S__Z__eFooXIf , 3, "foo");
+ /* */test("S__Z__eFooXIfwBar___", new S__Z__eFooXIfwBar___ , 4, "foo");
+ // */test("S__Z__eFooXIfwBar__f", new S__Z__eFooXIfwBar__f , 4, "bar");
+ // */test("S__Z__eFooXIfwBar_I_", new S__Z__eFooXIfwBar_I_ , 4, "foo");
+ // */test("S__Z__eFooXIfwBar_If", new S__Z__eFooXIfwBar_If , 4, "bar");
+ /* */test("S__Z__eFooXIfwBarY__", new S__Z__eFooXIfwBarY__ , 4, "foo");
+ // */test("S__Z__eFooXIfwBarY_f", new S__Z__eFooXIfwBarY_f , 4, "bar");
+ // */test("S__Z__eFooXIfwBarYI_", new S__Z__eFooXIfwBarYI_ , 4, "foo");
+ // */test("S__Z__eFooXIfwBarYIf", new S__Z__eFooXIfwBarYIf , 4, "bar");
+
+ /* */test("S__Z_feFoo___ ", new S__Z_feFoo___ , 3, "mix");
+ /* */test("S__Z_feFoo___wBar___", new S__Z_feFoo___wBar___ , 4, "mix");
+ /* */test("S__Z_feFoo___wBar__f", new S__Z_feFoo___wBar__f , 4, "mix");
+ /* */test("S__Z_feFoo___wBar_I_", new S__Z_feFoo___wBar_I_ , 4, "mix");
+ /* */test("S__Z_feFoo___wBar_If", new S__Z_feFoo___wBar_If , 4, "mix");
+ /* */test("S__Z_feFoo___wBarY__", new S__Z_feFoo___wBarY__ , 4, "mix");
+ /* */test("S__Z_feFoo___wBarY_f", new S__Z_feFoo___wBarY_f , 4, "mix");
+ /* */test("S__Z_feFoo___wBarYI_", new S__Z_feFoo___wBarYI_ , 4, "mix");
+ /* */test("S__Z_feFoo___wBarYIf", new S__Z_feFoo___wBarYIf , 4, "mix");
+ /* */test("S__Z_feFoo__f ", new S__Z_feFoo__f , 3, "mix");
+ /* */test("S__Z_feFoo__fwBar___", new S__Z_feFoo__fwBar___ , 4, "mix");
+ /* */test("S__Z_feFoo__fwBar__f", new S__Z_feFoo__fwBar__f , 4, "mix");
+ /* */test("S__Z_feFoo__fwBar_I_", new S__Z_feFoo__fwBar_I_ , 4, "mix");
+ /* */test("S__Z_feFoo__fwBar_If", new S__Z_feFoo__fwBar_If , 4, "mix");
+ /* */test("S__Z_feFoo__fwBarY__", new S__Z_feFoo__fwBarY__ , 4, "mix");
+ /* */test("S__Z_feFoo__fwBarY_f", new S__Z_feFoo__fwBarY_f , 4, "mix");
+ /* */test("S__Z_feFoo__fwBarYI_", new S__Z_feFoo__fwBarYI_ , 4, "mix");
+ /* */test("S__Z_feFoo__fwBarYIf", new S__Z_feFoo__fwBarYIf , 4, "mix");
+ /* */test("S__Z_feFoo_I_ ", new S__Z_feFoo_I_ , 3, "mix");
+ /* */test("S__Z_feFoo_I_wBar___", new S__Z_feFoo_I_wBar___ , 4, "mix");
+ /* */test("S__Z_feFoo_I_wBar__f", new S__Z_feFoo_I_wBar__f , 4, "mix");
+ // */test("S__Z_feFoo_I_wBar_I_", new S__Z_feFoo_I_wBar_I_ , 4, "mix");
+ // */test("S__Z_feFoo_I_wBar_If", new S__Z_feFoo_I_wBar_If , 4, "mix");
+ /* */test("S__Z_feFoo_I_wBarY__", new S__Z_feFoo_I_wBarY__ , 4, "mix");
+ /* */test("S__Z_feFoo_I_wBarY_f", new S__Z_feFoo_I_wBarY_f , 4, "mix");
+ // */test("S__Z_feFoo_I_wBarYI_", new S__Z_feFoo_I_wBarYI_ , 4, "mix");
+ // */test("S__Z_feFoo_I_wBarYIf", new S__Z_feFoo_I_wBarYIf , 4, "mix");
+ /* */test("S__Z_feFoo_If ", new S__Z_feFoo_If , 3, "mix");
+ /* */test("S__Z_feFoo_IfwBar___", new S__Z_feFoo_IfwBar___ , 4, "mix");
+ /* */test("S__Z_feFoo_IfwBar__f", new S__Z_feFoo_IfwBar__f , 4, "mix");
+ // */test("S__Z_feFoo_IfwBar_I_", new S__Z_feFoo_IfwBar_I_ , 4, "mix");
+ // */test("S__Z_feFoo_IfwBar_If", new S__Z_feFoo_IfwBar_If , 4, "mix");
+ /* */test("S__Z_feFoo_IfwBarY__", new S__Z_feFoo_IfwBarY__ , 4, "mix");
+ /* */test("S__Z_feFoo_IfwBarY_f", new S__Z_feFoo_IfwBarY_f , 4, "mix");
+ // */test("S__Z_feFoo_IfwBarYI_", new S__Z_feFoo_IfwBarYI_ , 4, "mix");
+ // */test("S__Z_feFoo_IfwBarYIf", new S__Z_feFoo_IfwBarYIf , 4, "mix");
+ /* */test("S__Z_feFooX__ ", new S__Z_feFooX__ , 3, "mix");
+ /* */test("S__Z_feFooX__wBar___", new S__Z_feFooX__wBar___ , 4, "mix");
+ /* */test("S__Z_feFooX__wBar__f", new S__Z_feFooX__wBar__f , 4, "mix");
+ /* */test("S__Z_feFooX__wBar_I_", new S__Z_feFooX__wBar_I_ , 4, "mix");
+ /* */test("S__Z_feFooX__wBar_If", new S__Z_feFooX__wBar_If , 4, "mix");
+ /* */test("S__Z_feFooX__wBarY__", new S__Z_feFooX__wBarY__ , 4, "mix");
+ /* */test("S__Z_feFooX__wBarY_f", new S__Z_feFooX__wBarY_f , 4, "mix");
+ /* */test("S__Z_feFooX__wBarYI_", new S__Z_feFooX__wBarYI_ , 4, "mix");
+ /* */test("S__Z_feFooX__wBarYIf", new S__Z_feFooX__wBarYIf , 4, "mix");
+ /* */test("S__Z_feFooX_f ", new S__Z_feFooX_f , 3, "mix");
+ /* */test("S__Z_feFooX_fwBar___", new S__Z_feFooX_fwBar___ , 4, "mix");
+ /* */test("S__Z_feFooX_fwBar__f", new S__Z_feFooX_fwBar__f , 4, "mix");
+ /* */test("S__Z_feFooX_fwBar_I_", new S__Z_feFooX_fwBar_I_ , 4, "mix");
+ /* */test("S__Z_feFooX_fwBar_If", new S__Z_feFooX_fwBar_If , 4, "mix");
+ /* */test("S__Z_feFooX_fwBarY__", new S__Z_feFooX_fwBarY__ , 4, "mix");
+ /* */test("S__Z_feFooX_fwBarY_f", new S__Z_feFooX_fwBarY_f , 4, "mix");
+ /* */test("S__Z_feFooX_fwBarYI_", new S__Z_feFooX_fwBarYI_ , 4, "mix");
+ /* */test("S__Z_feFooX_fwBarYIf", new S__Z_feFooX_fwBarYIf , 4, "mix");
+ /* */test("S__Z_feFooXI_ ", new S__Z_feFooXI_ , 3, "mix");
+ /* */test("S__Z_feFooXI_wBar___", new S__Z_feFooXI_wBar___ , 4, "mix");
+ /* */test("S__Z_feFooXI_wBar__f", new S__Z_feFooXI_wBar__f , 4, "mix");
+ // */test("S__Z_feFooXI_wBar_I_", new S__Z_feFooXI_wBar_I_ , 4, "mix");
+ // */test("S__Z_feFooXI_wBar_If", new S__Z_feFooXI_wBar_If , 4, "mix");
+ /* */test("S__Z_feFooXI_wBarY__", new S__Z_feFooXI_wBarY__ , 4, "mix");
+ /* */test("S__Z_feFooXI_wBarY_f", new S__Z_feFooXI_wBarY_f , 4, "mix");
+ // */test("S__Z_feFooXI_wBarYI_", new S__Z_feFooXI_wBarYI_ , 4, "mix");
+ // */test("S__Z_feFooXI_wBarYIf", new S__Z_feFooXI_wBarYIf , 4, "mix");
+ /* */test("S__Z_feFooXIf ", new S__Z_feFooXIf , 3, "mix");
+ /* */test("S__Z_feFooXIfwBar___", new S__Z_feFooXIfwBar___ , 4, "mix");
+ /* */test("S__Z_feFooXIfwBar__f", new S__Z_feFooXIfwBar__f , 4, "mix");
+ // */test("S__Z_feFooXIfwBar_I_", new S__Z_feFooXIfwBar_I_ , 4, "mix");
+ // */test("S__Z_feFooXIfwBar_If", new S__Z_feFooXIfwBar_If , 4, "mix");
+ /* */test("S__Z_feFooXIfwBarY__", new S__Z_feFooXIfwBarY__ , 4, "mix");
+ /* */test("S__Z_feFooXIfwBarY_f", new S__Z_feFooXIfwBarY_f , 4, "mix");
+ // */test("S__Z_feFooXIfwBarYI_", new S__Z_feFooXIfwBarYI_ , 4, "mix");
+ // */test("S__Z_feFooXIfwBarYIf", new S__Z_feFooXIfwBarYIf , 4, "mix");
+
+ /* */test("S__ZI_eFoo___ ", new S__ZI_eFoo___ , 3, "sub");
+ /* */test("S__ZI_eFoo___wBar___", new S__ZI_eFoo___wBar___ , 4, "sub");
+ /* */test("S__ZI_eFoo___wBar__f", new S__ZI_eFoo___wBar__f , 4, "bar");
+ // */test("S__ZI_eFoo___wBar_I_", new S__ZI_eFoo___wBar_I_ , 4, "sub");
+ // */test("S__ZI_eFoo___wBar_If", new S__ZI_eFoo___wBar_If , 4, "bar");
+ /* */test("S__ZI_eFoo___wBarY__", new S__ZI_eFoo___wBarY__ , 4, "sub");
+ /* */test("S__ZI_eFoo___wBarY_f", new S__ZI_eFoo___wBarY_f , 4, "bar");
+ // */test("S__ZI_eFoo___wBarYI_", new S__ZI_eFoo___wBarYI_ , 4, "sub");
+ // */test("S__ZI_eFoo___wBarYIf", new S__ZI_eFoo___wBarYIf , 4, "bar");
+ /* */test("S__ZI_eFoo__f ", new S__ZI_eFoo__f , 3, "foo");
+ /* */test("S__ZI_eFoo__fwBar___", new S__ZI_eFoo__fwBar___ , 4, "foo");
+ // */test("S__ZI_eFoo__fwBar__f", new S__ZI_eFoo__fwBar__f , 4, "bar");
+ // */test("S__ZI_eFoo__fwBar_I_", new S__ZI_eFoo__fwBar_I_ , 4, "foo");
+ // */test("S__ZI_eFoo__fwBar_If", new S__ZI_eFoo__fwBar_If , 4, "bar");
+ /* */test("S__ZI_eFoo__fwBarY__", new S__ZI_eFoo__fwBarY__ , 4, "foo");
+ // */test("S__ZI_eFoo__fwBarY_f", new S__ZI_eFoo__fwBarY_f , 4, "bar");
+ // */test("S__ZI_eFoo__fwBarYI_", new S__ZI_eFoo__fwBarYI_ , 4, "foo");
+ // */test("S__ZI_eFoo__fwBarYIf", new S__ZI_eFoo__fwBarYIf , 4, "bar");
+ // */test("S__ZI_eFoo_I_ ", new S__ZI_eFoo_I_ , 3, "sub");
+ // */test("S__ZI_eFoo_I_wBar___", new S__ZI_eFoo_I_wBar___ , 4, "sub");
+ // */test("S__ZI_eFoo_I_wBar__f", new S__ZI_eFoo_I_wBar__f , 4, "bar");
+ // */test("S__ZI_eFoo_I_wBar_I_", new S__ZI_eFoo_I_wBar_I_ , 4, "sub");
+ // */test("S__ZI_eFoo_I_wBar_If", new S__ZI_eFoo_I_wBar_If , 4, "bar");
+ // */test("S__ZI_eFoo_I_wBarY__", new S__ZI_eFoo_I_wBarY__ , 4, "sub");
+ // */test("S__ZI_eFoo_I_wBarY_f", new S__ZI_eFoo_I_wBarY_f , 4, "bar");
+ // */test("S__ZI_eFoo_I_wBarYI_", new S__ZI_eFoo_I_wBarYI_ , 4, "sub");
+ // */test("S__ZI_eFoo_I_wBarYIf", new S__ZI_eFoo_I_wBarYIf , 4, "bar");
+ // */test("S__ZI_eFoo_If ", new S__ZI_eFoo_If , 3, "foo");
+ // */test("S__ZI_eFoo_IfwBar___", new S__ZI_eFoo_IfwBar___ , 4, "foo");
+ // */test("S__ZI_eFoo_IfwBar__f", new S__ZI_eFoo_IfwBar__f , 4, "bar");
+ // */test("S__ZI_eFoo_IfwBar_I_", new S__ZI_eFoo_IfwBar_I_ , 4, "foo");
+ // */test("S__ZI_eFoo_IfwBar_If", new S__ZI_eFoo_IfwBar_If , 4, "bar");
+ // */test("S__ZI_eFoo_IfwBarY__", new S__ZI_eFoo_IfwBarY__ , 4, "foo");
+ // */test("S__ZI_eFoo_IfwBarY_f", new S__ZI_eFoo_IfwBarY_f , 4, "bar");
+ // */test("S__ZI_eFoo_IfwBarYI_", new S__ZI_eFoo_IfwBarYI_ , 4, "foo");
+ // */test("S__ZI_eFoo_IfwBarYIf", new S__ZI_eFoo_IfwBarYIf , 4, "bar");
+ /* */test("S__ZI_eFooX__ ", new S__ZI_eFooX__ , 3, "sub");
+ /* */test("S__ZI_eFooX__wBar___", new S__ZI_eFooX__wBar___ , 4, "sub");
+ /* */test("S__ZI_eFooX__wBar__f", new S__ZI_eFooX__wBar__f , 4, "bar");
+ // */test("S__ZI_eFooX__wBar_I_", new S__ZI_eFooX__wBar_I_ , 4, "sub");
+ // */test("S__ZI_eFooX__wBar_If", new S__ZI_eFooX__wBar_If , 4, "bar");
+ /* */test("S__ZI_eFooX__wBarY__", new S__ZI_eFooX__wBarY__ , 4, "sub");
+ /* */test("S__ZI_eFooX__wBarY_f", new S__ZI_eFooX__wBarY_f , 4, "bar");
+ // */test("S__ZI_eFooX__wBarYI_", new S__ZI_eFooX__wBarYI_ , 4, "sub");
+ // */test("S__ZI_eFooX__wBarYIf", new S__ZI_eFooX__wBarYIf , 4, "bar");
+ /* */test("S__ZI_eFooX_f ", new S__ZI_eFooX_f , 3, "foo");
+ /* */test("S__ZI_eFooX_fwBar___", new S__ZI_eFooX_fwBar___ , 4, "foo");
+ // */test("S__ZI_eFooX_fwBar__f", new S__ZI_eFooX_fwBar__f , 4, "bar");
+ // */test("S__ZI_eFooX_fwBar_I_", new S__ZI_eFooX_fwBar_I_ , 4, "foo");
+ // */test("S__ZI_eFooX_fwBar_If", new S__ZI_eFooX_fwBar_If , 4, "bar");
+ /* */test("S__ZI_eFooX_fwBarY__", new S__ZI_eFooX_fwBarY__ , 4, "foo");
+ // */test("S__ZI_eFooX_fwBarY_f", new S__ZI_eFooX_fwBarY_f , 4, "bar");
+ // */test("S__ZI_eFooX_fwBarYI_", new S__ZI_eFooX_fwBarYI_ , 4, "foo");
+ // */test("S__ZI_eFooX_fwBarYIf", new S__ZI_eFooX_fwBarYIf , 4, "bar");
+ // */test("S__ZI_eFooXI_ ", new S__ZI_eFooXI_ , 3, "sub");
+ // */test("S__ZI_eFooXI_wBar___", new S__ZI_eFooXI_wBar___ , 4, "sub");
+ // */test("S__ZI_eFooXI_wBar__f", new S__ZI_eFooXI_wBar__f , 4, "bar");
+ // */test("S__ZI_eFooXI_wBar_I_", new S__ZI_eFooXI_wBar_I_ , 4, "sub");
+ // */test("S__ZI_eFooXI_wBar_If", new S__ZI_eFooXI_wBar_If , 4, "bar");
+ // */test("S__ZI_eFooXI_wBarY__", new S__ZI_eFooXI_wBarY__ , 4, "sub");
+ // */test("S__ZI_eFooXI_wBarY_f", new S__ZI_eFooXI_wBarY_f , 4, "bar");
+ // */test("S__ZI_eFooXI_wBarYI_", new S__ZI_eFooXI_wBarYI_ , 4, "sub");
+ // */test("S__ZI_eFooXI_wBarYIf", new S__ZI_eFooXI_wBarYIf , 4, "bar");
+ // */test("S__ZI_eFooXIf ", new S__ZI_eFooXIf , 3, "foo");
+ // */test("S__ZI_eFooXIfwBar___", new S__ZI_eFooXIfwBar___ , 4, "foo");
+ // */test("S__ZI_eFooXIfwBar__f", new S__ZI_eFooXIfwBar__f , 4, "bar");
+ // */test("S__ZI_eFooXIfwBar_I_", new S__ZI_eFooXIfwBar_I_ , 4, "foo");
+ // */test("S__ZI_eFooXIfwBar_If", new S__ZI_eFooXIfwBar_If , 4, "bar");
+ // */test("S__ZI_eFooXIfwBarY__", new S__ZI_eFooXIfwBarY__ , 4, "foo");
+ // */test("S__ZI_eFooXIfwBarY_f", new S__ZI_eFooXIfwBarY_f , 4, "bar");
+ // */test("S__ZI_eFooXIfwBarYI_", new S__ZI_eFooXIfwBarYI_ , 4, "foo");
+ // */test("S__ZI_eFooXIfwBarYIf", new S__ZI_eFooXIfwBarYIf , 4, "bar");
+
+ /* */test("S__ZIfeFoo___ ", new S__ZIfeFoo___ , 3, "mix");
+ /* */test("S__ZIfeFoo___wBar___", new S__ZIfeFoo___wBar___ , 4, "mix");
+ /* */test("S__ZIfeFoo___wBar__f", new S__ZIfeFoo___wBar__f , 4, "mix");
+ // */test("S__ZIfeFoo___wBar_I_", new S__ZIfeFoo___wBar_I_ , 4, "mix");
+ // */test("S__ZIfeFoo___wBar_If", new S__ZIfeFoo___wBar_If , 4, "mix");
+ /* */test("S__ZIfeFoo___wBarY__", new S__ZIfeFoo___wBarY__ , 4, "mix");
+ /* */test("S__ZIfeFoo___wBarY_f", new S__ZIfeFoo___wBarY_f , 4, "mix");
+ // */test("S__ZIfeFoo___wBarYI_", new S__ZIfeFoo___wBarYI_ , 4, "mix");
+ // */test("S__ZIfeFoo___wBarYIf", new S__ZIfeFoo___wBarYIf , 4, "mix");
+ /* */test("S__ZIfeFoo__f ", new S__ZIfeFoo__f , 3, "mix");
+ /* */test("S__ZIfeFoo__fwBar___", new S__ZIfeFoo__fwBar___ , 4, "mix");
+ /* */test("S__ZIfeFoo__fwBar__f", new S__ZIfeFoo__fwBar__f , 4, "mix");
+ // */test("S__ZIfeFoo__fwBar_I_", new S__ZIfeFoo__fwBar_I_ , 4, "mix");
+ // */test("S__ZIfeFoo__fwBar_If", new S__ZIfeFoo__fwBar_If , 4, "mix");
+ /* */test("S__ZIfeFoo__fwBarY__", new S__ZIfeFoo__fwBarY__ , 4, "mix");
+ /* */test("S__ZIfeFoo__fwBarY_f", new S__ZIfeFoo__fwBarY_f , 4, "mix");
+ // */test("S__ZIfeFoo__fwBarYI_", new S__ZIfeFoo__fwBarYI_ , 4, "mix");
+ // */test("S__ZIfeFoo__fwBarYIf", new S__ZIfeFoo__fwBarYIf , 4, "mix");
+ // */test("S__ZIfeFoo_I_ ", new S__ZIfeFoo_I_ , 3, "mix");
+ // */test("S__ZIfeFoo_I_wBar___", new S__ZIfeFoo_I_wBar___ , 4, "mix");
+ // */test("S__ZIfeFoo_I_wBar__f", new S__ZIfeFoo_I_wBar__f , 4, "mix");
+ // */test("S__ZIfeFoo_I_wBar_I_", new S__ZIfeFoo_I_wBar_I_ , 4, "mix");
+ // */test("S__ZIfeFoo_I_wBar_If", new S__ZIfeFoo_I_wBar_If , 4, "mix");
+ // */test("S__ZIfeFoo_I_wBarY__", new S__ZIfeFoo_I_wBarY__ , 4, "mix");
+ // */test("S__ZIfeFoo_I_wBarY_f", new S__ZIfeFoo_I_wBarY_f , 4, "mix");
+ // */test("S__ZIfeFoo_I_wBarYI_", new S__ZIfeFoo_I_wBarYI_ , 4, "mix");
+ // */test("S__ZIfeFoo_I_wBarYIf", new S__ZIfeFoo_I_wBarYIf , 4, "mix");
+ // */test("S__ZIfeFoo_If ", new S__ZIfeFoo_If , 3, "mix");
+ // */test("S__ZIfeFoo_IfwBar___", new S__ZIfeFoo_IfwBar___ , 4, "mix");
+ // */test("S__ZIfeFoo_IfwBar__f", new S__ZIfeFoo_IfwBar__f , 4, "mix");
+ // */test("S__ZIfeFoo_IfwBar_I_", new S__ZIfeFoo_IfwBar_I_ , 4, "mix");
+ // */test("S__ZIfeFoo_IfwBar_If", new S__ZIfeFoo_IfwBar_If , 4, "mix");
+ // */test("S__ZIfeFoo_IfwBarY__", new S__ZIfeFoo_IfwBarY__ , 4, "mix");
+ // */test("S__ZIfeFoo_IfwBarY_f", new S__ZIfeFoo_IfwBarY_f , 4, "mix");
+ // */test("S__ZIfeFoo_IfwBarYI_", new S__ZIfeFoo_IfwBarYI_ , 4, "mix");
+ // */test("S__ZIfeFoo_IfwBarYIf", new S__ZIfeFoo_IfwBarYIf , 4, "mix");
+ /* */test("S__ZIfeFooX__ ", new S__ZIfeFooX__ , 3, "mix");
+ /* */test("S__ZIfeFooX__wBar___", new S__ZIfeFooX__wBar___ , 4, "mix");
+ /* */test("S__ZIfeFooX__wBar__f", new S__ZIfeFooX__wBar__f , 4, "mix");
+ // */test("S__ZIfeFooX__wBar_I_", new S__ZIfeFooX__wBar_I_ , 4, "mix");
+ // */test("S__ZIfeFooX__wBar_If", new S__ZIfeFooX__wBar_If , 4, "mix");
+ /* */test("S__ZIfeFooX__wBarY__", new S__ZIfeFooX__wBarY__ , 4, "mix");
+ /* */test("S__ZIfeFooX__wBarY_f", new S__ZIfeFooX__wBarY_f , 4, "mix");
+ // */test("S__ZIfeFooX__wBarYI_", new S__ZIfeFooX__wBarYI_ , 4, "mix");
+ // */test("S__ZIfeFooX__wBarYIf", new S__ZIfeFooX__wBarYIf , 4, "mix");
+ /* */test("S__ZIfeFooX_f ", new S__ZIfeFooX_f , 3, "mix");
+ /* */test("S__ZIfeFooX_fwBar___", new S__ZIfeFooX_fwBar___ , 4, "mix");
+ /* */test("S__ZIfeFooX_fwBar__f", new S__ZIfeFooX_fwBar__f , 4, "mix");
+ // */test("S__ZIfeFooX_fwBar_I_", new S__ZIfeFooX_fwBar_I_ , 4, "mix");
+ // */test("S__ZIfeFooX_fwBar_If", new S__ZIfeFooX_fwBar_If , 4, "mix");
+ /* */test("S__ZIfeFooX_fwBarY__", new S__ZIfeFooX_fwBarY__ , 4, "mix");
+ /* */test("S__ZIfeFooX_fwBarY_f", new S__ZIfeFooX_fwBarY_f , 4, "mix");
+ // */test("S__ZIfeFooX_fwBarYI_", new S__ZIfeFooX_fwBarYI_ , 4, "mix");
+ // */test("S__ZIfeFooX_fwBarYIf", new S__ZIfeFooX_fwBarYIf , 4, "mix");
+ // */test("S__ZIfeFooXI_ ", new S__ZIfeFooXI_ , 3, "mix");
+ // */test("S__ZIfeFooXI_wBar___", new S__ZIfeFooXI_wBar___ , 4, "mix");
+ // */test("S__ZIfeFooXI_wBar__f", new S__ZIfeFooXI_wBar__f , 4, "mix");
+ // */test("S__ZIfeFooXI_wBar_I_", new S__ZIfeFooXI_wBar_I_ , 4, "mix");
+ // */test("S__ZIfeFooXI_wBar_If", new S__ZIfeFooXI_wBar_If , 4, "mix");
+ // */test("S__ZIfeFooXI_wBarY__", new S__ZIfeFooXI_wBarY__ , 4, "mix");
+ // */test("S__ZIfeFooXI_wBarY_f", new S__ZIfeFooXI_wBarY_f , 4, "mix");
+ // */test("S__ZIfeFooXI_wBarYI_", new S__ZIfeFooXI_wBarYI_ , 4, "mix");
+ // */test("S__ZIfeFooXI_wBarYIf", new S__ZIfeFooXI_wBarYIf , 4, "mix");
+ // */test("S__ZIfeFooXIf ", new S__ZIfeFooXIf , 3, "mix");
+ // */test("S__ZIfeFooXIfwBar___", new S__ZIfeFooXIfwBar___ , 4, "mix");
+ // */test("S__ZIfeFooXIfwBar__f", new S__ZIfeFooXIfwBar__f , 4, "mix");
+ // */test("S__ZIfeFooXIfwBar_I_", new S__ZIfeFooXIfwBar_I_ , 4, "mix");
+ // */test("S__ZIfeFooXIfwBar_If", new S__ZIfeFooXIfwBar_If , 4, "mix");
+ // */test("S__ZIfeFooXIfwBarY__", new S__ZIfeFooXIfwBarY__ , 4, "mix");
+ // */test("S__ZIfeFooXIfwBarY_f", new S__ZIfeFooXIfwBarY_f , 4, "mix");
+ // */test("S__ZIfeFooXIfwBarYI_", new S__ZIfeFooXIfwBarYI_ , 4, "mix");
+ // */test("S__ZIfeFooXIfwBarYIf", new S__ZIfeFooXIfwBarYIf , 4, "mix");
+
+
+
+ /* */test("S_____wFoo___ ", new S_____wFoo___ , 3, "sub");
+ /* */test("S_____wFoo___wBar___", new S_____wFoo___wBar___ , 4, "sub");
+ /* */test("S_____wFoo___wBar__f", new S_____wFoo___wBar__f , 4, "bar");
+ /* */test("S_____wFoo___wBar_I_", new S_____wFoo___wBar_I_ , 4, "sub");
+ /* */test("S_____wFoo___wBar_If", new S_____wFoo___wBar_If , 4, "bar");
+ /* */test("S_____wFoo___wBarY__", new S_____wFoo___wBarY__ , 4, "sub");
+ /* */test("S_____wFoo___wBarY_f", new S_____wFoo___wBarY_f , 4, "bar");
+ /* */test("S_____wFoo___wBarYI_", new S_____wFoo___wBarYI_ , 4, "sub");
+ /* */test("S_____wFoo___wBarYIf", new S_____wFoo___wBarYIf , 4, "bar");
+ /* */test("S_____wFoo__f ", new S_____wFoo__f , 3, "foo");
+ /* */test("S_____wFoo__fwBar___", new S_____wFoo__fwBar___ , 4, "foo");
+ // */test("S_____wFoo__fwBar__f", new S_____wFoo__fwBar__f , 4, "bar");
+ /* */test("S_____wFoo__fwBar_I_", new S_____wFoo__fwBar_I_ , 4, "foo");
+ // */test("S_____wFoo__fwBar_If", new S_____wFoo__fwBar_If , 4, "bar");
+ /* */test("S_____wFoo__fwBarY__", new S_____wFoo__fwBarY__ , 4, "foo");
+ // */test("S_____wFoo__fwBarY_f", new S_____wFoo__fwBarY_f , 4, "bar");
+ /* */test("S_____wFoo__fwBarYI_", new S_____wFoo__fwBarYI_ , 4, "foo");
+ // */test("S_____wFoo__fwBarYIf", new S_____wFoo__fwBarYIf , 4, "bar");
+ /* */test("S_____wFoo_I_ ", new S_____wFoo_I_ , 3, "sub");
+ /* */test("S_____wFoo_I_wBar___", new S_____wFoo_I_wBar___ , 4, "sub");
+ /* */test("S_____wFoo_I_wBar__f", new S_____wFoo_I_wBar__f , 4, "bar");
+ // */test("S_____wFoo_I_wBar_I_", new S_____wFoo_I_wBar_I_ , 4, "sub");
+ // */test("S_____wFoo_I_wBar_If", new S_____wFoo_I_wBar_If , 4, "bar");
+ /* */test("S_____wFoo_I_wBarY__", new S_____wFoo_I_wBarY__ , 4, "sub");
+ /* */test("S_____wFoo_I_wBarY_f", new S_____wFoo_I_wBarY_f , 4, "bar");
+ // */test("S_____wFoo_I_wBarYI_", new S_____wFoo_I_wBarYI_ , 4, "sub");
+ // */test("S_____wFoo_I_wBarYIf", new S_____wFoo_I_wBarYIf , 4, "bar");
+ /* */test("S_____wFoo_If ", new S_____wFoo_If , 3, "foo");
+ /* */test("S_____wFoo_IfwBar___", new S_____wFoo_IfwBar___ , 4, "foo");
+ // */test("S_____wFoo_IfwBar__f", new S_____wFoo_IfwBar__f , 4, "bar");
+ // */test("S_____wFoo_IfwBar_I_", new S_____wFoo_IfwBar_I_ , 4, "foo");
+ // */test("S_____wFoo_IfwBar_If", new S_____wFoo_IfwBar_If , 4, "bar");
+ /* */test("S_____wFoo_IfwBarY__", new S_____wFoo_IfwBarY__ , 4, "foo");
+ // */test("S_____wFoo_IfwBarY_f", new S_____wFoo_IfwBarY_f , 4, "bar");
+ // */test("S_____wFoo_IfwBarYI_", new S_____wFoo_IfwBarYI_ , 4, "foo");
+ // */test("S_____wFoo_IfwBarYIf", new S_____wFoo_IfwBarYIf , 4, "bar");
+ /* */test("S_____wFooX__ ", new S_____wFooX__ , 3, "sub");
+ /* */test("S_____wFooX__wBar___", new S_____wFooX__wBar___ , 4, "sub");
+ /* */test("S_____wFooX__wBar__f", new S_____wFooX__wBar__f , 4, "bar");
+ /* */test("S_____wFooX__wBar_I_", new S_____wFooX__wBar_I_ , 4, "sub");
+ /* */test("S_____wFooX__wBar_If", new S_____wFooX__wBar_If , 4, "bar");
+ /* */test("S_____wFooX__wBarY__", new S_____wFooX__wBarY__ , 4, "sub");
+ /* */test("S_____wFooX__wBarY_f", new S_____wFooX__wBarY_f , 4, "bar");
+ /* */test("S_____wFooX__wBarYI_", new S_____wFooX__wBarYI_ , 4, "sub");
+ /* */test("S_____wFooX__wBarYIf", new S_____wFooX__wBarYIf , 4, "bar");
+ /* */test("S_____wFooX_f ", new S_____wFooX_f , 3, "foo");
+ /* */test("S_____wFooX_fwBar___", new S_____wFooX_fwBar___ , 4, "foo");
+ // */test("S_____wFooX_fwBar__f", new S_____wFooX_fwBar__f , 4, "bar");
+ /* */test("S_____wFooX_fwBar_I_", new S_____wFooX_fwBar_I_ , 4, "foo");
+ // */test("S_____wFooX_fwBar_If", new S_____wFooX_fwBar_If , 4, "bar");
+ /* */test("S_____wFooX_fwBarY__", new S_____wFooX_fwBarY__ , 4, "foo");
+ // */test("S_____wFooX_fwBarY_f", new S_____wFooX_fwBarY_f , 4, "bar");
+ /* */test("S_____wFooX_fwBarYI_", new S_____wFooX_fwBarYI_ , 4, "foo");
+ // */test("S_____wFooX_fwBarYIf", new S_____wFooX_fwBarYIf , 4, "bar");
+ /* */test("S_____wFooXI_ ", new S_____wFooXI_ , 3, "sub");
+ /* */test("S_____wFooXI_wBar___", new S_____wFooXI_wBar___ , 4, "sub");
+ /* */test("S_____wFooXI_wBar__f", new S_____wFooXI_wBar__f , 4, "bar");
+ // */test("S_____wFooXI_wBar_I_", new S_____wFooXI_wBar_I_ , 4, "sub");
+ // */test("S_____wFooXI_wBar_If", new S_____wFooXI_wBar_If , 4, "bar");
+ /* */test("S_____wFooXI_wBarY__", new S_____wFooXI_wBarY__ , 4, "sub");
+ /* */test("S_____wFooXI_wBarY_f", new S_____wFooXI_wBarY_f , 4, "bar");
+ // */test("S_____wFooXI_wBarYI_", new S_____wFooXI_wBarYI_ , 4, "sub");
+ // */test("S_____wFooXI_wBarYIf", new S_____wFooXI_wBarYIf , 4, "bar");
+ /* */test("S_____wFooXIf ", new S_____wFooXIf , 3, "foo");
+ /* */test("S_____wFooXIfwBar___", new S_____wFooXIfwBar___ , 4, "foo");
+ // */test("S_____wFooXIfwBar__f", new S_____wFooXIfwBar__f , 4, "bar");
+ // */test("S_____wFooXIfwBar_I_", new S_____wFooXIfwBar_I_ , 4, "foo");
+ // */test("S_____wFooXIfwBar_If", new S_____wFooXIfwBar_If , 4, "bar");
+ /* */test("S_____wFooXIfwBarY__", new S_____wFooXIfwBarY__ , 4, "foo");
+ // */test("S_____wFooXIfwBarY_f", new S_____wFooXIfwBarY_f , 4, "bar");
+ // */test("S_____wFooXIfwBarYI_", new S_____wFooXIfwBarYI_ , 4, "foo");
+ // */test("S_____wFooXIfwBarYIf", new S_____wFooXIfwBarYIf , 4, "bar");
+
+ /* */test("S____fwFoo___ ", new S____fwFoo___ , 3, "mix");
+ /* */test("S____fwFoo___wBar___", new S____fwFoo___wBar___ , 4, "mix");
+ /* */test("S____fwFoo___wBar__f", new S____fwFoo___wBar__f , 4, "mix");
+ /* */test("S____fwFoo___wBar_I_", new S____fwFoo___wBar_I_ , 4, "mix");
+ /* */test("S____fwFoo___wBar_If", new S____fwFoo___wBar_If , 4, "mix");
+ /* */test("S____fwFoo___wBarY__", new S____fwFoo___wBarY__ , 4, "mix");
+ /* */test("S____fwFoo___wBarY_f", new S____fwFoo___wBarY_f , 4, "mix");
+ /* */test("S____fwFoo___wBarYI_", new S____fwFoo___wBarYI_ , 4, "mix");
+ /* */test("S____fwFoo___wBarYIf", new S____fwFoo___wBarYIf , 4, "mix");
+ /* */test("S____fwFoo__f ", new S____fwFoo__f , 3, "mix");
+ /* */test("S____fwFoo__fwBar___", new S____fwFoo__fwBar___ , 4, "mix");
+ /* */test("S____fwFoo__fwBar__f", new S____fwFoo__fwBar__f , 4, "mix");
+ /* */test("S____fwFoo__fwBar_I_", new S____fwFoo__fwBar_I_ , 4, "mix");
+ /* */test("S____fwFoo__fwBar_If", new S____fwFoo__fwBar_If , 4, "mix");
+ /* */test("S____fwFoo__fwBarY__", new S____fwFoo__fwBarY__ , 4, "mix");
+ /* */test("S____fwFoo__fwBarY_f", new S____fwFoo__fwBarY_f , 4, "mix");
+ /* */test("S____fwFoo__fwBarYI_", new S____fwFoo__fwBarYI_ , 4, "mix");
+ /* */test("S____fwFoo__fwBarYIf", new S____fwFoo__fwBarYIf , 4, "mix");
+ /* */test("S____fwFoo_I_ ", new S____fwFoo_I_ , 3, "mix");
+ /* */test("S____fwFoo_I_wBar___", new S____fwFoo_I_wBar___ , 4, "mix");
+ /* */test("S____fwFoo_I_wBar__f", new S____fwFoo_I_wBar__f , 4, "mix");
+ // */test("S____fwFoo_I_wBar_I_", new S____fwFoo_I_wBar_I_ , 4, "mix");
+ // */test("S____fwFoo_I_wBar_If", new S____fwFoo_I_wBar_If , 4, "mix");
+ /* */test("S____fwFoo_I_wBarY__", new S____fwFoo_I_wBarY__ , 4, "mix");
+ /* */test("S____fwFoo_I_wBarY_f", new S____fwFoo_I_wBarY_f , 4, "mix");
+ // */test("S____fwFoo_I_wBarYI_", new S____fwFoo_I_wBarYI_ , 4, "mix");
+ // */test("S____fwFoo_I_wBarYIf", new S____fwFoo_I_wBarYIf , 4, "mix");
+ /* */test("S____fwFoo_If ", new S____fwFoo_If , 3, "mix");
+ /* */test("S____fwFoo_IfwBar___", new S____fwFoo_IfwBar___ , 4, "mix");
+ /* */test("S____fwFoo_IfwBar__f", new S____fwFoo_IfwBar__f , 4, "mix");
+ // */test("S____fwFoo_IfwBar_I_", new S____fwFoo_IfwBar_I_ , 4, "mix");
+ // */test("S____fwFoo_IfwBar_If", new S____fwFoo_IfwBar_If , 4, "mix");
+ /* */test("S____fwFoo_IfwBarY__", new S____fwFoo_IfwBarY__ , 4, "mix");
+ /* */test("S____fwFoo_IfwBarY_f", new S____fwFoo_IfwBarY_f , 4, "mix");
+ // */test("S____fwFoo_IfwBarYI_", new S____fwFoo_IfwBarYI_ , 4, "mix");
+ // */test("S____fwFoo_IfwBarYIf", new S____fwFoo_IfwBarYIf , 4, "mix");
+ /* */test("S____fwFooX__ ", new S____fwFooX__ , 3, "mix");
+ /* */test("S____fwFooX__wBar___", new S____fwFooX__wBar___ , 4, "mix");
+ /* */test("S____fwFooX__wBar__f", new S____fwFooX__wBar__f , 4, "mix");
+ /* */test("S____fwFooX__wBar_I_", new S____fwFooX__wBar_I_ , 4, "mix");
+ /* */test("S____fwFooX__wBar_If", new S____fwFooX__wBar_If , 4, "mix");
+ /* */test("S____fwFooX__wBarY__", new S____fwFooX__wBarY__ , 4, "mix");
+ /* */test("S____fwFooX__wBarY_f", new S____fwFooX__wBarY_f , 4, "mix");
+ /* */test("S____fwFooX__wBarYI_", new S____fwFooX__wBarYI_ , 4, "mix");
+ /* */test("S____fwFooX__wBarYIf", new S____fwFooX__wBarYIf , 4, "mix");
+ /* */test("S____fwFooX_f ", new S____fwFooX_f , 3, "mix");
+ /* */test("S____fwFooX_fwBar___", new S____fwFooX_fwBar___ , 4, "mix");
+ /* */test("S____fwFooX_fwBar__f", new S____fwFooX_fwBar__f , 4, "mix");
+ /* */test("S____fwFooX_fwBar_I_", new S____fwFooX_fwBar_I_ , 4, "mix");
+ /* */test("S____fwFooX_fwBar_If", new S____fwFooX_fwBar_If , 4, "mix");
+ /* */test("S____fwFooX_fwBarY__", new S____fwFooX_fwBarY__ , 4, "mix");
+ /* */test("S____fwFooX_fwBarY_f", new S____fwFooX_fwBarY_f , 4, "mix");
+ /* */test("S____fwFooX_fwBarYI_", new S____fwFooX_fwBarYI_ , 4, "mix");
+ /* */test("S____fwFooX_fwBarYIf", new S____fwFooX_fwBarYIf , 4, "mix");
+ /* */test("S____fwFooXI_ ", new S____fwFooXI_ , 3, "mix");
+ /* */test("S____fwFooXI_wBar___", new S____fwFooXI_wBar___ , 4, "mix");
+ /* */test("S____fwFooXI_wBar__f", new S____fwFooXI_wBar__f , 4, "mix");
+ // */test("S____fwFooXI_wBar_I_", new S____fwFooXI_wBar_I_ , 4, "mix");
+ // */test("S____fwFooXI_wBar_If", new S____fwFooXI_wBar_If , 4, "mix");
+ /* */test("S____fwFooXI_wBarY__", new S____fwFooXI_wBarY__ , 4, "mix");
+ /* */test("S____fwFooXI_wBarY_f", new S____fwFooXI_wBarY_f , 4, "mix");
+ // */test("S____fwFooXI_wBarYI_", new S____fwFooXI_wBarYI_ , 4, "mix");
+ // */test("S____fwFooXI_wBarYIf", new S____fwFooXI_wBarYIf , 4, "mix");
+ /* */test("S____fwFooXIf ", new S____fwFooXIf , 3, "mix");
+ /* */test("S____fwFooXIfwBar___", new S____fwFooXIfwBar___ , 4, "mix");
+ /* */test("S____fwFooXIfwBar__f", new S____fwFooXIfwBar__f , 4, "mix");
+ // */test("S____fwFooXIfwBar_I_", new S____fwFooXIfwBar_I_ , 4, "mix");
+ // */test("S____fwFooXIfwBar_If", new S____fwFooXIfwBar_If , 4, "mix");
+ /* */test("S____fwFooXIfwBarY__", new S____fwFooXIfwBarY__ , 4, "mix");
+ /* */test("S____fwFooXIfwBarY_f", new S____fwFooXIfwBarY_f , 4, "mix");
+ // */test("S____fwFooXIfwBarYI_", new S____fwFooXIfwBarYI_ , 4, "mix");
+ // */test("S____fwFooXIfwBarYIf", new S____fwFooXIfwBarYIf , 4, "mix");
+
+ /* */test("S___I_wFoo___ ", new S___I_wFoo___ , 3, "sub");
+ /* */test("S___I_wFoo___wBar___", new S___I_wFoo___wBar___ , 4, "sub");
+ /* */test("S___I_wFoo___wBar__f", new S___I_wFoo___wBar__f , 4, "bar");
+ // */test("S___I_wFoo___wBar_I_", new S___I_wFoo___wBar_I_ , 4, "sub");
+ // */test("S___I_wFoo___wBar_If", new S___I_wFoo___wBar_If , 4, "bar");
+ /* */test("S___I_wFoo___wBarY__", new S___I_wFoo___wBarY__ , 4, "sub");
+ /* */test("S___I_wFoo___wBarY_f", new S___I_wFoo___wBarY_f , 4, "bar");
+ // */test("S___I_wFoo___wBarYI_", new S___I_wFoo___wBarYI_ , 4, "sub");
+ // */test("S___I_wFoo___wBarYIf", new S___I_wFoo___wBarYIf , 4, "bar");
+ /* */test("S___I_wFoo__f ", new S___I_wFoo__f , 3, "foo");
+ /* */test("S___I_wFoo__fwBar___", new S___I_wFoo__fwBar___ , 4, "foo");
+ // */test("S___I_wFoo__fwBar__f", new S___I_wFoo__fwBar__f , 4, "bar");
+ // */test("S___I_wFoo__fwBar_I_", new S___I_wFoo__fwBar_I_ , 4, "foo");
+ // */test("S___I_wFoo__fwBar_If", new S___I_wFoo__fwBar_If , 4, "bar");
+ /* */test("S___I_wFoo__fwBarY__", new S___I_wFoo__fwBarY__ , 4, "foo");
+ // */test("S___I_wFoo__fwBarY_f", new S___I_wFoo__fwBarY_f , 4, "bar");
+ // */test("S___I_wFoo__fwBarYI_", new S___I_wFoo__fwBarYI_ , 4, "foo");
+ // */test("S___I_wFoo__fwBarYIf", new S___I_wFoo__fwBarYIf , 4, "bar");
+ // */test("S___I_wFoo_I_ ", new S___I_wFoo_I_ , 3, "sub");
+ // */test("S___I_wFoo_I_wBar___", new S___I_wFoo_I_wBar___ , 4, "sub");
+ // */test("S___I_wFoo_I_wBar__f", new S___I_wFoo_I_wBar__f , 4, "bar");
+ // */test("S___I_wFoo_I_wBar_I_", new S___I_wFoo_I_wBar_I_ , 4, "sub");
+ // */test("S___I_wFoo_I_wBar_If", new S___I_wFoo_I_wBar_If , 4, "bar");
+ // */test("S___I_wFoo_I_wBarY__", new S___I_wFoo_I_wBarY__ , 4, "sub");
+ // */test("S___I_wFoo_I_wBarY_f", new S___I_wFoo_I_wBarY_f , 4, "bar");
+ // */test("S___I_wFoo_I_wBarYI_", new S___I_wFoo_I_wBarYI_ , 4, "sub");
+ // */test("S___I_wFoo_I_wBarYIf", new S___I_wFoo_I_wBarYIf , 4, "bar");
+ // */test("S___I_wFoo_If ", new S___I_wFoo_If , 3, "foo");
+ // */test("S___I_wFoo_IfwBar___", new S___I_wFoo_IfwBar___ , 4, "foo");
+ // */test("S___I_wFoo_IfwBar__f", new S___I_wFoo_IfwBar__f , 4, "bar");
+ // */test("S___I_wFoo_IfwBar_I_", new S___I_wFoo_IfwBar_I_ , 4, "foo");
+ // */test("S___I_wFoo_IfwBar_If", new S___I_wFoo_IfwBar_If , 4, "bar");
+ // */test("S___I_wFoo_IfwBarY__", new S___I_wFoo_IfwBarY__ , 4, "foo");
+ // */test("S___I_wFoo_IfwBarY_f", new S___I_wFoo_IfwBarY_f , 4, "bar");
+ // */test("S___I_wFoo_IfwBarYI_", new S___I_wFoo_IfwBarYI_ , 4, "foo");
+ // */test("S___I_wFoo_IfwBarYIf", new S___I_wFoo_IfwBarYIf , 4, "bar");
+ /* */test("S___I_wFooX__ ", new S___I_wFooX__ , 3, "sub");
+ /* */test("S___I_wFooX__wBar___", new S___I_wFooX__wBar___ , 4, "sub");
+ /* */test("S___I_wFooX__wBar__f", new S___I_wFooX__wBar__f , 4, "bar");
+ // */test("S___I_wFooX__wBar_I_", new S___I_wFooX__wBar_I_ , 4, "sub");
+ // */test("S___I_wFooX__wBar_If", new S___I_wFooX__wBar_If , 4, "bar");
+ /* */test("S___I_wFooX__wBarY__", new S___I_wFooX__wBarY__ , 4, "sub");
+ /* */test("S___I_wFooX__wBarY_f", new S___I_wFooX__wBarY_f , 4, "bar");
+ // */test("S___I_wFooX__wBarYI_", new S___I_wFooX__wBarYI_ , 4, "sub");
+ // */test("S___I_wFooX__wBarYIf", new S___I_wFooX__wBarYIf , 4, "bar");
+ /* */test("S___I_wFooX_f ", new S___I_wFooX_f , 3, "foo");
+ /* */test("S___I_wFooX_fwBar___", new S___I_wFooX_fwBar___ , 4, "foo");
+ // */test("S___I_wFooX_fwBar__f", new S___I_wFooX_fwBar__f , 4, "bar");
+ // */test("S___I_wFooX_fwBar_I_", new S___I_wFooX_fwBar_I_ , 4, "foo");
+ // */test("S___I_wFooX_fwBar_If", new S___I_wFooX_fwBar_If , 4, "bar");
+ /* */test("S___I_wFooX_fwBarY__", new S___I_wFooX_fwBarY__ , 4, "foo");
+ // */test("S___I_wFooX_fwBarY_f", new S___I_wFooX_fwBarY_f , 4, "bar");
+ // */test("S___I_wFooX_fwBarYI_", new S___I_wFooX_fwBarYI_ , 4, "foo");
+ // */test("S___I_wFooX_fwBarYIf", new S___I_wFooX_fwBarYIf , 4, "bar");
+ // */test("S___I_wFooXI_ ", new S___I_wFooXI_ , 3, "sub");
+ // */test("S___I_wFooXI_wBar___", new S___I_wFooXI_wBar___ , 4, "sub");
+ // */test("S___I_wFooXI_wBar__f", new S___I_wFooXI_wBar__f , 4, "bar");
+ // */test("S___I_wFooXI_wBar_I_", new S___I_wFooXI_wBar_I_ , 4, "sub");
+ // */test("S___I_wFooXI_wBar_If", new S___I_wFooXI_wBar_If , 4, "bar");
+ // */test("S___I_wFooXI_wBarY__", new S___I_wFooXI_wBarY__ , 4, "sub");
+ // */test("S___I_wFooXI_wBarY_f", new S___I_wFooXI_wBarY_f , 4, "bar");
+ // */test("S___I_wFooXI_wBarYI_", new S___I_wFooXI_wBarYI_ , 4, "sub");
+ // */test("S___I_wFooXI_wBarYIf", new S___I_wFooXI_wBarYIf , 4, "bar");
+ // */test("S___I_wFooXIf ", new S___I_wFooXIf , 3, "foo");
+ // */test("S___I_wFooXIfwBar___", new S___I_wFooXIfwBar___ , 4, "foo");
+ // */test("S___I_wFooXIfwBar__f", new S___I_wFooXIfwBar__f , 4, "bar");
+ // */test("S___I_wFooXIfwBar_I_", new S___I_wFooXIfwBar_I_ , 4, "foo");
+ // */test("S___I_wFooXIfwBar_If", new S___I_wFooXIfwBar_If , 4, "bar");
+ // */test("S___I_wFooXIfwBarY__", new S___I_wFooXIfwBarY__ , 4, "foo");
+ // */test("S___I_wFooXIfwBarY_f", new S___I_wFooXIfwBarY_f , 4, "bar");
+ // */test("S___I_wFooXIfwBarYI_", new S___I_wFooXIfwBarYI_ , 4, "foo");
+ // */test("S___I_wFooXIfwBarYIf", new S___I_wFooXIfwBarYIf , 4, "bar");
+
+ /* */test("S___IfwFoo___ ", new S___IfwFoo___ , 3, "mix");
+ /* */test("S___IfwFoo___wBar___", new S___IfwFoo___wBar___ , 4, "mix");
+ /* */test("S___IfwFoo___wBar__f", new S___IfwFoo___wBar__f , 4, "mix");
+ // */test("S___IfwFoo___wBar_I_", new S___IfwFoo___wBar_I_ , 4, "mix");
+ // */test("S___IfwFoo___wBar_If", new S___IfwFoo___wBar_If , 4, "mix");
+ /* */test("S___IfwFoo___wBarY__", new S___IfwFoo___wBarY__ , 4, "mix");
+ /* */test("S___IfwFoo___wBarY_f", new S___IfwFoo___wBarY_f , 4, "mix");
+ // */test("S___IfwFoo___wBarYI_", new S___IfwFoo___wBarYI_ , 4, "mix");
+ // */test("S___IfwFoo___wBarYIf", new S___IfwFoo___wBarYIf , 4, "mix");
+ /* */test("S___IfwFoo__f ", new S___IfwFoo__f , 3, "mix");
+ /* */test("S___IfwFoo__fwBar___", new S___IfwFoo__fwBar___ , 4, "mix");
+ /* */test("S___IfwFoo__fwBar__f", new S___IfwFoo__fwBar__f , 4, "mix");
+ // */test("S___IfwFoo__fwBar_I_", new S___IfwFoo__fwBar_I_ , 4, "mix");
+ // */test("S___IfwFoo__fwBar_If", new S___IfwFoo__fwBar_If , 4, "mix");
+ /* */test("S___IfwFoo__fwBarY__", new S___IfwFoo__fwBarY__ , 4, "mix");
+ /* */test("S___IfwFoo__fwBarY_f", new S___IfwFoo__fwBarY_f , 4, "mix");
+ // */test("S___IfwFoo__fwBarYI_", new S___IfwFoo__fwBarYI_ , 4, "mix");
+ // */test("S___IfwFoo__fwBarYIf", new S___IfwFoo__fwBarYIf , 4, "mix");
+ // */test("S___IfwFoo_I_ ", new S___IfwFoo_I_ , 3, "mix");
+ // */test("S___IfwFoo_I_wBar___", new S___IfwFoo_I_wBar___ , 4, "mix");
+ // */test("S___IfwFoo_I_wBar__f", new S___IfwFoo_I_wBar__f , 4, "mix");
+ // */test("S___IfwFoo_I_wBar_I_", new S___IfwFoo_I_wBar_I_ , 4, "mix");
+ // */test("S___IfwFoo_I_wBar_If", new S___IfwFoo_I_wBar_If , 4, "mix");
+ // */test("S___IfwFoo_I_wBarY__", new S___IfwFoo_I_wBarY__ , 4, "mix");
+ // */test("S___IfwFoo_I_wBarY_f", new S___IfwFoo_I_wBarY_f , 4, "mix");
+ // */test("S___IfwFoo_I_wBarYI_", new S___IfwFoo_I_wBarYI_ , 4, "mix");
+ // */test("S___IfwFoo_I_wBarYIf", new S___IfwFoo_I_wBarYIf , 4, "mix");
+ // */test("S___IfwFoo_If ", new S___IfwFoo_If , 3, "mix");
+ // */test("S___IfwFoo_IfwBar___", new S___IfwFoo_IfwBar___ , 4, "mix");
+ // */test("S___IfwFoo_IfwBar__f", new S___IfwFoo_IfwBar__f , 4, "mix");
+ // */test("S___IfwFoo_IfwBar_I_", new S___IfwFoo_IfwBar_I_ , 4, "mix");
+ // */test("S___IfwFoo_IfwBar_If", new S___IfwFoo_IfwBar_If , 4, "mix");
+ // */test("S___IfwFoo_IfwBarY__", new S___IfwFoo_IfwBarY__ , 4, "mix");
+ // */test("S___IfwFoo_IfwBarY_f", new S___IfwFoo_IfwBarY_f , 4, "mix");
+ // */test("S___IfwFoo_IfwBarYI_", new S___IfwFoo_IfwBarYI_ , 4, "mix");
+ // */test("S___IfwFoo_IfwBarYIf", new S___IfwFoo_IfwBarYIf , 4, "mix");
+ /* */test("S___IfwFooX__ ", new S___IfwFooX__ , 3, "mix");
+ /* */test("S___IfwFooX__wBar___", new S___IfwFooX__wBar___ , 4, "mix");
+ /* */test("S___IfwFooX__wBar__f", new S___IfwFooX__wBar__f , 4, "mix");
+ // */test("S___IfwFooX__wBar_I_", new S___IfwFooX__wBar_I_ , 4, "mix");
+ // */test("S___IfwFooX__wBar_If", new S___IfwFooX__wBar_If , 4, "mix");
+ /* */test("S___IfwFooX__wBarY__", new S___IfwFooX__wBarY__ , 4, "mix");
+ /* */test("S___IfwFooX__wBarY_f", new S___IfwFooX__wBarY_f , 4, "mix");
+ // */test("S___IfwFooX__wBarYI_", new S___IfwFooX__wBarYI_ , 4, "mix");
+ // */test("S___IfwFooX__wBarYIf", new S___IfwFooX__wBarYIf , 4, "mix");
+ /* */test("S___IfwFooX_f ", new S___IfwFooX_f , 3, "mix");
+ /* */test("S___IfwFooX_fwBar___", new S___IfwFooX_fwBar___ , 4, "mix");
+ /* */test("S___IfwFooX_fwBar__f", new S___IfwFooX_fwBar__f , 4, "mix");
+ // */test("S___IfwFooX_fwBar_I_", new S___IfwFooX_fwBar_I_ , 4, "mix");
+ // */test("S___IfwFooX_fwBar_If", new S___IfwFooX_fwBar_If , 4, "mix");
+ /* */test("S___IfwFooX_fwBarY__", new S___IfwFooX_fwBarY__ , 4, "mix");
+ /* */test("S___IfwFooX_fwBarY_f", new S___IfwFooX_fwBarY_f , 4, "mix");
+ // */test("S___IfwFooX_fwBarYI_", new S___IfwFooX_fwBarYI_ , 4, "mix");
+ // */test("S___IfwFooX_fwBarYIf", new S___IfwFooX_fwBarYIf , 4, "mix");
+ // */test("S___IfwFooXI_ ", new S___IfwFooXI_ , 3, "mix");
+ // */test("S___IfwFooXI_wBar___", new S___IfwFooXI_wBar___ , 4, "mix");
+ // */test("S___IfwFooXI_wBar__f", new S___IfwFooXI_wBar__f , 4, "mix");
+ // */test("S___IfwFooXI_wBar_I_", new S___IfwFooXI_wBar_I_ , 4, "mix");
+ // */test("S___IfwFooXI_wBar_If", new S___IfwFooXI_wBar_If , 4, "mix");
+ // */test("S___IfwFooXI_wBarY__", new S___IfwFooXI_wBarY__ , 4, "mix");
+ // */test("S___IfwFooXI_wBarY_f", new S___IfwFooXI_wBarY_f , 4, "mix");
+ // */test("S___IfwFooXI_wBarYI_", new S___IfwFooXI_wBarYI_ , 4, "mix");
+ // */test("S___IfwFooXI_wBarYIf", new S___IfwFooXI_wBarYIf , 4, "mix");
+ // */test("S___IfwFooXIf ", new S___IfwFooXIf , 3, "mix");
+ // */test("S___IfwFooXIfwBar___", new S___IfwFooXIfwBar___ , 4, "mix");
+ // */test("S___IfwFooXIfwBar__f", new S___IfwFooXIfwBar__f , 4, "mix");
+ // */test("S___IfwFooXIfwBar_I_", new S___IfwFooXIfwBar_I_ , 4, "mix");
+ // */test("S___IfwFooXIfwBar_If", new S___IfwFooXIfwBar_If , 4, "mix");
+ // */test("S___IfwFooXIfwBarY__", new S___IfwFooXIfwBarY__ , 4, "mix");
+ // */test("S___IfwFooXIfwBarY_f", new S___IfwFooXIfwBarY_f , 4, "mix");
+ // */test("S___IfwFooXIfwBarYI_", new S___IfwFooXIfwBarYI_ , 4, "mix");
+ // */test("S___IfwFooXIfwBarYIf", new S___IfwFooXIfwBarYIf , 4, "mix");
+
+ /* */test("S__Z__wFoo___ ", new S__Z__wFoo___ , 3, "sub");
+ /* */test("S__Z__wFoo___wBar___", new S__Z__wFoo___wBar___ , 4, "sub");
+ /* */test("S__Z__wFoo___wBar__f", new S__Z__wFoo___wBar__f , 4, "bar");
+ /* */test("S__Z__wFoo___wBar_I_", new S__Z__wFoo___wBar_I_ , 4, "sub");
+ /* */test("S__Z__wFoo___wBar_If", new S__Z__wFoo___wBar_If , 4, "bar");
+ /* */test("S__Z__wFoo___wBarY__", new S__Z__wFoo___wBarY__ , 4, "sub");
+ /* */test("S__Z__wFoo___wBarY_f", new S__Z__wFoo___wBarY_f , 4, "bar");
+ /* */test("S__Z__wFoo___wBarYI_", new S__Z__wFoo___wBarYI_ , 4, "sub");
+ /* */test("S__Z__wFoo___wBarYIf", new S__Z__wFoo___wBarYIf , 4, "bar");
+ /* */test("S__Z__wFoo__f ", new S__Z__wFoo__f , 3, "foo");
+ /* */test("S__Z__wFoo__fwBar___", new S__Z__wFoo__fwBar___ , 4, "foo");
+ // */test("S__Z__wFoo__fwBar__f", new S__Z__wFoo__fwBar__f , 4, "bar");
+ /* */test("S__Z__wFoo__fwBar_I_", new S__Z__wFoo__fwBar_I_ , 4, "foo");
+ // */test("S__Z__wFoo__fwBar_If", new S__Z__wFoo__fwBar_If , 4, "bar");
+ /* */test("S__Z__wFoo__fwBarY__", new S__Z__wFoo__fwBarY__ , 4, "foo");
+ // */test("S__Z__wFoo__fwBarY_f", new S__Z__wFoo__fwBarY_f , 4, "bar");
+ /* */test("S__Z__wFoo__fwBarYI_", new S__Z__wFoo__fwBarYI_ , 4, "foo");
+ // */test("S__Z__wFoo__fwBarYIf", new S__Z__wFoo__fwBarYIf , 4, "bar");
+ /* */test("S__Z__wFoo_I_ ", new S__Z__wFoo_I_ , 3, "sub");
+ /* */test("S__Z__wFoo_I_wBar___", new S__Z__wFoo_I_wBar___ , 4, "sub");
+ /* */test("S__Z__wFoo_I_wBar__f", new S__Z__wFoo_I_wBar__f , 4, "bar");
+ // */test("S__Z__wFoo_I_wBar_I_", new S__Z__wFoo_I_wBar_I_ , 4, "sub");
+ // */test("S__Z__wFoo_I_wBar_If", new S__Z__wFoo_I_wBar_If , 4, "bar");
+ /* */test("S__Z__wFoo_I_wBarY__", new S__Z__wFoo_I_wBarY__ , 4, "sub");
+ /* */test("S__Z__wFoo_I_wBarY_f", new S__Z__wFoo_I_wBarY_f , 4, "bar");
+ // */test("S__Z__wFoo_I_wBarYI_", new S__Z__wFoo_I_wBarYI_ , 4, "sub");
+ // */test("S__Z__wFoo_I_wBarYIf", new S__Z__wFoo_I_wBarYIf , 4, "bar");
+ /* */test("S__Z__wFoo_If ", new S__Z__wFoo_If , 3, "foo");
+ /* */test("S__Z__wFoo_IfwBar___", new S__Z__wFoo_IfwBar___ , 4, "foo");
+ // */test("S__Z__wFoo_IfwBar__f", new S__Z__wFoo_IfwBar__f , 4, "bar");
+ // */test("S__Z__wFoo_IfwBar_I_", new S__Z__wFoo_IfwBar_I_ , 4, "foo");
+ // */test("S__Z__wFoo_IfwBar_If", new S__Z__wFoo_IfwBar_If , 4, "bar");
+ /* */test("S__Z__wFoo_IfwBarY__", new S__Z__wFoo_IfwBarY__ , 4, "foo");
+ // */test("S__Z__wFoo_IfwBarY_f", new S__Z__wFoo_IfwBarY_f , 4, "bar");
+ // */test("S__Z__wFoo_IfwBarYI_", new S__Z__wFoo_IfwBarYI_ , 4, "foo");
+ // */test("S__Z__wFoo_IfwBarYIf", new S__Z__wFoo_IfwBarYIf , 4, "bar");
+ /* */test("S__Z__wFooX__ ", new S__Z__wFooX__ , 3, "sub");
+ /* */test("S__Z__wFooX__wBar___", new S__Z__wFooX__wBar___ , 4, "sub");
+ /* */test("S__Z__wFooX__wBar__f", new S__Z__wFooX__wBar__f , 4, "bar");
+ /* */test("S__Z__wFooX__wBar_I_", new S__Z__wFooX__wBar_I_ , 4, "sub");
+ /* */test("S__Z__wFooX__wBar_If", new S__Z__wFooX__wBar_If , 4, "bar");
+ /* */test("S__Z__wFooX__wBarY__", new S__Z__wFooX__wBarY__ , 4, "sub");
+ /* */test("S__Z__wFooX__wBarY_f", new S__Z__wFooX__wBarY_f , 4, "bar");
+ /* */test("S__Z__wFooX__wBarYI_", new S__Z__wFooX__wBarYI_ , 4, "sub");
+ /* */test("S__Z__wFooX__wBarYIf", new S__Z__wFooX__wBarYIf , 4, "bar");
+ /* */test("S__Z__wFooX_f ", new S__Z__wFooX_f , 3, "foo");
+ /* */test("S__Z__wFooX_fwBar___", new S__Z__wFooX_fwBar___ , 4, "foo");
+ // */test("S__Z__wFooX_fwBar__f", new S__Z__wFooX_fwBar__f , 4, "bar");
+ /* */test("S__Z__wFooX_fwBar_I_", new S__Z__wFooX_fwBar_I_ , 4, "foo");
+ // */test("S__Z__wFooX_fwBar_If", new S__Z__wFooX_fwBar_If , 4, "bar");
+ /* */test("S__Z__wFooX_fwBarY__", new S__Z__wFooX_fwBarY__ , 4, "foo");
+ // */test("S__Z__wFooX_fwBarY_f", new S__Z__wFooX_fwBarY_f , 4, "bar");
+ /* */test("S__Z__wFooX_fwBarYI_", new S__Z__wFooX_fwBarYI_ , 4, "foo");
+ // */test("S__Z__wFooX_fwBarYIf", new S__Z__wFooX_fwBarYIf , 4, "bar");
+ /* */test("S__Z__wFooXI_ ", new S__Z__wFooXI_ , 3, "sub");
+ /* */test("S__Z__wFooXI_wBar___", new S__Z__wFooXI_wBar___ , 4, "sub");
+ /* */test("S__Z__wFooXI_wBar__f", new S__Z__wFooXI_wBar__f , 4, "bar");
+ // */test("S__Z__wFooXI_wBar_I_", new S__Z__wFooXI_wBar_I_ , 4, "sub");
+ // */test("S__Z__wFooXI_wBar_If", new S__Z__wFooXI_wBar_If , 4, "bar");
+ /* */test("S__Z__wFooXI_wBarY__", new S__Z__wFooXI_wBarY__ , 4, "sub");
+ /* */test("S__Z__wFooXI_wBarY_f", new S__Z__wFooXI_wBarY_f , 4, "bar");
+ // */test("S__Z__wFooXI_wBarYI_", new S__Z__wFooXI_wBarYI_ , 4, "sub");
+ // */test("S__Z__wFooXI_wBarYIf", new S__Z__wFooXI_wBarYIf , 4, "bar");
+ /* */test("S__Z__wFooXIf ", new S__Z__wFooXIf , 3, "foo");
+ /* */test("S__Z__wFooXIfwBar___", new S__Z__wFooXIfwBar___ , 4, "foo");
+ // */test("S__Z__wFooXIfwBar__f", new S__Z__wFooXIfwBar__f , 4, "bar");
+ // */test("S__Z__wFooXIfwBar_I_", new S__Z__wFooXIfwBar_I_ , 4, "foo");
+ // */test("S__Z__wFooXIfwBar_If", new S__Z__wFooXIfwBar_If , 4, "bar");
+ /* */test("S__Z__wFooXIfwBarY__", new S__Z__wFooXIfwBarY__ , 4, "foo");
+ // */test("S__Z__wFooXIfwBarY_f", new S__Z__wFooXIfwBarY_f , 4, "bar");
+ // */test("S__Z__wFooXIfwBarYI_", new S__Z__wFooXIfwBarYI_ , 4, "foo");
+ // */test("S__Z__wFooXIfwBarYIf", new S__Z__wFooXIfwBarYIf , 4, "bar");
+
+ /* */test("S__Z_fwFoo___ ", new S__Z_fwFoo___ , 3, "mix");
+ /* */test("S__Z_fwFoo___wBar___", new S__Z_fwFoo___wBar___ , 4, "mix");
+ /* */test("S__Z_fwFoo___wBar__f", new S__Z_fwFoo___wBar__f , 4, "mix");
+ /* */test("S__Z_fwFoo___wBar_I_", new S__Z_fwFoo___wBar_I_ , 4, "mix");
+ /* */test("S__Z_fwFoo___wBar_If", new S__Z_fwFoo___wBar_If , 4, "mix");
+ /* */test("S__Z_fwFoo___wBarY__", new S__Z_fwFoo___wBarY__ , 4, "mix");
+ /* */test("S__Z_fwFoo___wBarY_f", new S__Z_fwFoo___wBarY_f , 4, "mix");
+ /* */test("S__Z_fwFoo___wBarYI_", new S__Z_fwFoo___wBarYI_ , 4, "mix");
+ /* */test("S__Z_fwFoo___wBarYIf", new S__Z_fwFoo___wBarYIf , 4, "mix");
+ /* */test("S__Z_fwFoo__f ", new S__Z_fwFoo__f , 3, "mix");
+ /* */test("S__Z_fwFoo__fwBar___", new S__Z_fwFoo__fwBar___ , 4, "mix");
+ /* */test("S__Z_fwFoo__fwBar__f", new S__Z_fwFoo__fwBar__f , 4, "mix");
+ /* */test("S__Z_fwFoo__fwBar_I_", new S__Z_fwFoo__fwBar_I_ , 4, "mix");
+ /* */test("S__Z_fwFoo__fwBar_If", new S__Z_fwFoo__fwBar_If , 4, "mix");
+ /* */test("S__Z_fwFoo__fwBarY__", new S__Z_fwFoo__fwBarY__ , 4, "mix");
+ /* */test("S__Z_fwFoo__fwBarY_f", new S__Z_fwFoo__fwBarY_f , 4, "mix");
+ /* */test("S__Z_fwFoo__fwBarYI_", new S__Z_fwFoo__fwBarYI_ , 4, "mix");
+ /* */test("S__Z_fwFoo__fwBarYIf", new S__Z_fwFoo__fwBarYIf , 4, "mix");
+ /* */test("S__Z_fwFoo_I_ ", new S__Z_fwFoo_I_ , 3, "mix");
+ /* */test("S__Z_fwFoo_I_wBar___", new S__Z_fwFoo_I_wBar___ , 4, "mix");
+ /* */test("S__Z_fwFoo_I_wBar__f", new S__Z_fwFoo_I_wBar__f , 4, "mix");
+ // */test("S__Z_fwFoo_I_wBar_I_", new S__Z_fwFoo_I_wBar_I_ , 4, "mix");
+ // */test("S__Z_fwFoo_I_wBar_If", new S__Z_fwFoo_I_wBar_If , 4, "mix");
+ /* */test("S__Z_fwFoo_I_wBarY__", new S__Z_fwFoo_I_wBarY__ , 4, "mix");
+ /* */test("S__Z_fwFoo_I_wBarY_f", new S__Z_fwFoo_I_wBarY_f , 4, "mix");
+ // */test("S__Z_fwFoo_I_wBarYI_", new S__Z_fwFoo_I_wBarYI_ , 4, "mix");
+ // */test("S__Z_fwFoo_I_wBarYIf", new S__Z_fwFoo_I_wBarYIf , 4, "mix");
+ /* */test("S__Z_fwFoo_If ", new S__Z_fwFoo_If , 3, "mix");
+ /* */test("S__Z_fwFoo_IfwBar___", new S__Z_fwFoo_IfwBar___ , 4, "mix");
+ /* */test("S__Z_fwFoo_IfwBar__f", new S__Z_fwFoo_IfwBar__f , 4, "mix");
+ // */test("S__Z_fwFoo_IfwBar_I_", new S__Z_fwFoo_IfwBar_I_ , 4, "mix");
+ // */test("S__Z_fwFoo_IfwBar_If", new S__Z_fwFoo_IfwBar_If , 4, "mix");
+ /* */test("S__Z_fwFoo_IfwBarY__", new S__Z_fwFoo_IfwBarY__ , 4, "mix");
+ /* */test("S__Z_fwFoo_IfwBarY_f", new S__Z_fwFoo_IfwBarY_f , 4, "mix");
+ // */test("S__Z_fwFoo_IfwBarYI_", new S__Z_fwFoo_IfwBarYI_ , 4, "mix");
+ // */test("S__Z_fwFoo_IfwBarYIf", new S__Z_fwFoo_IfwBarYIf , 4, "mix");
+ /* */test("S__Z_fwFooX__ ", new S__Z_fwFooX__ , 3, "mix");
+ /* */test("S__Z_fwFooX__wBar___", new S__Z_fwFooX__wBar___ , 4, "mix");
+ /* */test("S__Z_fwFooX__wBar__f", new S__Z_fwFooX__wBar__f , 4, "mix");
+ /* */test("S__Z_fwFooX__wBar_I_", new S__Z_fwFooX__wBar_I_ , 4, "mix");
+ /* */test("S__Z_fwFooX__wBar_If", new S__Z_fwFooX__wBar_If , 4, "mix");
+ /* */test("S__Z_fwFooX__wBarY__", new S__Z_fwFooX__wBarY__ , 4, "mix");
+ /* */test("S__Z_fwFooX__wBarY_f", new S__Z_fwFooX__wBarY_f , 4, "mix");
+ /* */test("S__Z_fwFooX__wBarYI_", new S__Z_fwFooX__wBarYI_ , 4, "mix");
+ /* */test("S__Z_fwFooX__wBarYIf", new S__Z_fwFooX__wBarYIf , 4, "mix");
+ /* */test("S__Z_fwFooX_f ", new S__Z_fwFooX_f , 3, "mix");
+ /* */test("S__Z_fwFooX_fwBar___", new S__Z_fwFooX_fwBar___ , 4, "mix");
+ /* */test("S__Z_fwFooX_fwBar__f", new S__Z_fwFooX_fwBar__f , 4, "mix");
+ /* */test("S__Z_fwFooX_fwBar_I_", new S__Z_fwFooX_fwBar_I_ , 4, "mix");
+ /* */test("S__Z_fwFooX_fwBar_If", new S__Z_fwFooX_fwBar_If , 4, "mix");
+ /* */test("S__Z_fwFooX_fwBarY__", new S__Z_fwFooX_fwBarY__ , 4, "mix");
+ /* */test("S__Z_fwFooX_fwBarY_f", new S__Z_fwFooX_fwBarY_f , 4, "mix");
+ /* */test("S__Z_fwFooX_fwBarYI_", new S__Z_fwFooX_fwBarYI_ , 4, "mix");
+ /* */test("S__Z_fwFooX_fwBarYIf", new S__Z_fwFooX_fwBarYIf , 4, "mix");
+ /* */test("S__Z_fwFooXI_ ", new S__Z_fwFooXI_ , 3, "mix");
+ /* */test("S__Z_fwFooXI_wBar___", new S__Z_fwFooXI_wBar___ , 4, "mix");
+ /* */test("S__Z_fwFooXI_wBar__f", new S__Z_fwFooXI_wBar__f , 4, "mix");
+ // */test("S__Z_fwFooXI_wBar_I_", new S__Z_fwFooXI_wBar_I_ , 4, "mix");
+ // */test("S__Z_fwFooXI_wBar_If", new S__Z_fwFooXI_wBar_If , 4, "mix");
+ /* */test("S__Z_fwFooXI_wBarY__", new S__Z_fwFooXI_wBarY__ , 4, "mix");
+ /* */test("S__Z_fwFooXI_wBarY_f", new S__Z_fwFooXI_wBarY_f , 4, "mix");
+ // */test("S__Z_fwFooXI_wBarYI_", new S__Z_fwFooXI_wBarYI_ , 4, "mix");
+ // */test("S__Z_fwFooXI_wBarYIf", new S__Z_fwFooXI_wBarYIf , 4, "mix");
+ /* */test("S__Z_fwFooXIf ", new S__Z_fwFooXIf , 3, "mix");
+ /* */test("S__Z_fwFooXIfwBar___", new S__Z_fwFooXIfwBar___ , 4, "mix");
+ /* */test("S__Z_fwFooXIfwBar__f", new S__Z_fwFooXIfwBar__f , 4, "mix");
+ // */test("S__Z_fwFooXIfwBar_I_", new S__Z_fwFooXIfwBar_I_ , 4, "mix");
+ // */test("S__Z_fwFooXIfwBar_If", new S__Z_fwFooXIfwBar_If , 4, "mix");
+ /* */test("S__Z_fwFooXIfwBarY__", new S__Z_fwFooXIfwBarY__ , 4, "mix");
+ /* */test("S__Z_fwFooXIfwBarY_f", new S__Z_fwFooXIfwBarY_f , 4, "mix");
+ // */test("S__Z_fwFooXIfwBarYI_", new S__Z_fwFooXIfwBarYI_ , 4, "mix");
+ // */test("S__Z_fwFooXIfwBarYIf", new S__Z_fwFooXIfwBarYIf , 4, "mix");
+
+ /* */test("S__ZI_wFoo___ ", new S__ZI_wFoo___ , 3, "sub");
+ /* */test("S__ZI_wFoo___wBar___", new S__ZI_wFoo___wBar___ , 4, "sub");
+ /* */test("S__ZI_wFoo___wBar__f", new S__ZI_wFoo___wBar__f , 4, "bar");
+ // */test("S__ZI_wFoo___wBar_I_", new S__ZI_wFoo___wBar_I_ , 4, "sub");
+ // */test("S__ZI_wFoo___wBar_If", new S__ZI_wFoo___wBar_If , 4, "bar");
+ /* */test("S__ZI_wFoo___wBarY__", new S__ZI_wFoo___wBarY__ , 4, "sub");
+ /* */test("S__ZI_wFoo___wBarY_f", new S__ZI_wFoo___wBarY_f , 4, "bar");
+ // */test("S__ZI_wFoo___wBarYI_", new S__ZI_wFoo___wBarYI_ , 4, "sub");
+ // */test("S__ZI_wFoo___wBarYIf", new S__ZI_wFoo___wBarYIf , 4, "bar");
+ /* */test("S__ZI_wFoo__f ", new S__ZI_wFoo__f , 3, "foo");
+ /* */test("S__ZI_wFoo__fwBar___", new S__ZI_wFoo__fwBar___ , 4, "foo");
+ // */test("S__ZI_wFoo__fwBar__f", new S__ZI_wFoo__fwBar__f , 4, "bar");
+ // */test("S__ZI_wFoo__fwBar_I_", new S__ZI_wFoo__fwBar_I_ , 4, "foo");
+ // */test("S__ZI_wFoo__fwBar_If", new S__ZI_wFoo__fwBar_If , 4, "bar");
+ /* */test("S__ZI_wFoo__fwBarY__", new S__ZI_wFoo__fwBarY__ , 4, "foo");
+ // */test("S__ZI_wFoo__fwBarY_f", new S__ZI_wFoo__fwBarY_f , 4, "bar");
+ // */test("S__ZI_wFoo__fwBarYI_", new S__ZI_wFoo__fwBarYI_ , 4, "foo");
+ // */test("S__ZI_wFoo__fwBarYIf", new S__ZI_wFoo__fwBarYIf , 4, "bar");
+ // */test("S__ZI_wFoo_I_ ", new S__ZI_wFoo_I_ , 3, "sub");
+ // */test("S__ZI_wFoo_I_wBar___", new S__ZI_wFoo_I_wBar___ , 4, "sub");
+ // */test("S__ZI_wFoo_I_wBar__f", new S__ZI_wFoo_I_wBar__f , 4, "bar");
+ // */test("S__ZI_wFoo_I_wBar_I_", new S__ZI_wFoo_I_wBar_I_ , 4, "sub");
+ // */test("S__ZI_wFoo_I_wBar_If", new S__ZI_wFoo_I_wBar_If , 4, "bar");
+ // */test("S__ZI_wFoo_I_wBarY__", new S__ZI_wFoo_I_wBarY__ , 4, "sub");
+ // */test("S__ZI_wFoo_I_wBarY_f", new S__ZI_wFoo_I_wBarY_f , 4, "bar");
+ // */test("S__ZI_wFoo_I_wBarYI_", new S__ZI_wFoo_I_wBarYI_ , 4, "sub");
+ // */test("S__ZI_wFoo_I_wBarYIf", new S__ZI_wFoo_I_wBarYIf , 4, "bar");
+ // */test("S__ZI_wFoo_If ", new S__ZI_wFoo_If , 3, "foo");
+ // */test("S__ZI_wFoo_IfwBar___", new S__ZI_wFoo_IfwBar___ , 4, "foo");
+ // */test("S__ZI_wFoo_IfwBar__f", new S__ZI_wFoo_IfwBar__f , 4, "bar");
+ // */test("S__ZI_wFoo_IfwBar_I_", new S__ZI_wFoo_IfwBar_I_ , 4, "foo");
+ // */test("S__ZI_wFoo_IfwBar_If", new S__ZI_wFoo_IfwBar_If , 4, "bar");
+ // */test("S__ZI_wFoo_IfwBarY__", new S__ZI_wFoo_IfwBarY__ , 4, "foo");
+ // */test("S__ZI_wFoo_IfwBarY_f", new S__ZI_wFoo_IfwBarY_f , 4, "bar");
+ // */test("S__ZI_wFoo_IfwBarYI_", new S__ZI_wFoo_IfwBarYI_ , 4, "foo");
+ // */test("S__ZI_wFoo_IfwBarYIf", new S__ZI_wFoo_IfwBarYIf , 4, "bar");
+ /* */test("S__ZI_wFooX__ ", new S__ZI_wFooX__ , 3, "sub");
+ /* */test("S__ZI_wFooX__wBar___", new S__ZI_wFooX__wBar___ , 4, "sub");
+ /* */test("S__ZI_wFooX__wBar__f", new S__ZI_wFooX__wBar__f , 4, "bar");
+ // */test("S__ZI_wFooX__wBar_I_", new S__ZI_wFooX__wBar_I_ , 4, "sub");
+ // */test("S__ZI_wFooX__wBar_If", new S__ZI_wFooX__wBar_If , 4, "bar");
+ /* */test("S__ZI_wFooX__wBarY__", new S__ZI_wFooX__wBarY__ , 4, "sub");
+ /* */test("S__ZI_wFooX__wBarY_f", new S__ZI_wFooX__wBarY_f , 4, "bar");
+ // */test("S__ZI_wFooX__wBarYI_", new S__ZI_wFooX__wBarYI_ , 4, "sub");
+ // */test("S__ZI_wFooX__wBarYIf", new S__ZI_wFooX__wBarYIf , 4, "bar");
+ /* */test("S__ZI_wFooX_f ", new S__ZI_wFooX_f , 3, "foo");
+ /* */test("S__ZI_wFooX_fwBar___", new S__ZI_wFooX_fwBar___ , 4, "foo");
+ // */test("S__ZI_wFooX_fwBar__f", new S__ZI_wFooX_fwBar__f , 4, "bar");
+ // */test("S__ZI_wFooX_fwBar_I_", new S__ZI_wFooX_fwBar_I_ , 4, "foo");
+ // */test("S__ZI_wFooX_fwBar_If", new S__ZI_wFooX_fwBar_If , 4, "bar");
+ /* */test("S__ZI_wFooX_fwBarY__", new S__ZI_wFooX_fwBarY__ , 4, "foo");
+ // */test("S__ZI_wFooX_fwBarY_f", new S__ZI_wFooX_fwBarY_f , 4, "bar");
+ // */test("S__ZI_wFooX_fwBarYI_", new S__ZI_wFooX_fwBarYI_ , 4, "foo");
+ // */test("S__ZI_wFooX_fwBarYIf", new S__ZI_wFooX_fwBarYIf , 4, "bar");
+ // */test("S__ZI_wFooXI_ ", new S__ZI_wFooXI_ , 3, "sub");
+ // */test("S__ZI_wFooXI_wBar___", new S__ZI_wFooXI_wBar___ , 4, "sub");
+ // */test("S__ZI_wFooXI_wBar__f", new S__ZI_wFooXI_wBar__f , 4, "bar");
+ // */test("S__ZI_wFooXI_wBar_I_", new S__ZI_wFooXI_wBar_I_ , 4, "sub");
+ // */test("S__ZI_wFooXI_wBar_If", new S__ZI_wFooXI_wBar_If , 4, "bar");
+ // */test("S__ZI_wFooXI_wBarY__", new S__ZI_wFooXI_wBarY__ , 4, "sub");
+ // */test("S__ZI_wFooXI_wBarY_f", new S__ZI_wFooXI_wBarY_f , 4, "bar");
+ // */test("S__ZI_wFooXI_wBarYI_", new S__ZI_wFooXI_wBarYI_ , 4, "sub");
+ // */test("S__ZI_wFooXI_wBarYIf", new S__ZI_wFooXI_wBarYIf , 4, "bar");
+ // */test("S__ZI_wFooXIf ", new S__ZI_wFooXIf , 3, "foo");
+ // */test("S__ZI_wFooXIfwBar___", new S__ZI_wFooXIfwBar___ , 4, "foo");
+ // */test("S__ZI_wFooXIfwBar__f", new S__ZI_wFooXIfwBar__f , 4, "bar");
+ // */test("S__ZI_wFooXIfwBar_I_", new S__ZI_wFooXIfwBar_I_ , 4, "foo");
+ // */test("S__ZI_wFooXIfwBar_If", new S__ZI_wFooXIfwBar_If , 4, "bar");
+ // */test("S__ZI_wFooXIfwBarY__", new S__ZI_wFooXIfwBarY__ , 4, "foo");
+ // */test("S__ZI_wFooXIfwBarY_f", new S__ZI_wFooXIfwBarY_f , 4, "bar");
+ // */test("S__ZI_wFooXIfwBarYI_", new S__ZI_wFooXIfwBarYI_ , 4, "foo");
+ // */test("S__ZI_wFooXIfwBarYIf", new S__ZI_wFooXIfwBarYIf , 4, "bar");
+
+ /* */test("S__ZIfwFoo___ ", new S__ZIfwFoo___ , 3, "mix");
+ /* */test("S__ZIfwFoo___wBar___", new S__ZIfwFoo___wBar___ , 4, "mix");
+ /* */test("S__ZIfwFoo___wBar__f", new S__ZIfwFoo___wBar__f , 4, "mix");
+ // */test("S__ZIfwFoo___wBar_I_", new S__ZIfwFoo___wBar_I_ , 4, "mix");
+ // */test("S__ZIfwFoo___wBar_If", new S__ZIfwFoo___wBar_If , 4, "mix");
+ /* */test("S__ZIfwFoo___wBarY__", new S__ZIfwFoo___wBarY__ , 4, "mix");
+ /* */test("S__ZIfwFoo___wBarY_f", new S__ZIfwFoo___wBarY_f , 4, "mix");
+ // */test("S__ZIfwFoo___wBarYI_", new S__ZIfwFoo___wBarYI_ , 4, "mix");
+ // */test("S__ZIfwFoo___wBarYIf", new S__ZIfwFoo___wBarYIf , 4, "mix");
+ /* */test("S__ZIfwFoo__f ", new S__ZIfwFoo__f , 3, "mix");
+ /* */test("S__ZIfwFoo__fwBar___", new S__ZIfwFoo__fwBar___ , 4, "mix");
+ /* */test("S__ZIfwFoo__fwBar__f", new S__ZIfwFoo__fwBar__f , 4, "mix");
+ // */test("S__ZIfwFoo__fwBar_I_", new S__ZIfwFoo__fwBar_I_ , 4, "mix");
+ // */test("S__ZIfwFoo__fwBar_If", new S__ZIfwFoo__fwBar_If , 4, "mix");
+ /* */test("S__ZIfwFoo__fwBarY__", new S__ZIfwFoo__fwBarY__ , 4, "mix");
+ /* */test("S__ZIfwFoo__fwBarY_f", new S__ZIfwFoo__fwBarY_f , 4, "mix");
+ // */test("S__ZIfwFoo__fwBarYI_", new S__ZIfwFoo__fwBarYI_ , 4, "mix");
+ // */test("S__ZIfwFoo__fwBarYIf", new S__ZIfwFoo__fwBarYIf , 4, "mix");
+ // */test("S__ZIfwFoo_I_ ", new S__ZIfwFoo_I_ , 3, "mix");
+ // */test("S__ZIfwFoo_I_wBar___", new S__ZIfwFoo_I_wBar___ , 4, "mix");
+ // */test("S__ZIfwFoo_I_wBar__f", new S__ZIfwFoo_I_wBar__f , 4, "mix");
+ // */test("S__ZIfwFoo_I_wBar_I_", new S__ZIfwFoo_I_wBar_I_ , 4, "mix");
+ // */test("S__ZIfwFoo_I_wBar_If", new S__ZIfwFoo_I_wBar_If , 4, "mix");
+ // */test("S__ZIfwFoo_I_wBarY__", new S__ZIfwFoo_I_wBarY__ , 4, "mix");
+ // */test("S__ZIfwFoo_I_wBarY_f", new S__ZIfwFoo_I_wBarY_f , 4, "mix");
+ // */test("S__ZIfwFoo_I_wBarYI_", new S__ZIfwFoo_I_wBarYI_ , 4, "mix");
+ // */test("S__ZIfwFoo_I_wBarYIf", new S__ZIfwFoo_I_wBarYIf , 4, "mix");
+ // */test("S__ZIfwFoo_If ", new S__ZIfwFoo_If , 3, "mix");
+ // */test("S__ZIfwFoo_IfwBar___", new S__ZIfwFoo_IfwBar___ , 4, "mix");
+ // */test("S__ZIfwFoo_IfwBar__f", new S__ZIfwFoo_IfwBar__f , 4, "mix");
+ // */test("S__ZIfwFoo_IfwBar_I_", new S__ZIfwFoo_IfwBar_I_ , 4, "mix");
+ // */test("S__ZIfwFoo_IfwBar_If", new S__ZIfwFoo_IfwBar_If , 4, "mix");
+ // */test("S__ZIfwFoo_IfwBarY__", new S__ZIfwFoo_IfwBarY__ , 4, "mix");
+ // */test("S__ZIfwFoo_IfwBarY_f", new S__ZIfwFoo_IfwBarY_f , 4, "mix");
+ // */test("S__ZIfwFoo_IfwBarYI_", new S__ZIfwFoo_IfwBarYI_ , 4, "mix");
+ // */test("S__ZIfwFoo_IfwBarYIf", new S__ZIfwFoo_IfwBarYIf , 4, "mix");
+ /* */test("S__ZIfwFooX__ ", new S__ZIfwFooX__ , 3, "mix");
+ /* */test("S__ZIfwFooX__wBar___", new S__ZIfwFooX__wBar___ , 4, "mix");
+ /* */test("S__ZIfwFooX__wBar__f", new S__ZIfwFooX__wBar__f , 4, "mix");
+ // */test("S__ZIfwFooX__wBar_I_", new S__ZIfwFooX__wBar_I_ , 4, "mix");
+ // */test("S__ZIfwFooX__wBar_If", new S__ZIfwFooX__wBar_If , 4, "mix");
+ /* */test("S__ZIfwFooX__wBarY__", new S__ZIfwFooX__wBarY__ , 4, "mix");
+ /* */test("S__ZIfwFooX__wBarY_f", new S__ZIfwFooX__wBarY_f , 4, "mix");
+ // */test("S__ZIfwFooX__wBarYI_", new S__ZIfwFooX__wBarYI_ , 4, "mix");
+ // */test("S__ZIfwFooX__wBarYIf", new S__ZIfwFooX__wBarYIf , 4, "mix");
+ /* */test("S__ZIfwFooX_f ", new S__ZIfwFooX_f , 3, "mix");
+ /* */test("S__ZIfwFooX_fwBar___", new S__ZIfwFooX_fwBar___ , 4, "mix");
+ /* */test("S__ZIfwFooX_fwBar__f", new S__ZIfwFooX_fwBar__f , 4, "mix");
+ // */test("S__ZIfwFooX_fwBar_I_", new S__ZIfwFooX_fwBar_I_ , 4, "mix");
+ // */test("S__ZIfwFooX_fwBar_If", new S__ZIfwFooX_fwBar_If , 4, "mix");
+ /* */test("S__ZIfwFooX_fwBarY__", new S__ZIfwFooX_fwBarY__ , 4, "mix");
+ /* */test("S__ZIfwFooX_fwBarY_f", new S__ZIfwFooX_fwBarY_f , 4, "mix");
+ // */test("S__ZIfwFooX_fwBarYI_", new S__ZIfwFooX_fwBarYI_ , 4, "mix");
+ // */test("S__ZIfwFooX_fwBarYIf", new S__ZIfwFooX_fwBarYIf , 4, "mix");
+ // */test("S__ZIfwFooXI_ ", new S__ZIfwFooXI_ , 3, "mix");
+ // */test("S__ZIfwFooXI_wBar___", new S__ZIfwFooXI_wBar___ , 4, "mix");
+ // */test("S__ZIfwFooXI_wBar__f", new S__ZIfwFooXI_wBar__f , 4, "mix");
+ // */test("S__ZIfwFooXI_wBar_I_", new S__ZIfwFooXI_wBar_I_ , 4, "mix");
+ // */test("S__ZIfwFooXI_wBar_If", new S__ZIfwFooXI_wBar_If , 4, "mix");
+ // */test("S__ZIfwFooXI_wBarY__", new S__ZIfwFooXI_wBarY__ , 4, "mix");
+ // */test("S__ZIfwFooXI_wBarY_f", new S__ZIfwFooXI_wBarY_f , 4, "mix");
+ // */test("S__ZIfwFooXI_wBarYI_", new S__ZIfwFooXI_wBarYI_ , 4, "mix");
+ // */test("S__ZIfwFooXI_wBarYIf", new S__ZIfwFooXI_wBarYIf , 4, "mix");
+ // */test("S__ZIfwFooXIf ", new S__ZIfwFooXIf , 3, "mix");
+ // */test("S__ZIfwFooXIfwBar___", new S__ZIfwFooXIfwBar___ , 4, "mix");
+ // */test("S__ZIfwFooXIfwBar__f", new S__ZIfwFooXIfwBar__f , 4, "mix");
+ // */test("S__ZIfwFooXIfwBar_I_", new S__ZIfwFooXIfwBar_I_ , 4, "mix");
+ // */test("S__ZIfwFooXIfwBar_If", new S__ZIfwFooXIfwBar_If , 4, "mix");
+ // */test("S__ZIfwFooXIfwBarY__", new S__ZIfwFooXIfwBarY__ , 4, "mix");
+ // */test("S__ZIfwFooXIfwBarY_f", new S__ZIfwFooXIfwBarY_f , 4, "mix");
+ // */test("S__ZIfwFooXIfwBarYI_", new S__ZIfwFooXIfwBarYI_ , 4, "mix");
+ // */test("S__ZIfwFooXIfwBarYIf", new S__ZIfwFooXIfwBarYIf , 4, "mix");
+
+
+
+ /* */test("S_T___eFoo___ ", new S_T___eFoo___ [D], 3, "sub");
+ /* */test("S_T___eFoo___wBar___", new S_T___eFoo___wBar___[D], 4, "sub");
+ /* */test("S_T___eFoo___wBar__f", new S_T___eFoo___wBar__f[D], 4, "bar");
+ /* */test("S_T___eFoo___wBar_I_", new S_T___eFoo___wBar_I_[D], 4, "sub");
+ /* */test("S_T___eFoo___wBar_If", new S_T___eFoo___wBar_If[D], 4, "bar");
+ /* */test("S_T___eFoo___wBarY__", new S_T___eFoo___wBarY__[D], 4, "sub");
+ /* */test("S_T___eFoo___wBarY_f", new S_T___eFoo___wBarY_f[D], 4, "bar");
+ /* */test("S_T___eFoo___wBarYI_", new S_T___eFoo___wBarYI_[D], 4, "sub");
+ /* */test("S_T___eFoo___wBarYIf", new S_T___eFoo___wBarYIf[D], 4, "bar");
+ /* */test("S_T___eFoo__f ", new S_T___eFoo__f [D], 3, "foo");
+ /* */test("S_T___eFoo__fwBar___", new S_T___eFoo__fwBar___[D], 4, "foo");
+ // */test("S_T___eFoo__fwBar__f", new S_T___eFoo__fwBar__f[D], 4, "bar");
+ /* */test("S_T___eFoo__fwBar_I_", new S_T___eFoo__fwBar_I_[D], 4, "foo");
+ // */test("S_T___eFoo__fwBar_If", new S_T___eFoo__fwBar_If[D], 4, "bar");
+ /* */test("S_T___eFoo__fwBarY__", new S_T___eFoo__fwBarY__[D], 4, "foo");
+ // */test("S_T___eFoo__fwBarY_f", new S_T___eFoo__fwBarY_f[D], 4, "bar");
+ /* */test("S_T___eFoo__fwBarYI_", new S_T___eFoo__fwBarYI_[D], 4, "foo");
+ // */test("S_T___eFoo__fwBarYIf", new S_T___eFoo__fwBarYIf[D], 4, "bar");
+ /* */test("S_T___eFoo_I_ ", new S_T___eFoo_I_ [D], 3, "sub");
+ /* */test("S_T___eFoo_I_wBar___", new S_T___eFoo_I_wBar___[D], 4, "sub");
+ /* */test("S_T___eFoo_I_wBar__f", new S_T___eFoo_I_wBar__f[D], 4, "bar");
+ // */test("S_T___eFoo_I_wBar_I_", new S_T___eFoo_I_wBar_I_[D], 4, "sub");
+ // */test("S_T___eFoo_I_wBar_If", new S_T___eFoo_I_wBar_If[D], 4, "bar");
+ /* */test("S_T___eFoo_I_wBarY__", new S_T___eFoo_I_wBarY__[D], 4, "sub");
+ /* */test("S_T___eFoo_I_wBarY_f", new S_T___eFoo_I_wBarY_f[D], 4, "bar");
+ // */test("S_T___eFoo_I_wBarYI_", new S_T___eFoo_I_wBarYI_[D], 4, "sub");
+ // */test("S_T___eFoo_I_wBarYIf", new S_T___eFoo_I_wBarYIf[D], 4, "bar");
+ /* */test("S_T___eFoo_If ", new S_T___eFoo_If [D], 3, "foo");
+ /* */test("S_T___eFoo_IfwBar___", new S_T___eFoo_IfwBar___[D], 4, "foo");
+ // */test("S_T___eFoo_IfwBar__f", new S_T___eFoo_IfwBar__f[D], 4, "bar");
+ // */test("S_T___eFoo_IfwBar_I_", new S_T___eFoo_IfwBar_I_[D], 4, "foo");
+ // */test("S_T___eFoo_IfwBar_If", new S_T___eFoo_IfwBar_If[D], 4, "bar");
+ /* */test("S_T___eFoo_IfwBarY__", new S_T___eFoo_IfwBarY__[D], 4, "foo");
+ // */test("S_T___eFoo_IfwBarY_f", new S_T___eFoo_IfwBarY_f[D], 4, "bar");
+ // */test("S_T___eFoo_IfwBarYI_", new S_T___eFoo_IfwBarYI_[D], 4, "foo");
+ // */test("S_T___eFoo_IfwBarYIf", new S_T___eFoo_IfwBarYIf[D], 4, "bar");
+ /* */test("S_T___eFooX__ ", new S_T___eFooX__ [D], 3, "sub");
+ /* */test("S_T___eFooX__wBar___", new S_T___eFooX__wBar___[D], 4, "sub");
+ /* */test("S_T___eFooX__wBar__f", new S_T___eFooX__wBar__f[D], 4, "bar");
+ /* */test("S_T___eFooX__wBar_I_", new S_T___eFooX__wBar_I_[D], 4, "sub");
+ /* */test("S_T___eFooX__wBar_If", new S_T___eFooX__wBar_If[D], 4, "bar");
+ /* */test("S_T___eFooX__wBarY__", new S_T___eFooX__wBarY__[D], 4, "sub");
+ /* */test("S_T___eFooX__wBarY_f", new S_T___eFooX__wBarY_f[D], 4, "bar");
+ /* */test("S_T___eFooX__wBarYI_", new S_T___eFooX__wBarYI_[D], 4, "sub");
+ /* */test("S_T___eFooX__wBarYIf", new S_T___eFooX__wBarYIf[D], 4, "bar");
+ /* */test("S_T___eFooX_f ", new S_T___eFooX_f [D], 3, "foo");
+ /* */test("S_T___eFooX_fwBar___", new S_T___eFooX_fwBar___[D], 4, "foo");
+ // */test("S_T___eFooX_fwBar__f", new S_T___eFooX_fwBar__f[D], 4, "bar");
+ /* */test("S_T___eFooX_fwBar_I_", new S_T___eFooX_fwBar_I_[D], 4, "foo");
+ // */test("S_T___eFooX_fwBar_If", new S_T___eFooX_fwBar_If[D], 4, "bar");
+ /* */test("S_T___eFooX_fwBarY__", new S_T___eFooX_fwBarY__[D], 4, "foo");
+ // */test("S_T___eFooX_fwBarY_f", new S_T___eFooX_fwBarY_f[D], 4, "bar");
+ /* */test("S_T___eFooX_fwBarYI_", new S_T___eFooX_fwBarYI_[D], 4, "foo");
+ // */test("S_T___eFooX_fwBarYIf", new S_T___eFooX_fwBarYIf[D], 4, "bar");
+ /* */test("S_T___eFooXI_ ", new S_T___eFooXI_ [D], 3, "sub");
+ /* */test("S_T___eFooXI_wBar___", new S_T___eFooXI_wBar___[D], 4, "sub");
+ /* */test("S_T___eFooXI_wBar__f", new S_T___eFooXI_wBar__f[D], 4, "bar");
+ // */test("S_T___eFooXI_wBar_I_", new S_T___eFooXI_wBar_I_[D], 4, "sub");
+ // */test("S_T___eFooXI_wBar_If", new S_T___eFooXI_wBar_If[D], 4, "bar");
+ /* */test("S_T___eFooXI_wBarY__", new S_T___eFooXI_wBarY__[D], 4, "sub");
+ /* */test("S_T___eFooXI_wBarY_f", new S_T___eFooXI_wBarY_f[D], 4, "bar");
+ // */test("S_T___eFooXI_wBarYI_", new S_T___eFooXI_wBarYI_[D], 4, "sub");
+ // */test("S_T___eFooXI_wBarYIf", new S_T___eFooXI_wBarYIf[D], 4, "bar");
+ /* */test("S_T___eFooXIf ", new S_T___eFooXIf [D], 3, "foo");
+ /* */test("S_T___eFooXIfwBar___", new S_T___eFooXIfwBar___[D], 4, "foo");
+ // */test("S_T___eFooXIfwBar__f", new S_T___eFooXIfwBar__f[D], 4, "bar");
+ // */test("S_T___eFooXIfwBar_I_", new S_T___eFooXIfwBar_I_[D], 4, "foo");
+ // */test("S_T___eFooXIfwBar_If", new S_T___eFooXIfwBar_If[D], 4, "bar");
+ /* */test("S_T___eFooXIfwBarY__", new S_T___eFooXIfwBarY__[D], 4, "foo");
+ // */test("S_T___eFooXIfwBarY_f", new S_T___eFooXIfwBarY_f[D], 4, "bar");
+ // */test("S_T___eFooXIfwBarYI_", new S_T___eFooXIfwBarYI_[D], 4, "foo");
+ // */test("S_T___eFooXIfwBarYIf", new S_T___eFooXIfwBarYIf[D], 4, "bar");
+
+ /* */test("S_T__feFoo___ ", new S_T__feFoo___ [D], 3, "mix");
+ /* */test("S_T__feFoo___wBar___", new S_T__feFoo___wBar___[D], 4, "mix");
+ /* */test("S_T__feFoo___wBar__f", new S_T__feFoo___wBar__f[D], 4, "mix");
+ /* */test("S_T__feFoo___wBar_I_", new S_T__feFoo___wBar_I_[D], 4, "mix");
+ /* */test("S_T__feFoo___wBar_If", new S_T__feFoo___wBar_If[D], 4, "mix");
+ /* */test("S_T__feFoo___wBarY__", new S_T__feFoo___wBarY__[D], 4, "mix");
+ /* */test("S_T__feFoo___wBarY_f", new S_T__feFoo___wBarY_f[D], 4, "mix");
+ /* */test("S_T__feFoo___wBarYI_", new S_T__feFoo___wBarYI_[D], 4, "mix");
+ /* */test("S_T__feFoo___wBarYIf", new S_T__feFoo___wBarYIf[D], 4, "mix");
+ /* */test("S_T__feFoo__f ", new S_T__feFoo__f [D], 3, "mix");
+ /* */test("S_T__feFoo__fwBar___", new S_T__feFoo__fwBar___[D], 4, "mix");
+ /* */test("S_T__feFoo__fwBar__f", new S_T__feFoo__fwBar__f[D], 4, "mix");
+ /* */test("S_T__feFoo__fwBar_I_", new S_T__feFoo__fwBar_I_[D], 4, "mix");
+ /* */test("S_T__feFoo__fwBar_If", new S_T__feFoo__fwBar_If[D], 4, "mix");
+ /* */test("S_T__feFoo__fwBarY__", new S_T__feFoo__fwBarY__[D], 4, "mix");
+ /* */test("S_T__feFoo__fwBarY_f", new S_T__feFoo__fwBarY_f[D], 4, "mix");
+ /* */test("S_T__feFoo__fwBarYI_", new S_T__feFoo__fwBarYI_[D], 4, "mix");
+ /* */test("S_T__feFoo__fwBarYIf", new S_T__feFoo__fwBarYIf[D], 4, "mix");
+ /* */test("S_T__feFoo_I_ ", new S_T__feFoo_I_ [D], 3, "mix");
+ /* */test("S_T__feFoo_I_wBar___", new S_T__feFoo_I_wBar___[D], 4, "mix");
+ /* */test("S_T__feFoo_I_wBar__f", new S_T__feFoo_I_wBar__f[D], 4, "mix");
+ // */test("S_T__feFoo_I_wBar_I_", new S_T__feFoo_I_wBar_I_[D], 4, "mix");
+ // */test("S_T__feFoo_I_wBar_If", new S_T__feFoo_I_wBar_If[D], 4, "mix");
+ /* */test("S_T__feFoo_I_wBarY__", new S_T__feFoo_I_wBarY__[D], 4, "mix");
+ /* */test("S_T__feFoo_I_wBarY_f", new S_T__feFoo_I_wBarY_f[D], 4, "mix");
+ // */test("S_T__feFoo_I_wBarYI_", new S_T__feFoo_I_wBarYI_[D], 4, "mix");
+ // */test("S_T__feFoo_I_wBarYIf", new S_T__feFoo_I_wBarYIf[D], 4, "mix");
+ /* */test("S_T__feFoo_If ", new S_T__feFoo_If [D], 3, "mix");
+ /* */test("S_T__feFoo_IfwBar___", new S_T__feFoo_IfwBar___[D], 4, "mix");
+ /* */test("S_T__feFoo_IfwBar__f", new S_T__feFoo_IfwBar__f[D], 4, "mix");
+ // */test("S_T__feFoo_IfwBar_I_", new S_T__feFoo_IfwBar_I_[D], 4, "mix");
+ // */test("S_T__feFoo_IfwBar_If", new S_T__feFoo_IfwBar_If[D], 4, "mix");
+ /* */test("S_T__feFoo_IfwBarY__", new S_T__feFoo_IfwBarY__[D], 4, "mix");
+ /* */test("S_T__feFoo_IfwBarY_f", new S_T__feFoo_IfwBarY_f[D], 4, "mix");
+ // */test("S_T__feFoo_IfwBarYI_", new S_T__feFoo_IfwBarYI_[D], 4, "mix");
+ // */test("S_T__feFoo_IfwBarYIf", new S_T__feFoo_IfwBarYIf[D], 4, "mix");
+ /* */test("S_T__feFooX__ ", new S_T__feFooX__ [D], 3, "mix");
+ /* */test("S_T__feFooX__wBar___", new S_T__feFooX__wBar___[D], 4, "mix");
+ /* */test("S_T__feFooX__wBar__f", new S_T__feFooX__wBar__f[D], 4, "mix");
+ /* */test("S_T__feFooX__wBar_I_", new S_T__feFooX__wBar_I_[D], 4, "mix");
+ /* */test("S_T__feFooX__wBar_If", new S_T__feFooX__wBar_If[D], 4, "mix");
+ /* */test("S_T__feFooX__wBarY__", new S_T__feFooX__wBarY__[D], 4, "mix");
+ /* */test("S_T__feFooX__wBarY_f", new S_T__feFooX__wBarY_f[D], 4, "mix");
+ /* */test("S_T__feFooX__wBarYI_", new S_T__feFooX__wBarYI_[D], 4, "mix");
+ /* */test("S_T__feFooX__wBarYIf", new S_T__feFooX__wBarYIf[D], 4, "mix");
+ /* */test("S_T__feFooX_f ", new S_T__feFooX_f [D], 3, "mix");
+ /* */test("S_T__feFooX_fwBar___", new S_T__feFooX_fwBar___[D], 4, "mix");
+ /* */test("S_T__feFooX_fwBar__f", new S_T__feFooX_fwBar__f[D], 4, "mix");
+ /* */test("S_T__feFooX_fwBar_I_", new S_T__feFooX_fwBar_I_[D], 4, "mix");
+ /* */test("S_T__feFooX_fwBar_If", new S_T__feFooX_fwBar_If[D], 4, "mix");
+ /* */test("S_T__feFooX_fwBarY__", new S_T__feFooX_fwBarY__[D], 4, "mix");
+ /* */test("S_T__feFooX_fwBarY_f", new S_T__feFooX_fwBarY_f[D], 4, "mix");
+ /* */test("S_T__feFooX_fwBarYI_", new S_T__feFooX_fwBarYI_[D], 4, "mix");
+ /* */test("S_T__feFooX_fwBarYIf", new S_T__feFooX_fwBarYIf[D], 4, "mix");
+ /* */test("S_T__feFooXI_ ", new S_T__feFooXI_ [D], 3, "mix");
+ /* */test("S_T__feFooXI_wBar___", new S_T__feFooXI_wBar___[D], 4, "mix");
+ /* */test("S_T__feFooXI_wBar__f", new S_T__feFooXI_wBar__f[D], 4, "mix");
+ // */test("S_T__feFooXI_wBar_I_", new S_T__feFooXI_wBar_I_[D], 4, "mix");
+ // */test("S_T__feFooXI_wBar_If", new S_T__feFooXI_wBar_If[D], 4, "mix");
+ /* */test("S_T__feFooXI_wBarY__", new S_T__feFooXI_wBarY__[D], 4, "mix");
+ /* */test("S_T__feFooXI_wBarY_f", new S_T__feFooXI_wBarY_f[D], 4, "mix");
+ // */test("S_T__feFooXI_wBarYI_", new S_T__feFooXI_wBarYI_[D], 4, "mix");
+ // */test("S_T__feFooXI_wBarYIf", new S_T__feFooXI_wBarYIf[D], 4, "mix");
+ /* */test("S_T__feFooXIf ", new S_T__feFooXIf [D], 3, "mix");
+ /* */test("S_T__feFooXIfwBar___", new S_T__feFooXIfwBar___[D], 4, "mix");
+ /* */test("S_T__feFooXIfwBar__f", new S_T__feFooXIfwBar__f[D], 4, "mix");
+ // */test("S_T__feFooXIfwBar_I_", new S_T__feFooXIfwBar_I_[D], 4, "mix");
+ // */test("S_T__feFooXIfwBar_If", new S_T__feFooXIfwBar_If[D], 4, "mix");
+ /* */test("S_T__feFooXIfwBarY__", new S_T__feFooXIfwBarY__[D], 4, "mix");
+ /* */test("S_T__feFooXIfwBarY_f", new S_T__feFooXIfwBarY_f[D], 4, "mix");
+ // */test("S_T__feFooXIfwBarYI_", new S_T__feFooXIfwBarYI_[D], 4, "mix");
+ // */test("S_T__feFooXIfwBarYIf", new S_T__feFooXIfwBarYIf[D], 4, "mix");
+
+ /* */test("S_T_I_eFoo___ ", new S_T_I_eFoo___ [D], 3, "sub");
+ /* */test("S_T_I_eFoo___wBar___", new S_T_I_eFoo___wBar___[D], 4, "sub");
+ /* */test("S_T_I_eFoo___wBar__f", new S_T_I_eFoo___wBar__f[D], 4, "bar");
+ // */test("S_T_I_eFoo___wBar_I_", new S_T_I_eFoo___wBar_I_[D], 4, "sub");
+ // */test("S_T_I_eFoo___wBar_If", new S_T_I_eFoo___wBar_If[D], 4, "bar");
+ /* */test("S_T_I_eFoo___wBarY__", new S_T_I_eFoo___wBarY__[D], 4, "sub");
+ /* */test("S_T_I_eFoo___wBarY_f", new S_T_I_eFoo___wBarY_f[D], 4, "bar");
+ // */test("S_T_I_eFoo___wBarYI_", new S_T_I_eFoo___wBarYI_[D], 4, "sub");
+ // */test("S_T_I_eFoo___wBarYIf", new S_T_I_eFoo___wBarYIf[D], 4, "bar");
+ /* */test("S_T_I_eFoo__f ", new S_T_I_eFoo__f [D], 3, "foo");
+ /* */test("S_T_I_eFoo__fwBar___", new S_T_I_eFoo__fwBar___[D], 4, "foo");
+ // */test("S_T_I_eFoo__fwBar__f", new S_T_I_eFoo__fwBar__f[D], 4, "bar");
+ // */test("S_T_I_eFoo__fwBar_I_", new S_T_I_eFoo__fwBar_I_[D], 4, "foo");
+ // */test("S_T_I_eFoo__fwBar_If", new S_T_I_eFoo__fwBar_If[D], 4, "bar");
+ /* */test("S_T_I_eFoo__fwBarY__", new S_T_I_eFoo__fwBarY__[D], 4, "foo");
+ // */test("S_T_I_eFoo__fwBarY_f", new S_T_I_eFoo__fwBarY_f[D], 4, "bar");
+ // */test("S_T_I_eFoo__fwBarYI_", new S_T_I_eFoo__fwBarYI_[D], 4, "foo");
+ // */test("S_T_I_eFoo__fwBarYIf", new S_T_I_eFoo__fwBarYIf[D], 4, "bar");
+ // */test("S_T_I_eFoo_I_ ", new S_T_I_eFoo_I_ [D], 3, "sub");
+ // */test("S_T_I_eFoo_I_wBar___", new S_T_I_eFoo_I_wBar___[D], 4, "sub");
+ // */test("S_T_I_eFoo_I_wBar__f", new S_T_I_eFoo_I_wBar__f[D], 4, "bar");
+ // */test("S_T_I_eFoo_I_wBar_I_", new S_T_I_eFoo_I_wBar_I_[D], 4, "sub");
+ // */test("S_T_I_eFoo_I_wBar_If", new S_T_I_eFoo_I_wBar_If[D], 4, "bar");
+ // */test("S_T_I_eFoo_I_wBarY__", new S_T_I_eFoo_I_wBarY__[D], 4, "sub");
+ // */test("S_T_I_eFoo_I_wBarY_f", new S_T_I_eFoo_I_wBarY_f[D], 4, "bar");
+ // */test("S_T_I_eFoo_I_wBarYI_", new S_T_I_eFoo_I_wBarYI_[D], 4, "sub");
+ // */test("S_T_I_eFoo_I_wBarYIf", new S_T_I_eFoo_I_wBarYIf[D], 4, "bar");
+ // */test("S_T_I_eFoo_If ", new S_T_I_eFoo_If [D], 3, "foo");
+ // */test("S_T_I_eFoo_IfwBar___", new S_T_I_eFoo_IfwBar___[D], 4, "foo");
+ // */test("S_T_I_eFoo_IfwBar__f", new S_T_I_eFoo_IfwBar__f[D], 4, "bar");
+ // */test("S_T_I_eFoo_IfwBar_I_", new S_T_I_eFoo_IfwBar_I_[D], 4, "foo");
+ // */test("S_T_I_eFoo_IfwBar_If", new S_T_I_eFoo_IfwBar_If[D], 4, "bar");
+ // */test("S_T_I_eFoo_IfwBarY__", new S_T_I_eFoo_IfwBarY__[D], 4, "foo");
+ // */test("S_T_I_eFoo_IfwBarY_f", new S_T_I_eFoo_IfwBarY_f[D], 4, "bar");
+ // */test("S_T_I_eFoo_IfwBarYI_", new S_T_I_eFoo_IfwBarYI_[D], 4, "foo");
+ // */test("S_T_I_eFoo_IfwBarYIf", new S_T_I_eFoo_IfwBarYIf[D], 4, "bar");
+ /* */test("S_T_I_eFooX__ ", new S_T_I_eFooX__ [D], 3, "sub");
+ /* */test("S_T_I_eFooX__wBar___", new S_T_I_eFooX__wBar___[D], 4, "sub");
+ /* */test("S_T_I_eFooX__wBar__f", new S_T_I_eFooX__wBar__f[D], 4, "bar");
+ // */test("S_T_I_eFooX__wBar_I_", new S_T_I_eFooX__wBar_I_[D], 4, "sub");
+ // */test("S_T_I_eFooX__wBar_If", new S_T_I_eFooX__wBar_If[D], 4, "bar");
+ /* */test("S_T_I_eFooX__wBarY__", new S_T_I_eFooX__wBarY__[D], 4, "sub");
+ /* */test("S_T_I_eFooX__wBarY_f", new S_T_I_eFooX__wBarY_f[D], 4, "bar");
+ // */test("S_T_I_eFooX__wBarYI_", new S_T_I_eFooX__wBarYI_[D], 4, "sub");
+ // */test("S_T_I_eFooX__wBarYIf", new S_T_I_eFooX__wBarYIf[D], 4, "bar");
+ /* */test("S_T_I_eFooX_f ", new S_T_I_eFooX_f [D], 3, "foo");
+ /* */test("S_T_I_eFooX_fwBar___", new S_T_I_eFooX_fwBar___[D], 4, "foo");
+ // */test("S_T_I_eFooX_fwBar__f", new S_T_I_eFooX_fwBar__f[D], 4, "bar");
+ // */test("S_T_I_eFooX_fwBar_I_", new S_T_I_eFooX_fwBar_I_[D], 4, "foo");
+ // */test("S_T_I_eFooX_fwBar_If", new S_T_I_eFooX_fwBar_If[D], 4, "bar");
+ /* */test("S_T_I_eFooX_fwBarY__", new S_T_I_eFooX_fwBarY__[D], 4, "foo");
+ // */test("S_T_I_eFooX_fwBarY_f", new S_T_I_eFooX_fwBarY_f[D], 4, "bar");
+ // */test("S_T_I_eFooX_fwBarYI_", new S_T_I_eFooX_fwBarYI_[D], 4, "foo");
+ // */test("S_T_I_eFooX_fwBarYIf", new S_T_I_eFooX_fwBarYIf[D], 4, "bar");
+ // */test("S_T_I_eFooXI_ ", new S_T_I_eFooXI_ [D], 3, "sub");
+ // */test("S_T_I_eFooXI_wBar___", new S_T_I_eFooXI_wBar___[D], 4, "sub");
+ // */test("S_T_I_eFooXI_wBar__f", new S_T_I_eFooXI_wBar__f[D], 4, "bar");
+ // */test("S_T_I_eFooXI_wBar_I_", new S_T_I_eFooXI_wBar_I_[D], 4, "sub");
+ // */test("S_T_I_eFooXI_wBar_If", new S_T_I_eFooXI_wBar_If[D], 4, "bar");
+ // */test("S_T_I_eFooXI_wBarY__", new S_T_I_eFooXI_wBarY__[D], 4, "sub");
+ // */test("S_T_I_eFooXI_wBarY_f", new S_T_I_eFooXI_wBarY_f[D], 4, "bar");
+ // */test("S_T_I_eFooXI_wBarYI_", new S_T_I_eFooXI_wBarYI_[D], 4, "sub");
+ // */test("S_T_I_eFooXI_wBarYIf", new S_T_I_eFooXI_wBarYIf[D], 4, "bar");
+ // */test("S_T_I_eFooXIf ", new S_T_I_eFooXIf [D], 3, "foo");
+ // */test("S_T_I_eFooXIfwBar___", new S_T_I_eFooXIfwBar___[D], 4, "foo");
+ // */test("S_T_I_eFooXIfwBar__f", new S_T_I_eFooXIfwBar__f[D], 4, "bar");
+ // */test("S_T_I_eFooXIfwBar_I_", new S_T_I_eFooXIfwBar_I_[D], 4, "foo");
+ // */test("S_T_I_eFooXIfwBar_If", new S_T_I_eFooXIfwBar_If[D], 4, "bar");
+ // */test("S_T_I_eFooXIfwBarY__", new S_T_I_eFooXIfwBarY__[D], 4, "foo");
+ // */test("S_T_I_eFooXIfwBarY_f", new S_T_I_eFooXIfwBarY_f[D], 4, "bar");
+ // */test("S_T_I_eFooXIfwBarYI_", new S_T_I_eFooXIfwBarYI_[D], 4, "foo");
+ // */test("S_T_I_eFooXIfwBarYIf", new S_T_I_eFooXIfwBarYIf[D], 4, "bar");
+
+ /* */test("S_T_IfeFoo___ ", new S_T_IfeFoo___ [D], 3, "mix");
+ /* */test("S_T_IfeFoo___wBar___", new S_T_IfeFoo___wBar___[D], 4, "mix");
+ /* */test("S_T_IfeFoo___wBar__f", new S_T_IfeFoo___wBar__f[D], 4, "mix");
+ // */test("S_T_IfeFoo___wBar_I_", new S_T_IfeFoo___wBar_I_[D], 4, "mix");
+ // */test("S_T_IfeFoo___wBar_If", new S_T_IfeFoo___wBar_If[D], 4, "mix");
+ /* */test("S_T_IfeFoo___wBarY__", new S_T_IfeFoo___wBarY__[D], 4, "mix");
+ /* */test("S_T_IfeFoo___wBarY_f", new S_T_IfeFoo___wBarY_f[D], 4, "mix");
+ // */test("S_T_IfeFoo___wBarYI_", new S_T_IfeFoo___wBarYI_[D], 4, "mix");
+ // */test("S_T_IfeFoo___wBarYIf", new S_T_IfeFoo___wBarYIf[D], 4, "mix");
+ /* */test("S_T_IfeFoo__f ", new S_T_IfeFoo__f [D], 3, "mix");
+ /* */test("S_T_IfeFoo__fwBar___", new S_T_IfeFoo__fwBar___[D], 4, "mix");
+ /* */test("S_T_IfeFoo__fwBar__f", new S_T_IfeFoo__fwBar__f[D], 4, "mix");
+ // */test("S_T_IfeFoo__fwBar_I_", new S_T_IfeFoo__fwBar_I_[D], 4, "mix");
+ // */test("S_T_IfeFoo__fwBar_If", new S_T_IfeFoo__fwBar_If[D], 4, "mix");
+ /* */test("S_T_IfeFoo__fwBarY__", new S_T_IfeFoo__fwBarY__[D], 4, "mix");
+ /* */test("S_T_IfeFoo__fwBarY_f", new S_T_IfeFoo__fwBarY_f[D], 4, "mix");
+ // */test("S_T_IfeFoo__fwBarYI_", new S_T_IfeFoo__fwBarYI_[D], 4, "mix");
+ // */test("S_T_IfeFoo__fwBarYIf", new S_T_IfeFoo__fwBarYIf[D], 4, "mix");
+ // */test("S_T_IfeFoo_I_ ", new S_T_IfeFoo_I_ [D], 3, "mix");
+ // */test("S_T_IfeFoo_I_wBar___", new S_T_IfeFoo_I_wBar___[D], 4, "mix");
+ // */test("S_T_IfeFoo_I_wBar__f", new S_T_IfeFoo_I_wBar__f[D], 4, "mix");
+ // */test("S_T_IfeFoo_I_wBar_I_", new S_T_IfeFoo_I_wBar_I_[D], 4, "mix");
+ // */test("S_T_IfeFoo_I_wBar_If", new S_T_IfeFoo_I_wBar_If[D], 4, "mix");
+ // */test("S_T_IfeFoo_I_wBarY__", new S_T_IfeFoo_I_wBarY__[D], 4, "mix");
+ // */test("S_T_IfeFoo_I_wBarY_f", new S_T_IfeFoo_I_wBarY_f[D], 4, "mix");
+ // */test("S_T_IfeFoo_I_wBarYI_", new S_T_IfeFoo_I_wBarYI_[D], 4, "mix");
+ // */test("S_T_IfeFoo_I_wBarYIf", new S_T_IfeFoo_I_wBarYIf[D], 4, "mix");
+ // */test("S_T_IfeFoo_If ", new S_T_IfeFoo_If [D], 3, "mix");
+ // */test("S_T_IfeFoo_IfwBar___", new S_T_IfeFoo_IfwBar___[D], 4, "mix");
+ // */test("S_T_IfeFoo_IfwBar__f", new S_T_IfeFoo_IfwBar__f[D], 4, "mix");
+ // */test("S_T_IfeFoo_IfwBar_I_", new S_T_IfeFoo_IfwBar_I_[D], 4, "mix");
+ // */test("S_T_IfeFoo_IfwBar_If", new S_T_IfeFoo_IfwBar_If[D], 4, "mix");
+ // */test("S_T_IfeFoo_IfwBarY__", new S_T_IfeFoo_IfwBarY__[D], 4, "mix");
+ // */test("S_T_IfeFoo_IfwBarY_f", new S_T_IfeFoo_IfwBarY_f[D], 4, "mix");
+ // */test("S_T_IfeFoo_IfwBarYI_", new S_T_IfeFoo_IfwBarYI_[D], 4, "mix");
+ // */test("S_T_IfeFoo_IfwBarYIf", new S_T_IfeFoo_IfwBarYIf[D], 4, "mix");
+ /* */test("S_T_IfeFooX__ ", new S_T_IfeFooX__ [D], 3, "mix");
+ /* */test("S_T_IfeFooX__wBar___", new S_T_IfeFooX__wBar___[D], 4, "mix");
+ /* */test("S_T_IfeFooX__wBar__f", new S_T_IfeFooX__wBar__f[D], 4, "mix");
+ // */test("S_T_IfeFooX__wBar_I_", new S_T_IfeFooX__wBar_I_[D], 4, "mix");
+ // */test("S_T_IfeFooX__wBar_If", new S_T_IfeFooX__wBar_If[D], 4, "mix");
+ /* */test("S_T_IfeFooX__wBarY__", new S_T_IfeFooX__wBarY__[D], 4, "mix");
+ /* */test("S_T_IfeFooX__wBarY_f", new S_T_IfeFooX__wBarY_f[D], 4, "mix");
+ // */test("S_T_IfeFooX__wBarYI_", new S_T_IfeFooX__wBarYI_[D], 4, "mix");
+ // */test("S_T_IfeFooX__wBarYIf", new S_T_IfeFooX__wBarYIf[D], 4, "mix");
+ /* */test("S_T_IfeFooX_f ", new S_T_IfeFooX_f [D], 3, "mix");
+ /* */test("S_T_IfeFooX_fwBar___", new S_T_IfeFooX_fwBar___[D], 4, "mix");
+ /* */test("S_T_IfeFooX_fwBar__f", new S_T_IfeFooX_fwBar__f[D], 4, "mix");
+ // */test("S_T_IfeFooX_fwBar_I_", new S_T_IfeFooX_fwBar_I_[D], 4, "mix");
+ // */test("S_T_IfeFooX_fwBar_If", new S_T_IfeFooX_fwBar_If[D], 4, "mix");
+ /* */test("S_T_IfeFooX_fwBarY__", new S_T_IfeFooX_fwBarY__[D], 4, "mix");
+ /* */test("S_T_IfeFooX_fwBarY_f", new S_T_IfeFooX_fwBarY_f[D], 4, "mix");
+ // */test("S_T_IfeFooX_fwBarYI_", new S_T_IfeFooX_fwBarYI_[D], 4, "mix");
+ // */test("S_T_IfeFooX_fwBarYIf", new S_T_IfeFooX_fwBarYIf[D], 4, "mix");
+ // */test("S_T_IfeFooXI_ ", new S_T_IfeFooXI_ [D], 3, "mix");
+ // */test("S_T_IfeFooXI_wBar___", new S_T_IfeFooXI_wBar___[D], 4, "mix");
+ // */test("S_T_IfeFooXI_wBar__f", new S_T_IfeFooXI_wBar__f[D], 4, "mix");
+ // */test("S_T_IfeFooXI_wBar_I_", new S_T_IfeFooXI_wBar_I_[D], 4, "mix");
+ // */test("S_T_IfeFooXI_wBar_If", new S_T_IfeFooXI_wBar_If[D], 4, "mix");
+ // */test("S_T_IfeFooXI_wBarY__", new S_T_IfeFooXI_wBarY__[D], 4, "mix");
+ // */test("S_T_IfeFooXI_wBarY_f", new S_T_IfeFooXI_wBarY_f[D], 4, "mix");
+ // */test("S_T_IfeFooXI_wBarYI_", new S_T_IfeFooXI_wBarYI_[D], 4, "mix");
+ // */test("S_T_IfeFooXI_wBarYIf", new S_T_IfeFooXI_wBarYIf[D], 4, "mix");
+ // */test("S_T_IfeFooXIf ", new S_T_IfeFooXIf [D], 3, "mix");
+ // */test("S_T_IfeFooXIfwBar___", new S_T_IfeFooXIfwBar___[D], 4, "mix");
+ // */test("S_T_IfeFooXIfwBar__f", new S_T_IfeFooXIfwBar__f[D], 4, "mix");
+ // */test("S_T_IfeFooXIfwBar_I_", new S_T_IfeFooXIfwBar_I_[D], 4, "mix");
+ // */test("S_T_IfeFooXIfwBar_If", new S_T_IfeFooXIfwBar_If[D], 4, "mix");
+ // */test("S_T_IfeFooXIfwBarY__", new S_T_IfeFooXIfwBarY__[D], 4, "mix");
+ // */test("S_T_IfeFooXIfwBarY_f", new S_T_IfeFooXIfwBarY_f[D], 4, "mix");
+ // */test("S_T_IfeFooXIfwBarYI_", new S_T_IfeFooXIfwBarYI_[D], 4, "mix");
+ // */test("S_T_IfeFooXIfwBarYIf", new S_T_IfeFooXIfwBarYIf[D], 4, "mix");
+
+ /* */test("S_TZ__eFoo___ ", new S_TZ__eFoo___ [D], 3, "sub");
+ /* */test("S_TZ__eFoo___wBar___", new S_TZ__eFoo___wBar___[D], 4, "sub");
+ /* */test("S_TZ__eFoo___wBar__f", new S_TZ__eFoo___wBar__f[D], 4, "bar");
+ /* */test("S_TZ__eFoo___wBar_I_", new S_TZ__eFoo___wBar_I_[D], 4, "sub");
+ /* */test("S_TZ__eFoo___wBar_If", new S_TZ__eFoo___wBar_If[D], 4, "bar");
+ /* */test("S_TZ__eFoo___wBarY__", new S_TZ__eFoo___wBarY__[D], 4, "sub");
+ /* */test("S_TZ__eFoo___wBarY_f", new S_TZ__eFoo___wBarY_f[D], 4, "bar");
+ /* */test("S_TZ__eFoo___wBarYI_", new S_TZ__eFoo___wBarYI_[D], 4, "sub");
+ /* */test("S_TZ__eFoo___wBarYIf", new S_TZ__eFoo___wBarYIf[D], 4, "bar");
+ /* */test("S_TZ__eFoo__f ", new S_TZ__eFoo__f [D], 3, "foo");
+ /* */test("S_TZ__eFoo__fwBar___", new S_TZ__eFoo__fwBar___[D], 4, "foo");
+ // */test("S_TZ__eFoo__fwBar__f", new S_TZ__eFoo__fwBar__f[D], 4, "bar");
+ /* */test("S_TZ__eFoo__fwBar_I_", new S_TZ__eFoo__fwBar_I_[D], 4, "foo");
+ // */test("S_TZ__eFoo__fwBar_If", new S_TZ__eFoo__fwBar_If[D], 4, "bar");
+ /* */test("S_TZ__eFoo__fwBarY__", new S_TZ__eFoo__fwBarY__[D], 4, "foo");
+ // */test("S_TZ__eFoo__fwBarY_f", new S_TZ__eFoo__fwBarY_f[D], 4, "bar");
+ /* */test("S_TZ__eFoo__fwBarYI_", new S_TZ__eFoo__fwBarYI_[D], 4, "foo");
+ // */test("S_TZ__eFoo__fwBarYIf", new S_TZ__eFoo__fwBarYIf[D], 4, "bar");
+ /* */test("S_TZ__eFoo_I_ ", new S_TZ__eFoo_I_ [D], 3, "sub");
+ /* */test("S_TZ__eFoo_I_wBar___", new S_TZ__eFoo_I_wBar___[D], 4, "sub");
+ /* */test("S_TZ__eFoo_I_wBar__f", new S_TZ__eFoo_I_wBar__f[D], 4, "bar");
+ // */test("S_TZ__eFoo_I_wBar_I_", new S_TZ__eFoo_I_wBar_I_[D], 4, "sub");
+ // */test("S_TZ__eFoo_I_wBar_If", new S_TZ__eFoo_I_wBar_If[D], 4, "bar");
+ /* */test("S_TZ__eFoo_I_wBarY__", new S_TZ__eFoo_I_wBarY__[D], 4, "sub");
+ /* */test("S_TZ__eFoo_I_wBarY_f", new S_TZ__eFoo_I_wBarY_f[D], 4, "bar");
+ // */test("S_TZ__eFoo_I_wBarYI_", new S_TZ__eFoo_I_wBarYI_[D], 4, "sub");
+ // */test("S_TZ__eFoo_I_wBarYIf", new S_TZ__eFoo_I_wBarYIf[D], 4, "bar");
+ /* */test("S_TZ__eFoo_If ", new S_TZ__eFoo_If [D], 3, "foo");
+ /* */test("S_TZ__eFoo_IfwBar___", new S_TZ__eFoo_IfwBar___[D], 4, "foo");
+ // */test("S_TZ__eFoo_IfwBar__f", new S_TZ__eFoo_IfwBar__f[D], 4, "bar");
+ // */test("S_TZ__eFoo_IfwBar_I_", new S_TZ__eFoo_IfwBar_I_[D], 4, "foo");
+ // */test("S_TZ__eFoo_IfwBar_If", new S_TZ__eFoo_IfwBar_If[D], 4, "bar");
+ /* */test("S_TZ__eFoo_IfwBarY__", new S_TZ__eFoo_IfwBarY__[D], 4, "foo");
+ // */test("S_TZ__eFoo_IfwBarY_f", new S_TZ__eFoo_IfwBarY_f[D], 4, "bar");
+ // */test("S_TZ__eFoo_IfwBarYI_", new S_TZ__eFoo_IfwBarYI_[D], 4, "foo");
+ // */test("S_TZ__eFoo_IfwBarYIf", new S_TZ__eFoo_IfwBarYIf[D], 4, "bar");
+ /* */test("S_TZ__eFooX__ ", new S_TZ__eFooX__ [D], 3, "sub");
+ /* */test("S_TZ__eFooX__wBar___", new S_TZ__eFooX__wBar___[D], 4, "sub");
+ /* */test("S_TZ__eFooX__wBar__f", new S_TZ__eFooX__wBar__f[D], 4, "bar");
+ /* */test("S_TZ__eFooX__wBar_I_", new S_TZ__eFooX__wBar_I_[D], 4, "sub");
+ /* */test("S_TZ__eFooX__wBar_If", new S_TZ__eFooX__wBar_If[D], 4, "bar");
+ /* */test("S_TZ__eFooX__wBarY__", new S_TZ__eFooX__wBarY__[D], 4, "sub");
+ /* */test("S_TZ__eFooX__wBarY_f", new S_TZ__eFooX__wBarY_f[D], 4, "bar");
+ /* */test("S_TZ__eFooX__wBarYI_", new S_TZ__eFooX__wBarYI_[D], 4, "sub");
+ /* */test("S_TZ__eFooX__wBarYIf", new S_TZ__eFooX__wBarYIf[D], 4, "bar");
+ /* */test("S_TZ__eFooX_f ", new S_TZ__eFooX_f [D], 3, "foo");
+ /* */test("S_TZ__eFooX_fwBar___", new S_TZ__eFooX_fwBar___[D], 4, "foo");
+ // */test("S_TZ__eFooX_fwBar__f", new S_TZ__eFooX_fwBar__f[D], 4, "bar");
+ /* */test("S_TZ__eFooX_fwBar_I_", new S_TZ__eFooX_fwBar_I_[D], 4, "foo");
+ // */test("S_TZ__eFooX_fwBar_If", new S_TZ__eFooX_fwBar_If[D], 4, "bar");
+ /* */test("S_TZ__eFooX_fwBarY__", new S_TZ__eFooX_fwBarY__[D], 4, "foo");
+ // */test("S_TZ__eFooX_fwBarY_f", new S_TZ__eFooX_fwBarY_f[D], 4, "bar");
+ /* */test("S_TZ__eFooX_fwBarYI_", new S_TZ__eFooX_fwBarYI_[D], 4, "foo");
+ // */test("S_TZ__eFooX_fwBarYIf", new S_TZ__eFooX_fwBarYIf[D], 4, "bar");
+ /* */test("S_TZ__eFooXI_ ", new S_TZ__eFooXI_ [D], 3, "sub");
+ /* */test("S_TZ__eFooXI_wBar___", new S_TZ__eFooXI_wBar___[D], 4, "sub");
+ /* */test("S_TZ__eFooXI_wBar__f", new S_TZ__eFooXI_wBar__f[D], 4, "bar");
+ // */test("S_TZ__eFooXI_wBar_I_", new S_TZ__eFooXI_wBar_I_[D], 4, "sub");
+ // */test("S_TZ__eFooXI_wBar_If", new S_TZ__eFooXI_wBar_If[D], 4, "bar");
+ /* */test("S_TZ__eFooXI_wBarY__", new S_TZ__eFooXI_wBarY__[D], 4, "sub");
+ /* */test("S_TZ__eFooXI_wBarY_f", new S_TZ__eFooXI_wBarY_f[D], 4, "bar");
+ // */test("S_TZ__eFooXI_wBarYI_", new S_TZ__eFooXI_wBarYI_[D], 4, "sub");
+ // */test("S_TZ__eFooXI_wBarYIf", new S_TZ__eFooXI_wBarYIf[D], 4, "bar");
+ /* */test("S_TZ__eFooXIf ", new S_TZ__eFooXIf [D], 3, "foo");
+ /* */test("S_TZ__eFooXIfwBar___", new S_TZ__eFooXIfwBar___[D], 4, "foo");
+ // */test("S_TZ__eFooXIfwBar__f", new S_TZ__eFooXIfwBar__f[D], 4, "bar");
+ // */test("S_TZ__eFooXIfwBar_I_", new S_TZ__eFooXIfwBar_I_[D], 4, "foo");
+ // */test("S_TZ__eFooXIfwBar_If", new S_TZ__eFooXIfwBar_If[D], 4, "bar");
+ /* */test("S_TZ__eFooXIfwBarY__", new S_TZ__eFooXIfwBarY__[D], 4, "foo");
+ // */test("S_TZ__eFooXIfwBarY_f", new S_TZ__eFooXIfwBarY_f[D], 4, "bar");
+ // */test("S_TZ__eFooXIfwBarYI_", new S_TZ__eFooXIfwBarYI_[D], 4, "foo");
+ // */test("S_TZ__eFooXIfwBarYIf", new S_TZ__eFooXIfwBarYIf[D], 4, "bar");
+
+ /* */test("S_TZ_feFoo___ ", new S_TZ_feFoo___ [D], 3, "mix");
+ /* */test("S_TZ_feFoo___wBar___", new S_TZ_feFoo___wBar___[D], 4, "mix");
+ /* */test("S_TZ_feFoo___wBar__f", new S_TZ_feFoo___wBar__f[D], 4, "mix");
+ /* */test("S_TZ_feFoo___wBar_I_", new S_TZ_feFoo___wBar_I_[D], 4, "mix");
+ /* */test("S_TZ_feFoo___wBar_If", new S_TZ_feFoo___wBar_If[D], 4, "mix");
+ /* */test("S_TZ_feFoo___wBarY__", new S_TZ_feFoo___wBarY__[D], 4, "mix");
+ /* */test("S_TZ_feFoo___wBarY_f", new S_TZ_feFoo___wBarY_f[D], 4, "mix");
+ /* */test("S_TZ_feFoo___wBarYI_", new S_TZ_feFoo___wBarYI_[D], 4, "mix");
+ /* */test("S_TZ_feFoo___wBarYIf", new S_TZ_feFoo___wBarYIf[D], 4, "mix");
+ /* */test("S_TZ_feFoo__f ", new S_TZ_feFoo__f [D], 3, "mix");
+ /* */test("S_TZ_feFoo__fwBar___", new S_TZ_feFoo__fwBar___[D], 4, "mix");
+ /* */test("S_TZ_feFoo__fwBar__f", new S_TZ_feFoo__fwBar__f[D], 4, "mix");
+ /* */test("S_TZ_feFoo__fwBar_I_", new S_TZ_feFoo__fwBar_I_[D], 4, "mix");
+ /* */test("S_TZ_feFoo__fwBar_If", new S_TZ_feFoo__fwBar_If[D], 4, "mix");
+ /* */test("S_TZ_feFoo__fwBarY__", new S_TZ_feFoo__fwBarY__[D], 4, "mix");
+ /* */test("S_TZ_feFoo__fwBarY_f", new S_TZ_feFoo__fwBarY_f[D], 4, "mix");
+ /* */test("S_TZ_feFoo__fwBarYI_", new S_TZ_feFoo__fwBarYI_[D], 4, "mix");
+ /* */test("S_TZ_feFoo__fwBarYIf", new S_TZ_feFoo__fwBarYIf[D], 4, "mix");
+ /* */test("S_TZ_feFoo_I_ ", new S_TZ_feFoo_I_ [D], 3, "mix");
+ /* */test("S_TZ_feFoo_I_wBar___", new S_TZ_feFoo_I_wBar___[D], 4, "mix");
+ /* */test("S_TZ_feFoo_I_wBar__f", new S_TZ_feFoo_I_wBar__f[D], 4, "mix");
+ // */test("S_TZ_feFoo_I_wBar_I_", new S_TZ_feFoo_I_wBar_I_[D], 4, "mix");
+ // */test("S_TZ_feFoo_I_wBar_If", new S_TZ_feFoo_I_wBar_If[D], 4, "mix");
+ /* */test("S_TZ_feFoo_I_wBarY__", new S_TZ_feFoo_I_wBarY__[D], 4, "mix");
+ /* */test("S_TZ_feFoo_I_wBarY_f", new S_TZ_feFoo_I_wBarY_f[D], 4, "mix");
+ // */test("S_TZ_feFoo_I_wBarYI_", new S_TZ_feFoo_I_wBarYI_[D], 4, "mix");
+ // */test("S_TZ_feFoo_I_wBarYIf", new S_TZ_feFoo_I_wBarYIf[D], 4, "mix");
+ /* */test("S_TZ_feFoo_If ", new S_TZ_feFoo_If [D], 3, "mix");
+ /* */test("S_TZ_feFoo_IfwBar___", new S_TZ_feFoo_IfwBar___[D], 4, "mix");
+ /* */test("S_TZ_feFoo_IfwBar__f", new S_TZ_feFoo_IfwBar__f[D], 4, "mix");
+ // */test("S_TZ_feFoo_IfwBar_I_", new S_TZ_feFoo_IfwBar_I_[D], 4, "mix");
+ // */test("S_TZ_feFoo_IfwBar_If", new S_TZ_feFoo_IfwBar_If[D], 4, "mix");
+ /* */test("S_TZ_feFoo_IfwBarY__", new S_TZ_feFoo_IfwBarY__[D], 4, "mix");
+ /* */test("S_TZ_feFoo_IfwBarY_f", new S_TZ_feFoo_IfwBarY_f[D], 4, "mix");
+ // */test("S_TZ_feFoo_IfwBarYI_", new S_TZ_feFoo_IfwBarYI_[D], 4, "mix");
+ // */test("S_TZ_feFoo_IfwBarYIf", new S_TZ_feFoo_IfwBarYIf[D], 4, "mix");
+ /* */test("S_TZ_feFooX__ ", new S_TZ_feFooX__ [D], 3, "mix");
+ /* */test("S_TZ_feFooX__wBar___", new S_TZ_feFooX__wBar___[D], 4, "mix");
+ /* */test("S_TZ_feFooX__wBar__f", new S_TZ_feFooX__wBar__f[D], 4, "mix");
+ /* */test("S_TZ_feFooX__wBar_I_", new S_TZ_feFooX__wBar_I_[D], 4, "mix");
+ /* */test("S_TZ_feFooX__wBar_If", new S_TZ_feFooX__wBar_If[D], 4, "mix");
+ /* */test("S_TZ_feFooX__wBarY__", new S_TZ_feFooX__wBarY__[D], 4, "mix");
+ /* */test("S_TZ_feFooX__wBarY_f", new S_TZ_feFooX__wBarY_f[D], 4, "mix");
+ /* */test("S_TZ_feFooX__wBarYI_", new S_TZ_feFooX__wBarYI_[D], 4, "mix");
+ /* */test("S_TZ_feFooX__wBarYIf", new S_TZ_feFooX__wBarYIf[D], 4, "mix");
+ /* */test("S_TZ_feFooX_f ", new S_TZ_feFooX_f [D], 3, "mix");
+ /* */test("S_TZ_feFooX_fwBar___", new S_TZ_feFooX_fwBar___[D], 4, "mix");
+ /* */test("S_TZ_feFooX_fwBar__f", new S_TZ_feFooX_fwBar__f[D], 4, "mix");
+ /* */test("S_TZ_feFooX_fwBar_I_", new S_TZ_feFooX_fwBar_I_[D], 4, "mix");
+ /* */test("S_TZ_feFooX_fwBar_If", new S_TZ_feFooX_fwBar_If[D], 4, "mix");
+ /* */test("S_TZ_feFooX_fwBarY__", new S_TZ_feFooX_fwBarY__[D], 4, "mix");
+ /* */test("S_TZ_feFooX_fwBarY_f", new S_TZ_feFooX_fwBarY_f[D], 4, "mix");
+ /* */test("S_TZ_feFooX_fwBarYI_", new S_TZ_feFooX_fwBarYI_[D], 4, "mix");
+ /* */test("S_TZ_feFooX_fwBarYIf", new S_TZ_feFooX_fwBarYIf[D], 4, "mix");
+ /* */test("S_TZ_feFooXI_ ", new S_TZ_feFooXI_ [D], 3, "mix");
+ /* */test("S_TZ_feFooXI_wBar___", new S_TZ_feFooXI_wBar___[D], 4, "mix");
+ /* */test("S_TZ_feFooXI_wBar__f", new S_TZ_feFooXI_wBar__f[D], 4, "mix");
+ // */test("S_TZ_feFooXI_wBar_I_", new S_TZ_feFooXI_wBar_I_[D], 4, "mix");
+ // */test("S_TZ_feFooXI_wBar_If", new S_TZ_feFooXI_wBar_If[D], 4, "mix");
+ /* */test("S_TZ_feFooXI_wBarY__", new S_TZ_feFooXI_wBarY__[D], 4, "mix");
+ /* */test("S_TZ_feFooXI_wBarY_f", new S_TZ_feFooXI_wBarY_f[D], 4, "mix");
+ // */test("S_TZ_feFooXI_wBarYI_", new S_TZ_feFooXI_wBarYI_[D], 4, "mix");
+ // */test("S_TZ_feFooXI_wBarYIf", new S_TZ_feFooXI_wBarYIf[D], 4, "mix");
+ /* */test("S_TZ_feFooXIf ", new S_TZ_feFooXIf [D], 3, "mix");
+ /* */test("S_TZ_feFooXIfwBar___", new S_TZ_feFooXIfwBar___[D], 4, "mix");
+ /* */test("S_TZ_feFooXIfwBar__f", new S_TZ_feFooXIfwBar__f[D], 4, "mix");
+ // */test("S_TZ_feFooXIfwBar_I_", new S_TZ_feFooXIfwBar_I_[D], 4, "mix");
+ // */test("S_TZ_feFooXIfwBar_If", new S_TZ_feFooXIfwBar_If[D], 4, "mix");
+ /* */test("S_TZ_feFooXIfwBarY__", new S_TZ_feFooXIfwBarY__[D], 4, "mix");
+ /* */test("S_TZ_feFooXIfwBarY_f", new S_TZ_feFooXIfwBarY_f[D], 4, "mix");
+ // */test("S_TZ_feFooXIfwBarYI_", new S_TZ_feFooXIfwBarYI_[D], 4, "mix");
+ // */test("S_TZ_feFooXIfwBarYIf", new S_TZ_feFooXIfwBarYIf[D], 4, "mix");
+
+ /* */test("S_TZI_eFoo___ ", new S_TZI_eFoo___ [D], 3, "sub");
+ /* */test("S_TZI_eFoo___wBar___", new S_TZI_eFoo___wBar___[D], 4, "sub");
+ /* */test("S_TZI_eFoo___wBar__f", new S_TZI_eFoo___wBar__f[D], 4, "bar");
+ // */test("S_TZI_eFoo___wBar_I_", new S_TZI_eFoo___wBar_I_[D], 4, "sub");
+ // */test("S_TZI_eFoo___wBar_If", new S_TZI_eFoo___wBar_If[D], 4, "bar");
+ /* */test("S_TZI_eFoo___wBarY__", new S_TZI_eFoo___wBarY__[D], 4, "sub");
+ /* */test("S_TZI_eFoo___wBarY_f", new S_TZI_eFoo___wBarY_f[D], 4, "bar");
+ // */test("S_TZI_eFoo___wBarYI_", new S_TZI_eFoo___wBarYI_[D], 4, "sub");
+ // */test("S_TZI_eFoo___wBarYIf", new S_TZI_eFoo___wBarYIf[D], 4, "bar");
+ /* */test("S_TZI_eFoo__f ", new S_TZI_eFoo__f [D], 3, "foo");
+ /* */test("S_TZI_eFoo__fwBar___", new S_TZI_eFoo__fwBar___[D], 4, "foo");
+ // */test("S_TZI_eFoo__fwBar__f", new S_TZI_eFoo__fwBar__f[D], 4, "bar");
+ // */test("S_TZI_eFoo__fwBar_I_", new S_TZI_eFoo__fwBar_I_[D], 4, "foo");
+ // */test("S_TZI_eFoo__fwBar_If", new S_TZI_eFoo__fwBar_If[D], 4, "bar");
+ /* */test("S_TZI_eFoo__fwBarY__", new S_TZI_eFoo__fwBarY__[D], 4, "foo");
+ // */test("S_TZI_eFoo__fwBarY_f", new S_TZI_eFoo__fwBarY_f[D], 4, "bar");
+ // */test("S_TZI_eFoo__fwBarYI_", new S_TZI_eFoo__fwBarYI_[D], 4, "foo");
+ // */test("S_TZI_eFoo__fwBarYIf", new S_TZI_eFoo__fwBarYIf[D], 4, "bar");
+ // */test("S_TZI_eFoo_I_ ", new S_TZI_eFoo_I_ [D], 3, "sub");
+ // */test("S_TZI_eFoo_I_wBar___", new S_TZI_eFoo_I_wBar___[D], 4, "sub");
+ // */test("S_TZI_eFoo_I_wBar__f", new S_TZI_eFoo_I_wBar__f[D], 4, "bar");
+ // */test("S_TZI_eFoo_I_wBar_I_", new S_TZI_eFoo_I_wBar_I_[D], 4, "sub");
+ // */test("S_TZI_eFoo_I_wBar_If", new S_TZI_eFoo_I_wBar_If[D], 4, "bar");
+ // */test("S_TZI_eFoo_I_wBarY__", new S_TZI_eFoo_I_wBarY__[D], 4, "sub");
+ // */test("S_TZI_eFoo_I_wBarY_f", new S_TZI_eFoo_I_wBarY_f[D], 4, "bar");
+ // */test("S_TZI_eFoo_I_wBarYI_", new S_TZI_eFoo_I_wBarYI_[D], 4, "sub");
+ // */test("S_TZI_eFoo_I_wBarYIf", new S_TZI_eFoo_I_wBarYIf[D], 4, "bar");
+ // */test("S_TZI_eFoo_If ", new S_TZI_eFoo_If [D], 3, "foo");
+ // */test("S_TZI_eFoo_IfwBar___", new S_TZI_eFoo_IfwBar___[D], 4, "foo");
+ // */test("S_TZI_eFoo_IfwBar__f", new S_TZI_eFoo_IfwBar__f[D], 4, "bar");
+ // */test("S_TZI_eFoo_IfwBar_I_", new S_TZI_eFoo_IfwBar_I_[D], 4, "foo");
+ // */test("S_TZI_eFoo_IfwBar_If", new S_TZI_eFoo_IfwBar_If[D], 4, "bar");
+ // */test("S_TZI_eFoo_IfwBarY__", new S_TZI_eFoo_IfwBarY__[D], 4, "foo");
+ // */test("S_TZI_eFoo_IfwBarY_f", new S_TZI_eFoo_IfwBarY_f[D], 4, "bar");
+ // */test("S_TZI_eFoo_IfwBarYI_", new S_TZI_eFoo_IfwBarYI_[D], 4, "foo");
+ // */test("S_TZI_eFoo_IfwBarYIf", new S_TZI_eFoo_IfwBarYIf[D], 4, "bar");
+ /* */test("S_TZI_eFooX__ ", new S_TZI_eFooX__ [D], 3, "sub");
+ /* */test("S_TZI_eFooX__wBar___", new S_TZI_eFooX__wBar___[D], 4, "sub");
+ /* */test("S_TZI_eFooX__wBar__f", new S_TZI_eFooX__wBar__f[D], 4, "bar");
+ // */test("S_TZI_eFooX__wBar_I_", new S_TZI_eFooX__wBar_I_[D], 4, "sub");
+ // */test("S_TZI_eFooX__wBar_If", new S_TZI_eFooX__wBar_If[D], 4, "bar");
+ /* */test("S_TZI_eFooX__wBarY__", new S_TZI_eFooX__wBarY__[D], 4, "sub");
+ /* */test("S_TZI_eFooX__wBarY_f", new S_TZI_eFooX__wBarY_f[D], 4, "bar");
+ // */test("S_TZI_eFooX__wBarYI_", new S_TZI_eFooX__wBarYI_[D], 4, "sub");
+ // */test("S_TZI_eFooX__wBarYIf", new S_TZI_eFooX__wBarYIf[D], 4, "bar");
+ /* */test("S_TZI_eFooX_f ", new S_TZI_eFooX_f [D], 3, "foo");
+ /* */test("S_TZI_eFooX_fwBar___", new S_TZI_eFooX_fwBar___[D], 4, "foo");
+ // */test("S_TZI_eFooX_fwBar__f", new S_TZI_eFooX_fwBar__f[D], 4, "bar");
+ // */test("S_TZI_eFooX_fwBar_I_", new S_TZI_eFooX_fwBar_I_[D], 4, "foo");
+ // */test("S_TZI_eFooX_fwBar_If", new S_TZI_eFooX_fwBar_If[D], 4, "bar");
+ /* */test("S_TZI_eFooX_fwBarY__", new S_TZI_eFooX_fwBarY__[D], 4, "foo");
+ // */test("S_TZI_eFooX_fwBarY_f", new S_TZI_eFooX_fwBarY_f[D], 4, "bar");
+ // */test("S_TZI_eFooX_fwBarYI_", new S_TZI_eFooX_fwBarYI_[D], 4, "foo");
+ // */test("S_TZI_eFooX_fwBarYIf", new S_TZI_eFooX_fwBarYIf[D], 4, "bar");
+ // */test("S_TZI_eFooXI_ ", new S_TZI_eFooXI_ [D], 3, "sub");
+ // */test("S_TZI_eFooXI_wBar___", new S_TZI_eFooXI_wBar___[D], 4, "sub");
+ // */test("S_TZI_eFooXI_wBar__f", new S_TZI_eFooXI_wBar__f[D], 4, "bar");
+ // */test("S_TZI_eFooXI_wBar_I_", new S_TZI_eFooXI_wBar_I_[D], 4, "sub");
+ // */test("S_TZI_eFooXI_wBar_If", new S_TZI_eFooXI_wBar_If[D], 4, "bar");
+ // */test("S_TZI_eFooXI_wBarY__", new S_TZI_eFooXI_wBarY__[D], 4, "sub");
+ // */test("S_TZI_eFooXI_wBarY_f", new S_TZI_eFooXI_wBarY_f[D], 4, "bar");
+ // */test("S_TZI_eFooXI_wBarYI_", new S_TZI_eFooXI_wBarYI_[D], 4, "sub");
+ // */test("S_TZI_eFooXI_wBarYIf", new S_TZI_eFooXI_wBarYIf[D], 4, "bar");
+ // */test("S_TZI_eFooXIf ", new S_TZI_eFooXIf [D], 3, "foo");
+ // */test("S_TZI_eFooXIfwBar___", new S_TZI_eFooXIfwBar___[D], 4, "foo");
+ // */test("S_TZI_eFooXIfwBar__f", new S_TZI_eFooXIfwBar__f[D], 4, "bar");
+ // */test("S_TZI_eFooXIfwBar_I_", new S_TZI_eFooXIfwBar_I_[D], 4, "foo");
+ // */test("S_TZI_eFooXIfwBar_If", new S_TZI_eFooXIfwBar_If[D], 4, "bar");
+ // */test("S_TZI_eFooXIfwBarY__", new S_TZI_eFooXIfwBarY__[D], 4, "foo");
+ // */test("S_TZI_eFooXIfwBarY_f", new S_TZI_eFooXIfwBarY_f[D], 4, "bar");
+ // */test("S_TZI_eFooXIfwBarYI_", new S_TZI_eFooXIfwBarYI_[D], 4, "foo");
+ // */test("S_TZI_eFooXIfwBarYIf", new S_TZI_eFooXIfwBarYIf[D], 4, "bar");
+
+ /* */test("S_TZIfeFoo___ ", new S_TZIfeFoo___ [D], 3, "mix");
+ /* */test("S_TZIfeFoo___wBar___", new S_TZIfeFoo___wBar___[D], 4, "mix");
+ /* */test("S_TZIfeFoo___wBar__f", new S_TZIfeFoo___wBar__f[D], 4, "mix");
+ // */test("S_TZIfeFoo___wBar_I_", new S_TZIfeFoo___wBar_I_[D], 4, "mix");
+ // */test("S_TZIfeFoo___wBar_If", new S_TZIfeFoo___wBar_If[D], 4, "mix");
+ /* */test("S_TZIfeFoo___wBarY__", new S_TZIfeFoo___wBarY__[D], 4, "mix");
+ /* */test("S_TZIfeFoo___wBarY_f", new S_TZIfeFoo___wBarY_f[D], 4, "mix");
+ // */test("S_TZIfeFoo___wBarYI_", new S_TZIfeFoo___wBarYI_[D], 4, "mix");
+ // */test("S_TZIfeFoo___wBarYIf", new S_TZIfeFoo___wBarYIf[D], 4, "mix");
+ /* */test("S_TZIfeFoo__f ", new S_TZIfeFoo__f [D], 3, "mix");
+ /* */test("S_TZIfeFoo__fwBar___", new S_TZIfeFoo__fwBar___[D], 4, "mix");
+ /* */test("S_TZIfeFoo__fwBar__f", new S_TZIfeFoo__fwBar__f[D], 4, "mix");
+ // */test("S_TZIfeFoo__fwBar_I_", new S_TZIfeFoo__fwBar_I_[D], 4, "mix");
+ // */test("S_TZIfeFoo__fwBar_If", new S_TZIfeFoo__fwBar_If[D], 4, "mix");
+ /* */test("S_TZIfeFoo__fwBarY__", new S_TZIfeFoo__fwBarY__[D], 4, "mix");
+ /* */test("S_TZIfeFoo__fwBarY_f", new S_TZIfeFoo__fwBarY_f[D], 4, "mix");
+ // */test("S_TZIfeFoo__fwBarYI_", new S_TZIfeFoo__fwBarYI_[D], 4, "mix");
+ // */test("S_TZIfeFoo__fwBarYIf", new S_TZIfeFoo__fwBarYIf[D], 4, "mix");
+ // */test("S_TZIfeFoo_I_ ", new S_TZIfeFoo_I_ [D], 3, "mix");
+ // */test("S_TZIfeFoo_I_wBar___", new S_TZIfeFoo_I_wBar___[D], 4, "mix");
+ // */test("S_TZIfeFoo_I_wBar__f", new S_TZIfeFoo_I_wBar__f[D], 4, "mix");
+ // */test("S_TZIfeFoo_I_wBar_I_", new S_TZIfeFoo_I_wBar_I_[D], 4, "mix");
+ // */test("S_TZIfeFoo_I_wBar_If", new S_TZIfeFoo_I_wBar_If[D], 4, "mix");
+ // */test("S_TZIfeFoo_I_wBarY__", new S_TZIfeFoo_I_wBarY__[D], 4, "mix");
+ // */test("S_TZIfeFoo_I_wBarY_f", new S_TZIfeFoo_I_wBarY_f[D], 4, "mix");
+ // */test("S_TZIfeFoo_I_wBarYI_", new S_TZIfeFoo_I_wBarYI_[D], 4, "mix");
+ // */test("S_TZIfeFoo_I_wBarYIf", new S_TZIfeFoo_I_wBarYIf[D], 4, "mix");
+ // */test("S_TZIfeFoo_If ", new S_TZIfeFoo_If [D], 3, "mix");
+ // */test("S_TZIfeFoo_IfwBar___", new S_TZIfeFoo_IfwBar___[D], 4, "mix");
+ // */test("S_TZIfeFoo_IfwBar__f", new S_TZIfeFoo_IfwBar__f[D], 4, "mix");
+ // */test("S_TZIfeFoo_IfwBar_I_", new S_TZIfeFoo_IfwBar_I_[D], 4, "mix");
+ // */test("S_TZIfeFoo_IfwBar_If", new S_TZIfeFoo_IfwBar_If[D], 4, "mix");
+ // */test("S_TZIfeFoo_IfwBarY__", new S_TZIfeFoo_IfwBarY__[D], 4, "mix");
+ // */test("S_TZIfeFoo_IfwBarY_f", new S_TZIfeFoo_IfwBarY_f[D], 4, "mix");
+ // */test("S_TZIfeFoo_IfwBarYI_", new S_TZIfeFoo_IfwBarYI_[D], 4, "mix");
+ // */test("S_TZIfeFoo_IfwBarYIf", new S_TZIfeFoo_IfwBarYIf[D], 4, "mix");
+ /* */test("S_TZIfeFooX__ ", new S_TZIfeFooX__ [D], 3, "mix");
+ /* */test("S_TZIfeFooX__wBar___", new S_TZIfeFooX__wBar___[D], 4, "mix");
+ /* */test("S_TZIfeFooX__wBar__f", new S_TZIfeFooX__wBar__f[D], 4, "mix");
+ // */test("S_TZIfeFooX__wBar_I_", new S_TZIfeFooX__wBar_I_[D], 4, "mix");
+ // */test("S_TZIfeFooX__wBar_If", new S_TZIfeFooX__wBar_If[D], 4, "mix");
+ /* */test("S_TZIfeFooX__wBarY__", new S_TZIfeFooX__wBarY__[D], 4, "mix");
+ /* */test("S_TZIfeFooX__wBarY_f", new S_TZIfeFooX__wBarY_f[D], 4, "mix");
+ // */test("S_TZIfeFooX__wBarYI_", new S_TZIfeFooX__wBarYI_[D], 4, "mix");
+ // */test("S_TZIfeFooX__wBarYIf", new S_TZIfeFooX__wBarYIf[D], 4, "mix");
+ /* */test("S_TZIfeFooX_f ", new S_TZIfeFooX_f [D], 3, "mix");
+ /* */test("S_TZIfeFooX_fwBar___", new S_TZIfeFooX_fwBar___[D], 4, "mix");
+ /* */test("S_TZIfeFooX_fwBar__f", new S_TZIfeFooX_fwBar__f[D], 4, "mix");
+ // */test("S_TZIfeFooX_fwBar_I_", new S_TZIfeFooX_fwBar_I_[D], 4, "mix");
+ // */test("S_TZIfeFooX_fwBar_If", new S_TZIfeFooX_fwBar_If[D], 4, "mix");
+ /* */test("S_TZIfeFooX_fwBarY__", new S_TZIfeFooX_fwBarY__[D], 4, "mix");
+ /* */test("S_TZIfeFooX_fwBarY_f", new S_TZIfeFooX_fwBarY_f[D], 4, "mix");
+ // */test("S_TZIfeFooX_fwBarYI_", new S_TZIfeFooX_fwBarYI_[D], 4, "mix");
+ // */test("S_TZIfeFooX_fwBarYIf", new S_TZIfeFooX_fwBarYIf[D], 4, "mix");
+ // */test("S_TZIfeFooXI_ ", new S_TZIfeFooXI_ [D], 3, "mix");
+ // */test("S_TZIfeFooXI_wBar___", new S_TZIfeFooXI_wBar___[D], 4, "mix");
+ // */test("S_TZIfeFooXI_wBar__f", new S_TZIfeFooXI_wBar__f[D], 4, "mix");
+ // */test("S_TZIfeFooXI_wBar_I_", new S_TZIfeFooXI_wBar_I_[D], 4, "mix");
+ // */test("S_TZIfeFooXI_wBar_If", new S_TZIfeFooXI_wBar_If[D], 4, "mix");
+ // */test("S_TZIfeFooXI_wBarY__", new S_TZIfeFooXI_wBarY__[D], 4, "mix");
+ // */test("S_TZIfeFooXI_wBarY_f", new S_TZIfeFooXI_wBarY_f[D], 4, "mix");
+ // */test("S_TZIfeFooXI_wBarYI_", new S_TZIfeFooXI_wBarYI_[D], 4, "mix");
+ // */test("S_TZIfeFooXI_wBarYIf", new S_TZIfeFooXI_wBarYIf[D], 4, "mix");
+ // */test("S_TZIfeFooXIf ", new S_TZIfeFooXIf [D], 3, "mix");
+ // */test("S_TZIfeFooXIfwBar___", new S_TZIfeFooXIfwBar___[D], 4, "mix");
+ // */test("S_TZIfeFooXIfwBar__f", new S_TZIfeFooXIfwBar__f[D], 4, "mix");
+ // */test("S_TZIfeFooXIfwBar_I_", new S_TZIfeFooXIfwBar_I_[D], 4, "mix");
+ // */test("S_TZIfeFooXIfwBar_If", new S_TZIfeFooXIfwBar_If[D], 4, "mix");
+ // */test("S_TZIfeFooXIfwBarY__", new S_TZIfeFooXIfwBarY__[D], 4, "mix");
+ // */test("S_TZIfeFooXIfwBarY_f", new S_TZIfeFooXIfwBarY_f[D], 4, "mix");
+ // */test("S_TZIfeFooXIfwBarYI_", new S_TZIfeFooXIfwBarYI_[D], 4, "mix");
+ // */test("S_TZIfeFooXIfwBarYIf", new S_TZIfeFooXIfwBarYIf[D], 4, "mix");
+
+
+
+ /* */test("S_T___wFoo___ ", new S_T___wFoo___ [D], 3, "sub");
+ /* */test("S_T___wFoo___wBar___", new S_T___wFoo___wBar___[D], 4, "sub");
+ /* */test("S_T___wFoo___wBar__f", new S_T___wFoo___wBar__f[D], 4, "bar");
+ /* */test("S_T___wFoo___wBar_I_", new S_T___wFoo___wBar_I_[D], 4, "sub");
+ /* */test("S_T___wFoo___wBar_If", new S_T___wFoo___wBar_If[D], 4, "bar");
+ /* */test("S_T___wFoo___wBarY__", new S_T___wFoo___wBarY__[D], 4, "sub");
+ /* */test("S_T___wFoo___wBarY_f", new S_T___wFoo___wBarY_f[D], 4, "bar");
+ /* */test("S_T___wFoo___wBarYI_", new S_T___wFoo___wBarYI_[D], 4, "sub");
+ /* */test("S_T___wFoo___wBarYIf", new S_T___wFoo___wBarYIf[D], 4, "bar");
+ /* */test("S_T___wFoo__f ", new S_T___wFoo__f [D], 3, "foo");
+ /* */test("S_T___wFoo__fwBar___", new S_T___wFoo__fwBar___[D], 4, "foo");
+ // */test("S_T___wFoo__fwBar__f", new S_T___wFoo__fwBar__f[D], 4, "bar");
+ /* */test("S_T___wFoo__fwBar_I_", new S_T___wFoo__fwBar_I_[D], 4, "foo");
+ // */test("S_T___wFoo__fwBar_If", new S_T___wFoo__fwBar_If[D], 4, "bar");
+ /* */test("S_T___wFoo__fwBarY__", new S_T___wFoo__fwBarY__[D], 4, "foo");
+ // */test("S_T___wFoo__fwBarY_f", new S_T___wFoo__fwBarY_f[D], 4, "bar");
+ /* */test("S_T___wFoo__fwBarYI_", new S_T___wFoo__fwBarYI_[D], 4, "foo");
+ // */test("S_T___wFoo__fwBarYIf", new S_T___wFoo__fwBarYIf[D], 4, "bar");
+ /* */test("S_T___wFoo_I_ ", new S_T___wFoo_I_ [D], 3, "sub");
+ /* */test("S_T___wFoo_I_wBar___", new S_T___wFoo_I_wBar___[D], 4, "sub");
+ /* */test("S_T___wFoo_I_wBar__f", new S_T___wFoo_I_wBar__f[D], 4, "bar");
+ // */test("S_T___wFoo_I_wBar_I_", new S_T___wFoo_I_wBar_I_[D], 4, "sub");
+ // */test("S_T___wFoo_I_wBar_If", new S_T___wFoo_I_wBar_If[D], 4, "bar");
+ /* */test("S_T___wFoo_I_wBarY__", new S_T___wFoo_I_wBarY__[D], 4, "sub");
+ /* */test("S_T___wFoo_I_wBarY_f", new S_T___wFoo_I_wBarY_f[D], 4, "bar");
+ // */test("S_T___wFoo_I_wBarYI_", new S_T___wFoo_I_wBarYI_[D], 4, "sub");
+ // */test("S_T___wFoo_I_wBarYIf", new S_T___wFoo_I_wBarYIf[D], 4, "bar");
+ /* */test("S_T___wFoo_If ", new S_T___wFoo_If [D], 3, "foo");
+ /* */test("S_T___wFoo_IfwBar___", new S_T___wFoo_IfwBar___[D], 4, "foo");
+ // */test("S_T___wFoo_IfwBar__f", new S_T___wFoo_IfwBar__f[D], 4, "bar");
+ // */test("S_T___wFoo_IfwBar_I_", new S_T___wFoo_IfwBar_I_[D], 4, "foo");
+ // */test("S_T___wFoo_IfwBar_If", new S_T___wFoo_IfwBar_If[D], 4, "bar");
+ /* */test("S_T___wFoo_IfwBarY__", new S_T___wFoo_IfwBarY__[D], 4, "foo");
+ // */test("S_T___wFoo_IfwBarY_f", new S_T___wFoo_IfwBarY_f[D], 4, "bar");
+ // */test("S_T___wFoo_IfwBarYI_", new S_T___wFoo_IfwBarYI_[D], 4, "foo");
+ // */test("S_T___wFoo_IfwBarYIf", new S_T___wFoo_IfwBarYIf[D], 4, "bar");
+ /* */test("S_T___wFooX__ ", new S_T___wFooX__ [D], 3, "sub");
+ /* */test("S_T___wFooX__wBar___", new S_T___wFooX__wBar___[D], 4, "sub");
+ /* */test("S_T___wFooX__wBar__f", new S_T___wFooX__wBar__f[D], 4, "bar");
+ /* */test("S_T___wFooX__wBar_I_", new S_T___wFooX__wBar_I_[D], 4, "sub");
+ /* */test("S_T___wFooX__wBar_If", new S_T___wFooX__wBar_If[D], 4, "bar");
+ /* */test("S_T___wFooX__wBarY__", new S_T___wFooX__wBarY__[D], 4, "sub");
+ /* */test("S_T___wFooX__wBarY_f", new S_T___wFooX__wBarY_f[D], 4, "bar");
+ /* */test("S_T___wFooX__wBarYI_", new S_T___wFooX__wBarYI_[D], 4, "sub");
+ /* */test("S_T___wFooX__wBarYIf", new S_T___wFooX__wBarYIf[D], 4, "bar");
+ /* */test("S_T___wFooX_f ", new S_T___wFooX_f [D], 3, "foo");
+ /* */test("S_T___wFooX_fwBar___", new S_T___wFooX_fwBar___[D], 4, "foo");
+ // */test("S_T___wFooX_fwBar__f", new S_T___wFooX_fwBar__f[D], 4, "bar");
+ /* */test("S_T___wFooX_fwBar_I_", new S_T___wFooX_fwBar_I_[D], 4, "foo");
+ // */test("S_T___wFooX_fwBar_If", new S_T___wFooX_fwBar_If[D], 4, "bar");
+ /* */test("S_T___wFooX_fwBarY__", new S_T___wFooX_fwBarY__[D], 4, "foo");
+ // */test("S_T___wFooX_fwBarY_f", new S_T___wFooX_fwBarY_f[D], 4, "bar");
+ /* */test("S_T___wFooX_fwBarYI_", new S_T___wFooX_fwBarYI_[D], 4, "foo");
+ // */test("S_T___wFooX_fwBarYIf", new S_T___wFooX_fwBarYIf[D], 4, "bar");
+ /* */test("S_T___wFooXI_ ", new S_T___wFooXI_ [D], 3, "sub");
+ /* */test("S_T___wFooXI_wBar___", new S_T___wFooXI_wBar___[D], 4, "sub");
+ /* */test("S_T___wFooXI_wBar__f", new S_T___wFooXI_wBar__f[D], 4, "bar");
+ // */test("S_T___wFooXI_wBar_I_", new S_T___wFooXI_wBar_I_[D], 4, "sub");
+ // */test("S_T___wFooXI_wBar_If", new S_T___wFooXI_wBar_If[D], 4, "bar");
+ /* */test("S_T___wFooXI_wBarY__", new S_T___wFooXI_wBarY__[D], 4, "sub");
+ /* */test("S_T___wFooXI_wBarY_f", new S_T___wFooXI_wBarY_f[D], 4, "bar");
+ // */test("S_T___wFooXI_wBarYI_", new S_T___wFooXI_wBarYI_[D], 4, "sub");
+ // */test("S_T___wFooXI_wBarYIf", new S_T___wFooXI_wBarYIf[D], 4, "bar");
+ /* */test("S_T___wFooXIf ", new S_T___wFooXIf [D], 3, "foo");
+ /* */test("S_T___wFooXIfwBar___", new S_T___wFooXIfwBar___[D], 4, "foo");
+ // */test("S_T___wFooXIfwBar__f", new S_T___wFooXIfwBar__f[D], 4, "bar");
+ // */test("S_T___wFooXIfwBar_I_", new S_T___wFooXIfwBar_I_[D], 4, "foo");
+ // */test("S_T___wFooXIfwBar_If", new S_T___wFooXIfwBar_If[D], 4, "bar");
+ /* */test("S_T___wFooXIfwBarY__", new S_T___wFooXIfwBarY__[D], 4, "foo");
+ // */test("S_T___wFooXIfwBarY_f", new S_T___wFooXIfwBarY_f[D], 4, "bar");
+ // */test("S_T___wFooXIfwBarYI_", new S_T___wFooXIfwBarYI_[D], 4, "foo");
+ // */test("S_T___wFooXIfwBarYIf", new S_T___wFooXIfwBarYIf[D], 4, "bar");
+
+ /* */test("S_T__fwFoo___ ", new S_T__fwFoo___ [D], 3, "mix");
+ /* */test("S_T__fwFoo___wBar___", new S_T__fwFoo___wBar___[D], 4, "mix");
+ /* */test("S_T__fwFoo___wBar__f", new S_T__fwFoo___wBar__f[D], 4, "mix");
+ /* */test("S_T__fwFoo___wBar_I_", new S_T__fwFoo___wBar_I_[D], 4, "mix");
+ /* */test("S_T__fwFoo___wBar_If", new S_T__fwFoo___wBar_If[D], 4, "mix");
+ /* */test("S_T__fwFoo___wBarY__", new S_T__fwFoo___wBarY__[D], 4, "mix");
+ /* */test("S_T__fwFoo___wBarY_f", new S_T__fwFoo___wBarY_f[D], 4, "mix");
+ /* */test("S_T__fwFoo___wBarYI_", new S_T__fwFoo___wBarYI_[D], 4, "mix");
+ /* */test("S_T__fwFoo___wBarYIf", new S_T__fwFoo___wBarYIf[D], 4, "mix");
+ /* */test("S_T__fwFoo__f ", new S_T__fwFoo__f [D], 3, "mix");
+ /* */test("S_T__fwFoo__fwBar___", new S_T__fwFoo__fwBar___[D], 4, "mix");
+ /* */test("S_T__fwFoo__fwBar__f", new S_T__fwFoo__fwBar__f[D], 4, "mix");
+ /* */test("S_T__fwFoo__fwBar_I_", new S_T__fwFoo__fwBar_I_[D], 4, "mix");
+ /* */test("S_T__fwFoo__fwBar_If", new S_T__fwFoo__fwBar_If[D], 4, "mix");
+ /* */test("S_T__fwFoo__fwBarY__", new S_T__fwFoo__fwBarY__[D], 4, "mix");
+ /* */test("S_T__fwFoo__fwBarY_f", new S_T__fwFoo__fwBarY_f[D], 4, "mix");
+ /* */test("S_T__fwFoo__fwBarYI_", new S_T__fwFoo__fwBarYI_[D], 4, "mix");
+ /* */test("S_T__fwFoo__fwBarYIf", new S_T__fwFoo__fwBarYIf[D], 4, "mix");
+ /* */test("S_T__fwFoo_I_ ", new S_T__fwFoo_I_ [D], 3, "mix");
+ /* */test("S_T__fwFoo_I_wBar___", new S_T__fwFoo_I_wBar___[D], 4, "mix");
+ /* */test("S_T__fwFoo_I_wBar__f", new S_T__fwFoo_I_wBar__f[D], 4, "mix");
+ // */test("S_T__fwFoo_I_wBar_I_", new S_T__fwFoo_I_wBar_I_[D], 4, "mix");
+ // */test("S_T__fwFoo_I_wBar_If", new S_T__fwFoo_I_wBar_If[D], 4, "mix");
+ /* */test("S_T__fwFoo_I_wBarY__", new S_T__fwFoo_I_wBarY__[D], 4, "mix");
+ /* */test("S_T__fwFoo_I_wBarY_f", new S_T__fwFoo_I_wBarY_f[D], 4, "mix");
+ // */test("S_T__fwFoo_I_wBarYI_", new S_T__fwFoo_I_wBarYI_[D], 4, "mix");
+ // */test("S_T__fwFoo_I_wBarYIf", new S_T__fwFoo_I_wBarYIf[D], 4, "mix");
+ /* */test("S_T__fwFoo_If ", new S_T__fwFoo_If [D], 3, "mix");
+ /* */test("S_T__fwFoo_IfwBar___", new S_T__fwFoo_IfwBar___[D], 4, "mix");
+ /* */test("S_T__fwFoo_IfwBar__f", new S_T__fwFoo_IfwBar__f[D], 4, "mix");
+ // */test("S_T__fwFoo_IfwBar_I_", new S_T__fwFoo_IfwBar_I_[D], 4, "mix");
+ // */test("S_T__fwFoo_IfwBar_If", new S_T__fwFoo_IfwBar_If[D], 4, "mix");
+ /* */test("S_T__fwFoo_IfwBarY__", new S_T__fwFoo_IfwBarY__[D], 4, "mix");
+ /* */test("S_T__fwFoo_IfwBarY_f", new S_T__fwFoo_IfwBarY_f[D], 4, "mix");
+ // */test("S_T__fwFoo_IfwBarYI_", new S_T__fwFoo_IfwBarYI_[D], 4, "mix");
+ // */test("S_T__fwFoo_IfwBarYIf", new S_T__fwFoo_IfwBarYIf[D], 4, "mix");
+ /* */test("S_T__fwFooX__ ", new S_T__fwFooX__ [D], 3, "mix");
+ /* */test("S_T__fwFooX__wBar___", new S_T__fwFooX__wBar___[D], 4, "mix");
+ /* */test("S_T__fwFooX__wBar__f", new S_T__fwFooX__wBar__f[D], 4, "mix");
+ /* */test("S_T__fwFooX__wBar_I_", new S_T__fwFooX__wBar_I_[D], 4, "mix");
+ /* */test("S_T__fwFooX__wBar_If", new S_T__fwFooX__wBar_If[D], 4, "mix");
+ /* */test("S_T__fwFooX__wBarY__", new S_T__fwFooX__wBarY__[D], 4, "mix");
+ /* */test("S_T__fwFooX__wBarY_f", new S_T__fwFooX__wBarY_f[D], 4, "mix");
+ /* */test("S_T__fwFooX__wBarYI_", new S_T__fwFooX__wBarYI_[D], 4, "mix");
+ /* */test("S_T__fwFooX__wBarYIf", new S_T__fwFooX__wBarYIf[D], 4, "mix");
+ /* */test("S_T__fwFooX_f ", new S_T__fwFooX_f [D], 3, "mix");
+ /* */test("S_T__fwFooX_fwBar___", new S_T__fwFooX_fwBar___[D], 4, "mix");
+ /* */test("S_T__fwFooX_fwBar__f", new S_T__fwFooX_fwBar__f[D], 4, "mix");
+ /* */test("S_T__fwFooX_fwBar_I_", new S_T__fwFooX_fwBar_I_[D], 4, "mix");
+ /* */test("S_T__fwFooX_fwBar_If", new S_T__fwFooX_fwBar_If[D], 4, "mix");
+ /* */test("S_T__fwFooX_fwBarY__", new S_T__fwFooX_fwBarY__[D], 4, "mix");
+ /* */test("S_T__fwFooX_fwBarY_f", new S_T__fwFooX_fwBarY_f[D], 4, "mix");
+ /* */test("S_T__fwFooX_fwBarYI_", new S_T__fwFooX_fwBarYI_[D], 4, "mix");
+ /* */test("S_T__fwFooX_fwBarYIf", new S_T__fwFooX_fwBarYIf[D], 4, "mix");
+ /* */test("S_T__fwFooXI_ ", new S_T__fwFooXI_ [D], 3, "mix");
+ /* */test("S_T__fwFooXI_wBar___", new S_T__fwFooXI_wBar___[D], 4, "mix");
+ /* */test("S_T__fwFooXI_wBar__f", new S_T__fwFooXI_wBar__f[D], 4, "mix");
+ // */test("S_T__fwFooXI_wBar_I_", new S_T__fwFooXI_wBar_I_[D], 4, "mix");
+ // */test("S_T__fwFooXI_wBar_If", new S_T__fwFooXI_wBar_If[D], 4, "mix");
+ /* */test("S_T__fwFooXI_wBarY__", new S_T__fwFooXI_wBarY__[D], 4, "mix");
+ /* */test("S_T__fwFooXI_wBarY_f", new S_T__fwFooXI_wBarY_f[D], 4, "mix");
+ // */test("S_T__fwFooXI_wBarYI_", new S_T__fwFooXI_wBarYI_[D], 4, "mix");
+ // */test("S_T__fwFooXI_wBarYIf", new S_T__fwFooXI_wBarYIf[D], 4, "mix");
+ /* */test("S_T__fwFooXIf ", new S_T__fwFooXIf [D], 3, "mix");
+ /* */test("S_T__fwFooXIfwBar___", new S_T__fwFooXIfwBar___[D], 4, "mix");
+ /* */test("S_T__fwFooXIfwBar__f", new S_T__fwFooXIfwBar__f[D], 4, "mix");
+ // */test("S_T__fwFooXIfwBar_I_", new S_T__fwFooXIfwBar_I_[D], 4, "mix");
+ // */test("S_T__fwFooXIfwBar_If", new S_T__fwFooXIfwBar_If[D], 4, "mix");
+ /* */test("S_T__fwFooXIfwBarY__", new S_T__fwFooXIfwBarY__[D], 4, "mix");
+ /* */test("S_T__fwFooXIfwBarY_f", new S_T__fwFooXIfwBarY_f[D], 4, "mix");
+ // */test("S_T__fwFooXIfwBarYI_", new S_T__fwFooXIfwBarYI_[D], 4, "mix");
+ // */test("S_T__fwFooXIfwBarYIf", new S_T__fwFooXIfwBarYIf[D], 4, "mix");
+
+ /* */test("S_T_I_wFoo___ ", new S_T_I_wFoo___ [D], 3, "sub");
+ /* */test("S_T_I_wFoo___wBar___", new S_T_I_wFoo___wBar___[D], 4, "sub");
+ /* */test("S_T_I_wFoo___wBar__f", new S_T_I_wFoo___wBar__f[D], 4, "bar");
+ // */test("S_T_I_wFoo___wBar_I_", new S_T_I_wFoo___wBar_I_[D], 4, "sub");
+ // */test("S_T_I_wFoo___wBar_If", new S_T_I_wFoo___wBar_If[D], 4, "bar");
+ /* */test("S_T_I_wFoo___wBarY__", new S_T_I_wFoo___wBarY__[D], 4, "sub");
+ /* */test("S_T_I_wFoo___wBarY_f", new S_T_I_wFoo___wBarY_f[D], 4, "bar");
+ // */test("S_T_I_wFoo___wBarYI_", new S_T_I_wFoo___wBarYI_[D], 4, "sub");
+ // */test("S_T_I_wFoo___wBarYIf", new S_T_I_wFoo___wBarYIf[D], 4, "bar");
+ /* */test("S_T_I_wFoo__f ", new S_T_I_wFoo__f [D], 3, "foo");
+ /* */test("S_T_I_wFoo__fwBar___", new S_T_I_wFoo__fwBar___[D], 4, "foo");
+ // */test("S_T_I_wFoo__fwBar__f", new S_T_I_wFoo__fwBar__f[D], 4, "bar");
+ // */test("S_T_I_wFoo__fwBar_I_", new S_T_I_wFoo__fwBar_I_[D], 4, "foo");
+ // */test("S_T_I_wFoo__fwBar_If", new S_T_I_wFoo__fwBar_If[D], 4, "bar");
+ /* */test("S_T_I_wFoo__fwBarY__", new S_T_I_wFoo__fwBarY__[D], 4, "foo");
+ // */test("S_T_I_wFoo__fwBarY_f", new S_T_I_wFoo__fwBarY_f[D], 4, "bar");
+ // */test("S_T_I_wFoo__fwBarYI_", new S_T_I_wFoo__fwBarYI_[D], 4, "foo");
+ // */test("S_T_I_wFoo__fwBarYIf", new S_T_I_wFoo__fwBarYIf[D], 4, "bar");
+ // */test("S_T_I_wFoo_I_ ", new S_T_I_wFoo_I_ [D], 3, "sub");
+ // */test("S_T_I_wFoo_I_wBar___", new S_T_I_wFoo_I_wBar___[D], 4, "sub");
+ // */test("S_T_I_wFoo_I_wBar__f", new S_T_I_wFoo_I_wBar__f[D], 4, "bar");
+ // */test("S_T_I_wFoo_I_wBar_I_", new S_T_I_wFoo_I_wBar_I_[D], 4, "sub");
+ // */test("S_T_I_wFoo_I_wBar_If", new S_T_I_wFoo_I_wBar_If[D], 4, "bar");
+ // */test("S_T_I_wFoo_I_wBarY__", new S_T_I_wFoo_I_wBarY__[D], 4, "sub");
+ // */test("S_T_I_wFoo_I_wBarY_f", new S_T_I_wFoo_I_wBarY_f[D], 4, "bar");
+ // */test("S_T_I_wFoo_I_wBarYI_", new S_T_I_wFoo_I_wBarYI_[D], 4, "sub");
+ // */test("S_T_I_wFoo_I_wBarYIf", new S_T_I_wFoo_I_wBarYIf[D], 4, "bar");
+ // */test("S_T_I_wFoo_If ", new S_T_I_wFoo_If [D], 3, "foo");
+ // */test("S_T_I_wFoo_IfwBar___", new S_T_I_wFoo_IfwBar___[D], 4, "foo");
+ // */test("S_T_I_wFoo_IfwBar__f", new S_T_I_wFoo_IfwBar__f[D], 4, "bar");
+ // */test("S_T_I_wFoo_IfwBar_I_", new S_T_I_wFoo_IfwBar_I_[D], 4, "foo");
+ // */test("S_T_I_wFoo_IfwBar_If", new S_T_I_wFoo_IfwBar_If[D], 4, "bar");
+ // */test("S_T_I_wFoo_IfwBarY__", new S_T_I_wFoo_IfwBarY__[D], 4, "foo");
+ // */test("S_T_I_wFoo_IfwBarY_f", new S_T_I_wFoo_IfwBarY_f[D], 4, "bar");
+ // */test("S_T_I_wFoo_IfwBarYI_", new S_T_I_wFoo_IfwBarYI_[D], 4, "foo");
+ // */test("S_T_I_wFoo_IfwBarYIf", new S_T_I_wFoo_IfwBarYIf[D], 4, "bar");
+ /* */test("S_T_I_wFooX__ ", new S_T_I_wFooX__ [D], 3, "sub");
+ /* */test("S_T_I_wFooX__wBar___", new S_T_I_wFooX__wBar___[D], 4, "sub");
+ /* */test("S_T_I_wFooX__wBar__f", new S_T_I_wFooX__wBar__f[D], 4, "bar");
+ // */test("S_T_I_wFooX__wBar_I_", new S_T_I_wFooX__wBar_I_[D], 4, "sub");
+ // */test("S_T_I_wFooX__wBar_If", new S_T_I_wFooX__wBar_If[D], 4, "bar");
+ /* */test("S_T_I_wFooX__wBarY__", new S_T_I_wFooX__wBarY__[D], 4, "sub");
+ /* */test("S_T_I_wFooX__wBarY_f", new S_T_I_wFooX__wBarY_f[D], 4, "bar");
+ // */test("S_T_I_wFooX__wBarYI_", new S_T_I_wFooX__wBarYI_[D], 4, "sub");
+ // */test("S_T_I_wFooX__wBarYIf", new S_T_I_wFooX__wBarYIf[D], 4, "bar");
+ /* */test("S_T_I_wFooX_f ", new S_T_I_wFooX_f [D], 3, "foo");
+ /* */test("S_T_I_wFooX_fwBar___", new S_T_I_wFooX_fwBar___[D], 4, "foo");
+ // */test("S_T_I_wFooX_fwBar__f", new S_T_I_wFooX_fwBar__f[D], 4, "bar");
+ // */test("S_T_I_wFooX_fwBar_I_", new S_T_I_wFooX_fwBar_I_[D], 4, "foo");
+ // */test("S_T_I_wFooX_fwBar_If", new S_T_I_wFooX_fwBar_If[D], 4, "bar");
+ /* */test("S_T_I_wFooX_fwBarY__", new S_T_I_wFooX_fwBarY__[D], 4, "foo");
+ // */test("S_T_I_wFooX_fwBarY_f", new S_T_I_wFooX_fwBarY_f[D], 4, "bar");
+ // */test("S_T_I_wFooX_fwBarYI_", new S_T_I_wFooX_fwBarYI_[D], 4, "foo");
+ // */test("S_T_I_wFooX_fwBarYIf", new S_T_I_wFooX_fwBarYIf[D], 4, "bar");
+ // */test("S_T_I_wFooXI_ ", new S_T_I_wFooXI_ [D], 3, "sub");
+ // */test("S_T_I_wFooXI_wBar___", new S_T_I_wFooXI_wBar___[D], 4, "sub");
+ // */test("S_T_I_wFooXI_wBar__f", new S_T_I_wFooXI_wBar__f[D], 4, "bar");
+ // */test("S_T_I_wFooXI_wBar_I_", new S_T_I_wFooXI_wBar_I_[D], 4, "sub");
+ // */test("S_T_I_wFooXI_wBar_If", new S_T_I_wFooXI_wBar_If[D], 4, "bar");
+ // */test("S_T_I_wFooXI_wBarY__", new S_T_I_wFooXI_wBarY__[D], 4, "sub");
+ // */test("S_T_I_wFooXI_wBarY_f", new S_T_I_wFooXI_wBarY_f[D], 4, "bar");
+ // */test("S_T_I_wFooXI_wBarYI_", new S_T_I_wFooXI_wBarYI_[D], 4, "sub");
+ // */test("S_T_I_wFooXI_wBarYIf", new S_T_I_wFooXI_wBarYIf[D], 4, "bar");
+ // */test("S_T_I_wFooXIf ", new S_T_I_wFooXIf [D], 3, "foo");
+ // */test("S_T_I_wFooXIfwBar___", new S_T_I_wFooXIfwBar___[D], 4, "foo");
+ // */test("S_T_I_wFooXIfwBar__f", new S_T_I_wFooXIfwBar__f[D], 4, "bar");
+ // */test("S_T_I_wFooXIfwBar_I_", new S_T_I_wFooXIfwBar_I_[D], 4, "foo");
+ // */test("S_T_I_wFooXIfwBar_If", new S_T_I_wFooXIfwBar_If[D], 4, "bar");
+ // */test("S_T_I_wFooXIfwBarY__", new S_T_I_wFooXIfwBarY__[D], 4, "foo");
+ // */test("S_T_I_wFooXIfwBarY_f", new S_T_I_wFooXIfwBarY_f[D], 4, "bar");
+ // */test("S_T_I_wFooXIfwBarYI_", new S_T_I_wFooXIfwBarYI_[D], 4, "foo");
+ // */test("S_T_I_wFooXIfwBarYIf", new S_T_I_wFooXIfwBarYIf[D], 4, "bar");
+
+ /* */test("S_T_IfwFoo___ ", new S_T_IfwFoo___ [D], 3, "mix");
+ /* */test("S_T_IfwFoo___wBar___", new S_T_IfwFoo___wBar___[D], 4, "mix");
+ /* */test("S_T_IfwFoo___wBar__f", new S_T_IfwFoo___wBar__f[D], 4, "mix");
+ // */test("S_T_IfwFoo___wBar_I_", new S_T_IfwFoo___wBar_I_[D], 4, "mix");
+ // */test("S_T_IfwFoo___wBar_If", new S_T_IfwFoo___wBar_If[D], 4, "mix");
+ /* */test("S_T_IfwFoo___wBarY__", new S_T_IfwFoo___wBarY__[D], 4, "mix");
+ /* */test("S_T_IfwFoo___wBarY_f", new S_T_IfwFoo___wBarY_f[D], 4, "mix");
+ // */test("S_T_IfwFoo___wBarYI_", new S_T_IfwFoo___wBarYI_[D], 4, "mix");
+ // */test("S_T_IfwFoo___wBarYIf", new S_T_IfwFoo___wBarYIf[D], 4, "mix");
+ /* */test("S_T_IfwFoo__f ", new S_T_IfwFoo__f [D], 3, "mix");
+ /* */test("S_T_IfwFoo__fwBar___", new S_T_IfwFoo__fwBar___[D], 4, "mix");
+ /* */test("S_T_IfwFoo__fwBar__f", new S_T_IfwFoo__fwBar__f[D], 4, "mix");
+ // */test("S_T_IfwFoo__fwBar_I_", new S_T_IfwFoo__fwBar_I_[D], 4, "mix");
+ // */test("S_T_IfwFoo__fwBar_If", new S_T_IfwFoo__fwBar_If[D], 4, "mix");
+ /* */test("S_T_IfwFoo__fwBarY__", new S_T_IfwFoo__fwBarY__[D], 4, "mix");
+ /* */test("S_T_IfwFoo__fwBarY_f", new S_T_IfwFoo__fwBarY_f[D], 4, "mix");
+ // */test("S_T_IfwFoo__fwBarYI_", new S_T_IfwFoo__fwBarYI_[D], 4, "mix");
+ // */test("S_T_IfwFoo__fwBarYIf", new S_T_IfwFoo__fwBarYIf[D], 4, "mix");
+ // */test("S_T_IfwFoo_I_ ", new S_T_IfwFoo_I_ [D], 3, "mix");
+ // */test("S_T_IfwFoo_I_wBar___", new S_T_IfwFoo_I_wBar___[D], 4, "mix");
+ // */test("S_T_IfwFoo_I_wBar__f", new S_T_IfwFoo_I_wBar__f[D], 4, "mix");
+ // */test("S_T_IfwFoo_I_wBar_I_", new S_T_IfwFoo_I_wBar_I_[D], 4, "mix");
+ // */test("S_T_IfwFoo_I_wBar_If", new S_T_IfwFoo_I_wBar_If[D], 4, "mix");
+ // */test("S_T_IfwFoo_I_wBarY__", new S_T_IfwFoo_I_wBarY__[D], 4, "mix");
+ // */test("S_T_IfwFoo_I_wBarY_f", new S_T_IfwFoo_I_wBarY_f[D], 4, "mix");
+ // */test("S_T_IfwFoo_I_wBarYI_", new S_T_IfwFoo_I_wBarYI_[D], 4, "mix");
+ // */test("S_T_IfwFoo_I_wBarYIf", new S_T_IfwFoo_I_wBarYIf[D], 4, "mix");
+ // */test("S_T_IfwFoo_If ", new S_T_IfwFoo_If [D], 3, "mix");
+ // */test("S_T_IfwFoo_IfwBar___", new S_T_IfwFoo_IfwBar___[D], 4, "mix");
+ // */test("S_T_IfwFoo_IfwBar__f", new S_T_IfwFoo_IfwBar__f[D], 4, "mix");
+ // */test("S_T_IfwFoo_IfwBar_I_", new S_T_IfwFoo_IfwBar_I_[D], 4, "mix");
+ // */test("S_T_IfwFoo_IfwBar_If", new S_T_IfwFoo_IfwBar_If[D], 4, "mix");
+ // */test("S_T_IfwFoo_IfwBarY__", new S_T_IfwFoo_IfwBarY__[D], 4, "mix");
+ // */test("S_T_IfwFoo_IfwBarY_f", new S_T_IfwFoo_IfwBarY_f[D], 4, "mix");
+ // */test("S_T_IfwFoo_IfwBarYI_", new S_T_IfwFoo_IfwBarYI_[D], 4, "mix");
+ // */test("S_T_IfwFoo_IfwBarYIf", new S_T_IfwFoo_IfwBarYIf[D], 4, "mix");
+ /* */test("S_T_IfwFooX__ ", new S_T_IfwFooX__ [D], 3, "mix");
+ /* */test("S_T_IfwFooX__wBar___", new S_T_IfwFooX__wBar___[D], 4, "mix");
+ /* */test("S_T_IfwFooX__wBar__f", new S_T_IfwFooX__wBar__f[D], 4, "mix");
+ // */test("S_T_IfwFooX__wBar_I_", new S_T_IfwFooX__wBar_I_[D], 4, "mix");
+ // */test("S_T_IfwFooX__wBar_If", new S_T_IfwFooX__wBar_If[D], 4, "mix");
+ /* */test("S_T_IfwFooX__wBarY__", new S_T_IfwFooX__wBarY__[D], 4, "mix");
+ /* */test("S_T_IfwFooX__wBarY_f", new S_T_IfwFooX__wBarY_f[D], 4, "mix");
+ // */test("S_T_IfwFooX__wBarYI_", new S_T_IfwFooX__wBarYI_[D], 4, "mix");
+ // */test("S_T_IfwFooX__wBarYIf", new S_T_IfwFooX__wBarYIf[D], 4, "mix");
+ /* */test("S_T_IfwFooX_f ", new S_T_IfwFooX_f [D], 3, "mix");
+ /* */test("S_T_IfwFooX_fwBar___", new S_T_IfwFooX_fwBar___[D], 4, "mix");
+ /* */test("S_T_IfwFooX_fwBar__f", new S_T_IfwFooX_fwBar__f[D], 4, "mix");
+ // */test("S_T_IfwFooX_fwBar_I_", new S_T_IfwFooX_fwBar_I_[D], 4, "mix");
+ // */test("S_T_IfwFooX_fwBar_If", new S_T_IfwFooX_fwBar_If[D], 4, "mix");
+ /* */test("S_T_IfwFooX_fwBarY__", new S_T_IfwFooX_fwBarY__[D], 4, "mix");
+ /* */test("S_T_IfwFooX_fwBarY_f", new S_T_IfwFooX_fwBarY_f[D], 4, "mix");
+ // */test("S_T_IfwFooX_fwBarYI_", new S_T_IfwFooX_fwBarYI_[D], 4, "mix");
+ // */test("S_T_IfwFooX_fwBarYIf", new S_T_IfwFooX_fwBarYIf[D], 4, "mix");
+ // */test("S_T_IfwFooXI_ ", new S_T_IfwFooXI_ [D], 3, "mix");
+ // */test("S_T_IfwFooXI_wBar___", new S_T_IfwFooXI_wBar___[D], 4, "mix");
+ // */test("S_T_IfwFooXI_wBar__f", new S_T_IfwFooXI_wBar__f[D], 4, "mix");
+ // */test("S_T_IfwFooXI_wBar_I_", new S_T_IfwFooXI_wBar_I_[D], 4, "mix");
+ // */test("S_T_IfwFooXI_wBar_If", new S_T_IfwFooXI_wBar_If[D], 4, "mix");
+ // */test("S_T_IfwFooXI_wBarY__", new S_T_IfwFooXI_wBarY__[D], 4, "mix");
+ // */test("S_T_IfwFooXI_wBarY_f", new S_T_IfwFooXI_wBarY_f[D], 4, "mix");
+ // */test("S_T_IfwFooXI_wBarYI_", new S_T_IfwFooXI_wBarYI_[D], 4, "mix");
+ // */test("S_T_IfwFooXI_wBarYIf", new S_T_IfwFooXI_wBarYIf[D], 4, "mix");
+ // */test("S_T_IfwFooXIf ", new S_T_IfwFooXIf [D], 3, "mix");
+ // */test("S_T_IfwFooXIfwBar___", new S_T_IfwFooXIfwBar___[D], 4, "mix");
+ // */test("S_T_IfwFooXIfwBar__f", new S_T_IfwFooXIfwBar__f[D], 4, "mix");
+ // */test("S_T_IfwFooXIfwBar_I_", new S_T_IfwFooXIfwBar_I_[D], 4, "mix");
+ // */test("S_T_IfwFooXIfwBar_If", new S_T_IfwFooXIfwBar_If[D], 4, "mix");
+ // */test("S_T_IfwFooXIfwBarY__", new S_T_IfwFooXIfwBarY__[D], 4, "mix");
+ // */test("S_T_IfwFooXIfwBarY_f", new S_T_IfwFooXIfwBarY_f[D], 4, "mix");
+ // */test("S_T_IfwFooXIfwBarYI_", new S_T_IfwFooXIfwBarYI_[D], 4, "mix");
+ // */test("S_T_IfwFooXIfwBarYIf", new S_T_IfwFooXIfwBarYIf[D], 4, "mix");
+
+ /* */test("S_TZ__wFoo___ ", new S_TZ__wFoo___ [D], 3, "sub");
+ /* */test("S_TZ__wFoo___wBar___", new S_TZ__wFoo___wBar___[D], 4, "sub");
+ /* */test("S_TZ__wFoo___wBar__f", new S_TZ__wFoo___wBar__f[D], 4, "bar");
+ /* */test("S_TZ__wFoo___wBar_I_", new S_TZ__wFoo___wBar_I_[D], 4, "sub");
+ /* */test("S_TZ__wFoo___wBar_If", new S_TZ__wFoo___wBar_If[D], 4, "bar");
+ /* */test("S_TZ__wFoo___wBarY__", new S_TZ__wFoo___wBarY__[D], 4, "sub");
+ /* */test("S_TZ__wFoo___wBarY_f", new S_TZ__wFoo___wBarY_f[D], 4, "bar");
+ /* */test("S_TZ__wFoo___wBarYI_", new S_TZ__wFoo___wBarYI_[D], 4, "sub");
+ /* */test("S_TZ__wFoo___wBarYIf", new S_TZ__wFoo___wBarYIf[D], 4, "bar");
+ /* */test("S_TZ__wFoo__f ", new S_TZ__wFoo__f [D], 3, "foo");
+ /* */test("S_TZ__wFoo__fwBar___", new S_TZ__wFoo__fwBar___[D], 4, "foo");
+ // */test("S_TZ__wFoo__fwBar__f", new S_TZ__wFoo__fwBar__f[D], 4, "bar");
+ /* */test("S_TZ__wFoo__fwBar_I_", new S_TZ__wFoo__fwBar_I_[D], 4, "foo");
+ // */test("S_TZ__wFoo__fwBar_If", new S_TZ__wFoo__fwBar_If[D], 4, "bar");
+ /* */test("S_TZ__wFoo__fwBarY__", new S_TZ__wFoo__fwBarY__[D], 4, "foo");
+ // */test("S_TZ__wFoo__fwBarY_f", new S_TZ__wFoo__fwBarY_f[D], 4, "bar");
+ /* */test("S_TZ__wFoo__fwBarYI_", new S_TZ__wFoo__fwBarYI_[D], 4, "foo");
+ // */test("S_TZ__wFoo__fwBarYIf", new S_TZ__wFoo__fwBarYIf[D], 4, "bar");
+ /* */test("S_TZ__wFoo_I_ ", new S_TZ__wFoo_I_ [D], 3, "sub");
+ /* */test("S_TZ__wFoo_I_wBar___", new S_TZ__wFoo_I_wBar___[D], 4, "sub");
+ /* */test("S_TZ__wFoo_I_wBar__f", new S_TZ__wFoo_I_wBar__f[D], 4, "bar");
+ // */test("S_TZ__wFoo_I_wBar_I_", new S_TZ__wFoo_I_wBar_I_[D], 4, "sub");
+ // */test("S_TZ__wFoo_I_wBar_If", new S_TZ__wFoo_I_wBar_If[D], 4, "bar");
+ /* */test("S_TZ__wFoo_I_wBarY__", new S_TZ__wFoo_I_wBarY__[D], 4, "sub");
+ /* */test("S_TZ__wFoo_I_wBarY_f", new S_TZ__wFoo_I_wBarY_f[D], 4, "bar");
+ // */test("S_TZ__wFoo_I_wBarYI_", new S_TZ__wFoo_I_wBarYI_[D], 4, "sub");
+ // */test("S_TZ__wFoo_I_wBarYIf", new S_TZ__wFoo_I_wBarYIf[D], 4, "bar");
+ /* */test("S_TZ__wFoo_If ", new S_TZ__wFoo_If [D], 3, "foo");
+ /* */test("S_TZ__wFoo_IfwBar___", new S_TZ__wFoo_IfwBar___[D], 4, "foo");
+ // */test("S_TZ__wFoo_IfwBar__f", new S_TZ__wFoo_IfwBar__f[D], 4, "bar");
+ // */test("S_TZ__wFoo_IfwBar_I_", new S_TZ__wFoo_IfwBar_I_[D], 4, "foo");
+ // */test("S_TZ__wFoo_IfwBar_If", new S_TZ__wFoo_IfwBar_If[D], 4, "bar");
+ /* */test("S_TZ__wFoo_IfwBarY__", new S_TZ__wFoo_IfwBarY__[D], 4, "foo");
+ // */test("S_TZ__wFoo_IfwBarY_f", new S_TZ__wFoo_IfwBarY_f[D], 4, "bar");
+ // */test("S_TZ__wFoo_IfwBarYI_", new S_TZ__wFoo_IfwBarYI_[D], 4, "foo");
+ // */test("S_TZ__wFoo_IfwBarYIf", new S_TZ__wFoo_IfwBarYIf[D], 4, "bar");
+ /* */test("S_TZ__wFooX__ ", new S_TZ__wFooX__ [D], 3, "sub");
+ /* */test("S_TZ__wFooX__wBar___", new S_TZ__wFooX__wBar___[D], 4, "sub");
+ /* */test("S_TZ__wFooX__wBar__f", new S_TZ__wFooX__wBar__f[D], 4, "bar");
+ /* */test("S_TZ__wFooX__wBar_I_", new S_TZ__wFooX__wBar_I_[D], 4, "sub");
+ /* */test("S_TZ__wFooX__wBar_If", new S_TZ__wFooX__wBar_If[D], 4, "bar");
+ /* */test("S_TZ__wFooX__wBarY__", new S_TZ__wFooX__wBarY__[D], 4, "sub");
+ /* */test("S_TZ__wFooX__wBarY_f", new S_TZ__wFooX__wBarY_f[D], 4, "bar");
+ /* */test("S_TZ__wFooX__wBarYI_", new S_TZ__wFooX__wBarYI_[D], 4, "sub");
+ /* */test("S_TZ__wFooX__wBarYIf", new S_TZ__wFooX__wBarYIf[D], 4, "bar");
+ /* */test("S_TZ__wFooX_f ", new S_TZ__wFooX_f [D], 3, "foo");
+ /* */test("S_TZ__wFooX_fwBar___", new S_TZ__wFooX_fwBar___[D], 4, "foo");
+ // */test("S_TZ__wFooX_fwBar__f", new S_TZ__wFooX_fwBar__f[D], 4, "bar");
+ /* */test("S_TZ__wFooX_fwBar_I_", new S_TZ__wFooX_fwBar_I_[D], 4, "foo");
+ // */test("S_TZ__wFooX_fwBar_If", new S_TZ__wFooX_fwBar_If[D], 4, "bar");
+ /* */test("S_TZ__wFooX_fwBarY__", new S_TZ__wFooX_fwBarY__[D], 4, "foo");
+ // */test("S_TZ__wFooX_fwBarY_f", new S_TZ__wFooX_fwBarY_f[D], 4, "bar");
+ /* */test("S_TZ__wFooX_fwBarYI_", new S_TZ__wFooX_fwBarYI_[D], 4, "foo");
+ // */test("S_TZ__wFooX_fwBarYIf", new S_TZ__wFooX_fwBarYIf[D], 4, "bar");
+ /* */test("S_TZ__wFooXI_ ", new S_TZ__wFooXI_ [D], 3, "sub");
+ /* */test("S_TZ__wFooXI_wBar___", new S_TZ__wFooXI_wBar___[D], 4, "sub");
+ /* */test("S_TZ__wFooXI_wBar__f", new S_TZ__wFooXI_wBar__f[D], 4, "bar");
+ // */test("S_TZ__wFooXI_wBar_I_", new S_TZ__wFooXI_wBar_I_[D], 4, "sub");
+ // */test("S_TZ__wFooXI_wBar_If", new S_TZ__wFooXI_wBar_If[D], 4, "bar");
+ /* */test("S_TZ__wFooXI_wBarY__", new S_TZ__wFooXI_wBarY__[D], 4, "sub");
+ /* */test("S_TZ__wFooXI_wBarY_f", new S_TZ__wFooXI_wBarY_f[D], 4, "bar");
+ // */test("S_TZ__wFooXI_wBarYI_", new S_TZ__wFooXI_wBarYI_[D], 4, "sub");
+ // */test("S_TZ__wFooXI_wBarYIf", new S_TZ__wFooXI_wBarYIf[D], 4, "bar");
+ /* */test("S_TZ__wFooXIf ", new S_TZ__wFooXIf [D], 3, "foo");
+ /* */test("S_TZ__wFooXIfwBar___", new S_TZ__wFooXIfwBar___[D], 4, "foo");
+ // */test("S_TZ__wFooXIfwBar__f", new S_TZ__wFooXIfwBar__f[D], 4, "bar");
+ // */test("S_TZ__wFooXIfwBar_I_", new S_TZ__wFooXIfwBar_I_[D], 4, "foo");
+ // */test("S_TZ__wFooXIfwBar_If", new S_TZ__wFooXIfwBar_If[D], 4, "bar");
+ /* */test("S_TZ__wFooXIfwBarY__", new S_TZ__wFooXIfwBarY__[D], 4, "foo");
+ // */test("S_TZ__wFooXIfwBarY_f", new S_TZ__wFooXIfwBarY_f[D], 4, "bar");
+ // */test("S_TZ__wFooXIfwBarYI_", new S_TZ__wFooXIfwBarYI_[D], 4, "foo");
+ // */test("S_TZ__wFooXIfwBarYIf", new S_TZ__wFooXIfwBarYIf[D], 4, "bar");
+
+ /* */test("S_TZ_fwFoo___ ", new S_TZ_fwFoo___ [D], 3, "mix");
+ /* */test("S_TZ_fwFoo___wBar___", new S_TZ_fwFoo___wBar___[D], 4, "mix");
+ /* */test("S_TZ_fwFoo___wBar__f", new S_TZ_fwFoo___wBar__f[D], 4, "mix");
+ /* */test("S_TZ_fwFoo___wBar_I_", new S_TZ_fwFoo___wBar_I_[D], 4, "mix");
+ /* */test("S_TZ_fwFoo___wBar_If", new S_TZ_fwFoo___wBar_If[D], 4, "mix");
+ /* */test("S_TZ_fwFoo___wBarY__", new S_TZ_fwFoo___wBarY__[D], 4, "mix");
+ /* */test("S_TZ_fwFoo___wBarY_f", new S_TZ_fwFoo___wBarY_f[D], 4, "mix");
+ /* */test("S_TZ_fwFoo___wBarYI_", new S_TZ_fwFoo___wBarYI_[D], 4, "mix");
+ /* */test("S_TZ_fwFoo___wBarYIf", new S_TZ_fwFoo___wBarYIf[D], 4, "mix");
+ /* */test("S_TZ_fwFoo__f ", new S_TZ_fwFoo__f [D], 3, "mix");
+ /* */test("S_TZ_fwFoo__fwBar___", new S_TZ_fwFoo__fwBar___[D], 4, "mix");
+ /* */test("S_TZ_fwFoo__fwBar__f", new S_TZ_fwFoo__fwBar__f[D], 4, "mix");
+ /* */test("S_TZ_fwFoo__fwBar_I_", new S_TZ_fwFoo__fwBar_I_[D], 4, "mix");
+ /* */test("S_TZ_fwFoo__fwBar_If", new S_TZ_fwFoo__fwBar_If[D], 4, "mix");
+ /* */test("S_TZ_fwFoo__fwBarY__", new S_TZ_fwFoo__fwBarY__[D], 4, "mix");
+ /* */test("S_TZ_fwFoo__fwBarY_f", new S_TZ_fwFoo__fwBarY_f[D], 4, "mix");
+ /* */test("S_TZ_fwFoo__fwBarYI_", new S_TZ_fwFoo__fwBarYI_[D], 4, "mix");
+ /* */test("S_TZ_fwFoo__fwBarYIf", new S_TZ_fwFoo__fwBarYIf[D], 4, "mix");
+ /* */test("S_TZ_fwFoo_I_ ", new S_TZ_fwFoo_I_ [D], 3, "mix");
+ /* */test("S_TZ_fwFoo_I_wBar___", new S_TZ_fwFoo_I_wBar___[D], 4, "mix");
+ /* */test("S_TZ_fwFoo_I_wBar__f", new S_TZ_fwFoo_I_wBar__f[D], 4, "mix");
+ // */test("S_TZ_fwFoo_I_wBar_I_", new S_TZ_fwFoo_I_wBar_I_[D], 4, "mix");
+ // */test("S_TZ_fwFoo_I_wBar_If", new S_TZ_fwFoo_I_wBar_If[D], 4, "mix");
+ /* */test("S_TZ_fwFoo_I_wBarY__", new S_TZ_fwFoo_I_wBarY__[D], 4, "mix");
+ /* */test("S_TZ_fwFoo_I_wBarY_f", new S_TZ_fwFoo_I_wBarY_f[D], 4, "mix");
+ // */test("S_TZ_fwFoo_I_wBarYI_", new S_TZ_fwFoo_I_wBarYI_[D], 4, "mix");
+ // */test("S_TZ_fwFoo_I_wBarYIf", new S_TZ_fwFoo_I_wBarYIf[D], 4, "mix");
+ /* */test("S_TZ_fwFoo_If ", new S_TZ_fwFoo_If [D], 3, "mix");
+ /* */test("S_TZ_fwFoo_IfwBar___", new S_TZ_fwFoo_IfwBar___[D], 4, "mix");
+ /* */test("S_TZ_fwFoo_IfwBar__f", new S_TZ_fwFoo_IfwBar__f[D], 4, "mix");
+ // */test("S_TZ_fwFoo_IfwBar_I_", new S_TZ_fwFoo_IfwBar_I_[D], 4, "mix");
+ // */test("S_TZ_fwFoo_IfwBar_If", new S_TZ_fwFoo_IfwBar_If[D], 4, "mix");
+ /* */test("S_TZ_fwFoo_IfwBarY__", new S_TZ_fwFoo_IfwBarY__[D], 4, "mix");
+ /* */test("S_TZ_fwFoo_IfwBarY_f", new S_TZ_fwFoo_IfwBarY_f[D], 4, "mix");
+ // */test("S_TZ_fwFoo_IfwBarYI_", new S_TZ_fwFoo_IfwBarYI_[D], 4, "mix");
+ // */test("S_TZ_fwFoo_IfwBarYIf", new S_TZ_fwFoo_IfwBarYIf[D], 4, "mix");
+ /* */test("S_TZ_fwFooX__ ", new S_TZ_fwFooX__ [D], 3, "mix");
+ /* */test("S_TZ_fwFooX__wBar___", new S_TZ_fwFooX__wBar___[D], 4, "mix");
+ /* */test("S_TZ_fwFooX__wBar__f", new S_TZ_fwFooX__wBar__f[D], 4, "mix");
+ /* */test("S_TZ_fwFooX__wBar_I_", new S_TZ_fwFooX__wBar_I_[D], 4, "mix");
+ /* */test("S_TZ_fwFooX__wBar_If", new S_TZ_fwFooX__wBar_If[D], 4, "mix");
+ /* */test("S_TZ_fwFooX__wBarY__", new S_TZ_fwFooX__wBarY__[D], 4, "mix");
+ /* */test("S_TZ_fwFooX__wBarY_f", new S_TZ_fwFooX__wBarY_f[D], 4, "mix");
+ /* */test("S_TZ_fwFooX__wBarYI_", new S_TZ_fwFooX__wBarYI_[D], 4, "mix");
+ /* */test("S_TZ_fwFooX__wBarYIf", new S_TZ_fwFooX__wBarYIf[D], 4, "mix");
+ /* */test("S_TZ_fwFooX_f ", new S_TZ_fwFooX_f [D], 3, "mix");
+ /* */test("S_TZ_fwFooX_fwBar___", new S_TZ_fwFooX_fwBar___[D], 4, "mix");
+ /* */test("S_TZ_fwFooX_fwBar__f", new S_TZ_fwFooX_fwBar__f[D], 4, "mix");
+ /* */test("S_TZ_fwFooX_fwBar_I_", new S_TZ_fwFooX_fwBar_I_[D], 4, "mix");
+ /* */test("S_TZ_fwFooX_fwBar_If", new S_TZ_fwFooX_fwBar_If[D], 4, "mix");
+ /* */test("S_TZ_fwFooX_fwBarY__", new S_TZ_fwFooX_fwBarY__[D], 4, "mix");
+ /* */test("S_TZ_fwFooX_fwBarY_f", new S_TZ_fwFooX_fwBarY_f[D], 4, "mix");
+ /* */test("S_TZ_fwFooX_fwBarYI_", new S_TZ_fwFooX_fwBarYI_[D], 4, "mix");
+ /* */test("S_TZ_fwFooX_fwBarYIf", new S_TZ_fwFooX_fwBarYIf[D], 4, "mix");
+ /* */test("S_TZ_fwFooXI_ ", new S_TZ_fwFooXI_ [D], 3, "mix");
+ /* */test("S_TZ_fwFooXI_wBar___", new S_TZ_fwFooXI_wBar___[D], 4, "mix");
+ /* */test("S_TZ_fwFooXI_wBar__f", new S_TZ_fwFooXI_wBar__f[D], 4, "mix");
+ // */test("S_TZ_fwFooXI_wBar_I_", new S_TZ_fwFooXI_wBar_I_[D], 4, "mix");
+ // */test("S_TZ_fwFooXI_wBar_If", new S_TZ_fwFooXI_wBar_If[D], 4, "mix");
+ /* */test("S_TZ_fwFooXI_wBarY__", new S_TZ_fwFooXI_wBarY__[D], 4, "mix");
+ /* */test("S_TZ_fwFooXI_wBarY_f", new S_TZ_fwFooXI_wBarY_f[D], 4, "mix");
+ // */test("S_TZ_fwFooXI_wBarYI_", new S_TZ_fwFooXI_wBarYI_[D], 4, "mix");
+ // */test("S_TZ_fwFooXI_wBarYIf", new S_TZ_fwFooXI_wBarYIf[D], 4, "mix");
+ /* */test("S_TZ_fwFooXIf ", new S_TZ_fwFooXIf [D], 3, "mix");
+ /* */test("S_TZ_fwFooXIfwBar___", new S_TZ_fwFooXIfwBar___[D], 4, "mix");
+ /* */test("S_TZ_fwFooXIfwBar__f", new S_TZ_fwFooXIfwBar__f[D], 4, "mix");
+ // */test("S_TZ_fwFooXIfwBar_I_", new S_TZ_fwFooXIfwBar_I_[D], 4, "mix");
+ // */test("S_TZ_fwFooXIfwBar_If", new S_TZ_fwFooXIfwBar_If[D], 4, "mix");
+ /* */test("S_TZ_fwFooXIfwBarY__", new S_TZ_fwFooXIfwBarY__[D], 4, "mix");
+ /* */test("S_TZ_fwFooXIfwBarY_f", new S_TZ_fwFooXIfwBarY_f[D], 4, "mix");
+ // */test("S_TZ_fwFooXIfwBarYI_", new S_TZ_fwFooXIfwBarYI_[D], 4, "mix");
+ // */test("S_TZ_fwFooXIfwBarYIf", new S_TZ_fwFooXIfwBarYIf[D], 4, "mix");
+
+ /* */test("S_TZI_wFoo___ ", new S_TZI_wFoo___ [D], 3, "sub");
+ /* */test("S_TZI_wFoo___wBar___", new S_TZI_wFoo___wBar___[D], 4, "sub");
+ /* */test("S_TZI_wFoo___wBar__f", new S_TZI_wFoo___wBar__f[D], 4, "bar");
+ // */test("S_TZI_wFoo___wBar_I_", new S_TZI_wFoo___wBar_I_[D], 4, "sub");
+ // */test("S_TZI_wFoo___wBar_If", new S_TZI_wFoo___wBar_If[D], 4, "bar");
+ /* */test("S_TZI_wFoo___wBarY__", new S_TZI_wFoo___wBarY__[D], 4, "sub");
+ /* */test("S_TZI_wFoo___wBarY_f", new S_TZI_wFoo___wBarY_f[D], 4, "bar");
+ // */test("S_TZI_wFoo___wBarYI_", new S_TZI_wFoo___wBarYI_[D], 4, "sub");
+ // */test("S_TZI_wFoo___wBarYIf", new S_TZI_wFoo___wBarYIf[D], 4, "bar");
+ /* */test("S_TZI_wFoo__f ", new S_TZI_wFoo__f [D], 3, "foo");
+ /* */test("S_TZI_wFoo__fwBar___", new S_TZI_wFoo__fwBar___[D], 4, "foo");
+ // */test("S_TZI_wFoo__fwBar__f", new S_TZI_wFoo__fwBar__f[D], 4, "bar");
+ // */test("S_TZI_wFoo__fwBar_I_", new S_TZI_wFoo__fwBar_I_[D], 4, "foo");
+ // */test("S_TZI_wFoo__fwBar_If", new S_TZI_wFoo__fwBar_If[D], 4, "bar");
+ /* */test("S_TZI_wFoo__fwBarY__", new S_TZI_wFoo__fwBarY__[D], 4, "foo");
+ // */test("S_TZI_wFoo__fwBarY_f", new S_TZI_wFoo__fwBarY_f[D], 4, "bar");
+ // */test("S_TZI_wFoo__fwBarYI_", new S_TZI_wFoo__fwBarYI_[D], 4, "foo");
+ // */test("S_TZI_wFoo__fwBarYIf", new S_TZI_wFoo__fwBarYIf[D], 4, "bar");
+ // */test("S_TZI_wFoo_I_ ", new S_TZI_wFoo_I_ [D], 3, "sub");
+ // */test("S_TZI_wFoo_I_wBar___", new S_TZI_wFoo_I_wBar___[D], 4, "sub");
+ // */test("S_TZI_wFoo_I_wBar__f", new S_TZI_wFoo_I_wBar__f[D], 4, "bar");
+ // */test("S_TZI_wFoo_I_wBar_I_", new S_TZI_wFoo_I_wBar_I_[D], 4, "sub");
+ // */test("S_TZI_wFoo_I_wBar_If", new S_TZI_wFoo_I_wBar_If[D], 4, "bar");
+ // */test("S_TZI_wFoo_I_wBarY__", new S_TZI_wFoo_I_wBarY__[D], 4, "sub");
+ // */test("S_TZI_wFoo_I_wBarY_f", new S_TZI_wFoo_I_wBarY_f[D], 4, "bar");
+ // */test("S_TZI_wFoo_I_wBarYI_", new S_TZI_wFoo_I_wBarYI_[D], 4, "sub");
+ // */test("S_TZI_wFoo_I_wBarYIf", new S_TZI_wFoo_I_wBarYIf[D], 4, "bar");
+ // */test("S_TZI_wFoo_If ", new S_TZI_wFoo_If [D], 3, "foo");
+ // */test("S_TZI_wFoo_IfwBar___", new S_TZI_wFoo_IfwBar___[D], 4, "foo");
+ // */test("S_TZI_wFoo_IfwBar__f", new S_TZI_wFoo_IfwBar__f[D], 4, "bar");
+ // */test("S_TZI_wFoo_IfwBar_I_", new S_TZI_wFoo_IfwBar_I_[D], 4, "foo");
+ // */test("S_TZI_wFoo_IfwBar_If", new S_TZI_wFoo_IfwBar_If[D], 4, "bar");
+ // */test("S_TZI_wFoo_IfwBarY__", new S_TZI_wFoo_IfwBarY__[D], 4, "foo");
+ // */test("S_TZI_wFoo_IfwBarY_f", new S_TZI_wFoo_IfwBarY_f[D], 4, "bar");
+ // */test("S_TZI_wFoo_IfwBarYI_", new S_TZI_wFoo_IfwBarYI_[D], 4, "foo");
+ // */test("S_TZI_wFoo_IfwBarYIf", new S_TZI_wFoo_IfwBarYIf[D], 4, "bar");
+ /* */test("S_TZI_wFooX__ ", new S_TZI_wFooX__ [D], 3, "sub");
+ /* */test("S_TZI_wFooX__wBar___", new S_TZI_wFooX__wBar___[D], 4, "sub");
+ /* */test("S_TZI_wFooX__wBar__f", new S_TZI_wFooX__wBar__f[D], 4, "bar");
+ // */test("S_TZI_wFooX__wBar_I_", new S_TZI_wFooX__wBar_I_[D], 4, "sub");
+ // */test("S_TZI_wFooX__wBar_If", new S_TZI_wFooX__wBar_If[D], 4, "bar");
+ /* */test("S_TZI_wFooX__wBarY__", new S_TZI_wFooX__wBarY__[D], 4, "sub");
+ /* */test("S_TZI_wFooX__wBarY_f", new S_TZI_wFooX__wBarY_f[D], 4, "bar");
+ // */test("S_TZI_wFooX__wBarYI_", new S_TZI_wFooX__wBarYI_[D], 4, "sub");
+ // */test("S_TZI_wFooX__wBarYIf", new S_TZI_wFooX__wBarYIf[D], 4, "bar");
+ /* */test("S_TZI_wFooX_f ", new S_TZI_wFooX_f [D], 3, "foo");
+ /* */test("S_TZI_wFooX_fwBar___", new S_TZI_wFooX_fwBar___[D], 4, "foo");
+ // */test("S_TZI_wFooX_fwBar__f", new S_TZI_wFooX_fwBar__f[D], 4, "bar");
+ // */test("S_TZI_wFooX_fwBar_I_", new S_TZI_wFooX_fwBar_I_[D], 4, "foo");
+ // */test("S_TZI_wFooX_fwBar_If", new S_TZI_wFooX_fwBar_If[D], 4, "bar");
+ /* */test("S_TZI_wFooX_fwBarY__", new S_TZI_wFooX_fwBarY__[D], 4, "foo");
+ // */test("S_TZI_wFooX_fwBarY_f", new S_TZI_wFooX_fwBarY_f[D], 4, "bar");
+ // */test("S_TZI_wFooX_fwBarYI_", new S_TZI_wFooX_fwBarYI_[D], 4, "foo");
+ // */test("S_TZI_wFooX_fwBarYIf", new S_TZI_wFooX_fwBarYIf[D], 4, "bar");
+ // */test("S_TZI_wFooXI_ ", new S_TZI_wFooXI_ [D], 3, "sub");
+ // */test("S_TZI_wFooXI_wBar___", new S_TZI_wFooXI_wBar___[D], 4, "sub");
+ // */test("S_TZI_wFooXI_wBar__f", new S_TZI_wFooXI_wBar__f[D], 4, "bar");
+ // */test("S_TZI_wFooXI_wBar_I_", new S_TZI_wFooXI_wBar_I_[D], 4, "sub");
+ // */test("S_TZI_wFooXI_wBar_If", new S_TZI_wFooXI_wBar_If[D], 4, "bar");
+ // */test("S_TZI_wFooXI_wBarY__", new S_TZI_wFooXI_wBarY__[D], 4, "sub");
+ // */test("S_TZI_wFooXI_wBarY_f", new S_TZI_wFooXI_wBarY_f[D], 4, "bar");
+ // */test("S_TZI_wFooXI_wBarYI_", new S_TZI_wFooXI_wBarYI_[D], 4, "sub");
+ // */test("S_TZI_wFooXI_wBarYIf", new S_TZI_wFooXI_wBarYIf[D], 4, "bar");
+ // */test("S_TZI_wFooXIf ", new S_TZI_wFooXIf [D], 3, "foo");
+ // */test("S_TZI_wFooXIfwBar___", new S_TZI_wFooXIfwBar___[D], 4, "foo");
+ // */test("S_TZI_wFooXIfwBar__f", new S_TZI_wFooXIfwBar__f[D], 4, "bar");
+ // */test("S_TZI_wFooXIfwBar_I_", new S_TZI_wFooXIfwBar_I_[D], 4, "foo");
+ // */test("S_TZI_wFooXIfwBar_If", new S_TZI_wFooXIfwBar_If[D], 4, "bar");
+ // */test("S_TZI_wFooXIfwBarY__", new S_TZI_wFooXIfwBarY__[D], 4, "foo");
+ // */test("S_TZI_wFooXIfwBarY_f", new S_TZI_wFooXIfwBarY_f[D], 4, "bar");
+ // */test("S_TZI_wFooXIfwBarYI_", new S_TZI_wFooXIfwBarYI_[D], 4, "foo");
+ // */test("S_TZI_wFooXIfwBarYIf", new S_TZI_wFooXIfwBarYIf[D], 4, "bar");
+
+ /* */test("S_TZIfwFoo___ ", new S_TZIfwFoo___ [D], 3, "mix");
+ /* */test("S_TZIfwFoo___wBar___", new S_TZIfwFoo___wBar___[D], 4, "mix");
+ /* */test("S_TZIfwFoo___wBar__f", new S_TZIfwFoo___wBar__f[D], 4, "mix");
+ // */test("S_TZIfwFoo___wBar_I_", new S_TZIfwFoo___wBar_I_[D], 4, "mix");
+ // */test("S_TZIfwFoo___wBar_If", new S_TZIfwFoo___wBar_If[D], 4, "mix");
+ /* */test("S_TZIfwFoo___wBarY__", new S_TZIfwFoo___wBarY__[D], 4, "mix");
+ /* */test("S_TZIfwFoo___wBarY_f", new S_TZIfwFoo___wBarY_f[D], 4, "mix");
+ // */test("S_TZIfwFoo___wBarYI_", new S_TZIfwFoo___wBarYI_[D], 4, "mix");
+ // */test("S_TZIfwFoo___wBarYIf", new S_TZIfwFoo___wBarYIf[D], 4, "mix");
+ /* */test("S_TZIfwFoo__f ", new S_TZIfwFoo__f [D], 3, "mix");
+ /* */test("S_TZIfwFoo__fwBar___", new S_TZIfwFoo__fwBar___[D], 4, "mix");
+ /* */test("S_TZIfwFoo__fwBar__f", new S_TZIfwFoo__fwBar__f[D], 4, "mix");
+ // */test("S_TZIfwFoo__fwBar_I_", new S_TZIfwFoo__fwBar_I_[D], 4, "mix");
+ // */test("S_TZIfwFoo__fwBar_If", new S_TZIfwFoo__fwBar_If[D], 4, "mix");
+ /* */test("S_TZIfwFoo__fwBarY__", new S_TZIfwFoo__fwBarY__[D], 4, "mix");
+ /* */test("S_TZIfwFoo__fwBarY_f", new S_TZIfwFoo__fwBarY_f[D], 4, "mix");
+ // */test("S_TZIfwFoo__fwBarYI_", new S_TZIfwFoo__fwBarYI_[D], 4, "mix");
+ // */test("S_TZIfwFoo__fwBarYIf", new S_TZIfwFoo__fwBarYIf[D], 4, "mix");
+ // */test("S_TZIfwFoo_I_ ", new S_TZIfwFoo_I_ [D], 3, "mix");
+ // */test("S_TZIfwFoo_I_wBar___", new S_TZIfwFoo_I_wBar___[D], 4, "mix");
+ // */test("S_TZIfwFoo_I_wBar__f", new S_TZIfwFoo_I_wBar__f[D], 4, "mix");
+ // */test("S_TZIfwFoo_I_wBar_I_", new S_TZIfwFoo_I_wBar_I_[D], 4, "mix");
+ // */test("S_TZIfwFoo_I_wBar_If", new S_TZIfwFoo_I_wBar_If[D], 4, "mix");
+ // */test("S_TZIfwFoo_I_wBarY__", new S_TZIfwFoo_I_wBarY__[D], 4, "mix");
+ // */test("S_TZIfwFoo_I_wBarY_f", new S_TZIfwFoo_I_wBarY_f[D], 4, "mix");
+ // */test("S_TZIfwFoo_I_wBarYI_", new S_TZIfwFoo_I_wBarYI_[D], 4, "mix");
+ // */test("S_TZIfwFoo_I_wBarYIf", new S_TZIfwFoo_I_wBarYIf[D], 4, "mix");
+ // */test("S_TZIfwFoo_If ", new S_TZIfwFoo_If [D], 3, "mix");
+ // */test("S_TZIfwFoo_IfwBar___", new S_TZIfwFoo_IfwBar___[D], 4, "mix");
+ // */test("S_TZIfwFoo_IfwBar__f", new S_TZIfwFoo_IfwBar__f[D], 4, "mix");
+ // */test("S_TZIfwFoo_IfwBar_I_", new S_TZIfwFoo_IfwBar_I_[D], 4, "mix");
+ // */test("S_TZIfwFoo_IfwBar_If", new S_TZIfwFoo_IfwBar_If[D], 4, "mix");
+ // */test("S_TZIfwFoo_IfwBarY__", new S_TZIfwFoo_IfwBarY__[D], 4, "mix");
+ // */test("S_TZIfwFoo_IfwBarY_f", new S_TZIfwFoo_IfwBarY_f[D], 4, "mix");
+ // */test("S_TZIfwFoo_IfwBarYI_", new S_TZIfwFoo_IfwBarYI_[D], 4, "mix");
+ // */test("S_TZIfwFoo_IfwBarYIf", new S_TZIfwFoo_IfwBarYIf[D], 4, "mix");
+ /* */test("S_TZIfwFooX__ ", new S_TZIfwFooX__ [D], 3, "mix");
+ /* */test("S_TZIfwFooX__wBar___", new S_TZIfwFooX__wBar___[D], 4, "mix");
+ /* */test("S_TZIfwFooX__wBar__f", new S_TZIfwFooX__wBar__f[D], 4, "mix");
+ // */test("S_TZIfwFooX__wBar_I_", new S_TZIfwFooX__wBar_I_[D], 4, "mix");
+ // */test("S_TZIfwFooX__wBar_If", new S_TZIfwFooX__wBar_If[D], 4, "mix");
+ /* */test("S_TZIfwFooX__wBarY__", new S_TZIfwFooX__wBarY__[D], 4, "mix");
+ /* */test("S_TZIfwFooX__wBarY_f", new S_TZIfwFooX__wBarY_f[D], 4, "mix");
+ // */test("S_TZIfwFooX__wBarYI_", new S_TZIfwFooX__wBarYI_[D], 4, "mix");
+ // */test("S_TZIfwFooX__wBarYIf", new S_TZIfwFooX__wBarYIf[D], 4, "mix");
+ /* */test("S_TZIfwFooX_f ", new S_TZIfwFooX_f [D], 3, "mix");
+ /* */test("S_TZIfwFooX_fwBar___", new S_TZIfwFooX_fwBar___[D], 4, "mix");
+ /* */test("S_TZIfwFooX_fwBar__f", new S_TZIfwFooX_fwBar__f[D], 4, "mix");
+ // */test("S_TZIfwFooX_fwBar_I_", new S_TZIfwFooX_fwBar_I_[D], 4, "mix");
+ // */test("S_TZIfwFooX_fwBar_If", new S_TZIfwFooX_fwBar_If[D], 4, "mix");
+ /* */test("S_TZIfwFooX_fwBarY__", new S_TZIfwFooX_fwBarY__[D], 4, "mix");
+ /* */test("S_TZIfwFooX_fwBarY_f", new S_TZIfwFooX_fwBarY_f[D], 4, "mix");
+ // */test("S_TZIfwFooX_fwBarYI_", new S_TZIfwFooX_fwBarYI_[D], 4, "mix");
+ // */test("S_TZIfwFooX_fwBarYIf", new S_TZIfwFooX_fwBarYIf[D], 4, "mix");
+ // */test("S_TZIfwFooXI_ ", new S_TZIfwFooXI_ [D], 3, "mix");
+ // */test("S_TZIfwFooXI_wBar___", new S_TZIfwFooXI_wBar___[D], 4, "mix");
+ // */test("S_TZIfwFooXI_wBar__f", new S_TZIfwFooXI_wBar__f[D], 4, "mix");
+ // */test("S_TZIfwFooXI_wBar_I_", new S_TZIfwFooXI_wBar_I_[D], 4, "mix");
+ // */test("S_TZIfwFooXI_wBar_If", new S_TZIfwFooXI_wBar_If[D], 4, "mix");
+ // */test("S_TZIfwFooXI_wBarY__", new S_TZIfwFooXI_wBarY__[D], 4, "mix");
+ // */test("S_TZIfwFooXI_wBarY_f", new S_TZIfwFooXI_wBarY_f[D], 4, "mix");
+ // */test("S_TZIfwFooXI_wBarYI_", new S_TZIfwFooXI_wBarYI_[D], 4, "mix");
+ // */test("S_TZIfwFooXI_wBarYIf", new S_TZIfwFooXI_wBarYIf[D], 4, "mix");
+ // */test("S_TZIfwFooXIf ", new S_TZIfwFooXIf [D], 3, "mix");
+ // */test("S_TZIfwFooXIfwBar___", new S_TZIfwFooXIfwBar___[D], 4, "mix");
+ // */test("S_TZIfwFooXIfwBar__f", new S_TZIfwFooXIfwBar__f[D], 4, "mix");
+ // */test("S_TZIfwFooXIfwBar_I_", new S_TZIfwFooXIfwBar_I_[D], 4, "mix");
+ // */test("S_TZIfwFooXIfwBar_If", new S_TZIfwFooXIfwBar_If[D], 4, "mix");
+ // */test("S_TZIfwFooXIfwBarY__", new S_TZIfwFooXIfwBarY__[D], 4, "mix");
+ // */test("S_TZIfwFooXIfwBarY_f", new S_TZIfwFooXIfwBarY_f[D], 4, "mix");
+ // */test("S_TZIfwFooXIfwBarYI_", new S_TZIfwFooXIfwBarYI_[D], 4, "mix");
+ // */test("S_TZIfwFooXIfwBarYIf", new S_TZIfwFooXIfwBarYIf[D], 4, "mix");
+
+ if (errors > 0) {
+ Console.println;
+ Console.println(errors + " error" + (if (errors > 1) "s" else ""));
+ }
+ }
+}
diff --git a/test/files/run/bug457.check b/test/files/run/bug457.check
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/test/files/run/bug457.check
diff --git a/test/files/run/bug457.scala b/test/files/run/bug457.scala
new file mode 100644
index 0000000000..98983a2fa2
--- /dev/null
+++ b/test/files/run/bug457.scala
@@ -0,0 +1,44 @@
+
+
+object Test {
+
+ def method1() = {
+ val x = "Hello, world";
+ val y = 100;
+
+ y match {
+ case _: Int
+ if (x match { case t => t.trim().length() > 0 }) =>
+ false;
+ case _ => true;
+ }
+ }
+
+ def method2(): scala.Boolean = {
+ val x: java.lang.String = "Hello, world";
+ val y: scala.Int = 100;
+ {
+ var temp1: scala.Int = y;
+ var result: scala.Boolean = false;
+ if (
+ {
+ var result1: scala.Boolean = true;
+ if (y == 100)
+ result1
+ else
+ scala.MatchError.fail("crazybox.scala", 11)
+ } && (y > 90)
+ )
+ result
+ else
+ scala.MatchError.fail("crazybox.scala", 9);
+ }
+ }
+
+ def main(args: Array[String]): Unit = {
+ method1();
+ method2();
+ }
+
+}
+
diff --git a/test/files/run/bug508.check b/test/files/run/bug508.check
new file mode 100644
index 0000000000..4539bbf2d2
--- /dev/null
+++ b/test/files/run/bug508.check
@@ -0,0 +1,3 @@
+0
+1
+2
diff --git a/test/files/run/bug508.scala b/test/files/run/bug508.scala
new file mode 100644
index 0000000000..80485371ea
--- /dev/null
+++ b/test/files/run/bug508.scala
@@ -0,0 +1,20 @@
+object Test {
+ case class Operator(x: Int);
+ val EQ = new Operator(2);
+
+ def main(args: Array[String]): Unit = {
+ val x = Pair(EQ, 0);
+ analyze(x); // should print "0"
+ val y = Pair(EQ, 1);
+ analyze(y); // should print "1"
+ val z = Pair(EQ, 2);
+ analyze(z); // should print "2"
+ }
+
+ def analyze(x: Pair[Operator, Int]) = x match {
+ case Pair(EQ, 0) => Console.println("0")
+ case Pair(EQ, 1) => Console.println("1")
+ case Pair(EQ, 2) => Console.println("2")
+ case _ => Console.println("undefined on " + x)
+ }
+}
diff --git a/test/files/run/bugs.check b/test/files/run/bugs.check
new file mode 100644
index 0000000000..206d0e9e48
--- /dev/null
+++ b/test/files/run/bugs.check
@@ -0,0 +1,97 @@
+<<< bug 98
+mycase
+>>> bug 98
+
+<<< bug 120
+one
+A
+B
+C
+>>> bug 120
+
+<<< bug 135
+Some(The answer)
+>>> bug 135
+
+<<< bug 142
+ok
+ok
+ok
+ok
+ok
+ok
+ok
+ok
+>>> bug 142
+
+<<< bug 166
+>>> bug 166
+
+<<< bug 167
+>>> bug 167
+
+<<< bug 168
+>>> bug 168
+
+<<< bug 174
+>>> bug 174
+
+<<< bug 176
+1
+>>> bug 176
+
+<<< bug 199
+>>> bug 199
+
+<<< bug 213
+Exception in thread "Thread[main,5,main]" java.lang.ClassCastException
+>>> bug 213
+
+<<< bug 217
+>>> bug 217
+
+<<< bug 222
+>>> bug 222
+
+<<< bug 225
+>>> bug 225
+
+<<< bug 226
+>>> bug 226
+
+<<< bug 233
+true
+>>> bug 233
+
+<<< bug 250
+>>> bug 250
+
+<<< bug 257
+I should come 1st and 2nd
+I should come 1st and 2nd
+I should come last
+>>> bug 257
+
+<<< bug 266
+hello
+4
+>>> bug 266
+
+<<< bug 316
+>>> bug 316
+
+<<< bug 328
+>>> bug 328
+
+<<< bug 396
+A
+B
+C
+>>> bug 396
+
+<<< bug 399
+a
+>>> bug 399
+
+
+1 error
diff --git a/test/files/run/bugs.scala b/test/files/run/bugs.scala
new file mode 100644
index 0000000000..2398f23d13
--- /dev/null
+++ b/test/files/run/bugs.scala
@@ -0,0 +1,490 @@
+//############################################################################
+// Bugs
+//############################################################################
+// $Id$
+
+//############################################################################
+// serves as an entry point with the MSIL backend
+
+object TestMain {
+ def main(args: Array[String]): Unit = {
+ Test.main(args);
+ }
+}
+
+//############################################################################
+// Bug 98
+
+object Bug98Test {
+ object MyCase { def name = "mycase" };
+ def main(args: Array[String]) = {
+ Console.println(MyCase.name);
+ }
+}
+
+//############################################################################
+// Bug 120
+
+class Bug120A(x: Int) {
+ Console.println("A");
+}
+
+trait Bug120B {
+ System.out.println("B");
+}
+class Bug120C(x: Int)
+ extends Bug120A(Bug120Test.print("one", 1))
+ with Bug120B {
+ System.out.println("C");
+}
+object Bug120Test {
+ def print[A](str: String, res: A): A = {
+ Console.println(str); res
+ }
+ def main(args: Array[String]) = {
+ val c = new Bug120C(1);
+ }
+}
+
+//############################################################################
+// Bug 135
+
+object Bug135Test {
+
+ import scala.collection.immutable.TreeMap;
+
+ def main(args: Array[String]): Unit = {
+ val myMap:TreeMap[int,String] = new TreeMap;
+ val map1 = myMap + 42 -> "The answer";
+ Console.println(map1.get(42));
+ }
+
+}
+
+//############################################################################
+// Bug 142
+
+abstract class Bug142Foo1 { class Inner; def foo: Inner; foo; }
+abstract class Bug142Foo2 { class Inner; def foo: Inner = {Console.println("ok"); null};}
+abstract class Bug142Foo3 { type Inner; def foo: Inner; foo; }
+abstract class Bug142Foo4 { type Inner; def foo: Inner = {Console.println("ok"); null.asInstanceOf[Inner]}; }
+
+trait Bug142Bar1 { type Inner; def foo: Inner = {System.out.println("ok"); null.asInstanceOf[Inner]}; }
+trait Bug142Bar2 { type Inner; def foo: Inner; foo; }
+trait Bug142Bar3 { class Inner; def foo: Inner = {System.out.println("ok"); null}; }
+trait Bug142Bar4 { class Inner; def foo: Inner; foo; }
+
+object Bug142Test1 extends Bug142Foo1 with Bug142Bar1 {def main(args:Array[String]):Unit=();}
+object Bug142Test2 extends Bug142Foo2 with Bug142Bar2 {def main(args:Array[String]):Unit=();}
+object Bug142Test3 extends Bug142Foo3 with Bug142Bar3 {def main(args:Array[String]):Unit=();}
+object Bug142Test4 extends Bug142Foo4 with Bug142Bar4 {def main(args:Array[String]):Unit=();}
+object Bug142Test5 extends Bug142Foo1 with Bug142Bar1 {def main(args:Array[String]):Unit=();}
+object Bug142Test6 extends Bug142Foo2 with Bug142Bar2 {def main(args:Array[String]):Unit=();}
+object Bug142Test7 extends Bug142Foo3 with Bug142Bar3 {def main(args:Array[String]):Unit=();}
+object Bug142Test8 extends Bug142Foo4 with Bug142Bar4 {def main(args:Array[String]):Unit=();}
+
+object Bug142Test {
+ def main(args:Array[String]): Unit = {
+ Bug142Test1;
+ Bug142Test2;
+ Bug142Test3;
+ Bug142Test4;
+ Bug142Test5;
+ Bug142Test6;
+ Bug142Test7;
+ Bug142Test8;
+ ()
+ }
+}
+
+//############################################################################
+// Bug 166
+
+object Bug166Test {
+ import scala.collection.mutable.HashMap ;
+ def main(args:Array[String]) = {
+ val m:HashMap[String,String] = new HashMap[String,String];
+ m.update("foo","bar");
+ }
+}
+
+//############################################################################
+// Bug 167
+
+class Bug167Node(bar:Int) {
+ val foo = {
+ val bar = 1;
+ bar
+ }
+}
+
+object Bug167Test {
+ def main(args: Array[String]): Unit = {
+ if (new Bug167Node(0).foo != 1) Console.println("bug 167");
+ }
+}
+
+//############################################################################
+// Bug 168
+
+class Bug168Foo {
+ class Bar;
+ def foo = new Bar;
+}
+
+object Bug168Test {
+ def main(args: Array[String]): Unit = {
+ (new Bug168Foo).foo;
+ ()
+ }
+}
+
+//############################################################################
+// Bug 174
+
+class Bug174Foo[X] {
+
+ class Tree;
+ class Node extends Tree;
+
+
+ val inner:Inner = new SubInner;
+
+ trait Inner {
+ def test: Bug174Foo[X]#Tree ;
+ }
+
+ class SubInner extends Inner {
+ def test = new Node;
+ }
+
+}
+
+object Bug174Test {
+ def main(args: Array[String]): Unit = {
+ (new Bug174Foo[Int]).inner.test;
+ ()
+ }
+}
+
+
+//############################################################################
+// Bug 176
+
+trait Bug176A {
+ type T;
+ def foo(x: T): Int;
+ def bar: T;
+ def test = foo(bar);
+}
+trait Bug176B {
+ type S <: Object;
+ type T = S;
+ def foo(x: S): Int;
+ def bar: S;
+}
+class Bug176C extends Bug176A with Bug176B {
+ class S;
+ def foo(x: S) = 1;
+ def bar = new S;
+}
+object Bug176Test {
+ def main(args: Array[String]): Unit = {
+ val x: Bug176A = new Bug176C;
+ Console.println(x.test);
+ }
+}
+
+//############################################################################
+// Bug 199
+
+class Bug199C { object o; }
+object Bug199Test {
+ def main(args: Array[String]) = {
+ (new Bug199C).o; ()
+ }
+}
+
+//############################################################################
+// Bug 213
+
+trait Bug213Foo {
+ def testAll: Unit;
+ def testAllRef: String;
+}
+
+class Bug213Bar extends Bug213Foo {
+ def testAll = (().asInstanceOf[All] : All);
+ def testAllRef = ("".asInstanceOf[AllRef] : AllRef);
+}
+
+object Bug213Test {
+ def main(args: Array[String]): Unit = {
+ val foo: Bug213Foo = new Bug213Bar;
+ foo.testAll;
+ foo.testAllRef;
+ ()
+ }
+}
+
+//############################################################################
+// Bug 217
+
+object Bug217Test {
+ def foo[t](fun: Function0[t]): t = fun();
+ def bar(x: Int): Unit = {
+ foo(() => 0);
+ ()
+ }
+ def main(args: Array[String]): Unit = bar(32);
+}
+
+//############################################################################
+// Bug 222
+
+object Bug222Test {
+ def main(args:Array[String]): Unit = {
+ val array: Array[String] = new Array(16);
+ ()
+ }
+}
+
+//############################################################################
+// Bug 225
+
+case class Bug225C();
+
+object Bug225Test {
+
+ def main(args: Array[String]): Unit = {
+ val a = new Array[Array[Bug225C]](2);
+ a(0) = new Array[Bug225C](2);
+ a(0)(0) = new Bug225C();
+ }
+}
+
+//############################################################################
+// Bug 226
+
+object Bug226Test {
+
+ def id[a](xs: Array[a]): Array[a] = xs;
+
+ def main(args: Array[String]): Unit = {
+ var xs = new Array[Int](1);
+ class X { xs };
+ xs = id(xs);
+ id(xs);
+ ()
+ }
+
+}
+
+//############################################################################
+// Bug 233
+
+object Bug233Test {
+ val b: Array[String] = null;
+ def main(args: Array[String]): Unit =
+ Console.println(b == null);
+}
+
+//############################################################################
+// Bug 250
+
+object Bug250Test {
+ def main(args: Array[String]): Unit = {
+ if (true) null;
+ ()
+ }
+}
+
+//############################################################################
+// Bug 257
+
+object Bug257Test {
+ def sayhello(): Unit = { Console.println("I should come 1st and 2nd"); };
+ def sayhi(): Unit = { Console.println("I should come last"); };
+
+ def f1(x: Unit): Unit = ();
+ def f2(x: Unit)(y: Unit): Unit = ();
+
+ def f(x: => Unit) = {
+ f1(x);
+ f2(x);
+ }
+
+ def main(args: Array[String]): Unit = {
+ f(sayhello())(sayhi())
+ }
+}
+
+//############################################################################
+// Bug 266
+
+// version - A
+
+abstract class Bug266AFoo {
+ type T <: AnyRef;
+ abstract class I0 { def f(x: T): Unit; f(null); }
+}
+
+object Bug266ATest extends Bug266AFoo {
+ type T = String;
+ class I1 extends I0 { def f(x: String): Unit = { Console.println("hello"); ();} }
+ def main(args: Array[String]): Unit = { new I1; () }
+}
+
+// version - B
+
+abstract class Bug266BA {
+ type t;
+ abstract class P {
+ def f(x: t): unit;
+ }
+}
+
+abstract class Bug266BA1 extends Bug266BA {
+ def mkP: Bug266BA1.this.P;
+ val in: t;
+}
+
+trait Bug266BB extends Bug266BA {
+ type t = int;
+ class P1 extends Bug266BB.this.P {
+ def f(x: int): unit = Console.println(x + 1);
+ }
+ def mkP = new P1;
+ val in = 3;
+}
+
+object Bug266BTest extends Application {
+ val a: Bug266BA1 = new Bug266BA1 with Bug266BB;
+ a.mkP.f(a.in);
+}
+
+// main
+
+object Bug266Test {
+ def main(args: Array[String]): Unit = {
+ Bug266ATest.main(args);
+ Bug266BTest.main(args);
+ }
+}
+
+//############################################################################
+// Bug 316
+
+class Bug316MyIterator extends Iterator[Int] {
+ def hasNext = false;
+ def next = 42;
+}
+
+object Bug316Test {
+ def main(args: Array[String]): Unit =
+ (new Bug316MyIterator) filter { x: Int => x == 1 };
+}
+
+//############################################################################
+// Bug 328
+
+object Bug328Test {
+ def test(f: Function1[Int,String]): Unit = ();
+ def main(args: Array[String]): Unit = test(args);
+}
+
+//############################################################################
+// Bug 396
+
+trait Bug396A {
+ class I {
+ def run = Console.println("A");
+ }
+}
+trait Bug396B extends Bug396A {
+ class I extends super.I {
+ override def run = { super.run; Console.println("B"); }
+ }
+}
+trait Bug396C extends Bug396A {
+ trait I extends super.I {
+ override def run = { super.run; System.out.println("C"); }
+ }
+}
+object Bug396Test extends Application with Bug396B with Bug396C {
+ class I2 extends super[Bug396B].I with super[Bug396C].I;
+ (new I2).run
+}
+
+//############################################################################
+// Bug 399
+
+object Bug399Test {
+ def f(x: String): String = {
+ trait C { def f: String = x; }
+ class D extends C;
+ trait F extends C;
+ class G extends D with F;
+ (new G).f
+ }
+
+ def main(args: Array[String]): Unit = {
+ Console.println(f("a"));
+ }
+}
+
+//############################################################################
+// Main
+
+object Test {
+ var errors: Int = 0;
+ def test(bug: Int, test: => Unit): Unit = {
+ Console.println("<<< bug " + bug);
+ try {
+ test;
+ } catch {
+ case exception => {
+ val curr: String = scala.runtime.compat.Platform.currentThread.toString();
+ Console.print("Exception in thread \"" + curr + "\" " + exception);
+ Console.println;
+ errors = errors + 1;
+ }
+ }
+ Console.println(">>> bug " + bug);
+ Console.println;
+ }
+
+ def main(args: Array[String]): Unit = {
+
+ test( 98, Bug98Test.main(args));
+ test(120, Bug120Test.main(args));
+ test(135, Bug135Test.main(args));
+ test(142, Bug142Test.main(args));
+ test(166, Bug166Test.main(args));
+ test(167, Bug167Test.main(args));
+ test(168, Bug168Test.main(args));
+ test(174, Bug174Test.main(args));
+ test(176, Bug176Test.main(args));
+ test(199, Bug199Test.main(args));
+ test(213, Bug213Test.main(args));
+ test(217, Bug217Test.main(args));
+ test(222, Bug222Test.main(args));
+ test(225, Bug225Test.main(args));
+ test(226, Bug226Test.main(args));
+ test(233, Bug233Test.main(args));
+ test(250, Bug250Test.main(args));
+ test(257, Bug257Test.main(args));
+ test(266, Bug266Test.main(args));
+ test(316, Bug316Test.main(args));
+ test(328, Bug328Test.main(args));
+ test(396, Bug396Test.main(args));
+ test(399, Bug399Test.main(args));
+
+ if (errors > 0) {
+ Console.println;
+ Console.println(errors + " error" + (if (errors > 1) "s" else ""));
+ }
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/constructors.check b/test/files/run/constructors.check
new file mode 100644
index 0000000000..0743b7e296
--- /dev/null
+++ b/test/files/run/constructors.check
@@ -0,0 +1,5 @@
+x=1 y=2
+x=3 y=3
+x=1 y=1
+x=1 y=2 a=1 b=2 c=a
+x=3 y=3 a=3 b=3 c=b
diff --git a/test/files/run/constructors.scala b/test/files/run/constructors.scala
new file mode 100644
index 0000000000..e85f3b8667
--- /dev/null
+++ b/test/files/run/constructors.scala
@@ -0,0 +1,29 @@
+// $Id$
+
+// Test constructors, including multiple ones.
+
+class A(x: Int, y: Int) {
+ def this(x: Int) = this(x, x);
+ def this() = this(1);
+ override def toString() = "x=" + x + " y=" + y;
+ class B(a: Int, b: Int, c: String) {
+ def this(str: String) = this(x, y, str);
+ override def toString() =
+ "x=" + x + " y=" + y + " a=" + a + " b=" + b + " c=" + c;
+ }
+}
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ val a1 = new A(1,2);
+ val a2 = new A(3);
+ val a3 = new A();
+ val b1 = new a1.B(1,2,"a");
+ val b2 = new a2.B("b");
+ Console.println(a1);
+ Console.println(a2);
+ Console.println(a3);
+ Console.println(b1);
+ Console.println(b2);
+ }
+}
diff --git a/test/files/run/ctor-order.check b/test/files/run/ctor-order.check
new file mode 100644
index 0000000000..b2f7f08c17
--- /dev/null
+++ b/test/files/run/ctor-order.check
@@ -0,0 +1,2 @@
+10
+10
diff --git a/test/files/run/ctor-order.scala b/test/files/run/ctor-order.scala
new file mode 100644
index 0000000000..73c1a08164
--- /dev/null
+++ b/test/files/run/ctor-order.scala
@@ -0,0 +1,28 @@
+
+/** Test that constructor operations are reordered correctly. */
+class Outer {
+
+ object global {
+ val x = 10;
+ }
+
+ class X extends AnyRef with M1 {
+ /* The constructor of X should set this.$outer to the outer instance
+ * *before* calling the super constructors. This is tested by
+ * mixin M1, which tries to access global from the enclosing class.
+ */
+ val outer = Outer.this;
+ }
+
+ trait M1: X {
+ Console.println(global.x);
+ Console.println(outer.global.x);
+ }
+
+}
+
+object Test extends AnyRef with Application {
+ val o = new Outer;
+
+ new o.X;
+}
diff --git a/test/files/run/enums.check b/test/files/run/enums.check
new file mode 100644
index 0000000000..b76705b9dd
--- /dev/null
+++ b/test/files/run/enums.check
@@ -0,0 +1,4 @@
+test Test1 was successful
+test Test2 was successful
+test Test3 was successful
+
diff --git a/test/files/run/enums.scala b/test/files/run/enums.scala
new file mode 100644
index 0000000000..2332fb87d4
--- /dev/null
+++ b/test/files/run/enums.scala
@@ -0,0 +1,80 @@
+//############################################################################
+// Enumerations
+//############################################################################
+// $Id$
+
+object Test1 {
+
+ object WeekDays extends Enumeration {
+ val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
+ }
+
+ def isWorkingDay(d: WeekDays.Value) =
+ ! (d == WeekDays.Sat || d == WeekDays.Sun);
+
+ def run: Int = {
+ val it = WeekDays filter (isWorkingDay);
+ it.toList.length
+ }
+}
+
+object Test2 {
+
+ object ThreadState extends Enumeration {
+ val New = Value("NEW");
+ val Runnable = Value("RUNNABLE");
+ val Blocked = Value("BLOCKED");
+ val Waiting = Value("WAITING");
+ val TimedWaiting = Value("TIMED_WAITING");
+ val Terminated = Value("TERMINATED");
+ }
+
+ def run: Int = {
+ val it = for (val s <- ThreadState; s.id != 0) yield s;
+ it.toList.length
+ }
+}
+
+object Test3 {
+
+ object Direction extends Enumeration("North", "South", "East", "West") {
+ val North, South, East, West = Value;
+ }
+
+ def run: Int = {
+ val it = for (val d <- Direction; d.toString() startsWith "N") yield d;
+ it.toList.length
+ }
+}
+
+//############################################################################
+// Test code
+
+object Test {
+
+ def check_success(name: String, closure: => Int, expected: Int): Unit = {
+ Console.print("test " + name);
+ try {
+ val actual: Int = closure;
+ if (actual == expected) {
+ Console.print(" was successful");
+ } else {
+ Console.print(" failed: expected "+ expected +", found "+ actual);
+ }
+ } catch {
+ case exception: Throwable => {
+ Console.print(" raised exception " + exception);
+ }
+ }
+ Console.println;
+ }
+
+ def main(args: Array[String]): Unit = {
+ check_success("Test1", Test1.run, 5);
+ check_success("Test2", Test2.run, 5);
+ check_success("Test3", Test3.run, 1);
+ Console.println;
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/exceptions.check b/test/files/run/exceptions.check
new file mode 100644
index 0000000000..b959df29ed
--- /dev/null
+++ b/test/files/run/exceptions.check
@@ -0,0 +1 @@
+ok: lookup(2000) = KO
diff --git a/test/files/run/exceptions.scala b/test/files/run/exceptions.scala
new file mode 100644
index 0000000000..04fc4a1a85
--- /dev/null
+++ b/test/files/run/exceptions.scala
@@ -0,0 +1,53 @@
+//############################################################################
+// Exceptions
+//############################################################################
+// $Id$
+
+//############################################################################
+
+abstract class IntMap[A] {
+ def lookup(key: Int): A = this match {
+ case Empty() => error("KO")
+ case _ => error("ok")
+ }
+}
+
+case class Empty[A]() extends IntMap[A];
+
+object exceptions {
+
+ def check(what: String, actual: Any, expected: Any): Unit = {
+ val success: Boolean = actual == expected;
+ Console.print(if (success) "ok" else "KO");
+ var value: String = if (actual == null) "null" else actual.toString();
+ if (value == "\u0000") value = "\\u0000";
+ Console.print(": " + what + " = " + value);
+ if (!success) Console.print(" != " + expected);
+ Console.println;
+ Console.flush;
+ }
+
+ def test: Unit = {
+ val key = 2000;
+ val map: IntMap[String] = new Empty[String];
+ val value = try {
+ map.lookup(key)
+ } catch {
+ case e => scala.runtime.compat.Platform.getMessage(e)
+ }
+ check("lookup(" + key + ")", value, "KO");
+ }
+
+}
+
+//############################################################################
+
+object Test {
+
+ def main(args: Array[String]): Unit = {
+ exceptions.test;
+ }
+
+}
+
+//############################################################################
diff --git a/test/files/run/imports.check b/test/files/run/imports.check
new file mode 100644
index 0000000000..56f5e23d45
--- /dev/null
+++ b/test/files/run/imports.check
@@ -0,0 +1,12 @@
+In C_ico, v_ico .toString() returns C_ico -> ok
+In C_ico, field .toString() returns C_ico -> ok
+In C_ico, method.toString() returns C_ico -> ok
+
+In C_ioc, v_ioc .toString() returns C_ioc -> ok
+In C_ioc, field .toString() returns C_ioc -> ok
+In C_ioc, method.toString() returns C_ioc -> ok
+
+In C_oic, v_oic .toString() returns C_oic -> ok
+In C_oic, field .toString() returns C_oic -> ok
+In C_oic, method.toString() returns C_oic -> ok
+
diff --git a/test/files/run/imports.scala b/test/files/run/imports.scala
new file mode 100644
index 0000000000..d976478d8b
--- /dev/null
+++ b/test/files/run/imports.scala
@@ -0,0 +1,97 @@
+//############################################################################
+// Import statements
+//############################################################################
+// $Id$
+
+//############################################################################
+
+object checker {
+ def check(where: String, what: String, value: Any): Unit = {
+ Console.print("In " + where + ", " + what + ".toString() returns ");
+ Console.flush;
+ val string: String = if (value == null) "null" else value.toString();
+ val test = if (string == where) "ok" else "KO";
+ Console.println(string + " -> " + test);
+ Console.flush;
+ }
+}
+
+import checker.check;
+
+//############################################################################
+
+//import o_ico.v_ico;
+
+class C_ico() {
+ o_ico.v_ico = this;
+ import o_ico.v_ico;
+ override def toString(): String = "C_ico";
+ def method: C_ico = v_ico;
+ val field: C_ico = v_ico;
+
+ check("C_ico", "v_ico ", v_ico);
+ check("C_ico", "field ", field);
+ check("C_ico", "method", method);
+ Console.println;
+}
+
+object o_ico {
+ var v_ico: C_ico = null;
+ new C_ico();
+}
+
+//############################################################################
+
+object o_ioc {
+ var v_ioc: C_ioc = null;
+ new C_ioc();
+}
+
+import o_ioc.v_ioc;
+
+
+class C_ioc() {
+ o_ioc.v_ioc = this;
+ override def toString(): String = "C_ioc";
+ def method: C_ioc = v_ioc;
+ val field: C_ioc = v_ioc;
+
+ check("C_ioc", "v_ioc ", v_ioc);
+ check("C_ioc", "field ", field);
+ check("C_ioc", "method", method);
+ Console.println;
+}
+
+//############################################################################
+
+object o_oic {
+ var v_oic: C_oic = null;
+ new C_oic();
+}
+
+import o_oic.v_oic;
+
+class C_oic() {
+ o_oic.v_oic = this;
+ override def toString(): String = "C_oic";
+ def method: C_oic = v_oic;
+ val field: C_oic = v_oic;
+
+ check("C_oic", "v_oic ", v_oic);
+ check("C_oic", "field ", field);
+ check("C_oic", "method", method);
+ Console.println;
+}
+
+//############################################################################
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ o_ico;
+ o_ioc;
+ o_oic;
+ ()
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/iq-msil.check b/test/files/run/iq-msil.check
new file mode 100644
index 0000000000..08f9fc755e
--- /dev/null
+++ b/test/files/run/iq-msil.check
@@ -0,0 +1,12 @@
+Empty
+Head: 42
+q5: Queue(0,1,2,3,4,5,6,7,8,9)
+q5[5]: 5
+q5 == q5c: True
+q5c == q5: True
+q8: Queue(2,3,4,5,6,7,8,9,10,11)
+q8 == q9: True
+Elements: 1 2 3 4 5 6 7 8 9
+String: <1-2-3-4-5-6-7-8-9>
+Length: 9
+Front: 1
diff --git a/test/files/run/iq.check b/test/files/run/iq.check
new file mode 100644
index 0000000000..8e794a8629
--- /dev/null
+++ b/test/files/run/iq.check
@@ -0,0 +1,12 @@
+Empty
+Head: 42
+q5: Queue(0,1,2,3,4,5,6,7,8,9)
+q5[5]: 5
+q5 == q5c: true
+q5c == q5: true
+q8: Queue(2,3,4,5,6,7,8,9,10,11)
+q8 == q9: true
+Elements: 1 2 3 4 5 6 7 8 9
+String: <1-2-3-4-5-6-7-8-9>
+Length: 9
+Front: 1
diff --git a/test/files/run/iq.scala b/test/files/run/iq.scala
new file mode 100644
index 0000000000..87bbe45cd7
--- /dev/null
+++ b/test/files/run/iq.scala
@@ -0,0 +1,100 @@
+/* $Id$
+ * Test file for immutable queues.
+ */
+
+import scala.collection.immutable.Queue;
+
+object iq {
+ def main = {
+ /* Create an empty queue. */
+ val q:Queue[Int] = Queue.Empty;
+
+ /* Test isEmpty.
+ * Expected: Empty
+ */
+ if(q.isEmpty) {
+ Console.println("Empty");
+ }
+
+ /* Test infix enqueing. */
+ val q2 = q + 42 + 0;
+
+ /* Test is empty and dequeue.
+ * Expected: Head: 42
+ */
+ val q4 =
+ if(q2.isEmpty) {
+ Console.println("Empty");
+ q2;
+ } else {
+ val Pair(head,q3) = q2.dequeue;
+ Console.println("Head: " + head);
+ q3;
+ };
+
+ /* Test sequence enqueing. */
+ val q5:Queue[Any] = q4.enqueue(1,2,3,4,5,6,7,8,9);
+ /* Test toString.
+ * Expected: Head: q5: Queue(0,1,2,3,4,5,6,7,8,9)
+ */
+ Console.println("q5: " + q5);
+ /* Test apply
+ * Expected: q5[5]: 5
+ */
+ Console.println("q5[5]: " + q5(5));
+
+
+
+ val q5c:Queue[int] = Queue.Empty.enqueue(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
+
+ /* Testing ==
+ * Expected: q5 == q9: true
+ * q9 == q5: true
+ */
+ Console.println("q5 == q5c: " + (q5 == q5c));
+ Console.println("q5c == q5: " + (q5c == q5));
+
+ val Pair(_,q6) = q5.dequeue;
+ val Pair(_,q7) = q6.dequeue;
+ val q8 = q7 + 10 + 11;
+ /* Test dequeu
+ * Expected: q8: Queue(2,3,4,5,6,7,8,9,10,11)
+ */
+ Console.println("q8: " + q8);
+ val q9 = new Queue(2,3,4,5,6,7,8,9,10,11);
+
+ /* Testing ==
+ * Expected: q8 == q9: true
+ */
+ Console.println("q8 == q9: " + (q8 == q9));
+
+ /* Testing elements
+ * Expected: Elements: 1 2 3 4 5 6 7 8 9
+ */
+ Console.print("Elements: ");
+ q6.elements.foreach(e => Console.print(" "+ e + " "));
+ Console.println;
+
+ /* Testing mkString
+ * Expected: String: <1-2-3-4-5-6-7-8-9>
+ */
+ Console.println("String: " + q6.mkString("<","-",">"));
+
+ /* Testing length
+ * Expected: Length: 9
+ */
+ Console.println("Length: " + q6.length);
+
+ /* Testing front
+ * Expected: Front: 1
+ */
+ Console.println("Front: " + q6.front);
+ }
+}
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ iq.main;
+ ();
+ }
+}
diff --git a/test/files/run/iterators.check b/test/files/run/iterators.check
new file mode 100644
index 0000000000..a4b1053577
--- /dev/null
+++ b/test/files/run/iterators.check
@@ -0,0 +1,7 @@
+test check_from was successful
+test check_range was successful
+test check_take was successful
+test check_drop was successful
+test check_foreach was successful
+test check_forall was successful
+
diff --git a/test/files/run/iterators.scala b/test/files/run/iterators.scala
new file mode 100644
index 0000000000..7d1e44a0df
--- /dev/null
+++ b/test/files/run/iterators.scala
@@ -0,0 +1,79 @@
+//############################################################################
+// Iterators
+//############################################################################
+// $Id$
+
+//############################################################################
+
+object Test {
+
+ def check_from: Int = {
+ val it1 = Iterator.from(-1);
+ val it2 = Iterator.from(0, -1);
+ it1.next + it2.next
+ }
+
+ def check_range: Int = {
+ val xs1 = Iterator.range(0, 10, 2) toList;
+ val xs2 = Iterator.range(0, 10, -2) toList;
+ val xs3 = Iterator.range(10, 0, -2) toList;
+ val xs4 = Iterator.range(10, 0, 2) toList;
+ xs1.length + xs2.length + xs3.length + xs4.length
+ }
+
+ def check_take: Int = {
+ val it1 = Iterator.from(0);
+ val xs1 = it1 take 10 toList;
+ xs1.length
+ }
+
+ def check_drop: Int = {
+ val it1 = Iterator.from(0);
+ val it2 = it1 map { x => 2 * x };
+ val n1 = it1 drop 2 next;
+ val n2 = it2 drop 2 next;
+ n1 + n2
+ }
+
+ def check_foreach: Int = {
+ val it1 = Iterator.from(0) take 20;
+ var n = 0;
+ it1 foreach { x => n = n + x }
+ n
+ }
+
+ def check_forall: Int = {
+ val it1 = Iterator.from(0);
+ val it2 = Iterator.from(1);
+ 0
+ }
+
+ def check_success[A](name: String, closure: => A, expected: A): Unit = {
+ Console.print("test " + name);
+ try {
+ val actual: A = closure;
+ if (actual == expected)
+ Console.print(" was successful");
+ else
+ Console.print(" failed: expected "+ expected +", found "+ actual);
+ }
+ catch {
+ case exception: Throwable => {
+ Console.print(" raised exception " + exception);
+ }
+ }
+ Console.println;
+ }
+
+ def main(args: Array[String]): Unit = {
+ check_success("check_from", check_from, -1);
+ check_success("check_range", check_range, 10);
+ check_success("check_take", check_take, 10);
+ check_success("check_drop", check_drop, 12);
+ check_success("check_foreach", check_foreach, 190);
+ check_success("check_forall", check_forall, 0);
+ Console.println;
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/lisp.check b/test/files/run/lisp.check
new file mode 100644
index 0000000000..8a61dd7315
--- /dev/null
+++ b/test/files/run/lisp.check
@@ -0,0 +1,26 @@
+(lambda (x) (+ (* x x) 1))
+(lambda (x) (+ (* x x) 1))
+
+( '(1 2 3)) = (1 2 3)
+(car '(1 2 3)) = 1
+(cdr '(1 2 3)) = (2 3)
+(null? '(2 3)) = 0
+(null? '()) = 1
+
+faculty(10) = 3628800
+faculty(10) = 3628800
+foobar = ("a" "bc" "def" "z")
+
+List('lambda,List('x),List('+,List('*,'x,'x),1))
+(lambda (x) (+ (* x x) 1))
+
+( '(1 2 3)) = (1 2 3)
+(car '(1 2 3)) = 1
+(cdr '(1 2 3)) = (2 3)
+(null? '(2 3)) = 0
+(null? '()) = 1
+
+faculty(10) = 3628800
+faculty(10) = 3628800
+foobar = ("a" "bc" "def" "z")
+
diff --git a/test/files/run/lisp.scala b/test/files/run/lisp.scala
new file mode 100644
index 0000000000..34c4e7c7cc
--- /dev/null
+++ b/test/files/run/lisp.scala
@@ -0,0 +1,522 @@
+//############################################################################
+// Lisp interpreter
+//############################################################################
+// $Id$
+
+//############################################################################
+// Lisp Scanner
+
+class LispTokenizer(s: String) extends Iterator[String] {
+ private var i = 0;
+ private def isDelimiter(ch: Char) = ch <= ' ' || ch == '(' || ch == ')';
+ def hasNext: Boolean = {
+ while (i < s.length() && s.charAt(i) <= ' ') { i = i + 1 }
+ i < s.length()
+ }
+ def next: String =
+ if (hasNext) {
+ val start = i;
+ var ch = s.charAt(i); i = i + 1;
+ if (ch == '(') "("
+ else if (ch == ')') ")"
+ else {
+ while (i < s.length() && !isDelimiter(s.charAt(i))){ i = i + 1 }
+ s.substring(start, i)
+ }
+ } else error("premature end of string")
+}
+
+//############################################################################
+// Lisp Interface
+
+trait Lisp {
+ type Data;
+
+ def string2lisp(s: String): Data;
+ def lisp2string(s: Data): String;
+
+ def evaluate(d: Data): Data;
+ // !!! def evaluate(s: String): Data = evaluate(string2lisp(s));
+ def evaluate(s: String): Data;
+}
+
+//############################################################################
+// Lisp Implementation Using Case Classes
+
+object LispCaseClasses extends Lisp {
+
+ import List.range;
+
+ trait Data {
+ def elemsToString(): String = toString();
+ }
+ case class CONS(car: Data, cdr: Data) extends Data {
+ override def toString() = "(" + elemsToString() + ")";
+ override def elemsToString() = car.toString() + (cdr match {
+ case NIL() => ""
+ case _ => " " + cdr.elemsToString();
+ })
+ }
+ case class NIL() extends Data { // !!! use case object
+ override def toString() = "()";
+ }
+ case class SYM(name: String) extends Data {
+ override def toString() = name;
+ }
+ case class NUM(x: Int) extends Data {
+ override def toString() = x.toString();
+ }
+ case class STR(x: String) extends Data {
+ override def toString() = "\"" + x + "\"";
+ }
+ case class FUN(f: List[Data] => Data) extends Data {
+ override def toString() = "<fn>";
+ }
+
+ def list(): Data =
+ NIL();
+ def list(x0: Data): Data =
+ CONS(x0, NIL());
+ def list(x0: Data, x1: Data): Data =
+ CONS(x0, list(x1));
+ def list(x0: Data, x1: Data, x2: Data): Data =
+ CONS(x0, list(x1, x2));
+ def list(x0: Data, x1: Data, x2: Data, x3: Data): Data =
+ CONS(x0, list(x1, x2, x3));
+ def list(x0: Data, x1: Data, x2: Data, x3: Data, x4: Data): Data =
+ CONS(x0, list(x1, x2, x3, x4));
+ def list(x0: Data, x1: Data, x2: Data, x3: Data, x4: Data, x5: Data): Data =
+ CONS(x0, list(x1, x2, x3, x4, x5));
+ def list(x0: Data, x1: Data, x2: Data, x3: Data, x4: Data, x5: Data,
+ x6: Data): Data =
+ CONS(x0, list(x1, x2, x3, x4, x5, x6));
+ def list(x0: Data, x1: Data, x2: Data, x3: Data, x4: Data, x5: Data,
+ x6: Data, x7: Data): Data =
+ CONS(x0, list(x1, x2, x3, x4, x5, x6, x7));
+ def list(x0: Data, x1: Data, x2: Data, x3: Data, x4: Data, x5: Data,
+ x6: Data, x7: Data, x8: Data): Data =
+ CONS(x0, list(x1, x2, x3, x4, x5, x6, x7, x8));
+ def list(x0: Data, x1: Data, x2: Data, x3: Data, x4: Data, x5: Data,
+ x6: Data, x7: Data, x8: Data, x9: Data): Data =
+ CONS(x0, list(x1, x2, x3, x4, x5, x6, x7, x8, x9));
+
+ var curexp: Data = null;
+ var trace: Boolean = false;
+ var indent: Int = 0;
+
+ def lispError[a](msg: String): a =
+ error("error: " + msg + "\n" + curexp);
+
+ trait Environment {
+ def lookup(n: String): Data;
+ def extendRec(name: String, expr: Environment => Data) =
+ new Environment {
+ def lookup(n: String): Data =
+ if (n == name) expr(this) else Environment.this.lookup(n);
+ }
+ def extend(name: String, v: Data) = extendRec(name, (env1 => v));
+ }
+ val EmptyEnvironment = new Environment {
+ def lookup(n: String): Data = lispError("undefined: " + n);
+ }
+
+ def toList(x: Data): List[Data] = x match {
+ case NIL() => List()
+ case CONS(y, ys) => y :: toList(ys)
+ case _ => lispError("malformed list: " + x);
+ }
+
+ def toBoolean(x: Data) = x match {
+ case NUM(0) => false
+ case _ => true
+ }
+
+ def normalize(x: Data): Data = x match {
+ case CONS(SYM("def"),
+ CONS(CONS(SYM(name), args), CONS(body, CONS(expr, NIL())))) =>
+ normalize(list(SYM("def"),
+ SYM(name), list(SYM("lambda"), args, body), expr))
+ case CONS(SYM("cond"), CONS(CONS(SYM("else"), CONS(expr, NIL())),NIL())) =>
+ normalize(expr)
+ case CONS(SYM("cond"), CONS(CONS(test, CONS(expr, NIL())), rest)) =>
+ normalize(list(SYM("if"), test, expr, CONS(SYM("cond"), rest)))
+ case CONS(h, t) => CONS(normalize(h), normalize(t))
+ case _ => x
+ }
+
+ def eval(x: Data, env: Environment): Data = {
+ val prevexp = curexp;
+ curexp = x;
+ if (trace) {
+ for (val x <- range(1, indent)) Console.print(" ");
+ Console.println("===> " + x);
+ indent = indent + 1;
+ }
+ val result = eval1(x, env);
+ if (trace) {
+ indent = indent - 1;
+ for (val x <- range(1, indent)) Console.print(" ");
+ Console.println("<=== " + result);
+ }
+ curexp = prevexp;
+ result
+ }
+
+ def eval1(x: Data, env: Environment): Data = x match {
+ case SYM(name) =>
+ env lookup name
+ case CONS(SYM("def"), CONS(SYM(name), CONS(y, CONS(z, NIL())))) =>
+ eval(z, env.extendRec(name, (env1 => eval(y, env1))))
+ case CONS(SYM("val"), CONS(SYM(name), CONS(y, CONS(z, NIL())))) =>
+ eval(z, env.extend(name, eval(y, env)))
+ case CONS(SYM("lambda"), CONS(params, CONS(y, NIL()))) =>
+ mkLambda(params, y, env)
+ case CONS(SYM("if"), CONS(c, CONS(t, CONS(e, NIL())))) =>
+ if (toBoolean(eval(c, env))) eval(t, env) else eval(e, env)
+ case CONS(SYM("quote"), CONS(x, NIL())) =>
+ x
+ case CONS(y, xs) =>
+ apply(eval(y, env), toList(xs) map (x => eval(x, env)))
+ case NUM(_) => x
+ case STR(_) => x
+ case FUN(_) => x
+ case _ =>
+ lispError("illegal term")
+ }
+
+ def apply(fn: Data, args: List[Data]): Data = fn match {
+ case FUN(f) => f(args);
+ case _ => lispError("application of non-function: " + fn);
+ }
+
+ def mkLambda(params: Data, expr: Data, env: Environment): Data = {
+
+ def extendEnv(env: Environment,
+ ps: List[String], args: List[Data]): Environment =
+ Pair(ps, args) match {
+ case Pair(List(), List()) =>
+ env
+ case Pair(p :: ps1, arg :: args1) =>
+ extendEnv(env.extend(p, arg), ps1, args1)
+ case _ =>
+ lispError("wrong number of arguments")
+ }
+
+ val ps: List[String] = toList(params) map {
+ case SYM(name) => name
+ case _ => error("illegal parameter list");
+ }
+
+ FUN(args => eval(expr, extendEnv(env, ps, args)))
+ }
+
+ val globalEnv = EmptyEnvironment
+ .extend("=", FUN({
+ case List(NUM(arg1),NUM(arg2)) => NUM(if (arg1 == arg2) 1 else 0)
+ case List(STR(arg1),STR(arg2)) => NUM(if (arg1 == arg2) 1 else 0)}))
+ .extend("+", FUN({
+ case List(NUM(arg1),NUM(arg2)) => NUM(arg1 + arg2)
+ case List(STR(arg1),STR(arg2)) => STR(arg1 + arg2)}))
+ .extend("-", FUN({
+ case List(NUM(arg1),NUM(arg2)) => NUM(arg1 - arg2)}))
+ .extend("*", FUN({
+ case List(NUM(arg1),NUM(arg2)) => NUM(arg1 * arg2)}))
+ .extend("/", FUN({
+ case List(NUM(arg1),NUM(arg2)) => NUM(arg1 / arg2)}))
+ .extend("car", FUN({
+ case List(CONS(x, xs)) => x}))
+ .extend("cdr", FUN({
+ case List(CONS(x, xs)) => xs}))
+ .extend("null?", FUN({
+ case List(NIL()) => NUM(1)
+ case _ => NUM(0)}))
+ .extend("cons", FUN({
+ case List(x, y) => CONS(x, y)}));
+
+ def evaluate(x: Data): Data = eval(normalize(x), globalEnv);
+ def evaluate(s: String): Data = evaluate(string2lisp(s));
+
+ def string2lisp(s: String): Data = {
+ val it = new LispTokenizer(s);
+ def parseExpr(token: String): Data = {
+ if (token == "(") parseList
+ else if (token == ")") error("unbalanced parentheses")
+ else if ('0' <= token.charAt(0) && token.charAt(0) <= '9')
+ NUM(scala.runtime.compat.Platform.parseInt(token))
+ else if (token.charAt(0) == '\"' && token.charAt(token.length()-1)=='\"')
+ STR(token.substring(1,token.length() - 1))
+ else SYM(token)
+ }
+ def parseList: Data = {
+ val token = it.next;
+ if (token == ")") NIL() else CONS(parseExpr(token), parseList)
+ }
+ parseExpr(it.next)
+ }
+
+ def lisp2string(d: Data): String = d.toString();
+}
+
+//############################################################################
+// Lisp Implementation Using Any
+
+object LispAny extends Lisp {
+
+ import List._;
+
+ type Data = Any;
+
+ case class Lambda(f: List[Data] => Data);
+
+ var curexp: Data = null;
+ var trace: boolean = false;
+ var indent: int = 0;
+
+ def lispError[a](msg: String): a =
+ error("error: " + msg + "\n" + curexp);
+
+ trait Environment {
+ def lookup(n: String): Data;
+ def extendRec(name: String, expr: Environment => Data) =
+ new Environment {
+ def lookup(n: String): Data =
+ if (n == name) expr(this) else Environment.this.lookup(n);
+ }
+ def extend(name: String, v: Data) = extendRec(name, (env1 => v));
+ }
+ val EmptyEnvironment = new Environment {
+ def lookup(n: String): Data = lispError("undefined: " + n);
+ }
+
+ def asList(x: Data): List[Data] = x match {
+ case y: List[Data] => y
+ case _ => lispError("malformed list: " + x)
+ }
+
+ def asInt(x: Data): int = x match {
+ case y: int => y
+ case _ => lispError("not an integer: " + x)
+ }
+
+ def asString(x: Data): String = x match {
+ case y: String => y
+ case _ => lispError("not a string: " + x)
+ }
+
+ def asBoolean(x: Data): boolean =
+ if (x == 0) false else true;
+
+ def normalize(x: Data): Data = x match {
+ case 'and :: x :: y :: Nil =>
+ normalize('if :: x :: y :: 0 :: Nil)
+ case 'or :: x :: y :: Nil =>
+ normalize('if :: x :: 1 :: y :: Nil)
+ case 'def :: (name :: args) :: body :: expr :: Nil =>
+ normalize('def :: name :: ('lambda :: args :: body :: Nil) :: expr :: Nil)
+ case 'cond :: ('else :: expr :: Nil) :: rest =>
+ normalize(expr);
+ case 'cond :: (test :: expr :: Nil) :: rest =>
+ normalize('if :: test :: expr :: ('cond :: rest) :: Nil)
+ case 'cond :: 'else :: expr :: Nil =>
+ normalize(expr)
+ case h :: t =>
+ normalize(h) :: asList(normalize(t))
+ case _ =>
+ x
+ }
+
+ def eval(x: Data, env: Environment): Data = {
+ val prevexp = curexp;
+ curexp = x;
+ if (trace) {
+ for (val x <- range(1, indent)) Console.print(" ");
+ Console.println("===> " + x);
+ indent = indent + 1;
+ }
+ val result = eval1(x, env);
+ if (trace) {
+ indent = indent - 1;
+ for (val x <- range(1, indent)) Console.print(" ");
+ Console.println("<=== " + result);
+ }
+ curexp = prevexp;
+ result
+ }
+
+ def eval1(x: Data, env: Environment): Data = x match {
+ case Symbol(name) =>
+ env lookup name
+ case 'def :: Symbol(name) :: y :: z :: Nil =>
+ eval(z, env.extendRec(name, (env1 => eval(y, env1))))
+ case 'val :: Symbol(name) :: y :: z :: Nil =>
+ eval(z, env.extend(name, eval(y, env)))
+ case 'lambda :: params :: y :: Nil =>
+ mkLambda(params, y, env)
+ case 'if :: c :: y :: z :: Nil =>
+ if (asBoolean(eval(c, env))) eval(y, env) else eval(z, env)
+ case 'quote :: y :: Nil =>
+ y
+ case y :: z =>
+ apply(eval(y, env), z map (x => eval(x, env)))
+ case Lambda(_) => x
+ case y: String => x
+ case y: int => x
+ case y => lispError("illegal term")
+ }
+
+ def lisp2string(x: Data): String = x match {
+ case Symbol(name) => name
+ case Nil => "()"
+ case y :: ys =>
+ def list2string(xs: List[Data]): String = xs match {
+ case List() => ""
+ case y :: ys => " " + lisp2string(y) + list2string(ys)
+ }
+ "(" + lisp2string(y) + list2string(ys) + ")"
+ case _ => if (x.isInstanceOf[String]) "\"" + x + "\""; else x.toString()
+ }
+
+ def apply(fn: Data, args: List[Data]): Data = fn match {
+ case Lambda(f) => f(args);
+ case _ => lispError("application of non-function: " + fn + " to " + args);
+ }
+
+ def mkLambda(params: Data, expr: Data, env: Environment): Data = {
+
+ def extendEnv(env: Environment,
+ ps: List[String], args: List[Data]): Environment =
+ Pair(ps, args) match {
+ case Pair(List(), List()) =>
+ env
+ case Pair(p :: ps1, arg :: args1) =>
+ extendEnv(env.extend(p, arg), ps1, args1)
+ case _ =>
+ lispError("wrong number of arguments")
+ }
+
+ val ps: List[String] = asList(params) map {
+ case Symbol(name) => name
+ case _ => error("illegal parameter list");
+ }
+
+ Lambda(args => eval(expr, extendEnv(env, ps, args)))
+ }
+
+ val globalEnv = EmptyEnvironment
+ .extend("=", Lambda{
+ case List(arg1, arg2) => if(arg1 == arg2) 1 else 0})
+ .extend("+", Lambda{
+ case List(arg1: int, arg2: int) => arg1 + arg2
+ case List(arg1: String, arg2: String) => arg1 + arg2})
+ .extend("-", Lambda{
+ case List(arg1: int, arg2: int) => arg1 - arg2})
+ .extend("*", Lambda{
+ case List(arg1: int, arg2: int) => arg1 * arg2})
+ .extend("/", Lambda{
+ case List(arg1: int, arg2: int) => arg1 / arg2})
+ .extend("nil", Nil)
+ .extend("cons", Lambda{
+ case List(arg1, arg2) => arg1 :: asList(arg2)})
+ .extend("car", Lambda{
+ case List(x :: xs) => x})
+ .extend("cdr", Lambda{
+ case List(x :: xs) => xs})
+ .extend("null?", Lambda{
+ case List(Nil) => 1
+ case _ => 0});
+
+ def evaluate(x: Data): Data = eval(normalize(x), globalEnv);
+ def evaluate(s: String): Data = evaluate(string2lisp(s));
+
+ def string2lisp(s: String): Data = {
+ val it = new LispTokenizer(s);
+ def parseExpr(token: String): Data = {
+ if (token == "(") parseList
+ else if (token == ")") error("unbalanced parentheses")
+ //else if (Character.isDigit(token.charAt(0)))
+ else if (scala.runtime.compat.Platform.isDigit(token.charAt(0)))
+ scala.runtime.compat.Platform.parseInt(token)
+ else if (token.charAt(0) == '\"' && token.charAt(token.length()-1)=='\"')
+ token.substring(1,token.length() - 1)
+ else Symbol(token)
+ }
+ def parseList: List[Data] = {
+ val token = it.next;
+ if (token == ")") Nil else parseExpr(token) :: parseList
+ }
+ parseExpr(it.next)
+ }
+}
+
+//############################################################################
+// List User
+
+class LispUser(lisp: Lisp) {
+
+ import lisp._;
+
+ def evaluate(s: String) = lisp2string(lisp.evaluate(s));
+
+ def run = {
+
+ Console.println(string2lisp("(lambda (x) (+ (* x x) 1))").asInstanceOf[Object]);
+ Console.println(lisp2string(string2lisp("(lambda (x) (+ (* x x) 1))")));
+ Console.println;
+
+ Console.println("( '(1 2 3)) = " + evaluate(" (quote(1 2 3))"));
+ Console.println("(car '(1 2 3)) = " + evaluate("(car (quote(1 2 3)))"));
+ Console.println("(cdr '(1 2 3)) = " + evaluate("(cdr (quote(1 2 3)))"));
+ Console.println("(null? '(2 3)) = " + evaluate("(null? (quote(2 3)))"));
+ Console.println("(null? '()) = " + evaluate("(null? (quote()))"));
+ Console.println;
+
+ Console.println("faculty(10) = " + evaluate(
+ "(def (faculty n) " +
+ "(if (= n 0) " +
+ "1 " +
+ "(* n (faculty (- n 1)))) " +
+ "(faculty 10))"));
+ Console.println("faculty(10) = " + evaluate(
+ "(def (faculty n) " +
+ "(cond " +
+ "((= n 0) 1) " +
+ "(else (* n (faculty (- n 1))))) " +
+ "(faculty 10))"));
+ Console.println("foobar = " + evaluate(
+ "(def (foo n) " +
+ "(cond " +
+ "((= n 0) \"a\")" +
+ "((= n 1) \"b\")" +
+ "((= (/ n 2) 1) " +
+ "(cond " +
+ "((= n 2) \"c\")" +
+ "(else \"d\")))" +
+ "(else " +
+ "(def (bar m) " +
+ "(cond " +
+ "((= m 0) \"e\")" +
+ "((= m 1) \"f\")" +
+ "(else \"z\"))" +
+ "(bar (- n 4)))))" +
+ "(val nil (quote ())" +
+ "(val v1 (foo 0) " +
+ "(val v2 (+ (foo 1) (foo 2)) " +
+ "(val v3 (+ (+ (foo 3) (foo 4)) (foo 5)) " +
+ "(val v4 (foo 6) " +
+ "(cons v1 (cons v2 (cons v3 (cons v4 nil))))))))))"));
+ Console.println;
+ }
+}
+
+//############################################################################
+// Main
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ new LispUser(LispCaseClasses).run;
+ new LispUser(LispAny).run;
+ ()
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/lists.check b/test/files/run/lists.check
new file mode 100644
index 0000000000..1da0075273
--- /dev/null
+++ b/test/files/run/lists.check
@@ -0,0 +1,12 @@
+test check_count was successful
+test check_diff was successful
+test check_exists was successful
+test check_filter was successful
+test check_foldLeft was successful
+test check_forall was successful
+test check_intersect was successful
+test check_remove was successful
+test check_union was successful
+test check_zip was successful
+test check_zipAll was successful
+
diff --git a/test/files/run/lists.scala b/test/files/run/lists.scala
new file mode 100644
index 0000000000..3791828a1c
--- /dev/null
+++ b/test/files/run/lists.scala
@@ -0,0 +1,115 @@
+//############################################################################
+// Lists
+//############################################################################
+// $Id$
+
+//############################################################################
+
+object Test {
+
+ val xs1 = List(1, 2, 3);
+ val xs2 = List('a', 'b');
+ val xs3 = List(List(1, 2), List(4, 5));
+ val xs4 = List(2, 4, 6, 8);
+ val xs5 = List(List(3, 4), List(3), List(4, 5));
+
+ def check_count: int = {
+ val n1 = xs1 count { e => e % 2 != 0 };
+ val n2 = xs4 count { e => e < 5 };
+ n1 + n2
+ }
+
+ def check_diff: int = {
+ val ys1 = xs1 diff xs4;
+ val ys2 = xs3 diff xs5;
+ ys1.length + ys2.length
+ }
+
+ def check_exists: boolean = {
+ val b1 = xs1 exists { e => e % 2 == 0 };
+ val b2 = xs4 exists { e => e == 5 };
+ b1 & b2
+ }
+
+ def check_filter: int = {
+ val ys1 = xs1 filter { e => e % 2 == 0 };
+ val ys2 = xs4 filter { e => e < 5 };
+ ys1.length + ys2.length
+ }
+
+ def check_foldLeft: int = {
+ val n1 = xs1.foldLeft(0)((e1, e2) => e1 + e2);
+ val ys1 = xs4.foldLeft(List[Int]())((e1, e2) => e2 :: e1);
+ n1 + ys1.length
+ }
+
+ def check_forall: boolean = {
+ val b1 = xs1 forall { e => e < 10};
+ val b2 = xs4 forall { e => e % 2 == 0 };
+ b1 & b2
+ }
+
+ def check_intersect: int = {
+ val ys1 = xs1 intersect xs4;
+ val ys2 = xs3 intersect xs5;
+ ys1.length + ys2.length
+ }
+
+ def check_remove: int = {
+ val ys1 = xs1 remove { e => e % 2 != 0 };
+ val ys2 = xs4 remove { e => e < 5 };
+ ys1.length + ys2.length
+ }
+
+ def check_union: int = {
+ val ys1 = xs1 union xs4;
+ val ys2 = xs3 union xs5;
+ ys1.length + ys2.length
+ }
+
+ def check_zip: int = {
+ val ys1 = xs1 zip xs2;
+ val ys2 = xs1 zip xs3;
+ ys1.length + ys2.length
+ }
+
+ def check_zipAll: int = {
+ val ys1 = xs1.zipAll(xs2, 0, '_');
+ val ys2 = xs1.zipAll(xs3, 0, List(-1));
+ ys1.length + ys2.length
+ }
+
+ def check_success[A](name: String, closure: => A, expected: A): Unit = {
+ Console.print("test " + name);
+ try {
+ val actual: A = closure;
+ if (actual == expected)
+ Console.print(" was successful");
+ else
+ Console.print(" failed: expected "+ expected +", found "+ actual);
+ }
+ catch {
+ case exception: Throwable => {
+ Console.print(" raised exception " + exception);
+ }
+ }
+ Console.println;
+ }
+
+ def main(args: Array[String]): Unit = {
+ check_success("check_count", check_count, 4);
+ check_success("check_diff", check_diff, 3);
+ check_success("check_exists", check_exists, false);
+ check_success("check_filter", check_filter, 3);
+ check_success("check_foldLeft", check_foldLeft, 10);
+ check_success("check_forall", check_forall, true);
+ check_success("check_intersect", check_intersect, 2);
+ check_success("check_remove", check_remove, 3);
+ check_success("check_union", check_union, 10);
+ check_success("check_zip", check_zip, 4);
+ check_success("check_zipAll", check_zipAll, 6);
+ Console.println;
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/literals.check b/test/files/run/literals.check
new file mode 100644
index 0000000000..5e848f9a47
--- /dev/null
+++ b/test/files/run/literals.check
@@ -0,0 +1,65 @@
+test '\u0024' == '$' was successful
+test '\u005f' == '_' was successful
+test 65.asInstanceOf[char] == 'A' was successful
+test "\141\142" == "ab" was successful
+test "\0x61\0x62".trim() == "x61\0x62" was successful
+
+test 01 == 1 was successful
+test 010 == 8 was successful
+test 0X01 == 1 was successful
+test 0x01 == 1 was successful
+test 0x10 == 16 was successful
+test 0xa == 10 was successful
+test 0x0a == 10 was successful
+test +01 == 1 was successful
+test +010 == 8 was successful
+test +0x01 == 1 was successful
+test +0x10 == 16 was successful
+test +0xa == 10 was successful
+test +0x0a == 10 was successful
+test -01 == -1 was successful
+test -010 == -8 was successful
+test -0x01 == -1 was successful
+test -0x10 == -16 was successful
+test -0xa == -10 was successful
+test -0x0a == -10 was successful
+test 017777777777 == 2147483647 was successful
+test 020000000000 == -2147483648 was successful
+test 037777777777 == -1 was successful
+test 0x7fffffff == 2147483647 was successful
+test 0x80000000 == -2147483648 was successful
+test 0xffffffff == -1 was successful
+
+test 1l == 1L was successful
+test 1L == 1l was successful
+test 1.asInstanceOf[long] == 1l was successful
+test 0777777777777777777777L == 9223372036854775807L was successful
+test 01000000000000000000000L == -9223372036854775808L was successful
+test 01777777777777777777777L == -1L was successful
+test 0x7fffffffffffffffL == 9223372036854775807L was successful
+test 0x8000000000000000L == -9223372036854775808L was successful
+test 0xffffffffffffffffL == -1L was successful
+
+test 1e1f == 10.0f was successful
+test 2.f == 2.0f was successful
+test .3f == 0.3f was successful
+test 0f == 0.0f was successful
+test 3.14f == 3.14f was successful
+test 6.022e23f == 6.022e23f was successful
+test 09f == 9.0f was successful
+test 1.asInstanceOf[float] == 1.0 was successful
+test 1l.asInstanceOf[float] == 1.0 was successful
+
+test 1e1 == 10.0 was successful
+test 2. == 2.0 was successful
+test 2.d == 2.0 was successful
+test .3 == 0.3 was successful
+test 0.0 == 0.0 was successful
+test 0d == 0.0 was successful
+test 3.14 == 3.14 was successful
+test 1e-9d == 1.0e-9 was successful
+test 1e137 == 1.0e137 was successful
+test 1.asInstanceOf[double] == 1.0 was successful
+test 1l.asInstanceOf[double] == 1.0 was successful
+
+test "".length() was successful
diff --git a/test/files/run/literals.scala b/test/files/run/literals.scala
new file mode 100644
index 0000000000..b0077aec9d
--- /dev/null
+++ b/test/files/run/literals.scala
@@ -0,0 +1,136 @@
+//############################################################################
+// Literals
+//############################################################################
+// $Id$
+
+//############################################################################
+
+object Test {
+
+ /* I add a couple of Unicode identifier tests here temporarily */
+
+ def \u03b1\u03c1\u03b5\u03c4\u03b7 = "alpha rho epsilon tau eta";
+
+ case class GGG(i:int) {
+ def \u21a1\u21a1( that:GGG ) = that;
+ }
+ def check_success[a](name: String, closure: => a, expected: a): Unit = {
+ Console.print("test " + name);
+ try {
+ val actual: a = closure;
+ if (actual == expected) {
+ Console.print(" was successful");
+ } else {
+ Console.print(" failed: expected "+ expected +", found "+ actual);
+ }
+ } catch {
+ case exception: Throwable => {
+ Console.print(" raised exception " + exception);
+ }
+ }
+ Console.println;
+ }
+
+ def main(args: Array[String]) = {
+ // char
+ check_success("'\\u0024' == '$'", '\u0024', '$');
+ check_success("'\\u005f' == '_'", '\u005f', '_');
+ check_success("65.asInstanceOf[char] == 'A'", 65.asInstanceOf[char], 'A');
+ check_success("\"\\141\\142\" == \"ab\"", "\141\142", "ab");
+ check_success("\"\\0x61\\0x62\".trim() == \"x61\\0x62\"", "\0x61\0x62".trim(), "x61\0x62");
+
+ Console.println;
+
+ // int
+ check_success("01 == 1", 01, 1);
+ check_success("010 == 8", 010, 8);
+ check_success("0X01 == 1", 0X01, 1);
+ check_success("0x01 == 1", 0x01, 1);
+ check_success("0x10 == 16", 0x10, 16);
+ check_success("0xa == 10", 0xa, 10);
+ check_success("0x0a == 10", 0x0a, 10);
+
+ check_success("+01 == 1", +01, 1);
+ check_success("+010 == 8", +010, 8);
+ check_success("+0x01 == 1", +0x01, 1);
+ check_success("+0x10 == 16", +0x10, 16);
+ check_success("+0xa == 10", +0xa, 10);
+ check_success("+0x0a == 10", +0x0a, 10);
+
+ check_success("-01 == -1", -01, -1);
+ check_success("-010 == -8", -010, -8);
+ check_success("-0x01 == -1", -0x01, -1);
+ check_success("-0x10 == -16", -0x10, -16);
+ check_success("-0xa == -10", -0xa, -10);
+ check_success("-0x0a == -10", -0x0a, -10);
+
+ check_success("017777777777 == 2147483647", 017777777777, 2147483647);
+ check_success("020000000000 == -2147483648", 020000000000, -2147483648);
+ check_success("037777777777 == -1", 037777777777, -1);
+
+ check_success("0x7fffffff == 2147483647", 0x7fffffff, 2147483647);
+ check_success("0x80000000 == -2147483648", 0x80000000, -2147483648);
+ check_success("0xffffffff == -1", 0xffffffff, -1);
+
+ Console.println;
+
+ // long
+ check_success("1l == 1L", 1l, 1L);
+ check_success("1L == 1l", 1L, 1l);
+ check_success("1.asInstanceOf[long] == 1l", 1.asInstanceOf[long], 1l);
+
+ check_success("0777777777777777777777L == 9223372036854775807L",
+ 0777777777777777777777L, 9223372036854775807L);
+ check_success("01000000000000000000000L == -9223372036854775808L",
+ 01000000000000000000000L, -9223372036854775808L);
+ check_success("01777777777777777777777L == -1L",
+ 01777777777777777777777L, -1L);
+
+ check_success("0x7fffffffffffffffL == 9223372036854775807L",
+ 0x7fffffffffffffffL, 9223372036854775807L);
+ check_success("0x8000000000000000L == -9223372036854775808L",
+ 0x8000000000000000L, -9223372036854775808L);
+ check_success("0xffffffffffffffffL == -1L",
+ 0xffffffffffffffffL, -1L);
+
+ Console.println;
+
+ // see JLS at address:
+ // http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#230798
+
+ // float
+ check_success("1e1f == 10.0f", 1e1f, 10.0f);
+ check_success("2.f == 2.0f", 2.f, 2.0f);
+ check_success(".3f == 0.3f", .3f, 0.3f);
+ check_success("0f == 0.0f", 0f, 0.0f);
+ check_success("3.14f == 3.14f", 3.14f, 3.14f);
+ check_success("6.022e23f == 6.022e23f", 6.022e23f, 6.022e23f);
+ check_success("09f == 9.0f", 09f, 9.0f);
+ check_success("1.asInstanceOf[float] == 1.0", 1.asInstanceOf[float], 1.0f);
+ check_success("1l.asInstanceOf[float] == 1.0", 1l.asInstanceOf[float], 1.0f);
+
+ Console.println;
+
+ // double
+ check_success("1e1 == 10.0", 1e1, 10.0);
+ check_success("2. == 2.0", 2., 2.0);
+ check_success("2.d == 2.0", 2.d, 2.0);
+ check_success(".3 == 0.3", .3, 0.3);
+ check_success("0.0 == 0.0", 0.0, 0.0);
+ check_success("0d == 0.0", 0d, 0.0);
+ check_success("3.14 == 3.14", 3.14, 3.14);
+ check_success("1e-9d == 1.0e-9", 1e-9d, 1.0e-9);
+ check_success("1e137 == 1.0e137", 1e137, 1.0e137);
+ check_success("1.asInstanceOf[double] == 1.0", 1.asInstanceOf[double], 1.0);
+ check_success("1l.asInstanceOf[double] == 1.0", 1l.asInstanceOf[double], 1.0);
+
+ Console.println;
+ check_success("\"\".length()", "\u001a".length(), 1);
+/*
+ val ggg = GGG( 1 ) \u21a1\u21a1 GGG( 2 );
+ check_success("ggg == GGG( 2 )", ggg, GGG( 2 ));
+*/
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/map_test.check b/test/files/run/map_test.check
new file mode 100644
index 0000000000..a788c0fbca
--- /dev/null
+++ b/test/files/run/map_test.check
@@ -0,0 +1,3 @@
+0->0 1->1 2->2 3->3 4->4 5->5 6->6 7->7 8->8 9->9 10->10 11->11 12->12 13->13 14->14 15->15 16->16 17->17 18->18 19->19 20->20 21->21 22->22 23->23 24->24 25->25 26->26 27->27 28->28 29->29 30->30 31->31 32->32 33->33 34->34 35->35 36->36 37->37 38->38 39->39 40->40 41->41 42->42 666->A bigger random number 4711->A big random number
+0->0 1->1 2->2 3->3 4->4 5->5 6->6 7->7 8->8 9->9 10->10 11->11 12->12 13->13 14->14 15->15 16->16 17->17 18->18 19->19 20->20 21->21 22->22 23->23 24->24 25->25 26->26 27->27 28->28 29->29 30->30 31->31 32->32 33->33 34->34 35->35 36->36 37->37 38->38 39->39 40->40 41->41 42->42 666->A bigger random number 4711->A big random number
+OK
diff --git a/test/files/run/map_test.scala b/test/files/run/map_test.scala
new file mode 100644
index 0000000000..53ee416367
--- /dev/null
+++ b/test/files/run/map_test.scala
@@ -0,0 +1,42 @@
+import scala.collection.immutable.Map;
+import scala.collection.immutable.TreeMap;
+import scala.collection.immutable.ListMap;
+
+object Test extends Application {
+ test1();
+ test2();
+ Console.println("OK");
+
+
+
+ def test1() = {
+ val myMap:TreeMap[int,String] = new TreeMap;
+ test_map(myMap);
+ }
+
+ def test2() = {
+ val myMap:ListMap[int,String] = new ListMap;
+ test_map(myMap);
+ }
+
+ def test_map(myMap:Map[int,String]) = {
+ val map1 = myMap.update(42,"The answer");
+ val map2 = map1.update(17,"A small random number");
+ val map3 = map2.update(666,"A bigger random number");
+ val map4 = map3.update(4711,"A big random number");
+ map1 == myMap + 42 -> "The answer";
+ var i = 0;
+ var map = map4;
+ while(i < 43) {
+ map = map.update(i,i.toString());
+ i = i + 1;
+ }
+ i = 0;
+ while(i < 4712) {
+ if(map.isDefinedAt(i))
+ Console.print(i + "->" + map(i) + " ");
+ i = i + 1;
+ }
+ Console.println("");
+ }
+}
diff --git a/test/files/run/misc.check b/test/files/run/misc.check
new file mode 100644
index 0000000000..9fa7b72d50
--- /dev/null
+++ b/test/files/run/misc.check
@@ -0,0 +1,33 @@
+### Hello
+### 17
+### Bye
+
+### fib(0) = 1
+### fib(1) = 1
+### fib(2) = 2
+### fib(3) = 3
+### fib(4) = 5
+=== MyClass::toString ===
+=== MySubclass::toString ===
+=== MyClass::test ===
+
+identity
+
+A.a = 1
+B.a = 5
+B.b = 2
+
+X.a = 4
+Y.a = 11
+Y.b = 5
+Y.b = 5
+
+X::foo
+
+Y::foo
+X::foo
+
+3
+3
+
+true
diff --git a/test/files/run/misc.scala b/test/files/run/misc.scala
new file mode 100644
index 0000000000..900139e1cd
--- /dev/null
+++ b/test/files/run/misc.scala
@@ -0,0 +1,239 @@
+// $Id$
+
+object Test {
+
+def fac(n: Int): Int = if (n < 2) 1 else fac(n - 1) * n;
+
+// Fibonacci
+
+
+def fib(n: Int): Int = if (n < 2) 1 else fib(n - 1) + fib(n - 2);
+
+def show_fib(n: Int): Int = {
+ Console.print("### fib(");
+ Console.print(n);
+ Console.print(") = ");
+ Console.flush;
+ val v = fib(n);
+ Console.print(v);
+ Console.println;
+ Console.flush;
+ v
+}
+
+def id[X](x: X): X = x;
+
+def apply[X](f: X => X, x: X): X = f(x);
+
+def id_obj(x: Object): Object = x;
+
+def apply_obj(f: Object => Object, x: Object): Object = f(x);
+
+def id_any(x: scala.Any): scala.Any = x;
+
+def apply_any(f: scala.Any => scala.Any, x: scala.Any): scala.Any = f(x);
+
+def id_int(x: Int): Int = x;
+
+def apply_int(f: Int => Int, x: Int): Int = f(x);
+
+class MyClass() {
+ override def toString() = "=== MyClass::toString ===";
+ def test() = Console.println("=== MyClass::test ===");
+}
+
+class MySubclass() extends MyClass() {
+ override def toString() = "=== MySubclass::toString ===";
+}
+
+def foobar = {
+ 42;
+ 42l;
+ 23.5f;
+ 23.5;
+ "Hello";
+ 32 + 45;
+ // !!! System
+ // java; // !!! why is this legal ? what does it return ?
+ // java.lang;
+ //System.out;
+ Console.println("### Hello");
+ Console.print("### ");
+ Console.println(17);
+ Console.println("### Bye");
+ Console.println;
+ val x = 13;
+ x;
+ // !!! why are DefDef replaced by Block(Tree[0])? we should use Empty!
+ def f = 19;
+ f;
+ def f0() = 11;
+ f0();
+ def f1(x: Int) = x;
+ f1(7);
+ def f2(x: Int, y: Int) = x + y;
+ f2(3,5);
+ def f11(x: Int)(y: Int) = x + y;
+ f11(23)(2);
+ 1 < 2;
+ if (1 < 2) 3 else 4;
+
+
+ show_fib(0);
+ show_fib(1);
+ show_fib(2);
+ show_fib(3);
+ show_fib(4);
+
+ // !!! show_fib(id[Int](4));
+
+/*
+ show_fib(5);
+ show_fib(6);
+ show_fib(7);
+ show_fib(8);
+ show_fib(9);
+ show_fib(10);
+ show_fib(11);
+ show_fib(12);
+*/
+
+ val myObj = new MyClass();
+ Console.println(myObj);
+ val mySub = new MySubclass();
+ Console.println(mySub);
+ myObj.test();
+ Console.println;
+
+ Console.println(apply_any(id_any, "identity").toString());
+ Console.println;
+};
+
+foobar;
+
+//############################################################################
+
+class A(a: Int) {
+ def getA = a;
+}
+
+class B(b: Int, c: Int) extends A(b + c) {
+ def getB = b;
+}
+
+class X(x: Int) {
+ def getX = x;
+}
+case class Y(y: Int, z: Int) extends X(y + z) {
+ def getY = y;
+ def getAA = this.y;
+}
+
+{
+ val a: A = new A(1);
+ val b: B = new B(2,3);
+
+ val x: X = new X(4);
+ val y: Y = new Y(5,6);
+
+ Console.println("A.a = " + a.getA);
+ Console.println("B.a = " + b.getA);
+ Console.println("B.b = " + b.getB);
+ Console.println;
+
+ Console.println("X.a = " + x.getX);
+ Console.println("Y.a = " + y.getX);
+ Console.println("Y.b = " + y.getY);
+ Console.println("Y.b = " + y.y);
+ Console.println;
+}
+
+//############################################################################
+
+{
+class X() {
+
+ def foo = {
+ Console.println("X::foo");
+ }
+
+}
+
+class Y() extends X() {
+
+ override def foo = {
+ Console.println("Y::foo");
+ super.foo;
+ }
+
+}
+
+val x: X = new X();
+val y: X = new Y();
+
+x.foo;
+Console.println;
+
+y.foo;
+Console.println;
+}
+
+//############################################################################
+
+{
+class X() {}
+
+class O(a: Int) {
+
+
+ case class Y(b: Int) extends X() {
+ override def toString() = "";
+ def bar = a + b;
+ }
+
+ def foo = Y(2).bar
+}
+
+Console.println(new O(1).foo)
+}
+
+{
+
+class O(a: Int) {
+
+ class X() {}
+
+ case class Y(b: Int) extends X() {
+ override def toString() = "";
+ def bar = a + b;
+ }
+
+ def foo = Y(2).bar
+}
+
+Console.println(new O(1).foo)
+}
+
+Console.println;
+
+ case class Bar();
+
+ case class Foo(i:int, j:char, c:Bar) ;
+
+ Console.println(
+ Foo(3,'a',Bar()).caseElement( -1 ) == null
+ && Foo(3,'a',Bar()).caseElement( 0 ) == 3
+ && Foo(3,'a',Bar()).caseElement( 1 ) == 'a'
+ && Foo(3,'a',Bar()).caseElement( 2 ) == Bar()
+ && Foo(3,'a',Bar()).caseElement( 3 ) == null
+ && Bar().caseArity == 0
+ && Foo(3,'a',Bar()).caseArity == 3);
+
+//############################################################################
+
+ def main(args: Array[String]): Unit = {
+ ()
+ }
+
+//############################################################################
+}
diff --git a/test/files/run/mixins.check b/test/files/run/mixins.check
new file mode 100644
index 0000000000..59a2c1d3f3
--- /dev/null
+++ b/test/files/run/mixins.check
@@ -0,0 +1,7 @@
+M1::B::f
+M1::f M2::f M3::f
+one
+two
+A
+B
+C
diff --git a/test/files/run/mixins.scala b/test/files/run/mixins.scala
new file mode 100644
index 0000000000..bbc20d33d2
--- /dev/null
+++ b/test/files/run/mixins.scala
@@ -0,0 +1,85 @@
+// $Id$
+
+// Test 1: "super" coming from mixins
+
+import Console._;
+
+object Test1 {
+ class A {
+ def f = "A::f";
+ }
+
+ class B extends A {
+ override def f = "B::f";
+ }
+
+ trait M1 extends A {
+ override def f = "M1::" + super.f;
+ }
+
+ class C extends B with M1 {
+ override def f = super[M1].f;
+ }
+
+ def test(): Unit = {
+ val c = new C;
+ Console.println(c.f);
+ }
+}
+
+// Test 2: qualified "super" inside of the host class
+
+object Test2 {
+ class M1 {
+ def f = "M1::f";
+ }
+
+ trait M2 {
+ def f = "M2::f";
+ }
+
+ trait M3 {
+ def f = "M3::f";
+ }
+
+ class Host extends M1 with M2 with M3 {
+ override def f = super[M1].f + " " + super[M2].f + " " + super[M3].f
+ }
+
+ def test(): Unit = {
+ val h = new Host;
+ Console.println(h.f)
+ }
+}
+
+// Test 3: mixin evaluation order (bug 120)
+
+object Test3 {
+
+ class A(x: Unit, y: Unit) {
+ Console.println("A");
+ }
+
+ trait B {
+ println("B");
+ }
+
+ class C extends A({ println("one"); }, { println("two"); })
+ with B {
+ println("C");
+ }
+
+ def test() = {
+ val c = new C();
+ }
+}
+
+// Main testing function
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ Test1.test();
+ Test2.test();
+ Test3.test();
+ }
+}
diff --git a/test/files/run/ok.lst b/test/files/run/ok.lst
new file mode 100644
index 0000000000..b8d709a476
--- /dev/null
+++ b/test/files/run/ok.lst
@@ -0,0 +1,30 @@
+arrays.scala
+boolexprs.scala
+bugs.scala
+constructors.scala
+Course-2002-01.scala
+Course-2002-02.scala
+Course-2002-03.scala
+Course-2002-04.scala
+Course-2002-05.scala
+Course-2002-06.scala
+Course-2002-07.scala
+Course-2002-08.scala
+Course-2002-09.scala
+Course-2002-10.scala
+Course-2002-13.scala
+enums.scala
+exceptions.scala
+imports.scala
+iq.scala
+iterators.scala
+lisp.scala
+lists.scala
+map_test.scala
+misc.scala
+mixins.scala
+NestedClasses.scala
+overloads.scala
+runtime.scala
+literals.scala
+bridges.scala
diff --git a/test/files/run/overloads.check b/test/files/run/overloads.check
new file mode 100644
index 0000000000..7d294870f6
--- /dev/null
+++ b/test/files/run/overloads.check
@@ -0,0 +1,15 @@
+ok: -('a') = -97
+ok: -(97) = -97
+ok: Ops.-('a') = a
+ok: Ops.-(97) = 97
+ok: -- = 0
+ok: --('a') = a
+ok: --(97) = 97
+ok: Ops.-- = 0
+ok: Ops.--('a') = a
+ok: Ops.--(97) = 97
+ok: Funcs.foo = 0
+ok: Funcs.foo('a') = 2
+ok: Funcs.foo(97) = 3
+ok: M1.f(3) = 11
+ok: M2.f(3) = 22
diff --git a/test/files/run/overloads.scala b/test/files/run/overloads.scala
new file mode 100644
index 0000000000..31664b2ea6
--- /dev/null
+++ b/test/files/run/overloads.scala
@@ -0,0 +1,96 @@
+//############################################################################
+// Overloads
+//############################################################################
+// $Id$
+
+//############################################################################
+
+object Ops {
+ def - = 0;
+ def -(c: Char) = c;
+ def -(i: Int) = i;
+
+ def -- = 0;
+ def --(c: Char) = c;
+ def --(i: Int) = i;
+}
+
+object Funcs {
+ def foo = 0;
+// def foo() = 1;
+ def foo(c: Char) = 2;
+ def foo(i: Int) = 3;
+}
+
+object M1 {
+ def f[A](x: A) = 11;
+ def f[A <: Ordered[A]](x: A) = 12;
+}
+
+object M2 {
+ def f[A <: Ordered[A]](x: A) = 21;
+ def f[A](x: A) = 22;
+}
+
+object overloads {
+
+ def check(what: String, actual: Any, expected: Any): Unit = {
+ val success: Boolean = actual == expected;
+ Console.print(if (success) "ok" else "KO");
+ var value: String = if (actual == null) "null" else actual.toString();
+ if (value == "\u0000") value = "\\u0000";
+ Console.print(": " + what + " = " + value);
+ if (!success) Console.print(" != " + expected);
+ Console.println;
+ Console.flush;
+ }
+
+ def - = 0;
+ def -(c: Char) = c;
+ def -(i: Int) = i;
+
+ def -- = 0;
+ def --(c: Char) = c;
+ def --(i: Int) = i;
+
+ def test: Unit = {
+ check("-('a')", -('a'), -97);
+ check("-(97)", -(97), -97);
+
+ check("Ops.-('a')", Ops.-('a'), 'a');
+ check("Ops.-(97)", Ops.-(97), 97);
+
+ check("--", --, 0);
+ check("--('a')", --('a'), 'a');
+ check("--(97)", --(97), 97);
+
+ check("Ops.--", Ops.--, 0);
+ check("Ops.--('a')", Ops.--('a'), 'a');
+ check("Ops.--(97)", Ops.--(97), 97);
+
+ check("Funcs.foo", Funcs.foo, 0);
+// check("Funcs.foo()", Funcs.foo(), 1);
+ check("Funcs.foo('a')", Funcs.foo('a'), 2);
+ check("Funcs.foo(97)", Funcs.foo(97), 3);
+
+ val x = 3;
+ check("M1.f(" + x +")", M1.f(x), 11);
+ check("M2.f(" + x +")", M2.f(x), 22);
+// val y = new scala.collection.mutable.Stack[Int];
+// check("M1.f(" + y +")", M1.f(y), 12);
+// check("M2.f(" + y +")", M2.f(y), 21);
+ }
+
+}
+
+//############################################################################
+
+object Test {
+
+ def main(args: Array[String]): Unit = {
+ overloads.test;
+ }
+
+}
+
+//############################################################################
diff --git a/test/files/run/regularpatmat.check b/test/files/run/regularpatmat.check
new file mode 100644
index 0000000000..3417d9a98a
--- /dev/null
+++ b/test/files/run/regularpatmat.check
@@ -0,0 +1,126 @@
+pretest
+passed ok
+testWR_1
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+testWR_2
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+testWR_3
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+testWR_4
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+testWR_5
+passed ok
+passed ok
+passed ok
+testWR_6
+passed ok
+passed ok
+testWR_7
+passed ok
+testWR_8
+passed ok
+testWS
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+testWT
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+testWV
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+testBK
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+testBM
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+BN preTest: true
+testBN
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+testBO
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+testMZ - bugs #132 #133b #180 #195 #196 #398 #406 #441
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
diff --git a/test/files/run/regularpatmat.scala b/test/files/run/regularpatmat.scala
new file mode 100644
index 0000000000..4d1ac796e0
--- /dev/null
+++ b/test/files/run/regularpatmat.scala
@@ -0,0 +1,809 @@
+// Burak's test suite for regular pattern matching
+
+//import java.lang.System; // to avoid name clash with .NET's library
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ Console.println("pretest");
+ val L = List(1,2,3);
+ scala.testing.UnitTest.assertEquals( L, L match { case List(xs@_*) => xs; } ) ;
+
+ testWR.main( args );
+ testWS.main( args );
+ testWT.main( args );
+ testWV.main( args );
+ //testWW.main( args );
+ testBK.main( args );
+ testBL.main( args );
+ testBM.main( args );
+ testBN.main( args );
+ testBO.main( args );
+ testMZ.main;
+ //testNN.main;
+ //testBugSequenceApply.main;
+ }
+}
+
+// contains 17 visitors plus X
+
+// analyzer related (no execution)
+object bug179 {
+ case class One();
+ object Foo {
+ def test(xs: List[Any]) = xs match {
+ case List(((((One(), One())*) | (One(), One())), One())) =>
+ Console.println("case")
+ case _ =>
+ Console.println("default");
+ }
+ }
+}
+// testW? are for recognition only ( no variables )
+// testB? are for variables binding
+
+object values { // test values reused in nearly all test cases
+
+ val s0:List[Char] = Nil ;
+ val s1:List[Char] = 'a'::'b'::'c'::Nil ;
+ val s2:List[Char] = 'a'::'b'::'c'::s1 ;
+ val s3:List[Char] = 'a'::'a'::'a'::Nil ;
+ val s4:List[Char] = 'b'::'c'::Nil ;
+ val s5:List[Char] = 'b'::Nil ;
+ val s6:List[Char] = 'b'::'a'::'a'::'a'::Nil ;
+
+ val s7:List[Int] = 1::2::7::Nil ;
+ val s8:List[Int] = 1::0::1::0::Nil;
+ val s9:List[Int] = Nil ;
+
+ val s10:List[Char] = '7'::'0'::'1'::'.'::'2'::'4'::Nil ;
+
+}
+
+// matching without binding
+
+// 2do case [ 'a'; x; y ] => 100
+// case [ z @ ('a'; x; y) ] => 100
+// 2do case [ 'a'*; x @ ( _;('a'; 'b')* ); y @ 'b'* ] => 100
+// case _ => 321 // 20022 // this never happens
+
+object testBK {
+
+ import values._ ;
+
+ import scala.testing.UnitTest._ ;
+
+ def doit1(e: List[Char]):Int = e match {
+
+ case List( 'a'*, x @ ( 'a',('a', 'b')* ), y @ ('b'*) ) => { 100 }
+
+ case List( _ * ) => 321
+ };
+
+ def test1:Unit = {
+ Console.println("testBK");
+ //test[List[Char],Int]( doit1, s0, 321);
+ assertEquals( doit1( s0 ), 321);
+ assertEquals( doit1( s1 ),321);
+ assertEquals( doit1( s2 ),321);
+ assertEquals( doit1( s3 ),100);
+ assertEquals( doit1( s4 ),321);
+ assertEquals( doit1( s5 ),321);
+ assertEquals( doit1( s6 ),321)
+ };
+
+ def main( args:Array[ String ] ) = {
+ test1;
+ }
+
+}
+
+// tests with binding
+
+object testBL {
+
+ import scala.testing.UnitTest._ ;
+
+ def preTest(a:String,b:String):boolean = (a==b);
+
+ def doit( x:List[String] ):String = x match {
+
+ case List( z @ "John" ) => z
+
+ }
+
+ // BEWARE: main type should be specified...
+ // often, last thing is not () then you have a problem
+
+ def main(args:Array[String]):Unit = {
+
+ val a = "John";
+ val b = "John";
+
+ assertEquals( a == b, true );
+ assertEquals( doit( List( b ) ), "John" )
+
+ }
+}
+object testBM {
+
+ import scala.testing.UnitTest._ ;
+ import values._ ;
+
+ def doit1(e: List[Char]):List[Char] = e match {
+
+ case List( 'a'*, x @ ( 'a',('a', 'b')* ), y @ ('b'*) )
+
+ => { x.toList }
+
+ case List( 'a'*, x @ (('a', 'b')*) , y @ (('a','b','c') *) )
+
+ => { y.toList }
+
+ case List( _ * )
+
+ => Nil
+ };
+
+ def test1:Unit = {
+ Console.println("testBM");
+ assertEquals( doit1( s0 ), Nil);
+ assertEquals( doit1( s1 ), s1);
+ assertEquals( doit1( s2 ), s2);
+
+ assertEquals( doit1( s3 ), List('a'));
+ assertEquals( doit1( s4 ), Nil);
+ assertEquals( doit1( s5 ), Nil);
+ assertEquals( doit1( s6 ), Nil);
+
+ val t7:List[Char] = 'a'::'a'::'a'::'b'::'b'::'b'::Nil;
+ //val t7ex:List[Char] = 'a'::'a'::'b'::Nil; // with longest match policy
+
+ assertEquals( doit1( t7 ), List('a') );
+ };
+
+ def main( args:Array[ String ] ) = {
+ test1;
+ }
+
+}
+object testBN {
+
+ import scala.testing.UnitTest._ ;
+ import values._ ;
+
+ class testClass;
+
+ case class testA( arg:List[Char] ) extends testClass;
+
+ def doit1(e: testClass):List[Char] = e match {
+ case testA(List( 'a', x, y )) => x::y::Nil
+ case _ => Nil
+ };
+
+ def test1:Unit = {
+ Console.print("BN preTest: ");
+ Console.println( Nil == Nil );
+ Console.println("testBN");
+
+ assertEquals
+ ( doit1( testA(s0)), Nil);
+
+ assertEquals
+ ( doit1( testA(s1)), 'b'::'c'::Nil);
+
+ assertEquals
+ ( doit1( testA(s2)), Nil);
+
+ assertEquals
+ ( doit1( testA(s3)), 'a'::'a'::Nil);
+
+ assertEquals
+ ( doit1( testA(s4)), Nil);
+
+ assertEquals
+ ( doit1( testA(s5)), Nil);
+
+ assertEquals
+ ( doit1( testA(s6)), Nil);
+
+ };
+
+
+ def main( args:Array[String] ) = {
+
+ test1
+
+ }
+
+}
+
+object testBO {
+
+ // example suggested by Matthias
+ import scala.testing.UnitTest._ ;
+
+
+ case class Person( firstname:String, lastname:String );
+
+ def onlyJohn( db:List[ Person ] ):List[ String ] = {
+
+ db match {
+
+ case List( Person( "John", lastname ) )
+
+ => lastname::Nil
+
+ case _
+ => Nil
+
+ }
+
+ }
+
+ /** first longest match policy -> the star is greedy/hungry/...
+ */
+
+ def searchFirstJohn( db:List[ Person ] ):String = {
+
+ db match {
+
+ case List( _ *, Person( "John", lastname ), _ * )
+ => lastname
+
+ case _
+ => "<not found>"
+
+ }
+
+ }
+
+ /** first longest match policy -> star is a greedy/hungry
+ */
+
+ def searchJohns( db:List[Person]):List[String] = {
+
+ db match {
+
+ case List( _ *, Person( "John", lastname ), rest@(_ *) )
+ => { //Console.print("before is : "+before );
+ lastname::searchJohns( rest.toList )
+ }
+
+ case _
+ => Nil
+
+ }
+
+ }
+
+ def main( args:Array[String] ) = {
+
+ val p1 = Person("Albert", "Camus");
+ val p2 = Person("Henry", "Miller");
+ val p3 = Person("John", "Le Carre");
+ val p4 = Person("Herbert", "Franke");
+ val p5 = Person("John", "Smith");
+ val p6 = Person("William", "Gibson");
+
+ val db:List[Person] = p1::p2::p3::p4::p5::p6::Nil;
+
+ val db2:List[Person] = p3::Nil;
+
+ Console.println("testBO");
+
+ assertEquals
+ ( onlyJohn( db ), Nil );
+
+ assertEquals
+ ( onlyJohn( db2 ), "Le Carre"::Nil );
+
+ assertEquals
+ ( searchFirstJohn( db ), "Le Carre" );
+
+ assertEquals
+ ( searchFirstJohn( db2 ), "Le Carre" );
+
+ assertEquals
+ ( searchJohns( db ), "Le Carre"::"Smith"::Nil );
+
+ assertEquals
+ ( searchJohns( db2 ), "Le Carre"::Nil );
+
+ }
+
+}
+object testWR {
+
+ import values._ ;
+
+ import scala.testing.UnitTest._ ;
+
+ def doit1(e: List[Char]):Int = e match {
+ case List( 'a', 'b', 'c' ) => 100
+ case _ => 321
+ };
+
+ def test1:Unit = {
+ Console.println("testWR_1");
+ assertEquals( doit1( s0 ),321);
+ assertEquals( doit1( s1 ),100);
+ assertEquals( doit1( s2 ),321);
+ assertEquals( doit1( s3 ),321);
+ assertEquals( doit1( s4 ),321);
+ assertEquals( doit1( s5 ),321);
+ assertEquals( doit1( s6 ),321)
+ };
+
+ def doit2(e: List[Char]):Int = e match {
+ case List( ('a', 'b','c')? ) => 1000
+ case _ => 321
+ }
+
+ def test2:Unit = {
+ Console.println("testWR_2");
+ assertEquals( doit2( s0 ),1000);
+ assertEquals( doit2( s1 ),1000);
+ assertEquals( doit2( s2 ),321);
+ assertEquals( doit2( s3 ),321);
+ assertEquals( doit2( s4 ),321);
+ assertEquals( doit2( s5 ),321);
+ assertEquals( doit2( s6 ),321);
+ }
+
+
+ def doit3(e: List[Char]):String = e match {
+ case List( ('a', 'a','a')? ) => "ok"
+ case _ => "fail"
+ }
+
+ def test3:Unit = {
+ Console.println("testWR_3");
+ assertEquals( doit3( s0 ), "ok");
+ assertEquals( doit3( s1 ),"fail");
+ assertEquals( doit3( s2 ), "fail");
+ assertEquals( doit3( s3 ),"ok");
+ assertEquals( doit3( s4 ),"fail");
+ assertEquals( doit3( s5 ),"fail");
+ assertEquals( doit3( s6 ),"fail");
+ }
+
+ def doit4(e: List[Char]):String = e match {
+ case List( ('a'|'b')*,('a'|'b'|'c')+ ) => "ga!!!!"
+ case _ => "gu"
+ }
+
+ def test4:Unit = {
+ Console.println("testWR_4");
+ assertEquals( doit4( s0 ), "gu");
+ assertEquals( doit4( s1 ), "ga!!!!");
+ assertEquals( doit4( s2 ), "ga!!!!");
+ assertEquals( doit4( s3 ), "ga!!!!");
+ assertEquals( doit4( s4 ), "ga!!!!");
+ assertEquals( doit4( s5 ), "ga!!!!");
+ assertEquals( doit4( s6 ), "ga!!!!");
+ }
+
+ def doit5(e: List[Int]):String = e match {
+ case List( (0|1)+ ) => "binary"
+ case _ => "not binary"
+ }
+
+ def test5:Unit = {
+ Console.println("testWR_5");
+ assertEquals( doit5( s7 ), "not binary");
+ assertEquals( doit5( s8 ), "binary");
+ assertEquals( doit5( s9 ), "not binary");
+ }
+
+ // { ('0'..'9')*;'.';('0'..'9');('0'..'9')* ]
+ def doit6(e: List[Char]):String = e match {
+ case List( ('0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9')*,
+ '.',
+ ('0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'),
+ ('0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9')* )
+
+ => "decimal number"
+ case _ => "not decimal"
+ }
+
+ def test6:Unit = {
+ Console.println("testWR_6");
+ assertEquals( doit6( s3 ), "not decimal");
+ assertEquals( doit6( s10 ), "decimal number");
+ }
+
+ def test8: Unit = {
+ Console.println("testWR_8");
+
+ assertTrue( List('d','c') match {
+ case List('a'*, 'd'|'e', 'c'*) => true
+ case _ => false
+ });
+ }
+
+ def test7:Unit = {
+ Console.println("testWR_7");
+ assertEquals( List(1,2) match {
+ case List(1,(3*,2))=> true; // test normalization (pattern normalizer)
+ case _ => false;
+ }, true);
+ }
+ def main( args:Array[String] ) = {
+ test1;
+ test2;
+ test3;
+ test4;
+ test5;
+ test6;
+ test7;
+ test8;
+ }
+
+
+
+}
+object testWS {
+
+ import values._ ;
+
+ import scala.testing.UnitTest._ ;
+
+ /* strings:
+
+ "blabla" == [ "bla";"bla" ] == [ 'b';'l';'a';'b';'l';'a' ]
+
+ [ "blabla";'x';'y'? ] == [ ('b';'l';'a';'b';'l';'a'); 'x'; 'y'? ]
+
+ */
+
+ /*
+ def isIdentifierStart(c:char) ;
+
+ case [ ... ; _isIdentifierStart_ ; ... ]
+
+ calls method is..., needs to have type (elementType)Boolean
+
+ translated to pattern
+
+ [ ... ; Apply(is..., Tree.Empty) ; ... ]
+
+ */
+
+ /* for tree automata:
+
+ [ t0; t1; ...; tn ] with ti = labeli ( argsi )
+
+ gets translated to
+
+ [ _isTree$0_ ; _isTree$1_ ; ... ; _isTree$n_ ]
+
+ where isTree$i( t ) = t.is[ labeli ] ... (algebraic matcher)
+
+ special case: sequences
+
+ [ ...; seq ; ... ] where seq = [ ... ]
+
+ gets translated to
+
+ [ ...; _seq$0_ ; ...] with seq$0( s ) = t.is[ Sequence ] and
+ seq$0match( s.newIterator )
+
+ subroutines return
+ 1) d'abord true or false,
+ 2) later ( true|false, environment )
+ assume order on variables, enviroment is a tuple/sequence
+ */
+
+ def doit1(e: List[Char]):Int = e match {
+ case List( 'a', 'b', 'c' ) => 100
+ case List( ('a', 'b','c')? ) => 1004
+ case List( ('a', 'a','a')? ) => 50
+ case List( ('a'|'b')*,('a'|'b') ) => 700
+ case _ => 321
+ };
+
+ def test1:Unit = {
+ Console.println("testWS");
+ assertEquals( doit1( s0 ),1004);
+ assertEquals( doit1( s1 ),100);
+ assertEquals( doit1( s2 ),321);
+ assertEquals( doit1( s3 ),50);
+ assertEquals( doit1( s4 ),321);
+ assertEquals( doit1( s5 ),700);
+ assertEquals( doit1( s6 ),700);
+ };
+
+ def main( args:Array[String] ) = {
+ test1;
+ }
+
+
+
+}
+object testWT {
+
+ import values._ ;
+
+ import scala.testing.UnitTest._ ;
+
+ def doit1(e: List[Char]):Int = e match {
+ case List( 'a', _, _ ) => 100
+ case List( _ * ) => 321
+ case _ => 20022 // this never happens
+ };
+
+ def test1:Unit = {
+ Console.println("testWT");
+ assertEquals( doit1( s0 ),321);
+ assertEquals( doit1( s1 ),100);
+ assertEquals( doit1( s2 ),321);
+ assertEquals( doit1( s3 ),100);
+ assertEquals( doit1( s4 ),321);
+ assertEquals( doit1( s5 ),321);
+ assertEquals( doit1( s6 ),321)
+ };
+
+ def main( args:Array[ String ] ) = {
+ test1;
+ }
+
+}
+object testWV {
+
+ import values._ ;
+
+ import scala.testing.UnitTest._ ;
+
+ class testClass;
+
+ case class testA( arg:List[Char] ) extends testClass;
+
+ def doit1( e: testClass ):Int = e match {
+
+ case testA( List( 'a', 'b', 'c' )) => 100
+ case testA( List( ('a', 'b','c')? )) => 1004
+ case testA( List( ('a', 'a','a')? )) => 50
+ case testA( List( ('a'|'b')*,('a'|'b') )) => 700
+ case testA( _ ) => 321
+
+ };
+
+ def test1:Unit = {
+ Console.println("testWV");
+ assertEquals( doit1( testA(s0) ),1004);
+ assertEquals( doit1( testA(s1) ),100);
+ assertEquals( doit1( testA(s2) ),321);
+ assertEquals( doit1( testA(s3) ),50);
+ assertEquals( doit1( testA(s4) ),321);
+ assertEquals( doit1( testA(s5) ),700);
+ assertEquals( doit1( testA(s6) ),700);
+ };
+
+
+ def main( args:Array[String] ) = {
+
+ test1
+
+ }
+
+}
+/*
+object testWW {
+
+ import values._ ;
+
+ import scala.testing.UnitTest._ ;
+
+ class testClass;
+ case class testA( arg:List[Char] ) extends testClass;
+
+ def doit1(e: List[testClass]):Int = e match {
+
+ case List( testA(List()), testA( List( 'a', 'b' )) ) => 100
+ case _ => 321
+
+ };
+
+ def test1:Unit = {
+ val x1 = List( testA(s0) );
+
+ Console.println("testWW");
+
+ assertEquals( doit1( x1 ), 321 );
+
+ val x2 = List( testA(Nil), testA('a'::'b'::Nil) );
+
+ assertEquals( doit1( x2 ), 100 );
+
+ }
+
+ def main( args:Array[String] ) = {
+ test1;
+ }
+
+}
+*/
+object testMZ {
+ import scala.testing.UnitTest.assertEquals ;
+ class Expr;
+ case class One(xs: List[Expr]) extends Expr;
+ case class Two() extends Expr;
+ def testFoo(xs: List[Expr]) = xs match { //bug#132
+ case List(Two()?,a,Two()?) => "a = " + a;
+ case List(Two()*,b,Two()*) => "b = " + b;
+ case List(_*) => "no match";
+ }
+ case class OneN();
+ def bind(xs: List[Any]):String = xs match { // bug#133b
+ case List(x@(OneN()*), y@(OneN())) => "case";
+ case _ => "default";
+ }
+ case class On();
+ case class Tw();
+ def testBar(xs: List[Any]) = xs match { // bug#180
+ case List(((On(), Tw())* | (On(), On())), On()) => "caseBar"
+ case _ => "default";
+ }
+
+
+ def mat195(x:Expr) = x match { // bug#195
+ case One(x@List(_*)) =>
+ "x = " + x;
+
+ case _ =>"default";
+
+ }
+
+ def mat196(xs: List[Any]) = xs match { // bug#196
+ case List(b@(()|())) =>
+ "case, b = " + b;
+
+ case _ =>"default";
+
+ }
+
+ def mat398(xs:List[Any]) = xs match { // bug#398
+ case List(1) => "one"
+ case x::xs => "two"
+ }
+
+ def mat406() = {
+ class Type;
+ case class A() extends Type;
+ case class B() extends Type;
+ case class C() extends Type;
+
+ def foo(x: Type, y: Type): String = Pair(x, y) match {
+ case Pair(A(), A())
+ | Pair(A(), B())
+ | Pair(B(), A())
+ | Pair(B(), B()) => "3"
+ case Pair(C(), C()) => "4"
+ case Pair(A(), _)
+ | Pair(B(), _) => "7"
+ case _ => "8"
+ }
+
+ foo(A(), C())
+ }
+
+ def mat441() = {
+ val tata = 1;
+ val titi = 0.8 + Math.random();
+ try {
+ tata match {
+ case 1 if (titi < 0.5) => "a"
+ case 0 | 1 => "b"
+ }
+ } catch {
+ case _ => "c"
+ }
+ }
+
+ /* this will crash
+ def matSymbolCloning = {
+ 2 match {
+ case 3 | 4 =>
+ class Foo extends scala.xml.Atom[Int](3) {
+ def bar = 7;
+ }
+ null
+ }
+ }
+ */
+
+ def main:Unit = {
+ Console.println("testMZ - bugs #132 #133b #180 #195 #196 #398 #406 #441");
+ assertEquals(testFoo( List(Two(),Two(),Two(),Two()) ),"b = Two");
+ assertEquals(testFoo( List(Two(),Two(),Two()) ),"a = Two");
+ assertEquals(testFoo( List(Two(),Two()) ),"a = Two");
+ assertEquals(testFoo( List(Two()) ),"a = Two");
+ assertEquals(testFoo( List() ),"no match");
+ assertEquals(bind( List(OneN(),OneN()) ),"case");
+ assertEquals(testBar( List() ),"default");
+ assertEquals(testBar( List(On()) ),"caseBar");
+ assertEquals(testBar( List(On(), On())), "default");
+ assertEquals(testBar( List(On(), On(), On()) ),"caseBar");
+ assertEquals(testBar( List(On(), On(), On(), On()) ),"default");
+ assertEquals(testBar( List(On(), On(), On(), On(), On()) ),"default");
+ assertEquals(mat195( One(List(Two(),Two())) ),"x = List(Two,Two)");
+ assertEquals(mat195( One(List()) ),"x = List()");
+ assertEquals(mat195( Two() ),"default");
+ assertEquals(mat196( List(1) ),"default");
+ assertEquals(mat196( List() ),"case, b = List()");
+ assertEquals(mat398( List(2) ),"two");
+ assertEquals(mat398( List(2) ),"two");
+ assertEquals(mat406(), "7");
+ assertEquals(mat441(), "b");
+ ()
+ }
+
+}
+/*
+object testNN {
+ import scala.testing.UnitTest._ ;
+ abstract class K;
+ case class F(x:K*) extends K;
+ case class G() extends K;
+
+ def mtch(k:K):boolean = k match {
+ case F(F(G()*),G(),F(G()*)) => true;
+ case _ => false;
+ }
+
+ def main:Unit = {
+ Console.println("testNN");
+ assertEquals(mtch( F(F(G()),G(),F(G()))), true);
+ assertEquals(mtch( F(F(),G(),F(G(),G(),G(),G())) ), true);
+ assertEquals(mtch( G() ), false);
+ assertEquals(mtch( F(G()) ), false);
+ }
+}
+*/
+object testNO { // this does not need to be run, only compiled
+
+ trait Operator;
+ case class Increment() extends Operator;
+ case class Decrement() extends Operator;
+
+ trait Expression {
+ def eval = this match {
+ case Operation (v: Value, o: Increment) => v
+ case Operation (v: Value, d: Decrement) => v
+ }
+ }
+
+ case class Value() extends Expression;
+ case class Operation (e: Expression, o: Operator) extends Expression;
+
+
+}
+
+/** see comments in scala.tools.scalac.transformer.matching.PatternMatcher::isSeqApply 2005-02-17
+ */
+
+/*
+object testBugSequenceApply {
+
+ val x = List(1,2,3);
+
+ case class ThreeBars extends Seq[Int] {
+ override def length = 3;
+ def elements = x.elements;
+ def apply(i:Int) = x.apply(i);
+ }
+
+ // this works
+ def main:Unit = {
+ Console.print("testBugSequenceApply ");
+ val z: Seq[Int] = new ThreeBars();
+ Console.print(z match {
+ case Seq(1,2,3) => "hello" // but ThreeBars is a case class...
+ });
+
+ Console.print(ThreeBars() match {
+ case Seq(1,2,3) => " hello" // but ThreeBars is a case class...
+ });
+ }
+}
+*/
diff --git a/test/files/run/runtime.check b/test/files/run/runtime.check
new file mode 100644
index 0000000000..990a087da0
--- /dev/null
+++ b/test/files/run/runtime.check
@@ -0,0 +1,64 @@
+<<< Test0
+[false,true]
+[0,1,2]
+[3,4,5]
+[a,b,c]
+[6,7,8]
+[9,10,11]
+[12.0,13.0]
+[14.0,15.0]
+[string]
+>>> Test0
+
+<<< Test1
+10
+14
+15
+16
+20
+23
+24
+25
+26
+>>> Test1
+
+<<< Test2
+A
+M0
+N0
+
+A
+N0
+M0
+
+A
+M0
+M1
+N0
+
+A
+N0
+N1
+M0
+
+>>> Test2
+
+<<< Test3
+Ok
+Ok
+Ok
+Ok
+Ok
+Ok
+Ok
+Ok
+Ok
+Ok
+Ok
+Ok
+Ok
+Ok
+Ok
+Ok
+>>> Test3
+
diff --git a/test/files/run/runtime.scala b/test/files/run/runtime.scala
new file mode 100644
index 0000000000..30f32b7cba
--- /dev/null
+++ b/test/files/run/runtime.scala
@@ -0,0 +1,209 @@
+//############################################################################
+// Run Time Bugs & Test Cases
+//############################################################################
+// $Id$
+
+//############################################################################
+// serves as an entry point with the MSIL backend
+
+object TestMain {
+ def main(args: Array[String]): Unit = {
+ Test.main(args);
+ }
+}
+
+//############################################################################
+// Test 0 - Array creation
+
+object Test0Test {
+ def println[A](xs: Array[A]): Unit = {
+ var i = 0;
+ Console.print("[");
+ while (i < xs.length) {
+ if (i > 0) Console.print(",");
+ Console.print(xs(i));
+ i = i + 1;
+ }
+ Console.print("]");
+ Console.println;
+ }
+
+ def main(args: Array[String]): Unit = {
+ val zs: Array[Boolean] = Array(false, true);
+ val bs: Array[Byte ] = Array(0, 1, 2);
+ val ss: Array[Short ] = Array(3, 4, 5);
+ val cs: Array[Char ] = Array('a', 'b', 'c');
+ val is: Array[Int ] = Array(6, 7, 8);
+ val ls: Array[Long ] = Array(9l, 10l, 11l);
+ val fs: Array[Float ] = Array(12.0f, 13.0f);
+ val ds: Array[Double ] = Array(14.0d, 15.0d);
+ val os: Array[AnyRef ] = Array("string");
+ println(zs);
+ println(bs);
+ println(ss);
+ println(cs);
+ println(is);
+ println(ls);
+ println(fs);
+ println(ds);
+ println(os);
+ }
+}
+
+//############################################################################
+// Test 1 - Block Qualifiers
+
+package test1.bar {
+
+ object System {
+ val out: PrintStream = new PrintStream();
+ }
+
+ class PrintStream() {
+ def println(): Unit = {
+ Console.println;
+ }
+ }
+
+}
+
+object Test1Test {
+
+ def main(args: Array[String]): Unit = {
+ {Console.print(10)}; Console.println;
+ // {System.out.print(11); java}.lang.System.out.println();
+ // {System.out.print(12); java.lang}.System.out.println();
+ // {System.out.print(13); java.lang.System}.out.println();
+ {Console.print(14); Console}.println;
+ {Console.print(15); (() => Console.println):(() => Unit)}();
+ {Console.print(16); Console.println};
+
+ {Console.print(20)}; test1.bar.System.out.println();
+ // {System.out.print(21); test1}.bar.System.out.println();
+ // {System.out.print(22); test1.bar}.System.out.println();
+ {Console.print(23); test1.bar.System}.out.println();
+ {Console.print(24); test1.bar.System.out}.println();
+ {Console.print(25); test1.bar.System.out.println:(() => Unit)}();
+ {Console.print(26); test1.bar.System.out.println()};
+ }
+
+}
+
+//############################################################################
+// Test 2 - Super Calls with Mixins
+
+package test2 {
+
+ class A {
+ def run = Console.println("A");
+ }
+
+ trait M0 extends A {
+ override def run = { super.run; System.out.println("M0"); }
+ }
+
+ class M1 extends M0 {
+ override def run = { super.run; Console.println("M1"); }
+ }
+
+ trait N0 extends A {
+ override def run = { super.run; System.out.println("N0"); }
+ }
+
+ class N1 extends N0 {
+ override def run = { super.run; Console.println("N1"); }
+ }
+
+ object M0N0 extends M0 with N0;
+ object N0M0 extends N0 with M0;
+ object M1N0 extends M1 with N0;
+ object N1M0 extends N1 with M0;
+
+}
+
+object Test2Test {
+ def main(args: Array[String]): Unit = {
+ test2.M0N0.run; Console.println;
+ test2.N0M0.run; Console.println;
+ test2.M1N0.run; Console.println;
+ test2.N1M0.run; Console.println;
+ }
+}
+
+//############################################################################
+// Test 3 - Methods eq and ne
+
+object Test3Test {
+
+ class Foo { override def equals(that: Any) = error("abort"); }
+
+ def check(expected: Boolean, actual1: Boolean, actual2: Boolean): Unit =
+ Console.println(
+ if ((actual1 == expected) && (actual2 == !expected)) "Ok" else "KO: "
+ + "expected: " + expected + " - " + (!expected) + ", "
+ + "found: " + actual1 + " - " + actual1);
+
+ def main(args: Array[String]): Unit = {
+ val foo1: AnyRef = null;
+ val foo2: AnyRef = new Foo();
+ val foo3: AnyRef = new Foo();
+
+ check(true , null eq null, null ne null);
+ check(true , null eq foo1, null ne foo1);
+ check(false, null eq foo2, null ne foo2);
+ check(false, null eq foo3, null ne foo3);
+
+ check(true , foo1 eq null, foo1 ne null);
+ check(true , foo1 eq foo1, foo1 ne foo1);
+ check(false, foo1 eq foo2, foo1 ne foo2);
+ check(false, foo1 eq foo3, foo1 ne foo3);
+
+ check(false, foo2 eq null, foo2 ne null);
+ check(false, foo2 eq foo1, foo2 ne foo1);
+ check(true , foo2 eq foo2, foo2 ne foo2);
+ check(false, foo2 eq foo3, foo2 ne foo3);
+
+ check(false, foo3 eq null, foo3 ne null);
+ check(false, foo3 eq foo1, foo3 ne foo1);
+ check(false, foo3 eq foo2, foo3 ne foo2);
+ check(true , foo3 eq foo3, foo3 ne foo3);
+ }
+
+}
+
+//############################################################################
+// Main
+
+object Test {
+ var errors: Int = 0;
+ def test(name: String, test: => Unit): Unit = {
+ Console.println("<<< " + name);
+ try {
+ test;
+ } catch {
+ case exception => {
+ //val name: String = Thread.currentThread().getName();
+ Console.print("Exception in thread \"" + name + "\" " + exception);
+ Console.println;
+ errors = errors + 1;
+ }
+ }
+ Console.println(">>> " + name);
+ Console.println;
+ }
+
+ def main(args: Array[String]): Unit = {
+
+ test("Test0" , Test0Test.main(args));
+ test("Test1" , Test1Test.main(args));
+ test("Test2" , Test2Test.main(args));
+ test("Test3" , Test3Test.main(args));
+
+ if (errors > 0) {
+ Console.println;
+ Console.println(errors + " error" + (if (errors > 1) "s" else ""));
+ }
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/tailcalls.check b/test/files/run/tailcalls.check
new file mode 100644
index 0000000000..73d86cd2d2
--- /dev/null
+++ b/test/files/run/tailcalls.check
@@ -0,0 +1,46 @@
+test Object .f was successful
+test Final .f was successful
+test Class .f raised exception java.lang.StackOverflowError
+test SubClass .f was successful
+test Sealed .f raised exception java.lang.StackOverflowError
+test SubSealed.f was successful
+
+test O .f was successful
+test c .f was successful
+test O.O .f was successful
+test O.c .f was successful
+test c.O .f was successful
+test c.c .f was successful
+test O.O.O .f was successful
+test O.O.c .f was successful
+test O.c.O .f was successful
+test O.c.c .f was successful
+test c.O.O .f was successful
+test c.O.c .f was successful
+test c.c.O .f was successful
+test c.c.c .f was successful
+test O.O.O.O.f was successful
+test O.O.O.c.f was successful
+test O.O.c.O.f was successful
+test O.O.c.c.f was successful
+test O.c.O.O.f was successful
+test O.c.O.c.f was successful
+test O.c.c.O.f was successful
+test O.c.c.c.f was successful
+test c.O.O.O.f was successful
+test c.O.O.c.f was successful
+test c.O.c.O.f was successful
+test c.O.c.c.f was successful
+test c.c.O.O.f was successful
+test c.c.O.c.f was successful
+test c.c.c.O.f was successful
+test c.c.c.c.f was successful
+
+test TailCall.f1 was successful
+test TailCall.f2 was successful
+test TailCall.f3 was successful
+test TailCall.g1 was successful
+test TailCall.g2 was successful
+test TailCall.g3 was successful
+test TailCall.h1 was successful
+
diff --git a/test/files/run/tailcalls.scala b/test/files/run/tailcalls.scala
new file mode 100644
index 0000000000..3279e6bf64
--- /dev/null
+++ b/test/files/run/tailcalls.scala
@@ -0,0 +1,290 @@
+//############################################################################
+// Tail Calls
+//############################################################################
+// $Id$
+
+//############################################################################
+// Calibration
+
+class Calibrator {
+ def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+}
+
+//############################################################################
+// Tail calls in different contexts
+
+class Class {
+ def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+}
+
+class SubClass extends Class {
+ override def f(n: Int, v: Int): Int = v;
+}
+
+sealed class Sealed {
+ def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+}
+
+class SubSealed extends Sealed {
+ override def f(n: Int, v: Int): Int = v;
+}
+
+final class Final {
+ def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+}
+
+object Object {
+ def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+}
+
+//############################################################################
+// Tail calls in nested objects/classes
+
+object O {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ object O {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ object O {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ object O {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ }
+ class C {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ }
+ val c: C = new C;
+ }
+ class C {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ object O {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ }
+ class C {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ }
+ val c: C = new C;
+ }
+ val c: C = new C;
+ }
+ class C {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ object O {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ object O {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ }
+ class C {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ }
+ val c: C = new C;
+ }
+ class C {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ object O {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ }
+ class C {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ }
+ val c: C = new C;
+ }
+ val c: C = new C;
+ }
+ val c: C = new C;
+}
+
+class C {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ object O {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ object O {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ object O {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ }
+ class C {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ }
+ val c: C = new C;
+ }
+ class C {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ object O {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ }
+ class C {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ }
+ val c: C = new C;
+ }
+ val c: C = new C;
+ }
+ class C {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ object O {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ object O {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ }
+ class C {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ }
+ val c: C = new C;
+ }
+ class C {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ object O {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ }
+ class C {
+ final def f(n: Int, v: Int): Int = if (n == 0) v else f(n - 1, v - 1);
+ }
+ val c: C = new C;
+ }
+ val c: C = new C;
+ }
+ val c: C = new C;
+}
+
+//############################################################################
+// Tail calls with different signatures
+
+class TailCall[S](s: S) {
+ def getS: S = s;
+
+ final def f1(n: Int, v: Int): Int =
+ if (n == 0) v else f1(n - 1, v - 1);
+ final def f2[T](n: Int, v: Int): Int =
+ if (n == 0) v else f2[T](n - 1, v - 1);
+ final def f3[T](n: Int, v: Int, ls: List[T]): Int =
+ if (n == 0) v else f3(n - 1, v - 1, ls);
+
+ final def g1(x: Int, y: Int): Int = {
+ def aux(n: Int, v: Int): Int =
+ if (n == 0) v else aux(n - 1, v - 1);
+ aux(x, y);
+ }
+ final def g2[T](x: Int, y: Int): Int = {
+ def aux[U](n: Int, v: Int): Int =
+ if (n == 0) v else aux[U](n - 1, v - 1);
+ aux[T](x, y);
+ }
+ final def g3[T](x: Int, y: Int, zs: List[T]): Int = {
+ def aux[U](n: Int, v: Int, ls: List[Pair[T,U]]): Int =
+ if (n == 0) v else aux(n - 1, v - 1, ls);
+ aux(x, y, Nil);
+ }
+
+ def h1(n: Int, v: Int): Int = hP(n, v);
+ private def hP(n: Int, v: Int): Int = if (n == 0) v else hP(n - 1, v - 1);
+
+ // !!! test return in non-tail-call position
+ // !!! test non-same-instance calls
+ // !!! test non-same-type calls
+
+}
+
+//############################################################################
+// Test code
+
+object Test {
+ def check_success(name: String, closure: => Int, expected: Int): Unit = {
+ Console.print("test " + name);
+ try {
+ val actual: Int = closure;
+ if (actual == expected) {
+ Console.print(" was successful");
+ } else {
+ Console.print(" failed: expected "+ expected +", found "+ actual);
+ }
+ } catch {
+ case exception: Throwable => {
+ Console.print(" raised exception " + exception);
+ }
+ }
+ Console.println;
+ }
+
+ def calibrate: Int = {
+ val calibrator = new Calibrator();
+ var stop = false;
+ var n = 1;
+ while (!stop) {
+ try {
+ calibrator.f(n, n);
+ if (n >= scala.runtime.compat.Math.MAX_INT / 2) error("calibration failure");
+ n = 2 * n;
+ } catch {
+ case exception: StackOverflowError => stop = true
+ }
+ }
+ 4 * n;
+ }
+
+ def main(args: Array[String]): Unit = {
+ // compute min and max iteration number
+ val min = 16;
+ val max = calibrate;
+
+ // test tail calls in different contexts
+ val Final = new Final();
+ val Class = new Class();
+ val SubClass = new SubClass();
+ val Sealed = new Sealed();
+ val SubSealed = new SubSealed();
+ check_success("Object .f", Object .f(max, max), 0);
+ check_success("Final .f", Final .f(max, max), 0);
+ check_success("Class .f", Class .f(max, max), 0);
+ check_success("SubClass .f", SubClass .f(max, max), max);
+ check_success("Sealed .f", Sealed .f(max, max), 0);
+ check_success("SubSealed.f", SubSealed.f(max, max), max);
+ Console.println;
+
+ // test tail calls in nested classes/objects
+ val c: C = new C;
+ check_success("O .f", O .f(max, max), 0);
+ check_success("c .f", c .f(max, max), 0);
+ check_success("O.O .f", O.O .f(max, max), 0);
+ check_success("O.c .f", O.c .f(max, max), 0);
+ check_success("c.O .f", c.O .f(max, max), 0);
+ check_success("c.c .f", c.c .f(max, max), 0);
+ check_success("O.O.O .f", O.O.O .f(max, max), 0);
+ check_success("O.O.c .f", O.O.c .f(max, max), 0);
+ check_success("O.c.O .f", O.c.O .f(max, max), 0);
+ check_success("O.c.c .f", O.c.c .f(max, max), 0);
+ check_success("c.O.O .f", c.O.O .f(max, max), 0);
+ check_success("c.O.c .f", c.O.c .f(max, max), 0);
+ check_success("c.c.O .f", c.c.O .f(max, max), 0);
+ check_success("c.c.c .f", c.c.c .f(max, max), 0);
+ check_success("O.O.O.O.f", O.O.O.O.f(max, max), 0);
+ check_success("O.O.O.c.f", O.O.O.c.f(max, max), 0);
+ check_success("O.O.c.O.f", O.O.c.O.f(max, max), 0);
+ check_success("O.O.c.c.f", O.O.c.c.f(max, max), 0);
+ check_success("O.c.O.O.f", O.c.O.O.f(max, max), 0);
+ check_success("O.c.O.c.f", O.c.O.c.f(max, max), 0);
+ check_success("O.c.c.O.f", O.c.c.O.f(max, max), 0);
+ check_success("O.c.c.c.f", O.c.c.c.f(max, max), 0);
+ check_success("c.O.O.O.f", c.O.O.O.f(max, max), 0);
+ check_success("c.O.O.c.f", c.O.O.c.f(max, max), 0);
+ check_success("c.O.c.O.f", c.O.c.O.f(max, max), 0);
+ check_success("c.O.c.c.f", c.O.c.c.f(max, max), 0);
+ check_success("c.c.O.O.f", c.c.O.O.f(max, max), 0);
+ check_success("c.c.O.c.f", c.c.O.c.f(max, max), 0);
+ check_success("c.c.c.O.f", c.c.c.O.f(max, max), 0);
+ check_success("c.c.c.c.f", c.c.c.c.f(max, max), 0);
+ Console.println;
+
+ // test tail calls with different signatures
+ val TailCall = new TailCall("S");
+ check_success("TailCall.f1", TailCall.f1(max, max ), 0);
+ check_success("TailCall.f2", TailCall.f2(max, max ), 0);
+ check_success("TailCall.f3", TailCall.f3(max, max, Nil), 0);
+ check_success("TailCall.g1", TailCall.g1(max, max ), 0);
+ check_success("TailCall.g2", TailCall.g2(max, max ), 0);
+ check_success("TailCall.g3", TailCall.g3(max, max, Nil), 0);
+ check_success("TailCall.h1", TailCall.h1(max, max ), 0);
+ Console.println;
+ }
+}
+
+//############################################################################
diff --git a/test/files/run/try.check b/test/files/run/try.check
new file mode 100644
index 0000000000..3983e26060
--- /dev/null
+++ b/test/files/run/try.check
@@ -0,0 +1,6 @@
+1 + 1 = 2
+1 + 1 = 2
+1 + 1 = 2
+1 + 1 = 2
+
+1 + 1 = 2
diff --git a/test/files/run/try.scala b/test/files/run/try.scala
new file mode 100644
index 0000000000..fca6bf5c55
--- /dev/null
+++ b/test/files/run/try.scala
@@ -0,0 +1,110 @@
+object Test extends AnyRef with Application {
+ val x = 1;
+
+ def try1 = {
+ Console.print("1 + 1 = ");
+ Console.println(1 + (
+ try {
+ x;
+ } catch {
+ case _: Error => 1;
+ }
+ ));
+ }
+
+ def try2 = {
+ Console.print("1 + 1 = ");
+ Console.println(
+ (try { x } catch {
+ case _: Error => 1;
+ })
+ +
+ (try { x } catch {
+ case _: Error => 1;
+ })
+ );
+ }
+
+ var n = 0;
+
+ def try3 = {
+ Console.print("1 + 1 = ");
+ val x = try { 1 } catch {
+ case e: Error => 1;
+ }
+ this.n = try { 1 } catch {
+ case e: Error => 1;
+ }
+ Console.println(x + n);
+ }
+
+ var instance: AnyRef = null;
+
+ def try4 = {
+ if (instance == null) {
+ instance = try {
+ new String();
+ } catch {
+ case _ =>
+ val cs = "aaa";
+ if (cs.length() > 0) {
+ new String();
+ } else {
+ throw new Error("fatal error");
+ null
+ }
+ }
+ }
+ }
+
+ def try5 = try {
+ Console.print("1 + 1 = ");
+ try {
+ if (true)
+ error("exit");
+ 1+1;
+ ()
+ } catch {
+ case _ =>
+ Console.println("2");
+ error("for good");
+ }
+ Console.println("a");
+ } catch {
+ case _ => ();
+ }
+
+ class A {
+ private val result = {
+ val y = try { x } catch {
+ case _: Error => 1;
+ };
+ x + y
+ }
+ Console.print("1 + 1 = ");
+ Console.println(result);
+ }
+
+/*
+ def finally1 = {
+ Console.print("1 + 1 = ");
+ Console.println(1 + (
+ try {
+ x
+ } finally {
+ ()
+ }
+ ));
+ }
+
+*/
+
+ try1;
+ try2;
+ try3;
+ try4;
+ try5;
+ Console.println;
+ new A();
+ ()
+}