<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
  <!--Created by yFiles for Java 2.7-->
  <key for="graphml" id="d0" yfiles.type="resources"/>
  <key attr.name="url" attr.type="string" for="node" id="d1"/>
  <key attr.name="description" attr.type="string" for="node" id="d2"/>
  <key for="node" id="d3" yfiles.type="nodegraphics"/>
  <key attr.name="url" attr.type="string" for="edge" id="d4"/>
  <key attr.name="description" attr.type="string" for="edge" id="d5"/>
  <key for="edge" id="d6" yfiles.type="edgegraphics"/>
  <graph edgedefault="directed" id="G">
    <node id="n0">
      <data key="d2"/>
      <data key="d3">
        <y:UMLClassNode>
          <y:Geometry height="84.79039999999986" width="159.83039999999994" x="324.24802499999294" y="317.9671999999078"/>
          <y:Fill color="#FFFFFF" 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.92626953125" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="85.64990234375" x="37.09024882812497" y="26.701171875">ListenerBase</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel>+ isDisposed() : boolean</y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
    <node id="n1">
      <data key="d2"/>
      <data key="d3">
        <y:UMLClassNode>
          <y:Geometry height="102.79039999999986" width="169.83039999999994" x="819.0752249999928" y="-23.613600000091935"/>
          <y:Fill color="#FFFFFF" 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.92626953125" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="91.42626953125" x="39.20206523437497" y="26.701171875">Procedure&lt;T&gt;</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel>+ execute(result : T)
+ exception(t : Throwable)</y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
    <node id="n2">
      <data key="d2"/>
      <data key="d3">
        <y:UMLClassNode>
          <y:Geometry height="53.990399999999795" width="169.83039999999994" x="619.2448249999928" y="0.7863999999080988"/>
          <y:Fill color="#FFFFFF" 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.92626953125" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="77.6962890625" x="46.06705546874997" y="26.701171875">Listener&lt;T&gt;</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel/>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
    <node id="n3">
      <data key="d2"/>
      <data key="d3">
        <y:UMLClassNode>
          <y:Geometry height="102.79039999999986" width="262.50239999999997" x="819.0752249999929" y="109.17679999990793"/>
          <y:Fill color="#FFFFFF" 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.92626953125" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="122.498046875" x="70.00217656249998" y="26.701171875">SyncProcedure&lt;T&gt;</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel>+ execute(graph : ReadGraph, result : T)
+ exception(graph : ReadGraph, t : Throwable)</y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
    <node id="n4">
      <data key="d2"/>
      <data key="d3">
        <y:UMLClassNode>
          <y:Geometry height="102.79039999999986" width="295.78239999999994" x="819.0752249999929" y="241.9671999999078"/>
          <y:Fill color="#FFFFFF" 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.92626953125" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="130.4453125" x="82.66854374999997" y="26.701171875">AsyncProcedure&lt;T&gt;</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel>+ execute(graph : AsyncReadGraph, result : T)
+ exception(graph : AsyncReadGraph, t : Throwable)</y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
    <node id="n5">
      <data key="d2"/>
      <data key="d3">
        <y:UMLClassNode>
          <y:Geometry height="53.990399999999795" width="169.83039999999994" x="619.2448249999929" y="133.57679999990796"/>
          <y:Fill color="#FFFFFF" 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.92626953125" modelName="internal" modelPosition="b" textColor="#000000" visible="true" width="108.76806640625" x="30.53116679687497" y="26.701171875">SyncListener&lt;T&gt;</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel/>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
    <node id="n6">
      <data key="d2"/>
      <data key="d3">
        <y:UMLClassNode>
          <y:Geometry height="53.990399999999795" width="169.83039999999994" x="619.2448249999929" y="266.3671999999078"/>
          <y:Fill color="#FFFFFF" 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.92626953125" modelName="internal" modelPosition="b" textColor="#000000" visible="true" width="116.71533203125" x="26.55753398437497" y="26.701171875">AsyncListener&lt;T&gt;</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel/>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
    <node id="n7">
      <data key="d2"/>
      <data key="d3">
        <y:UMLClassNode>
          <y:Geometry height="119.79039999999986" width="262.50239999999997" x="819.075224999993" y="518.5479999999075"/>
          <y:Fill color="#FFFFFF" 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.92626953125" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="152.82080078125" x="54.84079960937498" y="26.701171875">SyncMultiProcedure&lt;T&gt;</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel>+ execute(graph : ReadGraph, result : T)
