startup classage rename1 { main(String[] args) { create Main1(); create Main2(); create Main3(); create Main4(); } } classage Main1 = A + APrime with X >> X { Main1() { :A(); } } classage ARenamedX = A rename X >> XRenamed { ARenamedX() { :A(); } } classage Main2 = ARenamedX + APrime with XRenamed >> X { Main2() { :ARenamedX(); } } classage ARenamedY = A rename Y >> YRenamed { ARenamedY() { :A(); } } classage Main3 = ARenamedY + APrime with X >> X { Main3() { :ARenamedY(); } } classage ARenamedZ = A rename Z >> ZRenamed { ARenamedZ() { :A(); } } classage Main4 = ARenamedZ + APrime with X >> X { Main4() { :ARenamedZ(); } } classage A { A() { ::f(); } mixer X { import void a() } plugger Y { import void a() } connector Z { import void a() } void f() { X::a(); Y y = plugin B with Y >> Y; y..a(); C c = create C(); Z z = connect c with Z >> Z; z->a(); } } classage APrime { mixer X { export void a() { print("OK, now it is export a of APrime's mixer X"); } } } classage B { mixer Y { export void a() { print("OK, now it is export a of B's mixer Y"); } } } classage C { connector Z { export void a() { print("OK, now it is export a of C's connector Z"); } } }