<?xml version="1.0" encoding="UTF-8"?>
<library>
    <function name="getcalls" arg1="$expr">
        <xseq>
           <xload>$expr</xload>
           <xif>
               <xisnode>InfixExpression</xisnode>
               <xfunapp>
                   <name>traverse_InfixExpression</name>
                   <args>
                       <xvar>$expr</xvar>
                   </args>
               </xfunapp>
                <xif>
                    <xisnode>MethodInvocation</xisnode>
                    <xpar>
                        <xvar>$expr</xvar>
                        <xfunapp>
                            <name>traverse_MethodInvocation</name>
                            <args>
                                <xvar>$expr</xvar>
                            </args>
                        </xfunapp>                        
                    </xpar>
                    <xhide></xhide>
                </xif> 
           </xif>

        </xseq>
    </function>
    <function name="traverse_InfixExpression" arg1="$expr">
        <xpar>
            <xseq>
                <xload>$expr</xload>
                <xleftexpr></xleftexpr>
                <xstore>$leftexpr</xstore>

                    <xfunapp>
                        <name>getcalls</name>
                        <args>
                            <xload>$leftexpr</xload>
                        </args>
                    </xfunapp>

                <xfree>$leftexpr</xfree>
            </xseq> 
            <xseq>
                <xload>$expr</xload>
                <xrightexpr></xrightexpr>
                <xstore>$rightexpr</xstore>

                    <xfunapp>
                        <name>getcalls</name>
                        <args>
                            <xload>$rightexpr</xload>
                        </args>
                    </xfunapp>

                <xfree>$rightexpr</xfree>
            </xseq> 
            <xseq>
                <xload>$expr</xload>
                <xextendexprs></xextendexprs>
                <xmap>
                    <xseq>    
                        <xstore>$extendexpr</xstore>

                        <xfunapp>
                            <name>getcalls</name>
                            <args>
                                <xload>$extendexpr</xload>
                            </args>
                       </xfunapp>

                       <xfree>$extendexpr</xfree>
                    </xseq>
                </xmap>
            </xseq> 
        </xpar>
    </function>
    <function name="traverse_MethodInvocation" arg1="$expr">
        <xpar>
            <xseq>
                <xload>$expr</xload>
                <xarguments></xarguments>
                <xmap>
                    <xseq>
                        <xstore>$argexpr</xstore>
                        <xfunapp>
                            <name>getcalls</name>
                            <args>
                                <xload>$argexpr</xload>
                            </args>
                        </xfunapp>
                        <xfree>$argexpr</xfree>
                    </xseq>
                </xmap>
            </xseq>
        </xpar>
    </function>    
</library>