+ finished(graph : ReadGraph)
+ exception(graph : ReadGraph, t : Throwable)</y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
    <node id="n8">
      <data key="d2"/>
      <data key="d3">
        <y:UMLClassNode>
          <y:Geometry height="53.990399999999795" width="169.83039999999994" x="619.2448249999929" y="551.4479999999076"/>
          <y:Fill color="#FFFFFF" 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.92626953125" modelName="internal" modelPosition="b" textColor="#000000" visible="true" width="139.0908203125" x="15.36978984374997" y="26.701171875">SyncMultiListener&lt;T&gt;</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel/>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
    <node id="n9">
      <data key="d2"/>
      <data key="d3">
        <y:UMLClassNode>
          <y:Geometry height="119.79039999999986" width="295.78239999999994" x="819.0752249999928" y="668.3383999999073"/>
          <y:Fill color="#FFFFFF" 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.92626953125" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="160.76806640625" x="67.50716679687497" y="26.701171875">AsyncMultiProcedure&lt;T&gt;</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel>+ execute(graph : AsyncReadGraph, result : T)
+ finished(graph : AyncReadGraph)
+ exception(graph : AsyncReadGraph, t : Throwable)</y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
    <node id="n10">
      <data key="d2"/>
      <data key="d3">
        <y:UMLClassNode>
          <y:Geometry height="53.990399999999795" width="169.83039999999994" x="619.2448249999929" y="701.2383999999074"/>
          <y:Fill color="#FFFFFF" 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.92626953125" modelName="internal" modelPosition="b" textColor="#000000" visible="true" width="147.0380859375" x="11.39615703124997" y="26.701171875">AsyncMultiListener&lt;T&gt;</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel/>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
    <node id="n11">
      <data key="d2"/>
      <data key="d3">
        <y:UMLClassNode>
          <y:Geometry height="113.79039999999986" width="169.83039999999994" x="819.075224999993" y="374.75759999990765"/>
          <y:Fill color="#FFFFFF" 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.92626953125" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="121.7490234375" x="24.04068828124997" y="26.701171875">MultiProcedure&lt;T&gt;</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel>+ execute(result : T)
+ finished()
+ exception(t : Throwable)</y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
    <node id="n12">
      <data key="d2"/>
      <data key="d3">
        <y:UMLClassNode>
          <y:Geometry height="53.990399999999795" width="169.83039999999994" x="619.2448249999929" y="399.1575999999077"/>
          <y:Fill color="#FFFFFF" 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.92626953125" modelName="internal" modelPosition="b" textColor="#000000" visible="true" width="108.01904296875" x="30.90567851562497" y="26.701171875">MultiListener&lt;T&gt;</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel/>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
    <edge id="e0" source="n2" target="n0">
      <data key="d5"/>
      <data key="d6">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="white_delta"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
    </edge>
    <edge id="e1" source="n2" target="n1">
      <data key="d5"/>
      <data key="d6">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="white_delta"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
    </edge>
    <edge id="e2" source="n5" target="n3">
      <data key="d5"/>
      <data key="d6">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="white_delta"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
    </edge>
    <edge id="e3" source="n6" target="n4">
      <data key="d5"/>
      <data key="d6">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="white_delta"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
    </edge>
    <edge id="e4" source="n5" target="n0">
      <data key="d5"/>
      <data key="d6">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="white_delta"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
    </edge>
    <edge id="e5" source="n6" target="n0">
      <data key="d5"/>
      <data key="d6">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="white_delta"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
    </edge>
    <edge id="e6" source="n8" target="n7">
      <data key="d5"/>
      <data key="d6">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="white_delta"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
    </edge>
    <edge id="e7" source="n8" target="n0">
      <data key="d5"/>
      <data key="d6">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="white_delta"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
    </edge>
    <edge id="e8" source="n10" target="n9">
      <data key="d5"/>
      <data key="d6">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="white_delta"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
    </edge>
    <edge id="e9" source="n10" target="n0">
      <data key="d5"/>
      <data key="d6">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="white_delta"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
    </edge>
    <edge id="e10" source="n12" target="n11">
      <data key="d5"/>
      <data key="d6">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="white_delta"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
    </edge>
    <edge id="e11" source="n12" target="n0">
      <data key="d5"/>
      <data key="d6">
        <y:PolyLineEdge>
          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
          <y:LineStyle color="#000000" type="line" width="1.0"/>
          <y:Arrows source="none" target="white_delta"/>
          <y:BendStyle smoothed="false"/>
        </y:PolyLineEdge>
      </data>
    </edge>
  </graph>
  <data key="d0">
    <y:Resources/>
  </data>
</graphml>
