-- main.mcl -- class c0($b) { test "t1" {} if $b { test "t2" {} } else { test "t3" {} } func f0() { if $b { "hello" } else { "goodbye" } } } class c1($b) { test "t4" {} if $b { test "t5" {} } else { test "t6" {} } include c0($b) as i0 func f1() { i0.f0() } } include c1(true) as i1 include c1(false) as i2 test [i1.f1(),] {} test [i2.f1(),] {} test [i1.i0.f0(),] {} # I think these might work directly too. Do we want them to? test [i2.i0.f0(),] {} -- OUTPUT -- Vertex: test[goodbye] Vertex: test[hello] Vertex: test[t1] Vertex: test[t2] Vertex: test[t3] Vertex: test[t4] Vertex: test[t5] Vertex: test[t6]