<!--

      JIL Example: minimal class

      The following is an example JIL document which describes
      a generic skeleton Java class. One of every element is
      included, excluding any optional attributes. The SOOT
      and STOOP extensions are included.

	  David Eng
	  Sable Research Group
	  January 2002

-->

<?xml version="1.0"?>

<!-- declare this a JIL document using the DTD -->                               
<!DOCTYPE jil SYSTEM "jil10.dtd">
<jil>

  <history>
  </history>

  <!-- public MyClass implements MyInterface extends MySupperClass -->
  <class name="MyClass" extends="MySupperClass">
    <modifiers>
      <modifier name="public" />
    </modifiers>
    <interfaces>
      <interface name="myinterface" />  
    </interfaces>
    
    <!-- public MyField -->
    <fields>
      <field id="0" name="MyField">
        <modifiers>
          <modifier name="public" />
        </modifiers>
        
        <!-- dynamic field accesses instrumented by STOOP -->
        <stoop_field>
          <accesses>
            <reads>
              <access declaringtype="MyType" />
            </reads>
            <writes>
              <access declaringtype="MyType" />
            </writes>
          </accesses>
        </stoop_field>
        
      </field>
    </fields>
    
    <!-- public void MyMethod( MyType MyParam ) -->
    <methods>
      <method name="MyMethod" class="MyClass">
        
        <declaration>
          <![CDATA[ public void MyMethod( MyType MyParam ) ]]>
        </declaration>
        
		<parameters>
		  <parameter id="0" name="MyParam">
            <soot_parameter uses="1">
              <use id="0" line="123" />
            </soot_parameter>
		  </parameter>
		</parameters>
        
        <!-- MyType MyLocal -->
		<locals>
		  <local id="0" name="MyLocal">
          
            <!-- static local uses instrumented by SOOT -->                       
            <soot_local>
              <use id="0" line="1" />
              <definition id="0" line="1" />
            </soot_local>
            
          </local>
          
          <!-- locals by type -->
          <types count="1">          
            <type id="0" count="1" type="MyType">
              <local id="0" name="MyLocal">
                <soot_local>
                  <use id="0" line="123" />
                  <definition id="0" line="123" />
                </soot_local>
              </local>
            </type>
          </types>
          
	</locals>
        
        <!-- labels -->
	<labels>
	  <label id="0" name="MyLabel" />
	</labels>
        
        <!-- statements -->
	<statements>
	  <statement id="0" label="MyLabel">
          
          <!-- static per-statement analysis results instrumentated by SOOT -->                           
          <soot_statement>
            <uses id="0" local="MyLocal" />
            <defines id="0" local="MyLocal" />
            <livevariables incount="1" outcount="1">
              <in id="0" local="MyLocal" />
              <out id="0" local="MyLocal" />
            </livevariables>
            <jimple>
              <![CDATA[ $l5 = virtualinvoke $r13.<java.lang.Long: long longValue()>(); ]]>
            </jimple>
          </soot_statement>
          
          </statement>
		</statements>
        
        <!-- exceptions -->
		<exceptions>
		  <exception id="0" type="MyException">
		    <begin label="MyLabel" />
			<end label="MyLabel" />
			<handler label="MyLabel" />
		  </exception>		   
		</exceptions>
        
        <!-- dynamic method calls instrumented by STOOP -->                           
        <stoop_method calls="1">
          <stepdeclaration>
            <![CDATA[ void MyMethod( MyType ) ]]>
          </stepdeclaration>
          <trace nesting="1">
            <entries count="1" />
            <exits count="1" />
          </trace>
        </stoop_method>
        
	  </method>
	</methods>
  </class>

</jil>

            
<!-- EOF -->

