function master(xy) { this.data=xy; this.z=0; this.child=null; this.act = { start : () => { log('start'); this.child = create({ z:0, data:{ x:random(1,50), y:random(1,50) }, act : [compA,end], trans : { start:compA } }) log(this.child) }, compA: () => { this.z=this.data.x+this.data.y; log('z='+this.z) }, compB: () => { this.z=this.data.x*this.data.y; log('z='+this.z); }, end : () => { log(keys(this)) log(keys(this.act)) log(keys(this.trans)) if (this.on) log(keys(this.on)) kill() } } this.trans = { start:() => { return this.data.x<10 && this.data.y<10?compB:compA }, compA:end, compB:end } this.on = { SIG1: () => { log('got SIG1') } } this.next=start } compile(master) create('master',{x:5,y:7}) start()