transitions and guards can be inlined with trans and guard macro