default base domain ObjectPascal. pattern before_advice_stmt() : statement_list = "StartTimer(Timer);". pattern after_advice_stmt() : statement_list = "StopTimer(Timer);". pattern init() : NATURAL_NUMBER = "1". pattern exit() : NATURAL_NUMBER = "123456789". pattern within_code() : IDENTIFIER = " SortByResourceIDClick". external pattern around_advice_for(program : ObjectPascal, proceed_bef : statement_list, proceed_after : statement_list, withincode : IDENTIFIER, init : NATURAL_NUMBER, exit : NATURAL_NUMBER) : ObjectPascal = 'around_advice_for' in domain ObjectPascal. rule timer_around_loops( program : ObjectPascal) : ObjectPascal-> ObjectPascal = program -> around_advice_for(program, before_advice_stmt(), after_advice_stmt(), within_code(), init(), exit()) if program ~= around_advice_for(program, before_advice_stmt(), after_advice_stmt(), within_code(), init(), exit()) . public ruleset add_loop_timer = {timer_around_loops}.