default base domain ObjectPascal. pattern before_advice_stmt() : statement_list = "if not ProcDlg1.Process(TotalInsertionsPerformed / TotalInsertionsCalculated) then begin ProcDlg1.Canceled := True; Result := True; exit; end;". pattern method_name() : IDENTIFIER = " Inc". pattern within_code() : IDENTIFIER = " mc_". external pattern around_advice_call(program : ObjectPascal, method_name : IDENTIFIER, proceed_call : IDENTIFIER, proceed_bef : statement_list, proceed_aft : statement_list, withincode : IDENTIFIER) : ObjectPascal = 'around_advice_call' in domain ObjectPascal. rule method_Inc( program : ObjectPascal) : ObjectPascal-> ObjectPascal = program -> around_advice_call(program, method_name(), method_name(), before_advice_stmt(), after_advice_stmt(), within_code()) if program ~= around_advice_call(program, method_name(), method_name(), before_advice_stmt(), after_advice_stmt(), within_code()) . pattern after_advice_stmt() : statement_list = "". public ruleset progress_meter = {method_Inc}.