<?xml version="1.0"?>
<swf version="9" compressed="1">
<!-- 

This is identical to stack1.xml except the symbolclass tag appears before
the DoABC tag. This should be executed as normal.

-->
  <Header framerate="25" frames="1">
    <size>
      <Rectangle left="0" right="8000" top="0" bottom="6000"/>
    </size>
    <tags>
      <FileAttributes hasMetaData="0" allowABC="1" suppressCrossDomainCaching="0" swfRelativeURLs="0" useNetwork="0"/>
      <SymbolClass>
        <symbols>
          <Symbol objectID="0" name="a.A"/>
        </symbols>
      </SymbolClass>
      <DoABCDefine flags="0" name="">
        <actions>
          <Action3 minorVersion="16" majorVersion="46">
            <constants>
              <Constants>
                <ints/>
                <uints/>
                <doubles/>
                <strings>
                  <String2 value="A.f()"/>
                  <String2 value="A"/>
                  <String2 value="MovieClip"/>
                  <String2 value="f"/>
                  <String2 value="Object"/>
                  <String2 value="EventDispatcher"/>
                  <String2 value="DisplayObject"/>
                  <String2 value="InteractiveObject"/>
                  <String2 value="DisplayObjectContainer"/>
                  <String2 value="Sprite"/>
                  <String2 value="trace"/>
                  <String2 value="a"/>
                  <String2 value="flash.display"/>
                  <String2 value=""/>
                  <String2 value="flash.events"/>
                </strings>
                <namespaces>
                  <ProtectedNamespace index="2"/>
                  <PackageNamespace index="12"/>
                  <PackageNamespace index="13"/>
                  <PackageNamespace index="14"/>
                  <PackageNamespace index="15"/>
                </namespaces>
                <namespaceSets/>
                <multinames>
                  <QName namespaceIndex="2" nameIndex="2"/>
                  <QName namespaceIndex="3" nameIndex="3"/>
                  <QName namespaceIndex="4" nameIndex="4"/>
                  <QName namespaceIndex="4" nameIndex="5"/>
                  <QName namespaceIndex="5" nameIndex="6"/>
                  <QName namespaceIndex="3" nameIndex="7"/>
                  <QName namespaceIndex="3" nameIndex="8"/>
                  <QName namespaceIndex="3" nameIndex="9"/>
                  <QName namespaceIndex="3" nameIndex="10"/>
                  <QName namespaceIndex="4" nameIndex="11"/>
                </multinames>
              </Constants>
            </constants>
            <methods>
              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" needActivation="0" needArguments="0">
                <paramTypes/>
              </MethodInfo>
              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" needActivation="0" needArguments="0">
                <paramTypes/>
              </MethodInfo>
              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" needActivation="0" needArguments="0">
                <paramTypes/>
              </MethodInfo>
              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" needActivation="0" needArguments="0">
                <paramTypes/>
              </MethodInfo>
            </methods>
            <metadata/>
            <instances>
              <InstanceInfo nameIndex="1" superIndex="2" hasProtectedNS="1" interface="0" final="0" sealed="1" protectedNS="1" iInitIndex="2">
                <interfaces/>
                <traits>
                  <TraitInfo nameIndex="3" override="0" final="0">
                    <trait>
                      <Method dispID="1" methodInfo="1"/>
                    </trait>
                  </TraitInfo>
                </traits>
              </InstanceInfo>
            </instances>
            <classes>
              <ClassInfo cInitIndex="3">
                <traits/>
              </ClassInfo>
            </classes>
            <scripts>
              <ScriptInfo initIndex="0">
                <traits>
                  <TraitInfo nameIndex="1" override="0" final="0">
                    <trait>
                      <Class slotID="1" classInfo="0"/>
                    </trait>
                  </TraitInfo>
                </traits>
              </ScriptInfo>
            </scripts>
            <methodBodies>
              <MethodBody methodInfo="0" maxStack="3" maxRegs="1" scopeDepth="0" maxScope="8" exceptionCount="0">
                <code>
                  <OpGetLocal0/>
                  <OpPushScope/>
                  <OpGetGlobalScope/>
                  <OpGetLex name="2"/>
                  <OpDup/>
                  <OpPushScope/>
                  <OpNewClass classIndex="0"/>
                  <OpPopScope/>
                  <OpSetSlot slotID="1"/>
                  <OpReturnVoid/>
                </code>
                <exceptions/>
                <traits/>
              </MethodBody>

	      <!-- This is function A.f() -->
	      <!--
	      Its purpose is to push things onto the stack and the scope
	      stack and leave them there to see whether they are still
	      available after return.
	      Ideally we would also verify that the stack and the scope stack
	      from before this function call are not available, but this causes
	      VerifyErrors that interrupt execution.
	      -->
              <MethodBody methodInfo="1" maxStack="8" maxRegs="1" scopeDepth="5" maxScope="14" exceptionCount="0">
	        <code>

		  <!-- OpPop and OpPopScope cause a scope stack
		  underflow error, so we don't do it. -->

                  <OpFindPropStrict name="10"/>
                  <OpPushString index="1"/>
		  <OpCallPropVoid name="10" argc="1"/>

		  <!-- Push junk to the stack -->
		  <OpPushByte value="9"/>
		  <OpPushByte value="9"/>
		  <OpPushByte value="9"/>
		  <OpPushByte value="9"/>
		  <OpPushByte value="9"/>
		  
		  <OpReturnVoid/>
                </code>
                <exceptions/>
                <traits/>
              </MethodBody>
              <MethodBody methodInfo="2" maxStack="10" maxRegs="1" scopeDepth="8" maxScope="12" exceptionCount="0">
                <code>
                  <OpGetLocal0/>
                  <OpConstructSuper argc="0"/>
		  
		  <!-- Push 3 values, 3 trace function lookups to the stack -->
		  <OpFindPropStrict name="10"/>
		  <OpPushByte value="1"/>	
		  <OpFindPropStrict name="10"/>
		  <OpPushByte value="2"/>	
		  <OpFindPropStrict name="10"/>
		  <OpPushByte value="3"/>	
		  
		  <!-- This is one call to trace() -->
		  <OpCallPropVoid name="10" argc="1"/>
		  
		  <!-- This is the call to f() -->
		  <!-- f() pushes things to the stack and leaves them there.
		  They should not be available after
		  the function call has finished, but what was on the stack
		  before the call should still be there. -->
                  <OpGetLocal0/>
		  <OpCallPropVoid name="3" argc="0"/>
		  
		  <!-- These are the remaining calls to trace() -->
                  <OpCallPropVoid name="10" argc="1"/>
                  <OpCallPropVoid name="10" argc="1"/>

		  <OpReturnVoid/>
                </code>
                <exceptions/>
                <traits/>
              </MethodBody>
              <MethodBody methodInfo="3" maxStack="1" maxRegs="1" scopeDepth="8" maxScope="9" exceptionCount="0">
                <code>
                  <OpGetLocal0/>
                  <OpPushScope/>
                  <OpReturnVoid/>
                </code>
                <exceptions/>
                <traits/>
              </MethodBody>
            </methodBodies>
          </Action3>
        </actions>
      </DoABCDefine>
      <ShowFrame/>
      <End/>
    </tags>
  </Header>
</swf>
