<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:UMLLabProfile="http:///schemas/UMLLabProfile/NS/0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http:///schemas/UMLLabProfile/NS/0 pathmap://UMLLAB_PROFILES/UMLLab.profile.uml#UMLLabProfile-Annotation_2-UMLLabProfile">
  <uml:Model xmi:id="_pRRmAPOLEeanyK3wteWQ3w" name="js5">
    <eAnnotations xmi:id="_pdzmIPOLEeanyK3wteWQ3w" source="http://ns.yatta.de/umllab">
      <contents xmi:type="ecore:EAnnotation" xmi:id="_pd1bUPOLEeanyK3wteWQ3w" source="codegen">
        <details xmi:id="_pd1bUfOLEeanyK3wteWQ3w" key="codegenDirectory" value="/js5/src"/>
        <details xmi:id="_rNTN0POLEeanyK3wteWQ3w" key="AssociatedSourceCode" value="/js5/src/controller/BuildListener.java;2448748481/1;/js5/src/controller/IListener.java;2188095891/1;/js5/src/controller/LoadListener.java;2925158299/1;/js5/src/controller/SaveListener.java;4244864299/1;/js5/src/controller/buildListeners/AbsorberListener.java;1643539944/1;/js5/src/controller/buildListeners/AddGizmosListener.java;2238157182/1;/js5/src/controller/buildListeners/BallListener.java;2130395406/1;/js5/src/controller/buildListeners/BindListener.java;1534529117/1;/js5/src/controller/buildListeners/ClearListener.java;2006514167/1;/js5/src/controller/buildListeners/ConnectListener.java;3782897681/1;/js5/src/controller/buildListeners/DeleteListener.java;517952022/1;/js5/src/controller/buildListeners/DisconnectListener.java;3019397297/1;/js5/src/controller/buildListeners/DoNothingKeyListener.java;3012898527/1;/js5/src/controller/buildListeners/FlipperListener.java;953459543/1;/js5/src/controller/buildListeners/FrictionListener.java;563782775/1;/js5/src/controller/buildListeners/GravityListener.java;97638001/1;/js5/src/controller/buildListeners/ModeListener.java;41469632/1;/js5/src/controller/buildListeners/MoveListener.java;3432614872/1;/js5/src/controller/buildListeners/RotateListener.java;2257485087/1;/js5/src/controller/runListeners/StartStopListener.java;675180548/1;/js5/src/model/AbsorberGizmo.java;3298340286/1;/js5/src/model/Ball.java;1811314041/1;/js5/src/model/CircleGizmo.java;3324841098/1;/js5/src/model/Gizmo.java;3443200372/1;/js5/src/model/IGizmo.java;4260950121/1;/js5/src/model/IModel.java;3067578314/1;/js5/src/model/LeftFlipperGizmo.java;2018380673/1;/js5/src/view/a.java;1199247767/1;/js5/src/model/RightFlipperGizmo.java;3431462076/1;/js5/src/model/SquareGizmo.java;3426461273/1;/js5/src/model/TriangleGizmo.java;2406715065/1;/js5/src/staffui/MagicKeyListener.java;1293245752/1;/js5/src/view/Build.java;404842819/1;/js5/src/view/BuildBoard.java;1100759428/1;/js5/src/view/Display.java;3702620566/1;/js5/src/view/FlipperBoard.java;3489217810/1;/js5/src/view/IDisplay.java;930294924/1;/js5/src/view/Run.java;906214216/1;/js5/src/view/RunBoard.java;2319777866/1;/js5/src/view/TestBoard.java;3181428877/1;/js5/src/view/TestDriver.java;3938266835/1;/js5/src/view/TestingGUI.java;4169951778/1;/js5/src/model/Model.java;1787491117/1;"/>
      </contents>
    </eAnnotations>
    <elementImport xmi:id="_qdJjQPOLEeanyK3wteWQ3w">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
    </elementImport>
    <elementImport xmi:id="_qdJjQfOLEeanyK3wteWQ3w">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#byte"/>
    </elementImport>
    <elementImport xmi:id="_qdJjQvOLEeanyK3wteWQ3w">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#char"/>
    </elementImport>
    <elementImport xmi:id="_qdJjQ_OLEeanyK3wteWQ3w">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
    </elementImport>
    <elementImport xmi:id="_qdKKUPOLEeanyK3wteWQ3w">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#float"/>
    </elementImport>
    <elementImport xmi:id="_qdKKUfOLEeanyK3wteWQ3w">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
    </elementImport>
    <elementImport xmi:id="_qdKKUvOLEeanyK3wteWQ3w">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#long"/>
    </elementImport>
    <elementImport xmi:id="_qdKKU_OLEeanyK3wteWQ3w">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#short"/>
    </elementImport>
    <elementImport xmi:id="_qdKxYPOLEeanyK3wteWQ3w">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
    </elementImport>
    <packagedElement xmi:type="uml:Package" xmi:id="_qdL_gPOLEeanyK3wteWQ3w" name="java">
      <packagedElement xmi:type="uml:Package" xmi:id="_qdMmkPOLEeanyK3wteWQ3w" name="awt">
        <packagedElement xmi:type="uml:Package" xmi:id="_qdMmkfOLEeanyK3wteWQ3w" name="event">
          <packagedElement xmi:type="uml:Class" xmi:id="_qu7PwPOLEeanyK3wteWQ3w" name="ActionEvent"/>
          <packagedElement xmi:type="uml:Class" xmi:id="_qvFAwPOLEeanyK3wteWQ3w" name="KeyEvent"/>
          <packagedElement xmi:type="uml:Interface" xmi:id="_qvFn0fOLEeanyK3wteWQ3w" name="KeyListener"/>
          <packagedElement xmi:type="uml:Class" xmi:id="_qvOKsfOLEeanyK3wteWQ3w" name="MouseEvent"/>
          <packagedElement xmi:type="uml:Class" xmi:id="_qvPY0fOLEeanyK3wteWQ3w" name="WindowEvent"/>
          <packagedElement xmi:type="uml:Interface" xmi:id="_qva_APOLEeanyK3wteWQ3w" name="ActionListener"/>
          <packagedElement xmi:type="uml:Interface" xmi:id="_qzGlIPOLEeanyK3wteWQ3w" name="WindowListener"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_qwNpMPOLEeanyK3wteWQ3w" name="Color"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qwof8POLEeanyK3wteWQ3w" name="Component"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qwyQ8POLEeanyK3wteWQ3w" name="CardLayout"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qwy4AfOLEeanyK3wteWQ3w" name="Dimension"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qw0GIPOLEeanyK3wteWQ3w" name="GridLayout"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qw93IPOLEeanyK3wteWQ3w" name="Graphics"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qxA6cPOLEeanyK3wteWQ3w" name="Graphics2D"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qxIPMPOLEeanyK3wteWQ3w" name="BorderLayout"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qxI2QfOLEeanyK3wteWQ3w" name="Container"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qxKEYPOLEeanyK3wteWQ3w" name="Font"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_qdwnQPOLEeanyK3wteWQ3w" name="io">
        <packagedElement xmi:type="uml:Class" xmi:id="_qvbmEfOLEeanyK3wteWQ3w" name="File"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qxy9kfOLEeanyK3wteWQ3w" name="BufferedReader"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qx0LsPOLEeanyK3wteWQ3w" name="FileNotFoundException"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qx0ywfOLEeanyK3wteWQ3w" name="FileReader"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qx1Z0fOLEeanyK3wteWQ3w" name="FileWriter"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qx32EPOLEeanyK3wteWQ3w" name="IOException"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_qeVPAPOLEeanyK3wteWQ3w" name="util">
        <packagedElement xmi:type="uml:Class" xmi:id="_qvzZgPOLEeanyK3wteWQ3w" name="HashSet"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_qv0noPOLEeanyK3wteWQ3w" name="Set"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qwShsPOLEeanyK3wteWQ3w" name="ArrayList"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_qwTIwfOLEeanyK3wteWQ3w" name="List"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_qwqVIfOLEeanyK3wteWQ3w" name="Iterator"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qxCIkfOLEeanyK3wteWQ3w" name="Observable"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_qxD9wPOLEeanyK3wteWQ3w" name="Observer"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_qxxvcPOLEeanyK3wteWQ3w" name="Map"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qx5EMPOLEeanyK3wteWQ3w" name="HashMap"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_q0ZloPOLEeanyK3wteWQ3w" name="lang">
        <packagedElement xmi:type="uml:Interface" xmi:id="_q0ZlofOLEeanyK3wteWQ3w" name="Runnable"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_q0noEPOLEeanyK3wteWQ3w" name="Object"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_qdNNoPOLEeanyK3wteWQ3w" name="javax">
      <packagedElement xmi:type="uml:Package" xmi:id="_qdNNofOLEeanyK3wteWQ3w" name="swing">
        <packagedElement xmi:type="uml:Package" xmi:id="_qdN0sPOLEeanyK3wteWQ3w" name="event">
          <packagedElement xmi:type="uml:Interface" xmi:id="_qvP_4fOLEeanyK3wteWQ3w" name="MouseInputListener"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="_qgGJkPOLEeanyK3wteWQ3w" name="filechooser">
          <packagedElement xmi:type="uml:Class" xmi:id="_qxW4sPOLEeanyK3wteWQ3w" name="FileNameExtensionFilter"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_qwpuEPOLEeanyK3wteWQ3w" name="SwingUtilities"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qw0tMfOLEeanyK3wteWQ3w" name="JButton"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qw3JcPOLEeanyK3wteWQ3w" name="JPanel"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qw4XkfOLEeanyK3wteWQ3w" name="JTextField"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qxEk0fOLEeanyK3wteWQ3w" name="BorderFactory"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qxL5kPOLEeanyK3wteWQ3w" name="JFileChooser"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qxNHsPOLEeanyK3wteWQ3w" name="JFrame"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qxNuwfOLEeanyK3wteWQ3w" name="JMenu"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qxOV0fOLEeanyK3wteWQ3w" name="JMenuBar"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qxPj8POLEeanyK3wteWQ3w" name="JMenuItem"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_qxVqkfOLEeanyK3wteWQ3w" name="JOptionPane"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_qdObwPOLEeanyK3wteWQ3w" name="controller">
      <packagedElement xmi:type="uml:Package" xmi:id="_qdObwfOLEeanyK3wteWQ3w" name="buildListeners">
        <packagedElement xmi:type="uml:Class" xmi:id="_qjVDwPOLEeanyK3wteWQ3w" name="AbsorberListener">
          <interfaceRealization xmi:id="_qzMEsPOLEeanyK3wteWQ3w" client="_qjVDwPOLEeanyK3wteWQ3w" supplier="_qva_APOLEeanyK3wteWQ3w" contract="_qva_APOLEeanyK3wteWQ3w"/>
          <interfaceRealization xmi:id="_qzMEsfOLEeanyK3wteWQ3w" client="_qjVDwPOLEeanyK3wteWQ3w" supplier="_qvP_4fOLEeanyK3wteWQ3w" contract="_qvP_4fOLEeanyK3wteWQ3w"/>
          <ownedOperation xmi:id="_qzMrwPOLEeanyK3wteWQ3w" name="actionPerformed">
            <ownedParameter xmi:id="_qzMrwfOLEeanyK3wteWQ3w" name="arg0" type="_qu7PwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qzN54POLEeanyK3wteWQ3w" name="mouseClicked">
            <ownedParameter xmi:id="_qzN54fOLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qzPIAPOLEeanyK3wteWQ3w" name="mouseEntered">
            <ownedParameter xmi:id="_qzPIAfOLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qzPvEvOLEeanyK3wteWQ3w" name="mouseExited">
            <ownedParameter xmi:id="_qzQWIPOLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qzRkQPOLEeanyK3wteWQ3w" name="mousePressed">
            <ownedParameter xmi:id="_qzRkQfOLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qzSLUvOLEeanyK3wteWQ3w" name="mouseReleased">
            <ownedParameter xmi:id="_qzSLU_OLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qzUAgPOLEeanyK3wteWQ3w" name="mouseDragged">
            <ownedParameter xmi:id="_qzUAgfOLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qzVOoPOLEeanyK3wteWQ3w" name="mouseMoved">
            <ownedParameter xmi:id="_qzVOofOLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_qje0wPOLEeanyK3wteWQ3w" name="AddGizmosListener">
          <ownedAttribute xmi:id="_q1ZEIfOLEeanyK3wteWQ3w" name="model" visibility="private" type="_qlwFoPOLEeanyK3wteWQ3w" association="_q5x04fOLEeanyK3wteWQ3w"/>
          <interfaceRealization xmi:id="_qzYR8POLEeanyK3wteWQ3w" client="_qje0wPOLEeanyK3wteWQ3w" supplier="_qva_APOLEeanyK3wteWQ3w" contract="_qva_APOLEeanyK3wteWQ3w"/>
          <interfaceRealization xmi:id="_qzZgEPOLEeanyK3wteWQ3w" client="_qje0wPOLEeanyK3wteWQ3w" supplier="_qvP_4fOLEeanyK3wteWQ3w" contract="_qvP_4fOLEeanyK3wteWQ3w"/>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q38B0POLEeanyK3wteWQ3w" name="AddGizmosListener" specification="_qvnzUPOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_q38B0fOLEeanyK3wteWQ3w" name="model" type="_qlwFoPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q38B0vOLEeanyK3wteWQ3w" name="gizmo">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_q38B0_OLEeanyK3wteWQ3w" type="_qje0wPOLEeanyK3wteWQ3w" direction="return"/>
            <language>java</language>
            <body>this.model=model;
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_qvnzUPOLEeanyK3wteWQ3w" name="AddGizmosListener" method="_q38B0POLEeanyK3wteWQ3w">
            <eAnnotations xmi:id="_qvoaYfOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_qvoaYvOLEeanyK3wteWQ3w" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_qvnzUfOLEeanyK3wteWQ3w" name="model" type="_qlwFoPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_qvoaYPOLEeanyK3wteWQ3w" name="gizmo">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_qvoaY_OLEeanyK3wteWQ3w" type="_qje0wPOLEeanyK3wteWQ3w" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qzaHIPOLEeanyK3wteWQ3w" name="actionPerformed">
            <ownedParameter xmi:id="_qzaHIfOLEeanyK3wteWQ3w" name="arg0" type="_qu7PwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qzauMvOLEeanyK3wteWQ3w" name="mouseClicked">
            <ownedParameter xmi:id="_qzauM_OLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qzb8UPOLEeanyK3wteWQ3w" name="mouseEntered">
            <ownedParameter xmi:id="_qzb8UfOLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qzcjYvOLEeanyK3wteWQ3w" name="mouseExited">
            <ownedParameter xmi:id="_qzdKcPOLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qze_ovOLEeanyK3wteWQ3w" name="mousePressed">
            <ownedParameter xmi:id="_qze_o_OLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qzgNwvOLEeanyK3wteWQ3w" name="mouseReleased">
            <ownedParameter xmi:id="_qzgNw_OLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qziC8POLEeanyK3wteWQ3w" name="mouseDragged">
            <ownedParameter xmi:id="_qziC8fOLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qzjREPOLEeanyK3wteWQ3w" name="mouseMoved">
            <ownedParameter xmi:id="_qzjREfOLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_qjs3MPOLEeanyK3wteWQ3w" name="BallListener">
          <interfaceRealization xmi:id="_qzoJkPOLEeanyK3wteWQ3w" client="_qjs3MPOLEeanyK3wteWQ3w" supplier="_qva_APOLEeanyK3wteWQ3w" contract="_qva_APOLEeanyK3wteWQ3w"/>
          <ownedOperation xmi:id="_qzowoPOLEeanyK3wteWQ3w" name="actionPerformed">
            <ownedParameter xmi:id="_qzowofOLEeanyK3wteWQ3w" name="arg0" type="_qu7PwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_qjusYPOLEeanyK3wteWQ3w" name="BindListener">
          <interfaceRealization xmi:id="_qzpXsvOLEeanyK3wteWQ3w" client="_qjusYPOLEeanyK3wteWQ3w" supplier="_qva_APOLEeanyK3wteWQ3w" contract="_qva_APOLEeanyK3wteWQ3w"/>
          <ownedOperation xmi:id="_qzp-wPOLEeanyK3wteWQ3w" name="actionPerformed">
            <ownedParameter xmi:id="_qzp-wfOLEeanyK3wteWQ3w" name="arg0" type="_qu7PwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_qjwhkPOLEeanyK3wteWQ3w" name="ClearListener">
          <ownedAttribute xmi:id="_q1jcMPOLEeanyK3wteWQ3w" name="display" visibility="private" type="_qnEUQPOLEeanyK3wteWQ3w" association="_q5zqEfOLEeanyK3wteWQ3w"/>
          <ownedAttribute xmi:id="_q1kDQPOLEeanyK3wteWQ3w" name="model" visibility="private" type="_qlwFoPOLEeanyK3wteWQ3w" association="_q504MPOLEeanyK3wteWQ3w"/>
          <interfaceRealization xmi:id="_qzrz8POLEeanyK3wteWQ3w" client="_qjwhkPOLEeanyK3wteWQ3w" supplier="_qva_APOLEeanyK3wteWQ3w" contract="_qva_APOLEeanyK3wteWQ3w"/>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q393APOLEeanyK3wteWQ3w" name="ClearListener" specification="_qvw9QPOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_q393AfOLEeanyK3wteWQ3w" name="display" type="_qnEUQPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q393AvOLEeanyK3wteWQ3w" name="model" type="_qlwFoPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q393A_OLEeanyK3wteWQ3w" type="_qjwhkPOLEeanyK3wteWQ3w" direction="return"/>
            <language>java</language>
            <body>this.display=display;
		this.model=model;	
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q3-eEPOLEeanyK3wteWQ3w" name="actionPerformed" specification="_qzsbAPOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_q3-eEfOLEeanyK3wteWQ3w" name="arg0" type="_qu7PwPOLEeanyK3wteWQ3w"/>
            <language>java</language>
            <body>model.clear();
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_qvw9QPOLEeanyK3wteWQ3w" name="ClearListener" method="_q393APOLEeanyK3wteWQ3w">
            <eAnnotations xmi:id="_qvw9Q_OLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_qvw9RPOLEeanyK3wteWQ3w" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_qvw9QfOLEeanyK3wteWQ3w" name="display" type="_qnEUQPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_qvw9QvOLEeanyK3wteWQ3w" name="model" type="_qlwFoPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_qvxkUPOLEeanyK3wteWQ3w" type="_qjwhkPOLEeanyK3wteWQ3w" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qzsbAPOLEeanyK3wteWQ3w" name="actionPerformed" method="_q3-eEPOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_qzsbAfOLEeanyK3wteWQ3w" name="arg0" type="_qu7PwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_qj0L8POLEeanyK3wteWQ3w" name="ConnectListener">
          <interfaceRealization xmi:id="_qzuQMPOLEeanyK3wteWQ3w" client="_qj0L8POLEeanyK3wteWQ3w" supplier="_qva_APOLEeanyK3wteWQ3w" contract="_qva_APOLEeanyK3wteWQ3w"/>
          <ownedOperation xmi:id="_qzuQMfOLEeanyK3wteWQ3w" name="actionPerformed">
            <ownedParameter xmi:id="_qzuQMvOLEeanyK3wteWQ3w" name="arg0" type="_qu7PwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_qj1aEPOLEeanyK3wteWQ3w" name="DeleteListener">
          <ownedAttribute xmi:id="_q1kqUPOLEeanyK3wteWQ3w" name="display" visibility="private" type="_qnEUQPOLEeanyK3wteWQ3w" association="_q51fQfOLEeanyK3wteWQ3w"/>
          <ownedAttribute xmi:id="_q1lRYfOLEeanyK3wteWQ3w" name="model" visibility="private" type="_qlwFoPOLEeanyK3wteWQ3w" association="_q52GUfOLEeanyK3wteWQ3w"/>
          <interfaceRealization xmi:id="_qzveUPOLEeanyK3wteWQ3w" client="_qj1aEPOLEeanyK3wteWQ3w" supplier="_qva_APOLEeanyK3wteWQ3w" contract="_qva_APOLEeanyK3wteWQ3w"/>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q3_FIPOLEeanyK3wteWQ3w" name="DeleteListener" specification="_qv11wPOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_q3_FIfOLEeanyK3wteWQ3w" name="display" type="_qnEUQPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q3_FIvOLEeanyK3wteWQ3w" name="model" type="_qlwFoPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q3_FI_OLEeanyK3wteWQ3w" type="_qj1aEPOLEeanyK3wteWQ3w" direction="return"/>
            <language>java</language>
            <body>this.display=display;
		this.model=model;		
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_qv11wPOLEeanyK3wteWQ3w" name="DeleteListener" method="_q3_FIPOLEeanyK3wteWQ3w">
            <eAnnotations xmi:id="_qv11w_OLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_qv11xPOLEeanyK3wteWQ3w" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_qv11wfOLEeanyK3wteWQ3w" name="display" type="_qnEUQPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_qv11wvOLEeanyK3wteWQ3w" name="model" type="_qlwFoPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_qv11xfOLEeanyK3wteWQ3w" type="_qj1aEPOLEeanyK3wteWQ3w" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qzwFYPOLEeanyK3wteWQ3w" name="actionPerformed">
            <ownedParameter xmi:id="_qzwFYfOLEeanyK3wteWQ3w" name="arg0" type="_qu7PwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_qj9V4POLEeanyK3wteWQ3w" name="DisconnectListener">
          <interfaceRealization xmi:id="_qzxTgPOLEeanyK3wteWQ3w" client="_qj9V4POLEeanyK3wteWQ3w" supplier="_qva_APOLEeanyK3wteWQ3w" contract="_qva_APOLEeanyK3wteWQ3w"/>
          <ownedOperation xmi:id="_qzx6kPOLEeanyK3wteWQ3w" name="actionPerformed">
            <ownedParameter xmi:id="_qzx6kfOLEeanyK3wteWQ3w" name="arg0" type="_qu7PwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_qj_LEPOLEeanyK3wteWQ3w" name="DoNothingKeyListener">
          <interfaceRealization xmi:id="_qzyhovOLEeanyK3wteWQ3w" client="_qj_LEPOLEeanyK3wteWQ3w" supplier="_qvFn0fOLEeanyK3wteWQ3w" contract="_qvFn0fOLEeanyK3wteWQ3w"/>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q3_sMPOLEeanyK3wteWQ3w" name="DoNothingKeyListener" specification="_qv_mwPOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_q3_sMfOLEeanyK3wteWQ3w" name="model" type="_qlwFoPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q3_sMvOLEeanyK3wteWQ3w" type="_qj_LEPOLEeanyK3wteWQ3w" direction="return"/>
            <language>java</language>
            <body>// TODO Auto-generated constructor stub
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_qv_mwPOLEeanyK3wteWQ3w" name="DoNothingKeyListener" method="_q3_sMPOLEeanyK3wteWQ3w">
            <eAnnotations xmi:id="_qv_mwvOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_qv_mw_OLEeanyK3wteWQ3w" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_qv_mwfOLEeanyK3wteWQ3w" name="model" type="_qlwFoPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_qv_mxPOLEeanyK3wteWQ3w" type="_qj_LEPOLEeanyK3wteWQ3w" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qzzIsPOLEeanyK3wteWQ3w" name="keyPressed">
            <ownedParameter xmi:id="_qzzIsfOLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qz0W0POLEeanyK3wteWQ3w" name="keyReleased">
            <ownedParameter xmi:id="_qz0W0fOLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qz094vOLEeanyK3wteWQ3w" name="keyTyped">
            <ownedParameter xmi:id="_qz094_OLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_qkCOYPOLEeanyK3wteWQ3w" name="FlipperListener">
          <ownedAttribute xmi:id="_q1l4cPOLEeanyK3wteWQ3w" name="m" visibility="private" type="_qncuwPOLEeanyK3wteWQ3w" association="_q53UcfOLEeanyK3wteWQ3w"/>
          <interfaceRealization xmi:id="_qz2MAPOLEeanyK3wteWQ3w" client="_qkCOYPOLEeanyK3wteWQ3w" supplier="_qvFn0fOLEeanyK3wteWQ3w" contract="_qvFn0fOLEeanyK3wteWQ3w"/>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4A6UPOLEeanyK3wteWQ3w" name="FlipperListener" specification="_qwA04POLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_q4A6UfOLEeanyK3wteWQ3w" name="m" type="_qncuwPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q4A6UvOLEeanyK3wteWQ3w" type="_qkCOYPOLEeanyK3wteWQ3w" direction="return"/>
            <language>java</language>
            <body>this.m = m;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4A6U_OLEeanyK3wteWQ3w" name="keyPressed" specification="_qz2zEPOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_q4A6VPOLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
            <language>java</language>
            <body>System.out.println(&quot;hi&quot;);
		if (e.getKeyCode() == KeyEvent.VK_SPACE){
			System.out.println(&quot;I pressed space&quot;);
		}
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_qwA04POLEeanyK3wteWQ3w" name="FlipperListener" method="_q4A6UPOLEeanyK3wteWQ3w">
            <eAnnotations xmi:id="_qwA04vOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_qwA04_OLEeanyK3wteWQ3w" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_qwA04fOLEeanyK3wteWQ3w" name="m" type="_qncuwPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_qwA05POLEeanyK3wteWQ3w" type="_qkCOYPOLEeanyK3wteWQ3w" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qz2zEPOLEeanyK3wteWQ3w" name="keyPressed" method="_q4A6U_OLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_qz2zEfOLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qz3aIvOLEeanyK3wteWQ3w" name="keyReleased">
            <ownedParameter xmi:id="_qz4BMPOLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qz4oQfOLEeanyK3wteWQ3w" name="keyTyped">
            <ownedParameter xmi:id="_qz4oQvOLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_qkGf0POLEeanyK3wteWQ3w" name="FrictionListener">
          <interfaceRealization xmi:id="_qz52YPOLEeanyK3wteWQ3w" client="_qkGf0POLEeanyK3wteWQ3w" supplier="_qva_APOLEeanyK3wteWQ3w" contract="_qva_APOLEeanyK3wteWQ3w"/>
          <ownedOperation xmi:id="_qz6dcPOLEeanyK3wteWQ3w" name="actionPerformed">
            <ownedParameter xmi:id="_qz6dcfOLEeanyK3wteWQ3w" name="arg0" type="_qu7PwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_qkHt8POLEeanyK3wteWQ3w" name="GravityListener">
          <interfaceRealization xmi:id="_qz7EgvOLEeanyK3wteWQ3w" client="_qkHt8POLEeanyK3wteWQ3w" supplier="_qva_APOLEeanyK3wteWQ3w" contract="_qva_APOLEeanyK3wteWQ3w"/>
          <ownedOperation xmi:id="_qz7rkPOLEeanyK3wteWQ3w" name="actionPerformed">
            <ownedParameter xmi:id="_qz7rkfOLEeanyK3wteWQ3w" name="arg0" type="_qu7PwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_qkJjIPOLEeanyK3wteWQ3w" name="ModeListener">
          <ownedAttribute xmi:id="_q1nGkPOLEeanyK3wteWQ3w" name="display" visibility="private" type="_qnEUQPOLEeanyK3wteWQ3w" association="_q54ikPOLEeanyK3wteWQ3w"/>
          <ownedAttribute xmi:id="_q1ntofOLEeanyK3wteWQ3w" name="mode" visibility="private">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedAttribute>
          <interfaceRealization xmi:id="_qz85sPOLEeanyK3wteWQ3w" client="_qkJjIPOLEeanyK3wteWQ3w" supplier="_qva_APOLEeanyK3wteWQ3w" contract="_qva_APOLEeanyK3wteWQ3w"/>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4CIcPOLEeanyK3wteWQ3w" name="ModeListener" specification="_qwD4MPOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_q4CIcfOLEeanyK3wteWQ3w" name="display" type="_qnEUQPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q4CIcvOLEeanyK3wteWQ3w" name="m">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_q4CIc_OLEeanyK3wteWQ3w" type="_qkJjIPOLEeanyK3wteWQ3w" direction="return"/>
            <language>java</language>
            <body>this.display=display;
		mode=m;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4CIdPOLEeanyK3wteWQ3w" name="actionPerformed" specification="_qz85sfOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_q4CIdfOLEeanyK3wteWQ3w" name="arg0" type="_qu7PwPOLEeanyK3wteWQ3w"/>
            <language>java</language>
            <body>display.changeMode(mode);
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_qwD4MPOLEeanyK3wteWQ3w" name="ModeListener" method="_q4CIcPOLEeanyK3wteWQ3w">
            <eAnnotations xmi:id="_qwEfQPOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_qwEfQfOLEeanyK3wteWQ3w" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_qwD4MfOLEeanyK3wteWQ3w" name="display" type="_qnEUQPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_qwD4MvOLEeanyK3wteWQ3w" name="m">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_qwEfQvOLEeanyK3wteWQ3w" type="_qkJjIPOLEeanyK3wteWQ3w" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qz85sfOLEeanyK3wteWQ3w" name="actionPerformed" method="_q4CIdPOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_qz9gwPOLEeanyK3wteWQ3w" name="arg0" type="_qu7PwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_qkN0kPOLEeanyK3wteWQ3w" name="MoveListener">
          <interfaceRealization xmi:id="_qz-u4POLEeanyK3wteWQ3w" client="_qkN0kPOLEeanyK3wteWQ3w" supplier="_qva_APOLEeanyK3wteWQ3w" contract="_qva_APOLEeanyK3wteWQ3w"/>
          <ownedOperation xmi:id="_qz-u4fOLEeanyK3wteWQ3w" name="actionPerformed">
            <ownedParameter xmi:id="_qz_V8POLEeanyK3wteWQ3w" name="arg0" type="_qu7PwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_qkSGAPOLEeanyK3wteWQ3w" name="RotateListener">
          <interfaceRealization xmi:id="_q0ByMPOLEeanyK3wteWQ3w" client="_qkSGAPOLEeanyK3wteWQ3w" supplier="_qva_APOLEeanyK3wteWQ3w" contract="_qva_APOLEeanyK3wteWQ3w"/>
          <ownedOperation xmi:id="_q0CZQPOLEeanyK3wteWQ3w" name="actionPerformed">
            <ownedParameter xmi:id="_q0CZQfOLEeanyK3wteWQ3w" name="arg0" type="_qu7PwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_q5x04fOLEeanyK3wteWQ3w" name="" memberEnd="_q5x04vOLEeanyK3wteWQ3w _q1ZEIfOLEeanyK3wteWQ3w">
          <ownedEnd xmi:id="_q5x04vOLEeanyK3wteWQ3w" name="" type="_qje0wPOLEeanyK3wteWQ3w" association="_q5x04fOLEeanyK3wteWQ3w"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_q5zqEfOLEeanyK3wteWQ3w" name="" memberEnd="_q5zqEvOLEeanyK3wteWQ3w _q1jcMPOLEeanyK3wteWQ3w">
          <ownedEnd xmi:id="_q5zqEvOLEeanyK3wteWQ3w" name="" type="_qjwhkPOLEeanyK3wteWQ3w" association="_q5zqEfOLEeanyK3wteWQ3w"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_q504MPOLEeanyK3wteWQ3w" name="" memberEnd="_q504MfOLEeanyK3wteWQ3w _q1kDQPOLEeanyK3wteWQ3w">
          <ownedEnd xmi:id="_q504MfOLEeanyK3wteWQ3w" name="" type="_qjwhkPOLEeanyK3wteWQ3w" association="_q504MPOLEeanyK3wteWQ3w"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_q51fQfOLEeanyK3wteWQ3w" name="" memberEnd="_q51fQvOLEeanyK3wteWQ3w _q1kqUPOLEeanyK3wteWQ3w">
          <ownedEnd xmi:id="_q51fQvOLEeanyK3wteWQ3w" name="" type="_qj1aEPOLEeanyK3wteWQ3w" association="_q51fQfOLEeanyK3wteWQ3w"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_q52GUfOLEeanyK3wteWQ3w" name="" memberEnd="_q52GUvOLEeanyK3wteWQ3w _q1lRYfOLEeanyK3wteWQ3w">
          <ownedEnd xmi:id="_q52GUvOLEeanyK3wteWQ3w" name="" type="_qj1aEPOLEeanyK3wteWQ3w" association="_q52GUfOLEeanyK3wteWQ3w"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_q53UcfOLEeanyK3wteWQ3w" name="" memberEnd="_q53UcvOLEeanyK3wteWQ3w _q1l4cPOLEeanyK3wteWQ3w">
          <ownedEnd xmi:id="_q53UcvOLEeanyK3wteWQ3w" name="" type="_qkCOYPOLEeanyK3wteWQ3w" association="_q53UcfOLEeanyK3wteWQ3w"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_q54ikPOLEeanyK3wteWQ3w" name="" memberEnd="_q54ikfOLEeanyK3wteWQ3w _q1nGkPOLEeanyK3wteWQ3w">
          <ownedEnd xmi:id="_q54ikfOLEeanyK3wteWQ3w" name="" type="_qkJjIPOLEeanyK3wteWQ3w" association="_q54ikPOLEeanyK3wteWQ3w"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_PelOkPOMEeanyK3wteWQ3w" name="ChangeButtonListener">
          <ownedAttribute xmi:id="_PeqHEPOMEeanyK3wteWQ3w" name="d" visibility="private" type="_qnEUQPOLEeanyK3wteWQ3w" association="_Peu_kPOMEeanyK3wteWQ3w"/>
          <ownedAttribute xmi:id="_PequIfOMEeanyK3wteWQ3w" name="b" visibility="private">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedAttribute>
          <interfaceRealization xmi:id="_Pel1oPOMEeanyK3wteWQ3w" client="_PelOkPOMEeanyK3wteWQ3w" supplier="_qva_APOLEeanyK3wteWQ3w" contract="_qva_APOLEeanyK3wteWQ3w"/>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PetKYPOMEeanyK3wteWQ3w" name="ChangeButtonListener" specification="_PenDwPOMEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_PetKYfOMEeanyK3wteWQ3w" name="display" type="_qnEUQPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_PetKYvOMEeanyK3wteWQ3w" name="buttons">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_PetKY_OMEeanyK3wteWQ3w" type="_PelOkPOMEeanyK3wteWQ3w" direction="return"/>
            <language>java</language>
            <body>d=display;
		b=buttons;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PetKZPOMEeanyK3wteWQ3w" name="actionPerformed" specification="_Penq0POMEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_PetKZfOMEeanyK3wteWQ3w" name="e" type="_qu7PwPOLEeanyK3wteWQ3w"/>
            <language>java</language>
            <body>d.changeBuildButtons(b);
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_PenDwPOMEeanyK3wteWQ3w" name="ChangeButtonListener" method="_PetKYPOMEeanyK3wteWQ3w">
            <eAnnotations xmi:id="_PenDw_OMEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_PenDxPOMEeanyK3wteWQ3w" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_PenDwfOMEeanyK3wteWQ3w" name="display" type="_qnEUQPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_PenDwvOMEeanyK3wteWQ3w" name="buttons">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_PenDxfOMEeanyK3wteWQ3w" type="_PelOkPOMEeanyK3wteWQ3w" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_Penq0POMEeanyK3wteWQ3w" name="actionPerformed" method="_PetKZPOMEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_Penq0fOMEeanyK3wteWQ3w" name="e" type="_qu7PwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_Peu_kPOMEeanyK3wteWQ3w" name="" memberEnd="_Peu_kfOMEeanyK3wteWQ3w _PeqHEPOMEeanyK3wteWQ3w">
          <ownedEnd xmi:id="_Peu_kfOMEeanyK3wteWQ3w" name="" type="_PelOkPOMEeanyK3wteWQ3w" association="_Peu_kPOMEeanyK3wteWQ3w"/>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_qewFwPOLEeanyK3wteWQ3w" name="runListeners">
        <packagedElement xmi:type="uml:Class" xmi:id="_qkYMoPOLEeanyK3wteWQ3w" name="StartStopListener">
          <interfaceRealization xmi:id="_q0HRwPOLEeanyK3wteWQ3w" client="_qkYMoPOLEeanyK3wteWQ3w" supplier="_qva_APOLEeanyK3wteWQ3w" contract="_qva_APOLEeanyK3wteWQ3w"/>
          <ownedOperation xmi:id="_q0H40POLEeanyK3wteWQ3w" name="actionPerformed">
            <ownedParameter xmi:id="_q0H40fOLEeanyK3wteWQ3w" name="arg0" type="_qu7PwPOLEeanyK3wteWQ3w"/>
          </ownedOperation>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qi1UgPOLEeanyK3wteWQ3w" name="BuildListener">
        <ownedAttribute xmi:id="_q1S9gPOLEeanyK3wteWQ3w" name="model" visibility="private" type="_qlwFoPOLEeanyK3wteWQ3w" association="_q5rHMPOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q1TkkPOLEeanyK3wteWQ3w" name="gizmo" visibility="private">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q1ULoPOLEeanyK3wteWQ3w" name="mouseListener" visibility="private" type="_qvP_4fOLEeanyK3wteWQ3w" association="_q5ruQfOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q1UysPOLEeanyK3wteWQ3w" name="keyListener" visibility="private" type="_qvFn0fOLEeanyK3wteWQ3w" association="_q5s8YfOLEeanyK3wteWQ3w"/>
        <interfaceRealization xmi:id="_qvROAPOLEeanyK3wteWQ3w" client="_qi1UgPOLEeanyK3wteWQ3w" supplier="_qjKEoPOLEeanyK3wteWQ3w" contract="_qjKEoPOLEeanyK3wteWQ3w"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q317MPOLEeanyK3wteWQ3w" name="BuildListener" specification="_qvScIPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q317MfOLEeanyK3wteWQ3w" name="m" type="_qlwFoPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q317MvOLEeanyK3wteWQ3w" name="g">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q317M_OLEeanyK3wteWQ3w" type="_qi1UgPOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>model = m;
		gizmo = g;
		mouseListener = new AddGizmosListener(model, gizmo);
		keyListener = new DoNothingKeyListener(model);
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qvScIPOLEeanyK3wteWQ3w" name="BuildListener" method="_q317MPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qvTDMvOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qvTDM_OLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_qvTDMPOLEeanyK3wteWQ3w" name="m" type="_qlwFoPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qvTDMfOLEeanyK3wteWQ3w" name="g">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qvTDNPOLEeanyK3wteWQ3w" type="_qi1UgPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qyuKoPOLEeanyK3wteWQ3w" name="actionPerformed">
          <ownedParameter xmi:id="_qyuKofOLEeanyK3wteWQ3w" name="e" type="_qu7PwPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qyvYwvOLEeanyK3wteWQ3w" name="windowActivated">
          <ownedParameter xmi:id="_qyvYw_OLEeanyK3wteWQ3w" name="e" type="_qvPY0fOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qywm4POLEeanyK3wteWQ3w" name="windowClosed">
          <ownedParameter xmi:id="_qywm4fOLEeanyK3wteWQ3w" name="e" type="_qvPY0fOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qyxN8vOLEeanyK3wteWQ3w" name="windowClosing">
          <ownedParameter xmi:id="_qyx1APOLEeanyK3wteWQ3w" name="e" type="_qvPY0fOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qyycEvOLEeanyK3wteWQ3w" name="windowDeactivated">
          <ownedParameter xmi:id="_qyycE_OLEeanyK3wteWQ3w" name="e" type="_qvPY0fOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qyzqMfOLEeanyK3wteWQ3w" name="windowDeiconified">
          <ownedParameter xmi:id="_qyzqMvOLEeanyK3wteWQ3w" name="e" type="_qvPY0fOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qy04UPOLEeanyK3wteWQ3w" name="windowIconified">
          <ownedParameter xmi:id="_qy04UfOLEeanyK3wteWQ3w" name="e" type="_qvPY0fOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qy2GcPOLEeanyK3wteWQ3w" name="windowOpened">
          <ownedParameter xmi:id="_qy2GcfOLEeanyK3wteWQ3w" name="e" type="_qvPY0fOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qy2tgvOLEeanyK3wteWQ3w" name="keyPressed">
          <ownedParameter xmi:id="_qy2tg_OLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qy37oPOLEeanyK3wteWQ3w" name="keyReleased">
          <ownedParameter xmi:id="_qy37ofOLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qy7mAfOLEeanyK3wteWQ3w" name="keyTyped">
          <ownedParameter xmi:id="_qy7mAvOLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qy80IvOLEeanyK3wteWQ3w" name="mouseClicked">
          <ownedParameter xmi:id="_qy80I_OLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qy-CQfOLEeanyK3wteWQ3w" name="mouseEntered">
          <ownedParameter xmi:id="_qy-CQvOLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qy_QYPOLEeanyK3wteWQ3w" name="mouseExited">
          <ownedParameter xmi:id="_qy_QYfOLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qy_3cvOLEeanyK3wteWQ3w" name="mousePressed">
          <ownedParameter xmi:id="_qy_3c_OLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qzBFkPOLEeanyK3wteWQ3w" name="mouseReleased">
          <ownedParameter xmi:id="_qzBFkfOLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qzBsovOLEeanyK3wteWQ3w" name="mouseDragged">
          <ownedParameter xmi:id="_qzBso_OLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qzEI4POLEeanyK3wteWQ3w" name="mouseMoved">
          <ownedParameter xmi:id="_qzEI4fOLEeanyK3wteWQ3w" name="e" type="_qvOKsfOLEeanyK3wteWQ3w"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Interface" xmi:id="_qjKEoPOLEeanyK3wteWQ3w" name="IListener">
        <generalization xmi:id="_qzF-EPOLEeanyK3wteWQ3w" general="_qva_APOLEeanyK3wteWQ3w"/>
        <generalization xmi:id="_qzHMMfOLEeanyK3wteWQ3w" general="_qzGlIPOLEeanyK3wteWQ3w"/>
        <generalization xmi:id="_qzHzQPOLEeanyK3wteWQ3w" general="_qvFn0fOLEeanyK3wteWQ3w"/>
        <generalization xmi:id="_qzHzQfOLEeanyK3wteWQ3w" general="_qvP_4fOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qjNH8POLEeanyK3wteWQ3w" name="LoadListener">
        <ownedAttribute xmi:id="_q1WA0POLEeanyK3wteWQ3w" name="d" visibility="private" type="_qnEUQPOLEeanyK3wteWQ3w" association="_q5tjcfOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q1Wn4fOLEeanyK3wteWQ3w" name="m" visibility="private" type="_qlwFoPOLEeanyK3wteWQ3w" association="_q5uxkPOLEeanyK3wteWQ3w"/>
        <interfaceRealization xmi:id="_qzHzQvOLEeanyK3wteWQ3w" client="_qjNH8POLEeanyK3wteWQ3w" supplier="_qva_APOLEeanyK3wteWQ3w" contract="_qva_APOLEeanyK3wteWQ3w"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q34XcPOLEeanyK3wteWQ3w" name="LoadListener" specification="_qvc0MPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q34XcfOLEeanyK3wteWQ3w" name="display" type="_qnEUQPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q34XcvOLEeanyK3wteWQ3w" name="model" type="_qlwFoPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q34Xc_OLEeanyK3wteWQ3w" type="_qjNH8POLEeanyK3wteWQ3w" direction="return">
            <name xsi:nil="true"/>
          </ownedParameter>
          <language>java</language>
          <body>d = display;
		m = model;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q34-gPOLEeanyK3wteWQ3w" name="actionPerformed" specification="_qzIaUPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q34-gfOLEeanyK3wteWQ3w" name="e" type="_qu7PwPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>File f = d.loadDialog();
		if (f != null) {
			if (!m.load(f)) {
				d.errorPopup(&quot;Invalid File Format&quot;);
			}else{
				d.load(m.getGizmos());
			}
		} else {
			d.errorPopup(&quot;No File Selected&quot;);
		}
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qvc0MPOLEeanyK3wteWQ3w" name="LoadListener" method="_q34XcPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qvdbQfOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qvdbQvOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_qvc0MfOLEeanyK3wteWQ3w" name="display" type="_qnEUQPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qvdbQPOLEeanyK3wteWQ3w" name="model" type="_qlwFoPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qvdbQ_OLEeanyK3wteWQ3w" type="_qjNH8POLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qzIaUPOLEeanyK3wteWQ3w" name="actionPerformed" method="_q34-gPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qzIaUfOLEeanyK3wteWQ3w" name="e" type="_qu7PwPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qjRZYPOLEeanyK3wteWQ3w" name="SaveListener">
        <ownedAttribute xmi:id="_q1XO8fOLEeanyK3wteWQ3w" name="d" visibility="private" type="_qnEUQPOLEeanyK3wteWQ3w" association="_q5vYofOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q1X2AfOLEeanyK3wteWQ3w" name="m" visibility="private" type="_qlwFoPOLEeanyK3wteWQ3w" association="_q5v_sfOLEeanyK3wteWQ3w"/>
        <interfaceRealization xmi:id="_qzKPgPOLEeanyK3wteWQ3w" client="_qjRZYPOLEeanyK3wteWQ3w" supplier="_qva_APOLEeanyK3wteWQ3w" contract="_qva_APOLEeanyK3wteWQ3w"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q35lkPOLEeanyK3wteWQ3w" name="SaveListener" specification="_qvepYPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q35lkfOLEeanyK3wteWQ3w" name="display" type="_qnEUQPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q35lkvOLEeanyK3wteWQ3w" name="model" type="_qlwFoPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q35lk_OLEeanyK3wteWQ3w" type="_qjRZYPOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>d = display;
		m = model;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q35llPOLEeanyK3wteWQ3w" name="actionPerformed" specification="_qzK2kPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q35llfOLEeanyK3wteWQ3w" name="e" type="_qu7PwPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>File f = d.saveDialog();
		if (f != null) {
			m.save(f);
		}

	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qvepYPOLEeanyK3wteWQ3w" name="SaveListener" method="_q35lkPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qvfQcfOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qvfQcvOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_qvepYfOLEeanyK3wteWQ3w" name="display" type="_qnEUQPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qvfQcPOLEeanyK3wteWQ3w" name="model" type="_qlwFoPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qvfQc_OLEeanyK3wteWQ3w" type="_qjRZYPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qzK2kPOLEeanyK3wteWQ3w" name="actionPerformed" method="_q35llPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qzK2kfOLEeanyK3wteWQ3w" name="e" type="_qu7PwPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q5rHMPOLEeanyK3wteWQ3w" name="" memberEnd="_q5rHMfOLEeanyK3wteWQ3w _q1S9gPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q5rHMfOLEeanyK3wteWQ3w" name="" type="_qi1UgPOLEeanyK3wteWQ3w" association="_q5rHMPOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q5ruQfOLEeanyK3wteWQ3w" name="" memberEnd="_q5ruQvOLEeanyK3wteWQ3w _q1ULoPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q5ruQvOLEeanyK3wteWQ3w" name="" type="_qi1UgPOLEeanyK3wteWQ3w" association="_q5ruQfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q5s8YfOLEeanyK3wteWQ3w" name="" memberEnd="_q5s8YvOLEeanyK3wteWQ3w _q1UysPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q5s8YvOLEeanyK3wteWQ3w" name="" type="_qi1UgPOLEeanyK3wteWQ3w" association="_q5s8YfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q5tjcfOLEeanyK3wteWQ3w" name="" memberEnd="_q5tjcvOLEeanyK3wteWQ3w _q1WA0POLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q5tjcvOLEeanyK3wteWQ3w" name="" type="_qjNH8POLEeanyK3wteWQ3w" association="_q5tjcfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q5uxkPOLEeanyK3wteWQ3w" name="" memberEnd="_q5uxkfOLEeanyK3wteWQ3w _q1Wn4fOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q5uxkfOLEeanyK3wteWQ3w" name="" type="_qjNH8POLEeanyK3wteWQ3w" association="_q5uxkPOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q5vYofOLEeanyK3wteWQ3w" name="" memberEnd="_q5vYovOLEeanyK3wteWQ3w _q1XO8fOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q5vYovOLEeanyK3wteWQ3w" name="" type="_qjRZYPOLEeanyK3wteWQ3w" association="_q5vYofOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q5v_sfOLEeanyK3wteWQ3w" name="" memberEnd="_q5v_svOLEeanyK3wteWQ3w _q1X2AfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q5v_svOLEeanyK3wteWQ3w" name="" type="_qjRZYPOLEeanyK3wteWQ3w" association="_q5v_sfOLEeanyK3wteWQ3w"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_qdObwvOLEeanyK3wteWQ3w" name="model">
      <packagedElement xmi:type="uml:Class" xmi:id="_qkZawPOLEeanyK3wteWQ3w" name="AbsorberGizmo">
        <generalization xmi:id="_qwMbEPOLEeanyK3wteWQ3w" general="_qlCT8POLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q1qw8POLEeanyK3wteWQ3w" name="x" visibility="package">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q1tNMPOLEeanyK3wteWQ3w" name="velo" visibility="package" type="_qwKl4POLEeanyK3wteWQ3w" association="_q56-0fOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q45rIPOLEeanyK3wteWQ3w" name="y" visibility="package">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q46SMfOLEeanyK3wteWQ3w" name="ex" visibility="package">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q465QvOLEeanyK3wteWQ3w" name="ey" visibility="package">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4FLwPOLEeanyK3wteWQ3w" name="AbsorberGizmo" specification="_qkbP8POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4FLwfOLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4FLwvOLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4FLw_OLEeanyK3wteWQ3w" name="ex">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4FLxPOLEeanyK3wteWQ3w" name="ey">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4FLxfOLEeanyK3wteWQ3w" type="_qkZawPOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>super(x, y);
		this.ex = ex;
		this.ey = ey;
		velo = new Vect(0,-50);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4Fy0POLEeanyK3wteWQ3w" name="getExitVeloicty" specification="_qkeTQPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4Fy0fOLEeanyK3wteWQ3w" type="_qwKl4POLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>return velo;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4Fy0vOLEeanyK3wteWQ3w" name="getEndX" specification="_qkfhYPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4Fy0_OLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <language>java</language>
          <body>return ex;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4GZ4POLEeanyK3wteWQ3w" name="getEndY" specification="_qkh9ofOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4GZ4fOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <language>java</language>
          <body>return ey;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4GZ4vOLEeanyK3wteWQ3w" name="newPosition" specification="_qkjy0POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4GZ4_OLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4GZ5POLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4GZ5fOLEeanyK3wteWQ3w" name="ex">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4GZ5vOLEeanyK3wteWQ3w" name="ey">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <language>java</language>
          <body>this.x = x;
		this.y = y;
		this.ex = ex;
		this.ey = ey;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4HA8POLEeanyK3wteWQ3w" name="rotate" specification="_qkrHkPOLEeanyK3wteWQ3w">
          <language>java</language>
          <body>return;
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qkbP8POLEeanyK3wteWQ3w" name="AbsorberGizmo" method="_q4FLwPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qkdFIPOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qkdFIfOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_qkbP8fOLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qkb3APOLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qkb3AfOLEeanyK3wteWQ3w" name="ex">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qkceEPOLEeanyK3wteWQ3w" name="ey">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qkdFIvOLEeanyK3wteWQ3w" type="_qkZawPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qkeTQPOLEeanyK3wteWQ3w" name="getExitVeloicty" method="_q4Fy0POLEeanyK3wteWQ3w">
          <ownedComment xmi:id="_q48HYPOLEeanyK3wteWQ3w">
            <body>
	 * @return exit velocity of the ball if touched</body>
          </ownedComment>
          <ownedParameter xmi:id="_q0JG8POLEeanyK3wteWQ3w" type="_qwKl4POLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qkfhYPOLEeanyK3wteWQ3w" name="getEndX" method="_q4Fy0vOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qkgvgPOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qkh9ofOLEeanyK3wteWQ3w" name="getEndY" method="_q4GZ4POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qkiksPOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qkjy0POLEeanyK3wteWQ3w" name="newPosition" method="_q4GZ4vOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qkkZ4POLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qkkZ4fOLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qklA8POLEeanyK3wteWQ3w" name="ex">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qklA8fOLEeanyK3wteWQ3w" name="ey">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qkrHkPOLEeanyK3wteWQ3w" name="rotate" method="_q4HA8POLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qkux8POLEeanyK3wteWQ3w" name="Ball">
        <ownedAttribute xmi:id="_q1ubUPOLEeanyK3wteWQ3w" name="vel" visibility="private" type="_qwKl4POLEeanyK3wteWQ3w" association="_q58M8POLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q1vCYfOLEeanyK3wteWQ3w" name="minSpeed" visibility="private">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q1wQgPOLEeanyK3wteWQ3w" name="color" type="_qwNpMPOLEeanyK3wteWQ3w" association="_q5AY0POLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q1w3kPOLEeanyK3wteWQ3w" name="paused">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q48HYfOLEeanyK3wteWQ3w" name="maxSpeed" visibility="private">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q49VgPOLEeanyK3wteWQ3w" name="radius" visibility="private">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q498kPOLEeanyK3wteWQ3w" name="x" visibility="private">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q498k_OLEeanyK3wteWQ3w" name="y" visibility="private">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
        </ownedAttribute>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4IPEPOLEeanyK3wteWQ3w" name="Ball" specification="_qkwAEPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4IPEfOLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4IPEvOLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4IPE_OLEeanyK3wteWQ3w" name="xVel">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4IPFPOLEeanyK3wteWQ3w" name="yVel">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4IPFfOLEeanyK3wteWQ3w" type="_qkux8POLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>this.x = x;
		this.y = y;
		minSpeed = 0.01;
		maxSpeed = 200;
		vel = new Vect(xVel, yVel);
		color = Color.CYAN;
		radius = 0.25;
		paused = false;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4I2IPOLEeanyK3wteWQ3w" name="getX" specification="_qkzDYPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4I2IfOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <language>java</language>
          <body>return x;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4I2IvOLEeanyK3wteWQ3w" name="getY" specification="_qkzDYvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4I2I_OLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <language>java</language>
          <body>return y;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4I2JPOLEeanyK3wteWQ3w" name="getVelocity" specification="_qk1foPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4I2JfOLEeanyK3wteWQ3w" type="_qwKl4POLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>return vel;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4JdMPOLEeanyK3wteWQ3w" name="getRadius" specification="_qk1fofOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4JdMfOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <language>java</language>
          <body>return radius;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4JdMvOLEeanyK3wteWQ3w" name="getCircle" specification="_qk2twPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4JdM_OLEeanyK3wteWQ3w" type="_qwQsgPOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>return new Circle(x, y, radius);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4JdNPOLEeanyK3wteWQ3w" name="setX" specification="_qk3U0POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4JdNfOLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <language>java</language>
          <body>this.x = x;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4KEQPOLEeanyK3wteWQ3w" name="setY" specification="_qk3U0vOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4KEQfOLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <language>java</language>
          <body>this.y = y;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4KEQvOLEeanyK3wteWQ3w" name="getCenter" specification="_qk374fOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4KEQ_OLEeanyK3wteWQ3w" type="_qwKl4POLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>return new Vect(x,y);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4KrUPOLEeanyK3wteWQ3w" name="setVelocity" specification="_qk4i8POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4KrUfOLEeanyK3wteWQ3w" name="xVel">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4KrUvOLEeanyK3wteWQ3w" name="yVel">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <language>java</language>
          <body>//Validation to ensure speed doesn't exceed limits
		if(xVel > maxSpeed)
			xVel = maxSpeed;
		else if(xVel &lt; minSpeed)
			xVel = minSpeed;
		
		if(yVel > maxSpeed)
			yVel = maxSpeed;
		else if(yVel &lt; minSpeed)
			yVel = minSpeed;
		
		vel = new Vect(xVel, yVel);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4KrU_OLEeanyK3wteWQ3w" name="setVelocity" specification="_q0MKQPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4KrVPOLEeanyK3wteWQ3w" name="vel" type="_qwKl4POLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>this.vel = vel;
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qkwAEPOLEeanyK3wteWQ3w" name="Ball" method="_q4IPEPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qkycUPOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qkycUfOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedComment xmi:id="_q5A_4POLEeanyK3wteWQ3w">
            <body>Direction must be in radians</body>
          </ownedComment>
          <ownedParameter xmi:id="_qkwAEfOLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qkwAEvOLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qkxOMPOLEeanyK3wteWQ3w" name="xVel">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qkxOMfOLEeanyK3wteWQ3w" name="yVel">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qkycUvOLEeanyK3wteWQ3w" type="_qkux8POLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qkzDYPOLEeanyK3wteWQ3w" name="getX" method="_q4I2IPOLEeanyK3wteWQ3w">
          <ownedComment xmi:id="_q5A_4fOLEeanyK3wteWQ3w">
            <body>Return the X coordinate of the ball</body>
          </ownedComment>
          <ownedParameter xmi:id="_qkzDYfOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qkzDYvOLEeanyK3wteWQ3w" name="getY" method="_q4I2IvOLEeanyK3wteWQ3w">
          <ownedComment xmi:id="_q5A_4vOLEeanyK3wteWQ3w">
            <body>Return the Y coordinate of the ball</body>
          </ownedComment>
          <ownedParameter xmi:id="_qkzqcPOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qk1foPOLEeanyK3wteWQ3w" name="getVelocity" method="_q4I2JPOLEeanyK3wteWQ3w">
          <ownedComment xmi:id="_q5A_4_OLEeanyK3wteWQ3w">
            <body>Returns the velocity of the ball</body>
          </ownedComment>
          <ownedParameter xmi:id="_q0K8IPOLEeanyK3wteWQ3w" type="_qwKl4POLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qk1fofOLEeanyK3wteWQ3w" name="getRadius" method="_q4JdMPOLEeanyK3wteWQ3w">
          <ownedComment xmi:id="_q5A_5POLEeanyK3wteWQ3w">
            <body>Returns the radius of the ball</body>
          </ownedComment>
          <ownedParameter xmi:id="_qk2GsPOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qk2twPOLEeanyK3wteWQ3w" name="getCircle" method="_q4JdMvOLEeanyK3wteWQ3w">
          <ownedComment xmi:id="_q5A_5fOLEeanyK3wteWQ3w">
            <body>Returns a Circle object version of the ball</body>
          </ownedComment>
          <ownedParameter xmi:id="_q0LjMPOLEeanyK3wteWQ3w" type="_qwQsgPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qk3U0POLEeanyK3wteWQ3w" name="setX" method="_q4JdNPOLEeanyK3wteWQ3w">
          <ownedComment xmi:id="_q5Bm8POLEeanyK3wteWQ3w">
            <body>Sets the x coordinate of the ball</body>
          </ownedComment>
          <ownedParameter xmi:id="_qk3U0fOLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qk3U0vOLEeanyK3wteWQ3w" name="setY" method="_q4KEQPOLEeanyK3wteWQ3w">
          <ownedComment xmi:id="_q5Bm8fOLEeanyK3wteWQ3w">
            <body>Sets the y coordinate of the ball</body>
          </ownedComment>
          <ownedParameter xmi:id="_qk374POLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qk374fOLEeanyK3wteWQ3w" name="getCenter" method="_q4KEQvOLEeanyK3wteWQ3w">
          <ownedComment xmi:id="_q5Bm8vOLEeanyK3wteWQ3w">
            <body>returns the center of the ball</body>
          </ownedComment>
          <ownedParameter xmi:id="_q0LjMfOLEeanyK3wteWQ3w" type="_qwKl4POLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qk4i8POLEeanyK3wteWQ3w" name="setVelocity" method="_q4KrUPOLEeanyK3wteWQ3w">
          <ownedComment xmi:id="_q5Bm8_OLEeanyK3wteWQ3w">
            <body>Set the velocity of the ball
	 * Params: xVel, yVel</body>
          </ownedComment>
          <ownedParameter xmi:id="_qk4i8fOLEeanyK3wteWQ3w" name="xVel">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qk4i8vOLEeanyK3wteWQ3w" name="yVel">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_q0MKQPOLEeanyK3wteWQ3w" name="setVelocity" method="_q4KrU_OLEeanyK3wteWQ3w">
          <ownedComment xmi:id="_q5Bm9POLEeanyK3wteWQ3w">
            <body>Params: (Vect) vel</body>
          </ownedComment>
          <ownedParameter xmi:id="_q0MKQfOLEeanyK3wteWQ3w" name="vel" type="_qwKl4POLEeanyK3wteWQ3w"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qk8NUPOLEeanyK3wteWQ3w" name="CircleGizmo">
        <generalization xmi:id="_qwR6oPOLEeanyK3wteWQ3w" general="_qlCT8POLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q1yFsPOLEeanyK3wteWQ3w" name="circle" visibility="private" type="_qwQsgPOLEeanyK3wteWQ3w" association="_q580AfOLEeanyK3wteWQ3w"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4L5cPOLEeanyK3wteWQ3w" name="CircleGizmo" specification="_qk9bcPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4L5cfOLEeanyK3wteWQ3w" name="x1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4L5cvOLEeanyK3wteWQ3w" name="y1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4L5c_OLEeanyK3wteWQ3w" type="_qk8NUPOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>super(x1, y1);
		coef = 1.0;
		size = 1; //circle has predefined size of 1
		circle = new Circle(x1, y1, size/2);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4L5dPOLEeanyK3wteWQ3w" name="getRadius" specification="_qk-CgfOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4L5dfOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <language>java</language>
          <body>return size/2;
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qk9bcPOLEeanyK3wteWQ3w" name="CircleGizmo" method="_q4L5cPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qk9bc_OLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qk9bdPOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_qk9bcfOLEeanyK3wteWQ3w" name="x1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qk9bcvOLEeanyK3wteWQ3w" name="y1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qk-CgPOLEeanyK3wteWQ3w" type="_qk8NUPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qk-CgfOLEeanyK3wteWQ3w" name="getRadius" method="_q4L5dPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qk-CgvOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qlCT8POLEeanyK3wteWQ3w" name="Gizmo">
        <ownedAttribute xmi:id="_q1zT0POLEeanyK3wteWQ3w" name="x" visibility="protected">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q10h8POLEeanyK3wteWQ3w" name="coef" visibility="protected">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q11wEPOLEeanyK3wteWQ3w" name="color" visibility="protected" type="_qwNpMPOLEeanyK3wteWQ3w" association="_q59bEfOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q12XIfOLEeanyK3wteWQ3w" name="key" visibility="protected">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q12-MfOLEeanyK3wteWQ3w" name="connectedGizmo" visibility="protected" type="_qlm7sPOLEeanyK3wteWQ3w" association="_q5-pMfOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q13lQfOLEeanyK3wteWQ3w" name="gizmosConnected" visibility="protected" type="_qlm7sPOLEeanyK3wteWQ3w" isOrdered="true" association="_q5_3UfOLEeanyK3wteWQ3w">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q14MUPOLEeanyK3wteWQ3w" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q5COAPOLEeanyK3wteWQ3w" name="y" visibility="protected">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q5C1EfOLEeanyK3wteWQ3w" name="angle" visibility="protected">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q5DcIvOLEeanyK3wteWQ3w" name="size" visibility="protected">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <interfaceRealization xmi:id="_qwUW4POLEeanyK3wteWQ3w" client="_qlCT8POLEeanyK3wteWQ3w" supplier="_qlm7sPOLEeanyK3wteWQ3w" contract="_qlm7sPOLEeanyK3wteWQ3w"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4MggPOLEeanyK3wteWQ3w" name="Gizmo" specification="_qlEJIPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4MggfOLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4MggvOLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4Mgg_OLEeanyK3wteWQ3w" type="_qlCT8POLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>this.x = x;
		this.y= y;
		this.color = Color.BLUE;
		angle = 0;  //default angle facing upward
		connectedGizmo = null;
		gizmosConnected = new ArrayList&lt;IGizmo>();
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4NHkPOLEeanyK3wteWQ3w" name="getStartX" specification="_qlEwM_OLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4NHkfOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <language>java</language>
          <body>return x;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4NHkvOLEeanyK3wteWQ3w" name="getStartY" specification="_qlF-U_OLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4NHk_OLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <language>java</language>
          <body>return y;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4NHlPOLEeanyK3wteWQ3w" name="getEndX" specification="_qlHzgPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4NHlfOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <language>java</language>
          <body>return x+size;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4NuoPOLEeanyK3wteWQ3w" name="getEndY" specification="_qlKPwPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4NuofOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <language>java</language>
          <body>return y+size;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4NuovOLEeanyK3wteWQ3w" name="newPosition" specification="_qlLd4vOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4Nuo_OLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4NupPOLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <language>java</language>
          <body>this.x = x;
		this.y = y;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4NupfOLEeanyK3wteWQ3w" name="rotate" specification="_qlMsAvOLEeanyK3wteWQ3w">
          <language>java</language>
          <body>if(angle == 270) angle = 0;
		else angle += 90;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4OVsPOLEeanyK3wteWQ3w" name="changeColor" specification="_q0N_cPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4OVsfOLEeanyK3wteWQ3w" name="color" type="_qwNpMPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>this.color = color; 
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4OVsvOLEeanyK3wteWQ3w" name="getCof" specification="_qlN6IvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4OVs_OLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <language>java</language>
          <body>return coef;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4OVtPOLEeanyK3wteWQ3w" name="getRotation" specification="_qlPIQvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4OVtfOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <language>java</language>
          <body>return angle;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4O8wPOLEeanyK3wteWQ3w" name="getColor" specification="_qlSLkvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4O8wfOLEeanyK3wteWQ3w" type="_qwNpMPOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>return color;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4O8wvOLEeanyK3wteWQ3w" name="getSize" specification="_qlTZsvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4O8w_OLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <language>java</language>
          <body>return size;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4Pj0POLEeanyK3wteWQ3w" name="copy" specification="_qlVO4fOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4Pj0fOLEeanyK3wteWQ3w" type="_qlCT8POLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>return this.copy();
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4Pj0vOLEeanyK3wteWQ3w" name="setKey" specification="_qlXEEPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4Pj0_OLEeanyK3wteWQ3w" name="k">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <language>java</language>
          <body>key = k;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4Pj1POLEeanyK3wteWQ3w" name="getKey" specification="_qlaHYPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4Pj1fOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <language>java</language>
          <body>return key;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4QK4POLEeanyK3wteWQ3w" name="getConnectedGizmo" specification="_qlbVgPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4QK4fOLEeanyK3wteWQ3w" type="_qlm7sPOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>return connectedGizmo;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4QK4vOLEeanyK3wteWQ3w" name="setConnectedGizmo" specification="_qwVlAvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4QK4_OLEeanyK3wteWQ3w" name="connectedGizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>this.connectedGizmo = connectedGizmo;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4Qx8POLEeanyK3wteWQ3w" name="getGizmosConnected" specification="_qlcjoPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4Qx8fOLEeanyK3wteWQ3w" type="_qlm7sPOLEeanyK3wteWQ3w" isOrdered="true" direction="return">
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q4Qx8vOLEeanyK3wteWQ3w" value="*"/>
          </ownedParameter>
          <language>java</language>
          <body>return gizmosConnected;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4Qx8_OLEeanyK3wteWQ3w" name="addGizmoConnected" specification="_qwXaMPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4Qx9POLEeanyK3wteWQ3w" name="gizmoConnected" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>gizmosConnected.add(gizmoConnected);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4Qx9fOLEeanyK3wteWQ3w" name="clearGizmoConnected" specification="_qlgOAPOLEeanyK3wteWQ3w">
          <language>java</language>
          <body>gizmosConnected.clear();
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4RZAPOLEeanyK3wteWQ3w" name="removeGizmoConnected" specification="_qwYBQvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4RZAfOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>gizmosConnected.remove(gizmo);
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qlEJIPOLEeanyK3wteWQ3w" name="Gizmo" method="_q4MggPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qlEwMPOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qlEwMfOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_qlEJIfOLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qlEJIvOLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qlEwMvOLEeanyK3wteWQ3w" type="_qlCT8POLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qlEwM_OLEeanyK3wteWQ3w" name="getStartX" method="_q4NHkPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qlFXQPOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qlF-U_OLEeanyK3wteWQ3w" name="getStartY" method="_q4NHkvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qlGlYPOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qlHzgPOLEeanyK3wteWQ3w" name="getEndX" method="_q4NHlPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qlHzgfOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qlKPwPOLEeanyK3wteWQ3w" name="getEndY" method="_q4NuoPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qlKPwfOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qlLd4vOLEeanyK3wteWQ3w" name="newPosition" method="_q4NuovOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qlLd4_OLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qlLd5POLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qlMsAvOLEeanyK3wteWQ3w" name="rotate" method="_q4NupfOLEeanyK3wteWQ3w"/>
        <ownedOperation xmi:id="_qlN6IvOLEeanyK3wteWQ3w" name="getCof" method="_q4OVsvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qlOhMPOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qlPIQvOLEeanyK3wteWQ3w" name="getRotation" method="_q4OVtPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qlRkgPOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qlSLkvOLEeanyK3wteWQ3w" name="getColor" method="_q4O8wPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q0PNkvOLEeanyK3wteWQ3w" type="_qwNpMPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qlTZsvOLEeanyK3wteWQ3w" name="getSize" method="_q4O8wvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qlUAwPOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qlVO4fOLEeanyK3wteWQ3w" name="copy" method="_q4Pj0POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qwVlAPOLEeanyK3wteWQ3w" type="_qlCT8POLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qlXEEPOLEeanyK3wteWQ3w" name="setKey" method="_q4Pj0vOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qlXEEfOLEeanyK3wteWQ3w" name="k">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qlaHYPOLEeanyK3wteWQ3w" name="getKey" method="_q4Pj1POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qlaHYfOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qlbVgPOLEeanyK3wteWQ3w" name="getConnectedGizmo" method="_q4QK4POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qwVlAfOLEeanyK3wteWQ3w" type="_qlm7sPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qlcjoPOLEeanyK3wteWQ3w" name="getGizmosConnected" method="_q4Qx8POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qlcjofOLEeanyK3wteWQ3w" type="_qlm7sPOLEeanyK3wteWQ3w" isOrdered="true" direction="return">
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qlcjovOLEeanyK3wteWQ3w" value="*"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qlgOAPOLEeanyK3wteWQ3w" name="clearGizmoConnected" method="_q4Qx9fOLEeanyK3wteWQ3w"/>
        <ownedOperation xmi:id="_qwVlAvOLEeanyK3wteWQ3w" name="setConnectedGizmo" method="_q4QK4vOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qwVlA_OLEeanyK3wteWQ3w" name="connectedGizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qwXaMPOLEeanyK3wteWQ3w" name="addGizmoConnected" method="_q4Qx8_OLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qwXaMfOLEeanyK3wteWQ3w" name="gizmoConnected" type="_qlm7sPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qwYBQvOLEeanyK3wteWQ3w" name="removeGizmoConnected" method="_q4RZAPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qwYBQ_OLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_q0N_cPOLEeanyK3wteWQ3w" name="changeColor" method="_q4OVsPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q0N_cfOLEeanyK3wteWQ3w" name="color" type="_qwNpMPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Interface" xmi:id="_qlm7sPOLEeanyK3wteWQ3w" name="IGizmo">
        <ownedAttribute xmi:id="_qlow4POLEeanyK3wteWQ3w" name="startX" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_qlp_APOLEeanyK3wteWQ3w" name="endX" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_qlqmEPOLEeanyK3wteWQ3w" name="size" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_qlqmEfOLEeanyK3wteWQ3w" name="color" type="_qwNpMPOLEeanyK3wteWQ3w" isReadOnly="true" association="_q5p5EPOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_qlr0MPOLEeanyK3wteWQ3w" name="rotation" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_qlsbQPOLEeanyK3wteWQ3w" name="key">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_qlsbQfOLEeanyK3wteWQ3w" name="connectedGizmo" type="_qlm7sPOLEeanyK3wteWQ3w" association="_q5F4YfOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_qltCUPOLEeanyK3wteWQ3w" name="gizmosConnected" type="_qlm7sPOLEeanyK3wteWQ3w" isOrdered="true" association="_q5F4Y_OLEeanyK3wteWQ3w">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q5dEwPOLEeanyK3wteWQ3w" value="*"/>
        </ownedAttribute>
        <ownedOperation xmi:id="_qlniwPOLEeanyK3wteWQ3w" name="newPosition">
          <ownedComment xmi:id="_q5FRUPOLEeanyK3wteWQ3w">
            <body>The initialised position of the gizmo</body>
          </ownedComment>
          <ownedParameter xmi:id="_qloJ0POLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qloJ0fOLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qloJ0vOLEeanyK3wteWQ3w" name="rotate">
          <ownedComment xmi:id="_q5FRUfOLEeanyK3wteWQ3w">
            <body>Rotates the gizmo 90 degrees clockwise</body>
          </ownedComment>
        </ownedOperation>
        <ownedOperation xmi:id="_qlpX8POLEeanyK3wteWQ3w" name="getStartY">
          <ownedComment xmi:id="_q5FRUvOLEeanyK3wteWQ3w">
            <body>Returns the starting Y coordinate</body>
          </ownedComment>
          <ownedParameter xmi:id="_qlpX8fOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qlp_AfOLEeanyK3wteWQ3w" name="getEndY">
          <ownedComment xmi:id="_q5FRU_OLEeanyK3wteWQ3w">
            <body>Returns the ending Y coordinate</body>
          </ownedComment>
          <ownedParameter xmi:id="_qlp_AvOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qlrNIPOLEeanyK3wteWQ3w" name="getCof">
          <ownedComment xmi:id="_q5FRVfOLEeanyK3wteWQ3w">
            <body>Returns the coefficient of reflection</body>
          </ownedComment>
          <ownedParameter xmi:id="_qlrNIfOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qlr0MfOLEeanyK3wteWQ3w" name="copy">
          <ownedComment xmi:id="_q5F4YPOLEeanyK3wteWQ3w">
            <body>Returns a copy of the gizmo for passing between methods</body>
          </ownedComment>
          <ownedParameter xmi:id="_qwbroPOLEeanyK3wteWQ3w" type="_qlCT8POLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qltpYPOLEeanyK3wteWQ3w" name="clearGizmoConnected"/>
        <ownedOperation xmi:id="_qwc5wPOLEeanyK3wteWQ3w" name="addGizmoConnected">
          <ownedParameter xmi:id="_qwc5wfOLEeanyK3wteWQ3w" name="gizmoConnected" type="_qlm7sPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qwdg0POLEeanyK3wteWQ3w" name="removeGizmoConnected">
          <ownedParameter xmi:id="_qwdg0fOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_q0RCwPOLEeanyK3wteWQ3w" name="changeColor">
          <ownedComment xmi:id="_q5FRVPOLEeanyK3wteWQ3w">
            <body>Changes the colour of the gizmo</body>
          </ownedComment>
          <ownedParameter xmi:id="_q0RCwfOLEeanyK3wteWQ3w" name="color" type="_qwNpMPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Interface" xmi:id="_qlwFoPOLEeanyK3wteWQ3w" name="IModel">
        <ownedAttribute xmi:id="_t74IYPOVEeanyK3wteWQ3w" name="gizmos" type="_qlm7sPOLEeanyK3wteWQ3w" association="_t78Z0POVEeanyK3wteWQ3w">
          <qualifier xmi:id="_t76koPOVEeanyK3wteWQ3w">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </qualifier>
        </ownedAttribute>
        <ownedOperation xmi:id="_qlxTwPOLEeanyK3wteWQ3w" name="addGizmo">
          <ownedParameter xmi:id="_qlxTwfOLEeanyK3wteWQ3w" name="gizmo">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qlx60POLEeanyK3wteWQ3w" name="key">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qlx60fOLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qlx60vOLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qlx60_OLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qlyh4POLEeanyK3wteWQ3w" name="addAbsorber">
          <ownedComment xmi:id="_q5GfcvOLEeanyK3wteWQ3w">
            <body>adds an absorber to the</body>
          </ownedComment>
          <ownedParameter xmi:id="_qlyh4fOLEeanyK3wteWQ3w" name="key">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qlyh4vOLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qlzI8POLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qlzI8fOLEeanyK3wteWQ3w" name="ex">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qlzI8vOLEeanyK3wteWQ3w" name="ey">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_ql0XEPOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_ql3aYPOLEeanyK3wteWQ3w" name="deleteGizmo">
          <ownedComment xmi:id="_q5HGgvOLEeanyK3wteWQ3w">
            <body>Removes a given gizmo from the board</body>
          </ownedComment>
          <ownedParameter xmi:id="_ql3aYfOLEeanyK3wteWQ3w" name="key">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_ql3aYvOLEeanyK3wteWQ3w" name="clear">
          <ownedComment xmi:id="_q5HGg_OLEeanyK3wteWQ3w">
            <body>Removes all gizmos from the board</body>
          </ownedComment>
        </ownedOperation>
        <ownedOperation xmi:id="_ql4ogPOLEeanyK3wteWQ3w" name="setFriction">
          <ownedComment xmi:id="_q5HGhPOLEeanyK3wteWQ3w">
            <body>Sets friction</body>
          </ownedComment>
          <ownedParameter xmi:id="_ql4ogfOLEeanyK3wteWQ3w" name="f">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_ql5PkPOLEeanyK3wteWQ3w" name="fTwo">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_ql5PkfOLEeanyK3wteWQ3w" name="setGravity">
          <ownedComment xmi:id="_q5HGhfOLEeanyK3wteWQ3w">
            <body>Sets the gravity</body>
          </ownedComment>
          <ownedParameter xmi:id="_ql5PkvOLEeanyK3wteWQ3w" name="g">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_ql6dsPOLEeanyK3wteWQ3w" name="runMode">
          <ownedComment xmi:id="_q5HGh_OLEeanyK3wteWQ3w">
            <body>Calls methods when switched to run mode</body>
          </ownedComment>
        </ownedOperation>
        <ownedOperation xmi:id="_ql6dsfOLEeanyK3wteWQ3w" name="moveBalls">
          <ownedComment xmi:id="_q5HGiPOLEeanyK3wteWQ3w">
            <body>Moves balls based on their direction and collisions</body>
          </ownedComment>
        </ownedOperation>
        <ownedOperation xmi:id="_ql6dsvOLEeanyK3wteWQ3w" name="resume">
          <ownedComment xmi:id="_q5HGifOLEeanyK3wteWQ3w">
            <body>Resumes all balls from paused state</body>
          </ownedComment>
        </ownedOperation>
        <ownedOperation xmi:id="_ql858POLEeanyK3wteWQ3w" name="pause">
          <ownedComment xmi:id="_q5HtkPOLEeanyK3wteWQ3w">
            <body>Puts all balls into paused state</body>
          </ownedComment>
        </ownedOperation>
        <ownedOperation xmi:id="_qwfWAPOLEeanyK3wteWQ3w" name="addGizmo">
          <ownedComment xmi:id="_q5GfcPOLEeanyK3wteWQ3w">
            <body>checks if there is room for that gizmo.
	 * then adds it to the board.</body>
          </ownedComment>
          <ownedParameter xmi:id="_qwfWAfOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qwfWAvOLEeanyK3wteWQ3w" name="key">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qwf9EPOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qwgkIPOLEeanyK3wteWQ3w" name="addBall">
          <ownedComment xmi:id="_q5GfcfOLEeanyK3wteWQ3w">
            <body>adds one ball to board</body>
          </ownedComment>
          <ownedParameter xmi:id="_qwgkIfOLEeanyK3wteWQ3w" name="ball" type="_qkux8POLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qwgkIvOLEeanyK3wteWQ3w" name="rotateGizmo">
          <ownedComment xmi:id="_q5Gfc_OLEeanyK3wteWQ3w">
            <body>Rotates the given Gizmo by rotating its line segments
	 * and corners in the model</body>
          </ownedComment>
          <ownedParameter xmi:id="_qwgkI_OLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qwhLMPOLEeanyK3wteWQ3w" name="connectGizmo">
          <ownedComment xmi:id="_q5GfdPOLEeanyK3wteWQ3w">
            <body>Connects gizmos to trigger on another</body>
          </ownedComment>
          <ownedParameter xmi:id="_qwhLMfOLEeanyK3wteWQ3w" name="gizmo1" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qwhLMvOLEeanyK3wteWQ3w" name="gizmo2" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qwhLM_OLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qwhyQPOLEeanyK3wteWQ3w" name="disconnectGizmo">
          <ownedComment xmi:id="_q5GfdfOLEeanyK3wteWQ3w">
            <body>Disconnects connected gizmos</body>
          </ownedComment>
          <ownedParameter xmi:id="_qwhyQfOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qwhyQvOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qwhyQ_OLEeanyK3wteWQ3w" name="keyConnectGizmo">
          <ownedComment xmi:id="_q5HGgPOLEeanyK3wteWQ3w">
            <body>Connects key actions to given gizmo</body>
          </ownedComment>
          <ownedParameter xmi:id="_qwiZUPOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qwiZUfOLEeanyK3wteWQ3w" name="key">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qwiZUvOLEeanyK3wteWQ3w" name="removeKey">
          <ownedComment xmi:id="_q5HGgfOLEeanyK3wteWQ3w">
            <body>Disconnects key actions bound to the given gizmo</body>
          </ownedComment>
          <ownedParameter xmi:id="_qwiZU_OLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qwjAYPOLEeanyK3wteWQ3w" name="moveGizmo">
          <ownedComment xmi:id="_q5HGhvOLEeanyK3wteWQ3w">
            <body>Moves gizmo</body>
          </ownedComment>
          <ownedParameter xmi:id="_qwjAYfOLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qwjAYvOLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qwjAY_OLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qwjncPOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_q0SQ4POLEeanyK3wteWQ3w" name="save">
          <ownedComment xmi:id="_q5HtkfOLEeanyK3wteWQ3w">
            <body>Saves current game state</body>
          </ownedComment>
          <ownedParameter xmi:id="_q0SQ4fOLEeanyK3wteWQ3w" name="f" type="_qvbmEfOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_q0S38POLEeanyK3wteWQ3w" name="load">
          <ownedComment xmi:id="_q5HtkvOLEeanyK3wteWQ3w">
            <body>Load in Game
	 * @param f 
	 * @return</body>
          </ownedComment>
          <ownedParameter xmi:id="_q0S38fOLEeanyK3wteWQ3w" name="f" type="_qvbmEfOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q0S38vOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qmBycPOLEeanyK3wteWQ3w" name="LeftFlipperGizmo">
        <generalization xmi:id="_qwmDsPOLEeanyK3wteWQ3w" general="_qlCT8POLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q19E0POLEeanyK3wteWQ3w" name="angularVel" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4SnIPOLEeanyK3wteWQ3w" name="LeftFlipperGizmo" specification="_qmDAkPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4SnIfOLEeanyK3wteWQ3w" name="x1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4SnIvOLEeanyK3wteWQ3w" name="y1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4SnI_OLEeanyK3wteWQ3w" type="_qmBycPOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>super(x1, y1);
		size = 2; //flipper has predefined size of 2
		coef = 0.95;
		angularVel = 1080;
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qmDAkPOLEeanyK3wteWQ3w" name="LeftFlipperGizmo" method="_q4SnIPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qmDAk_OLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qmDAlPOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_qmDAkfOLEeanyK3wteWQ3w" name="x1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qmDAkvOLEeanyK3wteWQ3w" name="y1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qmDAlfOLEeanyK3wteWQ3w" type="_qmBycPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qmFc0fOLEeanyK3wteWQ3w" name="RightFlipperGizmo">
        <generalization xmi:id="_qwmqwPOLEeanyK3wteWQ3w" general="_qlCT8POLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q19r4POLEeanyK3wteWQ3w" name="angularVel" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4T1QPOLEeanyK3wteWQ3w" name="RightFlipperGizmo" specification="_qmGq8POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4T1QfOLEeanyK3wteWQ3w" name="x1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4T1QvOLEeanyK3wteWQ3w" name="y1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4T1Q_OLEeanyK3wteWQ3w" type="_qmFc0fOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>super(x1, y1);
		size = 2; //flipper has predefined size of 2
		coef = 0.95;
		angularVel = -1080;
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qmGq8POLEeanyK3wteWQ3w" name="RightFlipperGizmo" method="_q4T1QPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qmHSAPOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qmHSAfOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_qmGq8fOLEeanyK3wteWQ3w" name="x1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qmGq8vOLEeanyK3wteWQ3w" name="y1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qmHSAvOLEeanyK3wteWQ3w" type="_qmFc0fOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qmH5EPOLEeanyK3wteWQ3w" name="SquareGizmo">
        <generalization xmi:id="_qwn44POLEeanyK3wteWQ3w" general="_qlCT8POLEeanyK3wteWQ3w"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4T1RPOLEeanyK3wteWQ3w" name="SquareGizmo" specification="_qmIgIPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4T1RfOLEeanyK3wteWQ3w" name="x1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4T1RvOLEeanyK3wteWQ3w" name="y1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4T1R_OLEeanyK3wteWQ3w" type="_qmH5EPOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>super(x1, y1);
		size = 1; //sqaure has predefined size of 1
		coef = 1.0;
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qmIgIPOLEeanyK3wteWQ3w" name="SquareGizmo" method="_q4T1RPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qmJHMvOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qmJHM_OLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_qmJHMPOLEeanyK3wteWQ3w" name="x1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qmJHMfOLEeanyK3wteWQ3w" name="y1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qmJHNPOLEeanyK3wteWQ3w" type="_qmH5EPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qmKVUPOLEeanyK3wteWQ3w" name="TriangleGizmo">
        <generalization xmi:id="_qwn44fOLEeanyK3wteWQ3w" general="_qlCT8POLEeanyK3wteWQ3w"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4UcUPOLEeanyK3wteWQ3w" name="TriangleGizmo" specification="_qmK8YPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4UcUfOLEeanyK3wteWQ3w" name="x1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4UcUvOLEeanyK3wteWQ3w" name="y1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4UcU_OLEeanyK3wteWQ3w" type="_qmKVUPOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>super(x1, y1);
		coef = 1.0;
		size = 1; //triangle has predefined size of 1
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qmK8YPOLEeanyK3wteWQ3w" name="TriangleGizmo" method="_q4UcUPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qmK8Y_OLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qmK8ZPOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_qmK8YfOLEeanyK3wteWQ3w" name="x1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qmK8YvOLEeanyK3wteWQ3w" name="y1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qmK8ZfOLEeanyK3wteWQ3w" type="_qmKVUPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qncuwPOLEeanyK3wteWQ3w" name="Model">
        <generalization xmi:id="_q1Ds8POLEeanyK3wteWQ3w" general="_qxCIkfOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q3R6gPOLEeanyK3wteWQ3w" name="gizmos" visibility="public" type="_qlm7sPOLEeanyK3wteWQ3w" isReadOnly="true" association="_q6fmkfOLEeanyK3wteWQ3w">
          <qualifier xmi:id="_q3ShkfOLEeanyK3wteWQ3w">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </qualifier>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3TIoPOLEeanyK3wteWQ3w" name="balls" visibility="private" type="_qkux8POLEeanyK3wteWQ3w" isOrdered="true" association="_q6g0sfOLEeanyK3wteWQ3w">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q3TIofOLEeanyK3wteWQ3w" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3TvsfOLEeanyK3wteWQ3w" name="lines" visibility="private" type="_q08YMPOLEeanyK3wteWQ3w" isOrdered="true" association="_q6hbwfOLEeanyK3wteWQ3w">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q3TvsvOLEeanyK3wteWQ3w" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3UWwfOLEeanyK3wteWQ3w" name="circles" visibility="private" type="_qwQsgPOLEeanyK3wteWQ3w" isOrdered="true" association="_q6ip4fOLEeanyK3wteWQ3w">
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q3U90POLEeanyK3wteWQ3w" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3Vk4POLEeanyK3wteWQ3w" name="gravity" visibility="private">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_q3Vk4fOLEeanyK3wteWQ3w" value="25"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3WL8fOLEeanyK3wteWQ3w" name="frictionMU" visibility="private">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_q3WL8vOLEeanyK3wteWQ3w" value="0.025"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3WzAfOLEeanyK3wteWQ3w" name="frictionMUTwo" visibility="private">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_q3XaEPOLEeanyK3wteWQ3w" value="0.025"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3YBIPOLEeanyK3wteWQ3w" name="time" visibility="private">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_q3YBIfOLEeanyK3wteWQ3w" value="0.05"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3YoMfOLEeanyK3wteWQ3w" name="linesToAbsorber" visibility="private" type="_qlm7sPOLEeanyK3wteWQ3w" association="_q6jQ8fOLEeanyK3wteWQ3w">
          <qualifier xmi:id="_q3bEcPOLEeanyK3wteWQ3w" type="_q08YMPOLEeanyK3wteWQ3w"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3bEcfOLEeanyK3wteWQ3w" name="circlesToAbsorber" visibility="private" type="_qlm7sPOLEeanyK3wteWQ3w" association="_q6kfEfOLEeanyK3wteWQ3w">
          <qualifier xmi:id="_q3c5ofOLEeanyK3wteWQ3w" type="_qwQsgPOLEeanyK3wteWQ3w"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3dgsPOLEeanyK3wteWQ3w" name="circlesToGizmos" visibility="private" type="_qlm7sPOLEeanyK3wteWQ3w" association="_q6lGIfOLEeanyK3wteWQ3w">
          <qualifier xmi:id="_q3eu0POLEeanyK3wteWQ3w" type="_qwQsgPOLEeanyK3wteWQ3w"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3eu0fOLEeanyK3wteWQ3w" name="linesToGizmos" visibility="private" type="_qlm7sPOLEeanyK3wteWQ3w" association="_q6mUQPOLEeanyK3wteWQ3w">
          <qualifier xmi:id="_q3f88POLEeanyK3wteWQ3w" type="_q08YMPOLEeanyK3wteWQ3w"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3gkAPOLEeanyK3wteWQ3w" name="flippersToLines" visibility="private" type="_qwTIwfOLEeanyK3wteWQ3w" association="_q6m7UfOLEeanyK3wteWQ3w">
          <qualifier xmi:id="_q3iZMPOLEeanyK3wteWQ3w" type="_qlm7sPOLEeanyK3wteWQ3w"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3jAQPOLEeanyK3wteWQ3w" name="flippersToCircles" visibility="private" type="_qwTIwfOLEeanyK3wteWQ3w" association="_q6oJcPOLEeanyK3wteWQ3w">
          <qualifier xmi:id="_q3k1cPOLEeanyK3wteWQ3w" type="_qlm7sPOLEeanyK3wteWQ3w"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3k1cfOLEeanyK3wteWQ3w" name="modelSize" visibility="private">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q5MmEPOLEeanyK3wteWQ3w" name="boardScale" visibility="private">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q5NNIfOLEeanyK3wteWQ3w" name="boardSize" visibility="private">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <interfaceRealization xmi:id="_qx6SUPOLEeanyK3wteWQ3w" client="_qncuwPOLEeanyK3wteWQ3w" supplier="_qlwFoPOLEeanyK3wteWQ3w" contract="_qlwFoPOLEeanyK3wteWQ3w"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4mJIPOLEeanyK3wteWQ3w" name="Model" specification="_qnfyEPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4mJIfOLEeanyK3wteWQ3w" type="_qncuwPOLEeanyK3wteWQ3w" direction="return">
            <name xsi:nil="true"/>
          </ownedParameter>
          <language>java</language>
          <body>modelSize = 2000; // this is 20x20*L; L=100
		boardSize = 20;
		boardScale = modelSize / boardSize; // = 100

		gizmos = new HashMap&lt;String, IGizmo>();
		balls = new ArrayList&lt;Ball>();
		lines = new ArrayList&lt;LineSegment>();
		circles = new ArrayList&lt;Circle>();

		linesToAbsorber = new HashMap&lt;LineSegment, IGizmo>();
		circlesToAbsorber = new HashMap&lt;Circle, IGizmo>();
		linesToGizmos = new HashMap&lt;LineSegment, IGizmo>();
		circlesToGizmos = new HashMap&lt;Circle, IGizmo>();
		flippersToLines = new HashMap&lt;IGizmo, List&lt;LineSegment>>();
		flippersToCircles = new HashMap&lt;IGizmo, List&lt;Circle>>();
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4mJIvOLEeanyK3wteWQ3w" name="runMode" specification="_qnfyFPOLEeanyK3wteWQ3w">
          <language>java</language>
          <body>lines.clear();
		circles.clear();
		linesToGizmos.clear();
		circlesToGizmos.clear();
		flippersToLines.clear();
		flippersToCircles.clear();

		makeWalls(modelSize);

		for (String key : gizmos.keySet()) {
			IGizmo gizmo = gizmos.get(key);
			// add method to draw gizmo
			if (gizmo instanceof SquareGizmo)
				makeSquareGizmo(gizmo.copy());

			else if (gizmo instanceof TriangleGizmo)
				makeTriangleGizmo(gizmo.copy());

			else if (gizmo instanceof RightFlipperGizmo)
				makeRightFlipper(gizmo.copy());

			else if (gizmo instanceof LeftFlipperGizmo)
				makeLeftFlipper(gizmo.copy());

			else if (gizmo instanceof CircleGizmo)
				makeCircleGizmo(gizmo.copy());

			else if (gizmo instanceof AbsorberGizmo)
				makeAbsorberGizmo(gizmo.copy());
		}
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4mJI_OLEeanyK3wteWQ3w" name="makeAbsorberGizmo" specification="_qx8HgPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4mJJPOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>// get x and y coordinates of starting and ending points of the gizmo
		int x1 = gizmo.getStartX() * boardScale;
		int x2 = gizmo.getEndX() * boardScale;
		int y1 = gizmo.getStartY() * boardScale;
		int y2 = gizmo.getEndY() * boardScale;

		// create lines and corners
		LineSegment left = new LineSegment(x1, y1, x1, y2);
		LineSegment bottom = new LineSegment(x1, y2, x2, y2);
		LineSegment right = new LineSegment(x2, y2, x2, y1);
		LineSegment top = new LineSegment(x2, y1, x1, y1);
		Circle topLeft = new Circle(x1, y1, 0);
		Circle bottomLeft = new Circle(x1, y2, 0);
		Circle topRight = new Circle(x2, y1, 0);
		Circle bottomRight = new Circle(x2, y2, 0);

		// create connections for the lines -> absorber
		linesToAbsorber.put(left, gizmo);
		linesToAbsorber.put(bottom, gizmo);
		linesToAbsorber.put(right, gizmo);
		linesToAbsorber.put(top, gizmo);
		// create connections for the circles -> absorber
		circlesToAbsorber.put(topLeft, gizmo);
		circlesToAbsorber.put(bottomLeft, gizmo);
		circlesToAbsorber.put(topRight, gizmo);
		circlesToAbsorber.put(bottomRight, gizmo);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4mwMPOLEeanyK3wteWQ3w" name="makeLeftFlipper" specification="_qx8ukfOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4mwMfOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>int x1 = gizmo.getStartX() * boardScale;
		int x2 = gizmo.getEndX() * boardScale;
		int y1 = gizmo.getStartY() * boardScale;
		int y2 = gizmo.getEndY() * boardScale;
		double radius = 0.25;

		// drawing circles .25 radius
		Circle topCircle = new Circle(x1 + (radius * boardScale), y1 + (radius * boardScale), radius);
		Circle botCircle = new Circle(x1 + (radius * boardScale), y2 - (radius * boardScale), radius);
		List&lt;Circle> tempCirc = new ArrayList&lt;Circle>();
		tempCirc.add(topCircle);
		tempCirc.add(botCircle);
		circles.addAll(tempCirc);

		// drawing lines
		LineSegment right = new LineSegment(x1 + (2 * radius * boardScale), y1 + (radius * boardScale),
				x1 + (2 * radius * boardScale), y2 - (radius * boardScale));
		LineSegment left = new LineSegment(x1, y1 + (radius * boardScale), x1, y2 - (radius * boardScale));
		List&lt;LineSegment> tempLines = new ArrayList&lt;LineSegment>();
		tempLines.add(right);
		tempLines.add(left);
		lines.addAll(tempLines);

		// connect lines/corners to flipper gizmo
		linesToGizmos.put(right, gizmo);
		linesToGizmos.put(left, gizmo);
		circlesToGizmos.put(topCircle, gizmo);
		circlesToGizmos.put(botCircle, gizmo);

		// connect flipper to lines and circle (used for rotation)
		flippersToLines.put(gizmo, tempLines);
		flippersToCircles.put(gizmo, tempCirc);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4mwMvOLEeanyK3wteWQ3w" name="makeRightFlipper" specification="_qx9VoPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4mwM_OLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>int x1 = gizmo.getStartX() * boardScale;
		int x2 = gizmo.getEndX() * boardScale;
		int y1 = gizmo.getStartY() * boardScale;
		int y2 = gizmo.getEndY() * boardScale;
		double radius = 0.25;

		// drawing circles .25 radius
		Circle topCircle = new Circle(x2 - (radius * boardScale), y1 + (radius * boardScale), radius);
		Circle botCircle = new Circle(x2 - (radius * boardScale), y2 - (radius * boardScale), radius);
		List&lt;Circle> tempCirc = new ArrayList&lt;Circle>();
		tempCirc.add(topCircle);
		tempCirc.add(botCircle);
		circles.addAll(tempCirc);

		// drawing lines
		LineSegment right = new LineSegment(x2, y1 + (radius * boardScale), x2, y2 - (radius * boardScale));
		LineSegment left = new LineSegment(x2 - (2 * radius * boardScale), y1 + (radius * boardScale),
				x2 - (2 * radius * boardScale), y2 - (radius * boardScale));
		List&lt;LineSegment> tempLines = new ArrayList&lt;LineSegment>();
		tempLines.add(right);
		tempLines.add(left);
		lines.addAll(tempLines);

		// connect lines/corners to flipper gizmo
		linesToGizmos.put(right, gizmo);
		linesToGizmos.put(left, gizmo);
		circlesToGizmos.put(topCircle, gizmo);
		circlesToGizmos.put(botCircle, gizmo);

		// connect flipper to lines and circle (used for rotation)
		flippersToLines.put(gizmo, tempLines);
		flippersToCircles.put(gizmo, tempCirc);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4mwNPOLEeanyK3wteWQ3w" name="makeCircleGizmo" specification="_qx98sPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4mwNfOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>int x1 = gizmo.getStartX() * boardScale;
		int x2 = gizmo.getEndX() * boardScale;
		int y1 = gizmo.getStartY() * boardScale;
		int y2 = gizmo.getEndY() * boardScale;

		double radius = gizmo.getSize() / 2;
		// get midpoints
		Circle circle = new Circle((x1 + x2) / 2, (y1 + y2) / 2, radius);
		circlesToGizmos.put(circle, gizmo);
		circles.add(circle);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4mwNvOLEeanyK3wteWQ3w" name="makeTriangleGizmo" specification="_qx-jwPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4mwN_OLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>// the right angled corner should be in the top-left position by default
		// THIS IS A MUST!!!! DO NOT CHANGE
		int x1 = gizmo.getStartX() * boardScale;
		int x2 = gizmo.getEndX() * boardScale;
		int y1 = gizmo.getStartY() * boardScale;
		int y2 = gizmo.getEndY() * boardScale;
		int direction = gizmo.getRotation();

		// keeps track of the triangle rotation for edge and corner placement
		switch (direction) {
		case 0: // right-angle is top-left (this is by default)
			LineSegment line1 = new LineSegment(x1, y1, x1, y2); // left edge
			LineSegment line2 = new LineSegment(x1, y2, x2, y1); // hypotenuse
																	// edge
			LineSegment line3 = new LineSegment(x2, y1, x1, y1); // top edge
			Circle circle1 = new Circle(x1, y1, 0);
			Circle circle2 = new Circle(x2, y1, 0);
			Circle circle3 = new Circle(x1, y2, 0);
			// add lines to line list
			lines.add(line1);
			lines.add(line2);
			lines.add(line3);
			// add lines to hashmap
			linesToGizmos.put(line1, gizmo);
			linesToGizmos.put(line2, gizmo);
			linesToGizmos.put(line3, gizmo);
			// add circles to circle list
			circles.add(circle1);
			circles.add(circle2);
			circles.add(circle3);
			// add circles to hashmap
			circlesToGizmos.put(circle1, gizmo);
			circlesToGizmos.put(circle2, gizmo);
			circlesToGizmos.put(circle3, gizmo);
			break;
		case 90: // right-angle is top right
			LineSegment line4 = new LineSegment(x2, y1, x1, y1); // top edge
			LineSegment line5 = new LineSegment(x1, y1, x2, y2); // hypotenuse
																	// edge
			LineSegment line6 = new LineSegment(x2, y2, x2, y1); // right edge
			Circle circle4 = new Circle(x1, y1, 0);
			Circle circle5 = new Circle(x2, y1, 0);
			Circle circle6 = new Circle(x2, y2, 0);
			// add lines to line list
			lines.add(line4);
			lines.add(line5);
			lines.add(line6);
			// add lines to hashmap
			linesToGizmos.put(line4, gizmo);
			linesToGizmos.put(line5, gizmo);
			linesToGizmos.put(line6, gizmo);
			// add circles to circle list
			circles.add(circle4);
			circles.add(circle5);
			circles.add(circle6);
			// add circles to hashmap
			circlesToGizmos.put(circle4, gizmo);
			circlesToGizmos.put(circle5, gizmo);
			circlesToGizmos.put(circle6, gizmo);
			break;
		case 180: // right-angle is bottom right
			LineSegment line7 = new LineSegment(x2, y2, x1, y2); // bottom edge
			LineSegment line8 = new LineSegment(x1, y2, x2, y1); // hypotenuse
																	// edge
			LineSegment line9 = new LineSegment(x2, y1, x2, y2); // right edge
			Circle circle7 = new Circle(x2, y2, 0);
			Circle circle8 = new Circle(x2, y1, 0);
			Circle circle9 = new Circle(x1, y2, 0);
			// add lines to line list
			lines.add(line7);
			lines.add(line8);
			lines.add(line9);
			// add lines to hashmap
			linesToGizmos.put(line7, gizmo);
			linesToGizmos.put(line8, gizmo);
			linesToGizmos.put(line9, gizmo);
			// add circles to circle list
			circles.add(circle7);
			circles.add(circle8);
			circles.add(circle9);
			// add circles to hashmap
			circlesToGizmos.put(circle7, gizmo);
			circlesToGizmos.put(circle8, gizmo);
			circlesToGizmos.put(circle9, gizmo);
			break;
		case 270: // right-angle is bottom left
			LineSegment line10 = new LineSegment(x1, y2, x2, y2); // bottom edge
			LineSegment line11 = new LineSegment(x1, y1, x2, y2); // hypotenuse
																	// edge
			LineSegment line12 = new LineSegment(x1, y1, x1, y2); // left edge
			Circle circle10 = new Circle(x1, y1, 0);
			Circle circle11 = new Circle(x1, y2, 0);
			Circle circle12 = new Circle(x2, y2, 0);
			// add lines to line list
			lines.add(line10);
			lines.add(line11);
			lines.add(line12);
			// add lines to hashmap
			linesToGizmos.put(line10, gizmo);
			linesToGizmos.put(line11, gizmo);
			linesToGizmos.put(line12, gizmo);
			// add circles to circle list
			circles.add(circle10);
			circles.add(circle11);
			circles.add(circle12);
			// add circles to hashmap
			circlesToGizmos.put(circle10, gizmo);
			circlesToGizmos.put(circle11, gizmo);
			circlesToGizmos.put(circle12, gizmo);
			break;
		}
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4nXQPOLEeanyK3wteWQ3w" name="makeSquareGizmo" specification="_qx-jwvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4nXQfOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>// get x and y coordinates of starting and ending points of the gizmo
		int x1 = gizmo.getStartX() * boardScale;
		int x2 = gizmo.getEndX() * boardScale;
		int y1 = gizmo.getStartY() * boardScale;
		int y2 = gizmo.getEndY() * boardScale;

		// create lines and corners
		LineSegment left = new LineSegment(x1, y1, x1, y2);
		LineSegment bottom = new LineSegment(x1, y2, x2, y2);
		LineSegment right = new LineSegment(x2, y2, x2, y1);
		LineSegment top = new LineSegment(x2, y1, x1, y1);
		Circle topLeft = new Circle(x1, y1, 0);
		Circle bottomLeft = new Circle(x1, y2, 0);
		Circle topRight = new Circle(x2, y1, 0);
		Circle bottomRight = new Circle(x2, y2, 0);

		// create connections for the lines -> gizmo
		linesToGizmos.put(left, gizmo);
		linesToGizmos.put(bottom, gizmo);
		linesToGizmos.put(right, gizmo);
		linesToGizmos.put(top, gizmo);
		// create connections for the circles -> gizmo
		circlesToGizmos.put(topLeft, gizmo);
		circlesToGizmos.put(bottomLeft, gizmo);
		circlesToGizmos.put(topRight, gizmo);
		circlesToGizmos.put(bottomRight, gizmo);
		// add lines to list of alllines
		lines.add(left);
		lines.add(bottom);
		lines.add(right);
		lines.add(top);
		// adds little circles to ensure that corners have collision
		circles.add(topLeft);
		circles.add(bottomLeft);
		circles.add(topRight);
		circles.add(bottomRight);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4nXQvOLEeanyK3wteWQ3w" name="makeWalls" specification="_qnhnQPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4nXQ_OLEeanyK3wteWQ3w" name="boardSize">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <language>java</language>
          <body>LineSegment topWall = new LineSegment(0, 0, boardSize, 0);
		LineSegment rightWall = new LineSegment(boardSize, 0, boardSize, boardSize);
		LineSegment bottomWall = new LineSegment(0, boardSize, boardSize, boardSize);
		LineSegment leftWall = new LineSegment(0, 0, 0, boardSize);
		lines.add(topWall);
		lines.add(rightWall);
		lines.add(bottomWall);
		lines.add(leftWall);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4nXRPOLEeanyK3wteWQ3w" name="timeUntilCollision" specification="_qniOUPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4nXRfOLEeanyK3wteWQ3w" type="_qnnG0fOLEeanyK3wteWQ3w" direction="return">
            <name xsi:nil="true"/>
          </ownedParameter>
          <language>java</language>
          <body>double lowestColTime = Double.MAX_VALUE;
		Ball collidingBall = null;
		Vect updatedVel = new Vect(0, 0);
		AbsorberGizmo absorber = null;

		for (Ball ball : balls) {
			Circle circ = ball.getCircle();
			Vect vel = ball.getVelocity();
			double nextTime = 0;
			for (LineSegment line : lines) {
				nextTime = Geometry.timeUntilWallCollision(line, circ, vel);
				if (nextTime &lt; lowestColTime) {
					lowestColTime = nextTime;
					collidingBall = ball;
					updatedVel = Geometry.reflectWall(line, vel, linesToGizmos.get(line).getCof());
					absorber = null;
				}
			}
			for (Circle circle : circles) {
				nextTime = Geometry.timeUntilCircleCollision(circle, circ, vel);
				if (nextTime &lt; lowestColTime) {
					lowestColTime = nextTime;
					collidingBall = ball;
					updatedVel = Geometry.reflectCircle(circle.getCenter(), ball.getCenter(), vel,
							circlesToGizmos.get(circle).getCof());
					absorber = null;
				}
			}
			for (LineSegment line : linesToAbsorber.keySet()) {
				nextTime = Geometry.timeUntilWallCollision(line, circ, vel);
				if (nextTime &lt; lowestColTime) {
					lowestColTime = nextTime;
					collidingBall = ball;
					absorber = (AbsorberGizmo) linesToAbsorber.get(line);
					updatedVel = absorber.getExitVeloicty();
				}
			}
			for (Circle circle : circlesToAbsorber.keySet()) {
				nextTime = Geometry.timeUntilCircleCollision(circle, circ, vel);
				if (nextTime &lt; lowestColTime) {
					lowestColTime = nextTime;
					collidingBall = ball;
					absorber = (AbsorberGizmo) circlesToAbsorber.get(circle);
					updatedVel = absorber.getExitVeloicty();
				}
			}

		}
		return (new CollisionInfo(lowestColTime, collidingBall, updatedVel, absorber));

	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4n-UPOLEeanyK3wteWQ3w" name="moveBalls" specification="_qniOUfOLEeanyK3wteWQ3w">
          <language>java</language>
          <body>CollisionInfo colInfo = timeUntilCollision();
		double colTime = colInfo.getColTime();
		Ball colBall = colInfo.getCollidingBall();
		if (colTime > time) {
			balls.remove(colBall);
			if (colInfo.getAbs() != null) {
				AbsorberGizmo absorber = colInfo.getAbs();
				colBall.setX(absorber.getEndX());
				colBall.setY(absorber.getStartY());
				colBall.setVelocity(colInfo.getUpdatedVel());
			} else {
				colBall = calculateBallMove(colBall, colTime);
				colBall.setVelocity(colInfo.getUpdatedVel());
				applyFriction(colBall, colTime);
				applyGravity(colBall, colTime);
			}
			for (Ball ball : balls) {
				ball = calculateBallMove(ball, colTime);
				applyFriction(ball, colTime);
				applyGravity(ball, colTime);
			}
			balls.add(colBall);
		} else {
			for (Ball ball : balls) {
				ball = calculateBallMove(ball, time);
				applyFriction(ball, time);
				applyGravity(ball, time);
			}
		}

		this.setChanged();
		this.notifyObservers(); // update board both in gui and model
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4n-UfOLEeanyK3wteWQ3w" name="calculateBallMove" specification="_qx_x4POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4n-UvOLEeanyK3wteWQ3w" name="ball" type="_qkux8POLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4n-U_OLEeanyK3wteWQ3w" name="newTime">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4n-VPOLEeanyK3wteWQ3w" type="_qkux8POLEeanyK3wteWQ3w" direction="return">
            <name xsi:nil="true"/>
          </ownedParameter>
          <language>java</language>
          <body>double vectX = ball.getVelocity().x();
		double vectY = ball.getVelocity().y();
		double x = ball.getX() + (vectX * newTime);
		double y = ball.getY() + (vectY * newTime);
		ball.setX(x);
		ball.setY(y);

		return ball;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4n-VfOLEeanyK3wteWQ3w" name="resume" specification="_qnkDgPOLEeanyK3wteWQ3w">
          <language>java</language>
          <body>for (Ball ball : balls)
			ball.setPaused(false);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4n-VvOLEeanyK3wteWQ3w" name="pause" specification="_qnkqkvOLEeanyK3wteWQ3w">
          <language>java</language>
          <body>for (Ball ball : balls)
			ball.setPaused(true);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4pzgPOLEeanyK3wteWQ3w" name="validatePosition" specification="_qnrYQPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4pzgfOLEeanyK3wteWQ3w" name="sx">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4pzgvOLEeanyK3wteWQ3w" name="sy">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4pzg_OLEeanyK3wteWQ3w" name="ex">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4pzhPOLEeanyK3wteWQ3w" name="ey">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4pzhfOLEeanyK3wteWQ3w" direction="return">
            <name xsi:nil="true"/>
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
          <language>java</language>
          <body>// check if gizmo is somehow placed outside of board (shouldnt happen)
		if (sx &lt; 0 || ex > boardSize || sy &lt; 0 || ey > boardSize)
			return false;

		// check if given coordinates overlaps with any other gizmo position
		for (String key : gizmos.keySet()) {
			IGizmo gizmo = gizmos.get(key);
			if (sx &lt; gizmo.getEndX() &amp;&amp; ex > gizmo.getStartX() &amp;&amp; sy &lt; gizmo.getEndY() &amp;&amp; ey > gizmo.getEndY())
				return false;
		}
		return true;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4pzhvOLEeanyK3wteWQ3w" name="addGizmo" specification="_qnsmYPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4pzh_OLEeanyK3wteWQ3w" name="gizmo">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4pziPOLEeanyK3wteWQ3w" name="key">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4pzifOLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4pzivOLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4pzi_OLEeanyK3wteWQ3w" direction="return">
            <name xsi:nil="true"/>
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
          <language>java</language>
          <body>switch (gizmo.toLowerCase()) {
		case &quot;triangle&quot;:
			return addGizmo(new TriangleGizmo(x, y), key);
		case &quot;circle&quot;:
			return addGizmo(new CircleGizmo(x, y), key);
		case &quot;square&quot;:
			return addGizmo(new SquareGizmo(x, y), key);
		case &quot;rightflipper&quot;:
			return addGizmo(new RightFlipperGizmo(x, y), key);
		case &quot;leftflipper&quot;:
			return addGizmo(new LeftFlipperGizmo(x, y), key);
		}
		return false;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4qakPOLEeanyK3wteWQ3w" name="addGizmo" specification="_qyCOIPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4qakfOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4qakvOLEeanyK3wteWQ3w" name="key">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4qak_OLEeanyK3wteWQ3w" direction="return">
            <name xsi:nil="true"/>
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
          <language>java</language>
          <body>if (!validatePosition(gizmo.getStartX(), gizmo.getStartY(), gizmo.getEndX(), gizmo.getEndY()))
			return false;

		// TODO CHECK FOR ABSORBER OVERLAPPING AS WELL

		// add gizmo to gizmo list
		gizmos.put(key, gizmo);

		this.setChanged();
		this.notifyObservers(); // call the observer to redraw the added gizmo

		return true;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4qalPOLEeanyK3wteWQ3w" name="addBall" specification="_qyEDUPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4qalfOLEeanyK3wteWQ3w" name="ball" type="_qkux8POLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>this.setChanged();
		this.notifyObservers();
		balls.add(ball);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4qalvOLEeanyK3wteWQ3w" name="addBall" specification="_qnvCoPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4qal_OLEeanyK3wteWQ3w" name="key">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4qamPOLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4qamfOLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4qamvOLEeanyK3wteWQ3w" name="velx">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4qam_OLEeanyK3wteWQ3w" name="vely">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4qanPOLEeanyK3wteWQ3w" direction="return">
            <name xsi:nil="true"/>
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
          <language>java</language>
          <body>Ball ball = new Ball(x, y, velx, vely);

		double r = ball.getRadius();

		if (!validatePosition(x - r, y - r, x + r, y + r))
			return false;

		balls.add(ball);
		this.setChanged();
		this.notifyObservers();
		return true;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4rBoPOLEeanyK3wteWQ3w" name="addAbsorber" specification="_qnwQwPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4rBofOLEeanyK3wteWQ3w" name="key">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4rBovOLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4rBo_OLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4rBpPOLEeanyK3wteWQ3w" name="ex">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4rBpfOLEeanyK3wteWQ3w" name="ey">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4rBpvOLEeanyK3wteWQ3w" direction="return">
            <name xsi:nil="true"/>
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
          <language>java</language>
          <body>if (!validatePosition(x, y, ex, ey))
			return false;

		// add to list of gizmos
		gizmos.put(key, new AbsorberGizmo(x, y, ex, ey));

		// draw absorber

		this.setChanged();
		this.notifyObservers();
		return true;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4rBp_OLEeanyK3wteWQ3w" name="rotateGizmo" specification="_qyEqYPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4rBqPOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>gizmo.rotate();
		this.setChanged();
		this.notifyObservers();
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4rosPOLEeanyK3wteWQ3w" name="connectGizmo" specification="_qyF4gPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4rosfOLEeanyK3wteWQ3w" name="gizmo1" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4rosvOLEeanyK3wteWQ3w" name="gizmo2" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4ros_OLEeanyK3wteWQ3w" direction="return">
            <name xsi:nil="true"/>
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
          <language>java</language>
          <body>if (gizmo2.getConnectedGizmo() != null) {
			gizmo1.setConnectedGizmo(gizmo2);
			gizmo2.setConnectedGizmo(null);
			gizmo2.addGizmoConnected(gizmo1);
			return true;
		}
		return false;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4rotPOLEeanyK3wteWQ3w" name="disconnectGizmo" specification="_qyKJ8POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4rotfOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4rotvOLEeanyK3wteWQ3w" direction="return">
            <name xsi:nil="true"/>
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
          <language>java</language>
          <body>boolean removed = false;
		if (gizmo.getConnectedGizmo() != null) {
			gizmo.getConnectedGizmo().removeGizmoConnected(gizmo);
			gizmo.setConnectedGizmo(null);
			removed = true;
		}
		if (gizmo.getGizmosConnected().size() > 0) {
			for (IGizmo giz : gizmo.getGizmosConnected()) {
				giz.setConnectedGizmo(null);
			}
			gizmo.clearGizmoConnected();
			removed = true;
		}
		return removed;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4sPwPOLEeanyK3wteWQ3w" name="keyConnectGizmo" specification="_qyMmMPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4sPwfOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4sPwvOLEeanyK3wteWQ3w" name="k">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <language>java</language>
          <body>gizmo.setKey(k);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4sPw_OLEeanyK3wteWQ3w" name="removeKey" specification="_qyN0UvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4sPxPOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>gizmo.setKey(&quot;&quot;);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4sPxfOLEeanyK3wteWQ3w" name="deleteGizmo" specification="_qnyF8POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4sPxvOLEeanyK3wteWQ3w" name="key">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <language>java</language>
          <body>gizmos.remove(key);
		this.setChanged();
		this.notifyObservers();
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4s20POLEeanyK3wteWQ3w" name="clear" specification="_qnz7IPOLEeanyK3wteWQ3w">
          <language>java</language>
          <body>gizmos.clear();
		balls.clear();
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4s20fOLEeanyK3wteWQ3w" name="setFriction" specification="_qn1JQPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4s20vOLEeanyK3wteWQ3w" name="f">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4s20_OLEeanyK3wteWQ3w" name="fTwo">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <language>java</language>
          <body>frictionMU = f;
		frictionMUTwo = fTwo;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4s21POLEeanyK3wteWQ3w" name="applyFriction" specification="_qyPpgvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4s21fOLEeanyK3wteWQ3w" name="ball" type="_qkux8POLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4s21vOLEeanyK3wteWQ3w" name="time">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <language>java</language>
          <body>double mu = frictionMU;
		double mu2 = frictionMUTwo;

		double xVel = ball.getVelocity().x();
		double yVel = ball.getVelocity().y();

		double newX = xVel * (1 - (mu * time) - (mu2 * xVel) * time);
		double newY = yVel * (1 - (mu * time) - (mu2 * yVel) * time);

		Vect newV = new Vect(newX, newY);
		ball.setVelocity(newV);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4td4POLEeanyK3wteWQ3w" name="setGravity" specification="_qn3lgPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4td4fOLEeanyK3wteWQ3w" name="g">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <language>java</language>
          <body>gravity = g;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4td4vOLEeanyK3wteWQ3w" name="applyGravity" specification="_qyQQkvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4td4_OLEeanyK3wteWQ3w" name="ball" type="_qkux8POLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4td5POLEeanyK3wteWQ3w" name="time">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <language>java</language>
          <body>Vect currentVel = ball.getVelocity();
		Vect velGravity = new Vect(currentVel.x(), (currentVel.y() + (gravity * time)));
		ball.setVelocity(velGravity);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4td5fOLEeanyK3wteWQ3w" name="moveGizmo" specification="_qyQ3ovOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4td5vOLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4td5_OLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4td6POLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4td6fOLEeanyK3wteWQ3w" direction="return">
            <name xsi:nil="true"/>
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
          <language>java</language>
          <body>if (validatePosition(x, y, x + gizmo.getSize(), y + gizmo.getSize())) {
			gizmo.newPosition(x, y);
			this.setChanged();
			this.notifyObservers();
			return true;
		}

		return false;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4uE8POLEeanyK3wteWQ3w" name="save" specification="_q1BQsPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4uE8fOLEeanyK3wteWQ3w" name="f" type="_qvbmEfOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>FileWriter writer;
		try {
			writer = new FileWriter(f);
			writer.close();
		} catch (IOException e) {
			System.out.println(&quot;IO Exception&quot;);
		}
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4uE8vOLEeanyK3wteWQ3w" name="load" specification="_q1Ce0POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4uE8_OLEeanyK3wteWQ3w" name="f" type="_qvbmEfOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4uE9POLEeanyK3wteWQ3w" direction="return">
            <name xsi:nil="true"/>
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
          <language>java</language>
          <body>String line;
		try {
			BufferedReader reader = new BufferedReader(new FileReader(f));
			while ((line = reader.readLine()) != null) {
				String[] splitCommand = line.toLowerCase().split(&quot; &quot;);
				switch (splitCommand[0]) {
				case &quot;circle&quot;:
				case &quot;triangle&quot;:
				case &quot;square&quot;:
				case &quot;leftflipper&quot;:
				case &quot;rightflipper&quot;:
					if (splitCommand.length != 4)
						return false;
					else if (!addGizmo(splitCommand[0], splitCommand[1], (Integer.parseInt(splitCommand[2])),
							(Integer.parseInt(splitCommand[3]))))
						return false;
					break;
				case &quot;absorber&quot;:
					if (splitCommand.length != 6)
						return false;
					else
						addAbsorber(splitCommand[1], Integer.parseInt(splitCommand[2]),
								Integer.parseInt(splitCommand[3]), Integer.parseInt(splitCommand[4]),
								Integer.parseInt(splitCommand[5]));
					break;
				case &quot;ball&quot;:
					if (splitCommand.length != 6)
						return false;
					else
						addBall(splitCommand[1], Double.parseDouble(splitCommand[2]),
								Double.parseDouble(splitCommand[3]), Double.parseDouble(splitCommand[4]),
								Double.parseDouble(splitCommand[5]));
					break;
				case &quot;rotate&quot;:
					if (splitCommand.length != 2)
						return false;
					else
						gizmos.get(splitCommand[1]).rotate();
					break;
				case &quot;delete&quot;:
					if (splitCommand.length != 2)
						return false;
					else
						deleteGizmo(splitCommand[1]);
					break;
				case &quot;move&quot;:
					if (splitCommand.length != 4)
						return false;
					else
						gizmos.get(splitCommand[1]).newPosition(Integer.parseInt(splitCommand[2]),
								Integer.parseInt(splitCommand[3]));
					break;
				case &quot;keyconnect&quot;:
					if (splitCommand.length != 5)
						return false;
					else {
						gizmos.get(splitCommand[4]);// connect
						System.out.println(splitCommand[0] + &quot; &quot; + splitCommand[1] + &quot; &quot; + splitCommand[2] + &quot; &quot;
								+ splitCommand[3] + &quot; &quot; + splitCommand[4]);
					}
					break;
				case &quot;connect&quot;:
					if (splitCommand.length != 3)
						return false;
					else
						System.out.println(splitCommand[0] + &quot; &quot; + splitCommand[1] + &quot; &quot; + splitCommand[2]);
					// gizmos.get(splitCommand[1]).addGizmoConnected(gizmos.get(splitCommand[2]));
					break;
				case &quot;friction&quot;:
					if (splitCommand.length != 3)
						return false;
					else {
						System.out.println(splitCommand[0] + &quot; &quot; + splitCommand[1] + &quot; &quot; + splitCommand[2]);
						setFriction(Double.parseDouble((splitCommand[1])), Double.parseDouble((splitCommand[2])));
					}
					break;
				case &quot;gravity&quot;:
					if (splitCommand.length != 3)
						return false;
					else {
						setGravity(Double.parseDouble((splitCommand[1])));
						System.out.println(splitCommand[0] + &quot; &quot; + splitCommand[1]);
					}
					break;
				case &quot;&quot;:
					break;
				default:
					return false;
				}
			}
			reader.close();
		} catch (FileNotFoundException e) {
			return false;
		} catch (IOException e) {
			System.out.println(&quot;IO Exception&quot;);
		}

		this.setChanged();
		this.notifyObservers();

		return true;
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qnfyEPOLEeanyK3wteWQ3w" name="Model" method="_q4mJIPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qnfyEfOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qnfyEvOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_qnfyE_OLEeanyK3wteWQ3w" type="_qncuwPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qnfyFPOLEeanyK3wteWQ3w" name="runMode" method="_q4mJIvOLEeanyK3wteWQ3w"/>
        <ownedOperation xmi:id="_qnhnQPOLEeanyK3wteWQ3w" name="makeWalls" visibility="private" method="_q4nXQvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qnhnQfOLEeanyK3wteWQ3w" name="boardSize">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qniOUPOLEeanyK3wteWQ3w" name="timeUntilCollision" visibility="private" method="_q4nXRPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qx_K0fOLEeanyK3wteWQ3w" type="_qnnG0fOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qniOUfOLEeanyK3wteWQ3w" name="moveBalls" method="_q4n-UPOLEeanyK3wteWQ3w"/>
        <ownedOperation xmi:id="_qnkDgPOLEeanyK3wteWQ3w" name="resume" method="_q4n-VfOLEeanyK3wteWQ3w"/>
        <ownedOperation xmi:id="_qnkqkvOLEeanyK3wteWQ3w" name="pause" method="_q4n-VvOLEeanyK3wteWQ3w"/>
        <ownedOperation xmi:id="_qnrYQPOLEeanyK3wteWQ3w" name="validatePosition" visibility="private" method="_q4pzgPOLEeanyK3wteWQ3w">
          <ownedComment xmi:id="_q5ObQPOLEeanyK3wteWQ3w">
            <body>
	 * 
	 * BUILDING CODE BEYOND THIS POINT
	 * 
	 *</body>
          </ownedComment>
          <ownedParameter xmi:id="_qnr_UPOLEeanyK3wteWQ3w" name="sx">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qnr_UfOLEeanyK3wteWQ3w" name="sy">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qnr_UvOLEeanyK3wteWQ3w" name="ex">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qnr_U_OLEeanyK3wteWQ3w" name="ey">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qnr_VPOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qnsmYPOLEeanyK3wteWQ3w" name="addGizmo" method="_q4pzhvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qnsmYfOLEeanyK3wteWQ3w" name="gizmo">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qntNcPOLEeanyK3wteWQ3w" name="key">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qntNcfOLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qntNcvOLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qntNc_OLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qnvCoPOLEeanyK3wteWQ3w" name="addBall" method="_q4qalvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qnvCofOLEeanyK3wteWQ3w" name="key">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qnvCovOLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qnvpsPOLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qnvpsfOLEeanyK3wteWQ3w" name="velx">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qnvpsvOLEeanyK3wteWQ3w" name="vely">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qnvps_OLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qnwQwPOLEeanyK3wteWQ3w" name="addAbsorber" method="_q4rBoPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qnwQwfOLEeanyK3wteWQ3w" name="key">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qnwQwvOLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qnwQw_OLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qnwQxPOLEeanyK3wteWQ3w" name="ex">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qnw30POLEeanyK3wteWQ3w" name="ey">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qnw30fOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qnyF8POLEeanyK3wteWQ3w" name="deleteGizmo" method="_q4sPxfOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qnyF8fOLEeanyK3wteWQ3w" name="key">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qnz7IPOLEeanyK3wteWQ3w" name="clear" method="_q4s20POLEeanyK3wteWQ3w"/>
        <ownedOperation xmi:id="_qn1JQPOLEeanyK3wteWQ3w" name="setFriction" method="_q4s20fOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qn1JQfOLEeanyK3wteWQ3w" name="f">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qn1JQvOLEeanyK3wteWQ3w" name="fTwo">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qn3lgPOLEeanyK3wteWQ3w" name="setGravity" method="_q4td4POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qn3lgfOLEeanyK3wteWQ3w" name="g">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qx8HgPOLEeanyK3wteWQ3w" name="makeAbsorberGizmo" visibility="private" method="_q4mJI_OLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qx8ukPOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qx8ukfOLEeanyK3wteWQ3w" name="makeLeftFlipper" visibility="private" method="_q4mwMPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qx8ukvOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qx9VoPOLEeanyK3wteWQ3w" name="makeRightFlipper" visibility="private" method="_q4mwMvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qx9VofOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qx98sPOLEeanyK3wteWQ3w" name="makeCircleGizmo" visibility="private" method="_q4mwNPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qx98sfOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qx-jwPOLEeanyK3wteWQ3w" name="makeTriangleGizmo" visibility="private" method="_q4mwNvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qx-jwfOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qx-jwvOLEeanyK3wteWQ3w" name="makeSquareGizmo" visibility="private" method="_q4nXQPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qx_K0POLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qx_x4POLEeanyK3wteWQ3w" name="calculateBallMove" visibility="private" method="_q4n-UfOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qx_x4fOLEeanyK3wteWQ3w" name="ball" type="_qkux8POLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qx_x4vOLEeanyK3wteWQ3w" name="newTime">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qx_x4_OLEeanyK3wteWQ3w" type="_qkux8POLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qyCOIPOLEeanyK3wteWQ3w" name="addGizmo" method="_q4qakPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qyCOIfOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qyCOIvOLEeanyK3wteWQ3w" name="key">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qyC1MPOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qyEDUPOLEeanyK3wteWQ3w" name="addBall" method="_q4qalPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qyEDUfOLEeanyK3wteWQ3w" name="ball" type="_qkux8POLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qyEqYPOLEeanyK3wteWQ3w" name="rotateGizmo" method="_q4rBp_OLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qyEqYfOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qyF4gPOLEeanyK3wteWQ3w" name="connectGizmo" method="_q4rosPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qyF4gfOLEeanyK3wteWQ3w" name="gizmo1" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qyF4gvOLEeanyK3wteWQ3w" name="gizmo2" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qyF4g_OLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qyKJ8POLEeanyK3wteWQ3w" name="disconnectGizmo" method="_q4rotPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qyKJ8fOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qyKxAPOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qyMmMPOLEeanyK3wteWQ3w" name="keyConnectGizmo" method="_q4sPwPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qyMmMfOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qyMmMvOLEeanyK3wteWQ3w" name="k">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qyN0UvOLEeanyK3wteWQ3w" name="removeKey" method="_q4sPw_OLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qyN0U_OLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qyPpgvOLEeanyK3wteWQ3w" name="applyFriction" method="_q4s21POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qyQQkPOLEeanyK3wteWQ3w" name="ball" type="_qkux8POLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qyQQkfOLEeanyK3wteWQ3w" name="time">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qyQQkvOLEeanyK3wteWQ3w" name="applyGravity" method="_q4td4vOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qyQ3oPOLEeanyK3wteWQ3w" name="ball" type="_qkux8POLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qyQ3ofOLEeanyK3wteWQ3w" name="time">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qyQ3ovOLEeanyK3wteWQ3w" name="moveGizmo" method="_q4td5fOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qyQ3o_OLEeanyK3wteWQ3w" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qyQ3pPOLEeanyK3wteWQ3w" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qyResPOLEeanyK3wteWQ3w" name="gizmo" type="_qlm7sPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qyResfOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_q1BQsPOLEeanyK3wteWQ3w" name="save" method="_q4uE8POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q1BQsfOLEeanyK3wteWQ3w" name="f" type="_qvbmEfOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_q1Ce0POLEeanyK3wteWQ3w" name="load" method="_q4uE8vOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q1Ce0fOLEeanyK3wteWQ3w" name="f" type="_qvbmEfOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q1Ce0vOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
        </ownedOperation>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_qnnG0fOLEeanyK3wteWQ3w" name="CollisionInfo" visibility="private">
          <ownedAttribute xmi:id="_q3nRsPOLEeanyK3wteWQ3w" name="colTime" visibility="package">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_q3n4wfOLEeanyK3wteWQ3w" name="collidingBall" visibility="package" type="_qkux8POLEeanyK3wteWQ3w" association="_q6pXkPOLEeanyK3wteWQ3w"/>
          <ownedAttribute xmi:id="_q3of0fOLEeanyK3wteWQ3w" name="updatedVel" visibility="package" type="_qwKl4POLEeanyK3wteWQ3w" association="_q6p-ofOLEeanyK3wteWQ3w"/>
          <ownedAttribute xmi:id="_q3pG4fOLEeanyK3wteWQ3w" name="abs" visibility="package" type="_qkZawPOLEeanyK3wteWQ3w" association="_q6qlsfOLEeanyK3wteWQ3w"/>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4olYPOLEeanyK3wteWQ3w" name="CollisionInfo" specification="_q0_bgPOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_q4olYfOLEeanyK3wteWQ3w" name="t">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
            </ownedParameter>
            <ownedParameter xmi:id="_q4olYvOLEeanyK3wteWQ3w" name="b" type="_qkux8POLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q4olY_OLEeanyK3wteWQ3w" name="v" type="_qwKl4POLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q4olZPOLEeanyK3wteWQ3w" name="a" type="_qkZawPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q4olZfOLEeanyK3wteWQ3w" type="_qnnG0fOLEeanyK3wteWQ3w" direction="return">
              <name xsi:nil="true"/>
            </ownedParameter>
            <language>java</language>
            <body>colTime = t;
			collidingBall = b;
			updatedVel = v;
			abs = a;
		</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4olZvOLEeanyK3wteWQ3w" name="getColTime" specification="_qnoU8POLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_q4olZ_OLEeanyK3wteWQ3w" direction="return">
              <name xsi:nil="true"/>
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
            </ownedParameter>
            <language>java</language>
            <body>return colTime;
		</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4olaPOLEeanyK3wteWQ3w" name="getCollidingBall" specification="_qno8AfOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_q4olafOLEeanyK3wteWQ3w" type="_qkux8POLEeanyK3wteWQ3w" direction="return">
              <name xsi:nil="true"/>
            </ownedParameter>
            <language>java</language>
            <body>return collidingBall;
		</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4pMcPOLEeanyK3wteWQ3w" name="getUpdatedVel" specification="_qnpjEPOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_q4pMcfOLEeanyK3wteWQ3w" type="_qwKl4POLEeanyK3wteWQ3w" direction="return">
              <name xsi:nil="true"/>
            </ownedParameter>
            <language>java</language>
            <body>return updatedVel;
		</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4pMcvOLEeanyK3wteWQ3w" name="getAbs" specification="_qnpjEfOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_q4pMc_OLEeanyK3wteWQ3w" type="_qkZawPOLEeanyK3wteWQ3w" direction="return">
              <name xsi:nil="true"/>
            </ownedParameter>
            <language>java</language>
            <body>return abs;
		</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_qnoU8POLEeanyK3wteWQ3w" name="getColTime" method="_q4olZvOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_qno8APOLEeanyK3wteWQ3w" direction="return">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_qno8AfOLEeanyK3wteWQ3w" name="getCollidingBall" method="_q4olaPOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_qyBAAPOLEeanyK3wteWQ3w" type="_qkux8POLEeanyK3wteWQ3w" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qnpjEPOLEeanyK3wteWQ3w" name="getUpdatedVel" method="_q4pMcPOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_q1ACkfOLEeanyK3wteWQ3w" type="_qwKl4POLEeanyK3wteWQ3w" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_qnpjEfOLEeanyK3wteWQ3w" name="getAbs" method="_q4pMcvOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_qyBnEPOLEeanyK3wteWQ3w" type="_qkZawPOLEeanyK3wteWQ3w" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_q0_bgPOLEeanyK3wteWQ3w" name="CollisionInfo" method="_q4olYPOLEeanyK3wteWQ3w">
            <eAnnotations xmi:id="_q0_bhfOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_q0_bhvOLEeanyK3wteWQ3w" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_q0_bgfOLEeanyK3wteWQ3w" name="t">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
            </ownedParameter>
            <ownedParameter xmi:id="_q0_bgvOLEeanyK3wteWQ3w" name="b" type="_qkux8POLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q0_bg_OLEeanyK3wteWQ3w" name="v" type="_qwKl4POLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q0_bhPOLEeanyK3wteWQ3w" name="a" type="_qkZawPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q1ACkPOLEeanyK3wteWQ3w" type="_qnnG0fOLEeanyK3wteWQ3w" direction="return"/>
          </ownedOperation>
        </nestedClassifier>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_q3Z2UPOLEeanyK3wteWQ3w" name="LineSegment"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_q3cSkPOLEeanyK3wteWQ3w" name="Circle"/>
      <packagedElement xmi:type="uml:Association" xmi:id="_q5AY0POLEeanyK3wteWQ3w" name="" memberEnd="_q1wQgPOLEeanyK3wteWQ3w _q5AY0fOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q5AY0fOLEeanyK3wteWQ3w" name="" type="_qkux8POLEeanyK3wteWQ3w" association="_q5AY0POLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q5F4YfOLEeanyK3wteWQ3w" name="" memberEnd="_qlsbQfOLEeanyK3wteWQ3w _q5F4YvOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q5F4YvOLEeanyK3wteWQ3w" name="" type="_qlm7sPOLEeanyK3wteWQ3w" association="_q5F4YfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q5F4Y_OLEeanyK3wteWQ3w" name="" memberEnd="_qltCUPOLEeanyK3wteWQ3w _q5F4ZPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q5F4ZPOLEeanyK3wteWQ3w" name="" type="_qlm7sPOLEeanyK3wteWQ3w" association="_q5F4Y_OLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q5p5EPOLEeanyK3wteWQ3w" name="" memberEnd="_q5p5EfOLEeanyK3wteWQ3w _qlqmEfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q5p5EfOLEeanyK3wteWQ3w" name="" type="_qlm7sPOLEeanyK3wteWQ3w" association="_q5p5EPOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q56-0fOLEeanyK3wteWQ3w" name="" memberEnd="_q56-0vOLEeanyK3wteWQ3w _q1tNMPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q56-0vOLEeanyK3wteWQ3w" name="" type="_qkZawPOLEeanyK3wteWQ3w" association="_q56-0fOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q58M8POLEeanyK3wteWQ3w" name="" memberEnd="_q58M8fOLEeanyK3wteWQ3w _q1ubUPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q58M8fOLEeanyK3wteWQ3w" name="" type="_qkux8POLEeanyK3wteWQ3w" association="_q58M8POLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q580AfOLEeanyK3wteWQ3w" name="" memberEnd="_q580AvOLEeanyK3wteWQ3w _q1yFsPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q580AvOLEeanyK3wteWQ3w" name="" type="_qk8NUPOLEeanyK3wteWQ3w" association="_q580AfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q59bEfOLEeanyK3wteWQ3w" name="" memberEnd="_q59bEvOLEeanyK3wteWQ3w _q11wEPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q59bEvOLEeanyK3wteWQ3w" name="" type="_qlCT8POLEeanyK3wteWQ3w" association="_q59bEfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q5-pMfOLEeanyK3wteWQ3w" name="" memberEnd="_q5-pMvOLEeanyK3wteWQ3w _q12-MfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q5-pMvOLEeanyK3wteWQ3w" name="" type="_qlCT8POLEeanyK3wteWQ3w" association="_q5-pMfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q5_3UfOLEeanyK3wteWQ3w" name="" memberEnd="_q5_3UvOLEeanyK3wteWQ3w _q13lQfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q5_3UvOLEeanyK3wteWQ3w" name="" type="_qlCT8POLEeanyK3wteWQ3w" association="_q5_3UfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6fmkfOLEeanyK3wteWQ3w" name="" memberEnd="_q6fmkvOLEeanyK3wteWQ3w _q3R6gPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6fmkvOLEeanyK3wteWQ3w" name="" type="_qncuwPOLEeanyK3wteWQ3w" association="_q6fmkfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6g0sfOLEeanyK3wteWQ3w" name="" memberEnd="_q6g0svOLEeanyK3wteWQ3w _q3TIoPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6g0svOLEeanyK3wteWQ3w" name="" type="_qncuwPOLEeanyK3wteWQ3w" association="_q6g0sfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6hbwfOLEeanyK3wteWQ3w" name="" memberEnd="_q6hbwvOLEeanyK3wteWQ3w _q3TvsfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6hbwvOLEeanyK3wteWQ3w" name="" type="_qncuwPOLEeanyK3wteWQ3w" association="_q6hbwfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6ip4fOLEeanyK3wteWQ3w" name="" memberEnd="_q6ip4vOLEeanyK3wteWQ3w _q3UWwfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6ip4vOLEeanyK3wteWQ3w" name="" type="_qncuwPOLEeanyK3wteWQ3w" association="_q6ip4fOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6jQ8fOLEeanyK3wteWQ3w" name="" memberEnd="_q6jQ8vOLEeanyK3wteWQ3w _q3YoMfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6jQ8vOLEeanyK3wteWQ3w" name="" type="_qncuwPOLEeanyK3wteWQ3w" association="_q6jQ8fOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6kfEfOLEeanyK3wteWQ3w" name="" memberEnd="_q6kfEvOLEeanyK3wteWQ3w _q3bEcfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6kfEvOLEeanyK3wteWQ3w" name="" type="_qncuwPOLEeanyK3wteWQ3w" association="_q6kfEfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6lGIfOLEeanyK3wteWQ3w" name="" memberEnd="_q6lGIvOLEeanyK3wteWQ3w _q3dgsPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6lGIvOLEeanyK3wteWQ3w" name="" type="_qncuwPOLEeanyK3wteWQ3w" association="_q6lGIfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6mUQPOLEeanyK3wteWQ3w" name="" memberEnd="_q6mUQfOLEeanyK3wteWQ3w _q3eu0fOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6mUQfOLEeanyK3wteWQ3w" name="" type="_qncuwPOLEeanyK3wteWQ3w" association="_q6mUQPOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6m7UfOLEeanyK3wteWQ3w" name="" memberEnd="_q6m7UvOLEeanyK3wteWQ3w _q3gkAPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6m7UvOLEeanyK3wteWQ3w" name="" type="_qncuwPOLEeanyK3wteWQ3w" association="_q6m7UfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6oJcPOLEeanyK3wteWQ3w" name="" memberEnd="_q6oJcfOLEeanyK3wteWQ3w _q3jAQPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6oJcfOLEeanyK3wteWQ3w" name="" type="_qncuwPOLEeanyK3wteWQ3w" association="_q6oJcPOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6pXkPOLEeanyK3wteWQ3w" name="" memberEnd="_q6pXkfOLEeanyK3wteWQ3w _q3n4wfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6pXkfOLEeanyK3wteWQ3w" name="" type="_qnnG0fOLEeanyK3wteWQ3w" association="_q6pXkPOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6p-ofOLEeanyK3wteWQ3w" name="" memberEnd="_q6p-ovOLEeanyK3wteWQ3w _q3of0fOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6p-ovOLEeanyK3wteWQ3w" name="" type="_qnnG0fOLEeanyK3wteWQ3w" association="_q6p-ofOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6qlsfOLEeanyK3wteWQ3w" name="" memberEnd="_q6qlsvOLEeanyK3wteWQ3w _q3pG4fOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6qlsvOLEeanyK3wteWQ3w" name="" type="_qnnG0fOLEeanyK3wteWQ3w" association="_q6qlsfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_t78Z0POVEeanyK3wteWQ3w" name="" memberEnd="_t74IYPOVEeanyK3wteWQ3w _t79A4POVEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_t79A4POVEeanyK3wteWQ3w" name="" type="_qlwFoPOLEeanyK3wteWQ3w" association="_t78Z0POVEeanyK3wteWQ3w"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_qdPC0POLEeanyK3wteWQ3w" name="view">
      <packagedElement xmi:type="uml:Class" xmi:id="_qmEOsPOLEeanyK3wteWQ3w" name="a">
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4TOMPOLEeanyK3wteWQ3w" name="main" specification="_qmE1wPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4TOMfOLEeanyK3wteWQ3w" name="args">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q4TOMvOLEeanyK3wteWQ3w" value="*"/>
          </ownedParameter>
          <language>java</language>
          <body>Model m = new Model();
		Display d = new Display(m);

	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qmE1wPOLEeanyK3wteWQ3w" name="main" isStatic="true" method="_q4TOMPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qmE1wfOLEeanyK3wteWQ3w" name="args">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qmFc0POLEeanyK3wteWQ3w" value="*"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qmd3UPOLEeanyK3wteWQ3w" name="Build">
        <generalization xmi:id="_q0j9sPOLEeanyK3wteWQ3w" general="_qw3JcPOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2FnsPOLEeanyK3wteWQ3w" name="serialVersionUID" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#long"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_q2GOwPOLEeanyK3wteWQ3w" value="1L"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q2GOwfOLEeanyK3wteWQ3w" name="d" visibility="private" type="_qnEUQPOLEeanyK3wteWQ3w" association="_q6Ev0POLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2G10fOLEeanyK3wteWQ3w" name="cBL" visibility="private" type="_PelOkPOMEeanyK3wteWQ3w" association="_uawy4POMEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2J5IPOLEeanyK3wteWQ3w" name="mL" visibility="private" type="_qkJjIPOLEeanyK3wteWQ3w" association="_q6JBQfOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2KgMfOLEeanyK3wteWQ3w" name="gizmosButton" visibility="private" type="_qw0tMfOLEeanyK3wteWQ3w" association="_q6KPYfOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2MVYPOLEeanyK3wteWQ3w" name="main" visibility="private" type="_qw3JcPOLEeanyK3wteWQ3w" association="_q6K2cfOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2M8cfOLEeanyK3wteWQ3w" name="gizmo" visibility="private" type="_qw3JcPOLEeanyK3wteWQ3w" association="_q6MEkPOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2OKkPOLEeanyK3wteWQ3w" name="operation" visibility="private" type="_qw3JcPOLEeanyK3wteWQ3w" association="_q6MrofOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2OxoPOLEeanyK3wteWQ3w" name="setup" visibility="private" type="_qw3JcPOLEeanyK3wteWQ3w" association="_q6N5wPOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q5I7sPOLEeanyK3wteWQ3w" name="operationsButton" visibility="private" type="_qw0tMfOLEeanyK3wteWQ3w" association="_q6rz0POLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q5JiwPOLEeanyK3wteWQ3w" name="setupButton" visibility="private" type="_qw0tMfOLEeanyK3wteWQ3w" association="_q6sa4fOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q5Jiw_OLEeanyK3wteWQ3w" name="backButton" visibility="private" type="_qw0tMfOLEeanyK3wteWQ3w" association="_q6tpAPOLEeanyK3wteWQ3w"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4YtwPOLEeanyK3wteWQ3w" name="Build" specification="_qw6MwPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4YtwfOLEeanyK3wteWQ3w" name="display" type="_qnEUQPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4YtwvOLEeanyK3wteWQ3w" type="_qmd3UPOLEeanyK3wteWQ3w" direction="return">
            <name xsi:nil="true"/>
          </ownedParameter>
          <language>java</language>
          <body>setLayout(new CardLayout());
		d = display;
		addButtons();
		gizmos();
		operations();
		setup();
		add(main, &quot;main&quot;);
		add(gizmo, &quot;gizmo&quot;);
		add(operation, &quot;operation&quot;);
		add(setup, &quot;setup&quot;);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4Ytw_OLEeanyK3wteWQ3w" name="changeButtons" specification="_qmlMEPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4YtxPOLEeanyK3wteWQ3w" name="b">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <language>java</language>
          <body>CardLayout cardLayout = (CardLayout) getLayout();
		cardLayout.show(this, b);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4ZU0POLEeanyK3wteWQ3w" name="addButtons" specification="_qmlMEvOLEeanyK3wteWQ3w">
          <language>java</language>
          <body>main = new JPanel(new GridLayout(4, 1));

		gizmosButton = new JButton(&quot;Add Gizmos&quot;);
		gizmosButton.setBackground(Color.LIGHT_GRAY);
		gizmosButton.setForeground(Color.white);
		cBL = new ChangeButtonListener(d,&quot;gizmo&quot;);
		gizmosButton.addActionListener(cBL);
		main.add(gizmosButton);

		JButton operationsButton = new JButton(&quot;Operations&quot;);
		operationsButton.setBackground(Color.LIGHT_GRAY);
		operationsButton.setForeground(Color.white);
		cBL = new ChangeButtonListener(d,&quot;operation&quot;);
		operationsButton.addActionListener(cBL);
		main.add(operationsButton);

		JButton setupButton = new JButton(&quot;Setup&quot;);
		setupButton.setBackground(Color.LIGHT_GRAY);
		setupButton.setForeground(Color.white);
		cBL = new ChangeButtonListener(d,&quot;setup&quot;);
		setupButton.addActionListener(cBL);
		main.add(setupButton);

		JButton RunButton = new JButton(&quot;Run Mode&quot;);
		RunButton.setBackground(Color.LIGHT_GRAY);
		RunButton.setForeground(Color.white);
		mL = new ModeListener(d,&quot;run&quot;);
		RunButton.addActionListener(mL);
		main.add(RunButton);

	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4ZU0fOLEeanyK3wteWQ3w" name="gizmos" specification="_qmlzIPOLEeanyK3wteWQ3w">
          <language>java</language>
          <body>gizmo = new JPanel(new GridLayout(6, 1));

		JButton squareButton = new JButton(&quot;Square&quot;);
		squareButton.setBackground(Color.LIGHT_GRAY);
		squareButton.setForeground(Color.white);
		gizmo.add(squareButton);

		JButton circleButton = new JButton(&quot;Circle&quot;);
		circleButton.setBackground(Color.LIGHT_GRAY);
		circleButton.setForeground(Color.white);
		gizmo.add(circleButton);

		JButton triangleButton = new JButton(&quot;Triangle&quot;);
		triangleButton.setBackground(Color.LIGHT_GRAY);
		triangleButton.setForeground(Color.white);
		gizmo.add(triangleButton);

		JButton lFlipperButton = new JButton(&quot;Left Flipper&quot;);
		lFlipperButton.setBackground(Color.LIGHT_GRAY);
		lFlipperButton.setForeground(Color.white);
		gizmo.add(lFlipperButton);

		JButton rFlipperButton = new JButton(&quot;Right Flipper&quot;);
		rFlipperButton.setBackground(Color.LIGHT_GRAY);
		rFlipperButton.setForeground(Color.white);
		gizmo.add(rFlipperButton);

		JButton backButton = new JButton(&quot;Back&quot;);
		backButton.setBackground(Color.LIGHT_GRAY);
		backButton.setForeground(Color.white);
		gizmo.add(backButton);
		cBL = new ChangeButtonListener(d,&quot;main&quot;);;
		backButton.addActionListener(cBL);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4ZU0vOLEeanyK3wteWQ3w" name="operations" specification="_qmlzIfOLEeanyK3wteWQ3w">
          <language>java</language>
          <body>operation = new JPanel(new GridLayout(8, 1));

		JButton rotateButton = new JButton(&quot;Rotate&quot;);
		rotateButton.setBackground(Color.LIGHT_GRAY);
		rotateButton.setForeground(Color.white);
		operation.add(rotateButton);

		JButton deleteButton = new JButton(&quot;Delete&quot;);
		deleteButton.setBackground(Color.LIGHT_GRAY);
		deleteButton.setForeground(Color.white);
		operation.add(deleteButton);

		JButton moveButton = new JButton(&quot;Move&quot;);
		moveButton.setBackground(Color.LIGHT_GRAY);
		moveButton.setForeground(Color.white);
		operation.add(moveButton);

		JButton clearButton = new JButton(&quot;Clear&quot;);
		clearButton.setBackground(Color.LIGHT_GRAY);
		clearButton.setForeground(Color.white);
		operation.add(clearButton);

		JButton connectButton = new JButton(&quot;Connect&quot;);
		connectButton.setBackground(Color.LIGHT_GRAY);
		connectButton.setForeground(Color.white);
		operation.add(connectButton);

		JButton bindButton = new JButton(&quot;Bind Key&quot;);
		bindButton.setBackground(Color.LIGHT_GRAY);
		bindButton.setForeground(Color.white);
		operation.add(bindButton);

		JButton disconnectButton = new JButton(&quot;Disconnect&quot;);
		disconnectButton.setBackground(Color.LIGHT_GRAY);
		disconnectButton.setForeground(Color.white);
		operation.add(disconnectButton);

		JButton backButton = new JButton(&quot;Back&quot;);
		backButton.setBackground(Color.LIGHT_GRAY);
		backButton.setForeground(Color.white);
		cBL = new ChangeButtonListener(d,&quot;main&quot;);;
		backButton.addActionListener(cBL);
		operation.add(backButton);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4ZU0_OLEeanyK3wteWQ3w" name="setup" specification="_qmnBQPOLEeanyK3wteWQ3w">
          <language>java</language>
          <body>setup = new JPanel(new GridLayout(5, 1));

		JPanel ballPanel = new JPanel();
		ballPanel.setLayout(new GridLayout(1, 2));
		JPanel ballInputPanel = new JPanel();
		ballInputPanel.setLayout(new GridLayout(2, 1));
		JButton ballButton = new JButton(&quot;Place Ball&quot;);
		ballButton.setBackground(Color.LIGHT_GRAY);
		ballButton.setForeground(Color.white);
		ballPanel.add(ballButton);
		JTextField ballVInput1 = new JTextField();
		ballInputPanel.add(ballVInput1);
		JTextField ballVInput2 = new JTextField();
		ballInputPanel.add(ballVInput2);
		ballPanel.add(ballInputPanel);
		setup.add(ballPanel);

		JButton absorberButton = new JButton(&quot;Place Absorber&quot;);
		absorberButton.setBackground(Color.LIGHT_GRAY);
		absorberButton.setForeground(Color.white);
		setup.add(absorberButton);

		JPanel frictionPanel = new JPanel();
		frictionPanel.setLayout(new GridLayout(1, 2));
		JPanel frictionInputPanel = new JPanel();
		frictionInputPanel.setLayout(new GridLayout(2, 1));
		JButton frictionButton = new JButton(&quot;Friction&quot;);
		frictionButton.setBackground(Color.LIGHT_GRAY);
		frictionButton.setForeground(Color.white);
		frictionPanel.add(frictionButton);
		JTextField frictionInput1 = new JTextField();
		frictionInputPanel.add(frictionInput1);
		JTextField frictionInput2 = new JTextField();
		frictionInputPanel.add(frictionInput2);
		frictionPanel.add(frictionInputPanel);
		setup.add(frictionPanel);

		JPanel gravityPanel = new JPanel();
		gravityPanel.setLayout(new GridLayout(1, 2));
		JButton gravityButton = new JButton(&quot;Gravity&quot;);
		gravityButton.setBackground(Color.LIGHT_GRAY);
		gravityButton.setForeground(Color.white);
		gravityPanel.add(gravityButton);
		JTextField gravityInput = new JTextField();
		gravityPanel.add(gravityInput);
		setup.add(gravityPanel);

		JButton backButton = new JButton(&quot;Back&quot;);
		backButton.setBackground(Color.LIGHT_GRAY);
		backButton.setForeground(Color.white);
		cBL = new ChangeButtonListener(d,&quot;main&quot;);;
		backButton.addActionListener(cBL);
		setup.add(backButton);
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qmlMEPOLEeanyK3wteWQ3w" name="changeButtons" method="_q4Ytw_OLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qmlMEfOLEeanyK3wteWQ3w" name="b">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qmlMEvOLEeanyK3wteWQ3w" name="addButtons" method="_q4ZU0POLEeanyK3wteWQ3w"/>
        <ownedOperation xmi:id="_qmlzIPOLEeanyK3wteWQ3w" name="gizmos" method="_q4ZU0fOLEeanyK3wteWQ3w"/>
        <ownedOperation xmi:id="_qmlzIfOLEeanyK3wteWQ3w" name="operations" method="_q4ZU0vOLEeanyK3wteWQ3w"/>
        <ownedOperation xmi:id="_qmnBQPOLEeanyK3wteWQ3w" name="setup" method="_q4ZU0_OLEeanyK3wteWQ3w"/>
        <ownedOperation xmi:id="_qw6MwPOLEeanyK3wteWQ3w" name="Build" method="_q4YtwPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qw6z0POLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qw6z0fOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_qw6MwfOLEeanyK3wteWQ3w" name="display" type="_qnEUQPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qw6z0vOLEeanyK3wteWQ3w" type="_qmd3UPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qmtH4POLEeanyK3wteWQ3w" name="BuildBoard">
        <generalization xmi:id="_q0qEUvOLEeanyK3wteWQ3w" general="_qw3JcPOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2Qm0POLEeanyK3wteWQ3w" name="serialVersionUID" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#long"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_q2RN4POLEeanyK3wteWQ3w" value="1L"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q2RN4fOLEeanyK3wteWQ3w" name="width" visibility="protected">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q2R08fOLEeanyK3wteWQ3w" name="height" visibility="protected">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <interfaceRealization xmi:id="_q0ly4POLEeanyK3wteWQ3w" client="_qmtH4POLEeanyK3wteWQ3w" supplier="_qxD9wPOLEeanyK3wteWQ3w" contract="_qxD9wPOLEeanyK3wteWQ3w"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4ai8POLEeanyK3wteWQ3w" name="BuildBoard" specification="_qmuWAPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4ai8fOLEeanyK3wteWQ3w" name="w">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4ai8vOLEeanyK3wteWQ3w" name="h">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4ai8_OLEeanyK3wteWQ3w" type="_qmtH4POLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>width = w;
		height = h;
		this.setBorder(BorderFactory.createLineBorder(Color.black));
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4ai9POLEeanyK3wteWQ3w" name="getPreferredSize" specification="_qmu9EPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4ai9fOLEeanyK3wteWQ3w" type="_qwy4AfOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>return new Dimension(width, height);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4bKAPOLEeanyK3wteWQ3w" name="paintComponent" specification="_q0nBAPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4bKAfOLEeanyK3wteWQ3w" name="g" type="_qw93IPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>super.paintComponent(g);

		Graphics2D g2 = (Graphics2D) g;

		int width = getSize().width;
		int height = getSize().height;
		int gridsize = 20;
		super.paintComponent(g);

		int htOfRow = height / (gridsize);
		for (int i = 1; i &lt;= gridsize; i++) {
			g.drawLine(0, i * htOfRow, width, i * htOfRow);
		}

		int wdOfRow = width / (gridsize);
		for (int i = 1; i &lt;= gridsize; i++) {
			g.drawLine(i * wdOfRow, 0, i * wdOfRow, height);
		}
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4bKAvOLEeanyK3wteWQ3w" name="update" specification="_q0oPIfOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4bKA_OLEeanyK3wteWQ3w" name="arg0" type="_qxCIkfOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4bKBPOLEeanyK3wteWQ3w" name="arg1" type="_q0noEPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>repaint();
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qmuWAPOLEeanyK3wteWQ3w" name="BuildBoard" method="_q4ai8POLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qmuWA_OLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qmuWBPOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_qmuWAfOLEeanyK3wteWQ3w" name="w">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qmuWAvOLEeanyK3wteWQ3w" name="h">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qmuWBfOLEeanyK3wteWQ3w" type="_qmtH4POLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qmu9EPOLEeanyK3wteWQ3w" name="getPreferredSize" method="_q4ai9POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q0mZ8POLEeanyK3wteWQ3w" type="_qwy4AfOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_q0nBAPOLEeanyK3wteWQ3w" name="paintComponent" method="_q4bKAPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q0nBAfOLEeanyK3wteWQ3w" name="g" type="_qw93IPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_q0oPIfOLEeanyK3wteWQ3w" name="update" method="_q4bKAvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q0oPIvOLEeanyK3wteWQ3w" name="arg0" type="_qxCIkfOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q0oPI_OLEeanyK3wteWQ3w" name="arg1" type="_q0noEPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qmyAYPOLEeanyK3wteWQ3w" name="Display">
        <ownedAttribute xmi:id="_q2TDEPOLEeanyK3wteWQ3w" name="serialVersionUID" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#long"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_q2TqIPOLEeanyK3wteWQ3w" value="1L"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q2TqIfOLEeanyK3wteWQ3w" name="sL" visibility="private" type="_qjRZYPOLEeanyK3wteWQ3w" association="_q6Og0fOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2URMfOLEeanyK3wteWQ3w" name="lL" visibility="private" type="_qjNH8POLEeanyK3wteWQ3w" association="_q6Pu8POLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2VfUPOLEeanyK3wteWQ3w" name="m" visibility="private" type="_qlwFoPOLEeanyK3wteWQ3w" association="_q6QWAfOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2WGYPOLEeanyK3wteWQ3w" name="frame" visibility="private" type="_qxNHsPOLEeanyK3wteWQ3w" association="_q6RkIPOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2WtcPOLEeanyK3wteWQ3w" name="buttons" visibility="private" type="_qw3JcPOLEeanyK3wteWQ3w" association="_q6SLMfOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2XUgfOLEeanyK3wteWQ3w" name="build" visibility="private" type="_qmd3UPOLEeanyK3wteWQ3w" association="_q6TZUfOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2X7kfOLEeanyK3wteWQ3w" name="run" visibility="private" type="_qnH-oPOLEeanyK3wteWQ3w" association="_q6UAYfOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2YiofOLEeanyK3wteWQ3w" name="boards" visibility="private" type="_qw3JcPOLEeanyK3wteWQ3w" association="_q6VOgfOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2ZJsPOLEeanyK3wteWQ3w" name="bB" visibility="private" type="_qmtH4POLEeanyK3wteWQ3w" association="_q6V1kfOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2ZwwPOLEeanyK3wteWQ3w" name="rB" visibility="private" type="_qnLB8POLEeanyK3wteWQ3w" association="_q6XDsfOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2ZwwvOLEeanyK3wteWQ3w" name="cp" visibility="package" type="_qxI2QfOLEeanyK3wteWQ3w" association="_q6YR0POLEeanyK3wteWQ3w"/>
        <interfaceRealization xmi:id="_qxXfwfOLEeanyK3wteWQ3w" client="_qmyAYPOLEeanyK3wteWQ3w" supplier="_qnEUQPOLEeanyK3wteWQ3w" contract="_qnEUQPOLEeanyK3wteWQ3w"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4bxEPOLEeanyK3wteWQ3w" name="Display" specification="_qxYt4POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4bxEfOLEeanyK3wteWQ3w" name="model" type="_qncuwPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4bxEvOLEeanyK3wteWQ3w" type="_qmyAYPOLEeanyK3wteWQ3w" direction="return">
            <name xsi:nil="true"/>
          </ownedParameter>
          <language>java</language>
          <body>m = model;
		initialise();
		addMenuBar();
		tidy();
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4bxE_OLEeanyK3wteWQ3w" name="initialise" specification="_qmz1kPOLEeanyK3wteWQ3w">
          <language>java</language>
          <body>frame = new JFrame(&quot;Gizmo Ball&quot;);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		cp = frame.getContentPane();
		buttons = new JPanel(new CardLayout());
		boards = new JPanel(new CardLayout());
		build();
		run();
		cp.add(buttons, BorderLayout.LINE_START);
		cp.add(boards, BorderLayout.CENTER);
		changeMode(&quot;build&quot;);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4cYIPOLEeanyK3wteWQ3w" name="addMenuBar" specification="_qm0coPOLEeanyK3wteWQ3w">
          <language>java</language>
          <body>JMenuBar menuBar = new JMenuBar();
		JMenu menu = new JMenu(&quot;File&quot;);

		JMenuItem newBoard = new JMenuItem(&quot;New&quot;);
		// NewBoardListener
		JMenuItem load = new JMenuItem(&quot;Load&quot;);
		lL = new LoadListener(this, m);
		load.addActionListener(lL);
		JMenuItem save = new JMenuItem(&quot;Save&quot;);
		sL = new SaveListener(this, m);
		save.addActionListener(sL);

		JMenuItem exit = new JMenuItem(&quot;Exit&quot;);
		// ExitListener

		menu.add(newBoard);
		menu.add(load);
		menu.add(save);
		menu.addSeparator();
		menu.add(exit);

		menuBar.add(menu);
		frame.setJMenuBar(menuBar);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4cYIfOLEeanyK3wteWQ3w" name="tidy" specification="_qm0cofOLEeanyK3wteWQ3w">
          <language>java</language>
          <body>frame.pack();
		frame.setLocationRelativeTo(null);
		frame.setResizable(false);
		frame.setVisible(true);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4cYIvOLEeanyK3wteWQ3w" name="createAndShowGUI" specification="_qm1DsPOLEeanyK3wteWQ3w">
          <language>java</language>
          <body>frame.pack();
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4cYI_OLEeanyK3wteWQ3w" name="changeBuildButtons" specification="_qm1DsfOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4cYJPOLEeanyK3wteWQ3w" name="b">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <language>java</language>
          <body>build.changeButtons(b);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4c_MPOLEeanyK3wteWQ3w" name="changeMode" specification="_qm1qwPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4c_MfOLEeanyK3wteWQ3w" name="m">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <language>java</language>
          <body>CardLayout cardLayout = (CardLayout) buttons.getLayout();
		cardLayout.show(buttons, m);
		cardLayout = (CardLayout) boards.getLayout();
		cardLayout.show(boards, m);
		if (m == &quot;build&quot;) {
			frame.setTitle(&quot;BUILD MODE&quot;);
		} else {
			frame.setTitle(&quot;RUN MODE&quot;);
		}
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4c_MvOLEeanyK3wteWQ3w" name="build" specification="_qm2R0POLEeanyK3wteWQ3w">
          <language>java</language>
          <body>build = new Build(this);
		bB = new BuildBoard(500, 500);
		buttons.add(build, &quot;build&quot;);
		boards.add(bB, &quot;build&quot;);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4c_M_OLEeanyK3wteWQ3w" name="run" specification="_qm2R0fOLEeanyK3wteWQ3w">
          <language>java</language>
          <body>run = new Run(this);
		rB = new RunBoard(500, 500);
		buttons.add(run, &quot;run&quot;);
		boards.add(rB, &quot;run&quot;);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4c_NPOLEeanyK3wteWQ3w" name="saveDialog" specification="_qm244POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4c_NfOLEeanyK3wteWQ3w" type="_qvbmEfOLEeanyK3wteWQ3w" direction="return">
            <name xsi:nil="true"/>
          </ownedParameter>
          <language>java</language>
          <body>String filePath = (String) JOptionPane.showInputDialog(new JFrame(), &quot;Enter name for save&quot;, &quot;Customized Dialog&quot;,
				JOptionPane.PLAIN_MESSAGE);
		return new File(filePath + &quot;.gizmo&quot;);

	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4dmQPOLEeanyK3wteWQ3w" name="loadDialog" specification="_qm244fOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4dmQfOLEeanyK3wteWQ3w" type="_qvbmEfOLEeanyK3wteWQ3w" direction="return">
            <name xsi:nil="true"/>
          </ownedParameter>
          <language>java</language>
          <body>JFileChooser fileChooser = new JFileChooser();
		FileNameExtensionFilter filter = new FileNameExtensionFilter(&quot;GIZMO FILES&quot;, &quot;gizmo&quot;);
		fileChooser.setApproveButtonText(&quot;Load&quot;);
		fileChooser.setFileFilter(filter);
		fileChooser.setCurrentDirectory(new File(System.getProperty(&quot;user.home&quot;)));
		int folio = fileChooser.showOpenDialog(new JFrame());
		if (folio == JFileChooser.APPROVE_OPTION) {
			return fileChooser.getSelectedFile();
		} else {
			return null;
		}

	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4dmQvOLEeanyK3wteWQ3w" name="errorPopup" specification="_qm3f8POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4dmQ_OLEeanyK3wteWQ3w" name="errorMessage">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <language>java</language>
          <body>JOptionPane.showMessageDialog(new JFrame(), errorMessage, &quot;Error&quot;, JOptionPane.ERROR_MESSAGE);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_VykmEPOVEeanyK3wteWQ3w" name="load" specification="_VyefcPOVEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_VylNIPOVEeanyK3wteWQ3w" name="gizmos" type="_qxxvcPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>LoadBoard l = new LoadBoard(gizmos, 500, 500);
		boards.add(l, &quot;load&quot;);
		CardLayout cardLayout = (CardLayout) buttons.getLayout();
		cardLayout.show(buttons, &quot;run&quot;);
		cardLayout = (CardLayout) boards.getLayout();
		cardLayout.show(boards, &quot;load&quot;);
		frame.setTitle(&quot;RUN MODE&quot;);

	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qmz1kPOLEeanyK3wteWQ3w" name="initialise" visibility="private" method="_q4bxE_OLEeanyK3wteWQ3w"/>
        <ownedOperation xmi:id="_qm0coPOLEeanyK3wteWQ3w" name="addMenuBar" visibility="private" method="_q4cYIPOLEeanyK3wteWQ3w"/>
        <ownedOperation xmi:id="_qm0cofOLEeanyK3wteWQ3w" name="tidy" visibility="private" method="_q4cYIfOLEeanyK3wteWQ3w"/>
        <ownedOperation xmi:id="_qm1DsPOLEeanyK3wteWQ3w" name="createAndShowGUI" method="_q4cYIvOLEeanyK3wteWQ3w"/>
        <ownedOperation xmi:id="_qm1DsfOLEeanyK3wteWQ3w" name="changeBuildButtons" method="_q4cYI_OLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qm1DsvOLEeanyK3wteWQ3w" name="b">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qm1qwPOLEeanyK3wteWQ3w" name="changeMode" method="_q4c_MPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qm1qwfOLEeanyK3wteWQ3w" name="m">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qm2R0POLEeanyK3wteWQ3w" name="build" method="_q4c_MvOLEeanyK3wteWQ3w"/>
        <ownedOperation xmi:id="_qm2R0fOLEeanyK3wteWQ3w" name="run" method="_q4c_M_OLEeanyK3wteWQ3w"/>
        <ownedOperation xmi:id="_qm244POLEeanyK3wteWQ3w" name="saveDialog" method="_q4c_NPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q0r5gPOLEeanyK3wteWQ3w" type="_qvbmEfOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qm244fOLEeanyK3wteWQ3w" name="loadDialog" method="_q4dmQPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q0r5gfOLEeanyK3wteWQ3w" type="_qvbmEfOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qm3f8POLEeanyK3wteWQ3w" name="errorPopup" method="_q4dmQvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qm3f8fOLEeanyK3wteWQ3w" name="errorMessage">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qxYt4POLEeanyK3wteWQ3w" name="Display" method="_q4bxEPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qxZU8fOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qxZU8vOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_qxZU8POLEeanyK3wteWQ3w" name="model" type="_qncuwPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qxZU8_OLEeanyK3wteWQ3w" type="_qmyAYPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_VyefcPOVEeanyK3wteWQ3w" name="load" method="_VykmEPOVEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_VyfGgPOVEeanyK3wteWQ3w" name="gizmos" type="_qxxvcPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qm9mkPOLEeanyK3wteWQ3w" name="FlipperBoard">
        <ownedComment xmi:id="_q5LX8POLEeanyK3wteWQ3w">
          <body>@author Murray Wood Demonstration of MVC and MIT Physics Collisions 2014</body>
        </ownedComment>
        <generalization xmi:id="_q0ynMvOLEeanyK3wteWQ3w" general="_qw3JcPOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q2bl8POLEeanyK3wteWQ3w" name="serialVersionUID" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#long"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_q3FtQPOLEeanyK3wteWQ3w" value="1L"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3FtQfOLEeanyK3wteWQ3w" name="width" visibility="protected">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3GUUfOLEeanyK3wteWQ3w" name="height" visibility="protected">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3G7YfOLEeanyK3wteWQ3w" name="gm" visibility="protected" type="_qncuwPOLEeanyK3wteWQ3w" association="_q6Y44fOLEeanyK3wteWQ3w"/>
        <interfaceRealization xmi:id="_q0tusPOLEeanyK3wteWQ3w" client="_qm9mkPOLEeanyK3wteWQ3w" supplier="_qxD9wPOLEeanyK3wteWQ3w" contract="_qxD9wPOLEeanyK3wteWQ3w"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4eNUPOLEeanyK3wteWQ3w" name="FlipperBoard" specification="_qxjF8POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4eNUfOLEeanyK3wteWQ3w" name="w">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4eNUvOLEeanyK3wteWQ3w" name="h">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4eNU_OLEeanyK3wteWQ3w" name="m" type="_qncuwPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4eNVPOLEeanyK3wteWQ3w" type="_qm9mkPOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>// Observe changes in Model
		m.addObserver(this);
		width = w;
		height = h;
		gm = m;
		this.setBorder(BorderFactory.createLineBorder(Color.black));	
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4e0YPOLEeanyK3wteWQ3w" name="getPreferredSize" specification="_qnAp4POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4e0YfOLEeanyK3wteWQ3w" type="_qwy4AfOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>return new Dimension(width, height);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4e0YvOLEeanyK3wteWQ3w" name="paintComponent" specification="_q0uVwfOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4e0Y_OLEeanyK3wteWQ3w" name="g" type="_qw93IPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>super.paintComponent(g);
		Graphics2D g2 = (Graphics2D) g;
		IGizmo gizmo = new Gizmo (220,220);
		int x =  gizmo.getStartX();
		int y =  gizmo.getStartY();
		gm.addGizmo(&quot;leftflipper&quot;,gizmo.getKey(),x,y);
		g2.setColor(gizmo.getColor());
		int width = 30;
		g2.fillRect(x, y, 2*width, width/2);
		
		//stuff for the ball
