<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns/graphml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns/graphml http://www.yworks.com/xml/schema/graphml/1.0/ygraphml.xsd">
  <key for="node" id="d0" yfiles.type="nodegraphics"/>
  <key attr.name="description" attr.type="string" for="node" id="d1"/>
  <key for="edge" id="d2" yfiles.type="edgegraphics"/>
  <key attr.name="description" attr.type="string" for="edge" id="d3"/>
  <key for="graphml" id="d4" yfiles.type="resources"/>
  <graph edgedefault="directed" id="G" parse.edges="22" parse.nodes="10" parse.order="free">
    <node id="n0">
      <data key="d0">
        <y:UMLClassNode>
          <y:Geometry height="60.0" width="140.0" x="168.5" y="57.0"/>
          <y:Fill color="#FFCC00" transparent="false"/>
          <y:BorderStyle color="#000000" type="line" width="1.0"/>
          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="104.29296875" x="17.853515625" y="3.0">CodeGenerator</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
            <y:AttributeLabel></y:AttributeLabel>
            <y:MethodLabel>runCompiled()</y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
      <data key="d1">UMLClass</data>
    </node>
    <node id="n1">
      <data key="d0">
        <y:UMLClassNode>
          <y:Geometry height="84.0" width="140.0" x="223.5" y="151.0"/>
          <y:Fill color="#FFCC00" transparent="false"/>
          <y:BorderStyle color="#000000" type="line" width="1.0"/>
          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="94.87939453125" x="22.560302734375" y="3.0">TreeCompiler</y:NodeLabel>
          <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
            <y:AttributeLabel></y:AttributeLabel>
            <y:MethodLabel>compileClasses()
getCompiled()
compileTree()
</y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
      <data key="d1">UMLClass</data>
    </node>
    <node id="n2">
      <data key="d0">
        <y:UMLClassNode>
          <y:Geometry height="31.0" width="140.0" x="78.5" y="406.0"/>
          <y:Fill color="#FFCC00" transparent="false"/>
          <y:BorderStyle color="#000000" type="line" width="1.0"/>
          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="119.16552734375" x="10.417236328125" y="3.0">VariantOptimizer</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
            <y:AttributeLabel></y:AttributeLabel>
            <y:MethodLabel></y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
      <data key="d1">UMLClass</data>
    </node>
    <node id="n3">
      <data key="d0">
        <y:UMLClassNode>
          <y:Geometry height="35.0" width="140.0" x="119.5" y="310.0"/>
          <y:Fill color="#FFCC00" transparent="false"/>
          <y:BorderStyle color="#000000" type="line" width="1.0"/>
          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="79.75927734375" x="30.120361328125" y="3.0">TreeLoader</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
            <y:AttributeLabel></y:AttributeLabel>
            <y:MethodLabel></y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
      <data key="d1">UMLClass</data>
    </node>
    <node id="n4">
      <data key="d0">
        <y:UMLNoteNode>
          <y:Geometry height="82.0" width="203.0" x="698.0" y="-49.0"/>
          <y:Fill color="#FFCC00" transparent="false"/>
          <y:BorderStyle color="#000000" type="line" width="1.0"/>
          <y:NodeLabel alignment="left" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="73.814453125" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="181.5625" x="10.71875" y="4.0">Topic:
- How is the VariantOptimizer
   being invoked?
