import org.visage.runtime.VisageObject; import org.visage.runtime.InitHelper; import org.visage.runtime.location.AbstractVariable; import org.visage.runtime.location.IntVariable; interface Base$Intf extends VisageObject { public IntVariable get$a(); } interface OtherBase$Intf extends VisageObject { public IntVariable get$b(); } interface Subclass$Intf extends Base$Intf, OtherBase$Intf { public IntVariable get$c(); } class Base$Impl implements Base$Intf { private final IntVariable a = IntVariable.make(); public Base$Impl() { addTriggers$(this); } public IntVariable get$a() { return a; } private AbstractVariable[] attributes = { a }; protected static void addTriggers$(final Base$Intf receiver) { // Call superclass addTriggers$() // Add our triggers } protected static void initAttributes$(final Base$Intf receiver) { if (receiver.get$a().needDefault()) receiver.get$a().set(3); } public static void userInit$(final Base$Intf receiver) { } public void initialize$() { initAttributes$(this); userInit$(this); InitHelper.finish(attributes); attributes = null; } } class OtherBase$Impl implements OtherBase$Intf { private final IntVariable b = IntVariable.make(); public OtherBase$Impl() { addTriggers$(this); } public IntVariable get$b() { return b; } private AbstractVariable[] attributes = { b }; protected static void addTriggers$(final OtherBase$Intf receiver) { // Call superclass addTriggers$() // Add our triggers } protected static void initAttributes$(final OtherBase$Intf receiver) { if (receiver.get$b().needDefault()) receiver.get$b().set(4); } public static void userInit$(final OtherBase$Intf receiver) { } public void initialize$() { initAttributes$(this); userInit$(this); InitHelper.finish(attributes); attributes = null; } } public class Subclass$Impl implements Subclass$Intf { private final IntVariable a = IntVariable.make(); private final IntVariable b = IntVariable.make(); private final IntVariable c = IntVariable.make(); private AbstractVariable[] attributes = { a, b, c }; public Subclass$Impl() { addTriggers$(this); } public IntVariable get$a() { return a; } public IntVariable get$b() { return b; } public IntVariable get$c() { return c; } protected static void addTriggers$(final Subclass$Intf receiver) { // Call superclass addTriggers$() // Add our triggers } protected static void initAttributes$(final Subclass$Intf receiver) { Base$Impl.initAttributes$(receiver); OtherBase$Impl.initAttributes$(receiver); if (receiver.get$c().needDefault()) receiver.get$c().set(5); } public static void userInit$(final Subclass$Intf receiver) { Base$Impl.userInit$(receiver); OtherBase$Impl.userInit$(receiver); } public void initialize$() { initAttributes$(this); userInit$(this); InitHelper.finish(attributes); attributes = null; } public static void main(String[] args) { Subclass$Impl instance = new Subclass$Impl(); instance.get$a().set(1); instance.get$b().set(2); instance.initialize$(); } }