//		int x1 = 250;
//		int y1 = 250;
//		int vx = (int) ((Math.random() * 10.0) + 10.0);
//		int vy = (int) ((Math.random() * 10.0) + 10.0);
//		int radius = 6;
//		Ball ball = new Ball(x1,y1,vx,vy);
//		gm.addBall(ball);
//		
//        vx += (int) ((Math.random() * 10.0) - 5.0);
//        vx = -vx;
//        vy += (int) ((Math.random() * 10.0) - 5.0);
//        vy = -vy;
//		
//        x += vx;
//        if (x &lt;= radius) {
//            x = radius;
//            vx = -vx;
//        }
//        if (x >= 500 - radius) {
//            x = 500 - radius;
//            vx = -vx;
//        }
//
//        y += vy;
//        if (y &lt;= radius) {
//            y = radius;
//            vy = -vy;
//        }
//        if (y >= 500 - radius) {
//            y = 500 - radius;
//            vy = -vy;
//        }
//		g2.setColor(ball.getColor());
//
//		int width1 = 10;
//		g2.fillOval(x1-radius, y1-radius, radius+radius, radius+radius);
		
		
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4fbcPOLEeanyK3wteWQ3w" name="update" specification="_q0u80POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4fbcfOLEeanyK3wteWQ3w" name="arg0" type="_qxCIkfOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4fbcvOLEeanyK3wteWQ3w" name="arg1" type="_q0noEPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>repaint();
		</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qnAp4POLEeanyK3wteWQ3w" name="getPreferredSize" method="_q4e0YPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q0uVwPOLEeanyK3wteWQ3w" type="_qwy4AfOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qxjF8POLEeanyK3wteWQ3w" name="FlipperBoard" method="_q4eNUPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qxjtAfOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qxjtAvOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_qxjF8fOLEeanyK3wteWQ3w" name="w">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qxjF8vOLEeanyK3wteWQ3w" name="h">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qxjtAPOLEeanyK3wteWQ3w" name="m" type="_qncuwPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qxjtA_OLEeanyK3wteWQ3w" type="_qm9mkPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_q0uVwfOLEeanyK3wteWQ3w" name="paintComponent" method="_q4e0YvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q0uVwvOLEeanyK3wteWQ3w" name="g" type="_qw93IPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_q0u80POLEeanyK3wteWQ3w" name="update" method="_q4fbcPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q0u80fOLEeanyK3wteWQ3w" name="arg0" type="_qxCIkfOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q0vj4POLEeanyK3wteWQ3w" name="arg1" type="_q0noEPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Interface" xmi:id="_qnEUQPOLEeanyK3wteWQ3w" name="IDisplay">
        <ownedOperation xmi:id="_qnE7UPOLEeanyK3wteWQ3w" name="build"/>
        <ownedOperation xmi:id="_qnFiYPOLEeanyK3wteWQ3w" name="run"/>
        <ownedOperation xmi:id="_qnFiYfOLEeanyK3wteWQ3w" name="changeBuildButtons">
          <ownedParameter xmi:id="_qnFiYvOLEeanyK3wteWQ3w" name="b">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qnGJcPOLEeanyK3wteWQ3w" name="changeMode">
          <ownedParameter xmi:id="_qnGJcfOLEeanyK3wteWQ3w" name="m">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_qnGJcvOLEeanyK3wteWQ3w" name="saveDialog">
          <ownedParameter xmi:id="_q0z1UPOLEeanyK3wteWQ3w" type="_qvbmEfOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qnGwgPOLEeanyK3wteWQ3w" name="loadDialog">
          <ownedParameter xmi:id="_q0z1UfOLEeanyK3wteWQ3w" type="_qvbmEfOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qnHXkPOLEeanyK3wteWQ3w" name="errorPopup">
          <ownedParameter xmi:id="_qnHXkfOLEeanyK3wteWQ3w" name="errorMessage">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_zmlocPOVEeanyK3wteWQ3w" name="load">
          <ownedParameter xmi:id="_zmlocfOVEeanyK3wteWQ3w" name="gizmos" type="_qxxvcPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qnH-oPOLEeanyK3wteWQ3w" name="Run">
        <generalization xmi:id="_q00cYPOLEeanyK3wteWQ3w" general="_qw3JcPOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q3IJgPOLEeanyK3wteWQ3w" name="serialVersionUID" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#long"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_q3IJgfOLEeanyK3wteWQ3w" value="1L"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3IwkPOLEeanyK3wteWQ3w" name="d" visibility="package" type="_qnEUQPOLEeanyK3wteWQ3w" association="_q6aHAPOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q3IwkvOLEeanyK3wteWQ3w" name="mL" visibility="private" type="_qkJjIPOLEeanyK3wteWQ3w" association="_q6auEfOLEeanyK3wteWQ3w"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4gCgPOLEeanyK3wteWQ3w" name="Run" specification="_qxmwUPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4gCgfOLEeanyK3wteWQ3w" name="display" type="_qnEUQPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4gCgvOLEeanyK3wteWQ3w" type="_qnH-oPOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>d = display;
		addButtons();
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4gCg_OLEeanyK3wteWQ3w" name="addButtons" specification="_qnJMwPOLEeanyK3wteWQ3w">
          <language>java</language>
          <body>setLayout(new GridLayout(4, 1));

		JButton startButton = new JButton(&quot;Start&quot;);
		startButton.setBackground(Color.LIGHT_GRAY);
		startButton.setForeground(Color.white);
		startButton.setMaximumSize(new Dimension(100, 100));
		add(startButton);

		JButton stopButton = new JButton(&quot;Stop&quot;);
		stopButton.setBackground(Color.LIGHT_GRAY);
		stopButton.setForeground(Color.white);
		stopButton.setMaximumSize(new Dimension(100, 100));
		add(stopButton);

		JButton pauseButton = new JButton(&quot;Pause&quot;);
		pauseButton.setBackground(Color.LIGHT_GRAY);
		pauseButton.setForeground(Color.white);
		pauseButton.setMaximumSize(new Dimension(100, 100));
		add(pauseButton);

		JButton BuildButton = new JButton(&quot;Build Mode&quot;);
		BuildButton.setBackground(Color.LIGHT_GRAY);
		BuildButton.setForeground(Color.white);
		BuildButton.setMaximumSize(new Dimension(100, 100));
		mL = new ModeListener(d,&quot;build&quot;);
		BuildButton.addActionListener(mL);
		add(BuildButton);

	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qnJMwPOLEeanyK3wteWQ3w" name="addButtons" visibility="private" method="_q4gCg_OLEeanyK3wteWQ3w"/>
        <ownedOperation xmi:id="_qxmwUPOLEeanyK3wteWQ3w" name="Run" method="_q4gCgPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qxnXYfOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qxnXYvOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_qxnXYPOLEeanyK3wteWQ3w" name="display" type="_qnEUQPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qxnXY_OLEeanyK3wteWQ3w" type="_qnH-oPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qnLB8POLEeanyK3wteWQ3w" name="RunBoard">
        <generalization xmi:id="_q024ovOLEeanyK3wteWQ3w" general="_qw3JcPOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q3J-sPOLEeanyK3wteWQ3w" name="serialVersionUID" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#long"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_q3J-sfOLEeanyK3wteWQ3w" value="1L"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3KlwPOLEeanyK3wteWQ3w" name="width" visibility="protected">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3LM0fOLEeanyK3wteWQ3w" name="height" visibility="protected">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <interfaceRealization xmi:id="_q01DcPOLEeanyK3wteWQ3w" client="_qnLB8POLEeanyK3wteWQ3w" supplier="_qxD9wPOLEeanyK3wteWQ3w" contract="_qxD9wPOLEeanyK3wteWQ3w"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4gpkPOLEeanyK3wteWQ3w" name="RunBoard" specification="_qnMQEPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4gpkfOLEeanyK3wteWQ3w" name="w">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4gpkvOLEeanyK3wteWQ3w" name="h">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4gpk_OLEeanyK3wteWQ3w" type="_qnLB8POLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>width = w;
		height = h;
		this.setBorder(BorderFactory.createLineBorder(Color.black));
		setBackground(Color.gray);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4hQoPOLEeanyK3wteWQ3w" name="getPreferredSize" specification="_qnM3I_OLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4hQofOLEeanyK3wteWQ3w" type="_qwy4AfOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>return new Dimension(width, height);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4hQovOLEeanyK3wteWQ3w" name="update" specification="_q02RkPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4hQo_OLEeanyK3wteWQ3w" name="arg0" type="_qxCIkfOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4hQpPOLEeanyK3wteWQ3w" name="arg1" type="_q0noEPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>repaint();
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qnMQEPOLEeanyK3wteWQ3w" name="RunBoard" method="_q4gpkPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qnM3IPOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qnM3IfOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_qnMQEfOLEeanyK3wteWQ3w" name="w">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qnMQEvOLEeanyK3wteWQ3w" name="h">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qnM3IvOLEeanyK3wteWQ3w" type="_qnLB8POLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qnM3I_OLEeanyK3wteWQ3w" name="getPreferredSize" method="_q4hQoPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q01qgPOLEeanyK3wteWQ3w" type="_qwy4AfOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_q02RkPOLEeanyK3wteWQ3w" name="update" method="_q4hQovOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q02RkfOLEeanyK3wteWQ3w" name="arg0" type="_qxCIkfOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q02RkvOLEeanyK3wteWQ3w" name="arg1" type="_q0noEPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qnPTYPOLEeanyK3wteWQ3w" name="TestBoard">
        <ownedComment xmi:id="_q5L_APOLEeanyK3wteWQ3w">
          <body>@author Murray Wood Demonstration of MVC and MIT Physics Collisions 2014</body>
        </ownedComment>
        <generalization xmi:id="_q06jAvOLEeanyK3wteWQ3w" general="_qw3JcPOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q3Ma8POLEeanyK3wteWQ3w" name="serialVersionUID" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#long"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_q3Ma8fOLEeanyK3wteWQ3w" value="1L"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3Ma8vOLEeanyK3wteWQ3w" name="width" visibility="protected">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q3NpEPOLEeanyK3wteWQ3w" name="height" visibility="protected">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <interfaceRealization xmi:id="_q04GwPOLEeanyK3wteWQ3w" client="_qnPTYPOLEeanyK3wteWQ3w" supplier="_qxD9wPOLEeanyK3wteWQ3w" contract="_qxD9wPOLEeanyK3wteWQ3w"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4h3sPOLEeanyK3wteWQ3w" name="TestBoard" specification="_qnQhgPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4h3sfOLEeanyK3wteWQ3w" name="w">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4h3svOLEeanyK3wteWQ3w" name="h">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4h3s_OLEeanyK3wteWQ3w" type="_qnPTYPOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>width = w;
		height = h;
		this.setBorder(BorderFactory.createLineBorder(Color.black));
		
		
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4iewPOLEeanyK3wteWQ3w" name="getPreferredSize" specification="_qnRIlPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4iewfOLEeanyK3wteWQ3w" type="_qwy4AfOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>return new Dimension(width, height);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4iewvOLEeanyK3wteWQ3w" name="paintComponent" specification="_q04t0fOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4iew_OLEeanyK3wteWQ3w" name="g" type="_qw93IPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>super.paintComponent(g);

		Graphics2D g2 = (Graphics2D) g;
		
		int width = getSize().width;
		int height = getSize().height ;
		int gridsize = 20;
		super.paintComponent(g);

		int htOfRow = height / (gridsize);
		for (int i = 1; i &lt;= gridsize; i++) {
			g.drawLine(0, i * htOfRow, width, i * htOfRow);
		}

		int wdOfRow = width / (gridsize);
		for (int i = 1; i &lt;= gridsize; i++) {
			g.drawLine(i * wdOfRow, 0, i * wdOfRow, height);
		}
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4iexPOLEeanyK3wteWQ3w" name="update" specification="_q05U4POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4iexfOLEeanyK3wteWQ3w" name="arg0" type="_qxCIkfOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4iexvOLEeanyK3wteWQ3w" name="arg1" type="_q0noEPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>repaint();
		</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qnQhgPOLEeanyK3wteWQ3w" name="TestBoard" method="_q4h3sPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qnRIkfOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qnRIkvOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_qnQhgfOLEeanyK3wteWQ3w" name="w">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qnRIkPOLEeanyK3wteWQ3w" name="h">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_qnRIk_OLEeanyK3wteWQ3w" type="_qnPTYPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_qnRIlPOLEeanyK3wteWQ3w" name="getPreferredSize" method="_q4iewPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q04t0POLEeanyK3wteWQ3w" type="_qwy4AfOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_q04t0fOLEeanyK3wteWQ3w" name="paintComponent" method="_q4iewvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q04t0vOLEeanyK3wteWQ3w" name="g" type="_qw93IPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_q05U4POLEeanyK3wteWQ3w" name="update" method="_q4iexPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q05U4fOLEeanyK3wteWQ3w" name="arg0" type="_qxCIkfOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q0578POLEeanyK3wteWQ3w" name="arg1" type="_q0noEPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qnUL4POLEeanyK3wteWQ3w" name="TestDriver">
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4kT8POLEeanyK3wteWQ3w" name="main" specification="_qnUy8POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4kT8fOLEeanyK3wteWQ3w" name="args">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q4kT8vOLEeanyK3wteWQ3w" value="*"/>
          </ownedParameter>
          <language>java</language>
          <body>Model m = new Model();
		TestingGUI x =new TestingGUI(m);
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qnUy8POLEeanyK3wteWQ3w" name="main" isStatic="true" method="_q4kT8POLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_qnUy8fOLEeanyK3wteWQ3w" name="args">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qnVaAPOLEeanyK3wteWQ3w" value="*"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_qnXPMPOLEeanyK3wteWQ3w" name="TestingGUI">
        <ownedAttribute xmi:id="_q3O3MPOLEeanyK3wteWQ3w" name="fl" visibility="private" type="_qkCOYPOLEeanyK3wteWQ3w" association="_q6b8MfOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q3PeQPOLEeanyK3wteWQ3w" name="frame" visibility="private" type="_qxNHsPOLEeanyK3wteWQ3w" association="_q6dKUPOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q3QFUPOLEeanyK3wteWQ3w" name="board" visibility="private" type="_qm9mkPOLEeanyK3wteWQ3w" association="_q6dxYfOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q3QsYfOLEeanyK3wteWQ3w" name="model" visibility="private" type="_qncuwPOLEeanyK3wteWQ3w" association="_q6e_gfOLEeanyK3wteWQ3w"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4k7APOLEeanyK3wteWQ3w" name="TestingGUI" specification="_qxv6QPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4k7AfOLEeanyK3wteWQ3w" name="m" type="_qncuwPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4k7AvOLEeanyK3wteWQ3w" type="_qnXPMPOLEeanyK3wteWQ3w" direction="return">
            <name xsi:nil="true"/>
          </ownedParameter>
          <language>java</language>
          <body>model=m;
		createAndShowGUI();
		
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4k7A_OLEeanyK3wteWQ3w" name="createAndShowGUI" specification="_qnYdUPOLEeanyK3wteWQ3w">
          <language>java</language>
          <body>frame = new JFrame(&quot;Flipper Prototype&quot;);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// Board is passed the Model so it can act as Observer
		board = new FlipperBoard(500, 500, model);
		
		Container cp = frame.getContentPane();
		frame.setFocusable(true);
		frame.addKeyListener(new FlipperListener(model));
		frame.add(board, BorderLayout.CENTER);					

		frame.pack();
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_qnYdUPOLEeanyK3wteWQ3w" name="createAndShowGUI" method="_q4k7A_OLEeanyK3wteWQ3w"/>
        <ownedOperation xmi:id="_qxv6QPOLEeanyK3wteWQ3w" name="TestingGUI" method="_q4k7APOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_qxwhUfOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_qxwhUvOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_qxwhUPOLEeanyK3wteWQ3w" name="m" type="_qncuwPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_qxwhU_OLEeanyK3wteWQ3w" type="_qnXPMPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6Ev0POLEeanyK3wteWQ3w" name="" memberEnd="_q6Ev0fOLEeanyK3wteWQ3w _q2GOwfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6Ev0fOLEeanyK3wteWQ3w" name="" type="_qmd3UPOLEeanyK3wteWQ3w" association="_q6Ev0POLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6JBQfOLEeanyK3wteWQ3w" name="" memberEnd="_q6JBQvOLEeanyK3wteWQ3w _q2J5IPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6JBQvOLEeanyK3wteWQ3w" name="" type="_qmd3UPOLEeanyK3wteWQ3w" association="_q6JBQfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6KPYfOLEeanyK3wteWQ3w" name="" memberEnd="_q6KPYvOLEeanyK3wteWQ3w _q2KgMfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6KPYvOLEeanyK3wteWQ3w" name="" type="_qmd3UPOLEeanyK3wteWQ3w" association="_q6KPYfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6K2cfOLEeanyK3wteWQ3w" name="" memberEnd="_q6K2cvOLEeanyK3wteWQ3w _q2MVYPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6K2cvOLEeanyK3wteWQ3w" name="" type="_qmd3UPOLEeanyK3wteWQ3w" association="_q6K2cfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6MEkPOLEeanyK3wteWQ3w" name="" memberEnd="_q6MEkfOLEeanyK3wteWQ3w _q2M8cfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6MEkfOLEeanyK3wteWQ3w" name="" type="_qmd3UPOLEeanyK3wteWQ3w" association="_q6MEkPOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6MrofOLEeanyK3wteWQ3w" name="" memberEnd="_q6MrovOLEeanyK3wteWQ3w _q2OKkPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6MrovOLEeanyK3wteWQ3w" name="" type="_qmd3UPOLEeanyK3wteWQ3w" association="_q6MrofOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6N5wPOLEeanyK3wteWQ3w" name="" memberEnd="_q6N5wfOLEeanyK3wteWQ3w _q2OxoPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6N5wfOLEeanyK3wteWQ3w" name="" type="_qmd3UPOLEeanyK3wteWQ3w" association="_q6N5wPOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6Og0fOLEeanyK3wteWQ3w" name="" memberEnd="_q6Og0vOLEeanyK3wteWQ3w _q2TqIfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6Og0vOLEeanyK3wteWQ3w" name="" type="_qmyAYPOLEeanyK3wteWQ3w" association="_q6Og0fOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6Pu8POLEeanyK3wteWQ3w" name="" memberEnd="_q6Pu8fOLEeanyK3wteWQ3w _q2URMfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6Pu8fOLEeanyK3wteWQ3w" name="" type="_qmyAYPOLEeanyK3wteWQ3w" association="_q6Pu8POLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6QWAfOLEeanyK3wteWQ3w" name="" memberEnd="_q6QWAvOLEeanyK3wteWQ3w _q2VfUPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6QWAvOLEeanyK3wteWQ3w" name="" type="_qmyAYPOLEeanyK3wteWQ3w" association="_q6QWAfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6RkIPOLEeanyK3wteWQ3w" name="" memberEnd="_q6RkIfOLEeanyK3wteWQ3w _q2WGYPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6RkIfOLEeanyK3wteWQ3w" name="" type="_qmyAYPOLEeanyK3wteWQ3w" association="_q6RkIPOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6SLMfOLEeanyK3wteWQ3w" name="" memberEnd="_q6SLMvOLEeanyK3wteWQ3w _q2WtcPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6SLMvOLEeanyK3wteWQ3w" name="" type="_qmyAYPOLEeanyK3wteWQ3w" association="_q6SLMfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6TZUfOLEeanyK3wteWQ3w" name="" memberEnd="_q6TZUvOLEeanyK3wteWQ3w _q2XUgfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6TZUvOLEeanyK3wteWQ3w" name="" type="_qmyAYPOLEeanyK3wteWQ3w" association="_q6TZUfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6UAYfOLEeanyK3wteWQ3w" name="" memberEnd="_q6UAYvOLEeanyK3wteWQ3w _q2X7kfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6UAYvOLEeanyK3wteWQ3w" name="" type="_qmyAYPOLEeanyK3wteWQ3w" association="_q6UAYfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6VOgfOLEeanyK3wteWQ3w" name="" memberEnd="_q6VOgvOLEeanyK3wteWQ3w _q2YiofOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6VOgvOLEeanyK3wteWQ3w" name="" type="_qmyAYPOLEeanyK3wteWQ3w" association="_q6VOgfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6V1kfOLEeanyK3wteWQ3w" name="" memberEnd="_q6V1kvOLEeanyK3wteWQ3w _q2ZJsPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6V1kvOLEeanyK3wteWQ3w" name="" type="_qmyAYPOLEeanyK3wteWQ3w" association="_q6V1kfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6XDsfOLEeanyK3wteWQ3w" name="" memberEnd="_q6XDsvOLEeanyK3wteWQ3w _q2ZwwPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6XDsvOLEeanyK3wteWQ3w" name="" type="_qmyAYPOLEeanyK3wteWQ3w" association="_q6XDsfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6YR0POLEeanyK3wteWQ3w" name="" memberEnd="_q6YR0fOLEeanyK3wteWQ3w _q2ZwwvOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6YR0fOLEeanyK3wteWQ3w" name="" type="_qmyAYPOLEeanyK3wteWQ3w" association="_q6YR0POLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6Y44fOLEeanyK3wteWQ3w" name="" memberEnd="_q6Y44vOLEeanyK3wteWQ3w _q3G7YfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6Y44vOLEeanyK3wteWQ3w" name="" type="_qm9mkPOLEeanyK3wteWQ3w" association="_q6Y44fOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6aHAPOLEeanyK3wteWQ3w" name="" memberEnd="_q6aHAfOLEeanyK3wteWQ3w _q3IwkPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6aHAfOLEeanyK3wteWQ3w" name="" type="_qnH-oPOLEeanyK3wteWQ3w" association="_q6aHAPOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6auEfOLEeanyK3wteWQ3w" name="" memberEnd="_q6auEvOLEeanyK3wteWQ3w _q3IwkvOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6auEvOLEeanyK3wteWQ3w" name="" type="_qnH-oPOLEeanyK3wteWQ3w" association="_q6auEfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6b8MfOLEeanyK3wteWQ3w" name="" memberEnd="_q6b8MvOLEeanyK3wteWQ3w _q3O3MPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6b8MvOLEeanyK3wteWQ3w" name="" type="_qnXPMPOLEeanyK3wteWQ3w" association="_q6b8MfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6dKUPOLEeanyK3wteWQ3w" name="" memberEnd="_q6dKUfOLEeanyK3wteWQ3w _q3PeQPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6dKUfOLEeanyK3wteWQ3w" name="" type="_qnXPMPOLEeanyK3wteWQ3w" association="_q6dKUPOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6dxYfOLEeanyK3wteWQ3w" name="" memberEnd="_q6dxYvOLEeanyK3wteWQ3w _q3QFUPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6dxYvOLEeanyK3wteWQ3w" name="" type="_qnXPMPOLEeanyK3wteWQ3w" association="_q6dxYfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6e_gfOLEeanyK3wteWQ3w" name="" memberEnd="_q6e_gvOLEeanyK3wteWQ3w _q3QsYfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6e_gvOLEeanyK3wteWQ3w" name="" type="_qnXPMPOLEeanyK3wteWQ3w" association="_q6e_gfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6rz0POLEeanyK3wteWQ3w" name="" memberEnd="_q6rz0fOLEeanyK3wteWQ3w _q5I7sPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6rz0fOLEeanyK3wteWQ3w" name="" type="_qmd3UPOLEeanyK3wteWQ3w" association="_q6rz0POLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6sa4fOLEeanyK3wteWQ3w" name="" memberEnd="_q6sa4vOLEeanyK3wteWQ3w _q5JiwPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6sa4vOLEeanyK3wteWQ3w" name="" type="_qmd3UPOLEeanyK3wteWQ3w" association="_q6sa4fOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6tpAPOLEeanyK3wteWQ3w" name="" memberEnd="_q6tpAfOLEeanyK3wteWQ3w _q5Jiw_OLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6tpAfOLEeanyK3wteWQ3w" name="" type="_qmd3UPOLEeanyK3wteWQ3w" association="_q6tpAPOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_uawy4POMEeanyK3wteWQ3w" name="" memberEnd="_uawy4fOMEeanyK3wteWQ3w _q2G10fOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_uawy4fOMEeanyK3wteWQ3w" name="" type="_qmd3UPOLEeanyK3wteWQ3w" association="_uawy4POMEeanyK3wteWQ3w"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_qeyiAPOLEeanyK3wteWQ3w" name="physics">
      <packagedElement xmi:type="uml:Class" xmi:id="_qwKl4POLEeanyK3wteWQ3w" name="Vect"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_qwQsgPOLEeanyK3wteWQ3w" name="Circle"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_q08YMPOLEeanyK3wteWQ3w" name="LineSegment"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_qfwLUPOLEeanyK3wteWQ3w" name="staffui">
      <packagedElement xmi:type="uml:Class" xmi:id="_qmMKgPOLEeanyK3wteWQ3w" name="MagicKeyListener">
        <ownedComment xmi:id="_q5Htk_OLEeanyK3wteWQ3w">
          <body>**************************************************************************
