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()
