<?xml version="1.0" encoding="ISO-8859-1"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="RSL">
  <RSL>
    <domain dname="ObjectPascal"/>
    <rslelems xsi:type="Pattern" ptoken="statement_list">
      <phead name="before_advice_stmt"/>
      <ptext xsi:type="SimplePatternText" ptext="TExHandleCollection(Collection).LockHandle;"/>
    </rslelems>
    <rslelems xsi:type="ExternalPattern" ptoken="statement_list" dname="ObjectPascal" eptext="around_advice_exec_try_finally">
      <phead name="around_advice_exec_try_finally">
        <params name="slist" referTo="statement_list"/>
        <params name="proceed_bef" referTo="statement_list"/>
        <params name="proceed_within_try" referTo="statement_list"/>
        <params name="proceed_within_finally" referTo="statement_list"/>
        <params name="proceed_aft" referTo="statement_list"/>
      </phead>
    </rslelems>
    <rslelems xsi:type="Rule" rname="function_handle" type="implementation_declaration">
      <params name="id1" referTo="IDENTIFIER"/>
      <params name="fps" referTo="formal_parameters"/>
      <params name="frt" referTo="function_result_type"/>
      <params name="slist" referTo="statement_list"/>
      <r_lhs_pattern>
        <ruletext xsi:type="SimpleRuleText" text="function \id1 . Handle \fps :\frt ; begin \slist end;"/>
      </r_lhs_pattern>
      <r_rhs_pattern>
        <ruletext xsi:type="SimpleRuleText" text="function \id1 . Handle \fps:\frt ; begin \around_advice_exec_try_finally\(\slist \,  \before_advice_stmt\(\) \, \within_try_block\(\) \, \within_finally_block\(\) \, \after_advice_stmt\(\) \) end;"/>
        <condition xsi:type="RuleEqCondition" lhs="slist">
          <pref name="around_advice_exec_try_finally">
            <params xsi:type="RealParameter" name="slist"/>
            <params xsi:type="PatternRef" name="before_advice_stmt"/>
            <params xsi:type="PatternRef" name="within_try_block"/>
            <params xsi:type="PatternRef" name="within_finally_block"/>
            <params xsi:type="PatternRef" name="after_advice_stmt"/>
          </pref>
        </condition>
      </r_rhs_pattern>
    </rslelems>
    <rslelems xsi:type="Pattern" ptoken="statement_list">
      <phead name="after_advice_stmt"/>
      <ptext xsi:type="SimplePatternText" ptext=""/>
    </rslelems>
    <rslelems xsi:type="Pattern" ptoken="statement_list">
      <phead name="within_try_block"/>
      <ptext xsi:type="SimplePatternText" ptext="p1234567890;"/>
    </rslelems>
    <rslelems xsi:type="Pattern" ptoken="statement_list">
      <phead name="within_finally_block"/>
      <ptext xsi:type="SimplePatternText" ptext="TExHandleCollection(Collection).UnLockHandle;"/>
    </rslelems>
    <ruleset rsname="synchronize">
      <rname>function_handle</rname>
    </ruleset>
  </RSL>
  <RuleParameter name="id2" referTo="IDENTIFIER"/>
</xmi:XMI>