Copyright (C) 2001 by the Massachusetts Institute of Technology,
                      Cambridge, Massachusetts.
 *
                       All Rights Reserved
 *
Permission to use, copy, modify, and distribute this software and
its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appear in all
copies and that both that copyright notice and this permission
notice appear in supporting documentation, and that MIT's name not
be used in advertising or publicity pertaining to distribution of
the software without specific, written prior permission.
 *
THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL THE MASSACHUSETTS
INSTITUTE OF TECHNOLOGY BE LIABLE FOR ANY SPECIAL, INDIRECT OR
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 *
 **************************************************************************</body>
        </ownedComment>
        <ownedAttribute xmi:id="_q1-S8POLEeanyK3wteWQ3w" name="adaptee" visibility="private" isLeaf="true" type="_qvFn0fOLEeanyK3wteWQ3w" isReadOnly="true" association="_q6AeYfOLEeanyK3wteWQ3w"/>
        <ownedAttribute xmi:id="_q1-6AfOLEeanyK3wteWQ3w" name="real" visibility="private" isLeaf="true" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q1_hEPOLEeanyK3wteWQ3w" value="*"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_q1_hEfOLEeanyK3wteWQ3w" value="new HashSet&lt;Integer>()"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q2AIIfOLEeanyK3wteWQ3w" name="announced" visibility="private" isLeaf="true" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q2AIIvOLEeanyK3wteWQ3w" value="*"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_q2AvMPOLEeanyK3wteWQ3w" value="new HashSet&lt;Integer>()"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_q2BWQPOLEeanyK3wteWQ3w" name="assumeAllReleased" visibility="private" isLeaf="true" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
        </ownedAttribute>
        <interfaceRealization xmi:id="_q0UGEPOLEeanyK3wteWQ3w" client="_qmMKgPOLEeanyK3wteWQ3w" supplier="_qvFn0fOLEeanyK3wteWQ3w" contract="_qvFn0fOLEeanyK3wteWQ3w"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4UcVPOLEeanyK3wteWQ3w" name="MagicKeyListener" specification="_q0UGEfOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4UcVfOLEeanyK3wteWQ3w" name="adaptee" type="_qvFn0fOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4UcVvOLEeanyK3wteWQ3w" type="_qmMKgPOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>this(adaptee, false);
  </body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4VDYPOLEeanyK3wteWQ3w" name="MagicKeyListener" specification="_q0VUMPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4VDYfOLEeanyK3wteWQ3w" name="adaptee" type="_qvFn0fOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4VDYvOLEeanyK3wteWQ3w" name="assumeAllReleased">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4VDY_OLEeanyK3wteWQ3w" type="_qmMKgPOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>if (adaptee == null) throw new IllegalArgumentException();
 this.adaptee = adaptee;
 this.assumeAllReleased = assumeAllReleased;
  </body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4VDZPOLEeanyK3wteWQ3w" name="marker" specification="_q0V7QPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4VDZfOLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4VDZvOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
          </ownedParameter>
          <language>java</language>
          <body>return new Integer(e.getKeyCode());
  </body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4VqcPOLEeanyK3wteWQ3w" name="eventFromMarker" specification="_q0XJYPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4VqcfOLEeanyK3wteWQ3w" name="marker">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q4VqcvOLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q4Vqc_OLEeanyK3wteWQ3w" type="_qvFAwPOLEeanyK3wteWQ3w" direction="return"/>
          <language>java</language>
          <body>Component source = e.getComponent();
 int id = e.getID();
 long when = e.getWhen();
 int modifiers = e.getModifiers();
 int keyCode = marker.intValue();
 char keyChar = e.getKeyChar();

 return new KeyEvent(source, id, when, modifiers, keyCode, keyChar);
  </body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4VqdPOLEeanyK3wteWQ3w" name="keyPressed" specification="_q0XwcPOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4VqdfOLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>real.add(marker(e));
 SwingUtilities.invokeLater(new KeyPressedLater(e));
  </body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4WRgPOLEeanyK3wteWQ3w" name="keyReleased" specification="_q0XwcvOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4WRgfOLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>real.remove(marker(e));
 SwingUtilities.invokeLater(new KeyReleasedLater(e));

 if (assumeAllReleased) {
   while (!real.isEmpty()) {
	Integer marker;
	{
	  Iterator&lt;Integer> chooser = real.iterator();
	  marker = chooser.next();
	  chooser.remove();
	}
	KeyEvent event = eventFromMarker(marker, e);
	SwingUtilities.invokeLater(new KeyReleasedLater(event));
   }
 }
  </body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4WRgvOLEeanyK3wteWQ3w" name="keyTyped" specification="_q0YXgfOLEeanyK3wteWQ3w">
          <ownedParameter xmi:id="_q4WRg_OLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
          <language>java</language>
          <body>SwingUtilities.invokeLater(new KeyTypedLater(e));
  </body>
        </ownedBehavior>
        <ownedOperation xmi:id="_q0UGEfOLEeanyK3wteWQ3w" name="MagicKeyListener" method="_q4UcVPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_q0UtIfOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_q0UtIvOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedComment xmi:id="_q5HtlPOLEeanyK3wteWQ3w">
            <body>@requires adaptee != null
   * 
   * @effects creates a new MagicKeyListener without the generation of
   * additional key release events (the third option given in the
   * class overview is disabled).</body>
          </ownedComment>
          <ownedParameter xmi:id="_q0UtIPOLEeanyK3wteWQ3w" name="adaptee" type="_qvFn0fOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q0UtI_OLEeanyK3wteWQ3w" type="_qmMKgPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_q0VUMPOLEeanyK3wteWQ3w" name="MagicKeyListener" method="_q4VDYPOLEeanyK3wteWQ3w">
          <eAnnotations xmi:id="_q0VUM_OLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_q0VUNPOLEeanyK3wteWQ3w" key="create"/>
          </eAnnotations>
          <ownedComment xmi:id="_q5HtlfOLEeanyK3wteWQ3w">
            <body>@requires adaptee != null
   *
   * @param assumeAllReleased enables the third option listed in the
   * class overview, namely that any key release event implies that
   * all keys have been released.
   *
   * @effects creates a new MagicKeyListener.</body>
          </ownedComment>
          <ownedParameter xmi:id="_q0VUMfOLEeanyK3wteWQ3w" name="adaptee" type="_qvFn0fOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q0VUMvOLEeanyK3wteWQ3w" name="assumeAllReleased">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q0VUNfOLEeanyK3wteWQ3w" type="_qmMKgPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_q0V7QPOLEeanyK3wteWQ3w" name="marker" visibility="private" isStatic="true" method="_q4VDZPOLEeanyK3wteWQ3w">
          <ownedComment xmi:id="_q5HtlvOLEeanyK3wteWQ3w">
            <body>@returns an immutable object which is representative of the key
   * associated with the given event</body>
          </ownedComment>
          <ownedParameter xmi:id="_q0V7QfOLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q0WiUPOLEeanyK3wteWQ3w" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_q0XJYPOLEeanyK3wteWQ3w" name="eventFromMarker" visibility="private" isStatic="true" method="_q4VqcPOLEeanyK3wteWQ3w">
          <ownedComment xmi:id="_q5IUoPOLEeanyK3wteWQ3w">
            <body>@returns an event which is constructed from the given immutable
   * key (from the marker method) and a template event.</body>
          </ownedComment>
          <ownedParameter xmi:id="_q0XJYfOLEeanyK3wteWQ3w" name="marker">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
          </ownedParameter>
          <ownedParameter xmi:id="_q0XJYvOLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
          <ownedParameter xmi:id="_q0XJY_OLEeanyK3wteWQ3w" type="_qvFAwPOLEeanyK3wteWQ3w" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_q0XwcPOLEeanyK3wteWQ3w" name="keyPressed" method="_q4VqdPOLEeanyK3wteWQ3w">
          <ownedComment xmi:id="_q5IUofOLEeanyK3wteWQ3w">
            <body>@effects Acts on the given event as specified in the class overview.</body>
          </ownedComment>
          <ownedParameter xmi:id="_q0XwcfOLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_q0XwcvOLEeanyK3wteWQ3w" name="keyReleased" method="_q4WRgPOLEeanyK3wteWQ3w">
          <ownedComment xmi:id="_q5IUovOLEeanyK3wteWQ3w">
            <body>@effects Acts on the given event as specified in the class overview.</body>
          </ownedComment>
          <ownedParameter xmi:id="_q0YXgPOLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <ownedOperation xmi:id="_q0YXgfOLEeanyK3wteWQ3w" name="keyTyped" method="_q4WRgvOLEeanyK3wteWQ3w">
          <ownedComment xmi:id="_q5IUo_OLEeanyK3wteWQ3w">
            <body>@effects Acts on the given event as specified in the class overview</body>
          </ownedComment>
          <ownedParameter xmi:id="_q0Y-kPOLEeanyK3wteWQ3w" name="e" type="_qvFAwPOLEeanyK3wteWQ3w"/>
        </ownedOperation>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_qmPN0POLEeanyK3wteWQ3w" name="KeyTypedLater" visibility="private">
          <ownedComment xmi:id="_q5IUpPOLEeanyK3wteWQ3w">
            <body>A simple class which forms a closure around a key typed event.
   * When run, it fires the event to the keyTyped method of the
   * adaptee.</body>
          </ownedComment>
          <ownedAttribute xmi:id="_q2B9UfOLEeanyK3wteWQ3w" name="event" visibility="private" isLeaf="true" type="_qvFAwPOLEeanyK3wteWQ3w" isReadOnly="true" association="_q6BsgfOLEeanyK3wteWQ3w"/>
          <interfaceRealization xmi:id="_q0azwPOLEeanyK3wteWQ3w" client="_qmPN0POLEeanyK3wteWQ3w" supplier="_q0ZlofOLEeanyK3wteWQ3w" contract="_q0ZlofOLEeanyK3wteWQ3w"/>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4WRhPOLEeanyK3wteWQ3w" name="KeyTypedLater" specification="_q0cB4POLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_q4WRhfOLEeanyK3wteWQ3w" name="event" type="_qvFAwPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q4WRhvOLEeanyK3wteWQ3w" type="_qmPN0POLEeanyK3wteWQ3w" direction="return"/>
            <language>java</language>
            <body>this.event = event;
 </body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4W4kPOLEeanyK3wteWQ3w" name="run" specification="_qmQb8POLEeanyK3wteWQ3w">
            <language>java</language>
            <body>adaptee.keyTyped(event);
 </body>
          </ownedBehavior>
          <ownedOperation xmi:id="_qmQb8POLEeanyK3wteWQ3w" name="run" method="_q4W4kPOLEeanyK3wteWQ3w"/>
          <ownedOperation xmi:id="_q0cB4POLEeanyK3wteWQ3w" name="KeyTypedLater" visibility="private" method="_q4WRhPOLEeanyK3wteWQ3w">
            <eAnnotations xmi:id="_q0cB4vOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_q0cB4_OLEeanyK3wteWQ3w" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_q0cB4fOLEeanyK3wteWQ3w" name="event" type="_qvFAwPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q0cB5POLEeanyK3wteWQ3w" type="_qmPN0POLEeanyK3wteWQ3w" direction="return"/>
          </ownedOperation>
        </nestedClassifier>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_qmUGUPOLEeanyK3wteWQ3w" name="KeyPressedLater" visibility="private">
          <ownedComment xmi:id="_q5IUpfOLEeanyK3wteWQ3w">
            <body>A simple class which forms a closure around an key pressed event.
   * When run, it fires the event to the keyPressed method of the
   * adaptee only if the pressed keyset still contains this key and
   * the adaptee has not already been informed.</body>
          </ownedComment>
          <ownedAttribute xmi:id="_q2DLcPOLEeanyK3wteWQ3w" name="event" visibility="private" isLeaf="true" type="_qvFAwPOLEeanyK3wteWQ3w" isReadOnly="true" association="_q6CTkfOLEeanyK3wteWQ3w"/>
          <interfaceRealization xmi:id="_q0co8POLEeanyK3wteWQ3w" client="_qmUGUPOLEeanyK3wteWQ3w" supplier="_q0ZlofOLEeanyK3wteWQ3w" contract="_q0ZlofOLEeanyK3wteWQ3w"/>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4W4kfOLEeanyK3wteWQ3w" name="KeyPressedLater" specification="_q0dQAPOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_q4W4kvOLEeanyK3wteWQ3w" name="event" type="_qvFAwPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q4W4k_OLEeanyK3wteWQ3w" type="_qmUGUPOLEeanyK3wteWQ3w" direction="return"/>
            <language>java</language>
            <body>this.event = event;
 </body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4W4lPOLEeanyK3wteWQ3w" name="run" specification="_qmUtYPOLEeanyK3wteWQ3w">
            <language>java</language>
            <body>Integer key = marker(event);
   if (real.contains(key) &amp;&amp; !announced.contains(key)) {
	announced.add(key);
	adaptee.keyPressed(event);
   }
 </body>
          </ownedBehavior>
          <ownedOperation xmi:id="_qmUtYPOLEeanyK3wteWQ3w" name="run" method="_q4W4lPOLEeanyK3wteWQ3w"/>
          <ownedOperation xmi:id="_q0dQAPOLEeanyK3wteWQ3w" name="KeyPressedLater" visibility="private" method="_q4W4kfOLEeanyK3wteWQ3w">
            <eAnnotations xmi:id="_q0dQAvOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_q0d3EPOLEeanyK3wteWQ3w" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_q0dQAfOLEeanyK3wteWQ3w" name="event" type="_qvFAwPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q0d3EfOLEeanyK3wteWQ3w" type="_qmUGUPOLEeanyK3wteWQ3w" direction="return"/>
          </ownedOperation>
        </nestedClassifier>
        <nestedClassifier xmi:type="uml:Class" xmi:id="_qmV7gPOLEeanyK3wteWQ3w" name="KeyReleasedLater" visibility="private">
          <ownedComment xmi:id="_q5IUpvOLEeanyK3wteWQ3w">
            <body>A simple class which forms a closure around an key released
   * event.  When run, it fires the event to the keyReleased method of
   * the adaptee only if the pressed keyset does not contains this key
   * and the adaptee has not already been informed of the release.</body>
          </ownedComment>
          <ownedAttribute xmi:id="_q2DygfOLEeanyK3wteWQ3w" name="event" visibility="private" isLeaf="true" type="_qvFAwPOLEeanyK3wteWQ3w" isReadOnly="true" association="_q6DhsfOLEeanyK3wteWQ3w"/>
          <interfaceRealization xmi:id="_q0eeIPOLEeanyK3wteWQ3w" client="_qmV7gPOLEeanyK3wteWQ3w" supplier="_q0ZlofOLEeanyK3wteWQ3w" contract="_q0ZlofOLEeanyK3wteWQ3w"/>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4XfoPOLEeanyK3wteWQ3w" name="KeyReleasedLater" specification="_q0fFMPOLEeanyK3wteWQ3w">
            <ownedParameter xmi:id="_q4XfofOLEeanyK3wteWQ3w" name="event" type="_qvFAwPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q4XfovOLEeanyK3wteWQ3w" type="_qmV7gPOLEeanyK3wteWQ3w" direction="return"/>
            <language>java</language>
            <body>this.event = event;
 </body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_q4Xfo_OLEeanyK3wteWQ3w" name="run" specification="_qmWikPOLEeanyK3wteWQ3w">
            <language>java</language>
            <body>Integer key = marker(event);
   if (!real.contains(key) &amp;&amp; announced.contains(key)) {
	announced.remove(key);
	adaptee.keyReleased(event);
   }
 </body>
          </ownedBehavior>
          <ownedOperation xmi:id="_qmWikPOLEeanyK3wteWQ3w" name="run" method="_q4Xfo_OLEeanyK3wteWQ3w"/>
          <ownedOperation xmi:id="_q0fFMPOLEeanyK3wteWQ3w" name="KeyReleasedLater" visibility="private" method="_q4XfoPOLEeanyK3wteWQ3w">
            <eAnnotations xmi:id="_q0fFMvOLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_q0fFM_OLEeanyK3wteWQ3w" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_q0fFMfOLEeanyK3wteWQ3w" name="event" type="_qvFAwPOLEeanyK3wteWQ3w"/>
            <ownedParameter xmi:id="_q0fsQPOLEeanyK3wteWQ3w" type="_qmV7gPOLEeanyK3wteWQ3w" direction="return"/>
          </ownedOperation>
        </nestedClassifier>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6AeYfOLEeanyK3wteWQ3w" name="" memberEnd="_q6AeYvOLEeanyK3wteWQ3w _q1-S8POLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6AeYvOLEeanyK3wteWQ3w" name="" type="_qmMKgPOLEeanyK3wteWQ3w" association="_q6AeYfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6BsgfOLEeanyK3wteWQ3w" name="" memberEnd="_q6BsgvOLEeanyK3wteWQ3w _q2B9UfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6BsgvOLEeanyK3wteWQ3w" name="" type="_qmPN0POLEeanyK3wteWQ3w" association="_q6BsgfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6CTkfOLEeanyK3wteWQ3w" name="" memberEnd="_q6CTkvOLEeanyK3wteWQ3w _q2DLcPOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6CTkvOLEeanyK3wteWQ3w" name="" type="_qmUGUPOLEeanyK3wteWQ3w" association="_q6CTkfOLEeanyK3wteWQ3w"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_q6DhsfOLEeanyK3wteWQ3w" name="" memberEnd="_q6DhsvOLEeanyK3wteWQ3w _q2DygfOLEeanyK3wteWQ3w">
        <ownedEnd xmi:id="_q6DhsvOLEeanyK3wteWQ3w" name="" type="_qmV7gPOLEeanyK3wteWQ3w" association="_q6DhsfOLEeanyK3wteWQ3w"/>
      </packagedElement>
    </packagedElement>
    <profileApplication xmi:id="_pd33kPOLEeanyK3wteWQ3w">
      <eAnnotations xmi:id="_pd7h8POLEeanyK3wteWQ3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
        <references xmi:type="ecore:EPackage" href="pathmap://UMLLAB_PROFILES/UMLLab.profile.uml#UMLLabProfile-Annotation_2-UMLLabProfile"/>
      </eAnnotations>
      <appliedProfile href="pathmap://UMLLAB_PROFILES/UMLLab.profile.uml#UMLLabProfile"/>
    </profileApplication>
  </uml:Model>
  <UMLLabProfile:TargetLanguage xmi:id="_pd8JAPOLEeanyK3wteWQ3w" base_Package="_pRRmAPOLEeanyK3wteWQ3w">
    <languageName>java</languageName>
  </UMLLabProfile:TargetLanguage>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qkgvgfOLEeanyK3wteWQ3w" base_Element="_qkfhYPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qkhWkPOLEeanyK3wteWQ3w" base_Element="_qkfhYPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qkh9oPOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qkiksfOLEeanyK3wteWQ3w" base_Element="_qkh9ofOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qkjLwPOLEeanyK3wteWQ3w" base_Element="_qkh9ofOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qkjLwfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qkruoPOLEeanyK3wteWQ3w" base_Element="_qkrHkPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qkruofOLEeanyK3wteWQ3w" base_Element="_qkrHkPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qksVsPOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qlF-UPOLEeanyK3wteWQ3w" base_Element="_qlEwM_OLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qlF-UfOLEeanyK3wteWQ3w" base_Element="_qlEwM_OLEeanyK3wteWQ3w">
    <annotations xmi:id="_qlF-UvOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qlHMcPOLEeanyK3wteWQ3w" base_Element="_qlF-U_OLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qlHMcfOLEeanyK3wteWQ3w" base_Element="_qlF-U_OLEeanyK3wteWQ3w">
    <annotations xmi:id="_qlHMcvOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qlIakPOLEeanyK3wteWQ3w" base_Element="_qlHzgPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qlJosPOLEeanyK3wteWQ3w" base_Element="_qlHzgPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qlJosfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qlK20POLEeanyK3wteWQ3w" base_Element="_qlKPwPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qlLd4POLEeanyK3wteWQ3w" base_Element="_qlKPwPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qlLd4fOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qlME8POLEeanyK3wteWQ3w" base_Element="_qlLd4vOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qlMsAPOLEeanyK3wteWQ3w" base_Element="_qlLd4vOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qlMsAfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qlNTEPOLEeanyK3wteWQ3w" base_Element="_qlMsAvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qlN6IPOLEeanyK3wteWQ3w" base_Element="_qlMsAvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qlN6IfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qlOhMfOLEeanyK3wteWQ3w" base_Element="_qlN6IvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qlPIQPOLEeanyK3wteWQ3w" base_Element="_qlN6IvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qlPIQfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qlRkgfOLEeanyK3wteWQ3w" base_Element="_qlPIQvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qlSLkPOLEeanyK3wteWQ3w" base_Element="_qlPIQvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qlSLkfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qlSyoPOLEeanyK3wteWQ3w" base_Element="_qlSLkvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qlTZsPOLEeanyK3wteWQ3w" base_Element="_qlSLkvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qlTZsfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qlUAwfOLEeanyK3wteWQ3w" base_Element="_qlTZsvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qlUn0POLEeanyK3wteWQ3w" base_Element="_qlTZsvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qlVO4POLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qlV18POLEeanyK3wteWQ3w" base_Element="_qlVO4fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qlWdAPOLEeanyK3wteWQ3w" base_Element="_qlVO4fOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qlWdAfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qlXrIPOLEeanyK3wteWQ3w" base_Element="_qlXEEPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qlZgUPOLEeanyK3wteWQ3w" base_Element="_qlXEEPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qlZgUfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qlaucPOLEeanyK3wteWQ3w" base_Element="_qlaHYPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qlaucfOLEeanyK3wteWQ3w" base_Element="_qlaHYPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qlaucvOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qlbVgfOLEeanyK3wteWQ3w" base_Element="_qlbVgPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qlb8kPOLEeanyK3wteWQ3w" base_Element="_qlbVgPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qlb8kfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qleY0POLEeanyK3wteWQ3w" base_Element="_qlcjoPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qlfm8POLEeanyK3wteWQ3w" base_Element="_qlcjoPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qlfm8fOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qlg1EPOLEeanyK3wteWQ3w" base_Element="_qlgOAPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qlg1EfOLEeanyK3wteWQ3w" base_Element="_qlgOAPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qlg1EvOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qngZIPOLEeanyK3wteWQ3w" base_Element="_qnfyFPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qnhAMPOLEeanyK3wteWQ3w" base_Element="_qnfyFPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qnhAMfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qni1YPOLEeanyK3wteWQ3w" base_Element="_qniOUfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qnjccPOLEeanyK3wteWQ3w" base_Element="_qniOUfOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qnjccfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qnkDgfOLEeanyK3wteWQ3w" base_Element="_qnkDgPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qnkqkPOLEeanyK3wteWQ3w" base_Element="_qnkDgPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qnkqkfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qnlRoPOLEeanyK3wteWQ3w" base_Element="_qnkqkvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qnmfwPOLEeanyK3wteWQ3w" base_Element="_qnkqkvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qnnG0POLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qnt0gPOLEeanyK3wteWQ3w" base_Element="_qnsmYPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qnubkPOLEeanyK3wteWQ3w" base_Element="_qnsmYPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qnubkfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qnytAPOLEeanyK3wteWQ3w" base_Element="_qnyF8POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qnzUEPOLEeanyK3wteWQ3w" base_Element="_qnyF8POLEeanyK3wteWQ3w">
    <annotations xmi:id="_qnzUEfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qnz7IfOLEeanyK3wteWQ3w" base_Element="_qnz7IPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qn0iMPOLEeanyK3wteWQ3w" base_Element="_qnz7IPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qn0iMfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qn2XYPOLEeanyK3wteWQ3w" base_Element="_qn1JQPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qn2-cPOLEeanyK3wteWQ3w" base_Element="_qn1JQPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qn2-cfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qn4MkPOLEeanyK3wteWQ3w" base_Element="_qn3lgPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qn4zoPOLEeanyK3wteWQ3w" base_Element="_qn3lgPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qn4zofOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_qvEZsPOLEeanyK3wteWQ3w" base_Element="_qu7PwPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qvFn0POLEeanyK3wteWQ3w" base_Element="_qvFAwPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qvOKsPOLEeanyK3wteWQ3w" base_Element="_qvFn0fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qvPY0POLEeanyK3wteWQ3w" base_Element="_qvOKsfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qvP_4POLEeanyK3wteWQ3w" base_Element="_qvPY0fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qvQm8POLEeanyK3wteWQ3w" base_Element="_qvP_4fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qvbmEPOLEeanyK3wteWQ3w" base_Element="_qva_APOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qvcNIPOLEeanyK3wteWQ3w" base_Element="_qvbmEfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qv0AkPOLEeanyK3wteWQ3w" base_Element="_qvzZgPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qv1OsPOLEeanyK3wteWQ3w" base_Element="_qv0noPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qwL0APOLEeanyK3wteWQ3w" base_Element="_qwKl4POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qwOQQPOLEeanyK3wteWQ3w" base_Element="_qwNpMPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qwRTkPOLEeanyK3wteWQ3w" base_Element="_qwQsgPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qwTIwPOLEeanyK3wteWQ3w" base_Element="_qwShsPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qwTv0POLEeanyK3wteWQ3w" base_Element="_qwTIwfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qwWMEPOLEeanyK3wteWQ3w" base_Element="_qwVlAvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qwWzIPOLEeanyK3wteWQ3w" base_Element="_qwVlAvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qwWzIfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qwXaMvOLEeanyK3wteWQ3w" base_Element="_qwXaMPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qwYBQPOLEeanyK3wteWQ3w" base_Element="_qwXaMPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qwYBQfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qwYoUPOLEeanyK3wteWQ3w" base_Element="_qwYBQvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qwYoUfOLEeanyK3wteWQ3w" base_Element="_qwYBQvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qwZPYPOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_qwpHAPOLEeanyK3wteWQ3w" base_Element="_qwof8POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qwqVIPOLEeanyK3wteWQ3w" base_Element="_qwpuEPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qwq8MPOLEeanyK3wteWQ3w" base_Element="_qwqVIfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qwy4APOLEeanyK3wteWQ3w" base_Element="_qwyQ8POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qwzfEPOLEeanyK3wteWQ3w" base_Element="_qwy4AfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qw0tMPOLEeanyK3wteWQ3w" base_Element="_qw0GIPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qw17UPOLEeanyK3wteWQ3w" base_Element="_qw0tMfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qw4XkPOLEeanyK3wteWQ3w" base_Element="_qw3JcPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qw4-oPOLEeanyK3wteWQ3w" base_Element="_qw4XkfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qw-eMPOLEeanyK3wteWQ3w" base_Element="_qw93IPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qxCIkPOLEeanyK3wteWQ3w" base_Element="_qxA6cPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qxDWsPOLEeanyK3wteWQ3w" base_Element="_qxCIkfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qxEk0POLEeanyK3wteWQ3w" base_Element="_qxD9wPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qxFL4POLEeanyK3wteWQ3w" base_Element="_qxEk0fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qxI2QPOLEeanyK3wteWQ3w" base_Element="_qxIPMPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qxJdUPOLEeanyK3wteWQ3w" base_Element="_qxI2QfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qxKrcPOLEeanyK3wteWQ3w" base_Element="_qxKEYPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qxMgoPOLEeanyK3wteWQ3w" base_Element="_qxL5kPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qxNuwPOLEeanyK3wteWQ3w" base_Element="_qxNHsPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qxOV0POLEeanyK3wteWQ3w" base_Element="_qxNuwfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qxO84POLEeanyK3wteWQ3w" base_Element="_qxOV0fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qxVqkPOLEeanyK3wteWQ3w" base_Element="_qxPj8POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qxWRoPOLEeanyK3wteWQ3w" base_Element="_qxVqkfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qxXfwPOLEeanyK3wteWQ3w" base_Element="_qxW4sPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qxy9kPOLEeanyK3wteWQ3w" base_Element="_qxxvcPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qxzkoPOLEeanyK3wteWQ3w" base_Element="_qxy9kfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qx0ywPOLEeanyK3wteWQ3w" base_Element="_qx0LsPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qx1Z0POLEeanyK3wteWQ3w" base_Element="_qx0ywfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qx2n8POLEeanyK3wteWQ3w" base_Element="_qx1Z0fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qx4dIPOLEeanyK3wteWQ3w" base_Element="_qx32EPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_qx5rQPOLEeanyK3wteWQ3w" base_Element="_qx5EMPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qyC1MfOLEeanyK3wteWQ3w" base_Element="_qyCOIPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qyDcQPOLEeanyK3wteWQ3w" base_Element="_qyCOIPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qyDcQfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qyEqYvOLEeanyK3wteWQ3w" base_Element="_qyEqYPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qyFRcPOLEeanyK3wteWQ3w" base_Element="_qyEqYPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qyFRcfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qyGfkPOLEeanyK3wteWQ3w" base_Element="_qyF4gPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qyGfkfOLEeanyK3wteWQ3w" base_Element="_qyF4gPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qyJi4POLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qyKxAfOLEeanyK3wteWQ3w" base_Element="_qyKJ8POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qyL_IPOLEeanyK3wteWQ3w" base_Element="_qyKJ8POLEeanyK3wteWQ3w">
    <annotations xmi:id="_qyL_IfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qyNNQPOLEeanyK3wteWQ3w" base_Element="_qyMmMPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qyN0UPOLEeanyK3wteWQ3w" base_Element="_qyMmMPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qyN0UfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qyObYPOLEeanyK3wteWQ3w" base_Element="_qyN0UvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qyPpgPOLEeanyK3wteWQ3w" base_Element="_qyN0UvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qyPpgfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qySFwPOLEeanyK3wteWQ3w" base_Element="_qyQ3ovOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qySFwfOLEeanyK3wteWQ3w" base_Element="_qyQ3ovOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qySs0POLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qyuxsPOLEeanyK3wteWQ3w" base_Element="_qyuKoPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qyvYwPOLEeanyK3wteWQ3w" base_Element="_qyuKoPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qyvYwfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qyv_0POLEeanyK3wteWQ3w" base_Element="_qyvYwvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qyv_0fOLEeanyK3wteWQ3w" base_Element="_qyvYwvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qyv_0vOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qywm4vOLEeanyK3wteWQ3w" base_Element="_qywm4POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qyxN8POLEeanyK3wteWQ3w" base_Element="_qywm4POLEeanyK3wteWQ3w">
    <annotations xmi:id="_qyxN8fOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qyx1AfOLEeanyK3wteWQ3w" base_Element="_qyxN8vOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qyycEPOLEeanyK3wteWQ3w" base_Element="_qyxN8vOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qyycEfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qyzDIPOLEeanyK3wteWQ3w" base_Element="_qyycEvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qyzDIfOLEeanyK3wteWQ3w" base_Element="_qyycEvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qyzqMPOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qy0RQPOLEeanyK3wteWQ3w" base_Element="_qyzqMfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qy0RQfOLEeanyK3wteWQ3w" base_Element="_qyzqMfOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qy0RQvOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qy1fYPOLEeanyK3wteWQ3w" base_Element="_qy04UPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qy1fYfOLEeanyK3wteWQ3w" base_Element="_qy04UPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qy1fYvOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qy2GcvOLEeanyK3wteWQ3w" base_Element="_qy2GcPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qy2tgPOLEeanyK3wteWQ3w" base_Element="_qy2GcPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qy2tgfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qy3UkPOLEeanyK3wteWQ3w" base_Element="_qy2tgvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qy3UkfOLEeanyK3wteWQ3w" base_Element="_qy2tgvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qy3UkvOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qy37ovOLEeanyK3wteWQ3w" base_Element="_qy37oPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qy6-8POLEeanyK3wteWQ3w" base_Element="_qy37oPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qy7mAPOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qy8NEPOLEeanyK3wteWQ3w" base_Element="_qy7mAfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qy80IPOLEeanyK3wteWQ3w" base_Element="_qy7mAfOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qy80IfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qy9bMPOLEeanyK3wteWQ3w" base_Element="_qy80IvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qy9bMfOLEeanyK3wteWQ3w" base_Element="_qy80IvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qy-CQPOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qy-pUPOLEeanyK3wteWQ3w" base_Element="_qy-CQfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qy-pUfOLEeanyK3wteWQ3w" base_Element="_qy-CQfOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qy-pUvOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qy_QYvOLEeanyK3wteWQ3w" base_Element="_qy_QYPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qy_3cPOLEeanyK3wteWQ3w" base_Element="_qy_QYPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qy_3cfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzAegPOLEeanyK3wteWQ3w" base_Element="_qy_3cvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzAegfOLEeanyK3wteWQ3w" base_Element="_qy_3cvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzAegvOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzBFkvOLEeanyK3wteWQ3w" base_Element="_qzBFkPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzBsoPOLEeanyK3wteWQ3w" base_Element="_qzBFkPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzBsofOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzCTsPOLEeanyK3wteWQ3w" base_Element="_qzBsovOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzDh0POLEeanyK3wteWQ3w" base_Element="_qzBsovOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzDh0fOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzEI4vOLEeanyK3wteWQ3w" base_Element="_qzEI4POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzEv8POLEeanyK3wteWQ3w" base_Element="_qzEI4POLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzEv8fOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_qzHMMPOLEeanyK3wteWQ3w" base_Element="_qzGlIPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzJBYPOLEeanyK3wteWQ3w" base_Element="_qzIaUPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzJocPOLEeanyK3wteWQ3w" base_Element="_qzIaUPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzJocfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzK2kvOLEeanyK3wteWQ3w" base_Element="_qzK2kPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzLdoPOLEeanyK3wteWQ3w" base_Element="_qzK2kPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzLdofOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzNS0POLEeanyK3wteWQ3w" base_Element="_qzMrwPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzNS0fOLEeanyK3wteWQ3w" base_Element="_qzMrwPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzNS0vOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzOg8POLEeanyK3wteWQ3w" base_Element="_qzN54POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzOg8fOLEeanyK3wteWQ3w" base_Element="_qzN54POLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzOg8vOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzPIAvOLEeanyK3wteWQ3w" base_Element="_qzPIAPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzPvEPOLEeanyK3wteWQ3w" base_Element="_qzPIAPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzPvEfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzQ9MPOLEeanyK3wteWQ3w" base_Element="_qzPvEvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzQ9MfOLEeanyK3wteWQ3w" base_Element="_qzPvEvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzQ9MvOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzRkQvOLEeanyK3wteWQ3w" base_Element="_qzRkQPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzSLUPOLEeanyK3wteWQ3w" base_Element="_qzRkQPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzSLUfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzSyYPOLEeanyK3wteWQ3w" base_Element="_qzSLUvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzSyYfOLEeanyK3wteWQ3w" base_Element="_qzSLUvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzSyYvOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzUnkPOLEeanyK3wteWQ3w" base_Element="_qzUAgPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzUnkfOLEeanyK3wteWQ3w" base_Element="_qzUAgPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzUnkvOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzV1sPOLEeanyK3wteWQ3w" base_Element="_qzVOoPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzV1sfOLEeanyK3wteWQ3w" base_Element="_qzVOoPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzV1svOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzaHIvOLEeanyK3wteWQ3w" base_Element="_qzaHIPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzauMPOLEeanyK3wteWQ3w" base_Element="_qzaHIPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzauMfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzbVQPOLEeanyK3wteWQ3w" base_Element="_qzauMvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzbVQfOLEeanyK3wteWQ3w" base_Element="_qzauMvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzbVQvOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzb8UvOLEeanyK3wteWQ3w" base_Element="_qzb8UPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzcjYPOLEeanyK3wteWQ3w" base_Element="_qzb8UPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzcjYfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzeYkPOLEeanyK3wteWQ3w" base_Element="_qzcjYvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qze_oPOLEeanyK3wteWQ3w" base_Element="_qzcjYvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qze_ofOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzfmsPOLEeanyK3wteWQ3w" base_Element="_qze_ovOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzgNwPOLEeanyK3wteWQ3w" base_Element="_qze_ovOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzgNwfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzg00POLEeanyK3wteWQ3w" base_Element="_qzgNwvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzhb4POLEeanyK3wteWQ3w" base_Element="_qzgNwvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzhb4fOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qziqAPOLEeanyK3wteWQ3w" base_Element="_qziC8POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qziqAfOLEeanyK3wteWQ3w" base_Element="_qziC8POLEeanyK3wteWQ3w">
    <annotations xmi:id="_qziqAvOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzjREvOLEeanyK3wteWQ3w" base_Element="_qzjREPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzlGQPOLEeanyK3wteWQ3w" base_Element="_qzjREPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzlGQfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzowovOLEeanyK3wteWQ3w" base_Element="_qzowoPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzpXsPOLEeanyK3wteWQ3w" base_Element="_qzowoPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzpXsfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzql0POLEeanyK3wteWQ3w" base_Element="_qzp-wPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzql0fOLEeanyK3wteWQ3w" base_Element="_qzp-wPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzrM4POLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzsbAvOLEeanyK3wteWQ3w" base_Element="_qzsbAPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qztCEPOLEeanyK3wteWQ3w" base_Element="_qzsbAPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qztpIPOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzu3QPOLEeanyK3wteWQ3w" base_Element="_qzuQMfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzu3QfOLEeanyK3wteWQ3w" base_Element="_qzuQMfOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzu3QvOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzwFYvOLEeanyK3wteWQ3w" base_Element="_qzwFYPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzwscPOLEeanyK3wteWQ3w" base_Element="_qzwFYPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzwscfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzx6kvOLEeanyK3wteWQ3w" base_Element="_qzx6kPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzyhoPOLEeanyK3wteWQ3w" base_Element="_qzx6kPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzyhofOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qzzvwPOLEeanyK3wteWQ3w" base_Element="_qzzIsPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qzzvwfOLEeanyK3wteWQ3w" base_Element="_qzzIsPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qzzvwvOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qz0W0vOLEeanyK3wteWQ3w" base_Element="_qz0W0POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qz094POLEeanyK3wteWQ3w" base_Element="_qz0W0POLEeanyK3wteWQ3w">
    <annotations xmi:id="_qz094fOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qz1k8POLEeanyK3wteWQ3w" base_Element="_qz094vOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qz1k8fOLEeanyK3wteWQ3w" base_Element="_qz094vOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qz1k8vOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qz2zEvOLEeanyK3wteWQ3w" base_Element="_qz2zEPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qz3aIPOLEeanyK3wteWQ3w" base_Element="_qz2zEPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qz3aIfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qz4BMfOLEeanyK3wteWQ3w" base_Element="_qz3aIvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qz4BMvOLEeanyK3wteWQ3w" base_Element="_qz3aIvOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qz4oQPOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qz5PUPOLEeanyK3wteWQ3w" base_Element="_qz4oQfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qz5PUfOLEeanyK3wteWQ3w" base_Element="_qz4oQfOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qz5PUvOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qz6dcvOLEeanyK3wteWQ3w" base_Element="_qz6dcPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qz7EgPOLEeanyK3wteWQ3w" base_Element="_qz6dcPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qz7EgfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qz8SoPOLEeanyK3wteWQ3w" base_Element="_qz7rkPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qz8SofOLEeanyK3wteWQ3w" base_Element="_qz7rkPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qz8SovOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qz9gwfOLEeanyK3wteWQ3w" base_Element="_qz85sfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qz-H0POLEeanyK3wteWQ3w" base_Element="_qz85sfOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qz-H0fOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_qz_V8fOLEeanyK3wteWQ3w" base_Element="_qz-u4fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_qz_9APOLEeanyK3wteWQ3w" base_Element="_qz-u4fOLEeanyK3wteWQ3w">
    <annotations xmi:id="_qz_9AfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q0DAUPOLEeanyK3wteWQ3w" base_Element="_q0CZQPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_q0DAUfOLEeanyK3wteWQ3w" base_Element="_q0CZQPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_q0DAUvOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q0H40vOLEeanyK3wteWQ3w" base_Element="_q0H40POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_q0If4POLEeanyK3wteWQ3w" base_Element="_q0H40POLEeanyK3wteWQ3w">
    <annotations xmi:id="_q0If4fOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q0OmgPOLEeanyK3wteWQ3w" base_Element="_q0N_cPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_q0PNkPOLEeanyK3wteWQ3w" base_Element="_q0N_cPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_q0PNkfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_q0aMsPOLEeanyK3wteWQ3w" base_Element="_q0ZlofOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q0oPIPOLEeanyK3wteWQ3w" base_Element="_q0noEPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q0o2MPOLEeanyK3wteWQ3w" base_Element="_q0oPIfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_q0qEUPOLEeanyK3wteWQ3w" base_Element="_q0oPIfOLEeanyK3wteWQ3w">
    <annotations xmi:id="_q0qEUfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q0yAIPOLEeanyK3wteWQ3w" base_Element="_q0u80POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_q0ynMPOLEeanyK3wteWQ3w" base_Element="_q0u80POLEeanyK3wteWQ3w">
    <annotations xmi:id="_q0ynMfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q02Rk_OLEeanyK3wteWQ3w" base_Element="_q02RkPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_q024oPOLEeanyK3wteWQ3w" base_Element="_q02RkPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_q024ofOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q0578fOLEeanyK3wteWQ3w" base_Element="_q05U4POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_q06jAPOLEeanyK3wteWQ3w" base_Element="_q05U4POLEeanyK3wteWQ3w">
    <annotations xmi:id="_q06jAfOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_q08_QPOLEeanyK3wteWQ3w" base_Element="_q08YMPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1B3wPOLEeanyK3wteWQ3w" base_Element="_q1BQsPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_q1B3wfOLEeanyK3wteWQ3w" base_Element="_q1BQsPOLEeanyK3wteWQ3w">
    <annotations xmi:id="_q1B3wvOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1DF4POLEeanyK3wteWQ3w" base_Element="_q1Ce0POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_q1DF4fOLEeanyK3wteWQ3w" base_Element="_q1Ce0POLEeanyK3wteWQ3w">
    <annotations xmi:id="_q1DF4vOLEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1S9gfOLEeanyK3wteWQ3w" base_Element="_q1S9gPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1TkkfOLEeanyK3wteWQ3w" base_Element="_q1TkkPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1ULofOLEeanyK3wteWQ3w" base_Element="_q1ULoPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1UysfOLEeanyK3wteWQ3w" base_Element="_q1UysPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1Wn4POLEeanyK3wteWQ3w" base_Element="_q1WA0POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1XO8POLEeanyK3wteWQ3w" base_Element="_q1Wn4fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1X2APOLEeanyK3wteWQ3w" base_Element="_q1XO8fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1YdEPOLEeanyK3wteWQ3w" base_Element="_q1X2AfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1ZrMPOLEeanyK3wteWQ3w" base_Element="_q1ZEIfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1jcMfOLEeanyK3wteWQ3w" base_Element="_q1jcMPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1kDQfOLEeanyK3wteWQ3w" base_Element="_q1kDQPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1lRYPOLEeanyK3wteWQ3w" base_Element="_q1kqUPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1lRYvOLEeanyK3wteWQ3w" base_Element="_q1lRYfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1mfgPOLEeanyK3wteWQ3w" base_Element="_q1l4cPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1ntoPOLEeanyK3wteWQ3w" base_Element="_q1nGkPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1oUsPOLEeanyK3wteWQ3w" base_Element="_q1ntofOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q1rYAPOLEeanyK3wteWQ3w" base_Property="_q1qw8POLEeanyK3wteWQ3w" siblings="_q45rIPOLEeanyK3wteWQ3w _q46SMfOLEeanyK3wteWQ3w _q465QvOLEeanyK3wteWQ3w" root="true"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1r_EPOLEeanyK3wteWQ3w" base_Element="_q1qw8POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1tNMfOLEeanyK3wteWQ3w" base_Element="_q1tNMPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1vCYPOLEeanyK3wteWQ3w" base_Element="_q1ubUPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q1vpcPOLEeanyK3wteWQ3w" base_Property="_q1vCYfOLEeanyK3wteWQ3w" siblings="_q48HYfOLEeanyK3wteWQ3w _q49VgPOLEeanyK3wteWQ3w _q498kPOLEeanyK3wteWQ3w _q498k_OLEeanyK3wteWQ3w" root="true"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1vpcfOLEeanyK3wteWQ3w" base_Element="_q1vCYfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1yswPOLEeanyK3wteWQ3w" base_Element="_q1yFsPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q1zT0fOLEeanyK3wteWQ3w" base_Property="_q1zT0POLEeanyK3wteWQ3w" siblings="_q5COAPOLEeanyK3wteWQ3w _q5C1EfOLEeanyK3wteWQ3w _q5DcIvOLEeanyK3wteWQ3w" root="true"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1z64POLEeanyK3wteWQ3w" base_Element="_q1zT0POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q11JAPOLEeanyK3wteWQ3w" base_Element="_q10h8POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q12XIPOLEeanyK3wteWQ3w" base_Element="_q11wEPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q12-MPOLEeanyK3wteWQ3w" base_Element="_q12XIfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q13lQPOLEeanyK3wteWQ3w" base_Element="_q12-MfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q14zYPOLEeanyK3wteWQ3w" base_Element="_q13lQfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q1-6APOLEeanyK3wteWQ3w" base_Element="_q1-S8POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2AIIPOLEeanyK3wteWQ3w" base_Element="_q1-6AfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2AvMfOLEeanyK3wteWQ3w" base_Element="_q2AIIfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2B9UPOLEeanyK3wteWQ3w" base_Element="_q2BWQPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2CkYPOLEeanyK3wteWQ3w" base_Element="_q2B9UfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2DygPOLEeanyK3wteWQ3w" base_Element="_q2DLcPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2EZkPOLEeanyK3wteWQ3w" base_Element="_q2DygfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2G10POLEeanyK3wteWQ3w" base_Element="_q2GOwfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2Hc4POLEeanyK3wteWQ3w" base_Element="_q2G10fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2KgMPOLEeanyK3wteWQ3w" base_Element="_q2J5IPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q2LHQPOLEeanyK3wteWQ3w" base_Property="_q2KgMfOLEeanyK3wteWQ3w" siblings="_q5I7sPOLEeanyK3wteWQ3w _q5JiwPOLEeanyK3wteWQ3w _q5Jiw_OLEeanyK3wteWQ3w" root="true"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2LuUPOLEeanyK3wteWQ3w" base_Element="_q2KgMfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2M8cPOLEeanyK3wteWQ3w" base_Element="_q2MVYPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2NjgPOLEeanyK3wteWQ3w" base_Element="_q2M8cfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2OKkfOLEeanyK3wteWQ3w" base_Element="_q2OKkPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2PYsPOLEeanyK3wteWQ3w" base_Element="_q2OxoPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2R08POLEeanyK3wteWQ3w" base_Element="_q2RN4fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2ScAPOLEeanyK3wteWQ3w" base_Element="_q2R08fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2URMPOLEeanyK3wteWQ3w" base_Element="_q2TqIfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2U4QPOLEeanyK3wteWQ3w" base_Element="_q2URMfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2VfUfOLEeanyK3wteWQ3w" base_Element="_q2VfUPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2WGYfOLEeanyK3wteWQ3w" base_Element="_q2WGYPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2XUgPOLEeanyK3wteWQ3w" base_Element="_q2WtcPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2X7kPOLEeanyK3wteWQ3w" base_Element="_q2XUgfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2YioPOLEeanyK3wteWQ3w" base_Element="_q2X7kfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2YiovOLEeanyK3wteWQ3w" base_Element="_q2YiofOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2ZJsfOLEeanyK3wteWQ3w" base_Element="_q2ZJsPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2ZwwfOLEeanyK3wteWQ3w" base_Element="_q2ZwwPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q2aX0POLEeanyK3wteWQ3w" base_Element="_q2ZwwvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3GUUPOLEeanyK3wteWQ3w" base_Element="_q3FtQfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3G7YPOLEeanyK3wteWQ3w" base_Element="_q3GUUfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3HicPOLEeanyK3wteWQ3w" base_Element="_q3G7YfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3IwkfOLEeanyK3wteWQ3w" base_Element="_q3IwkPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3JXoPOLEeanyK3wteWQ3w" base_Element="_q3IwkvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3LM0POLEeanyK3wteWQ3w" base_Element="_q3KlwPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3Lz4POLEeanyK3wteWQ3w" base_Element="_q3LM0fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3NCAPOLEeanyK3wteWQ3w" base_Element="_q3Ma8vOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3NpEfOLEeanyK3wteWQ3w" base_Element="_q3NpEPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3O3MfOLEeanyK3wteWQ3w" base_Element="_q3O3MPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3PeQfOLEeanyK3wteWQ3w" base_Element="_q3PeQPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3QsYPOLEeanyK3wteWQ3w" base_Element="_q3QFUPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3RTcPOLEeanyK3wteWQ3w" base_Element="_q3QsYfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3TvsPOLEeanyK3wteWQ3w" base_Element="_q3TIoPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3UWwPOLEeanyK3wteWQ3w" base_Element="_q3TvsfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3U90fOLEeanyK3wteWQ3w" base_Element="_q3UWwfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3WL8POLEeanyK3wteWQ3w" base_Element="_q3Vk4POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3WzAPOLEeanyK3wteWQ3w" base_Element="_q3WL8fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3XaEfOLEeanyK3wteWQ3w" base_Element="_q3WzAfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3YoMPOLEeanyK3wteWQ3w" base_Element="_q3YBIPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3ZPQPOLEeanyK3wteWQ3w" base_Element="_q3YoMfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q3adYPOLEeanyK3wteWQ3w" base_Element="_q3Z2UPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3brgPOLEeanyK3wteWQ3w" base_Element="_q3bEcfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q3c5oPOLEeanyK3wteWQ3w" base_Element="_q3cSkPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3eHwPOLEeanyK3wteWQ3w" base_Element="_q3dgsPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3fV4POLEeanyK3wteWQ3w" base_Element="_q3eu0fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Generics xmi:id="_q3hLEPOLEeanyK3wteWQ3w" genericsValue="LineSegment" base_Element="_q3gkAPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3hyIPOLEeanyK3wteWQ3w" base_Element="_q3gkAPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Generics xmi:id="_q3jnUPOLEeanyK3wteWQ3w" genericsValue="Circle" base_Element="_q3jAQPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3kOYPOLEeanyK3wteWQ3w" base_Element="_q3jAQPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q3lcgPOLEeanyK3wteWQ3w" base_Property="_q3k1cfOLEeanyK3wteWQ3w" siblings="_q5MmEPOLEeanyK3wteWQ3w _q5NNIfOLEeanyK3wteWQ3w" root="true"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3mDkPOLEeanyK3wteWQ3w" base_Element="_q3k1cfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3n4wPOLEeanyK3wteWQ3w" base_Element="_q3nRsPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3of0POLEeanyK3wteWQ3w" base_Element="_q3n4wfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3pG4POLEeanyK3wteWQ3w" base_Element="_q3of0fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q3pt8POLEeanyK3wteWQ3w" base_Element="_q3pG4fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q45rIfOLEeanyK3wteWQ3w" base_Property="_q45rIPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q46SMPOLEeanyK3wteWQ3w" base_Element="_q45rIPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q465QPOLEeanyK3wteWQ3w" base_Property="_q46SMfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q465QfOLEeanyK3wteWQ3w" base_Element="_q46SMfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q47gUPOLEeanyK3wteWQ3w" base_Property="_q465QvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q47gUfOLEeanyK3wteWQ3w" base_Element="_q465QvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q48ucPOLEeanyK3wteWQ3w" base_Property="_q48HYfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q48ucfOLEeanyK3wteWQ3w" base_Element="_q48HYfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q49VgfOLEeanyK3wteWQ3w" base_Property="_q49VgPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q49VgvOLEeanyK3wteWQ3w" base_Element="_q49VgPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q498kfOLEeanyK3wteWQ3w" base_Property="_q498kPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q498kvOLEeanyK3wteWQ3w" base_Element="_q498kPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q4-joPOLEeanyK3wteWQ3w" base_Property="_q498k_OLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q4-jofOLEeanyK3wteWQ3w" base_Element="_q498k_OLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q5COAfOLEeanyK3wteWQ3w" base_Property="_q5COAPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q5C1EPOLEeanyK3wteWQ3w" base_Element="_q5COAPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q5DcIPOLEeanyK3wteWQ3w" base_Property="_q5C1EfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q5DcIfOLEeanyK3wteWQ3w" base_Element="_q5C1EfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q5EDMPOLEeanyK3wteWQ3w" base_Property="_q5DcIvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q5EDMfOLEeanyK3wteWQ3w" base_Element="_q5DcIvOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q5I7sfOLEeanyK3wteWQ3w" base_Property="_q5I7sPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q5I7svOLEeanyK3wteWQ3w" base_Element="_q5I7sPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q5JiwfOLEeanyK3wteWQ3w" base_Property="_q5JiwPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q5JiwvOLEeanyK3wteWQ3w" base_Element="_q5JiwPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q5KJ0POLEeanyK3wteWQ3w" base_Property="_q5Jiw_OLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q5KJ0fOLEeanyK3wteWQ3w" base_Element="_q5Jiw_OLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q5MmEfOLEeanyK3wteWQ3w" base_Property="_q5MmEPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q5NNIPOLEeanyK3wteWQ3w" base_Element="_q5MmEPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:MultiDeclaration xmi:id="_q5N0MPOLEeanyK3wteWQ3w" base_Property="_q5NNIfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_q5N0MfOLEeanyK3wteWQ3w" base_Element="_q5NNIfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q5qgIPOLEeanyK3wteWQ3w" base_Element="_q5p5EPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q5ruQPOLEeanyK3wteWQ3w" base_Element="_q5rHMPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q5s8YPOLEeanyK3wteWQ3w" base_Element="_q5ruQfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q5tjcPOLEeanyK3wteWQ3w" base_Element="_q5s8YfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q5uKgPOLEeanyK3wteWQ3w" base_Element="_q5tjcfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q5vYoPOLEeanyK3wteWQ3w" base_Element="_q5uxkPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q5v_sPOLEeanyK3wteWQ3w" base_Element="_q5vYofOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q5xN0POLEeanyK3wteWQ3w" base_Element="_q5v_sfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q5yb8POLEeanyK3wteWQ3w" base_Element="_q5x04fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q50RIPOLEeanyK3wteWQ3w" base_Element="_q5zqEfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q51fQPOLEeanyK3wteWQ3w" base_Element="_q504MPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q52GUPOLEeanyK3wteWQ3w" base_Element="_q51fQfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q53UcPOLEeanyK3wteWQ3w" base_Element="_q52GUfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q537gPOLEeanyK3wteWQ3w" base_Element="_q53UcfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q55JoPOLEeanyK3wteWQ3w" base_Element="_q54ikPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q57l4POLEeanyK3wteWQ3w" base_Element="_q56-0fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q580APOLEeanyK3wteWQ3w" base_Element="_q58M8POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q59bEPOLEeanyK3wteWQ3w" base_Element="_q580AfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q5-pMPOLEeanyK3wteWQ3w" base_Element="_q59bEfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q5_3UPOLEeanyK3wteWQ3w" base_Element="_q5-pMfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6AeYPOLEeanyK3wteWQ3w" base_Element="_q5_3UfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6BsgPOLEeanyK3wteWQ3w" base_Element="_q6AeYfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6CTkPOLEeanyK3wteWQ3w" base_Element="_q6BsgfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6DhsPOLEeanyK3wteWQ3w" base_Element="_q6CTkfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6EIwPOLEeanyK3wteWQ3w" base_Element="_q6DhsfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6FW4POLEeanyK3wteWQ3w" base_Element="_q6Ev0POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6KPYPOLEeanyK3wteWQ3w" base_Element="_q6JBQfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6K2cPOLEeanyK3wteWQ3w" base_Element="_q6KPYfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6LdgPOLEeanyK3wteWQ3w" base_Element="_q6K2cfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6MroPOLEeanyK3wteWQ3w" base_Element="_q6MEkPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6NSsPOLEeanyK3wteWQ3w" base_Element="_q6MrofOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6Og0POLEeanyK3wteWQ3w" base_Element="_q6N5wPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6PH4POLEeanyK3wteWQ3w" base_Element="_q6Og0fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6QWAPOLEeanyK3wteWQ3w" base_Element="_q6Pu8POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6Q9EPOLEeanyK3wteWQ3w" base_Element="_q6QWAfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6SLMPOLEeanyK3wteWQ3w" base_Element="_q6RkIPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6TZUPOLEeanyK3wteWQ3w" base_Element="_q6SLMfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6UAYPOLEeanyK3wteWQ3w" base_Element="_q6TZUfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6VOgPOLEeanyK3wteWQ3w" base_Element="_q6UAYfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6V1kPOLEeanyK3wteWQ3w" base_Element="_q6VOgfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6XDsPOLEeanyK3wteWQ3w" base_Element="_q6V1kfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6XqwPOLEeanyK3wteWQ3w" base_Element="_q6XDsfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6Y44POLEeanyK3wteWQ3w" base_Element="_q6YR0POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6Zf8POLEeanyK3wteWQ3w" base_Element="_q6Y44fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6auEPOLEeanyK3wteWQ3w" base_Element="_q6aHAPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6b8MPOLEeanyK3wteWQ3w" base_Element="_q6auEfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6cjQPOLEeanyK3wteWQ3w" base_Element="_q6b8MfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6dxYPOLEeanyK3wteWQ3w" base_Element="_q6dKUPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6e_gPOLEeanyK3wteWQ3w" base_Element="_q6dxYfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6fmkPOLEeanyK3wteWQ3w" base_Element="_q6e_gfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6g0sPOLEeanyK3wteWQ3w" base_Element="_q6fmkfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6hbwPOLEeanyK3wteWQ3w" base_Element="_q6g0sfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6ip4POLEeanyK3wteWQ3w" base_Element="_q6hbwfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6jQ8POLEeanyK3wteWQ3w" base_Element="_q6ip4fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6kfEPOLEeanyK3wteWQ3w" base_Element="_q6jQ8fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6lGIPOLEeanyK3wteWQ3w" base_Element="_q6kfEfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6ltMPOLEeanyK3wteWQ3w" base_Element="_q6lGIfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6m7UPOLEeanyK3wteWQ3w" base_Element="_q6mUQPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6niYPOLEeanyK3wteWQ3w" base_Element="_q6m7UfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6owgPOLEeanyK3wteWQ3w" base_Element="_q6oJcPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6p-oPOLEeanyK3wteWQ3w" base_Element="_q6pXkPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6qlsPOLEeanyK3wteWQ3w" base_Element="_q6p-ofOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6rMwPOLEeanyK3wteWQ3w" base_Element="_q6qlsfOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6sa4POLEeanyK3wteWQ3w" base_Element="_q6rz0POLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6tB8POLEeanyK3wteWQ3w" base_Element="_q6sa4fOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_q6uQEPOLEeanyK3wteWQ3w" base_Element="_q6tpAPOLEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_Penq0vOMEeanyK3wteWQ3w" base_Element="_Penq0POMEeanyK3wteWQ3w"/>
  <UMLLabProfile:Annotations xmi:id="_PeoR4POMEeanyK3wteWQ3w" base_Element="_Penq0POMEeanyK3wteWQ3w">
    <annotations xmi:id="_PeoR4fOMEeanyK3wteWQ3w" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_PequIPOMEeanyK3wteWQ3w" base_Element="_PeqHEPOMEeanyK3wteWQ3w"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_PerVMPOMEeanyK3wteWQ3w" base_Element="_PequIfOMEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_PewNsPOMEeanyK3wteWQ3w" base_Element="_Peu_kPOMEeanyK3wteWQ3w"/>
  <UMLLabProfile:Reference xmi:id="_uaz2MPOMEeanyK3wteWQ3w" base_Element="_uawy4POMEeanyK3wteWQ3w"/>
  <UMLLabProfile:Generics xmi:id="_VyftkPOVEeanyK3wteWQ3w" genericsValue="String, IGizmo" base_Element="_VyfGgPOVEeanyK3wteWQ3w"/>
  <UMLLabProfile:Generics xmi:id="_zmmPgPOVEeanyK3wteWQ3w" genericsValue="String, IGizmo" base_Element="_zmlocfOVEeanyK3wteWQ3w"/>
</xmi:XMI>
