<?xml version="1.0" encoding="UTF-8"?>
<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_WjlxUBq7EeehPu7-JZvGXA" name="FirstVersion">
  <packagedElement xmi:type="uml:Class" xmi:id="_hkQCYBq7EeehPu7-JZvGXA" name="TextBuffer">
    <packageImport xmi:id="_yWQwIEJREeeVzYLpViB8Aw">
      <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#_0"/>
    </packageImport>
    <templateBinding xmi:id="_8p3DkEPVEeeRubxhakY4Bg"/>
    <templateBinding xmi:id="_-CylYEPVEeeRubxhakY4Bg"/>
    <ownedAttribute xmi:id="_EQAeoBufEee8Us30rRf8FQ" name="content" visibility="private">
      <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
    </ownedAttribute>
    <ownedAttribute xmi:id="_RxH2EBumEee8Us30rRf8FQ" name="caretPosition" visibility="private">
      <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
    </ownedAttribute>
    <ownedAttribute xmi:id="_af15sBumEee8Us30rRf8FQ" name="startSelectionPosition" visibility="private">
      <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
    </ownedAttribute>
    <ownedAttribute xmi:id="_dwoVABumEee8Us30rRf8FQ" name="endSelectionPosition" visibility="private">
      <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
    </ownedAttribute>
    <ownedAttribute xmi:id="_ddZ2UEPPEeeYE665E6Q_Eg" name="clipboard" visibility="private" type="_vkcmsBq7EeehPu7-JZvGXA" aggregation="composite">
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eWk6AEPPEeeYE665E6Q_Eg" value="1"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eWk6AUPPEeeYE665E6Q_Eg" value="1"/>
    </ownedAttribute>
    <ownedOperation xmi:id="_uCU6gBupEee8Us30rRf8FQ" name="isSelectionSet">
      <ownedParameter xmi:id="_v6qVIBupEee8Us30rRf8FQ" direction="return">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_j0bOID6-EeeQAsiunlBWMQ" name="append">
      <ownedParameter xmi:id="_l0DjkD6-EeeQAsiunlBWMQ" name="text">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_qVw0MD6-EeeQAsiunlBWMQ" name="delete">
      <ownedParameter xmi:id="_rr0oMD6-EeeQAsiunlBWMQ" name="begin">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
      <ownedParameter xmi:id="_tze4QD6-EeeQAsiunlBWMQ" name="end">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_zLEoAD6-EeeQAsiunlBWMQ" name="insert">
      <ownedParameter xmi:id="_0oJqAD6-EeeQAsiunlBWMQ" name="position">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
      </ownedParameter>
      <ownedParameter xmi:id="_7Yi_wD6-EeeQAsiunlBWMQ" name="content">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_CZ2fUD6_EeeQAsiunlBWMQ" name="replace">
      <ownedParameter xmi:id="_DJTmUD6_EeeQAsiunlBWMQ" name="begin">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
      </ownedParameter>
      <ownedParameter xmi:id="_FCQsAD6_EeeQAsiunlBWMQ" name="end">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
      </ownedParameter>
      <ownedParameter xmi:id="_G9RnMD6_EeeQAsiunlBWMQ" name="content">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_Oy8hQEJUEee85bZ6kqVzlg" name="getContent">
      <ownedParameter xmi:id="_RmEJIEJUEee85bZ6kqVzlg" name="characters" direction="return">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_bmaqEEPQEeeYE665E6Q_Eg" name="getContentWithoutCaret">
      <ownedParameter xmi:id="_j6v3wEPQEeeYE665E6Q_Eg" name="content" direction="return">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_iaRGIEJUEee85bZ6kqVzlg" name="setCaretPosition">
      <ownedParameter xmi:id="_kOUdsEJUEee85bZ6kqVzlg" name="newCaretPosition">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_opKRUEJUEee85bZ6kqVzlg" name="getStartSelectionPosition">
      <ownedParameter xmi:id="_opKRUUJUEee85bZ6kqVzlg" name="cursorIndex" direction="return">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_opKRUkJUEee85bZ6kqVzlg" name="setStartSelectionPosition">
      <ownedParameter xmi:id="_opKRU0JUEee85bZ6kqVzlg" name="newStartSelectionPosition">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_w86QMkJUEee85bZ6kqVzlg" name="getEndSelectionPosition">
      <ownedParameter xmi:id="_w86QM0JUEee85bZ6kqVzlg" name="cursorIndex" direction="return">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_w86QMEJUEee85bZ6kqVzlg" name="setEndSelectionPosition">
      <ownedParameter xmi:id="_w86QMUJUEee85bZ6kqVzlg" name="newEndSelectionPosition">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_M1Km0EPREeeYE665E6Q_Eg" name="resetSelection"/>
    <ownedOperation xmi:id="_TqEpIEPREeeYE665E6Q_Eg" name="getSelectionContent">
      <ownedParameter xmi:id="_d3EBkEPREeeYE665E6Q_Eg" name="content" direction="return">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_ZJBkQEJUEee85bZ6kqVzlg" name="getCaretPosition">
      <ownedParameter xmi:id="_cTBbEEJUEee85bZ6kqVzlg" name="cursorIndex" direction="return">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_wjXy4EPVEeeRubxhakY4Bg" name="save">
      <ownedParameter xmi:id="_yGxfUEPVEeeRubxhakY4Bg" type="_p5CeUEPUEeeRubxhakY4Bg" direction="return"/>
    </ownedOperation>
    <ownedOperation xmi:id="_1ISIgEPVEeeRubxhakY4Bg" name="restore">
      <ownedParameter xmi:id="_3QVaIEPVEeeRubxhakY4Bg" name="memento" type="_p5CeUEPUEeeRubxhakY4Bg"/>
    </ownedOperation>
  </packagedElement>
  <packagedElement xmi:type="uml:Interface" xmi:id="_jqHisBq7EeehPu7-JZvGXA" name="Command">
    <ownedOperation xmi:id="_YYqAEBq8EeehPu7-JZvGXA" name="execute"/>
  </packagedElement>
  <packagedElement xmi:type="uml:Class" xmi:id="_okOsQBq7EeehPu7-JZvGXA" name="Copy">
    <interfaceRealization xmi:id="_CJCRkD6-EeeQAsiunlBWMQ" client="_okOsQBq7EeehPu7-JZvGXA" supplier="_jqHisBq7EeehPu7-JZvGXA" contract="_jqHisBq7EeehPu7-JZvGXA"/>
  </packagedElement>
  <packagedElement xmi:type="uml:Class" xmi:id="_qcsCsBq7EeehPu7-JZvGXA" name="Cut">
    <interfaceRealization xmi:id="_CrNxkD6-EeeQAsiunlBWMQ" client="_qcsCsBq7EeehPu7-JZvGXA" supplier="_jqHisBq7EeehPu7-JZvGXA" contract="_jqHisBq7EeehPu7-JZvGXA"/>
  </packagedElement>
  <packagedElement xmi:type="uml:Class" xmi:id="_r3o9wBq7EeehPu7-JZvGXA" name="Paste">
    <interfaceRealization xmi:id="_DIrwsD6-EeeQAsiunlBWMQ" client="_r3o9wBq7EeehPu7-JZvGXA" supplier="_jqHisBq7EeehPu7-JZvGXA" contract="_jqHisBq7EeehPu7-JZvGXA"/>
  </packagedElement>
  <packagedElement xmi:type="uml:Class" xmi:id="_vkcmsBq7EeehPu7-JZvGXA" name="Clipboard">
    <ownedAttribute xmi:id="_7Mf1wBupEee8Us30rRf8FQ" name="content" visibility="private">
      <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
    </ownedAttribute>
    <ownedAttribute xmi:id="_SD3VwEPQEeeYE665E6Q_Eg" name="textBuffer" visibility="private" type="_hkQCYBq7EeehPu7-JZvGXA" aggregation="composite">
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SD3VwUPQEeeYE665E6Q_Eg" value="1"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SD3VwkPQEeeYE665E6Q_Eg" value="1"/>
    </ownedAttribute>
    <ownedOperation xmi:id="_MzwAUBuqEee8Us30rRf8FQ" name="getContent">
      <ownedParameter xmi:id="_N46RkBuqEee8Us30rRf8FQ" direction="return">
        <name xsi:nil="true"/>
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_GAwCgBuqEee8Us30rRf8FQ" name="setContent">
      <ownedParameter xmi:id="_HatfEBuqEee8Us30rRf8FQ" name="content">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_1DrHkEPQEeeYE665E6Q_Eg" name="getTextBuffer">
      <ownedParameter xmi:id="_29yq4EPQEeeYE665E6Q_Eg" name="textBuffer" type="_hkQCYBq7EeehPu7-JZvGXA" direction="return"/>
    </ownedOperation>
    <ownedOperation xmi:id="_6DLugEPQEeeYE665E6Q_Eg" name="setTextBuffer">
      <ownedParameter xmi:id="_9PmAIEPQEeeYE665E6Q_Eg" name="textBuffer" type="_hkQCYBq7EeehPu7-JZvGXA"/>
    </ownedOperation>
  </packagedElement>
  <packagedElement xmi:type="uml:Class" xmi:id="_9vd68Bq7EeehPu7-JZvGXA" name="ApplicationController">
    <ownedAttribute xmi:id="_lQ_ZUEPNEeeYE665E6Q_Eg" name="textBuffer" visibility="private" type="_hkQCYBq7EeehPu7-JZvGXA" aggregation="composite">
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nIiw0EPNEeeYE665E6Q_Eg" value="1"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nIiw0UPNEeeYE665E6Q_Eg" value="1"/>
    </ownedAttribute>
    <ownedAttribute xmi:id="_wSv2kEPNEeeYE665E6Q_Eg" name="commands" visibility="private" aggregation="composite">
      <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EMap"/>
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5E3McEPNEeeYE665E6Q_Eg" value="1"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5E3McUPNEeeYE665E6Q_Eg" value="1"/>
    </ownedAttribute>
    <ownedAttribute xmi:id="_fK5IUEPOEeeYE665E6Q_Eg" name="applicationView" visibility="private" type="_AwEkoEPOEeeYE665E6Q_Eg" aggregation="composite">
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hClCsEPOEeeYE665E6Q_Eg" value="1"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hClCsUPOEeeYE665E6Q_Eg" value="1"/>
    </ownedAttribute>
    <ownedOperation xmi:id="_0ytM1j7BEeeQAsiunlBWMQ" name="moveTextBufferCaretLeft"/>
    <ownedOperation xmi:id="_0ytM1z7BEeeQAsiunlBWMQ" name="moveTextBufferCaretRight"/>
    <ownedOperation xmi:id="_0ytM1D7BEeeQAsiunlBWMQ" name="setTextBufferStartSelectionIndex">
      <ownedParameter xmi:id="_0ytM1T7BEeeQAsiunlBWMQ" name="startSelectionIndex">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_0ytM0D7BEeeQAsiunlBWMQ" name="setTextBufferEndSelectionIndex">
      <ownedParameter xmi:id="_0ytM0T7BEeeQAsiunlBWMQ" name="endSelectionIndex">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_kZklwD7CEeeQAsiunlBWMQ" name="appendToTextBuffer">
      <ownedParameter xmi:id="_kZklwT7CEeeQAsiunlBWMQ" name="text">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_mbviEEJVEee85bZ6kqVzlg" name="deleteContentFromTextBuffer">
      <ownedParameter xmi:id="_mbviEUJVEee85bZ6kqVzlg" name="begin">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
      <ownedParameter xmi:id="_mbviEkJVEee85bZ6kqVzlg" name="end">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_SjV-0EJWEee85bZ6kqVzlg" name="copySelectionFromTextBuffer">
      <ownedParameter xmi:id="_SjV-0UJWEee85bZ6kqVzlg" name="begin">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
      <ownedParameter xmi:id="_SjV-0kJWEee85bZ6kqVzlg" name="end">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_T8VLAEJWEee85bZ6kqVzlg" name="cutSelectionFromTextBuffer">
      <ownedParameter xmi:id="_T8VLAUJWEee85bZ6kqVzlg" name="begin">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
      <ownedParameter xmi:id="_T8VLAkJWEee85bZ6kqVzlg" name="end">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_XCFbAEJWEee85bZ6kqVzlg" name="pasteClipboardIntoTextBuffer">
      <ownedParameter xmi:id="_XCFbAUJWEee85bZ6kqVzlg" name="begin">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
      <ownedParameter xmi:id="_XCFbAkJWEee85bZ6kqVzlg" name="end">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
    </ownedOperation>
  </packagedElement>
  <packagedElement xmi:type="uml:Association" xmi:id="_4GZLABuqEee8Us30rRf8FQ" memberEnd="_4GZLARuqEee8Us30rRf8FQ _4GZLBBuqEee8Us30rRf8FQ" navigableOwnedEnd="_4GZLARuqEee8Us30rRf8FQ _4GZLBBuqEee8Us30rRf8FQ">
    <name xsi:nil="true"/>
    <ownedEnd xmi:id="_4GZLARuqEee8Us30rRf8FQ" name="textBuffer" type="_hkQCYBq7EeehPu7-JZvGXA" association="_4GZLABuqEee8Us30rRf8FQ">
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4GZLAhuqEee8Us30rRf8FQ" value="1"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4GZLAxuqEee8Us30rRf8FQ" value="1"/>
    </ownedEnd>
    <ownedEnd xmi:id="_4GZLBBuqEee8Us30rRf8FQ" name="clipboard" type="_vkcmsBq7EeehPu7-JZvGXA" association="_4GZLABuqEee8Us30rRf8FQ">
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4GZLBRuqEee8Us30rRf8FQ" value="1"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4GZLBhuqEee8Us30rRf8FQ" value="1"/>
    </ownedEnd>
  </packagedElement>
  <packagedElement xmi:type="uml:Association" xmi:id="_9p3vwBusEee8Us30rRf8FQ" memberEnd="_9p3vwRusEee8Us30rRf8FQ _9p4W0husEee8Us30rRf8FQ" navigableOwnedEnd="_9p4W0husEee8Us30rRf8FQ">
    <name xsi:nil="true"/>
    <ownedEnd xmi:id="_9p3vwRusEee8Us30rRf8FQ" type="_9vd68Bq7EeehPu7-JZvGXA" association="_9p3vwBusEee8Us30rRf8FQ">
      <name xsi:nil="true"/>
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9p4W0BusEee8Us30rRf8FQ"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9p4W0RusEee8Us30rRf8FQ"/>
    </ownedEnd>
    <ownedEnd xmi:id="_9p4W0husEee8Us30rRf8FQ" name="commands" type="_jqHisBq7EeehPu7-JZvGXA" aggregation="shared" association="_9p3vwBusEee8Us30rRf8FQ">
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9p4W0xusEee8Us30rRf8FQ"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9p4W1BusEee8Us30rRf8FQ" value="*"/>
    </ownedEnd>
  </packagedElement>
  <packagedElement xmi:type="uml:Class" xmi:id="_qHLbED69EeeQAsiunlBWMQ" name="GuiView">
    <generalization xmi:id="_S8hdYEJiEee1ROV2I3bXWw"/>
    <interfaceRealization xmi:id="_7wEkYD69EeeQAsiunlBWMQ" client="_qHLbED69EeeQAsiunlBWMQ"/>
    <interfaceRealization xmi:id="_LbYQwEPOEeeYE665E6Q_Eg" client="_qHLbED69EeeQAsiunlBWMQ" supplier="_AwEkoEPOEeeYE665E6Q_Eg" contract="_AwEkoEPOEeeYE665E6Q_Eg"/>
  </packagedElement>
  <packagedElement xmi:type="uml:Class" xmi:id="_q8FCwD69EeeQAsiunlBWMQ" name="CliView">
    <generalization xmi:id="_UVwhMEJiEee1ROV2I3bXWw"/>
    <interfaceRealization xmi:id="_8WN-YD69EeeQAsiunlBWMQ" client="_q8FCwD69EeeQAsiunlBWMQ"/>
    <interfaceRealization xmi:id="_L6AtgEPOEeeYE665E6Q_Eg" client="_q8FCwD69EeeQAsiunlBWMQ" supplier="_AwEkoEPOEeeYE665E6Q_Eg" contract="_AwEkoEPOEeeYE665E6Q_Eg"/>
  </packagedElement>
  <packagedElement xmi:type="uml:Association" xmi:id="_dy04ED6-EeeQAsiunlBWMQ" name="A_applicationControllers_textBuffers" memberEnd="_dy04ET6-EeeQAsiunlBWMQ _dy1fIj6-EeeQAsiunlBWMQ" navigableOwnedEnd="_dy1fIj6-EeeQAsiunlBWMQ">
    <ownedEnd xmi:id="_dy04ET6-EeeQAsiunlBWMQ" type="_9vd68Bq7EeehPu7-JZvGXA" association="_dy04ED6-EeeQAsiunlBWMQ">
      <name xsi:nil="true"/>
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dy1fID6-EeeQAsiunlBWMQ"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dy1fIT6-EeeQAsiunlBWMQ"/>
    </ownedEnd>
    <ownedEnd xmi:id="_dy1fIj6-EeeQAsiunlBWMQ" name="textBuffer" type="_hkQCYBq7EeehPu7-JZvGXA" association="_dy04ED6-EeeQAsiunlBWMQ">
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dy1fIz6-EeeQAsiunlBWMQ" value="1"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dy1fJD6-EeeQAsiunlBWMQ" value="1"/>
    </ownedEnd>
  </packagedElement>
  <packagedElement xmi:type="uml:Association" xmi:id="_J9HxkD7BEeeQAsiunlBWMQ" memberEnd="_J9HxkT7BEeeQAsiunlBWMQ _J9IYoj7BEeeQAsiunlBWMQ" navigableOwnedEnd="_J9IYoj7BEeeQAsiunlBWMQ">
    <ownedEnd xmi:id="_J9HxkT7BEeeQAsiunlBWMQ" type="_jqHisBq7EeehPu7-JZvGXA" association="_J9HxkD7BEeeQAsiunlBWMQ">
      <name xsi:nil="true"/>
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_J9IYoD7BEeeQAsiunlBWMQ"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_J9IYoT7BEeeQAsiunlBWMQ"/>
    </ownedEnd>
    <ownedEnd xmi:id="_J9IYoj7BEeeQAsiunlBWMQ" name="textBuffer" type="_hkQCYBq7EeehPu7-JZvGXA" association="_J9HxkD7BEeeQAsiunlBWMQ">
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_J9IYoz7BEeeQAsiunlBWMQ" value="1"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_J9I_sD7BEeeQAsiunlBWMQ" value="1"/>
    </ownedEnd>
  </packagedElement>
  <packagedElement xmi:type="uml:Association" xmi:id="_CTHbIEJiEee1ROV2I3bXWw" memberEnd="_CTHbIUJiEee1ROV2I3bXWw _CTHbJEJiEee1ROV2I3bXWw" navigableOwnedEnd="_CTHbIUJiEee1ROV2I3bXWw _CTHbJEJiEee1ROV2I3bXWw">
    <ownedEnd xmi:id="_CTHbIUJiEee1ROV2I3bXWw" name="applicationController" type="_9vd68Bq7EeehPu7-JZvGXA" association="_CTHbIEJiEee1ROV2I3bXWw">
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CTHbIkJiEee1ROV2I3bXWw" value="1"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CTHbI0JiEee1ROV2I3bXWw" value="1"/>
    </ownedEnd>
    <ownedEnd xmi:id="_CTHbJEJiEee1ROV2I3bXWw" name="applicationViews" type="_AwEkoEPOEeeYE665E6Q_Eg" association="_CTHbIEJiEee1ROV2I3bXWw">
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CTHbJUJiEee1ROV2I3bXWw" value="1"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CTHbJkJiEee1ROV2I3bXWw" value="1"/>
    </ownedEnd>
  </packagedElement>
  <packagedElement xmi:type="uml:Interface" xmi:id="_AwEkoEPOEeeYE665E6Q_Eg" name="ApplicationView">
    <ownedOperation xmi:id="_FNTk8EPOEeeYE665E6Q_Eg" name="updateBufferContent">
      <ownedParameter xmi:id="_FNTk8UPOEeeYE665E6Q_Eg" name="bufferContent">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_FNTk8kPOEeeYE665E6Q_Eg" name="updateBufferIndex">
      <ownedParameter xmi:id="_FNTk80POEeeYE665E6Q_Eg" name="index">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_FNTk9EPOEeeYE665E6Q_Eg" name="updateBufferEndSelectionIndex">
      <ownedParameter xmi:id="_FNTk9UPOEeeYE665E6Q_Eg" name="index">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_FNTk-EPOEeeYE665E6Q_Eg" name="updateBufferStartSelectionIndex">
      <ownedParameter xmi:id="_FNTk-UPOEeeYE665E6Q_Eg" name="index">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_FNTk9kPOEeeYE665E6Q_Eg" name="updateClipboardContent">
      <ownedParameter xmi:id="_FNTk90POEeeYE665E6Q_Eg" name="clipboardContent">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
      </ownedParameter>
    </ownedOperation>
  </packagedElement>
  <packagedElement xmi:type="uml:Class" xmi:id="_p5CeUEPUEeeRubxhakY4Bg" name="TextBufferMemento">
    <ownedAttribute xmi:id="_fV0hwEPVEeeRubxhakY4Bg" name="content" visibility="private">
      <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
    </ownedAttribute>
    <ownedAttribute xmi:id="_EkwTAkPVEeeRubxhakY4Bg" name="caretPosition" visibility="private">
      <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
    </ownedAttribute>
    <ownedAttribute xmi:id="_EkwTAUPVEeeRubxhakY4Bg" name="startSelectionPosition" visibility="private">
      <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
    </ownedAttribute>
    <ownedAttribute xmi:id="_EkwTAEPVEeeRubxhakY4Bg" name="endSelectionPosition" visibility="private">
      <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
    </ownedAttribute>
    <ownedAttribute xmi:id="_EkwTBkPVEeeRubxhakY4Bg" name="clipboardContent" visibility="private">
      <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
    </ownedAttribute>
    <ownedOperation xmi:id="_c0OHskPVEeeRubxhakY4Bg" name="getContent">
      <ownedParameter xmi:id="_c0OHs0PVEeeRubxhakY4Bg" name="characters" direction="return">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_c0OHtkPVEeeRubxhakY4Bg" name="getCaretPosition">
      <ownedParameter xmi:id="_c0OHt0PVEeeRubxhakY4Bg" name="cursorIndex" direction="return">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_c0OHtEPVEeeRubxhakY4Bg" name="getStartSelectionPosition">
      <ownedParameter xmi:id="_c0OHtUPVEeeRubxhakY4Bg" name="cursorIndex" direction="return">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_c0OHsEPVEeeRubxhakY4Bg" name="getEndSelectionPosition">
      <ownedParameter xmi:id="_c0OHsUPVEeeRubxhakY4Bg" name="cursorIndex" direction="return">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_dPyCUkPVEeeRubxhakY4Bg" name="getClipboardContent">
      <ownedParameter xmi:id="_dPyCU0PVEeeRubxhakY4Bg" name="characters" direction="return">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
      </ownedParameter>
    </ownedOperation>
  </packagedElement>
  <packagedElement xmi:type="uml:Class" xmi:id="_Q-EZEEPVEeeRubxhakY4Bg" name="TextBufferCaretaker">
    <ownedAttribute xmi:id="_Q_fDcEPXEeeRubxhakY4Bg" name="mementos" visibility="private" aggregation="composite">
      <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EEList"/>
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q_fDcUPXEeeRubxhakY4Bg" value="1"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q_fDckPXEeeRubxhakY4Bg" value="1"/>
    </ownedAttribute>
    <ownedAttribute xmi:id="_L7MBIEPtEeedP_x7Mwgjlw" name="position" visibility="private">
      <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
    </ownedAttribute>
    <ownedOperation xmi:id="_J9mxkEPWEeeRubxhakY4Bg" name="add">
      <ownedParameter xmi:id="_a7wUwEPWEeeRubxhakY4Bg" name="memento" type="_p5CeUEPUEeeRubxhakY4Bg"/>
    </ownedOperation>
    <ownedOperation xmi:id="_Mu08AEPWEeeRubxhakY4Bg" name="getNext">
      <ownedParameter xmi:id="_Q3_w0EPWEeeRubxhakY4Bg" name="memento" type="_p5CeUEPUEeeRubxhakY4Bg" direction="return"/>
    </ownedOperation>
    <ownedOperation xmi:id="_rT6M8EPsEeedP_x7Mwgjlw" name="getPrevious">
      <ownedParameter xmi:id="_rT6M8UPsEeedP_x7Mwgjlw" name="memento" type="_p5CeUEPUEeeRubxhakY4Bg" direction="return"/>
    </ownedOperation>
    <ownedOperation xmi:id="_Qq-xEEPtEeedP_x7Mwgjlw" name="isNextPossible">
      <ownedParameter xmi:id="_Qq-xEUPtEeedP_x7Mwgjlw" direction="return">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
      </ownedParameter>
    </ownedOperation>
    <ownedOperation xmi:id="_SbY-wEPtEeedP_x7Mwgjlw" name="isPreviousPossible">
      <ownedParameter xmi:id="_SbY-wUPtEeedP_x7Mwgjlw" direction="return">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
      </ownedParameter>
    </ownedOperation>
  </packagedElement>
  <packagedElement xmi:type="uml:Association" xmi:id="_9tX5kEPWEeeRubxhakY4Bg" memberEnd="_9tX5kUPWEeeRubxhakY4Bg _9tbj8EPWEeeRubxhakY4Bg" navigableOwnedEnd="_9tbj8EPWEeeRubxhakY4Bg">
    <ownedEnd xmi:id="_9tX5kUPWEeeRubxhakY4Bg" type="_9vd68Bq7EeehPu7-JZvGXA" association="_9tX5kEPWEeeRubxhakY4Bg">
      <name xsi:nil="true"/>
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9ta84EPWEeeRubxhakY4Bg"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9ta84UPWEeeRubxhakY4Bg"/>
    </ownedEnd>
    <ownedEnd xmi:id="_9tbj8EPWEeeRubxhakY4Bg" name="textBufferCaretaker" type="_Q-EZEEPVEeeRubxhakY4Bg" association="_9tX5kEPWEeeRubxhakY4Bg">
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9tcLAEPWEeeRubxhakY4Bg"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9tcyEEPWEeeRubxhakY4Bg" value="*"/>
    </ownedEnd>
  </packagedElement>
  <packagedElement xmi:type="uml:Association" xmi:id="_NbPgoEPXEeeRubxhakY4Bg" memberEnd="_NbQHsEPXEeeRubxhakY4Bg _NbQHs0PXEeeRubxhakY4Bg" navigableOwnedEnd="_NbQHs0PXEeeRubxhakY4Bg">
    <ownedEnd xmi:id="_NbQHsEPXEeeRubxhakY4Bg" type="_Q-EZEEPVEeeRubxhakY4Bg" association="_NbPgoEPXEeeRubxhakY4Bg">
      <name xsi:nil="true"/>
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NbQHsUPXEeeRubxhakY4Bg"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NbQHskPXEeeRubxhakY4Bg"/>
    </ownedEnd>
    <ownedEnd xmi:id="_NbQHs0PXEeeRubxhakY4Bg" name="textBufferMementos" type="_p5CeUEPUEeeRubxhakY4Bg" association="_NbPgoEPXEeeRubxhakY4Bg">
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NbQHtEPXEeeRubxhakY4Bg"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NbQuwEPXEeeRubxhakY4Bg" value="*"/>
    </ownedEnd>
  </packagedElement>
  <packagedElement xmi:type="uml:Class" xmi:id="_50sO0EQ5EeeCJ8wMqsg22Q" name="ActionWriter">
    <ownedOperation xmi:id="_EEpbsEQ6EeeCJ8wMqsg22Q" name="write"/>
  </packagedElement>
  <packagedElement xmi:type="uml:Class" xmi:id="__X8cAEQ5EeeCJ8wMqsg22Q" name="ActionReader">
    <ownedOperation xmi:id="_DDxNgEQ6EeeCJ8wMqsg22Q" name="read"/>
  </packagedElement>
  <packagedElement xmi:type="uml:Association" xmi:id="_H8poAEQ6EeeCJ8wMqsg22Q" memberEnd="_H8poAUQ6EeeCJ8wMqsg22Q _H8rdMkQ6EeeCJ8wMqsg22Q" navigableOwnedEnd="_H8rdMkQ6EeeCJ8wMqsg22Q">
    <ownedEnd xmi:id="_H8poAUQ6EeeCJ8wMqsg22Q" type="_9vd68Bq7EeehPu7-JZvGXA" association="_H8poAEQ6EeeCJ8wMqsg22Q">
      <name xsi:nil="true"/>
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_H8rdMEQ6EeeCJ8wMqsg22Q"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_H8rdMUQ6EeeCJ8wMqsg22Q"/>
    </ownedEnd>
    <ownedEnd xmi:id="_H8rdMkQ6EeeCJ8wMqsg22Q" name="actionWriter" type="_50sO0EQ5EeeCJ8wMqsg22Q" association="_H8poAEQ6EeeCJ8wMqsg22Q">
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_H8sEQEQ6EeeCJ8wMqsg22Q" value="1"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_H8sEQUQ6EeeCJ8wMqsg22Q" value="1"/>
    </ownedEnd>
  </packagedElement>
  <packagedElement xmi:type="uml:Association" xmi:id="_IlwPYEQ6EeeCJ8wMqsg22Q" memberEnd="_IlwPYUQ6EeeCJ8wMqsg22Q _Ilw2cUQ6EeeCJ8wMqsg22Q" navigableOwnedEnd="_Ilw2cUQ6EeeCJ8wMqsg22Q">
    <ownedEnd xmi:id="_IlwPYUQ6EeeCJ8wMqsg22Q" type="_9vd68Bq7EeehPu7-JZvGXA" association="_IlwPYEQ6EeeCJ8wMqsg22Q">
      <name xsi:nil="true"/>
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IlwPYkQ6EeeCJ8wMqsg22Q"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ilw2cEQ6EeeCJ8wMqsg22Q"/>
    </ownedEnd>
    <ownedEnd xmi:id="_Ilw2cUQ6EeeCJ8wMqsg22Q" name="actionReader" type="__X8cAEQ5EeeCJ8wMqsg22Q" association="_IlwPYEQ6EeeCJ8wMqsg22Q">
      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ilw2ckQ6EeeCJ8wMqsg22Q" value="1"/>
      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IlxdgEQ6EeeCJ8wMqsg22Q" value="1"/>
    </ownedEnd>
  </packagedElement>
</uml:Model>