- Where is the AST turned into
   sequential code?</y:NodeLabel>
        </y:UMLNoteNode>
      </data>
      <data key="d1">UMLNote</data>
    </node>
    <node id="n5">
      <data key="d0">
        <y:UMLClassNode>
          <y:Geometry height="63.0" width="140.0" x="87.5" y="-42.0"/>
          <y:Fill color="#FFCC00" transparent="false"/>
          <y:BorderStyle color="#000000" type="line" width="1.0"/>
          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="70.498046875" x="34.7509765625" y="3.0">Generator</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
            <y:AttributeLabel></y:AttributeLabel>
            <y:MethodLabel>run()</y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
      <data key="d1">UMLClass</data>
    </node>
    <node id="n6">
      <data key="d0">
        <y:UMLClassNode>
          <y:Geometry height="61.0" width="140.0" x="341.5" y="327.0"/>
          <y:Fill color="#FFCC00" transparent="false"/>
          <y:BorderStyle color="#000000" type="line" width="1.0"/>
          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="62.423828125" x="38.7880859375" y="3.0">compiler</y:NodeLabel>
          <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
            <y:AttributeLabel></y:AttributeLabel>
            <y:MethodLabel>compile()</y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
      <data key="d1">UMLClass</data>
    </node>
    <node id="n7">
      <data key="d0">
        <y:UMLClassNode>
          <y:Geometry height="33.0" width="140.0" x="750.5" y="481.0"/>
          <y:Fill color="#FFCC00" transparent="false"/>
          <y:BorderStyle color="#000000" type="line" width="1.0"/>
          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="48.28759765625" x="45.856201171875" y="3.0">Packer</y:NodeLabel>
          <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
            <y:AttributeLabel></y:AttributeLabel>
            <y:MethodLabel></y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
      <data key="d1">UMLClass</data>
    </node>
    <node id="n8">
      <data key="d0">
        <y:UMLClassNode>
          <y:Geometry height="33.0" width="140.0" x="762.1666666666666" y="568.0"/>
          <y:Fill color="#FFCC00" transparent="false"/>
          <y:BorderStyle color="#000000" type="line" width="1.0"/>
          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="89.05859375" x="25.470703125" y="3.0">PrettyPrinter</y:NodeLabel>
          <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
            <y:AttributeLabel></y:AttributeLabel>
            <y:MethodLabel></y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
      <data key="d1">UMLClass</data>
    </node>
    <node id="n9">
      <data key="d0">
        <y:UMLClassNode>
          <y:Geometry height="61.0" width="140.0" x="686.5" y="79.0"/>
          <y:Fill color="#FFCC00" transparent="false"/>
          <y:BorderStyle color="#000000" type="line" width="1.0"/>
          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="30.41259765625" x="54.793701171875" y="3.0">tree</y:NodeLabel>
          <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="false">
            <y:AttributeLabel></y:AttributeLabel>
            <y:MethodLabel>toJavascript()</y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
      <data key="d1">UMLClass</data>
    </node>
    <edge id="e0" source="n3" target="n2">
      <data key="d2">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="17.51171875" tx="0.0" ty="-15.517187499999977">
            <y:Point x="168.7864990234375" y="378.2843017578125"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e1" source="n1" target="n3">
      <data key="d2">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="42.01718749999998" tx="0.0" ty="-17.51171875">
            <y:Point x="250.7718505859375" y="264.0147247314453"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e2" source="n0" target="n1">
      <data key="d2">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="29.984375" tx="0.0" ty="-41.981770833333314">
            <y:Point x="264.5084533691406" y="131.25131225585938"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e3" source="n0" target="n0">
      <data key="d2">
        <y:ArcEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
            <y:Point x="238.5" y="87.0"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:Arc height="0.0" ratio="1.0" type="fixedRatio"/>
        </y:ArcEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e4" source="n1" target="n1">
      <data key="d2">
        <y:ArcEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
            <y:Point x="293.5" y="193.0"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:Arc height="0.0" ratio="1.0" type="fixedRatio"/>
        </y:ArcEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e5" source="n2" target="n2">
      <data key="d2">
        <y:ArcEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
            <y:Point x="148.5" y="421.5"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:Arc height="0.0" ratio="1.0" type="fixedRatio"/>
        </y:ArcEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e6" source="n3" target="n3">
      <data key="d2">
        <y:ArcEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
            <y:Point x="189.5" y="327.5"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:Arc height="0.0" ratio="1.0" type="fixedRatio"/>
        </y:ArcEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e7" source="n2" target="n2">
      <data key="d2">
        <y:ArcEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
            <y:Point x="148.5" y="421.5"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:Arc height="0.0" ratio="1.0" type="fixedRatio"/>
        </y:ArcEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e8" source="n3" target="n3">
      <data key="d2">
        <y:ArcEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
            <y:Point x="189.5" y="327.5"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:Arc height="0.0" ratio="1.0" type="fixedRatio"/>
        </y:ArcEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e9" source="n5" target="n5">
      <data key="d2">
        <y:ArcEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
            <y:Point x="157.5" y="-10.5"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:Arc height="0.0" ratio="1.0" type="fixedRatio"/>
        </y:ArcEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e10" source="n5" target="n0">
      <data key="d2">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="31.53359375000001" tx="0.0" ty="0.0">
            <y:Point x="195.49160766601562" y="48.76679992675781"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e11" source="n6" target="n6">
      <data key="d2">
        <y:ArcEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
            <y:Point x="411.5" y="357.5"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:Arc height="0.0" ratio="1.0" type="fixedRatio"/>
        </y:ArcEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e12" source="n7" target="n7">
      <data key="d2">
        <y:ArcEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
            <y:Point x="820.5" y="497.5"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:Arc height="0.0" ratio="1.0" type="fixedRatio"/>
        </y:ArcEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e13" source="n6" target="n6">
      <data key="d2">
        <y:ArcEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
            <y:Point x="411.5" y="357.5"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:Arc height="0.0" ratio="1.0" type="fixedRatio"/>
        </y:ArcEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e14" source="n1" target="n6">
      <data key="d2">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="41.98177083333334" tx="0.0" ty="-30.50078124999999">
            <y:Point x="364.1295471191406" y="288.7408752441406"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e15" source="n6" target="n7">
      <data key="d2">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="30.500781249999932" tx="0.0" ty="0.0">
            <y:Point x="613.3748168945312" y="445.5003967285156"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e16" source="n8" target="n8">
      <data key="d2">
        <y:ArcEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
            <y:Point x="832.1666870117188" y="584.5"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:Arc height="0.0" ratio="1.0" type="fixedRatio"/>
        </y:ArcEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e17" source="n8" target="n8">
      <data key="d2">
        <y:ArcEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
            <y:Point x="832.1666870117188" y="584.5"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:Arc height="-0.0" ratio="-0.8012649" type="fixedRatio"/>
        </y:ArcEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e18" source="n6" target="n8">
      <data key="d2">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="30.500781249999932" tx="0.0" ty="0.0">
            <y:Point x="628.7893676757812" y="484.9508972167969"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e19" source="n9" target="n9">
      <data key="d2">
        <y:ArcEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
            <y:Point x="756.5" y="109.5"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:Arc height="0.0" ratio="1.0" type="fixedRatio"/>
        </y:ArcEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e20" source="n9" target="n9">
      <data key="d2">
        <y:ArcEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
            <y:Point x="756.5" y="109.5"/>
          </y:Path>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:Arc height="0.0" ratio="1.0" type="fixedRatio"/>
        </y:ArcEdge>
      </data>
      <data key="d3"/>
    </edge>
    <edge id="e21" source="n9" target="n6">
      <data key="d2">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="-30.50078124999999"/>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="standard"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
      <data key="d3"/>
    </edge>
  </graph>
  <data key="d4">
    <y:Resources/>
  </data>
</graphml>
