<?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="193.50240000000014" x="142.75281249999614" y="66.57774999999452"/>
          <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="58.91357421875" x="67.29441289062507" y="26.701171875">Read&lt;T&gt;</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel>+ perform(graph : ReadGraph) : T</y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
    <node id="n1">
      <data key="d2"/>
      <data key="d3">
        <y:UMLClassNode>
          <y:Geometry height="104.24639999999982" width="213.47040000000004" x="132.76881249999622" y="191.0961499999944"/>
          <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="97.9326171875" x="57.76889140625002" y="26.701171875">AsyncRead&lt;T&gt;</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel>+ perform(graph : AsyncReadGraph,
      procedure : AsyncProcedure&lt;T&gt;)</y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
    <node id="n2">
      <data key="d2"/>
      <data key="d3">
        <y:UMLClassNode>
          <y:Geometry height="104.24639999999982" width="228.83039999999994" x="376.2392124999963" y="191.0961499999944"/>
          <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="128.25537109375" x="50.28751445312497" y="26.701171875">AsyncMultiRead&lt;T&gt;</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel>+ perform(graph : AsyncReadGraph, 
    callback : AsyncMultiProcedure&lt;T&gt;)</y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
    <node id="n3">
      <data key="d2"/>
      <data key="d3">
        <y:UMLClassNode>
          <y:Geometry height="84.79039999999986" width="200.192" x="635.0696124999963" y="66.57774999999452"/>
          <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="113.8271484375" x="43.182425781250004" y="26.701171875">PrimitiveRead&lt;T&gt;</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel>+ register(procedure : Listener&lt;T&gt;)</y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
    <node id="n4">
      <data key="d2"/>
      <data key="d3">
        <y:UMLClassNode>
          <y:Geometry height="99.99039999999991" width="175.55039999999997" x="151.72881249999625" y="335.0705499999942"/>
          <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="36.5" x="69.52519999999998" y="26.701171875">Write</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel>+perform(graph : WriteGraph)
    ...</y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
    <node id="n5">
      <data key="d2"/>
      <data key="d3">
        <y:UMLClassNode>
          <y:Geometry height="84.79039999999986" width="228.83039999999994" x="376.2392124999963" y="342.67054999999425"/>
          <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="65.39453125" x="81.71793437499997" y="26.701171875">WriteOnly</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel>+ void perform(graph : WriteOnlyGraph)</y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
    <node id="n6">
      <data key="d2"/>
      <data key="d3">
        <y:UMLClassNode>
          <y:Geometry height="104.24639999999985" width="228.8304" x="376.23921249999626" y="56.84974999999453"/>
          <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="89.236328125" x="69.7970359375" y="26.701171875">MultiRead&lt;T&gt;</y:NodeLabel>
          <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="interface" use3DEffect="false">
            <y:AttributeLabel/>
            <y:MethodLabel>+ perform(graph : ReadGraph, 
      callback : AsyncMultiProcedure&lt;T&gt;)</y:MethodLabel>
          </y:UML>
        </y:UMLClassNode>
      </data>
    </node>
  </graph>
  <data key="d0">
    <y:Resources/>
  </data>
</graphml>
