The "@irun{...}" primitive corresponds to the DO activity of UML Statemachines: every attempt to evaluate a state starts with the evaluation of the "@irun{...}" if it is implemented, and goes on with the evaluation of the "@run{...}".
The effects of the "@irun{...}" evaluation are preserved even if the evaluation of the "@run{...}" fails. For instance, in the "@irun{...}" can be declared a clock counting the number of evaluation attempts of the state.
Different uses of the "@irun{...}" activity primitive :