<?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="_164v8LhDEe2QK54y_oSyxw" name="Reliability">
    <eAnnotations xmi:id="_2DVhULhDEe2QK54y_oSyxw" source="http://ns.yatta.de/umllab">
      <contents xmi:type="ecore:EAnnotation" xmi:id="_2DWIYLhDEe2QK54y_oSyxw" source="codegen">
        <details xmi:id="_2DWIYbhDEe2QK54y_oSyxw" key="codegenDirectory" value="/cs2820-spring23/src"/>
        <details xmi:id="_4bdPQLhDEe2QK54y_oSyxw" key="AssociatedSourceCode" value="/cs2820-spring23/src/edu/uiowa/cs/warp/ChannelAnalysis.java;772840459/1;/cs2820-spring23/src/edu/uiowa/cs/warp/ChannelVisualization.java;3062439189/1;/cs2820-spring23/src/edu/uiowa/cs/warp/Edge.java;2557287305/1;/cs2820-spring23/src/edu/uiowa/cs/warp/LatencyAnalysis.java;1423706601/1;/cs2820-spring23/src/edu/uiowa/cs/warp/LatencyVisualization.java;2405611781/1;/cs2820-spring23/src/edu/uiowa/cs/warp/ProgramVisualization.java;3171614383/1;/cs2820-spring23/src/edu/uiowa/cs/warp/ReliabilityVisualization.java;582854107/1;/cs2820-spring23/src/edu/uiowa/cs/warp/SystemAttributes.java;876440066/1;/cs2820-spring23/src/edu/uiowa/cs/warp/Visualization.java;2548788944/1;/cs2820-spring23/src/edu/uiowa/cs/warp/VisualizationFactory.java;2085415425/1;/cs2820-spring23/src/edu/uiowa/cs/warp/VisualizationImplementation.java;2968985512/1;/cs2820-spring23/src/edu/uiowa/cs/warp/Warp.java;890900797/1;/cs2820-spring23/src/edu/uiowa/cs/warp/AbstractMap.java;2633489473/1;/cs2820-spring23/src/edu/uiowa/cs/warp/Activation.java;3634548837/1;/cs2820-spring23/src/edu/uiowa/cs/warp/Activations.java;3305092594/1;/cs2820-spring23/src/edu/uiowa/cs/warp/BasicPoset.java;3238489715/1;/cs2820-spring23/src/edu/uiowa/cs/warp/Channels.java;3701064188/1;/cs2820-spring23/src/edu/uiowa/cs/warp/CodeFragment.java;1941462046/1;/cs2820-spring23/src/edu/uiowa/cs/warp/CombinedActivation.java;3978818808/1;/cs2820-spring23/src/edu/uiowa/cs/warp/CommunicationGraph.java;724670632/1;/cs2820-spring23/src/edu/uiowa/cs/warp/ConnectivityPoset.java;3754377617/1;/cs2820-spring23/src/edu/uiowa/cs/warp/DeadlineComparator.java;492899634/1;/cs2820-spring23/src/edu/uiowa/cs/warp/Description.java;2283427202/1;/cs2820-spring23/src/edu/uiowa/cs/warp/FileManager.java;1791012323/1;/cs2820-spring23/src/edu/uiowa/cs/warp/Flow.java;3359544952/1;/cs2820-spring23/src/edu/uiowa/cs/warp/FlowMap.java;3735737588/1;/cs2820-spring23/src/edu/uiowa/cs/warp/FlowNodeToActivationMap.java;4234899521/1;/cs2820-spring23/src/edu/uiowa/cs/warp/GraphViz.java;1071888484/1;/cs2820-spring23/src/edu/uiowa/cs/warp/GraphVizListener.java;2126849807/1;/cs2820-spring23/src/edu/uiowa/cs/warp/GuiVisualization.java;654882569/1;/cs2820-spring23/src/edu/uiowa/cs/warp/InputGraphFile.java;937049578/1;/cs2820-spring23/src/edu/uiowa/cs/warp/InstructionTimeSlot.java;3408505142/1;/cs2820-spring23/src/edu/uiowa/cs/warp/LatestReleaseTimeComparator.java;1106993157/1;/cs2820-spring23/src/edu/uiowa/cs/warp/MaxPhaseComparator.java;1745026972/1;/cs2820-spring23/src/edu/uiowa/cs/warp/Node.java;229355987/1;/cs2820-spring23/src/edu/uiowa/cs/warp/NodeMap.java;2177811796/1;/cs2820-spring23/src/edu/uiowa/cs/warp/NonPreemptiveSchedule.java;387408079/1;/cs2820-spring23/src/edu/uiowa/cs/warp/NotImplentedVisualization.java;3646556153/1;/cs2820-spring23/src/edu/uiowa/cs/warp/PeriodComparator.java;3057078727/1;/cs2820-spring23/src/edu/uiowa/cs/warp/Poset.java;4263200805/1;/cs2820-spring23/src/edu/uiowa/cs/warp/PreemptiveSchedule.java;3080876127/1;/cs2820-spring23/src/edu/uiowa/cs/warp/PriorityComparator.java;349151360/1;/cs2820-spring23/src/edu/uiowa/cs/warp/Program.java;144940582/1;/cs2820-spring23/src/edu/uiowa/cs/warp/ProgramSchedule.java;1770485609/1;/cs2820-spring23/src/edu/uiowa/cs/warp/ReleaseTimeComparator.java;2065273961/1;/cs2820-spring23/src/edu/uiowa/cs/warp/ReleaseTimeQueue.java;1776494724/1;/cs2820-spring23/src/edu/uiowa/cs/warp/ReliabilityAnalysis.java;755733015/1;/cs2820-spring23/src/edu/uiowa/cs/warp/ReliabilityParameters.java;1976749484/1;/cs2820-spring23/src/edu/uiowa/cs/warp/ReliabilityRow.java;3195166460/1;/cs2820-spring23/src/edu/uiowa/cs/warp/ReliabilityTable.java;2918095589/1;/cs2820-spring23/src/edu/uiowa/cs/warp/ReportVisualization.java;2571131140/1;/cs2820-spring23/src/edu/uiowa/cs/warp/Row.java;3413533457/1;/cs2820-spring23/src/edu/uiowa/cs/warp/SchedulableObjectQueue.java;3263525257/1;/cs2820-spring23/src/edu/uiowa/cs/warp/Schedule.java;3152618411/1;/cs2820-spring23/src/edu/uiowa/cs/warp/ScheduleTable.java;970860350/1;/cs2820-spring23/src/edu/uiowa/cs/warp/ScheduleTime.java;2579980776/1;/cs2820-spring23/src/edu/uiowa/cs/warp/SimulatorInput.java;3699590899/1;/cs2820-spring23/src/edu/uiowa/cs/warp/SortedPeriodQueue.java;3537725478/1;/cs2820-spring23/src/edu/uiowa/cs/warp/SystemFactory.java;4245798061/1;/cs2820-spring23/src/edu/uiowa/cs/warp/Table.java;2577872269/1;/cs2820-spring23/src/edu/uiowa/cs/warp/VisualizationObject.java;1154791723/1;/cs2820-spring23/src/edu/uiowa/cs/warp/WorkLoadListener.java;195958787/1;/cs2820-spring23/src/edu/uiowa/cs/warp/WarpDSL.java;1986156920/1;/cs2820-spring23/src/edu/uiowa/cs/warp/WarpPoset.java;4000167019/1;/cs2820-spring23/src/edu/uiowa/cs/warp/WarpSystem.java;736172144/1;/cs2820-spring23/src/edu/uiowa/cs/warp/WorkLoad.java;227050543/1;/cs2820-spring23/src/edu/uiowa/cs/warp/WorkLoadDescription.java;1720498685/1;/cs2820-spring23/src/edu/uiowa/cs/warp/WorkLoadTest.java;576926662/1;/cs2820-spring23/src/edu/uiowa/cs/warp/SchedulableObject.java;2451757979/1;"/>
      </contents>
    </eAnnotations>
    <elementImport xmi:id="_2m6vgLhDEe2QK54y_oSyxw">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
    </elementImport>
    <elementImport xmi:id="_2m6vgbhDEe2QK54y_oSyxw">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#byte"/>
    </elementImport>
    <elementImport xmi:id="_2m6vgrhDEe2QK54y_oSyxw">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#char"/>
    </elementImport>
    <elementImport xmi:id="_2m6vg7hDEe2QK54y_oSyxw">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
    </elementImport>
    <elementImport xmi:id="_2m6vhLhDEe2QK54y_oSyxw">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#float"/>
    </elementImport>
    <elementImport xmi:id="_2m6vhbhDEe2QK54y_oSyxw">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
    </elementImport>
    <elementImport xmi:id="_2m6vhrhDEe2QK54y_oSyxw">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#long"/>
    </elementImport>
    <elementImport xmi:id="_2m6vh7hDEe2QK54y_oSyxw">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#short"/>
    </elementImport>
    <elementImport xmi:id="_2m6viLhDEe2QK54y_oSyxw">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
    </elementImport>
    <packagedElement xmi:type="uml:Package" xmi:id="_2mfRsLhDEe2QK54y_oSyxw" name="edu">
      <packagedElement xmi:type="uml:Package" xmi:id="_2mf4wLhDEe2QK54y_oSyxw" name="uiowa">
        <packagedElement xmi:type="uml:Package" xmi:id="_2mf4wbhDEe2QK54y_oSyxw" name="cs">
          <packagedElement xmi:type="uml:Package" xmi:id="_2mf4xLhDEe2QK54y_oSyxw" name="warp">
            <packagedElement xmi:type="uml:Package" xmi:id="_2m_oALhDEe2QK54y_oSyxw" name="WarpDSL">
              <packagedElement xmi:type="uml:Class" xmi:id="_20gfkLhDEe2QK54y_oSyxw" name="InstructionParameters"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="_2nYCgLhDEe2QK54y_oSyxw" name="SystemAttributes">
              <packagedElement xmi:type="uml:Enumeration" xmi:id="_201PsLhDEe2QK54y_oSyxw" name="ScheduleChoices"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="_2nZQoLhDEe2QK54y_oSyxw" name="Visualization">
              <packagedElement xmi:type="uml:Enumeration" xmi:id="_2012wLhDEe2QK54y_oSyxw" name="SystemChoices"/>
              <packagedElement xmi:type="uml:Enumeration" xmi:id="_2012wrhDEe2QK54y_oSyxw" name="WorkLoadChoices"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2ov7gLhDEe2QK54y_oSyxw" name="AbstractMap" isAbstract="true">
              <generalization xmi:id="_21f-ELhDEe2QK54y_oSyxw" general="_2z4NcLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22YH0LhDEe2QK54y_oSyxw" 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="_22YH0bhDEe2QK54y_oSyxw" value="1L"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KK8LhDEe2QK54y_oSyxw" name="AbstractMap" specification="_2oxJoLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KK8bhDEe2QK54y_oSyxw" type="_2ov7gLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super();&#xD;
		</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2oxJoLhDEe2QK54y_oSyxw" name="AbstractMap" method="_23KK8LhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2oxJobhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2oxJorhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2oxJo7hDEe2QK54y_oSyxw" type="_2ov7gLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2oxJpLhDEe2QK54y_oSyxw" name="Activation">
              <generalization xmi:id="_2z-UELhDEe2QK54y_oSyxw" general="_2ra1ALhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22YH0rhDEe2QK54y_oSyxw" name="coordinators" type="_2z5bkLhDEe2QK54y_oSyxw" isReadOnly="true" association="_238OELhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22Yu4bhDEe2QK54y_oSyxw" name="edges" type="_2z5bkLhDEe2QK54y_oSyxw" isReadOnly="true" association="_238OE7hDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22Yu47hDEe2QK54y_oSyxw" name="additionalScheduleTimes" type="_2z5bkLhDEe2QK54y_oSyxw" isReadOnly="true" association="_238OFrhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22ZV8bhDEe2QK54y_oSyxw" name="conflicts">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_22ZV8rhDEe2QK54y_oSyxw" value="*"/>
              </ownedAttribute>
              <interfaceRealization xmi:id="_21hMMbhDEe2QK54y_oSyxw" client="_2oxJpLhDEe2QK54y_oSyxw" supplier="_21glIbhDEe2QK54y_oSyxw" contract="_21glIbhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KK8rhDEe2QK54y_oSyxw" name="Activation" specification="_2oxwsLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KK87hDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23KK9LhDEe2QK54y_oSyxw" type="_2oxJpLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super();&#xD;
		setName(name);&#xD;
		this.edges = new ArrayList&lt;Edge>();&#xD;
		this.coordinators = new ArrayList&lt;String>();&#xD;
		this.conflicts = new HashSet&lt;String>();&#xD;
		this.additionalScheduleTimes = new ArrayList&lt;ScheduleTime>();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KK9bhDEe2QK54y_oSyxw" name="Activation" specification="_2z6psbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KK9rhDEe2QK54y_oSyxw" name="elem" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23KK97hDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23KK-LhDEe2QK54y_oSyxw" type="_2oxJpLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(elem, time);&#xD;
		this.edges = new ArrayList&lt;Edge>();&#xD;
		this.edges.addAll(elem.getEdges());&#xD;
		this.coordinators = new ArrayList&lt;String>();&#xD;
		this.coordinators.addAll(elem.getCoordinators());&#xD;
		// conflicts = new Set&lt;String>();&#xD;
		this.conflicts = new HashSet&lt;String>();&#xD;
		this.conflicts.addAll(elem.getConflicts());&#xD;
		this.additionalScheduleTimes = new ArrayList&lt;ScheduleTime>();&#xD;
		this.additionalScheduleTimes.addAll(elem.getAdditionalScheduleTimes());&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KK-bhDEe2QK54y_oSyxw" name="clone" specification="_2oyXwLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KK-rhDEe2QK54y_oSyxw" type="_2oxJpLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>var time = getLastUpdateTime();&#xD;
		var clone = new Activation(this, time);&#xD;
		return clone;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KK-7hDEe2QK54y_oSyxw" name="getEdgesByReleaseTime" specification="_2oyXxLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KK_LhDEe2QK54y_oSyxw" type="_2qEKILhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return new &#xD;
		SchedulableObjectQueue&lt;Edge>(new ReleaseTimeComparator&lt;Edge>(),this.edges);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KK_bhDEe2QK54y_oSyxw" name="getEdgesByLatestReleaseTime" specification="_2oy-0bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KK_rhDEe2QK54y_oSyxw" type="_2qEKILhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return new &#xD;
		SchedulableObjectQueue&lt;Edge>(new LatestReleaseTimeComparator&lt;Edge>(),this.edges);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KyALhDEe2QK54y_oSyxw" name="getEdgesByPeriod" specification="_2ozl4bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KyAbhDEe2QK54y_oSyxw" type="_2qEKILhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return new &#xD;
		SchedulableObjectQueue&lt;Edge>(new PeriodComparator&lt;Edge>(),this.edges);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KyArhDEe2QK54y_oSyxw" name="getEdgesByDeadline" specification="_2o0M8bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KyA7hDEe2QK54y_oSyxw" type="_2qEKILhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return new &#xD;
		SchedulableObjectQueue&lt;Edge>(new DeadlineComparator&lt;Edge>(),this.edges);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KyBLhDEe2QK54y_oSyxw" name="getEdgesByPriority" specification="_2o00AbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KyBbhDEe2QK54y_oSyxw" type="_2qEKILhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return new &#xD;
			SchedulableObjectQueue&lt;Edge>(new PriorityComparator&lt;Edge>(),this.edges);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KyBrhDEe2QK54y_oSyxw" name="addEdges" specification="_21hzQLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KyB7hDEe2QK54y_oSyxw" name="edges" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>this.edges.addAll(edges);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KyCLhDEe2QK54y_oSyxw" name="addEdge" specification="_2z730LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KyCbhDEe2QK54y_oSyxw" name="edge" type="_2pMAZLhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>this.edges.add(edge);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KyCrhDEe2QK54y_oSyxw" name="increaseEdgePhases" specification="_2o00A7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KyC7hDEe2QK54y_oSyxw" name="additionalOffset">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>if (additionalOffset > 0) { // make sure increase is needed&#xD;
			for (Edge edge: this.edges) {&#xD;
				var oldPhase = edge.getPhase();&#xD;
				edge.setPhase(oldPhase+additionalOffset);&#xD;
			}&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KyDLhDEe2QK54y_oSyxw" name="updatePriorityAndRelease" specification="_2o1bELhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KyDbhDEe2QK54y_oSyxw" name="currentTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var lastUpdateTime = getLastUpdateTime();&#xD;
		if (currentTime >= lastUpdateTime) {&#xD;
			for(Edge edge: edges) {&#xD;
				edge.setNextReleaseTime(currentTime);&#xD;
			}&#xD;
			&#xD;
			/* get the edges with earliest release time and &#xD;
			 * highest priority ==> get head of the queue just built&#xD;
			 */&#xD;
			var edgesByReleaseTime = getEdgesByReleaseTime();&#xD;
			var firstEdge = edgesByReleaseTime.element();&#xD;
			setPhase(firstEdge.getPhase()); &#xD;
			var edgesByPeriod = getEdgesByPeriod();&#xD;
			firstEdge = edgesByPeriod.element();&#xD;
			setPeriod(firstEdge.getPeriod()); // shortest period &#xD;
			var edgesByDeadline = getEdgesByDeadline();&#xD;
			firstEdge = edgesByDeadline.element();&#xD;
			setDeadline(firstEdge.getDeadline()); // earliest deadline&#xD;
			var edgesByPrioriy = getEdgesByPriority();&#xD;
			firstEdge = edgesByPrioriy.element();&#xD;
			setPriority(firstEdge.getPriority());&#xD;
			&#xD;
			/* With the partition scheduling parameters set to match  &#xD;
			 * the highest priority edge with respect to the parameter, &#xD;
			 * we can now set the next release time based on the&#xD;
			 * current time.&#xD;
			 * */&#xD;
			setNextReleaseTime(currentTime);&#xD;
			&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KyDrhDEe2QK54y_oSyxw" name="addConflict" specification="_2o1bErhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KyD7hDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>conflicts.add(name);&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KyELhDEe2QK54y_oSyxw" name="addConflicts" specification="_21iaUbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KyEbhDEe2QK54y_oSyxw" name="conflicts" type="_2z6Co7hDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>this.conflicts.addAll(conflicts);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KyErhDEe2QK54y_oSyxw" name="addCoordinator" specification="_2o1bFLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KyE7hDEe2QK54y_oSyxw" name="coordinator">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>coordinators.add(coordinator);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KyFLhDEe2QK54y_oSyxw" name="addCoordinators" specification="_21jBYbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KyFbhDEe2QK54y_oSyxw" name="coordinators" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>this.coordinators.addAll(coordinators);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KyFrhDEe2QK54y_oSyxw" name="addScheduleTimes" specification="_21jocbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KyF7hDEe2QK54y_oSyxw" name="scheduleTime" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>this.additionalScheduleTimes.addAll(scheduleTime);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KyGLhDEe2QK54y_oSyxw" name="getNextScheduleTime" specification="_2o2CIbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KyGbhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23KyGrhDEe2QK54y_oSyxw" type="_2qWeALhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>var result = new ScheduleTime(Integer.MAX_VALUE, Integer.MAX_VALUE);&#xD;
		var moreScheduleTimes = getAdditionalScheduleTimes();&#xD;
		Iterator&lt;ScheduleTime> iter = moreScheduleTimes.iterator();&#xD;
		while (iter.hasNext() ) {&#xD;
			var next = iter.next();&#xD;
			if (next.getStartTime() > time) {&#xD;
				result = next;&#xD;
				break;&#xD;
			}&#xD;
		}&#xD;
		return result;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KyG7hDEe2QK54y_oSyxw" name="getMatchingEndTime" specification="_2o2CI7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KyHLhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23KyHbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var result = Integer.MAX_VALUE;&#xD;
		var moreScheduleTimes = getAdditionalScheduleTimes();&#xD;
		Iterator&lt;ScheduleTime> iter = moreScheduleTimes.iterator();&#xD;
		// var nextEndTime = time;&#xD;
		while (iter.hasNext()) { //  &amp;&amp; nextEndTime &lt;= time  ) {&#xD;
			// nextEndTime = iter.next().getEndTime();&#xD;
			var scheduleTime = iter.next();&#xD;
			if (time == scheduleTime.getStartTime()) {&#xD;
				result = scheduleTime.getEndTime();&#xD;
				break;&#xD;
			}&#xD;
		}&#xD;
		&#xD;
		return result;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KyHrhDEe2QK54y_oSyxw" name="getNextStartTime" specification="_2o2pMbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KyH7hDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23KyILhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var moreScheduleTimes = getAdditionalScheduleTimes();&#xD;
		Iterator&lt;ScheduleTime> iter = moreScheduleTimes.iterator();&#xD;
		var nextStartTime = time;&#xD;
		while (iter.hasNext() &amp;&amp; nextStartTime &lt;= time  ) {&#xD;
			nextStartTime = iter.next().getStartTime();&#xD;
		}&#xD;
		if (nextStartTime == time) {&#xD;
			/* no next StartTime found &#xD;
			 * could be an error &#xD;
			 */&#xD;
			nextStartTime = Integer.MAX_VALUE;&#xD;
			&#xD;
		}&#xD;
		return nextStartTime;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KyIbhDEe2QK54y_oSyxw" name="getNextEndTime" specification="_2o2pNLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KyIrhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23KyI7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var moreScheduleTimes = getAdditionalScheduleTimes();&#xD;
		Iterator&lt;ScheduleTime> iter = moreScheduleTimes.iterator();&#xD;
		var nextEndTime = time;&#xD;
		while (iter.hasNext() &amp;&amp; nextEndTime &lt;= time  ) {&#xD;
			nextEndTime = iter.next().getEndTime();&#xD;
		}&#xD;
		if (nextEndTime == time) {&#xD;
			/* no next StartTime found &#xD;
			 * could be an error &#xD;
			 */&#xD;
			nextEndTime = Integer.MAX_VALUE;&#xD;
			&#xD;
		}&#xD;
		return nextEndTime;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23KyJLhDEe2QK54y_oSyxw" name="getNumEdges" specification="_2o2pN7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23KyJbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>return edges.size();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23LZELhDEe2QK54y_oSyxw" name="compareTo" specification="_2z7307hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23LZEbhDEe2QK54y_oSyxw" name="obj" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23LZErhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>return priorityComparison(obj);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23LZE7hDEe2QK54y_oSyxw" name="conflictExists" specification="_2z8e5bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23LZFLhDEe2QK54y_oSyxw" name="obj" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23LZFbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>Boolean result = false;&#xD;
		/* create a copy of this.conflicts and obj.conflicts&#xD;
		 * and then check the intersection of the two &#xD;
		 * sets. &#xD;
		 * Conflicts exists if |intersection| > 0&#xD;
		 */&#xD;
		var conflicts = new HashSet&lt;String>();&#xD;
		conflicts.addAll(getConflicts());&#xD;
		var objConflicts = new HashSet&lt;String>();&#xD;
		objConflicts.addAll(obj.getConflicts());&#xD;
		conflicts.retainAll(objConflicts); // get the intersection&#xD;
		if (conflicts.size() > 0) {&#xD;
			result = true; // |intersection| > 0 => conflict&#xD;
		}&#xD;
		return result;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23LZFrhDEe2QK54y_oSyxw" name="canCombine" specification="_2z9F8rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23LZF7hDEe2QK54y_oSyxw" name="a2" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23LZGLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>Boolean result = false;&#xD;
		/* make sure a2 is not null */&#xD;
		if (a2 != null) {&#xD;
			var newEntryCoordinator = a2.getCoordinators().get(0);&#xD;
			if (getCoordinators().contains(newEntryCoordinator)) {&#xD;
				/* The (first) coordinator of the newEntry&#xD;
				 * is in the list of coordinators of the prior entry.&#xD;
				 * Thus, these two can be combined for efficiency.&#xD;
				 */&#xD;
				result = true;&#xD;
			}&#xD;
		}&#xD;
		return result;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23LZGbhDEe2QK54y_oSyxw" name="getDelta" specification="_2o3QQLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23LZGrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>Integer maxTxPerLink = 0;&#xD;
		for (Edge edge: getEdges()) {&#xD;
			maxTxPerLink = Math.max(maxTxPerLink, edge.getNumTx());&#xD;
		}&#xD;
		return maxTxPerLink;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23LZG7hDEe2QK54y_oSyxw" name="getExecutionDuration" specification="_2o3QQrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23LZHLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>/* Each edge requires delta time units. However, assuming &#xD;
		 * the WARP pipeline scheduling approach, the activation only&#xD;
		 * executes for Delta + (numEdges - 1) time units, because&#xD;
		 * a new edge will be added to the pipeline every time unit&#xD;
		 * it executes.&#xD;
		 */&#xD;
		return getDelta() + (getNumEdges() - 1);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23LZHbhDEe2QK54y_oSyxw" name="getCombinedExecutionDuration" specification="_2z9F9bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23LZHrhDEe2QK54y_oSyxw" name="a2" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23LZH7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>/* Each edge requires delta time units. However, assuming &#xD;
		 * the WARP pipeline scheduling approach, the activation only&#xD;
		 * executes for Delta + (numEdges - 1) time units, because&#xD;
		 * a new edge will be added to the pipeline every time unit&#xD;
		 * it executes.&#xD;
		 * So, if combined, we consider edges in both activations&#xD;
		 */&#xD;
		var result = 0;&#xD;
		if (a2 != null) {&#xD;
			result = Math.max(getDelta(), a2.getDelta()) + (getNumEdges() + a2.getNumEdges() - 1);&#xD;
		}&#xD;
		return result;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23LZILhDEe2QK54y_oSyxw" name="printAll" specification="_2o33ULhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23LZIbhDEe2QK54y_oSyxw" name="headerMsg">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>System.out.printf(&quot;\n%s&quot;,headerMsg);&#xD;
		this.printAll();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23LZIrhDEe2QK54y_oSyxw" name="printAll" specification="_2o33UrhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>super.print();&#xD;
		printEdges(&quot;Parition &quot;+getName(),new ReleaseTimeQueue&lt;Edge>(edges));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23LZI7hDEe2QK54y_oSyxw" name="printEdges" specification="_2z9tALhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23LZJLhDEe2QK54y_oSyxw" name="header">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23LZJbhDEe2QK54y_oSyxw" name="edges" type="_2qC8AbhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>System.out.printf(&quot;\n%s\nEdges in edge list:&quot;, header);&#xD;
		printEdges(edges);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23LZJrhDEe2QK54y_oSyxw" name="printEdges" specification="_2z9tBLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23LZJ7hDEe2QK54y_oSyxw" name="edges" type="_2qC8AbhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>var q = new ReleaseTimeQueue&lt;Edge>();&#xD;
 		q.addAll(edges);&#xD;
 		Iterator&lt;Edge> qValue = q.iterator();&#xD;
         while (qValue.hasNext()) {&#xD;
         	var next = q.poll();&#xD;
         	next.print();&#xD;
         }&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2oxwsLhDEe2QK54y_oSyxw" name="Activation" visibility="package" method="_23KK8rhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2oxwsrhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2oxws7hDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2oxwsbhDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2oxwtLhDEe2QK54y_oSyxw" type="_2oxJpLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2oyXwLhDEe2QK54y_oSyxw" name="clone" method="_23KK-bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2z7QwrhDEe2QK54y_oSyxw" type="_2oxJpLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2oyXxLhDEe2QK54y_oSyxw" name="getEdgesByReleaseTime" method="_23KK-7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23nd8LhDEe2QK54y_oSyxw">
                  <body>@return the edgesByReleaseTime</body>
                </ownedComment>
                <ownedParameter xmi:id="_2z7Qw7hDEe2QK54y_oSyxw" type="_2qEKILhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2oy-0bhDEe2QK54y_oSyxw" name="getEdgesByLatestReleaseTime" method="_23KK_bhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23nd8bhDEe2QK54y_oSyxw">
                  <body>@return the edgesByReleaseTime</body>
                </ownedComment>
                <ownedParameter xmi:id="_2z7QxLhDEe2QK54y_oSyxw" type="_2qEKILhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2ozl4bhDEe2QK54y_oSyxw" name="getEdgesByPeriod" method="_23KyALhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23nd8rhDEe2QK54y_oSyxw">
                  <body>@return the edgesByPeriod</body>
                </ownedComment>
                <ownedParameter xmi:id="_2z7QxbhDEe2QK54y_oSyxw" type="_2qEKILhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2o0M8bhDEe2QK54y_oSyxw" name="getEdgesByDeadline" method="_23KyArhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23nd87hDEe2QK54y_oSyxw">
                  <body>@return the edgesByDeadline</body>
                </ownedComment>
                <ownedParameter xmi:id="_2z7QxrhDEe2QK54y_oSyxw" type="_2qEKILhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2o00AbhDEe2QK54y_oSyxw" name="getEdgesByPriority" method="_23KyBLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23nd9LhDEe2QK54y_oSyxw">
                  <body>@return the edgesByPriority</body>
                </ownedComment>
                <ownedParameter xmi:id="_2z7Qx7hDEe2QK54y_oSyxw" type="_2qEKILhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2o00A7hDEe2QK54y_oSyxw" name="increaseEdgePhases" method="_23KyCrhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23nd9bhDEe2QK54y_oSyxw">
                  <body>Increase the phase of each edge by the input parameter.&#xD;
	 * &#xD;
	 * @param additionalOffset</body>
                </ownedComment>
                <ownedParameter xmi:id="_2o00BLhDEe2QK54y_oSyxw" name="additionalOffset">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2o1bELhDEe2QK54y_oSyxw" name="updatePriorityAndRelease" method="_23KyDLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23nd9rhDEe2QK54y_oSyxw">
                  <body>Updates priority and release time of &#xD;
	 * this activation.&lt;br>&#xD;
	 * &#xD;
	 * The priority of the element is equal to the&#xD;
	 * edge priority with the earliest release time.&#xD;
	 * Thus, it can change dynamically. &lt;br>&#xD;
	 *&#xD;
	 * The release time of the element is equal to the&#xD;
	 * edge priority with the earliest release time.&#xD;
	 * Thus, it can change dynamically. &lt;br></body>
                </ownedComment>
                <ownedParameter xmi:id="_2o1bEbhDEe2QK54y_oSyxw" name="currentTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2o1bErhDEe2QK54y_oSyxw" name="addConflict" method="_23KyDrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2o1bE7hDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2o1bFLhDEe2QK54y_oSyxw" name="addCoordinator" method="_23KyErhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2o2CILhDEe2QK54y_oSyxw" name="coordinator">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2o2CIbhDEe2QK54y_oSyxw" name="getNextScheduleTime" method="_23KyGLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23nd-LhDEe2QK54y_oSyxw">
                  <body>getNextScheduleTime returns the next entry in the additional&#xD;
	 * schedule time array list whose start time is greater than the input&#xD;
	 * parameter time. MAX_INT is returned if such a time&#xD;
	 * is not found&#xD;
	 * @param next&#xD;
	 * @param time&#xD;
	 * @return next schedule time or MAX_VALUEs if not found</body>
                </ownedComment>
                <ownedParameter xmi:id="_2o2CIrhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2z730rhDEe2QK54y_oSyxw" type="_2qWeALhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2o2CI7hDEe2QK54y_oSyxw" name="getMatchingEndTime" method="_23KyG7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23nd-bhDEe2QK54y_oSyxw">
                  <body>getMatchingEndTime returns the next end time in the additional&#xD;
	 * schedule time array list that is greater than the input&#xD;
	 * parameter time. MAX_INT is returned if such a time&#xD;
	 * is not found&#xD;
	 * @param next&#xD;
	 * @param time&#xD;
	 * @return next start time or MAX_VALUE if not found</body>
                </ownedComment>
                <ownedParameter xmi:id="_2o2CJLhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2o2pMLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2o2pMbhDEe2QK54y_oSyxw" name="getNextStartTime" method="_23KyHrhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23nd-rhDEe2QK54y_oSyxw">
                  <body>getNextStartTime returns the next start time in the additional&#xD;
	 * schedule time array list that is greater than the input&#xD;
	 * parameter time. MAX_INT is returned if such a time&#xD;
	 * is not found&#xD;
	 * @param next&#xD;
	 * @param time&#xD;
	 * @return next start time or MAX_VALUE if not found</body>
                </ownedComment>
                <ownedParameter xmi:id="_2o2pMrhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2o2pM7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2o2pNLhDEe2QK54y_oSyxw" name="getNextEndTime" method="_23KyIbhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23nd-7hDEe2QK54y_oSyxw">
                  <body>getNextEndTime returns the next end time in the additional&#xD;
	 * schedule time array list that is greater than the input&#xD;
	 * parameter time. MAX_INT is returned if such a time&#xD;
	 * is not found&#xD;
	 * @param next&#xD;
	 * @param time&#xD;
	 * @return next start time or MAX_VALUE if not found</body>
                </ownedComment>
                <ownedParameter xmi:id="_2o2pNbhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2o2pNrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2o2pN7hDEe2QK54y_oSyxw" name="getNumEdges" method="_23KyJLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2o2pOLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2o3QQLhDEe2QK54y_oSyxw" name="getDelta" method="_23LZGbhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23nd_LhDEe2QK54y_oSyxw">
                  <body>Returns the maximum number of transmissions&#xD;
	 * needed on any link in activation to ensure e2e &#xD;
	 * reliability is met.</body>
                </ownedComment>
                <ownedParameter xmi:id="_2o3QQbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2o3QQrhDEe2QK54y_oSyxw" name="getExecutionDuration" method="_23LZG7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2o3QQ7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2o33ULhDEe2QK54y_oSyxw" name="printAll" method="_23LZILhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2o33UbhDEe2QK54y_oSyxw" name="headerMsg">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2o33UrhDEe2QK54y_oSyxw" name="printAll" method="_23LZIrhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2z6psbhDEe2QK54y_oSyxw" name="Activation" visibility="package" method="_23KK9bhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2z6ptLhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2z7QwLhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2z6psrhDEe2QK54y_oSyxw" name="elem" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_2z6ps7hDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2z7QwbhDEe2QK54y_oSyxw" type="_2oxJpLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2z730LhDEe2QK54y_oSyxw" name="addEdge" method="_23KyCLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2z730bhDEe2QK54y_oSyxw" name="edge" type="_2pMAZLhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2z7307hDEe2QK54y_oSyxw" name="compareTo" method="_23LZELhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2z8e4LhDEe2QK54y_oSyxw" name="obj" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_2z8e4bhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2z8e5bhDEe2QK54y_oSyxw" name="conflictExists" method="_23LZE7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2z9F8LhDEe2QK54y_oSyxw" name="obj" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_2z9F8bhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2z9F8rhDEe2QK54y_oSyxw" name="canCombine" method="_23LZFrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2z9F87hDEe2QK54y_oSyxw" name="a2" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_2z9F9LhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2z9F9bhDEe2QK54y_oSyxw" name="getCombinedExecutionDuration" method="_23LZHbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2z9F9rhDEe2QK54y_oSyxw" name="a2" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_2z9F97hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2z9tALhDEe2QK54y_oSyxw" name="printEdges" visibility="private" method="_23LZI7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2z9tAbhDEe2QK54y_oSyxw" name="header">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2z9tArhDEe2QK54y_oSyxw" name="edges" type="_2qC8AbhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2z9tBLhDEe2QK54y_oSyxw" name="printEdges" visibility="private" method="_23LZJrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2z9tBbhDEe2QK54y_oSyxw" name="edges" type="_2qC8AbhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_21hzQLhDEe2QK54y_oSyxw" name="addEdges" method="_23KyBrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21hzQbhDEe2QK54y_oSyxw" name="edges" type="_2z5bkLhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_21iaUbhDEe2QK54y_oSyxw" name="addConflicts" method="_23KyELhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21iaUrhDEe2QK54y_oSyxw" name="conflicts" type="_2z6Co7hDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_21jBYbhDEe2QK54y_oSyxw" name="addCoordinators" method="_23KyFLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21jBYrhDEe2QK54y_oSyxw" name="coordinators" type="_2z5bkLhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_21jocbhDEe2QK54y_oSyxw" name="addScheduleTimes" method="_23KyFrhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23nd97hDEe2QK54y_oSyxw">
                  <body>@param additionalScheduleTimes</body>
                </ownedComment>
                <ownedParameter xmi:id="_21jocrhDEe2QK54y_oSyxw" name="scheduleTime" type="_2z5bkLhDEe2QK54y_oSyxw"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2o66oLhDEe2QK54y_oSyxw" name="Activations">
              <generalization xmi:id="_2z-7ILhDEe2QK54y_oSyxw" general="_2ov7gLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22Z9ALhDEe2QK54y_oSyxw" 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="_22Z9AbhDEe2QK54y_oSyxw" value="1L"/>
              </ownedAttribute>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2o7hsLhDEe2QK54y_oSyxw" name="BasicPoset">
              <ownedComment xmi:id="_23nd_bhDEe2QK54y_oSyxw">
                <body>ConnectivityPoset extends Poset by selecting&#xD;
primary coordinator in the flow based on highest&#xD;
local connectivity.&#xD;
&#xD;
@author sgoddard</body>
              </ownedComment>
              <generalization xmi:id="_20AJQLhDEe2QK54y_oSyxw" general="_2ps9wLhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23LZKLhDEe2QK54y_oSyxw" name="BasicPoset" specification="_2z_iMLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23LZKbhDEe2QK54y_oSyxw" name="workload" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23LZKrhDEe2QK54y_oSyxw" type="_2o7hsLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(workload);&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2z_iMLhDEe2QK54y_oSyxw" name="BasicPoset" visibility="package" method="_23LZKLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2z_iMrhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2z_iM7hDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2z_iMbhDEe2QK54y_oSyxw" name="workload" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_2z_iNLhDEe2QK54y_oSyxw" type="_2o7hsLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2o8IwLhDEe2QK54y_oSyxw" name="ChannelAnalysis">
              <ownedComment xmi:id="_23nd_rhDEe2QK54y_oSyxw">
                <body>@author sgoddard&#xD;
@version 1.4&#xD;
 *</body>
              </ownedComment>
              <ownedAttribute xmi:id="_22Z9ArhDEe2QK54y_oSyxw" name="program" visibility="private" type="_2pzEYbhDEe2QK54y_oSyxw" association="_2381IbhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22akELhDEe2QK54y_oSyxw" name="programTable" visibility="private" type="_2p-DgLhDEe2QK54y_oSyxw" association="_2381JLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22akErhDEe2QK54y_oSyxw" name="conflictExists" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23LZK7hDEe2QK54y_oSyxw" name="ChannelAnalysis" specification="_20AJQbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23LZLLhDEe2QK54y_oSyxw" name="program" type="_2pzEYbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23LZLbhDEe2QK54y_oSyxw" type="_2o8IwLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>this.program = program;&#xD;
 this.programTable = program.getSchedule();&#xD;
 conflictExists = false;&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23LZLrhDEe2QK54y_oSyxw" name="isChannelConflict" specification="_2o8v0LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23LZL7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>return conflictExists;&#xD;
  </body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2o8v0LhDEe2QK54y_oSyxw" name="isChannelConflict" method="_23LZLrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2o8v0bhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20AJQbhDEe2QK54y_oSyxw" name="ChannelAnalysis" visibility="package" method="_23LZK7hDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_20AwUbhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_20AwUrhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_20AwULhDEe2QK54y_oSyxw" name="program" type="_2pzEYbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20AwU7hDEe2QK54y_oSyxw" type="_2o8IwLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2o9W4LhDEe2QK54y_oSyxw" name="ChannelVisualization">
              <ownedComment xmi:id="_23nd_7hDEe2QK54y_oSyxw">
                <body>ChannelVisualization creates the visualizations for the channel analysis of the WARP program.&#xD;
&lt;p>&#xD;
&#xD;
CS2820 Fall 2022 Project: Implement this class to create the file visualization that is requested&#xD;
in Warp.&#xD;
&#xD;
@author sgoddard&#xD;
@version 1.4&#xD;
 *</body>
              </ownedComment>
              <generalization xmi:id="_20BXYLhDEe2QK54y_oSyxw" general="_2qirQLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22akFLhDEe2QK54y_oSyxw" name="SOURCE_SUFFIX" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22akFbhDEe2QK54y_oSyxw" value="&quot;.ch&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22akFrhDEe2QK54y_oSyxw" name="OBJECT_NAME" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22bLILhDEe2QK54y_oSyxw" value="&quot;Channel Analysis&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22bLIbhDEe2QK54y_oSyxw" name="ca" visibility="private" type="_2o8IwLhDEe2QK54y_oSyxw" association="_2381J7hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2o998LhDEe2QK54y_oSyxw" name="Channels">
              <ownedComment xmi:id="_23neALhDEe2QK54y_oSyxw">
                <body>@author sgoddard&#xD;
@version 1.4&#xD;
 *</body>
              </ownedComment>
              <ownedAttribute xmi:id="_22bLJbhDEe2QK54y_oSyxw" name="nChannels" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22bLJ7hDEe2QK54y_oSyxw" name="verbose" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22byMbhDEe2QK54y_oSyxw" name="channelsAvailable" visibility="package" type="_2z5bkLhDEe2QK54y_oSyxw" association="_239cMbhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23MnNbhDEe2QK54y_oSyxw" name="Channels" specification="_2o_zILhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23MnNrhDEe2QK54y_oSyxw" name="nChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23MnN7hDEe2QK54y_oSyxw" name="verbose">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23MnOLhDEe2QK54y_oSyxw" type="_2o998LhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>this.nChannels = nChannels;&#xD;
 this.verbose = verbose;&#xD;
 this.channelsAvailable = new ArrayList&lt;ChannelSet>();&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23MnObhDEe2QK54y_oSyxw" name="getChannelSet" specification="_2o_zJrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23MnOrhDEe2QK54y_oSyxw" name="timeSlot">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23MnO7hDEe2QK54y_oSyxw" type="_2z5bkrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>/* get the channel set for this timeSlot */&#xD;
 HashSet&lt;String> channelSet = new HashSet&lt;String>(channelsAvailable.get(timeSlot));&#xD;
 return channelSet;&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23MnPLhDEe2QK54y_oSyxw" name="addNewChannelSet" specification="_2pAaMbhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>var channels = new ChannelSet(nChannels);&#xD;
 channelsAvailable.add(channels);&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23MnPbhDEe2QK54y_oSyxw" name="isEmpty" specification="_2pAaMrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23MnPrhDEe2QK54y_oSyxw" name="timeSlot">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23MnP7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>ChannelSet channelSet = channelsAvailable.get(timeSlot); // get the channel set for this&#xD;
                                                          // timeSlot&#xD;
 return channelSet.isEmpty(); // returns true channel set is empty and false if not&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23MnQLhDEe2QK54y_oSyxw" name="removeChannel" specification="_2pBBQbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23MnQbhDEe2QK54y_oSyxw" name="timeSlot">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23MnQrhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23MnQ7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>Boolean result;&#xD;
 ChannelSet channels = channelsAvailable.get(timeSlot);&#xD;
 result = channels.remove(channel);&#xD;
 return result;&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23MnRLhDEe2QK54y_oSyxw" name="addChannel" specification="_2pBBRbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23MnRbhDEe2QK54y_oSyxw" name="timeSlot">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23MnRrhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23MnR7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>Boolean result;&#xD;
 ChannelSet channels = channelsAvailable.get(timeSlot); // get a pointer to the channel set&#xD;
 result = channels.add(channel); // remove the channel, returning the result&#xD;
 return result;&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23NOQLhDEe2QK54y_oSyxw" name="getNumChannels" specification="_2pBBSbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23NOQbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>return nChannels;&#xD;
  </body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2o_zILhDEe2QK54y_oSyxw" name="Channels" visibility="package" method="_23MnNbhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2o_zI7hDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2o_zJLhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2o_zIbhDEe2QK54y_oSyxw" name="nChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2o_zIrhDEe2QK54y_oSyxw" name="verbose">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2o_zJbhDEe2QK54y_oSyxw" type="_2o998LhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2o_zJrhDEe2QK54y_oSyxw" name="getChannelSet" method="_23MnObhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2o_zJ7hDEe2QK54y_oSyxw" name="timeSlot">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_21mrwLhDEe2QK54y_oSyxw" type="_2z5bkrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pAaMbhDEe2QK54y_oSyxw" name="addNewChannelSet" method="_23MnPLhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2pAaMrhDEe2QK54y_oSyxw" name="isEmpty" method="_23MnPbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pAaM7hDEe2QK54y_oSyxw" name="timeSlot">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pBBQLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pBBQbhDEe2QK54y_oSyxw" name="removeChannel" method="_23MnQLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pBBQrhDEe2QK54y_oSyxw" name="timeSlot">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pBBQ7hDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pBBRLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pBBRbhDEe2QK54y_oSyxw" name="addChannel" method="_23MnRLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pBBRrhDEe2QK54y_oSyxw" name="timeSlot">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pBBR7hDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pBBSLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pBBSbhDEe2QK54y_oSyxw" name="getNumChannels" method="_23NOQLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pBoULhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <nestedClassifier xmi:type="uml:Class" xmi:id="_2o-lALhDEe2QK54y_oSyxw" name="ChannelSet" visibility="private">
                <generalization xmi:id="_21k2kLhDEe2QK54y_oSyxw" general="_2z5bkrhDEe2QK54y_oSyxw"/>
                <ownedAttribute xmi:id="_22bLI7hDEe2QK54y_oSyxw" 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="_22bLJLhDEe2QK54y_oSyxw" value="6725256944325470867L"/>
                </ownedAttribute>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23MnMLhDEe2QK54y_oSyxw" name="ChannelSet" specification="_2o-lAbhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23MnMbhDEe2QK54y_oSyxw" type="_2o-lALhDEe2QK54y_oSyxw" direction="return"/>
                  <language>java</language>
                  <body>super();&#xD;
 </body>
                </ownedBehavior>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23MnMrhDEe2QK54y_oSyxw" name="ChannelSet" specification="_2o_MELhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23MnM7hDEe2QK54y_oSyxw" name="nChannels">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                  </ownedParameter>
                  <ownedParameter xmi:id="_23MnNLhDEe2QK54y_oSyxw" type="_2o-lALhDEe2QK54y_oSyxw" direction="return"/>
                  <language>java</language>
                  <body>super();&#xD;
   for (int i = 0; i &lt; nChannels; i++) { // ASSUMES channels range from 0 to nChannels-1&#xD;
     this.add(String.valueOf(i));&#xD;
   }&#xD;
 </body>
                </ownedBehavior>
                <ownedOperation xmi:id="_2o-lAbhDEe2QK54y_oSyxw" name="ChannelSet" visibility="private" method="_23MnMLhDEe2QK54y_oSyxw">
                  <eAnnotations xmi:id="_2o-lArhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                    <details xmi:id="_2o-lA7hDEe2QK54y_oSyxw" key="create"/>
                  </eAnnotations>
                  <ownedParameter xmi:id="_2o-lBLhDEe2QK54y_oSyxw" type="_2o-lALhDEe2QK54y_oSyxw" direction="return"/>
                </ownedOperation>
                <ownedOperation xmi:id="_2o_MELhDEe2QK54y_oSyxw" name="ChannelSet" visibility="private" method="_23MnMrhDEe2QK54y_oSyxw">
                  <eAnnotations xmi:id="_2o_MErhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                    <details xmi:id="_2o_ME7hDEe2QK54y_oSyxw" key="create"/>
                  </eAnnotations>
                  <ownedParameter xmi:id="_2o_MEbhDEe2QK54y_oSyxw" name="nChannels">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                  </ownedParameter>
                  <ownedParameter xmi:id="_2o_MFLhDEe2QK54y_oSyxw" type="_2o-lALhDEe2QK54y_oSyxw" direction="return"/>
                </ownedOperation>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pCPYLhDEe2QK54y_oSyxw" name="CodeFragment">
              <ownedAttribute xmi:id="_22cZQLhDEe2QK54y_oSyxw" name="SLEEP" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22cZQbhDEe2QK54y_oSyxw" value="&quot;sleep&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22cZQrhDEe2QK54y_oSyxw" name="edges" visibility="package" type="_2z5bkLhDEe2QK54y_oSyxw" association="_239cNLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22dAUbhDEe2QK54y_oSyxw" name="coordinator" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22dAU7hDEe2QK54y_oSyxw" name="codeFragment" visibility="package" type="_2z5bkLhDEe2QK54y_oSyxw" association="_239cN7hDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22dnYrhDEe2QK54y_oSyxw" name="delta" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22dnZLhDEe2QK54y_oSyxw" name="channel" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23NOQrhDEe2QK54y_oSyxw" name="CodeFragment" specification="_2pC2cLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23NOQ7hDEe2QK54y_oSyxw" type="_2pCPYLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>this.delta = 0;&#xD;
		this.channel = 0;&#xD;
		this.edges = null;&#xD;
		this.coordinator = null;&#xD;
		this.codeFragment = new ArrayList&lt;String>();&#xD;
		this.codeFragment.add(SLEEP);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23NORLhDEe2QK54y_oSyxw" name="CodeFragment" specification="_21nS0LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23NORbhDEe2QK54y_oSyxw" name="delta">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23NORrhDEe2QK54y_oSyxw" name="edges" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23NOR7hDEe2QK54y_oSyxw" name="coordinators" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23NOSLhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23NOSbhDEe2QK54y_oSyxw" type="_2pCPYLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>this.delta = delta;&#xD;
		this.channel = channel;&#xD;
		this.edges = edges;&#xD;
		this.coordinator = coordinators.get(0);&#xD;
		this.codeFragment = new ArrayList&lt;String>();&#xD;
		if (multipleCoordinators(coordinators)) {&#xD;
			reportIfDifferentCoordinators(coordinators);&#xD;
		}	&#xD;
		generateCodeFragment();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23NOSrhDEe2QK54y_oSyxw" name="getCoordinator" specification="_2pC2dLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23NOS7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>return coordinator;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23NOTLhDEe2QK54y_oSyxw" name="instructions" specification="_2pDdgLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23NOTbhDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return codeFragment;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23NOTrhDEe2QK54y_oSyxw" name="size" specification="_2pDdgrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23NOT7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>return codeFragment.size();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23NOULhDEe2QK54y_oSyxw" name="generateCodeFragment" specification="_2pDdhLhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>var edgeQueue = new SchedulableObjectQueue&lt;Edge>(new &#xD;
				PriorityComparator&lt;Edge>(),this.edges);&#xD;
		Iterator&lt;Edge> q = edgeQueue.iterator();&#xD;
		var size = edgeQueue.size();&#xD;
		/* the code length will be equal to &#xD;
		 * delta + #edges -1&#xD;
		 */&#xD;
		var codeLength = delta + size -1;&#xD;
		var basicInstructions = new ArrayList&lt;String>();&#xD;
		/* create basic instructions for each edge &#xD;
		 * and initial receiver set for each instruction&#xD;
		 * */&#xD;
		while(q.hasNext()) {&#xD;
			var edge = edgeQueue.poll();&#xD;
			var src = edge.getSrc();&#xD;
			var snk = edge.getSnk();&#xD;
			var flow = edge.getFlow();&#xD;
			var instr = getBaseInstruction(flow,src,snk);&#xD;
			basicInstructions.add(instr);&#xD;
		}&#xD;
		/* start building code fragments */&#xD;
		&#xD;
		codeFragment.add(basicInstructions.get(0));&#xD;
		&#xD;
		/* when size &lt; delta, we need to repeat the&#xD;
		 * middle stage delta - size times&#xD;
		 */&#xD;
		var numRepeatStages = Math.max(0, delta - size);&#xD;
		if (size &lt; delta) {&#xD;
			numRepeatStages = delta - size;&#xD;
		}&#xD;
		&#xD;
		/* build the initial code fragment */&#xD;
		Integer localDelta = Math.min(size, delta);&#xD;
		var instr = new String();&#xD;
		var dropInstr = new String();&#xD;
		var priorInstr = new String();&#xD;
		for (int i = 1; i &lt; localDelta ; i++) { &#xD;
			instr = codeFragment.get(i-1) +&#xD;
					&quot; else &quot; + basicInstructions.get(i);&#xD;
			codeFragment.add(instr);&#xD;
		}&#xD;
		/* now repeat middle stage if size &lt; delta &#xD;
		 * otherwise, this for loop will be skipped&#xD;
		 */&#xD;
		for (int i = localDelta; (i &lt; localDelta + numRepeatStages) &amp;&amp; i &lt; codeLength ; i++) { &#xD;
			instr = codeFragment.get(i-1);&#xD;
			codeFragment.add(instr);&#xD;
		}&#xD;
		/* The first Instruction has been repeated&#xD;
		 * delta times. Now it gets removed from&#xD;
		 * the pipeline. E.g., with delta = 3 and&#xD;
		 * size = 3&#xD;
		 *  a &lt;-- dropInstr&#xD;
		 *  ab&#xD;
		 *  abc &lt;-- priorInstr&#xD;
		 *  bc &lt;-- instr&#xD;
		 */&#xD;
&#xD;
		/* Now loop through dropping old instructions&#xD;
		 * and adding new ones for size - localDelta times.&#xD;
		 * This loop will be skipped if size = localDelta.&#xD;
		 */&#xD;
		for (int i = localDelta + numRepeatStages; (i &lt; numRepeatStages + size)  &amp;&amp; i &lt; codeLength ; i++) { &#xD;
			priorInstr = codeFragment.get(i-1);&#xD;
			dropInstr =  basicInstructions.get(i-(localDelta + numRepeatStages)) + &quot; else &quot;;&#xD;
			instr = priorInstr.replaceFirst(Pattern.quote(dropInstr),&quot;&quot;);&#xD;
			instr += &quot; else &quot; + basicInstructions.get(i-numRepeatStages);&#xD;
			codeFragment.add(instr);&#xD;
		}&#xD;
		/* Now loop through dropping old instructions, draining&#xD;
		 * the pipleline.&#xD;
		 */&#xD;
		for (int i = numRepeatStages + size; i &lt; codeLength ; i++) { &#xD;
			priorInstr = codeFragment.get(i-1);&#xD;
			dropInstr =  basicInstructions.get(i-delta)  + &quot; else &quot;;&#xD;
			instr = priorInstr.replaceFirst(Pattern.quote(dropInstr),&quot;&quot;);&#xD;
			codeFragment.add(instr);&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23NOUbhDEe2QK54y_oSyxw" name="getBaseInstruction" specification="_2pEEkLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23NOUrhDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23NOU7hDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23NOVLhDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23NOVbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>var instr = new String();&#xD;
		if (coordinator.equals(src)) {&#xD;
			/* push instruction */&#xD;
			instr += ifHas(flow,src,snk) + push(flow,src,snk);&#xD;
		} else {&#xD;
			/* pull instruction */&#xD;
			instr += ifNotHas(flow,src,snk) + pull(flow,src,snk);&#xD;
		}&#xD;
		return instr;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23NOVrhDEe2QK54y_oSyxw" name="push" specification="_2pEElbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23NOV7hDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23NOWLhDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23NOWbhDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23NOWrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>var instruction = String.format(&quot;push(%s: %s -> %s, #%d)&quot;, flow, src, snk, channel);&#xD;
		return instruction;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23NOW7hDEe2QK54y_oSyxw" name="pull" specification="_2pEroLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23NOXLhDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23NOXbhDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23NOXrhDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23NOX7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>var instruction = String.format(&quot;pull(%s: %s -> %s, #%d)&quot;, flow, src, snk, channel);&#xD;
		return instruction;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23NOYLhDEe2QK54y_oSyxw" name="ifHas" specification="_2pErpbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23NOYbhDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23NOYrhDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23NOY7hDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23NOZLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>var instruction = String.format(&quot;if has(%s: %s -> %s) &quot;, flow, src, snk);&#xD;
		return instruction;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23NOZbhDEe2QK54y_oSyxw" name="ifNotHas" specification="_2pErqrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23NOZrhDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23NOZ7hDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23NOaLhDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23NOabhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>var instruction = String.format(&quot;if !has(%s: %s -> %s) &quot;, flow, src, snk);&#xD;
		return instruction;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23NOarhDEe2QK54y_oSyxw" name="wait" specification="_2pFStLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23NOa7hDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23NObLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>var instruction = String.format(&quot;wait(#%d)&quot;, channel);&#xD;
		return instruction;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23N1ULhDEe2QK54y_oSyxw" name="sleep" specification="_2pFSt7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23N1UbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>var instruction = SLEEP;&#xD;
		return instruction;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23N1UrhDEe2QK54y_oSyxw" name="reportIfDifferentCoordinators" specification="_21og8bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23N1U7hDEe2QK54y_oSyxw" name="coordinators" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>var numUniqueCoordinators = 1;&#xD;
		var coordinatorNames = this.coordinator;&#xD;
		if (coordinators.size() > 1) {&#xD;
			for (int i = 1 ; i &lt; coordinators.size(); i++) {&#xD;
				if (!this.coordinator.equals(coordinators.get(i))) {&#xD;
					coordinatorNames += &quot;, &quot; + coordinators.get(i);&#xD;
					numUniqueCoordinators++;&#xD;
				}&#xD;
			}&#xD;
			if (numUniqueCoordinators > 1) {&#xD;
				System.err.printf(&quot;\n%d Coordinators: %s\n&quot;, &#xD;
						numUniqueCoordinators, this.coordinator, coordinatorNames);&#xD;
			}&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23N1VLhDEe2QK54y_oSyxw" name="multipleCoordinators" specification="_21og9LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23N1VbhDEe2QK54y_oSyxw" name="coordinators" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23N1VrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>var result = false;&#xD;
		if (coordinators.size() > 1) {&#xD;
			for (int i = 1 ; i &lt; coordinators.size(); i++) {&#xD;
				if (!this.coordinator.equals(coordinators.get(i))) {&#xD;
					result = true;&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		return result;&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2pC2cLhDEe2QK54y_oSyxw" name="CodeFragment" visibility="package" method="_23NOQrhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2pC2cbhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2pC2crhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedComment xmi:id="_23neAbhDEe2QK54y_oSyxw">
                  <body>Constructor generates a SLEEP instruction for the&#xD;
	 * code fragment.</body>
                </ownedComment>
                <ownedParameter xmi:id="_2pC2c7hDEe2QK54y_oSyxw" type="_2pCPYLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pC2dLhDEe2QK54y_oSyxw" name="getCoordinator" method="_23NOSrhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23neA7hDEe2QK54y_oSyxw">
                  <body>@return the coordinator</body>
                </ownedComment>
                <ownedParameter xmi:id="_2pC2dbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pDdgLhDEe2QK54y_oSyxw" name="instructions" method="_23NOTLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23neBLhDEe2QK54y_oSyxw">
                  <body>@return the codeFragment</body>
                </ownedComment>
                <ownedParameter xmi:id="_21og8LhDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pDdgrhDEe2QK54y_oSyxw" name="size" method="_23NOTrhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23neBbhDEe2QK54y_oSyxw">
                  <body>@return the size</body>
                </ownedComment>
                <ownedParameter xmi:id="_2pDdg7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pDdhLhDEe2QK54y_oSyxw" name="generateCodeFragment" visibility="private" method="_23NOULhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2pEEkLhDEe2QK54y_oSyxw" name="getBaseInstruction" visibility="private" method="_23NOUbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pEEkbhDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pEEkrhDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pEEk7hDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pEElLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pEElbhDEe2QK54y_oSyxw" name="push" visibility="private" method="_23NOVrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pEElrhDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pEEl7hDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pEEmLhDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pEEmbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pEroLhDEe2QK54y_oSyxw" name="pull" visibility="private" method="_23NOW7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pErobhDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pErorhDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pEro7hDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pErpLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pErpbhDEe2QK54y_oSyxw" name="ifHas" visibility="private" method="_23NOYLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pErprhDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pErp7hDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pErqLhDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pErqbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pErqrhDEe2QK54y_oSyxw" name="ifNotHas" visibility="private" method="_23NOZbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pFSsLhDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pFSsbhDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pFSsrhDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pFSs7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pFStLhDEe2QK54y_oSyxw" name="wait" method="_23NOarhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pFStbhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pFStrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pFSt7hDEe2QK54y_oSyxw" name="sleep" isStatic="true" method="_23N1ULhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pFSuLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_21nS0LhDEe2QK54y_oSyxw" name="CodeFragment" visibility="package" method="_23NORLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_21nS1bhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_21nS1rhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedComment xmi:id="_23neArhDEe2QK54y_oSyxw">
                  <body>Constructor generates DSL instructions to transmit&#xD;
	 * the data over edges using the coordinator and channel&#xD;
	 * to determine the type of instruction and delta to &#xD;
	 * determine the number of times each instructions must&#xD;
	 * be attempted.&#xD;
	 * &#xD;
	 * @param delta&#xD;
	 * @param edges&#xD;
	 * @param coordinators&#xD;
	 * @param channel</body>
                </ownedComment>
                <ownedParameter xmi:id="_21nS0bhDEe2QK54y_oSyxw" name="delta">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_21nS0rhDEe2QK54y_oSyxw" name="edges" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21nS07hDEe2QK54y_oSyxw" name="coordinators" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21nS1LhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_21nS17hDEe2QK54y_oSyxw" type="_2pCPYLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_21og8bhDEe2QK54y_oSyxw" name="reportIfDifferentCoordinators" visibility="private" method="_23N1UrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21og8rhDEe2QK54y_oSyxw" name="coordinators" type="_2z5bkLhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_21og9LhDEe2QK54y_oSyxw" name="multipleCoordinators" visibility="private" method="_23N1VLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21og9bhDEe2QK54y_oSyxw" name="coordinators" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21og9rhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pGg0LhDEe2QK54y_oSyxw" name="CombinedActivation">
              <generalization xmi:id="_20FBxbhDEe2QK54y_oSyxw" general="_2oxJpLhDEe2QK54y_oSyxw"/>
              <interfaceRealization xmi:id="_21pIAbhDEe2QK54y_oSyxw" client="_2pGg0LhDEe2QK54y_oSyxw" supplier="_21glIbhDEe2QK54y_oSyxw" contract="_21glIbhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23N1V7hDEe2QK54y_oSyxw" name="CombinedActivation" specification="_2pGg0bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23N1WLhDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23N1WbhDEe2QK54y_oSyxw" type="_2pGg0LhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(name);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23N1WrhDEe2QK54y_oSyxw" name="CombinedActivation" specification="_20DzoLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23N1W7hDEe2QK54y_oSyxw" name="elem" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23N1XLhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23N1XbhDEe2QK54y_oSyxw" type="_2pGg0LhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(elem, time);	&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23N1XrhDEe2QK54y_oSyxw" name="CombinedActivation" specification="_20Eas7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23N1X7hDEe2QK54y_oSyxw" name="priorEntry" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23N1YLhDEe2QK54y_oSyxw" name="next" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23N1YbhDEe2QK54y_oSyxw" type="_2pGg0LhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>/* create a new this and add priorEntry &#xD;
		 * and next as subObjects. The new name is &#xD;
		 * &quot;PriorName + NextName&quot;. &#xD;
		 */&#xD;
		super(priorEntry,next.getLastUpdateTime());&#xD;
		String combinedName = &#xD;
				priorEntry.getName() + &quot;+&quot; + next.getName();&#xD;
		/* initially, this will be a clone of priorEntry */;&#xD;
		/* now update its name and add relevant attributes from next */&#xD;
		this.setName(combinedName);&#xD;
		this.addSubObject(priorEntry);&#xD;
		this.addSubObject(next);&#xD;
		var endTime = Math.max(priorEntry.getEndTime(), next.getEndTime());&#xD;
		this.setEndTime(endTime);&#xD;
		var startTime = Math.min(priorEntry.getStartTime(), next.getStartTime());&#xD;
		this.setStartTime(startTime);&#xD;
		this.addEdges(next.getEdges());&#xD;
		this.addCoordinators(next.getCoordinators());&#xD;
		this.addConflicts(next.getConflicts());&#xD;
		&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23N1YrhDEe2QK54y_oSyxw" name="canCombine" specification="_20EaubhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23N1Y7hDEe2QK54y_oSyxw" name="a2" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23N1ZLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>Boolean result = false;&#xD;
		/* make sure a2 is not null */&#xD;
		if (a2 != null) {&#xD;
			var newEntryCoordinator = a2.getCoordinators().get(0);&#xD;
			if (getCoordinators().contains(newEntryCoordinator)) {&#xD;
				/* The (first) coordinator of the newEntry&#xD;
				 * is in the list of coordinators of the prior entry.&#xD;
				 * Thus, these two can be combined for efficiency &#xD;
				 */&#xD;
&#xD;
				result = true;&#xD;
			}&#xD;
		}&#xD;
		return result;&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2pGg0bhDEe2QK54y_oSyxw" name="CombinedActivation" visibility="package" method="_23N1V7hDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2pHH4LhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2pHH4bhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2pGg0rhDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pHH4rhDEe2QK54y_oSyxw" type="_2pGg0LhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20DzoLhDEe2QK54y_oSyxw" name="CombinedActivation" visibility="package" method="_23N1WrhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_20EasLhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_20EasbhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_20DzobhDEe2QK54y_oSyxw" name="elem" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20DzorhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20EasrhDEe2QK54y_oSyxw" type="_2pGg0LhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20Eas7hDEe2QK54y_oSyxw" name="CombinedActivation" visibility="package" method="_23N1XrhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_20EatrhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_20Eat7hDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_20EatLhDEe2QK54y_oSyxw" name="priorEntry" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20EatbhDEe2QK54y_oSyxw" name="next" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20EauLhDEe2QK54y_oSyxw" type="_2pGg0LhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20EaubhDEe2QK54y_oSyxw" name="canCombine" method="_23N1YrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20FBwLhDEe2QK54y_oSyxw" name="a2" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20FBwbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pHu8LhDEe2QK54y_oSyxw" name="CommunicationGraph">
              <ownedComment xmi:id="_23oFALhDEe2QK54y_oSyxw">
                <body>@author sgoddard2&#xD;
 *</body>
              </ownedComment>
              <generalization xmi:id="_20HeALhDEe2QK54y_oSyxw" general="_2qirQLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22eOcbhDEe2QK54y_oSyxw" name="wfm" visibility="package" type="_2pQR0LhDEe2QK54y_oSyxw" association="_23-DQbhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22e1gLhDEe2QK54y_oSyxw" name="graphFileName" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22e1grhDEe2QK54y_oSyxw" name="verbose" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22e1hLhDEe2QK54y_oSyxw" name="workLoad" visibility="package" type="_2q5QkLhDEe2QK54y_oSyxw" association="_23-DRLhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23N1ZbhDEe2QK54y_oSyxw" name="CommunicationGraph" specification="_20Fo0LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23N1ZrhDEe2QK54y_oSyxw" name="fm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23N1Z7hDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23N1aLhDEe2QK54y_oSyxw" type="_2pHu8LhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>// constructor for GraphFile class&#xD;
		super(fm, workLoad, &quot;.wf&quot;);&#xD;
		this.wfm = fm;&#xD;
		this.workLoad = workLoad;&#xD;
		verbose = false; // initialize verbose to false&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23N1abhDEe2QK54y_oSyxw" name="CommunicationGraph" specification="_20GP47hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23N1arhDEe2QK54y_oSyxw" name="fm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23N1a7hDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23N1bLhDEe2QK54y_oSyxw" name="verbose">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23N1bbhDEe2QK54y_oSyxw" type="_2pHu8LhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>// constructor for GraphFile class&#xD;
		super(fm, workLoad, &quot;.wf&quot;);&#xD;
		this.wfm = fm;&#xD;
		this.workLoad = workLoad;&#xD;
		this.verbose = verbose; // initialize verbose to false&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23N1brhDEe2QK54y_oSyxw" name="createHeader" specification="_2pHu8bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23N1b7hDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>Description header = new Description();&#xD;
		header.add(String.format(&quot;WARP_%s{\n&quot;,workLoad.getName()));&#xD;
		return header;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23N1cLhDEe2QK54y_oSyxw" name="createFooter" specification="_2pI9ErhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23N1cbhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>Description footer = new Description();&#xD;
		footer.add(&quot;}\n&quot;);&#xD;
		return footer;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23N1crhDEe2QK54y_oSyxw" name="visualization" specification="_2pI9FrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23N1c7hDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>Description content = new Description();&#xD;
     String line = String.format(&#xD;
     	&quot;// M = %s and End-to-End reliability = %s\n&quot;,&#xD;
     	String.valueOf(workLoad.getMinPacketReceptionRate()),&#xD;
     	String.valueOf(workLoad.getE2e()));&#xD;
     content.add(line);&#xD;
     var flowNames = workLoad.getFlowNames();&#xD;
     for (int flowIndex = 0; flowIndex &lt; flowNames.length; flowIndex++) {&#xD;
         var flowName = flowNames[flowIndex];&#xD;
         var nodesInFlow = workLoad.getNodesInFlow(flowName);&#xD;
         var nNodesInFlow = (nodesInFlow.length);&#xD;
         /* array of communications costs per link */&#xD;
         var linkCostArray = workLoad.getNumTxAttemptsPerLink(flowName); &#xD;
         var totalCost = workLoad.getTotalTxAttemptsInFlow(flowName);&#xD;
         var minCost = nNodesInFlow - 1 ;&#xD;
         /*&#xD;
          * nEdges in the flow is the minimum communication cost, &#xD;
          * i.e., min nTx to go E2E with no errors&#xD;
          */&#xD;
         line = String.format(&#xD;
         		&quot;// Flow %s has a minimum communication cost of %d &quot;&#xD;
         		+ &quot;and a worst-case communication cost of %d\n&quot;, &#xD;
         		flowName, minCost, totalCost);&#xD;
         content.add(line);&#xD;
         line = String.format(&#xD;
         		&quot; %s (%d,%d,%d,%d) : &quot;, flowName, &#xD;
         		workLoad.getFlowPriority(flowName), workLoad.getFlowPeriod(flowName), &#xD;
         		workLoad.getFlowDeadline(flowName), workLoad.getFlowPhase(flowName)); &#xD;
         String nodeName;&#xD;
         for (int i = 0; i &lt; nNodesInFlow-1; i++) {  &#xD;
             nodeName = nodesInFlow[i];&#xD;
             var nTx = linkCostArray[i];&#xD;
             line = String.format(line + &quot;%s -%d-> &quot;,nodeName,nTx); &#xD;
             /* This version of the file has nTx in the edges of the flow */&#xD;
         }&#xD;
         nodeName = nodesInFlow[nNodesInFlow-1];&#xD;
         line = String.format(line + &quot;%s\n&quot;,nodeName); // add last node on the flow&#xD;
         content.add(line);&#xD;
     }&#xD;
     return content;&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23N1dLhDEe2QK54y_oSyxw" name="createWarpFileContent" specification="_2pJkIrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23N1dbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>String wfFileContents = fileVisualization().toString();&#xD;
     if (verbose) {&#xD;
     	System.out.println(&quot;************************************&quot;);&#xD;
     	System.out.println(&quot;Warp File Contents:&quot;);&#xD;
     	System.out.println(wfFileContents);&#xD;
     	System.out.println(&quot;************************************\n&quot;);&#xD;
     }&#xD;
     return wfFileContents;&#xD;
 </body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2pHu8bhDEe2QK54y_oSyxw" name="createHeader" method="_23N1brhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20G28LhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pI9ErhDEe2QK54y_oSyxw" name="createFooter" method="_23N1cLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20G28bhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pI9FrhDEe2QK54y_oSyxw" name="visualization" method="_23N1crhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20G28rhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pJkIrhDEe2QK54y_oSyxw" name="createWarpFileContent" method="_23N1dLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pJkI7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20Fo0LhDEe2QK54y_oSyxw" name="CommunicationGraph" method="_23N1ZbhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_20GP4LhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_20GP4bhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_20Fo0bhDEe2QK54y_oSyxw" name="fm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20Fo0rhDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20GP4rhDEe2QK54y_oSyxw" type="_2pHu8LhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20GP47hDEe2QK54y_oSyxw" name="CommunicationGraph" method="_23N1abhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_20GP57hDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_20GP6LhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_20GP5LhDEe2QK54y_oSyxw" name="fm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20GP5bhDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20GP5rhDEe2QK54y_oSyxw" name="verbose">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20GP6bhDEe2QK54y_oSyxw" type="_2pHu8LhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pKLMLhDEe2QK54y_oSyxw" name="ConnectivityPoset">
              <ownedComment xmi:id="_23oFAbhDEe2QK54y_oSyxw">
                <body>ConnectivityPoset extends Poset by selecting&#xD;
primary coordinator in the flow based on highest&#xD;
global connectivity.&#xD;
&#xD;
@author sgoddard</body>
              </ownedComment>
              <generalization xmi:id="_20IFFbhDEe2QK54y_oSyxw" general="_2ps9wLhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23OcYLhDEe2QK54y_oSyxw" name="ConnectivityPoset" specification="_20IFELhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23OcYbhDEe2QK54y_oSyxw" name="workload" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23OcYrhDEe2QK54y_oSyxw" type="_2pKLMLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(workload);&#xD;
		&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23OcY7hDEe2QK54y_oSyxw" name="findCoordinator" specification="_21pvEbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23OcZLhDEe2QK54y_oSyxw" name="nodesInFlow" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23OcZbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var coordinatorIndex = 0;&#xD;
		var maxConnections = 0;&#xD;
		var size = nodesInFlow.size();&#xD;
		for (Integer i = 0; i &lt; size; i++) {&#xD;
			/* get the #connections for this node from the&#xD;
			 * connectivity Map and see if it is the max so far&#xD;
			 * if so, store its index in the flow&#xD;
			 */&#xD;
			var node = nodesInFlow.get(i);&#xD;
			var numConnections = nodeConnectivityMap.get(node.getName());&#xD;
			if (numConnections > maxConnections) {&#xD;
				maxConnections = numConnections;&#xD;
				coordinatorIndex = i;&#xD;
			}&#xD;
		}	&#xD;
		/* return the index with the largest connectivity */&#xD;
		return coordinatorIndex;&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_20IFELhDEe2QK54y_oSyxw" name="ConnectivityPoset" visibility="package" method="_23OcYLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_20IFErhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_20IFE7hDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_20IFEbhDEe2QK54y_oSyxw" name="workload" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20IFFLhDEe2QK54y_oSyxw" type="_2pKLMLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_21pvEbhDEe2QK54y_oSyxw" name="findCoordinator" visibility="protected" method="_23OcY7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21pvErhDEe2QK54y_oSyxw" name="nodesInFlow" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21pvE7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pKyQLhDEe2QK54y_oSyxw" name="DeadlineComparator">
              <interfaceRealization xmi:id="_21qWJLhDEe2QK54y_oSyxw" client="_2pKyQLhDEe2QK54y_oSyxw" supplier="_20IsILhDEe2QK54y_oSyxw" contract="_20IsILhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23OcZrhDEe2QK54y_oSyxw" name="compare" specification="_21q9M7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23OcZ7hDEe2QK54y_oSyxw" name="obj1" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23OcaLhDEe2QK54y_oSyxw" name="obj2" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23OcabhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>return obj1.deadlineComparison(obj2); &#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_21q9M7hDEe2QK54y_oSyxw" name="compare" method="_23OcZrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21q9NLhDEe2QK54y_oSyxw" name="obj1" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21rkQLhDEe2QK54y_oSyxw" name="obj2" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21rkQbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pKyQrhDEe2QK54y_oSyxw" name="Description">
              <ownedComment xmi:id="_23oFArhDEe2QK54y_oSyxw">
                <body>@author sgoddard&#xD;
 *</body>
              </ownedComment>
              <generalization xmi:id="_21sLULhDEe2QK54y_oSyxw" general="_2z5bkLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22e1hrhDEe2QK54y_oSyxw" 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="_22fckLhDEe2QK54y_oSyxw" value="1L"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23OcarhDEe2QK54y_oSyxw" name="Description" specification="_2pLZULhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Oca7hDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23OcbLhDEe2QK54y_oSyxw" name="Description" specification="_2pLZVLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23OcbbhDEe2QK54y_oSyxw" name="descriptionString">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23OcbrhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super();&#xD;
		String[] lines = descriptionString.split(&quot;\\r?\\n&quot;);&#xD;
		for (String line : lines) {&#xD;
			this.add(line+&quot;\n&quot;);&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Ocb7hDEe2QK54y_oSyxw" name="toString" specification="_2pLZWbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23OccLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>StringBuffer sb = new StringBuffer();&#xD;
		for (String row: this) { &#xD;
			sb.append(row);&#xD;
		}&#xD;
		return sb.toString();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23OccbhDEe2QK54y_oSyxw" name="main" specification="_2pMAYLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23OccrhDEe2QK54y_oSyxw" name="args">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23Occ7hDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <language>java</language>
                <body>System.out.println(&quot;test&quot;);&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2pLZULhDEe2QK54y_oSyxw" name="Description" method="_23OcarhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2pLZUbhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2pLZUrhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2pLZU7hDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pLZVLhDEe2QK54y_oSyxw" name="Description" method="_23OcbLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2pLZVrhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2pLZV7hDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2pLZVbhDEe2QK54y_oSyxw" name="descriptionString">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pLZWLhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pLZWbhDEe2QK54y_oSyxw" name="toString" method="_23Ocb7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pLZWrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pMAYLhDEe2QK54y_oSyxw" name="main" isStatic="true" method="_23OccbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pMAYbhDEe2QK54y_oSyxw" name="args">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2pMAYrhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pMAZLhDEe2QK54y_oSyxw" name="Edge">
              <generalization xmi:id="_20KhU7hDEe2QK54y_oSyxw" general="_2ra1ALhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22fckbhDEe2QK54y_oSyxw" name="UNKNOWN" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22fckrhDEe2QK54y_oSyxw" value="&quot;Unknown&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22fck7hDEe2QK54y_oSyxw" name="flow">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22fclLhDEe2QK54y_oSyxw" name="src">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22fclbhDEe2QK54y_oSyxw" name="snk">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22fclrhDEe2QK54y_oSyxw" name="instance">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22fcl7hDEe2QK54y_oSyxw" name="coordinator">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22fcmLhDEe2QK54y_oSyxw" name="state" type="_2pNOgLhDEe2QK54y_oSyxw" association="_23oFA7hDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22gDoLhDEe2QK54y_oSyxw" name="numTx" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <interfaceRealization xmi:id="_21sLUrhDEe2QK54y_oSyxw" client="_2pMAZLhDEe2QK54y_oSyxw" supplier="_21glIbhDEe2QK54y_oSyxw" contract="_21glIbhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23OcdLhDEe2QK54y_oSyxw" name="Edge" specification="_2pN1kLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23OcdbhDEe2QK54y_oSyxw" type="_2pMAZLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super();&#xD;
		this.flow = UNKNOWN;&#xD;
		this.src = UNKNOWN;&#xD;
		this.snk = UNKNOWN;&#xD;
		this.instance = 0;&#xD;
		this.coordinator = UNKNOWN;&#xD;
		this.state = EdgeState.NOT_READY;&#xD;
		this.numTx = 0;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PDcLhDEe2QK54y_oSyxw" name="Edge" specification="_2pN1lLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PDcbhDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PDcrhDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PDc7hDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PDdLhDEe2QK54y_oSyxw" name="priority">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PDdbhDEe2QK54y_oSyxw" name="period">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PDdrhDEe2QK54y_oSyxw" name="deadline">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PDd7hDEe2QK54y_oSyxw" name="phase">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PDeLhDEe2QK54y_oSyxw" name="numTx">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PDebhDEe2QK54y_oSyxw" type="_2pMAZLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(priority, period, deadline, phase);&#xD;
		this.flow = flow;&#xD;
		this.src = src;&#xD;
		this.snk = snk;&#xD;
		this.instance = 0;&#xD;
		this.coordinator = UNKNOWN;&#xD;
		this.state = EdgeState.NOT_READY;&#xD;
		this.numTx = numTx;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PDerhDEe2QK54y_oSyxw" name="compareTo" specification="_20J6QLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PDe7hDEe2QK54y_oSyxw" name="edge" type="_2pMAZLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23PDfLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>return edge.getPriority() > this.getPriority() ? 1 : -1;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PDfbhDEe2QK54y_oSyxw" name="toString" specification="_2pOcoLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PDfrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>String result = String.format(&quot;%s:(%s,%s)&quot;, this.flow, this.src, this.snk);&#xD;
		return result;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PDf7hDEe2QK54y_oSyxw" name="print" specification="_2pOcpbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PDgLhDEe2QK54y_oSyxw" name="headerMsg">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>System.out.printf(&quot;\n%s&quot;, headerMsg);&#xD;
		this.print();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PDgbhDEe2QK54y_oSyxw" name="print" specification="_2pPDs7hDEe2QK54y_oSyxw">
                <language>java</language>
                <body>super.print();&#xD;
		System.out.printf(&quot;\tFlow:%s\n&quot;, this.flow);&#xD;
		System.out.printf(&quot;\tSrc:%s\n&quot;, this.src);&#xD;
		System.out.printf(&quot;\tSnk:%s\n&quot;, this.snk);&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2pN1kLhDEe2QK54y_oSyxw" name="Edge" visibility="package" method="_23OcdLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2pN1kbhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2pN1krhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2pN1k7hDEe2QK54y_oSyxw" type="_2pMAZLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pN1lLhDEe2QK54y_oSyxw" name="Edge" visibility="package" method="_23PDcLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2pN1nbhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2pN1nrhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2pN1lbhDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pN1lrhDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pN1l7hDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pN1mLhDEe2QK54y_oSyxw" name="priority">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pN1mbhDEe2QK54y_oSyxw" name="period">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pN1mrhDEe2QK54y_oSyxw" name="deadline">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pN1m7hDEe2QK54y_oSyxw" name="phase">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pN1nLhDEe2QK54y_oSyxw" name="numTx">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pN1n7hDEe2QK54y_oSyxw" type="_2pMAZLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pOcoLhDEe2QK54y_oSyxw" name="toString" method="_23PDfbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pOcobhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pOcpbhDEe2QK54y_oSyxw" name="print" method="_23PDf7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pOcprhDEe2QK54y_oSyxw" name="headerMsg">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pPDs7hDEe2QK54y_oSyxw" name="print" method="_23PDgbhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_20J6QLhDEe2QK54y_oSyxw" name="compareTo" method="_23PDerhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20J6QbhDEe2QK54y_oSyxw" name="edge" type="_2pMAZLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20J6QrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
              <nestedClassifier xmi:type="uml:Enumeration" xmi:id="_2pNOgLhDEe2QK54y_oSyxw" name="EdgeState" visibility="private">
                <ownedLiteral xmi:id="_2pNOgrhDEe2QK54y_oSyxw" name="RELEASED"/>
                <ownedLiteral xmi:id="_2pNOg7hDEe2QK54y_oSyxw" name="EXECUTING"/>
                <ownedLiteral xmi:id="_2pNOhLhDEe2QK54y_oSyxw" name="NOT_READY"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pQR0LhDEe2QK54y_oSyxw" name="FileManager">
              <ownedComment xmi:id="_23oFBbhDEe2QK54y_oSyxw">
                <body>@author sgoddard&#xD;
@version 1.5&#xD;
 *</body>
              </ownedComment>
              <ownedAttribute xmi:id="_22gDobhDEe2QK54y_oSyxw" name="baseDirectory">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22gDorhDEe2QK54y_oSyxw" name="verbose" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PDgrhDEe2QK54y_oSyxw" name="FileManager" specification="_2pQ44LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PDg7hDEe2QK54y_oSyxw" type="_2pQR0LhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>baseDirectory = System.getProperty(&quot;user.dir&quot;); // Get current directory path and set to the&#xD;
                                                 // base directory&#xD;
 // constructor for this class&#xD;
 verbose = false; // initialize verbose to false&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PDhLhDEe2QK54y_oSyxw" name="FileManager" specification="_2pQ45LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PDhbhDEe2QK54y_oSyxw" name="verbose">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PDhrhDEe2QK54y_oSyxw" type="_2pQR0LhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>baseDirectory = System.getProperty(&quot;user.dir&quot;); // Get current directory path and set to the&#xD;
                                                 // base directory&#xD;
 // constructor for this class&#xD;
 this.verbose = verbose; // initialize verbose as specified&#xD;
&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PDh7hDEe2QK54y_oSyxw" name="getDocumentsDirectory" specification="_2pRf8bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PDiLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>// return the 'Documents Directory' for the appropriate OS&#xD;
 String documentsDirectory;&#xD;
 if (OSValidator.isWindows()) {&#xD;
   documentsDirectory = new JFileChooser().getFileSystemView().getDefaultDirectory().toString();&#xD;
 } else if (OSValidator.isMac()) {&#xD;
   documentsDirectory = System.getProperty(&quot;user.home&quot;) + File.separator + &quot;Documents&quot;;&#xD;
 } else { // for all other Unix systems&#xD;
   documentsDirectory = System.getProperty(&quot;user.home&quot;); // assume $HOME for Unix systems (not&#xD;
                                                         // MACOS)&#xD;
 }&#xD;
 return documentsDirectory;&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PDibhDEe2QK54y_oSyxw" name="getCurrentDirectory" specification="_2pRf87hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PDirhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>return System.getProperty(&quot;user.dir&quot;);&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PDi7hDEe2QK54y_oSyxw" name="createFile" specification="_2pSHAbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PDjLhDEe2QK54y_oSyxw" name="file">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PDjbhDEe2QK54y_oSyxw" name="nameExtension">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PDjrhDEe2QK54y_oSyxw" name="suffix">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PDj7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>/*&#xD;
  * we don't actually create the file...it will be created when written to this routine really&#xD;
  * just creates the file name ;-)&#xD;
  */&#xD;
 Integer suffixIndex = file.lastIndexOf('.');&#xD;
 String fileString = file;&#xD;
 if (suffixIndex > 0) { // if a suffix exists, index will be > 0&#xD;
   fileString = file.substring(0, suffixIndex); // get the file string sans the suffix&#xD;
 }&#xD;
 /*&#xD;
  * fileString has no suffix at this point (removed if it existed) Now add file name extension&#xD;
  * and suffix&#xD;
  */&#xD;
 fileString = fileString + nameExtension + suffix;&#xD;
&#xD;
 if (verbose) {&#xD;
   System.out.println(&quot;File &quot; + fileString + &quot; is created!&quot;);&#xD;
 }&#xD;
 return fileString;&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PDkLhDEe2QK54y_oSyxw" name="createFile" specification="_2pSHBrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PDkbhDEe2QK54y_oSyxw" name="file">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PDkrhDEe2QK54y_oSyxw" name="suffix">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PDk7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>Integer suffixIndex = file.lastIndexOf('.');&#xD;
 String fileString = file;&#xD;
 if (suffixIndex > 0) { // if a suffix exists, index will be > 0&#xD;
   fileString = file.substring(0, suffixIndex - 1); // get the file string sans the suffix&#xD;
 }&#xD;
 // fileString has no suffix at this point (removed if it existed)&#xD;
 // Now add file name extension and suffix&#xD;
 fileString = fileString + suffix;&#xD;
 // we don't actually create the file...it will be created when written to&#xD;
 // this routine really just creates the file name ;-)&#xD;
 if (verbose) {&#xD;
   System.out.println(&quot;File &quot; + fileString + &quot; is created!&quot;);&#xD;
 }&#xD;
 return fileString;&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PDlLhDEe2QK54y_oSyxw" name="createDirectory" specification="_2pSuELhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PDlbhDEe2QK54y_oSyxw" name="directory">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PDlrhDEe2QK54y_oSyxw" name="subDirectory">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PDl7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>String newDirectory;&#xD;
 if (subDirectory.startsWith(&quot;/&quot;)) { // check if full path provided&#xD;
   newDirectory = subDirectory; // if subDirectory is a full path, use it.&#xD;
 } else { // subDirectory has relative path, so just append&#xD;
   newDirectory = directory + File.separator + subDirectory;&#xD;
 }&#xD;
 try {&#xD;
   Path path = Paths.get(newDirectory);&#xD;
   Files.createDirectories(path);&#xD;
   if (verbose) {&#xD;
     System.out.println(&quot;Directory &quot; + newDirectory + &quot; is created!&quot;);&#xD;
   }&#xD;
 } catch (IOException e) {&#xD;
   System.err.println(&quot;Failed to create directory!&quot; + e.getMessage());&#xD;
   newDirectory = directory; // in case of error, just use the initial directory&#xD;
 }&#xD;
 return newDirectory;&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PDmLhDEe2QK54y_oSyxw" name="writeFile" specification="_2pSuFLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PDmbhDEe2QK54y_oSyxw" name="file">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PDmrhDEe2QK54y_oSyxw" name="fileContents">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>// Authentication tag = new Authentication(COURSE_TAG);&#xD;
 Path fileName = Path.of(file);&#xD;
 try {&#xD;
   // Files.writeString(fileName, tag.sign(fileContents)); // uncomment to tag course file&#xD;
   Files.writeString(fileName, fileContents); // comment out if tag is being used (line above)&#xD;
 } catch (IOException e) {&#xD;
   // handle error&#xD;
   System.err.println(&quot;Error on writing file contents to file&quot; + file + &quot;: &quot; + e.getMessage());&#xD;
 } // the file will be closed automatically upon exit of this try block&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PDm7hDEe2QK54y_oSyxw" name="readFile" specification="_2pSuF7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PDnLhDEe2QK54y_oSyxw" name="file">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PDnbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>// String contents = null;&#xD;
 Path fileName = Path.of(file);&#xD;
 String contents = null;&#xD;
 try {&#xD;
   contents = Files.readString(fileName);&#xD;
 } catch (IOException e) {&#xD;
   // handle error&#xD;
   System.err.println(&quot;Error on reading file&quot; + file + &quot;: &quot; + e.getMessage());&#xD;
 } // the file will be closed automatically upon exit of this try block&#xD;
 return contents;&#xD;
  </body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2pQ44LhDEe2QK54y_oSyxw" name="FileManager" method="_23PDgrhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2pQ44bhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2pQ44rhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedComment xmi:id="_23oFBrhDEe2QK54y_oSyxw">
                  <body>@param args</body>
                </ownedComment>
                <ownedParameter xmi:id="_2pQ447hDEe2QK54y_oSyxw" type="_2pQR0LhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pQ45LhDEe2QK54y_oSyxw" name="FileManager" method="_23PDhLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2pQ45rhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2pQ457hDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2pQ45bhDEe2QK54y_oSyxw" name="verbose">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pRf8LhDEe2QK54y_oSyxw" type="_2pQR0LhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pRf8bhDEe2QK54y_oSyxw" name="getDocumentsDirectory" method="_23PDh7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pRf8rhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pRf87hDEe2QK54y_oSyxw" name="getCurrentDirectory" method="_23PDibhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pSHALhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pSHAbhDEe2QK54y_oSyxw" name="createFile" method="_23PDi7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23oFB7hDEe2QK54y_oSyxw">
                  <body>Build the name extension used for all files created by this tool. The nameExtension will be&#xD;
   * added to the base input file name so that all of the output files can be associated with the&#xD;
   * input file The file naming pattern is: baseFileNameFileType-NonDefaultParameterList where&#xD;
   * FileType is Schedule, SimInput, ReliabilityMatrix, or ReliabilityArray Default parameters are&#xD;
   * not identified in the NameExtension All parameters used to create the file, should be listed&#xD;
   * near the top of the file in the Parameter Section, followed by the file contents.&#xD;
   *</body>
                </ownedComment>
                <ownedParameter xmi:id="_2pSHArhDEe2QK54y_oSyxw" name="file">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pSHA7hDEe2QK54y_oSyxw" name="nameExtension">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pSHBLhDEe2QK54y_oSyxw" name="suffix">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pSHBbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pSHBrhDEe2QK54y_oSyxw" name="createFile" method="_23PDkLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pSHB7hDEe2QK54y_oSyxw" name="file">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pSHCLhDEe2QK54y_oSyxw" name="suffix">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pSHCbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pSuELhDEe2QK54y_oSyxw" name="createDirectory" method="_23PDlLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pSuEbhDEe2QK54y_oSyxw" name="directory">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pSuErhDEe2QK54y_oSyxw" name="subDirectory">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pSuE7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pSuFLhDEe2QK54y_oSyxw" name="writeFile" method="_23PDmLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pSuFbhDEe2QK54y_oSyxw" name="file">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pSuFrhDEe2QK54y_oSyxw" name="fileContents">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pSuF7hDEe2QK54y_oSyxw" name="readFile" method="_23PDm7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pSuGLhDEe2QK54y_oSyxw" name="file">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pSuGbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pTVILhDEe2QK54y_oSyxw" name="Flow">
              <ownedComment xmi:id="_23oFCLhDEe2QK54y_oSyxw">
                <body>Class that represents&#xD;
&#xD;
@author sgoddard&#xD;
 *</body>
              </ownedComment>
              <generalization xmi:id="_20QA4bhDEe2QK54y_oSyxw" general="_2ra1ALhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22gqsLhDEe2QK54y_oSyxw" name="UNDEFINED" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22gqsbhDEe2QK54y_oSyxw" value="-1"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22gqsrhDEe2QK54y_oSyxw" name="DEFAULT_FAULTS_TOLERATED" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22gqs7hDEe2QK54y_oSyxw" value="0"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22gqtLhDEe2QK54y_oSyxw" name="DEFAULT_INDEX" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22gqtbhDEe2QK54y_oSyxw" value="0"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22gqtrhDEe2QK54y_oSyxw" name="DEFAULT_PERIOD" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22gqt7hDEe2QK54y_oSyxw" value="100"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22h40LhDEe2QK54y_oSyxw" name="DEFAULT_DEADLINE" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22h40bhDEe2QK54y_oSyxw" value="100"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22h40rhDEe2QK54y_oSyxw" name="DEFAULT_PHASE" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22h407hDEe2QK54y_oSyxw" value="0"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22h41LhDEe2QK54y_oSyxw" name="initialPriority" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22h41bhDEe2QK54y_oSyxw" value="UNDEFINED"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22h417hDEe2QK54y_oSyxw" name="index" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22if4bhDEe2QK54y_oSyxw" name="numTxPerLink" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22if47hDEe2QK54y_oSyxw" name="nodes" visibility="package" type="_2z5bkLhDEe2QK54y_oSyxw" association="_23-DR7hDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22if5rhDEe2QK54y_oSyxw" name="linkTxAndTotalCost" visibility="package" type="_2z5bkLhDEe2QK54y_oSyxw" association="_23-qUbhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22jG8rhDEe2QK54y_oSyxw" name="edges" visibility="package" type="_2z5bkLhDEe2QK54y_oSyxw" association="_23-qVLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22juArhDEe2QK54y_oSyxw" name="nodePredecessor" visibility="package" type="_2poFQrhDEe2QK54y_oSyxw" association="_23_RYbhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22juBLhDEe2QK54y_oSyxw" name="edgePredecessor" visibility="package" type="_2pMAZLhDEe2QK54y_oSyxw" association="_23_RZLhDEe2QK54y_oSyxw"/>
              <interfaceRealization xmi:id="_21uAgLhDEe2QK54y_oSyxw" client="_2pTVILhDEe2QK54y_oSyxw" supplier="_21glIbhDEe2QK54y_oSyxw" contract="_21glIbhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PqgLhDEe2QK54y_oSyxw" name="Flow" specification="_2pT8MLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PqgbhDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PqgrhDEe2QK54y_oSyxw" name="priority">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23Pqg7hDEe2QK54y_oSyxw" name="index">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23PqhLhDEe2QK54y_oSyxw" type="_2pTVILhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(name, priority, DEFAULT_PERIOD, DEFAULT_DEADLINE, DEFAULT_PHASE);&#xD;
		this.index = index;&#xD;
		/*&#xD;
		 * Default numTxPerLink is 1 transmission per link. Will be updated based on&#xD;
		 * flow updated based on flow length and reliability parameters&#xD;
		 */&#xD;
		this.numTxPerLink = DEFAULT_FAULTS_TOLERATED + 1;&#xD;
		this.nodes = new ArrayList&lt;>();&#xD;
		this.edges = new ArrayList&lt;>();&#xD;
		this.linkTxAndTotalCost = new ArrayList&lt;>();&#xD;
		this.edges = new ArrayList&lt;>();&#xD;
		this.nodePredecessor = null;&#xD;
		this.edgePredecessor = null;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PqhbhDEe2QK54y_oSyxw" name="Flow" specification="_2pUjQLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PqhrhDEe2QK54y_oSyxw" type="_2pTVILhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super();&#xD;
		this.index = DEFAULT_INDEX;&#xD;
		/*&#xD;
		 * Default numTxPerLink is 1 transmission per link. Will be updated based on&#xD;
		 * flow updated based on flow length and reliability parameters&#xD;
		 */&#xD;
		this.numTxPerLink = DEFAULT_FAULTS_TOLERATED + 1;&#xD;
		this.nodes = new ArrayList&lt;>();&#xD;
		this.linkTxAndTotalCost = new ArrayList&lt;>();&#xD;
		this.edges = new ArrayList&lt;>();&#xD;
		this.nodePredecessor = null;&#xD;
		this.edgePredecessor = null;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Pqh7hDEe2QK54y_oSyxw" name="getInitialPriority" specification="_2pUjRLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PqiLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>return initialPriority;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PqibhDEe2QK54y_oSyxw" name="getIndex" specification="_2pUjRrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PqirhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>return index;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Pqi7hDEe2QK54y_oSyxw" name="getNumTxPerLink" specification="_2pUjSLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PqjLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>return numTxPerLink;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PqjbhDEe2QK54y_oSyxw" name="getNodes" specification="_2pUjSrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PqjrhDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return nodes;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Pqj7hDEe2QK54y_oSyxw" name="getEdges" specification="_2pVKUbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PqkLhDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return edges;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PqkbhDEe2QK54y_oSyxw" name="addEdge" specification="_20OLsLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PqkrhDEe2QK54y_oSyxw" name="edge" type="_2pMAZLhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>/* set predecessor and add edge to flow */&#xD;
		edge.setPredecessor(edgePredecessor);&#xD;
		edges.add(edge);&#xD;
		/* update predecessor for next edge added */&#xD;
		edgePredecessor = edge;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Pqk7hDEe2QK54y_oSyxw" name="addNode" specification="_20OywLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PqlLhDEe2QK54y_oSyxw" name="node" type="_2poFQrhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>/* set predecessor and add edge to flow */&#xD;
		node.setPredecessor(nodePredecessor);&#xD;
		nodes.add(node);&#xD;
		/* update predecessor for next edge added */&#xD;
		nodePredecessor = node;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PqlbhDEe2QK54y_oSyxw" name="getLinkTxAndTotalCost" specification="_2pVxYLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PqlrhDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return linkTxAndTotalCost;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Pql7hDEe2QK54y_oSyxw" name="setInitialPriority" specification="_2pVxYrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PqmLhDEe2QK54y_oSyxw" name="initialPriority">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>this.initialPriority = initialPriority;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PqmbhDEe2QK54y_oSyxw" name="setIndex" specification="_2pVxZLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PqmrhDEe2QK54y_oSyxw" name="index">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>this.index = index;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Pqm7hDEe2QK54y_oSyxw" name="setNumTxPerLink" specification="_2pWYcbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PqnLhDEe2QK54y_oSyxw" name="numTxPerLink">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>this.numTxPerLink = numTxPerLink;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PqnbhDEe2QK54y_oSyxw" name="setNodes" specification="_21unk7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PqnrhDEe2QK54y_oSyxw" name="nodes" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>this.nodes = nodes;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Pqn7hDEe2QK54y_oSyxw" name="setLinkTxAndTotalCost" specification="_21vOobhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PqoLhDEe2QK54y_oSyxw" name="linkTxAndTotalCost" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>this.linkTxAndTotalCost = linkTxAndTotalCost;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PqobhDEe2QK54y_oSyxw" name="compareTo" specification="_20OywrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PqorhDEe2QK54y_oSyxw" name="flow" type="_2pTVILhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23Pqo7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>// ascending order (0 is highest priority)&#xD;
		return flow.getPriority() > this.getPriority() ? -1 : 1;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23PqpLhDEe2QK54y_oSyxw" name="toString" specification="_2pWYc7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23PqpbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>return getName();&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2pT8MLhDEe2QK54y_oSyxw" name="Flow" visibility="package" method="_23PqgLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2pT8NLhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2pT8NbhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedComment xmi:id="_23oFCbhDEe2QK54y_oSyxw">
                  <body>Constructor that sets name, priority, and index</body>
                </ownedComment>
                <ownedParameter xmi:id="_2pT8MbhDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pT8MrhDEe2QK54y_oSyxw" name="priority">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pT8M7hDEe2QK54y_oSyxw" name="index">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pT8NrhDEe2QK54y_oSyxw" type="_2pTVILhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pUjQLhDEe2QK54y_oSyxw" name="Flow" visibility="package" method="_23PqhbhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2pUjQbhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2pUjQrhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedComment xmi:id="_23osELhDEe2QK54y_oSyxw">
                  <body>Default constructor Everything is set to the default value, null or an empty&#xD;
	 * ArrayList.</body>
                </ownedComment>
                <ownedParameter xmi:id="_2pUjQ7hDEe2QK54y_oSyxw" type="_2pTVILhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pUjRLhDEe2QK54y_oSyxw" name="getInitialPriority" method="_23Pqh7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23osEbhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Returns the initial priority of the flow.&lt;/h1>&#xD;
	 * &#xD;
	 * @return the initialPriority</body>
                </ownedComment>
                <ownedParameter xmi:id="_2pUjRbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pUjRrhDEe2QK54y_oSyxw" name="getIndex" method="_23PqibhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23osErhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Returns the index of the flow.&lt;/h1>&#xD;
	 * &#xD;
	 * @return the index</body>
                </ownedComment>
                <ownedParameter xmi:id="_2pUjR7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pUjSLhDEe2QK54y_oSyxw" name="getNumTxPerLink" method="_23Pqi7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23osE7hDEe2QK54y_oSyxw">
                  <body>&lt;h1>Returns the numTxPerLink&lt;/h1>&#xD;
	 * &#xD;
	 * @return the numTxPerLink</body>
                </ownedComment>
                <ownedParameter xmi:id="_2pUjSbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pUjSrhDEe2QK54y_oSyxw" name="getNodes" method="_23PqjbhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23osFLhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Returns an ArrayList of all the nodes in the flow.&lt;/h1>&#xD;
	 * &#xD;
	 * @return the nodes</body>
                </ownedComment>
                <ownedParameter xmi:id="_21unkLhDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pVKUbhDEe2QK54y_oSyxw" name="getEdges" method="_23Pqj7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23osFbhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Returns an ArrayList of all the edges in the flow.&lt;/h1>&#xD;
	 * &#xD;
	 * @return the edges</body>
                </ownedComment>
                <ownedParameter xmi:id="_21unkbhDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pVxYLhDEe2QK54y_oSyxw" name="getLinkTxAndTotalCost" method="_23PqlbhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23osGLhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Returns the linkTxAndTotalCost ArrayList.&lt;/h1>&#xD;
	 * &#xD;
	 * @return the linkTxAndTotalCost</body>
                </ownedComment>
                <ownedParameter xmi:id="_21unkrhDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pVxYrhDEe2QK54y_oSyxw" name="setInitialPriority" method="_23Pql7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23osGbhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Sets the initialPriority of the flow.&lt;/h1>&#xD;
	 * &#xD;
	 * @param initialPriority the initialPriority to set</body>
                </ownedComment>
                <ownedParameter xmi:id="_2pVxY7hDEe2QK54y_oSyxw" name="initialPriority">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pVxZLhDEe2QK54y_oSyxw" name="setIndex" method="_23PqmbhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23osGrhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Sets the index of the flow.&lt;/h1>&#xD;
	 * &#xD;
	 * @param index the index to set</body>
                </ownedComment>
                <ownedParameter xmi:id="_2pWYcLhDEe2QK54y_oSyxw" name="index">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pWYcbhDEe2QK54y_oSyxw" name="setNumTxPerLink" method="_23Pqm7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23osG7hDEe2QK54y_oSyxw">
                  <body>&lt;h1>Sets the numTxPerLink of the flow.&lt;/h1>&#xD;
	 * &#xD;
	 * @param numTxPerLink the numTxPerLink to set</body>
                </ownedComment>
                <ownedParameter xmi:id="_2pWYcrhDEe2QK54y_oSyxw" name="numTxPerLink">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pWYc7hDEe2QK54y_oSyxw" name="toString" method="_23PqpLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pXmkLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20OLsLhDEe2QK54y_oSyxw" name="addEdge" method="_23PqkbhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23osFrhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Adds an edge to the flow.&lt;/h1>&#xD;
	 * &lt;p>&#xD;
	 * Sets the edges predecessor to the current flow edgePredecessor. Then adds the&#xD;
	 * edge to the edge ArrayList. Finally updates the flow attribute&#xD;
	 * edgePredecessor to be the newly added edge.&#xD;
	 * &lt;/p>&#xD;
	 * &#xD;
	 * @param edge Edge to add to the flow.</body>
                </ownedComment>
                <ownedParameter xmi:id="_20OLsbhDEe2QK54y_oSyxw" name="edge" type="_2pMAZLhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20OywLhDEe2QK54y_oSyxw" name="addNode" method="_23Pqk7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23osF7hDEe2QK54y_oSyxw">
                  <body>&lt;h1>Adds a node to the flow.&lt;/h1>&#xD;
	 * &lt;p>&#xD;
	 * Sets the nodes predecessor to the current flow nodePredecessor. Then adds the&#xD;
	 * node to the node ArrayList. Finally updates the flow attribute&#xD;
	 * nodePredecessor to be the newly added node.&#xD;
	 * &lt;/p>&#xD;
	 * &#xD;
	 * @param node Node to add to the flow</body>
                </ownedComment>
                <ownedParameter xmi:id="_20OywbhDEe2QK54y_oSyxw" name="node" type="_2poFQrhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20OywrhDEe2QK54y_oSyxw" name="compareTo" method="_23PqobhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20Oyw7hDEe2QK54y_oSyxw" name="flow" type="_2pTVILhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20QA4LhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_21unk7hDEe2QK54y_oSyxw" name="setNodes" method="_23PqnbhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23osHLhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Overwrites the current list of nodes with a new list of nodes.&lt;/h1>&#xD;
	 * &#xD;
	 * @param nodes the nodes to set</body>
                </ownedComment>
                <ownedParameter xmi:id="_21unlLhDEe2QK54y_oSyxw" name="nodes" type="_2z5bkLhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_21vOobhDEe2QK54y_oSyxw" name="setLinkTxAndTotalCost" method="_23Pqn7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23osHbhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Overwrites the current linkTxAndTotalCost with a new&#xD;
	 * linkTxAndTotalCost.&lt;/h1>&#xD;
	 * &#xD;
	 * @param linkTxAndTotalCost the linkTxAndTotalCost to set</body>
                </ownedComment>
                <ownedParameter xmi:id="_21vOorhDEe2QK54y_oSyxw" name="linkTxAndTotalCost" type="_2z5bkLhDEe2QK54y_oSyxw"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pZbwLhDEe2QK54y_oSyxw" name="FlowMap">
              <ownedComment xmi:id="_23osHrhDEe2QK54y_oSyxw">
                <body>FlowMap creates a mapping from flow name to &#xD;
flow object (&lt;name, Flow>).&#xD;
&#xD;
@author sgoddard2&#xD;
 *</body>
              </ownedComment>
              <generalization xmi:id="_20RPALhDEe2QK54y_oSyxw" general="_2ov7gLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22kVELhDEe2QK54y_oSyxw" 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="_22kVEbhDEe2QK54y_oSyxw" value="1L"/>
              </ownedAttribute>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pZbwbhDEe2QK54y_oSyxw" name="FlowNodeToActivationMap">
              <ownedComment xmi:id="_23osH7hDEe2QK54y_oSyxw">
                <body>FlowNodeToActivationMap creates a mapping from flow node  &#xD;
to an activation (&lt;Node, Activation>).&#xD;
&#xD;
@author sgoddard2&#xD;
 *</body>
              </ownedComment>
              <generalization xmi:id="_20R2EbhDEe2QK54y_oSyxw" general="_2ov7gLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22kVErhDEe2QK54y_oSyxw" 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="_22kVE7hDEe2QK54y_oSyxw" value="1L"/>
              </ownedAttribute>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2paC0LhDEe2QK54y_oSyxw" name="GraphViz">
              <ownedComment xmi:id="_23osILhDEe2QK54y_oSyxw">
                <body>@author sgoddard2&#xD;
Copyright Â© 2020 Steve Goddard. All rights reserved.&#xD;
 *</body>
              </ownedComment>
              <generalization xmi:id="_20TrQbhDEe2QK54y_oSyxw" general="_2qirQLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22kVFLhDEe2QK54y_oSyxw" name="EMPTY" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22kVFbhDEe2QK54y_oSyxw" value="&quot;&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22kVFrhDEe2QK54y_oSyxw" name="GRAPH_VIZ_SUFFIX" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22kVF7hDEe2QK54y_oSyxw" value="&quot;.gv&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22kVGLhDEe2QK54y_oSyxw" name="gvFileContents" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22k8IbhDEe2QK54y_oSyxw" name="gvTitleCaption" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22k8I7hDEe2QK54y_oSyxw" name="wfm" visibility="package" type="_2pQR0LhDEe2QK54y_oSyxw" association="_23_4crhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22k8JbhDEe2QK54y_oSyxw" name="graphFile" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22k8J7hDEe2QK54y_oSyxw" name="verbose" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22ljMbhDEe2QK54y_oSyxw" name="gv" visibility="package" type="_2paC0LhDEe2QK54y_oSyxw" association="_24AfgLhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23QRkLhDEe2QK54y_oSyxw" name="GraphViz" specification="_20SdIbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23QRkbhDEe2QK54y_oSyxw" name="wfm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23QRkrhDEe2QK54y_oSyxw" name="graphFile">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23QRk7hDEe2QK54y_oSyxw" type="_2paC0LhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(wfm, EMPTY, GRAPH_VIZ_SUFFIX); // VisualizationObject constructor&#xD;
     this.wfm = wfm; // used to access the basic WARP file management functions&#xD;
     this.graphFile = graphFile;&#xD;
     this.gv = this;&#xD;
     verbose = false;&#xD;
     createGraphVizContent();&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23QRlLhDEe2QK54y_oSyxw" name="GraphViz" specification="_20TENLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23QRlbhDEe2QK54y_oSyxw" name="wfm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23QRlrhDEe2QK54y_oSyxw" name="graphFile">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23QRl7hDEe2QK54y_oSyxw" name="verbose">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23QRmLhDEe2QK54y_oSyxw" type="_2paC0LhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(wfm, EMPTY, GRAPH_VIZ_SUFFIX); // VisualizationObject constructor&#xD;
     this.wfm = wfm; // used to access the basic WARP file management functions&#xD;
     this.graphFile = graphFile;&#xD;
     this.gv = this;&#xD;
     this.verbose = verbose;&#xD;
     createGraphVizContent();&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23QRmbhDEe2QK54y_oSyxw" name="visualization" specification="_2pap4LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23QRmrhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return new Description(getGraphVizContent());&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23QRm7hDEe2QK54y_oSyxw" name="initializeGraphVizContent" specification="_2pbQ8LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23QRnLhDEe2QK54y_oSyxw" name="graphName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>/*start the gv file by adding the 1st line to the contents string */&#xD;
     gvFileContents = String.format(&quot;strict digraph %s {\n&quot;,graphName);&#xD;
     /* remove 'strict' if multiple edges in the same direction are to be shown */&#xD;
     gvTitleCaption = &quot;labelloc  =  \&quot;t\&quot; \n&quot;; // Place the rentered graph's title on top.&#xD;
     /* &#xD;
      * create a title caption for the rendered graph in the .gv file&#xD;
      * label string is in html format, so need an end delimeter after adding flows&#xD;
      */&#xD;
     gvTitleCaption = String.format(gvTitleCaption + &quot;label = &lt;Graph %s &lt;br/>\n&quot;,graphName);&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23QRnbhDEe2QK54y_oSyxw" name="finalizeGraphVizContent" specification="_2pbQ8rhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>/* &#xD;
      * wrap up the gv file content by finalizing title caption&#xD;
      * then add it to the file contents and terminate the graph viz structure&#xD;
      */&#xD;
     gvTitleCaption += &quot;>\n&quot;;&#xD;
     /* &#xD;
      * end the gv file by adding the caption for rendering and the last line &#xD;
      * to the contents string&#xD;
      */&#xD;
     gvFileContents = gvFileContents + gvTitleCaption + &quot;} \n&quot;;  &#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Q4oLhDEe2QK54y_oSyxw" name="getGraphVizContent" specification="_2pbQ87hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Q4obhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>return gvFileContents;&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Q4orhDEe2QK54y_oSyxw" name="createGraphVizContent" specification="_2pbQ9bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Q4o7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>/*&#xD;
 	 * GraphVizListener reads the graphFile string and calls the functions&#xD;
 	 * in this class, as it walks the input graphFile structure to build&#xD;
 	 * the GraphViz contents.&#xD;
 	 */&#xD;
     GraphVizListener.buildGraphViz(gv); &#xD;
     if (verbose) {&#xD;
     	System.out.println(&quot;************************************&quot;);&#xD;
     	System.out.println(&quot;GraphViz File Contents:&quot;);&#xD;
     	System.out.println(getGraphVizContent());&#xD;
     	System.out.println(&quot;************************************\n&quot;);&#xD;
     }&#xD;
     return getGraphVizContent();&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Q4pLhDEe2QK54y_oSyxw" name="addFlowToGraphViz" specification="_2pb4ALhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Q4pbhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>/* add a 3 spaces before the start of the chain defining this flow to the gv contents string */&#xD;
     gvFileContents = gvFileContents + &quot;   &quot;;  &#xD;
     gvTitleCaption = String.format(gvTitleCaption + &quot;Flow %s: &quot;, flowName);&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Q4prhDEe2QK54y_oSyxw" name="addSrcNodeToGraphViz" specification="_2pb4ArhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Q4p7hDEe2QK54y_oSyxw" name="nodeName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>String fileContents = String.format(&quot; %s  ->&quot;,nodeName);&#xD;
 	String titleCaption = String.format(&quot;%s -&amp;#62; &quot;,nodeName);&#xD;
 	addNodeName(fileContents,titleCaption);&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Q4qLhDEe2QK54y_oSyxw" name="addSnkNodeToGraphViz" specification="_2pb4BLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Q4qbhDEe2QK54y_oSyxw" name="nodeName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>String fileContents = String.format(&quot; %s&quot;,nodeName);&#xD;
 	String titleCaption = String.format(&quot;%s&quot;,nodeName);&#xD;
 	addNodeName(fileContents,titleCaption);&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Q4qrhDEe2QK54y_oSyxw" name="finalizeCurrentFlowInGraphViz" specification="_2pcfELhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>/* add the ';' and '\n' to end this line of the chain defined in this flow */&#xD;
     gvFileContents = gvFileContents + &quot;; \n&quot; ;&#xD;
     gvTitleCaption += &quot;&lt;br/>\n&quot;; // terminate this line of the rendered graph caption&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Q4q7hDEe2QK54y_oSyxw" name="addNodeName" specification="_2pcfEbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Q4rLhDEe2QK54y_oSyxw" name="fileContents">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23Q4rbhDEe2QK54y_oSyxw" name="titleCaption">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>/* add the node name to the gv file contents string */&#xD;
     gvFileContents += fileContents;  &#xD;
     /* add the node name and edge to this line of the rendered graph caption */&#xD;
     gvTitleCaption += titleCaption;&#xD;
 </body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2pap4LhDEe2QK54y_oSyxw" name="visualization" method="_23QRmbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20TrQLhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pbQ8LhDEe2QK54y_oSyxw" name="initializeGraphVizContent" method="_23QRm7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pbQ8bhDEe2QK54y_oSyxw" name="graphName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pbQ8rhDEe2QK54y_oSyxw" name="finalizeGraphVizContent" method="_23QRnbhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2pbQ87hDEe2QK54y_oSyxw" name="getGraphVizContent" method="_23Q4oLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23osIbhDEe2QK54y_oSyxw">
                  <body>public function to return the string gvFileContents.&#xD;
     * designed to be called after finalizeGraphVizContent() is called by the listener&#xD;
     * but will return the current state of the contents string anytime it is called</body>
                </ownedComment>
                <ownedParameter xmi:id="_2pbQ9LhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pbQ9bhDEe2QK54y_oSyxw" name="createGraphVizContent" method="_23Q4orhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pbQ9rhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pb4ALhDEe2QK54y_oSyxw" name="addFlowToGraphViz" method="_23Q4pLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pb4AbhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pb4ArhDEe2QK54y_oSyxw" name="addSrcNodeToGraphViz" method="_23Q4prhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pb4A7hDEe2QK54y_oSyxw" name="nodeName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pb4BLhDEe2QK54y_oSyxw" name="addSnkNodeToGraphViz" method="_23Q4qLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pb4BbhDEe2QK54y_oSyxw" name="nodeName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pcfELhDEe2QK54y_oSyxw" name="finalizeCurrentFlowInGraphViz" method="_23Q4qrhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2pcfEbhDEe2QK54y_oSyxw" name="addNodeName" visibility="private" method="_23Q4q7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pcfErhDEe2QK54y_oSyxw" name="fileContents">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pcfE7hDEe2QK54y_oSyxw" name="titleCaption">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20SdIbhDEe2QK54y_oSyxw" name="GraphViz" visibility="package" method="_23QRkLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_20TEMbhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_20TEMrhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_20SdIrhDEe2QK54y_oSyxw" name="wfm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20TEMLhDEe2QK54y_oSyxw" name="graphFile">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20TEM7hDEe2QK54y_oSyxw" type="_2paC0LhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20TENLhDEe2QK54y_oSyxw" name="GraphViz" visibility="package" method="_23QRlLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_20TEOLhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_20TEObhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_20TENbhDEe2QK54y_oSyxw" name="wfm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20TENrhDEe2QK54y_oSyxw" name="graphFile">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20TEN7hDEe2QK54y_oSyxw" name="verbose">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20TEOrhDEe2QK54y_oSyxw" type="_2paC0LhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pdtMLhDEe2QK54y_oSyxw" name="GraphVizListener" isLeaf="true">
              <ownedComment xmi:id="_23osIrhDEe2QK54y_oSyxw">
                <body>Extend WARP Base Listener Class to extract info for Graph Viz file.&#xD;
GraphVizListener reads the graphFile string and calls the functions&#xD;
in this class, as it walks the input graphFile structure to build&#xD;
the GraphViz contents.</body>
              </ownedComment>
              <generalization xmi:id="_21xD0LhDEe2QK54y_oSyxw" general="_20VgcbhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22ljM7hDEe2QK54y_oSyxw" name="gv" visibility="package" type="_2paC0LhDEe2QK54y_oSyxw" association="_24Afg7hDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Q4rrhDEe2QK54y_oSyxw" name="GraphVizListener" specification="_20WHg7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Q4r7hDEe2QK54y_oSyxw" name="gv" type="_2paC0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23Q4sLhDEe2QK54y_oSyxw" type="_2pdtMLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>this.gv = gv; // use GraphViz object passed to this object&#xD;
  // Read input file and build AST of graphFile&#xD;
     try {&#xD;
     	CharStream inputGraph = CharStreams.fromString(gv.graphFile);&#xD;
     	var lexer = new WARPLexer(inputGraph);&#xD;
     	var tokens = new CommonTokenStream(lexer);&#xD;
     	var parser = new WARPParser(tokens);&#xD;
     	ParseTree warpTree = parser.warp(); // begin parsing at rule 'warp'&#xD;
     	var warp = new ParseTreeWalker();&#xD;
     	 // Now populate build the Graph Viz file content by walking the input Graph tokens&#xD;
     	warp.walk(this, warpTree);&#xD;
     } catch (Exception e) {&#xD;
     	e.printStackTrace();&#xD;
     	System.err.println(&quot;ERROR: Unable to parse graphFile&quot; + e.getMessage());&#xD;
     }&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Q4sbhDEe2QK54y_oSyxw" name="buildGraphViz" specification="_20Wuk7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Q4srhDEe2QK54y_oSyxw" name="gv" type="_2paC0LhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>/*&#xD;
 	 * Create the listener object, which will read the workLoad &#xD;
 	 * description and then buid the node and flow objects that&#xD;
 	 * instantiates the workLoad. This object is not needed&#xD;
 	 * after that.&#xD;
 	 */&#xD;
 	new GraphVizListener(gv); &#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Q4s7hDEe2QK54y_oSyxw" name="enterWarpName" specification="_20XVobhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Q4tLhDEe2QK54y_oSyxw" name="ctx" type="_20WulbhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>var graphName = ctx.getText();  // get the name of the graph from name&#xD;
     gv.initializeGraphVizContent(graphName); // start creating the gv file content&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Q4tbhDEe2QK54y_oSyxw" name="exitWarp" specification="_20X8srhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Q4trhDEe2QK54y_oSyxw" name="ctx" type="_20X8sLhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>gv.finalizeGraphVizContent();&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23RfsLhDEe2QK54y_oSyxw" name="enterFlowName" specification="_20YjxLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23RfsbhDEe2QK54y_oSyxw" name="ctx" type="_20YjwrhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>var currentFlow = ctx.getText();&#xD;
     gv.addFlowToGraphViz(currentFlow);&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23RfsrhDEe2QK54y_oSyxw" name="exitSrcNode" specification="_20Zx4bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Rfs7hDEe2QK54y_oSyxw" name="ctx" type="_20ZK07hDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>var nodeName = ctx.getText(); // get the src node name&#xD;
     gv.addSrcNodeToGraphViz(nodeName);&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23RftLhDEe2QK54y_oSyxw" name="exitSnkNode" specification="_20aY8bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23RftbhDEe2QK54y_oSyxw" name="ctx" type="_20Zx5rhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>var nodeName = ctx.getText(); // get the snk node name&#xD;
     gv.addSnkNodeToGraphViz(nodeName);&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23RftrhDEe2QK54y_oSyxw" name="exitFlow" specification="_20bAArhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Rft7hDEe2QK54y_oSyxw" name="ctx" type="_20bAALhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>gv.finalizeCurrentFlowInGraphViz();&#xD;
 </body>
              </ownedBehavior>
              <ownedOperation xmi:id="_20WHg7hDEe2QK54y_oSyxw" name="GraphVizListener" visibility="private" method="_23Q4rrhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_20WukLhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_20WukbhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_20WHhLhDEe2QK54y_oSyxw" name="gv" type="_2paC0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20WukrhDEe2QK54y_oSyxw" type="_2pdtMLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20Wuk7hDEe2QK54y_oSyxw" name="buildGraphViz" isStatic="true" method="_23Q4sbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20WulLhDEe2QK54y_oSyxw" name="gv" type="_2paC0LhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20XVobhDEe2QK54y_oSyxw" name="enterWarpName" method="_23Q4s7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20XVorhDEe2QK54y_oSyxw" name="ctx" type="_20WulbhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20X8srhDEe2QK54y_oSyxw" name="exitWarp" method="_23Q4tbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20X8s7hDEe2QK54y_oSyxw" name="ctx" type="_20X8sLhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20YjxLhDEe2QK54y_oSyxw" name="enterFlowName" method="_23RfsLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20YjxbhDEe2QK54y_oSyxw" name="ctx" type="_20YjwrhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20Zx4bhDEe2QK54y_oSyxw" name="exitSrcNode" method="_23RfsrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20Zx4rhDEe2QK54y_oSyxw" name="ctx" type="_20ZK07hDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20aY8bhDEe2QK54y_oSyxw" name="exitSnkNode" method="_23RftLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20aY8rhDEe2QK54y_oSyxw" name="ctx" type="_20Zx5rhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20bAArhDEe2QK54y_oSyxw" name="exitFlow" method="_23RftrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20bAA7hDEe2QK54y_oSyxw" name="ctx" type="_20bAALhDEe2QK54y_oSyxw"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pe7ULhDEe2QK54y_oSyxw" name="GuiVisualization">
              <ownedComment xmi:id="_23osI7hDEe2QK54y_oSyxw">
                <body>GuiVisualization Class to create a Java Swing window that displays a table of data with column&#xD;
headings.&#xD;
&#xD;
@author sgoddard&#xD;
@version 1.5&#xD;
 *</body>
              </ownedComment>
              <ownedAttribute xmi:id="_22mKQLhDEe2QK54y_oSyxw" name="frame" visibility="package" type="_20c1MLhDEe2QK54y_oSyxw" association="_24AfhrhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22mKQrhDEe2QK54y_oSyxw" name="jtable" visibility="package" type="_20dcQbhDEe2QK54y_oSyxw" association="_24AfibhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23RfuLhDEe2QK54y_oSyxw" name="GuiVisualization" specification="_2pfiYLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23RfubhDEe2QK54y_oSyxw" name="title">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23RfurhDEe2QK54y_oSyxw" name="columnNames">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23Rfu7hDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23RfvLhDEe2QK54y_oSyxw" name="table">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23RfvbhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23RfvrhDEe2QK54y_oSyxw" type="_2pe7ULhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>// Frame initialization&#xD;
 frame = new JFrame();&#xD;
&#xD;
 // Frame Title&#xD;
 frame.setTitle(title);&#xD;
&#xD;
 // Initializing the JTable with input parameters&#xD;
 jtable = new JTable(table, columnNames);&#xD;
 jtable.setBounds(30, 40, 200, 300); // default size&#xD;
 // resizeColumnWidth(jtable); // uncomment to auto size column widths&#xD;
&#xD;
 // attached the table to a JScrollPane and then add both to the frame&#xD;
 JScrollPane sp = new JScrollPane(jtable); // gives table a vertical scrollbar&#xD;
 frame.add(sp);&#xD;
 // Frame Size&#xD;
 frame.setSize(500, 200);&#xD;
 jtable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); // creates horizontal scrollbar&#xD;
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&#xD;
 // Frame Visible = false&#xD;
 frame.setVisible(false);&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Rfv7hDEe2QK54y_oSyxw" name="setVisible" specification="_2pgJcrhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>frame.setVisible(true);&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23RfwLhDEe2QK54y_oSyxw" name="resizeColumnWidth" specification="_21xD0bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23RfwbhDEe2QK54y_oSyxw" name="table" type="_20dcQbhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>final TableColumnModel columnModel = table.getColumnModel();&#xD;
 for (int column = 0; column &lt; table.getColumnCount(); column++) {&#xD;
   int width = 70; // Min width&#xD;
   for (int row = 0; row &lt; table.getRowCount(); row++) {&#xD;
     TableCellRenderer renderer = table.getCellRenderer(row, column);&#xD;
     Component comp = table.prepareRenderer(renderer, row, column);&#xD;
     width = Math.max(comp.getPreferredSize().width + 5, width);&#xD;
   }&#xD;
   if (width > 300)&#xD;
     width = 300;&#xD;
   columnModel.getColumn(column).setPreferredWidth(width);&#xD;
 }&#xD;
  </body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2pfiYLhDEe2QK54y_oSyxw" name="GuiVisualization" method="_23RfuLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2pfiZLhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2pfiZbhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedComment xmi:id="_23osJLhDEe2QK54y_oSyxw">
                  <body>Constructor to create a Java Swing Window for a table of data with column headings. The window&#xD;
   * is initially not visible, and is made visible by a call to setVisible().&#xD;
   * &#xD;
   * @param title Window title&#xD;
   * @param columnNames Column heading names&#xD;
   * @param table table of strings representing the data</body>
                </ownedComment>
                <ownedParameter xmi:id="_2pfiYbhDEe2QK54y_oSyxw" name="title">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pfiYrhDEe2QK54y_oSyxw" name="columnNames">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2pfiZ7hDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pfiY7hDEe2QK54y_oSyxw" name="table">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2pgJcLhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pfiZrhDEe2QK54y_oSyxw" type="_2pe7ULhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pgJcrhDEe2QK54y_oSyxw" name="setVisible" method="_23Rfv7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23osJbhDEe2QK54y_oSyxw">
                  <body>Make the table visible.</body>
                </ownedComment>
              </ownedOperation>
              <ownedOperation xmi:id="_21xD0bhDEe2QK54y_oSyxw" name="resizeColumnWidth" visibility="private" method="_23RfwLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21xD0rhDEe2QK54y_oSyxw" name="table" type="_20dcQbhDEe2QK54y_oSyxw"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pgwgLhDEe2QK54y_oSyxw" name="InputGraphFile">
              <ownedComment xmi:id="_23osJrhDEe2QK54y_oSyxw">
                <body>@author sgoddard&#xD;
 *</body>
              </ownedComment>
              <ownedAttribute xmi:id="_22mKRLhDEe2QK54y_oSyxw" name="UNKNOWN" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22mKRbhDEe2QK54y_oSyxw" value="&quot;Unknown&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22mKRrhDEe2QK54y_oSyxw" name="wfm" visibility="private" type="_2pQR0LhDEe2QK54y_oSyxw" association="_24BGkbhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22mxUbhDEe2QK54y_oSyxw" name="graphFileName" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22mxUrhDEe2QK54y_oSyxw" name="verbose" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22mxVLhDEe2QK54y_oSyxw" name="graphFileContents" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22mxVbhDEe2QK54y_oSyxw" value="UNKNOWN"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23RfwrhDEe2QK54y_oSyxw" name="InputGraphFile" specification="_20eqY7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Rfw7hDEe2QK54y_oSyxw" name="fm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23RfxLhDEe2QK54y_oSyxw" type="_2pgwgLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>wfm = fm;&#xD;
		graphFileName = wfm.getBaseDirectory();  // input graph file name, accessible only within this class&#xD;
		verbose = false; // initialize verbose to false&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23RfxbhDEe2QK54y_oSyxw" name="InputGraphFile" specification="_20fRcrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23RfxrhDEe2QK54y_oSyxw" name="fm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23Rfx7hDEe2QK54y_oSyxw" name="verbose">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23RfyLhDEe2QK54y_oSyxw" type="_2pgwgLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>wfm = fm;&#xD;
		graphFileName = wfm.getBaseDirectory();  // input graph file name, accessible only within this class&#xD;
		this.verbose = verbose; // initialize verbose as specified&#xD;
&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23RfybhDEe2QK54y_oSyxw" name="setGraphFileName" specification="_2phXkLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23RfyrhDEe2QK54y_oSyxw" name="inputFile">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>graphFileName = inputFile;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Rfy7hDEe2QK54y_oSyxw" name="verifyGraphFileName" specification="_2ph-obhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23SGwLhDEe2QK54y_oSyxw" name="inputFile">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>/* Read the graph input text file and handle all errors, returning its contents */&#xD;
		try {&#xD;
			getInputGraphFileName(inputFile);&#xD;
		} catch (Exception e) {&#xD;
			// e.printStackTrace();&#xD;
			System.err.println(&quot;Failed get an input file.&quot;);&#xD;
			System.exit(-1);&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23SGwbhDEe2QK54y_oSyxw" name="readGraphFile" specification="_2pilsLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23SGwrhDEe2QK54y_oSyxw" name="inputFile">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23SGw7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>/* Read the graph input text file and return its contents */&#xD;
		verifyGraphFileName(inputFile); // catches exception if a valid file can't be found and exits&#xD;
		String inputFileName = getGraphFileName();&#xD;
		graphFileContents = readGraphFileContents(inputFileName);&#xD;
		return graphFileContents;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23SGxLhDEe2QK54y_oSyxw" name="getInputGraphFileName" specification="_2pils7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23SGxbhDEe2QK54y_oSyxw" name="inputFile">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23SGxrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>String workingDirectory;&#xD;
		String fileName = UNKNOWN;&#xD;
		workingDirectory = wfm.getBaseDirectory();&#xD;
		if (inputFile == null) { // if fileName is nil, then prompt for input file&#xD;
			System.out.printf(&quot;Working directory is %s\n&quot;, workingDirectory);&#xD;
			System.out.print(&quot;Enter input file: &quot;);&#xD;
			BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));&#xD;
			try {&#xD;
				fileName = bufferRead.readLine();&#xD;
			} catch (IOException e) {&#xD;
				// e.printStackTrace();&#xD;
				System.err.println(&quot;Failed to read input line from console&quot; + e.getMessage());&#xD;
			}&#xD;
		} else {&#xD;
			fileName = inputFile;&#xD;
		}&#xD;
		setGraphFileName(fileName);&#xD;
		File tempFile = new File(getGraphFileName()); // create a temp File object with graphName&#xD;
		if (tempFile.exists()) {  // see if the file exists&#xD;
			if (verbose) {&#xD;
				printVerboseMessage(workingDirectory, fileName, getGraphFileName());&#xD;
			}&#xD;
		} else { // try the working directory&#xD;
			setGraphFileName(workingDirectory + File.separator + fileName);&#xD;
			tempFile = new File(getGraphFileName()); // create a temp File object with graphName&#xD;
			if (tempFile.exists()) {  // see if the file exists&#xD;
				if (verbose) {&#xD;
					printVerboseMessage(workingDirectory, fileName, getGraphFileName());&#xD;
				}&#xD;
			} else {&#xD;
				if (verbose) {&#xD;
					printVerboseMessage(workingDirectory, fileName, getGraphFileName());&#xD;
				}&#xD;
				System.err.printf(&quot;\n\tERROR: input file %s doesn't exist!!\n&quot;, fileName);&#xD;
				throw new RuntimeException();&#xD;
			}&#xD;
		}&#xD;
		return fileName;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23SGx7hDEe2QK54y_oSyxw" name="readGraphFileContents" specification="_2piltrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23SGyLhDEe2QK54y_oSyxw" name="inputFile">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23SGybhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>String graphFileContents = wfm.readFile(inputFile);&#xD;
		if (verbose) {&#xD;
			System.out.println(&quot;************************************&quot;);&#xD;
			System.out.println(&quot;Graph File Read:&quot;);&#xD;
			System.out.println(graphFileContents);&#xD;
			System.out.println(&quot;************************************\n&quot;);&#xD;
		}&#xD;
		return graphFileContents;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23SGyrhDEe2QK54y_oSyxw" name="printVerboseMessage" specification="_2pilubhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23SGy7hDEe2QK54y_oSyxw" name="workingDirectory">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23SGzLhDEe2QK54y_oSyxw" name="fileName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23SGzbhDEe2QK54y_oSyxw" name="graphFileName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>System.out.printf(&quot;Working directory is %s\n&quot;, workingDirectory);&#xD;
		System.out.printf(&quot;Input file name is %s\n&quot;, fileName);&#xD;
		System.out.printf(&quot;Graph file %s doesn't exist\n&quot;, graphFileName);&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2phXkLhDEe2QK54y_oSyxw" name="setGraphFileName" visibility="private" method="_23RfybhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2ph-oLhDEe2QK54y_oSyxw" name="inputFile">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2ph-obhDEe2QK54y_oSyxw" name="verifyGraphFileName" visibility="private" method="_23Rfy7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2ph-orhDEe2QK54y_oSyxw" name="inputFile">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pilsLhDEe2QK54y_oSyxw" name="readGraphFile" method="_23SGwbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pilsbhDEe2QK54y_oSyxw" name="inputFile">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pilsrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pils7hDEe2QK54y_oSyxw" name="getInputGraphFileName" visibility="private" method="_23SGxLhDEe2QK54y_oSyxw" raisedException="_21xq4LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2piltLhDEe2QK54y_oSyxw" name="inputFile">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2piltbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2piltrhDEe2QK54y_oSyxw" name="readGraphFileContents" visibility="private" method="_23SGx7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pilt7hDEe2QK54y_oSyxw" name="inputFile">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2piluLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pilubhDEe2QK54y_oSyxw" name="printVerboseMessage" visibility="private" method="_23SGyrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pilurhDEe2QK54y_oSyxw" name="workingDirectory">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pilu7hDEe2QK54y_oSyxw" name="fileName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pilvLhDEe2QK54y_oSyxw" name="graphFileName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20eqY7hDEe2QK54y_oSyxw" name="InputGraphFile" method="_23RfwrhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_20eqZbhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_20fRcLhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_20eqZLhDEe2QK54y_oSyxw" name="fm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20fRcbhDEe2QK54y_oSyxw" type="_2pgwgLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20fRcrhDEe2QK54y_oSyxw" name="InputGraphFile" method="_23RfxbhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_20fRdbhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_20fRdrhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_20fRc7hDEe2QK54y_oSyxw" name="fm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20fRdLhDEe2QK54y_oSyxw" name="verbose">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20fRd7hDEe2QK54y_oSyxw" type="_2pgwgLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pjMwLhDEe2QK54y_oSyxw" name="InstructionTimeSlot">
              <generalization xmi:id="_20f4gLhDEe2QK54y_oSyxw" general="_2qJCoLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22mxV7hDEe2QK54y_oSyxw" 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="_22mxWLhDEe2QK54y_oSyxw" value="1L"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23SGzrhDEe2QK54y_oSyxw" name="InstructionTimeSlot" specification="_2pjz0LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23SGz7hDEe2QK54y_oSyxw" type="_2pjMwLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23SG0LhDEe2QK54y_oSyxw" name="InstructionTimeSlot" specification="_2pjz1LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23SG0bhDEe2QK54y_oSyxw" name="numNodes">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23SG0rhDEe2QK54y_oSyxw" name="element">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23SG07hDEe2QK54y_oSyxw" type="_2pjMwLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(numNodes, element);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23SG1LhDEe2QK54y_oSyxw" name="InstructionTimeSlot" specification="_2pjz2rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23SG1bhDEe2QK54y_oSyxw" name="rowArray">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23SG1rhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23SG17hDEe2QK54y_oSyxw" type="_2pjMwLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(rowArray);&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2pjz0LhDEe2QK54y_oSyxw" name="InstructionTimeSlot" method="_23SGzrhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2pjz0bhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2pjz0rhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2pjz07hDEe2QK54y_oSyxw" type="_2pjMwLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pjz1LhDEe2QK54y_oSyxw" name="InstructionTimeSlot" visibility="package" method="_23SG0LhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2pjz17hDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2pjz2LhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2pjz1bhDEe2QK54y_oSyxw" name="numNodes">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pjz1rhDEe2QK54y_oSyxw" name="element">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pjz2bhDEe2QK54y_oSyxw" type="_2pjMwLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pjz2rhDEe2QK54y_oSyxw" name="InstructionTimeSlot" visibility="package" method="_23SG1LhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2pjz3LhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2pjz3bhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2pjz27hDEe2QK54y_oSyxw" name="rowArray">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2pjz37hDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2pjz3rhDEe2QK54y_oSyxw" type="_2pjMwLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pka4LhDEe2QK54y_oSyxw" name="LatencyAnalysis">
              <ownedComment xmi:id="_23osJ7hDEe2QK54y_oSyxw">
                <body>@author sgoddard2&#xD;
@version 1.3</body>
              </ownedComment>
              <ownedAttribute xmi:id="_22nYYLhDEe2QK54y_oSyxw" name="DEADLINE_MISS" visibility="private" isStatic="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22nYYbhDEe2QK54y_oSyxw" value="&quot; => DEADLINE MISS&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22nYY7hDEe2QK54y_oSyxw" name="FLOW_SEPARATOR" isStatic="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22nYZbhDEe2QK54y_oSyxw" value="&quot;******************************\n&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22nYZrhDEe2QK54y_oSyxw" name="latencyReport" visibility="private" type="_2pKyQrhDEe2QK54y_oSyxw" association="_24BGlLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22n_cLhDEe2QK54y_oSyxw" name="program" visibility="private" type="_2pzEYbhDEe2QK54y_oSyxw" association="_24BGl7hDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22n_crhDEe2QK54y_oSyxw" name="workload" visibility="private" type="_2q5QkLhDEe2QK54y_oSyxw" association="_24BtobhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22n_dLhDEe2QK54y_oSyxw" name="programTable" visibility="private" type="_2p-DgLhDEe2QK54y_oSyxw" association="_24BtpLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22n_drhDEe2QK54y_oSyxw" name="nodeIndex" visibility="private" type="_2z4NcLhDEe2QK54y_oSyxw" association="_24Btp7hDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23SG2LhDEe2QK54y_oSyxw" name="LatencyAnalysis" specification="_20gfkrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23SG2bhDEe2QK54y_oSyxw" name="program" type="_2pzEYbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23SG2rhDEe2QK54y_oSyxw" type="_2pka4LhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>this.latencyReport = new Description();&#xD;
 this.program = program;&#xD;
 this.workload = program.toWorkLoad();&#xD;
 this.programTable = program.getSchedule();&#xD;
 this.nodeIndex = program.getNodeMapIndex();&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23SG27hDEe2QK54y_oSyxw" name="latencyReport" specification="_2plB8LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23SG3LhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>/*&#xD;
  * Build a latency report. Flows are output in priority order (based on the priority used to&#xD;
  * build the program. The latency for each instance of the flow is reported as follows&#xD;
  * &quot;Maximum latency for FlowName:Instance is Latency&quot;&#xD;
  * &#xD;
  * For flow instances that have latency > deadline, then the latency message is appended with&#xD;
  * the string &quot; => DEADLINE MISS&quot;&#xD;
  * &#xD;
  * A line of 30 '*' characters separates each group of flow instance reports.&#xD;
  * &#xD;
  * When there are not enough transmissions attempted between the release and the next release of&#xD;
  * an instance, then the latency is not computed (as we assume deadline &lt;= period. Thus, the&#xD;
  * report is: &quot;UNKNOWN latency for FlowName:Instance; Not enough transmissions attempted&quot;&#xD;
  * &#xD;
  */&#xD;
&#xD;
 var flows = workload.getFlowNamesInPriorityOrder();&#xD;
 for (String flowName : flows) {&#xD;
   var time = 0;&#xD;
&#xD;
   var nodes = workload.getNodesInFlow(flowName); // names of nodes in flow&#xD;
   var flowSnkIndex = nodes.length - 1;&#xD;
   /* get snk of last link in the flow, which is also the Flow snk node */&#xD;
   String snk = nodes[flowSnkIndex];&#xD;
   /* get the src of last link in the flow */&#xD;
   String src = nodes[flowSnkIndex - 1];&#xD;
   /* get (column) indexes into programTable of these nodes */&#xD;
   var snkIndex = nodeIndex.get(snk);&#xD;
   var srcIndex = nodeIndex.get(src);&#xD;
   /* get the array containing the number of transmissions required for each link in the flow */&#xD;
   var numTxAttemptsPerLink = workload.getNumTxAttemptsPerLink(flowName);&#xD;
   /* get the number of transmission required for the last link in the flow */&#xD;
   var numTxRequired = numTxAttemptsPerLink[numTxAttemptsPerLink.length - 1];&#xD;
   var numTxProcessed = 0; // num of Tx seen in the program schedule so far&#xD;
   var instance = 0;&#xD;
   while (time &lt; workload.getHyperPeriod()) {&#xD;
     /* get next release time and absolute deadline of the flow */&#xD;
     var releaseTime = workload.nextReleaseTime(flowName, time);&#xD;
     var deadline = workload.nextAbsoluteDeadline(flowName, releaseTime);&#xD;
     var nextReleaseTime = workload.nextReleaseTime(flowName, deadline);&#xD;
     // var latency = 0;&#xD;
     time = releaseTime;&#xD;
     numTxProcessed = 0; // num of Tx seen in the program schedule so far&#xD;
     while (time &lt; nextReleaseTime) {&#xD;
       /* get instruction strings at these to locations */&#xD;
       String instr1 = programTable.get(time, srcIndex);&#xD;
       String instr2 = programTable.get(time, snkIndex);&#xD;
       numTxProcessed += numMatchingTx(flowName, src, snk, instr1);&#xD;
       numTxProcessed += numMatchingTx(flowName, src, snk, instr2);&#xD;
       if (numTxProcessed == numTxRequired) {&#xD;
         /*&#xD;
          * all required Tx attempts have been made compute and record latency&#xD;
          */&#xD;
         var latency = time - releaseTime + 1;&#xD;
         // report latency&#xD;
         String latencyMsg =&#xD;
             String.format(&quot;Maximum latency for %s:%d is %d&quot;, flowName, instance, latency);&#xD;
         if (latency > deadline) {&#xD;
           /* deadline missed, so color the text red */&#xD;
           latencyMsg += DEADLINE_MISS;&#xD;
         }&#xD;
         latencyMsg += &quot;\n&quot;;&#xD;
         latencyReport.add(latencyMsg);&#xD;
         time = nextReleaseTime;&#xD;
       } else {&#xD;
         time++;&#xD;
       }&#xD;
&#xD;
     }&#xD;
     if (numTxProcessed &lt; numTxRequired) {&#xD;
       /*&#xD;
        * This flow missed its deadline with required number of Tx!! This message should not be&#xD;
        * printed with the schedulers built&#xD;
        */&#xD;
       String latencyMsg =&#xD;
           String.format(&quot;UNKNOWN latency for %s:%d; Not enough transmissions attempted\n&quot;,&#xD;
               flowName, instance);&#xD;
       latencyReport.add(latencyMsg);&#xD;
     }&#xD;
     instance++;&#xD;
   }&#xD;
   String flowSeparator = FLOW_SEPARATOR;&#xD;
   latencyReport.add(flowSeparator);&#xD;
 }&#xD;
 return latencyReport;&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23SG3bhDEe2QK54y_oSyxw" name="numMatchingTx" specification="_2plpALhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23SG3rhDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23SG37hDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23SG4LhDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23SG4bhDEe2QK54y_oSyxw" name="instr">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23SG4rhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var numTx = 0;&#xD;
&#xD;
 if (flow == null || src == null || snk == null || instr == null) {&#xD;
   /* make sure all parameters are valid */&#xD;
   return numTx;&#xD;
 }&#xD;
 /*&#xD;
  * get a Warp instruction parser object and then get the instruction parameters from the&#xD;
  * instruction string.&#xD;
  */&#xD;
 var dsl = new WarpDSL();&#xD;
 var instructionParametersArray = dsl.getInstructionParameters(instr);&#xD;
&#xD;
 for (InstructionParameters entry : instructionParametersArray) {&#xD;
   String flowName = entry.getFlow();&#xD;
   if (flowName.equals(flow)) {&#xD;
     /*&#xD;
      * This instruction is for the flow we want. (flow name is set for push/pull instructions,&#xD;
      * which are all we want. If not push/pull, then we skip this instruction.) If flow, src,&#xD;
      * and snk names in instruction match input parameters, then we have a Tx attempt.&#xD;
      */&#xD;
     if (src.equals(entry.getSrc()) &amp;&amp; snk.equals(entry.getSnk())) {&#xD;
       /* flow, src, and snk match, so increment Tx attempts */&#xD;
       numTx++;&#xD;
     }&#xD;
   }&#xD;
 }&#xD;
 return numTx;&#xD;
  </body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2plB8LhDEe2QK54y_oSyxw" name="latencyReport" method="_23SG27hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20hGoLhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2plpALhDEe2QK54y_oSyxw" name="numMatchingTx" method="_23SG3bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2plpAbhDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2plpArhDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2plpA7hDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2plpBLhDEe2QK54y_oSyxw" name="instr">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2plpBbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20gfkrhDEe2QK54y_oSyxw" name="LatencyAnalysis" visibility="package" method="_23SG2LhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_20gflLhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_20gflbhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_20gfk7hDEe2QK54y_oSyxw" name="program" type="_2pzEYbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20gflrhDEe2QK54y_oSyxw" type="_2pka4LhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pm3ILhDEe2QK54y_oSyxw" name="LatencyVisualization">
              <ownedComment xmi:id="_23osKLhDEe2QK54y_oSyxw">
                <body>LatencyVisualization creates the visualizations for the liability analysis of the WARP program.&#xD;
&lt;p>&#xD;
&#xD;
CS2820 Spring 2022 Project: Implement this class to create the file visualization that is&#xD;
requested in Warp.&#xD;
&#xD;
@author sgoddard&#xD;
@version 1.3&#xD;
 *</body>
              </ownedComment>
              <generalization xmi:id="_20htsLhDEe2QK54y_oSyxw" general="_2qirQLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22omgbhDEe2QK54y_oSyxw" name="SOURCE_SUFFIX" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22omgrhDEe2QK54y_oSyxw" value="&quot;.la&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22omg7hDEe2QK54y_oSyxw" name="OBJECT_NAME" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22omhLhDEe2QK54y_oSyxw" value="&quot;Latency Analysis&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22omhbhDEe2QK54y_oSyxw" name="la" visibility="private" type="_2pka4LhDEe2QK54y_oSyxw" association="_24BtqrhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pneMLhDEe2QK54y_oSyxw" name="LatestReleaseTimeComparator">
              <interfaceRealization xmi:id="_21y5ALhDEe2QK54y_oSyxw" client="_2pneMLhDEe2QK54y_oSyxw" supplier="_20IsILhDEe2QK54y_oSyxw" contract="_20IsILhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23St0LhDEe2QK54y_oSyxw" name="compare" specification="_21y5ArhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23St0bhDEe2QK54y_oSyxw" name="obj1" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23St0rhDEe2QK54y_oSyxw" name="obj2" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23St07hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>var result = obj1.LatestReleaseTimeComparison(obj2);&#xD;
		return result; // 0 => tie on release time&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_21y5ArhDEe2QK54y_oSyxw" name="compare" method="_23St0LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21y5A7hDEe2QK54y_oSyxw" name="obj1" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21y5BLhDEe2QK54y_oSyxw" name="obj2" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21y5BbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2poFQLhDEe2QK54y_oSyxw" name="MaxPhaseComparator">
              <interfaceRealization xmi:id="_21zgE7hDEe2QK54y_oSyxw" client="_2poFQLhDEe2QK54y_oSyxw" supplier="_20IsILhDEe2QK54y_oSyxw" contract="_20IsILhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23St1LhDEe2QK54y_oSyxw" name="compare" specification="_210HILhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23St1bhDEe2QK54y_oSyxw" name="obj1" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23St1rhDEe2QK54y_oSyxw" name="obj2" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23St17hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>return obj1.maxPhaseComparison(obj2); &#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_210HILhDEe2QK54y_oSyxw" name="compare" method="_23St1LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_210HIbhDEe2QK54y_oSyxw" name="obj1" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_210HIrhDEe2QK54y_oSyxw" name="obj2" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_210HI7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2poFQrhDEe2QK54y_oSyxw" name="Node">
              <generalization xmi:id="_20ji4LhDEe2QK54y_oSyxw" general="_2ra1ALhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22omh7hDEe2QK54y_oSyxw" name="DEFAULT_CHANNEL" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22pNkLhDEe2QK54y_oSyxw" value="0"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22pNkbhDEe2QK54y_oSyxw" name="channel">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22pNkrhDEe2QK54y_oSyxw" name="index">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22pNk7hDEe2QK54y_oSyxw" name="edges" type="_2z5bkLhDEe2QK54y_oSyxw" isReadOnly="true" association="_24CUsbhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22pNlbhDEe2QK54y_oSyxw" name="conflicts" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_22pNlrhDEe2QK54y_oSyxw" value="*"/>
              </ownedAttribute>
              <interfaceRealization xmi:id="_210HJ7hDEe2QK54y_oSyxw" client="_2poFQrhDEe2QK54y_oSyxw" supplier="_21glIbhDEe2QK54y_oSyxw" contract="_21glIbhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23St2LhDEe2QK54y_oSyxw" name="Node" specification="_2posULhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23St2bhDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23St2rhDEe2QK54y_oSyxw" name="priority">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23St27hDEe2QK54y_oSyxw" name="index">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23St3LhDEe2QK54y_oSyxw" type="_2poFQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super();&#xD;
		setName(name);&#xD;
		setPriority(priority);&#xD;
		this.index = index;&#xD;
		this.channel = DEFAULT_CHANNEL;&#xD;
		this.edges = new ArrayList&lt;Edge>();&#xD;
		this.conflicts = new HashSet&lt;String>();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23St3bhDEe2QK54y_oSyxw" name="compareTo" specification="_20iUwLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23St3rhDEe2QK54y_oSyxw" name="node" type="_2poFQrhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23St37hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>return node.getPriority() > this.getPriority() ? -1 : 1;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23St4LhDEe2QK54y_oSyxw" name="toString" specification="_2posV7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23St4bhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>return getName();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23St4rhDEe2QK54y_oSyxw" name="addEdge" specification="_20i71LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23St47hDEe2QK54y_oSyxw" name="edge" type="_2pMAZLhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>edges.add(edge);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23St5LhDEe2QK54y_oSyxw" name="addConflict" specification="_2ppTY7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23St5bhDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>conflicts.add(name);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23St5rhDEe2QK54y_oSyxw" name="numEdges" specification="_2ppTZbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23St57hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>return edges.size();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23St6LhDEe2QK54y_oSyxw" name="print" specification="_2ppTZ7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23St6bhDEe2QK54y_oSyxw" name="headerMsg">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>System.out.printf(&quot;\n%s&quot;, headerMsg);&#xD;
		this.print();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23St6rhDEe2QK54y_oSyxw" name="print" specification="_2ppTbLhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>super.print();&#xD;
		System.out.print(&quot;Edge info for this partiion\n&quot;);&#xD;
		for (Edge edge : edges) {&#xD;
			edge.print();&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2posULhDEe2QK54y_oSyxw" name="Node" visibility="package" method="_23St2LhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2posVLhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2posVbhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2posUbhDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2posUrhDEe2QK54y_oSyxw" name="priority">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2posU7hDEe2QK54y_oSyxw" name="index">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2posVrhDEe2QK54y_oSyxw" type="_2poFQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2posV7hDEe2QK54y_oSyxw" name="toString" method="_23St4LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2posWLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2ppTY7hDEe2QK54y_oSyxw" name="addConflict" method="_23St5LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2ppTZLhDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2ppTZbhDEe2QK54y_oSyxw" name="numEdges" method="_23St5rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2ppTZrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2ppTZ7hDEe2QK54y_oSyxw" name="print" method="_23St6LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2ppTaLhDEe2QK54y_oSyxw" name="headerMsg">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2ppTbLhDEe2QK54y_oSyxw" name="print" method="_23St6rhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_20iUwLhDEe2QK54y_oSyxw" name="compareTo" method="_23St3bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20iUwbhDEe2QK54y_oSyxw" name="node" type="_2poFQrhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20i70LhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20i71LhDEe2QK54y_oSyxw" name="addEdge" method="_23St4rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20i71bhDEe2QK54y_oSyxw" name="edge" type="_2pMAZLhDEe2QK54y_oSyxw"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pqhgLhDEe2QK54y_oSyxw" name="NodeMap">
              <ownedComment xmi:id="_23pTILhDEe2QK54y_oSyxw">
                <body>NodeMap creates a mapping from graph node name to &#xD;
node object (&lt;name, Node>).&#xD;
&#xD;
@author sgoddard2&#xD;
 *</body>
              </ownedComment>
              <generalization xmi:id="_20kJ8LhDEe2QK54y_oSyxw" general="_2ov7gLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22p0oLhDEe2QK54y_oSyxw" 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="_22p0obhDEe2QK54y_oSyxw" value="1L"/>
              </ownedAttribute>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pqhgbhDEe2QK54y_oSyxw" name="NonPreemptiveSchedule">
              <ownedComment xmi:id="_23pTIbhDEe2QK54y_oSyxw">
                <body>PreemptiveSchedule is an instance of the abstract class Schedule.&#xD;
&#xD;
@author sgoddard2&#xD;
 *</body>
              </ownedComment>
              <generalization xmi:id="_20kxBbhDEe2QK54y_oSyxw" general="_2qMF8LhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23St67hDEe2QK54y_oSyxw" name="NonPreemptiveSchedule" specification="_20kJ8rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23St7LhDEe2QK54y_oSyxw" name="poset" type="_2ps9wLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23St7bhDEe2QK54y_oSyxw" name="numChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23St7rhDEe2QK54y_oSyxw" type="_2pqhgbhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(poset, numChannels);&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_20kJ8rhDEe2QK54y_oSyxw" name="NonPreemptiveSchedule" visibility="package" method="_23St67hDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_20kxArhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_20kxA7hDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_20kxALhDEe2QK54y_oSyxw" name="poset" type="_2ps9wLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20kxAbhDEe2QK54y_oSyxw" name="numChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20kxBLhDEe2QK54y_oSyxw" type="_2pqhgbhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2prIkLhDEe2QK54y_oSyxw" name="NotImplentedVisualization">
              <generalization xmi:id="_20lYEbhDEe2QK54y_oSyxw" general="_2qirQLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22p0orhDEe2QK54y_oSyxw" name="SUFFIX" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22p0o7hDEe2QK54y_oSyxw" value="&quot;.txt&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22p0pLhDEe2QK54y_oSyxw" name="NAME_EXTENSTION" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22p0pbhDEe2QK54y_oSyxw" value="&quot;NotImplementedFeature&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22p0prhDEe2QK54y_oSyxw" name="CONTENT" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22p0p7hDEe2QK54y_oSyxw" value="&quot;Not Implemented&quot;"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23TU4LhDEe2QK54y_oSyxw" name="NotImplentedVisualization" specification="_2prIkbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23TU4bhDEe2QK54y_oSyxw" type="_2prIkLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(new FileManager(), NAME_EXTENSTION, SUFFIX);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23TU4rhDEe2QK54y_oSyxw" name="NotImplentedVisualization" specification="_2prIlbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23TU47hDEe2QK54y_oSyxw" name="extension">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23TU5LhDEe2QK54y_oSyxw" type="_2prIkLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(new FileManager(), extension, SUFFIX);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23TU5bhDEe2QK54y_oSyxw" name="visualization" specification="_2prvoLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23TU5rhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return new Description(CONTENT);&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2prIkbhDEe2QK54y_oSyxw" name="NotImplentedVisualization" visibility="package" method="_23TU4LhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2prIkrhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2prIk7hDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2prIlLhDEe2QK54y_oSyxw" type="_2prIkLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2prIlbhDEe2QK54y_oSyxw" name="NotImplentedVisualization" visibility="package" method="_23TU4rhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2prIl7hDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2prImLhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2prIlrhDEe2QK54y_oSyxw" name="extension">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2prImbhDEe2QK54y_oSyxw" type="_2prIkLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2prvoLhDEe2QK54y_oSyxw" name="visualization" method="_23TU5bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20lYELhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2psWsLhDEe2QK54y_oSyxw" name="PeriodComparator">
              <interfaceRealization xmi:id="_211VQLhDEe2QK54y_oSyxw" client="_2psWsLhDEe2QK54y_oSyxw" supplier="_20IsILhDEe2QK54y_oSyxw" contract="_20IsILhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23TU57hDEe2QK54y_oSyxw" name="compare" specification="_211VQrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23TU6LhDEe2QK54y_oSyxw" name="obj1" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23TU6bhDEe2QK54y_oSyxw" name="obj2" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23TU6rhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>return obj1.periodComparison(obj2); &#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_211VQrhDEe2QK54y_oSyxw" name="compare" method="_23TU57hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_211VQ7hDEe2QK54y_oSyxw" name="obj1" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_211VRLhDEe2QK54y_oSyxw" name="obj2" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_2118ULhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2ps9wLhDEe2QK54y_oSyxw" name="Poset" isAbstract="true">
              <ownedComment xmi:id="_23pTIrhDEe2QK54y_oSyxw">
                <body>Poset is a partially ordered set of activations&#xD;
that are partitions of the workload to be scheduled.&#xD;
This version assumes each activation is a node&#xD;
and each node has a list of edges associated with it.&#xD;
Each node/activation in an edge is identified as either &#xD;
a transmitter or sender for that edge.&#xD;
&#xD;
@author sgoddard</body>
              </ownedComment>
              <ownedAttribute xmi:id="_22p0qLhDEe2QK54y_oSyxw" name="activations" visibility="private" type="_2o66oLhDEe2QK54y_oSyxw" association="_24CUtLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22qbsbhDEe2QK54y_oSyxw" name="workload" visibility="private" type="_2q5QkLhDEe2QK54y_oSyxw" association="_24CUt7hDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22qbs7hDEe2QK54y_oSyxw" name="flows" visibility="protected" type="_2pTVILhDEe2QK54y_oSyxw" association="_24C7wLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_22qbtbhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_22qbtrhDEe2QK54y_oSyxw" key="generic_container"/>
                </eAnnotations>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_22qbtLhDEe2QK54y_oSyxw" value="*"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22rCwLhDEe2QK54y_oSyxw" name="nodes" visibility="private" type="_2poFQrhDEe2QK54y_oSyxw" association="_24C7w7hDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_22rCwrhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_22rCw7hDEe2QK54y_oSyxw" key="generic_container"/>
                </eAnnotations>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_22rCwbhDEe2QK54y_oSyxw" value="*"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22rCxbhDEe2QK54y_oSyxw" name="nodeMap" visibility="private" type="_2pqhgLhDEe2QK54y_oSyxw" association="_24C7xrhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22rCx7hDEe2QK54y_oSyxw" name="priorityQueue" visibility="private" type="_2qEKILhDEe2QK54y_oSyxw" association="_24C7ybhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22rp0rhDEe2QK54y_oSyxw" name="nodeConnectivityMap" visibility="protected" type="_2z4NcLhDEe2QK54y_oSyxw" association="_24Di0bhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22s38bhDEe2QK54y_oSyxw" name="activationMap" visibility="package" type="_2pZbwbhDEe2QK54y_oSyxw" association="_24Di1LhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23TU67hDEe2QK54y_oSyxw" name="Poset" specification="_20l_IbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23TU7LhDEe2QK54y_oSyxw" name="workload" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23TU7bhDEe2QK54y_oSyxw" type="_2ps9wLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>this.workload = workload;&#xD;
		this.activations = new Activations();&#xD;
		this.activationMap = new FlowNodeToActivationMap();&#xD;
		/* init map to return a null activation if null key intered */&#xD;
		this.activationMap.put(null, null);&#xD;
		flows = workload.getFlows().values();&#xD;
		nodeMap = workload.getNodes();&#xD;
		nodes = nodeMap.values();&#xD;
		priorityQueue = new &#xD;
				SchedulableObjectQueue&lt;Activation>(new &#xD;
						PriorityComparator&lt;Activation>());&#xD;
		/* get global node connectivity */&#xD;
		nodeConnectivityMap = getNodeConnectivity();&#xD;
		buildPosetOfActivations();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23TU7rhDEe2QK54y_oSyxw" name="getNodeConnectivity" specification="_2ps9wbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23TU77hDEe2QK54y_oSyxw" type="_2z4NcLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>HashMap&lt;String, Integer> map = new HashMap&lt;>();&#xD;
		&#xD;
		for (Flow flow: flows) {&#xD;
			var nodesInFlow = flow.getNodes();&#xD;
			var size = nodesInFlow.size();&#xD;
			for (Integer i =0 ; i &lt; size; i++) {&#xD;
				var nodeName = nodesInFlow.get(i).getName();&#xD;
				var connectivity = map.get(nodeName);&#xD;
				var connections = 2; // default # of connections&#xD;
				if (i == 0 || i == size-1) {&#xD;
					/* src or snk => connections = 1 */&#xD;
					connections = 1;&#xD;
				}&#xD;
				if (connectivity != null) {&#xD;
					connectivity += connections;&#xD;
					map.put(nodeName,connectivity);&#xD;
				} else {&#xD;
					map.put(nodeName,connections); // initial connection&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		return map;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23TU8LhDEe2QK54y_oSyxw" name="getNodeNames" specification="_2ptk0LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23TU8bhDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>var keys = nodeMap.keySet();&#xD;
		var nodeNames = new ArrayList&lt;String>(keys.size());&#xD;
		nodeNames.addAll(keys);&#xD;
		return nodeNames;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23TU8rhDEe2QK54y_oSyxw" name="getNodesNamesOrderedAlphabetically" specification="_2ptk0rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23TU87hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23TU9LhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <language>java</language>
                <body>var nodeNames = workload.getNodeNamesOrderedAlphabetically();&#xD;
		return nodeNames;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23TU9bhDEe2QK54y_oSyxw" name="buildPosetOfActivations" specification="_2ptk1rhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>/* assumes flow priorities have already been set */&#xD;
&#xD;
		/*&#xD;
		 * (1) Create edges, setting priority and release time&#xD;
		 * 		add edges to node respective node lists as edge is created&#xD;
		 * (2) Create conflict set for each node (adjacent nodes)&#xD;
		 * (3) Create activations by selecting coordinators within &#xD;
		 * 		each flow and adding that coordinator's edges and&#xD;
		 * 		release times to an activation with the coordinator's name&#xD;
		 * 		(each activation will have one coordinator and the&#xD;
		 * 			number of activations &lt;= number nodes)&#xD;
		 * (4) Order the activations&#xD;
		 */&#xD;
&#xD;
		createEdgeLists(); // (1)&#xD;
		createConflictLists(); // (2)&#xD;
		createInitialActivations(); // (3)&#xD;
		orderActivations(); // (4)&#xD;
		/* At this point, each flow has been partitioned &#xD;
		 */&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23TU9rhDEe2QK54y_oSyxw" name="createEdgeLists" specification="_2ptk17hDEe2QK54y_oSyxw">
                <language>java</language>
                <body>/* assumes flow priorities have already been set */&#xD;
		var maxFlowLength = workload.maxFlowLength();&#xD;
		for (Flow flow: flows) {&#xD;
			var flowNodes = flow.getNodes();&#xD;
			var numTxArray = workload.getNumTxAttemptsPerLink(flow.getName());&#xD;
			var flowPhase = flow.getPhase();&#xD;
			var flowPriority = flow.getPriority();&#xD;
			var period = flow.getPeriod();&#xD;
			var deadline = flow.getDeadline();&#xD;
			Edge edge = null;&#xD;
			for (Integer i = 0; i &lt; flowNodes.size() -1 ; i++) {&#xD;
				/* Create edges, setting priority and release time */&#xD;
				/* This version adds edges to the main node in NodeMap.&#xD;
				 * This allows creation of large partitions, with at most one per node.&#xD;
				 * An alternative, we can have a lot of small partitions that can be&#xD;
				 * combined later, which may create more parallelism.&#xD;
				 * So, both the global NodeMap nodes and the nodes in the&#xD;
				 * flows are updated with the same edge information. &#xD;
				 * This let's us play with partition creation options later.&#xD;
				 */&#xD;
				var srcNode = nodeMap.get(flowNodes.get(i).getName()); &#xD;
				var snkNode = nodeMap.get(flowNodes.get(i+1).getName());&#xD;
				var flowSrc = flowNodes.get(i);  // node in the flow&#xD;
				var flowSnk = flowNodes.get(i+1);&#xD;
				var src = srcNode.getName();&#xD;
				var snk = snkNode.getName();&#xD;
&#xD;
				/*&#xD;
				 * Edge priority within a flow is based on position&#xD;
				 * in flow. Each Flow has its own priority. This &#xD;
				 * creates a 2-dimensional priority. Thus, we&#xD;
				 * can keep a total ordering of edges if we fold the&#xD;
				 * table into a single row where we assume each new flow&#xD;
				 * starts maxFlowSize away from the previous flow nodes:&#xD;
				 * edgePriority = flowPriority*maxFlowLength + edgePosition&#xD;
				 */&#xD;
				// var flowPriority = flow.getPriority();&#xD;
				var priority = (flowPriority * maxFlowLength) + i;&#xD;
				//var period = flow.getPeriod();&#xD;
				// var deadline = flow.getDeadline();&#xD;
				/* edge phase = flow phase + edge position in flow */&#xD;
				var phase = flowPhase + i; &#xD;
				var numTx = numTxArray[i];&#xD;
				edge = new Edge(flow.getName(),src,snk,priority, &#xD;
						period, deadline, phase, numTx);&#xD;
				/* Add edge to the nodes in the NodeMap */&#xD;
				srcNode.addEdge(edge);&#xD;
				snkNode.addEdge(edge);&#xD;
				/* Add edge to the nodes in the flow */&#xD;
				flowSrc.addEdge(edge);&#xD;
				flowSnk.addEdge(edge);&#xD;
				/* Add the edege to the flow */&#xD;
				flow.addEdge(edge);&#xD;
&#xD;
			}&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23TU97hDEe2QK54y_oSyxw" name="createConflictLists" specification="_2ptk2LhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>/* create conflict lists at global and&#xD;
		 * local levels (i.e., NodeMap and Flow)&#xD;
		 */&#xD;
		createGlobalConflictLists();&#xD;
		createLocalConflictLists();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23TU-LhDEe2QK54y_oSyxw" name="createGlobalConflictLists" specification="_2puL4LhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>for (Node node: nodes) {&#xD;
			for (Edge edge: node.getEdges()) {&#xD;
				/* get src and snk nodes and names */&#xD;
				var src = edge.getSrc();&#xD;
				var snk = edge.getSnk();&#xD;
				var srcNode = nodeMap.get(src);&#xD;
				var snkNode = nodeMap.get(snk);&#xD;
				/* &#xD;
				 * conflict list is a set, so just add&#xD;
				 * don't need to worry about duplicates&#xD;
				 * as Set ensures that doesn't happen.&#xD;
				 */&#xD;
				srcNode.addConflict(snk);&#xD;
				snkNode.addConflict(src);&#xD;
			}&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23TU-bhDEe2QK54y_oSyxw" name="createLocalConflictLists" specification="_2puL4bhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>for (Flow flow: flows) {&#xD;
			var flowNodes = flow.getNodes();&#xD;
			for (Integer i = 0; i &lt; flowNodes.size() -1 ; i++) {&#xD;
				var srcNode = flowNodes.get(i); &#xD;
				var snkNode = flowNodes.get(i+1);&#xD;
				var src = srcNode.getName();&#xD;
				var snk = snkNode.getName();&#xD;
				/* &#xD;
				 * conflict list is a set, so just add&#xD;
				 * don't need to worry about duplicates&#xD;
				 * as Set ensures that doesn't happen.&#xD;
				 */&#xD;
				srcNode.addConflict(snk);&#xD;
				snkNode.addConflict(src);&#xD;
			}&#xD;
		}&#xD;
&#xD;
&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23TU-rhDEe2QK54y_oSyxw" name="findCoordinator" specification="_212jYbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23TU-7hDEe2QK54y_oSyxw" name="nodesInFlow" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23TU_LhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var size = nodesInFlow.size();&#xD;
		var coordinatorIndex = 0;&#xD;
		var maxEdges = 0;&#xD;
		for (Integer i = 0; i &lt; size; i++) {&#xD;
			var node = nodesInFlow.get(i);&#xD;
			var numEdges = node.numEdges();&#xD;
			if (numEdges > maxEdges) {&#xD;
				maxEdges = numEdges;&#xD;
				coordinatorIndex = i;&#xD;
			}&#xD;
		}&#xD;
		return coordinatorIndex;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23TU_bhDEe2QK54y_oSyxw" name="buildTxArray" specification="_212jZbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23TU_rhDEe2QK54y_oSyxw" name="nodesInFlow" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23TU_7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23TVALhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <language>java</language>
                <body>var size = nodesInFlow.size();&#xD;
		var txArray = new Integer[size];&#xD;
		for (Integer i = 0; i &lt; size; i++) {&#xD;
			var node = nodesInFlow.get(i);&#xD;
			txArray[i] = getMaxTx(node);&#xD;
		}&#xD;
		return txArray;&#xD;
		&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23TVAbhDEe2QK54y_oSyxw" name="createInitialActivations" specification="_2puL4rhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>for (Flow flow: flows) {&#xD;
			var nodesInFlow = flow.getNodes();&#xD;
			Integer coordinatorIndex = 0;&#xD;
			/* Find the node with max edges connected.&#xD;
			 * This will be the first coordinator selected&#xD;
			 * for this flow.&#xD;
			 */&#xD;
			coordinatorIndex = findCoordinator(nodesInFlow);&#xD;
			var txArray = buildTxArray(nodesInFlow);&#xD;
			/* if coordinatorIndex is odd, then other coordinators&#xD;
			 * are also odd numbers, even otherwise. &#xD;
			 * */&#xD;
			Integer startIndex = 0; // for even coordinatorIndex&#xD;
			if ((coordinatorIndex % 2) == 1) {&#xD;
				/* coordinatorIndex is odd, so start at 1 */&#xD;
				startIndex = 1;&#xD;
			}&#xD;
			if (startIndex >= nodesInFlow.size()) {&#xD;
				/* create a partition the single partition */&#xD;
			}&#xD;
			var activationPhaseOffset = 0;&#xD;
			for (Integer i = startIndex; i &lt; nodesInFlow.size(); i+=2) {&#xD;
				var node = nodesInFlow.get(i);&#xD;
				/* create a partition consisting of node i */&#xD;
				String name = flow.getName() + &quot;:&quot; + node.getName();&#xD;
				Activation partition = getActivation(name, node);&#xD;
				/* Update phase for each edge in new partition based on &#xD;
				 * the current offset, which increases after each&#xD;
				 * partition created.&#xD;
				 * */&#xD;
				partition.increaseEdgePhases(activationPhaseOffset);&#xD;
				activations.put(name,partition);&#xD;
				/* increase offset for next partition based on the &#xD;
				 * max numTx in this partition/node &#xD;
				 * But need to account for phase already assumes&#xD;
				 * 1 Tx already&#xD;
				 * */&#xD;
				activationPhaseOffset += txArray[i]-1;  // adjust by one&#xD;
			} &#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23TVArhDEe2QK54y_oSyxw" name="getMaxTx" specification="_20mmNLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23TVA7hDEe2QK54y_oSyxw" name="node" type="_2poFQrhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23TVBLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var result = 0;&#xD;
		for (Edge edge: node.getEdges()) {&#xD;
			result = Math.max(result, edge.getNumTx());&#xD;
		}&#xD;
		return result;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23TVBbhDEe2QK54y_oSyxw" name="getActivation" specification="_20mmN7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23TVBrhDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23TVB7hDEe2QK54y_oSyxw" name="node" type="_2poFQrhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23TVCLhDEe2QK54y_oSyxw" type="_2oxJpLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>Activation newPartition = activations.get(name);&#xD;
		if (newPartition == null) {&#xD;
			// no partition by that name exists, so create one&#xD;
			newPartition = new Activation(name);&#xD;
			activationMap.put(node,newPartition);&#xD;
		}&#xD;
		/* add the node as the coordinator */&#xD;
		newPartition.addCoordinator(node.getName());&#xD;
		/* set the conflicts */&#xD;
		newPartition.setConflicts(node.getConflicts());&#xD;
		/* add the edges associated with this coordinator */&#xD;
		newPartition.addEdges(node.getEdges());&#xD;
		/* set the predecessor as the node's predecessor */&#xD;
		var nodePred = node.getPredecessor();&#xD;
		var pred = activationMap.get(nodePred);&#xD;
		if (nodePred != null &amp;&amp; pred == null) {&#xD;
			/* try next node up the flow */&#xD;
			nodePred = nodePred.getPredecessor();&#xD;
			pred = activationMap.get(nodePred);&#xD;
		}&#xD;
		newPartition.setPredecessor(pred);&#xD;
		return newPartition;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23T78LhDEe2QK54y_oSyxw" name="getHyperPeriod" specification="_2puL47hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23T78bhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>return workload.getHyperPeriod();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23T78rhDEe2QK54y_oSyxw" name="getMaxPhase" specification="_2pvaAbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23T787hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>return workload.getMaxPhase();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23T79LhDEe2QK54y_oSyxw" name="orderActivations" specification="_2pvaA7hDEe2QK54y_oSyxw">
                <language>java</language>
                <body>var currentTime = 0; // set initial time for building queue&#xD;
		/* Update the release time and priority of each partition activation */&#xD;
		for (Activation activation: activations.values()) {&#xD;
			activation.updatePriorityAndRelease(currentTime);&#xD;
		}&#xD;
		/* create a queue sorted first by release times and then priorities */&#xD;
		priorityQueue = new &#xD;
				SchedulableObjectQueue&lt;Activation>(new &#xD;
						PriorityComparator&lt;Activation>(),activations.values());&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23T79bhDEe2QK54y_oSyxw" name="getNextActivation" specification="_2pvaBLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23T79rhDEe2QK54y_oSyxw" type="_2oxJpLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return priorityQueue.poll();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23T797hDEe2QK54y_oSyxw" name="addActivation" specification="_20mmPLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23T7-LhDEe2QK54y_oSyxw" name="activation" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>priorityQueue.add(activation);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23T7-bhDEe2QK54y_oSyxw" name="findBaseStation" specification="_2pvaBbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23T7-rhDEe2QK54y_oSyxw" type="_2poFQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>Node baseStation = null;&#xD;
		Iterator&lt;Flow> iterator = flows.iterator();&#xD;
		Flow flow = iterator.next();&#xD;
		var nodes = flow.getNodes();&#xD;
		var srcBaseStation = nodes.get(0);&#xD;
		var srcBaseStationName = srcBaseStation.getName();&#xD;
		var snkBaseStation = nodes.get(nodes.size()-1);&#xD;
		var snkBaseStationName = snkBaseStation.getName(); &#xD;
		var found = false;&#xD;
 &#xD;
     while (!found &amp;&amp; iterator.hasNext()) {&#xD;
     	flow = iterator.next();&#xD;
 		nodes = flow.getNodes();&#xD;
     	var src = nodes.get(0);&#xD;
			var srcName = src.getName();&#xD;
			var snk = nodes.get(nodes.size()-1);&#xD;
			var snkName = snk.getName();&#xD;
			if (!srcBaseStationName.equals(srcName) &amp;&amp; &#xD;
					snkBaseStationName.equals(snkName)) {&#xD;
				baseStation = snkBaseStation;&#xD;
				found = true;&#xD;
			} else if (srcBaseStationName.equals(srcName) &amp;&amp; &#xD;
					!snkBaseStationName.equals(snkName)) {&#xD;
				baseStation = srcBaseStation;&#xD;
				found = true;&#xD;
			} else if (!srcBaseStationName.equals(snkName) &amp;&amp;&#xD;
					snkBaseStationName.equals(srcName)) {&#xD;
				baseStation = snkBaseStation;&#xD;
				found = true;&#xD;
			} else if (srcBaseStationName.equals(snkName) &amp;&amp; &#xD;
					!snkBaseStationName.equals(srcName)) {&#xD;
				baseStation = srcBaseStation;&#xD;
				found = true;&#xD;
			}&#xD;
     }&#xD;
     if (!found) {&#xD;
     	/* initial snk and src tie for base station. That is&#xD;
     	 * each is always a flow src with the other a snk or&#xD;
     	 * vice versa. &#xD;
     	 * So pick initial snk as the base station */&#xD;
     	baseStation = snkBaseStation;&#xD;
     }&#xD;
		return baseStation;&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2ps9wbhDEe2QK54y_oSyxw" name="getNodeConnectivity" visibility="private" method="_23TU7rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2118VLhDEe2QK54y_oSyxw" type="_2z4NcLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2ptk0LhDEe2QK54y_oSyxw" name="getNodeNames" method="_23TU8LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_212jYLhDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2ptk0rhDEe2QK54y_oSyxw" name="getNodesNamesOrderedAlphabetically" method="_23TU8rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2ptk07hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2ptk1LhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2ptk1rhDEe2QK54y_oSyxw" name="buildPosetOfActivations" method="_23TU9bhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2ptk17hDEe2QK54y_oSyxw" name="createEdgeLists" visibility="private" method="_23TU9rhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2ptk2LhDEe2QK54y_oSyxw" name="createConflictLists" visibility="private" method="_23TU97hDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2puL4LhDEe2QK54y_oSyxw" name="createGlobalConflictLists" visibility="private" method="_23TU-LhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2puL4bhDEe2QK54y_oSyxw" name="createLocalConflictLists" visibility="private" method="_23TU-bhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2puL4rhDEe2QK54y_oSyxw" name="createInitialActivations" visibility="private" method="_23TVAbhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2puL47hDEe2QK54y_oSyxw" name="getHyperPeriod" method="_23T78LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pvaALhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pvaAbhDEe2QK54y_oSyxw" name="getMaxPhase" method="_23T78rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2pvaArhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2pvaA7hDEe2QK54y_oSyxw" name="orderActivations" method="_23T79LhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2pvaBLhDEe2QK54y_oSyxw" name="getNextActivation" method="_23T79bhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23pTJbhDEe2QK54y_oSyxw">
                  <body>getNextActivation returns the highest priority&#xD;
	 * partition that has been released at or before input&#xD;
	 * parameter time.&#xD;
	 * &#xD;
	 * @param time&#xD;
	 * @return</body>
                </ownedComment>
                <ownedParameter xmi:id="_20mmO7hDEe2QK54y_oSyxw" type="_2oxJpLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2pvaBbhDEe2QK54y_oSyxw" name="findBaseStation" visibility="protected" method="_23T7-bhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23pTJ7hDEe2QK54y_oSyxw">
                  <body>findBaseStation is used by algorithms that generate the&#xD;
	 * partially ordered set of activations using a base station. &#xD;
	 * This method searches the set of flows to find the node that&#xD;
	 * is always one of the src or snk nodes. In the case of a tie&#xD;
	 * where there are two candidates the initial snk node is&#xD;
	 * returned. If there are multiple base stations, only the fist&#xD;
	 * one found is returned.&#xD;
	 * &#xD;
	 * @return baseStation for the workload</body>
                </ownedComment>
                <ownedParameter xmi:id="_20nNQLhDEe2QK54y_oSyxw" type="_2poFQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20l_IbhDEe2QK54y_oSyxw" name="Poset" visibility="package" method="_23TU67hDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_20mmMbhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_20mmMrhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedComment xmi:id="_23pTI7hDEe2QK54y_oSyxw">
                  <body>Partition types:&#xD;
	 *  &#xD;
	 *  by node--each node is a partition using only one channel&#xD;
	 *  by channel&#xD;
	 *  	by node then identify when a coordinator and when not&#xD;
	 *  	by flow and coordinator in that flow&#xD;
	 *  	many others...</body>
                </ownedComment>
                <ownedParameter xmi:id="_20mmMLhDEe2QK54y_oSyxw" name="workload" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20mmM7hDEe2QK54y_oSyxw" type="_2ps9wLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20mmNLhDEe2QK54y_oSyxw" name="getMaxTx" visibility="private" method="_23TVArhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20mmNbhDEe2QK54y_oSyxw" name="node" type="_2poFQrhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20mmNrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20mmN7hDEe2QK54y_oSyxw" name="getActivation" visibility="private" method="_23TVBbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20mmOLhDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20mmObhDEe2QK54y_oSyxw" name="node" type="_2poFQrhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20mmOrhDEe2QK54y_oSyxw" type="_2oxJpLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20mmPLhDEe2QK54y_oSyxw" name="addActivation" method="_23T797hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23pTJrhDEe2QK54y_oSyxw">
                  <body>addElemement adds the partitionElement to the priority queue&#xD;
	 * &#xD;
	 * @param activation</body>
                </ownedComment>
                <ownedParameter xmi:id="_20mmPbhDEe2QK54y_oSyxw" name="activation" type="_2oxJpLhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_212jYbhDEe2QK54y_oSyxw" name="findCoordinator" visibility="protected" method="_23TU-rhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23pTJLhDEe2QK54y_oSyxw">
                  <body>*&#xD;
	 * @param nodesInFlow&#xD;
	 * @return the node in the flow with highest local connectivity.</body>
                </ownedComment>
                <ownedParameter xmi:id="_212jYrhDEe2QK54y_oSyxw" name="nodesInFlow" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_212jY7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_212jZbhDEe2QK54y_oSyxw" name="buildTxArray" visibility="private" method="_23TU_bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_212jZrhDEe2QK54y_oSyxw" name="nodesInFlow" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_213KcLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_213KcbhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pwoILhDEe2QK54y_oSyxw" name="PreemptiveSchedule">
              <ownedComment xmi:id="_23pTKLhDEe2QK54y_oSyxw">
                <body>PreemptiveSchedule extends Schedule to build a preemptive, &#xD;
priority schedule for the Poset using numChannels. &#xD;
&#xD;
@author sgoddard2&#xD;
 *</body>
              </ownedComment>
              <generalization xmi:id="_20pphLhDEe2QK54y_oSyxw" general="_2qMF8LhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23T7-7hDEe2QK54y_oSyxw" name="PreemptiveSchedule" specification="_20n0ULhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23T7_LhDEe2QK54y_oSyxw" name="poset" type="_2ps9wLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23T7_bhDEe2QK54y_oSyxw" name="numChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23T7_rhDEe2QK54y_oSyxw" type="_2pwoILhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(poset,numChannels);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23T7_7hDEe2QK54y_oSyxw" name="continueSearch" specification="_20n0VrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23T8ALhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23T8AbhDEe2QK54y_oSyxw" name="activation" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23T8ArhDEe2QK54y_oSyxw" type="_213xgLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return findPreeptiveChannelAndTime(time,activation);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23T8A7hDEe2QK54y_oSyxw" name="toProgram" specification="_2pxPMLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23T8BLhDEe2QK54y_oSyxw" type="_2p-DgLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>var program = new ProgramSchedule();	&#xD;
		&#xD;
//TODO write code to support preemption&#xD;
		&#xD;
		return program;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23T8BbhDEe2QK54y_oSyxw" name="findPreeptiveChannelAndTime" specification="_20obY7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23T8BrhDEe2QK54y_oSyxw" name="startTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23T8B7hDEe2QK54y_oSyxw" name="schedulableObject" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23T8CLhDEe2QK54y_oSyxw" type="_213xgLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>var channel = numChannels;&#xD;
		var time = startTime;&#xD;
		var result = findMaxTimeAvailable(time, schedulableObject);&#xD;
		var channelConsidered = result.channel;&#xD;
		var timeAvailable = result.time;&#xD;
		&#xD;
		&#xD;
		if (channelConsidered == numChannels) {&#xD;
			/* no available time slots near this time, even for preemption */&#xD;
			return findChannelAndTime(time+1,schedulableObject);&#xD;
		} else {&#xD;
			/* can use timeAvailable.time here on timeAvailable.channel&#xD;
			 * then must find additional time on same channel until &#xD;
			 * done&#xD;
			 */&#xD;
			// return findAdditionalTime(timeAvailable.channel,time+1,schedulableObject);&#xD;
			var duration = schedulableObject.getExecutionDuration();&#xD;
			var timeRemaining = duration-timeAvailable;&#xD;
			var additionalScheduleTimes = findAdditionalTime(channelConsidered,time+timeAvailable,schedulableObject,timeRemaining);&#xD;
			var numStartTimes = additionalScheduleTimes.size();&#xD;
			var lastStartTime = endScheduleTime; &#xD;
			if (numStartTimes > 0 ) {&#xD;
				lastStartTime = additionalScheduleTimes.get(numStartTimes-1).getStartTime();&#xD;
			}&#xD;
			if (lastStartTime &lt; endScheduleTime) {&#xD;
				// schedulableObject.addAdditionalStartTime(nextStartTime);&#xD;
				channel = channelConsidered;&#xD;
				schedulableObject.addScheduleTimes(additionalScheduleTimes);&#xD;
			} else {&#xD;
				time = lastStartTime;&#xD;
			}&#xD;
		}&#xD;
		return new ScheduleLocation(channel, time);	&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23T8CbhDEe2QK54y_oSyxw" name="findAdditionalTime" specification="_20obZrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23T8CrhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23T8C7hDEe2QK54y_oSyxw" name="startTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23T8DLhDEe2QK54y_oSyxw" name="a1" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23T8DbhDEe2QK54y_oSyxw" name="timeRemaining">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23T8DrhDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>var time = startTime;&#xD;
		var results = new ArrayList&lt;ScheduleTime>();&#xD;
		&#xD;
		// if (timeRemaining &lt;= )&#xD;
		while (time &lt; endScheduleTime &amp;&amp; conflictsExist(a1, time, timeRemaining )) {&#xD;
			time ++; &#xD;
		}&#xD;
		if (time >= endScheduleTime) {&#xD;
			/* no conflict time available */&#xD;
			results.add(new ScheduleTime(time,time));&#xD;
			return results;&#xD;
		} &#xD;
		&#xD;
		if (isAvailable(a1, channel, time, timeRemaining)) {&#xD;
			results.add(new ScheduleTime(time,time+timeRemaining-1));&#xD;
		} else {&#xD;
			var timeAvailable = availableTime(a1,  channel, time);&#xD;
			if (timeAvailable > 0) {&#xD;
				/* found at least one time slot available */&#xD;
//				a1.addAdditionalStartTime(time);&#xD;
				results.addAll(findAdditionalTime(channel,time+timeAvailable,a1,timeRemaining-timeAvailable));&#xD;
			} else {&#xD;
				/* look ahead in time by one unit */&#xD;
				results.addAll(findAdditionalTime(channel,time+1,a1,timeRemaining));&#xD;
			}&#xD;
			&#xD;
		}&#xD;
		&#xD;
		return results;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23T8D7hDEe2QK54y_oSyxw" name="findMaxTimeAvailable" specification="_20pCcLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23T8ELhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23T8EbhDEe2QK54y_oSyxw" name="schedulableObject" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23T8ErhDEe2QK54y_oSyxw" type="_213xgLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>var maxTime = 0;&#xD;
		var bestChannel = numChannels;&#xD;
		&#xD;
		for (int channel = 0; channel &lt; numChannels ; channel++) {&#xD;
			var timeAvailable = availableTime(schedulableObject,channel,time);&#xD;
			if (timeAvailable > maxTime) {&#xD;
				maxTime = timeAvailable;&#xD;
				bestChannel = channel;&#xD;
			}&#xD;
		}&#xD;
// TEMP&#xD;
		if (maxTime > 0) {&#xD;
			System.err.printf(&quot;\n\t\tMaxTime is %d and bestChannel is %d\n&quot;, maxTime, bestChannel);&#xD;
		}&#xD;
// TEMP&#xD;
		return new ScheduleLocation(bestChannel,maxTime);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23T8E7hDEe2QK54y_oSyxw" name="availableTime" specification="_20pCc7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23T8FLhDEe2QK54y_oSyxw" name="a1" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23T8FbhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23T8FrhDEe2QK54y_oSyxw" name="start">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23T8F7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>Integer result = 0;&#xD;
		&#xD;
		while (isAvailable(a1,channel,start+result,1)) {&#xD;
			result++;&#xD;
		}&#xD;
		return result;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23T8GLhDEe2QK54y_oSyxw" name="addToSchedule" specification="_20pCeLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23T8GbhDEe2QK54y_oSyxw" name="next" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23T8GrhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23T8G7hDEe2QK54y_oSyxw" name="startTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23T8HLhDEe2QK54y_oSyxw" name="endTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23T8HbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>var success = true;&#xD;
		var combineTime = endScheduleTime;&#xD;
		&#xD;
		var nextScheduleTime = next.getNextScheduleTime(startTime);&#xD;
		var nextStartTime = nextScheduleTime.getStartTime();&#xD;
		var nextEndTime = nextScheduleTime.getEndTime();&#xD;
		&#xD;
		if (startTime >= endScheduleTime || endTime >= endScheduleTime) {&#xD;
			/* can't schedule this activation */&#xD;
			return false;&#xD;
		}&#xD;
		&#xD;
		if (nextStartTime &lt; Integer.MAX_VALUE &amp;&amp; nextEndTime &lt; Integer.MAX_VALUE) {&#xD;
			/* add the next slice of execution to the schedule */&#xD;
			success = addToSchedule(next,channel,nextStartTime, nextEndTime);&#xD;
		}&#xD;
		if (!success) {&#xD;
			return false;&#xD;
		}&#xD;
		&#xD;
		/* Successful adding next to later points in the schedule.&#xD;
		 * So, now we see if this is the last&#xD;
		 * &#xD;
		 */&#xD;
		if (nextStartTime == Integer.MAX_VALUE &amp;&amp; nextEndTime == Integer.MAX_VALUE) {&#xD;
			/* this is the last slice of execution, so wrap things up */&#xD;
			next.setEndTime(endTime);&#xD;
			var responseTime = endTime - next.getReleaseTime();&#xD;
			if (responseTime > next.getDeadline()) {&#xD;
				return false; // unable to schedule this entry&#xD;
			}&#xD;
			/* Add the endTime to the elements endTimes Q&#xD;
			 * so that we can track predecessor endTimes&#xD;
			 * and make sure successors don't start before &#xD;
			 * predecessors&#xD;
			 */&#xD;
			next.addToEndTimes(endTime); &#xD;
			/* remove predecessor end time that matches this start time */&#xD;
			var pred = next.getPredecessor();&#xD;
			if (pred != null) {&#xD;
				pred.pollEndTimes(); &#xD;
			}&#xD;
		}&#xD;
		/* Create a new entry, based on next, to be entered&#xD;
		 * into the scheduling tale&#xD;
		 */&#xD;
		var entry = new Activation(next, startTime);&#xD;
		/* Check to see we need to combine this activation with&#xD;
		 * an existing activation in any of the slots. If so,&#xD;
		 * save that time so we can update the actual start time&#xD;
		 */&#xD;
		Activation currentEntry = null;&#xD;
		for (int i = startTime; i &lt;= endTime; i++) {&#xD;
			currentEntry = schedule.get(channel,i);&#xD;
			if (currentEntry != null &amp;&amp; next.canCombine(currentEntry)) {&#xD;
				/* found an entry to combine, record the time,&#xD;
				 * update the combined duration and new&#xD;
				 * endTime, then exit the loop&#xD;
				 */&#xD;
				combineTime = i;&#xD;
				// currentEntry = entry;&#xD;
				break;&#xD;
			}&#xD;
		}&#xD;
		entry.setStartTime(startTime); // set start time for this entry&#xD;
		entry.setEndTime(endTime); // set end time for this entry&#xD;
		if (combineTime &lt; endScheduleTime) {&#xD;
			/* change entry to point to combinedActivation&#xD;
			 * and set startTime to the beginning of the &#xD;
			 * combined entries */&#xD;
			var combinedActivation = new CombinedActivation(currentEntry, entry);&#xD;
			entry = combinedActivation;&#xD;
			startTime = entry.getStartTime();&#xD;
		}&#xD;
		for (int i = startTime; i &lt;= endTime; i++) {&#xD;
			/* Add this object to the schedule for the&#xD;
			 * from startTime to endTime.&#xD;
			 */&#xD;
			schedule.set(channel, i, entry);&#xD;
		}&#xD;
		&#xD;
		return success;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23UjALhDEe2QK54y_oSyxw" name="addToSchedule" specification="_20pCfrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23UjAbhDEe2QK54y_oSyxw" name="next" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23UjArhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>var channel = getChannelAndSetStartTime(next);&#xD;
		if (channel == numChannels) {&#xD;
			return false;&#xD;
		}&#xD;
		&#xD;
		/* found a time and channel  that are valid */&#xD;
		var startTime = next.getStartTime(); // set by getChannelAndSetStartTime()&#xD;
		var success = false; &#xD;
		&#xD;
// PREEMPT&#xD;
		var timeAvailable = availableTime(next, channel, startTime);&#xD;
		var duration = next.getExecutionDuration();&#xD;
		&#xD;
		if (timeAvailable == 0 ) {&#xD;
			/* then currentEntry at this location in the schedule&#xD;
			 * is not null and we can combine, but best to check&#xD;
			 */&#xD;
			var currentEntry = schedule.get(channel,startTime);&#xD;
			if (currentEntry != null &amp;&amp; currentEntry.canCombine(next)) {&#xD;
				/* no conflict with this entry, and can&#xD;
				 * combine so check for combined entry time&#xD;
				 *  to see if we can combine activations&#xD;
				 */&#xD;
				var combinedDuration = currentEntry.getCombinedExecutionDuration(next);&#xD;
				var combinedEntry = new CombinedActivation(currentEntry,next);&#xD;
				var searchTime = currentEntry.getEndTime()+1;&#xD;
				var searchLength = combinedDuration - duration;&#xD;
				if (isAvailable(combinedEntry, channel, searchTime, searchLength)) {&#xD;
					timeAvailable = combinedDuration;&#xD;
					duration = combinedDuration;&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
			if (duration &lt;= timeAvailable) {&#xD;
				/* can execute without preemption */&#xD;
				var endTime = startTime+duration-1;&#xD;
				success = addToSchedule(next,channel,startTime,endTime);&#xD;
			} else {&#xD;
				/* Recursively add 'slices' to the schedule.&#xD;
				 * success == true => all slices added successfully&#xD;
				 * otherwise, none of the slices were added&#xD;
				 */&#xD;
				var endTime = startTime + timeAvailable-1;&#xD;
				success = addToSchedule(next,channel,startTime,endTime);&#xD;
			}&#xD;
		return success;&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2pxPMLhDEe2QK54y_oSyxw" name="toProgram" method="_23T8A7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20obYrhDEe2QK54y_oSyxw" type="_2p-DgLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20n0ULhDEe2QK54y_oSyxw" name="PreemptiveSchedule" visibility="package" method="_23T7-7hDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_20n0U7hDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_20n0VLhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_20n0UbhDEe2QK54y_oSyxw" name="poset" type="_2ps9wLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20n0UrhDEe2QK54y_oSyxw" name="numChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20n0VbhDEe2QK54y_oSyxw" type="_2pwoILhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20n0VrhDEe2QK54y_oSyxw" name="continueSearch" visibility="protected" method="_23T7_7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20n0V7hDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20n0WLhDEe2QK54y_oSyxw" name="activation" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_213xgrhDEe2QK54y_oSyxw" type="_213xgLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20obY7hDEe2QK54y_oSyxw" name="findPreeptiveChannelAndTime" visibility="private" method="_23T8BbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20obZLhDEe2QK54y_oSyxw" name="startTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20obZbhDEe2QK54y_oSyxw" name="schedulableObject" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_213xg7hDEe2QK54y_oSyxw" type="_213xgLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20obZrhDEe2QK54y_oSyxw" name="findAdditionalTime" visibility="private" method="_23T8CbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20obZ7hDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20obaLhDEe2QK54y_oSyxw" name="startTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20obabhDEe2QK54y_oSyxw" name="a1" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20obarhDEe2QK54y_oSyxw" name="timeRemaining">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_213xhLhDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20pCcLhDEe2QK54y_oSyxw" name="findMaxTimeAvailable" visibility="private" method="_23T8D7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20pCcbhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20pCcrhDEe2QK54y_oSyxw" name="schedulableObject" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_214YkLhDEe2QK54y_oSyxw" type="_213xgLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20pCc7hDEe2QK54y_oSyxw" name="availableTime" visibility="private" method="_23T8E7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20pCdLhDEe2QK54y_oSyxw" name="a1" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20pCdbhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20pCdrhDEe2QK54y_oSyxw" name="start">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20pCd7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20pCeLhDEe2QK54y_oSyxw" name="addToSchedule" visibility="private" method="_23T8GLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20pCebhDEe2QK54y_oSyxw" name="next" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20pCerhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20pCe7hDEe2QK54y_oSyxw" name="startTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20pCfLhDEe2QK54y_oSyxw" name="endTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20pCfbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20pCfrhDEe2QK54y_oSyxw" name="addToSchedule" visibility="protected" method="_23UjALhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20pCf7hDEe2QK54y_oSyxw" name="next" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20ppgLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pydULhDEe2QK54y_oSyxw" name="PriorityComparator">
              <interfaceRealization xmi:id="_214YkbhDEe2QK54y_oSyxw" client="_2pydULhDEe2QK54y_oSyxw" supplier="_20IsILhDEe2QK54y_oSyxw" contract="_20IsILhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23UjA7hDEe2QK54y_oSyxw" name="compare" specification="_214Yk7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23UjBLhDEe2QK54y_oSyxw" name="obj1" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23UjBbhDEe2QK54y_oSyxw" name="obj2" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23UjBrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>var result = obj1.priorityComparison(obj2);&#xD;
		if (result == 0) {&#xD;
			// tied for priority, so break tie on release time&#xD;
			result = obj1.releaseTimeComparison(obj2);&#xD;
		}&#xD;
		return result; // 0 => tie on priority and release time&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_214Yk7hDEe2QK54y_oSyxw" name="compare" method="_23UjA7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_214YlLhDEe2QK54y_oSyxw" name="obj1" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_214_oLhDEe2QK54y_oSyxw" name="obj2" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_214_obhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2pzEYbhDEe2QK54y_oSyxw" name="Program">
              <ownedComment xmi:id="_23pTKbhDEe2QK54y_oSyxw">
                <body>@author sgoddard&#xD;
 *</body>
              </ownedComment>
              <ownedAttribute xmi:id="_22tfALhDEe2QK54y_oSyxw" name="UNKNOWN" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22tfAbhDEe2QK54y_oSyxw" value="&quot;Unknown&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22tfArhDEe2QK54y_oSyxw" name="SLEEP_INSTRUCTION" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22tfA7hDEe2QK54y_oSyxw" value="&quot;sleep&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22tfBLhDEe2QK54y_oSyxw" name="WAIT_FRAGMENT" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22tfBbhDEe2QK54y_oSyxw" value="&quot;wait(&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22tfBrhDEe2QK54y_oSyxw" name="ELSE_PULL_FRAGMENT" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22uGELhDEe2QK54y_oSyxw" value="&quot;else pull(&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22uGEbhDEe2QK54y_oSyxw" name="workLoad" visibility="package" type="_2q5QkLhDEe2QK54y_oSyxw" association="_24Di17hDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22uGE7hDEe2QK54y_oSyxw" name="scheduleBuilt" visibility="package" type="_2p-DgLhDEe2QK54y_oSyxw" association="_24EJ4LhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22uGFbhDEe2QK54y_oSyxw" name="SchedulerSelected" visibility="package" type="_214_pbhDEe2QK54y_oSyxw" association="_24EJ47hDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22utILhDEe2QK54y_oSyxw" name="schChoice" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22utIrhDEe2QK54y_oSyxw" name="schedulerName" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22utJLhDEe2QK54y_oSyxw" name="nTransmissions" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22utJrhDEe2QK54y_oSyxw" name="realTimeHARTflag" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22utKLhDEe2QK54y_oSyxw" name="optimizationRequested" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22vUMLhDEe2QK54y_oSyxw" name="channelsAvailable" visibility="package" type="_2o998LhDEe2QK54y_oSyxw" association="_24EJ5rhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22vUMrhDEe2QK54y_oSyxw" name="nChannels" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22vUNLhDEe2QK54y_oSyxw" name="verbose" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22vUNrhDEe2QK54y_oSyxw" name="reportLatency" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22vUOLhDEe2QK54y_oSyxw" name="deadlineMisses" visibility="private" type="_2pKyQrhDEe2QK54y_oSyxw" association="_24EJ6bhDEe2QK54y_oSyxw"/>
              <interfaceRealization xmi:id="_20qQlLhDEe2QK54y_oSyxw" client="_2pzEYbhDEe2QK54y_oSyxw" supplier="_2qY6QLhDEe2QK54y_oSyxw" contract="_2qY6QLhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23UjB7hDEe2QK54y_oSyxw" name="Program" specification="_215msbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23UjCLhDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23UjCbhDEe2QK54y_oSyxw" name="nChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23UjCrhDEe2QK54y_oSyxw" name="choice" type="_214_pbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23UjC7hDEe2QK54y_oSyxw" name="verbose">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23UjDLhDEe2QK54y_oSyxw" name="reportLatency">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23UjDbhDEe2QK54y_oSyxw" type="_2pzEYbhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>setDefaultParameters(workLoad, nChannels, verbose, reportLatency);&#xD;
		buildProgram(choice);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23UjDrhDEe2QK54y_oSyxw" name="Program" specification="_215murhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23UjD7hDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23UjELhDEe2QK54y_oSyxw" name="nChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23UjEbhDEe2QK54y_oSyxw" name="choice" type="_214_pbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23UjErhDEe2QK54y_oSyxw" type="_2pzEYbhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>setDefaultParameters(workLoad, nChannels, false, false);&#xD;
		buildProgram(choice);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23UjE7hDEe2QK54y_oSyxw" name="setDefaultParameters" specification="_20q3oLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23UjFLhDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23UjFbhDEe2QK54y_oSyxw" name="nChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23UjFrhDEe2QK54y_oSyxw" name="verbose">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23UjF7hDEe2QK54y_oSyxw" name="reportLatency">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>this.workLoad = workLoad; // flows for which schedules will be built&#xD;
		this.scheduleBuilt = new ProgramSchedule();&#xD;
		this.SchedulerSelected = ScheduleChoices.PRIORITY; // set the type of scheduler selected&#xD;
		workLoad.setFlowsInPriorityOrder();&#xD;
		this.schedulerName = &quot;Priority&quot;;&#xD;
		this.schChoice = &quot;Priority&quot;;&#xD;
		this.nTransmissions = 0;&#xD;
		this.realTimeHARTflag = false;&#xD;
		this.optimizationRequested = true;&#xD;
		this.nChannels = nChannels;&#xD;
		this.verbose = verbose;&#xD;
		this.channelsAvailable = new Channels(nChannels, verbose);&#xD;
		this.reportLatency = reportLatency;&#xD;
		this.deadlineMisses = new Description();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23UjGLhDEe2QK54y_oSyxw" name="toWorkLoad" specification="_2p0SgLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23UjGbhDEe2QK54y_oSyxw" type="_2q5QkLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return workLoad;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23UjGrhDEe2QK54y_oSyxw" name="buildProgram" specification="_216NxrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23UjG7hDEe2QK54y_oSyxw" name="choice" type="_214_pbhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>/*&#xD;
		 * Switch on the scheduler choice. If it is POSET-based scheduler, create the&#xD;
		 * POSET that matches the name and then use the newer schedule object to convert&#xD;
		 * the POSET to a program. If it is an original scheduler choice, build set the&#xD;
		 * scheduler type and build the schedule and WARP program by calling&#xD;
		 * buildOriginalProgram();&#xD;
		 */&#xD;
		switch (choice) { // select the requested scheduler&#xD;
		case WARP_POSET_PRIORITY: // fall through&#xD;
		case WARP_POSET_RM: // fall through&#xD;
		case WARP_POSET_DM: // fall through&#xD;
			setScheduleSelected(choice);&#xD;
			var poset1 = new WarpPoset(workLoad);&#xD;
			var schedule1 = new NonPreemptiveSchedule(poset1, this.nChannels);&#xD;
			var newProgram = schedule1.toProgram();&#xD;
			setSchedule(newProgram); // store the schedule built&#xD;
			break;&#xD;
		case CONNECTIVITY_POSET_PRIORITY: // fall through&#xD;
		case CONNECTIVITY_POSET_RM: // fall through&#xD;
		case CONNECTIVITY_POSET_DM: // fall through&#xD;
		case POSET_PRIORITY: // fall through&#xD;
		case POSET_RM: // fall through&#xD;
		case POSET_DM:&#xD;
			setScheduleSelected(choice);&#xD;
			// var poset = new BasicPoset(workLoad);&#xD;
			var poset2 = new ConnectivityPoset(workLoad);&#xD;
			var schedule2 = new NonPreemptiveSchedule(poset2, this.nChannels);&#xD;
			newProgram = schedule2.toProgram();&#xD;
			setSchedule(newProgram); // store the schedule built&#xD;
			break;&#xD;
		//// case CONNECTIVITY_POSET_PREEMPTIVE_PRIORITY: // fall through&#xD;
		//// case CONNECTIVITY_POSET_PREEMPTIVE_RM: // fall through&#xD;
		//// case CONNECTIVITY_POSET_PREEMPTIVE_DM: // fall through&#xD;
		// var poset3 = new ConnectivityPoset(workLoad);&#xD;
		// var schedule3 = new PreemptiveSchedule(poset3, this.nChannels);&#xD;
		// newProgram = schedule3.toProgram();&#xD;
		// setSchedule(newProgram); // store the schedule built&#xD;
		// break;&#xD;
		case PRIORITY:&#xD;
			selectPriority();&#xD;
			buildOriginalProgram(); // build the requested schedule&#xD;
			break;&#xD;
		case RM:&#xD;
			selectRM();&#xD;
			buildOriginalProgram(); // build the requested schedule&#xD;
			break;&#xD;
		case DM:&#xD;
			selectDM();&#xD;
			buildOriginalProgram(); // build the requested schedule&#xD;
			break;&#xD;
		case RTHART:&#xD;
			selectRtHART();&#xD;
			buildOriginalProgram(); // build the requested schedule&#xD;
			break;&#xD;
		default:&#xD;
			selectPriority();&#xD;
			buildOriginalProgram(); // build the requested schedule&#xD;
			break; // break from switch&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23UjHLhDEe2QK54y_oSyxw" name="buildOriginalProgram" specification="_2p0SgbhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>// builds a Priority schedule&#xD;
&#xD;
		if (verbose) {&#xD;
			var scheduleDetails = String.format(&#xD;
					&quot;\nSystem schedule for graph %s created with the following parameters:\n&quot;, workLoad.getName());&#xD;
			scheduleDetails = String.format(scheduleDetails + &quot;\tScheduler Name:\t%s\n&quot;, getSchedulerName());&#xD;
			scheduleDetails = String.format(scheduleDetails + &quot;\tM:\t%s\n&quot;,&#xD;
					String.valueOf(workLoad.getMinPacketReceptionRate()));&#xD;
			scheduleDetails = String.format(scheduleDetails + &quot;\tE2E:\t%s\n&quot;, String.valueOf(workLoad.getE2e()));&#xD;
			scheduleDetails = String.format(scheduleDetails + &quot;\tnChannels:\t%d\n&quot;, getNumChannels());&#xD;
			// The following parameters are only output when special schedules are requested&#xD;
			if (getNumTransmissions() > 0) { // only specify when NumTransmissions is fixed&#xD;
				scheduleDetails = String.format(scheduleDetails + &quot;\tnTransmissions:\t%d\n&quot;, getNumTransmissions());&#xD;
			}&#xD;
			if (getOptimizationFlag()) { // only specify when optimization not requested&#xD;
				scheduleDetails += &quot;\tOptimization Requested:\tFalse\n&quot;;&#xD;
			}&#xD;
			System.out.println(scheduleDetails);&#xD;
		}&#xD;
		var nTx = 0;// support nTx per transmission, which is set based on input parameter if&#xD;
					// nTransmissions == n 0 else flow.nTXperLink&#xD;
		var nTransmissions = getNumTransmissions();&#xD;
		Boolean realtimeHART = getRealTimeHartFlag();&#xD;
		var optimizationRequested = getOptimizationFlag();&#xD;
		var schedule = new ProgramSchedule(); // create an empty schedule&#xD;
		var newInstruction = SLEEP_INSTRUCTION; // initialize the new Instruction with a sleep&#xD;
		var prioritizedFlows = workLoad.getFlowNamesInPriorityOrder();&#xD;
		// var orderedNodes = workLoad.getNodeNamesOrderedAlphabetically(); // create an&#xD;
		// array of node&#xD;
		// names&#xD;
		// sorted alphabetically&#xD;
		var nodeIndex = getNodeMapIndex(); // get the mapping from node names to index in schedule&#xD;
		var nNodes = nodeIndex.size();&#xD;
		/*&#xD;
		 * for (int index = 0; index &lt; nNodes; index++) { // set up the node to index&#xD;
		 * mapping var name = orderedNodes[index]; nodeIndex.put(name, index); // add&#xD;
		 * name, index mapping to NodeIndex map }&#xD;
		 */&#xD;
		var hyperPeriod = workLoad.getHyperPeriod();&#xD;
		for (int i = 0; i &lt; hyperPeriod; i++) { // This loop makes sure the schedule is full up to the&#xD;
												// period and the channels entries are all initialized&#xD;
			var newInstructionTimeSlot = new InstructionTimeSlot(nNodes, SLEEP_INSTRUCTION); // create a&#xD;
																								// time slot&#xD;
																								// for&#xD;
																								// nNodes,&#xD;
																								// each&#xD;
																								// initialized&#xD;
																								// with a&#xD;
																								// SLEEP_INSTRUCTION&#xD;
			schedule.add(newInstructionTimeSlot);&#xD;
			channelsAvailable.addNewChannelSet();// initially, all channels are available in each time&#xD;
													// slot&#xD;
		}&#xD;
		// create an instance of the Warp DSL class for parsing instructions&#xD;
		var dsl = new WarpDSL();&#xD;
&#xD;
		for (String flowName : prioritizedFlows) { // loop through all of the nodes in priority order&#xD;
			var nodesInFlow = workLoad.getNodesInFlow(flowName);&#xD;
			var nNodesInFlow = nodesInFlow.length;&#xD;
			var e2eFlag = false; // default is to not use e2e to achieve E2E&#xD;
			if (nTransmissions == 0) { // use nTx from flow.nTXperLink for realtimeHart and the linkTX&#xD;
										// array otherwise&#xD;
				e2eFlag = true; // need to meet e2e to hit E2E for flow&#xD;
				if (realtimeHART) {&#xD;
					nTx = workLoad.getFlowTxAttemptsPerLink(flowName);&#xD;
				} // else we will computer nTx from the linkTx array for the flow as we go&#xD;
&#xD;
			} else {&#xD;
				nTx = nTransmissions;&#xD;
			}&#xD;
			var snk = &quot;&quot;;&#xD;
			var linkTxCosts = workLoad.getNumTxAttemptsPerLink(flowName);&#xD;
			if (verbose) {&#xD;
				var totalCost = workLoad.getTotalTxAttemptsInFlow(flowName);&#xD;
				var minCost = nNodesInFlow - 1; // nEdges in the flow is the minimum communication cost,&#xD;
												// i.e., min nTx to go E2E with no errors&#xD;
				System.out.printf(&#xD;
						&quot;Flow %s has a minimum communication cost of %d and a worst-case communication cost of %d\n&quot;,&#xD;
						flowName, minCost, totalCost);&#xD;
			}&#xD;
			if (nTx == 0) { // this is true when !realtimeHART and nTransmssions wasn't specified => nTx&#xD;
							// is dependent on reliability target&#xD;
				nTx = linkTxCosts[0]; // set nTx to the nTx for the first link in the flow&#xD;
			}&#xD;
			var previousNodeInstruction = new Integer[nTx]; // set instruction location in schedule for&#xD;
															// previous slots to 0&#xD;
			Arrays.fill(previousNodeInstruction, 0); // initialize locations to 0&#xD;
			var flowPhase = workLoad.getFlowPhase(flowName); // used to compute latency after done&#xD;
																// scheduling this flow&#xD;
			var flowLastInstruction = flowPhase; // used to compute latency after done scheduling this&#xD;
													// flow&#xD;
			var flowDeadline = workLoad.getFlowDeadline(flowName); // used to check schedulability for&#xD;
																	// this flow&#xD;
			var flowPeriod = workLoad.getFlowPeriod(flowName);&#xD;
			var FlowSrcInstructionTimeSlot = flowPhase; // initialize the time at which the flow's src&#xD;
														// node can first transmit&#xD;
			for (int instance = 0; instance &lt; hyperPeriod / flowPeriod; instance++) {&#xD;
				for (int flowNodeIndex = 0; flowNodeIndex &lt; nNodesInFlow - 1; flowNodeIndex++) { // don't&#xD;
																									// push for&#xD;
																									// last&#xD;
																									// node, so&#xD;
																									// stop at&#xD;
																									// node&#xD;
																									// n-1,&#xD;
																									// which is&#xD;
																									// 2 less&#xD;
																									// than&#xD;
																									// count&#xD;
					var currentNodeName = nodesInFlow[flowNodeIndex]; // get name of current node in the flow&#xD;
																		// (aka source of data)&#xD;
					if (e2eFlag) {&#xD;
						nTx = linkTxCosts[flowNodeIndex]; // set nTx for this link&#xD;
					}&#xD;
					var currentNodeInstruction = new Integer[nTx]; // store instruction location in schedule&#xD;
																	// for previous node&#xD;
					Arrays.fill(currentNodeInstruction, 0); // initialize the currentNondeInstruction&#xD;
					for (int index = 0; index &lt; nTx; index++) { // repeat instruction nTx times so that this&#xD;
																// flow meets desired reliability&#xD;
						var instructionNodeName = currentNodeName; // name of node for which we write an&#xD;
																	// instruction in its program&#xD;
						var priorSrcInstruction = UNKNOWN; // variable used to store and possibly update the&#xD;
															// priorSrcInstruction during optimization&#xD;
						var priorSrcUpdated = false; // flag to indicate if priorSrcInstruction is updated or&#xD;
														// not&#xD;
						snk = nodesInFlow[flowNodeIndex + 1]; // should get a valid sink node, set name to&#xD;
																// UNKNOWN if we don't&#xD;
						// when not optimizing instructionNodeName is current node, but we might update&#xD;
						// a&#xD;
						// different node's instruction to optimize&#xD;
						var phase = instance * flowPeriod + flowPhase; // update phase for the instance of the&#xD;
																		// flow release, which happens once every&#xD;
																		// period in the hyperPeriod&#xD;
						var firstPossibleSlot = Math.max(phase, FlowSrcInstructionTimeSlot); // make sure&#xD;
																								// precedence&#xD;
																								// constraints on&#xD;
																								// flow are&#xD;
																								// preserved&#xD;
						Integer instructionIndex = findNextAvailableInstructionTimeSlot(schedule, firstPossibleSlot,&#xD;
								flowNodeIndex, index, nTx, previousNodeInstruction, currentNodeInstruction,&#xD;
								SLEEP_INSTRUCTION, realtimeHART, optimizationRequested, nodeIndex.get(currentNodeName),&#xD;
								nodeIndex.get(snk));&#xD;
						if (instructionIndex >= schedule.size()) { // instructionIndex is beyond current&#xD;
																	// schedule length. Increase schedule and&#xD;
																	// channelsAvailable tables&#xD;
							for (int i = schedule.size(); i &lt;= instructionIndex; i++) {&#xD;
								var newInstructionTimeSlot = new InstructionTimeSlot(nNodes, SLEEP_INSTRUCTION); // create&#xD;
																													// a&#xD;
																													// time&#xD;
																													// slot&#xD;
																													// for&#xD;
																													// nNodes,&#xD;
																													// each&#xD;
																													// initialized&#xD;
																													// with&#xD;
																													// a&#xD;
																													// SLEEP_INSTRUCTION&#xD;
								schedule.add(newInstructionTimeSlot);&#xD;
								channelsAvailable.addNewChannelSet(); // need make sure we have channels available&#xD;
																		// for all slots. instructionIndex may be >&#xD;
																		// initialized size of array because of&#xD;
																		// phases...&#xD;
							}&#xD;
						}&#xD;
						String channel = findNextAvailableChannel(schedule, instructionNodeName, instructionIndex,&#xD;
								nodeIndex.get(currentNodeName), nodeIndex.get(snk));&#xD;
&#xD;
						// Now check if we have a valid channel. If not we need to find a new time slot&#xD;
						// further&#xD;
						// down the schedule.&#xD;
						// So, initialize the search to start at the current slot and then increase by&#xD;
						// one each&#xD;
						// time we loop if the current slot&#xD;
						// Now check if we have a valid channel. If not we need to find a new time slot&#xD;
						// further&#xD;
						// down the schedule.&#xD;
						// So, initialize the search to start at the current slot and then increase by&#xD;
						// one each&#xD;
						// time we loop if the current slot&#xD;
						while (channel.equals(UNKNOWN)) { // findNextAvailableChannel will return UNKNOWN if no&#xD;
															// channel was available. In that case, we need to&#xD;
															// find a new slot for this instruction after the last&#xD;
															// index found&#xD;
							var startSearchIndex = instructionIndex + 1;&#xD;
							instructionIndex = findNextAvailableInstructionTimeSlot(schedule, startSearchIndex,&#xD;
									flowNodeIndex, index, nTx, previousNodeInstruction, currentNodeInstruction,&#xD;
									SLEEP_INSTRUCTION, realtimeHART, optimizationRequested,&#xD;
									nodeIndex.get(currentNodeName), nodeIndex.get(snk));&#xD;
							if (instructionIndex >= schedule.size()) { // instructionIndex is beyond current&#xD;
																		// schedule lenght. Increase schedule and&#xD;
																		// channelsAvailable tables&#xD;
								for (int i = schedule.size(); i &lt;= instructionIndex; i++) {&#xD;
									var newInstructionTimeSlot = new InstructionTimeSlot(nNodes, SLEEP_INSTRUCTION); // create&#xD;
																														// a&#xD;
																														// time&#xD;
																														// slot&#xD;
																														// for&#xD;
																														// nNodes,&#xD;
																														// each&#xD;
																														// initialized&#xD;
																														// with&#xD;
																														// a&#xD;
																														// SLEEP_INSTRUCTION&#xD;
									schedule.add(newInstructionTimeSlot);&#xD;
									channelsAvailable.addNewChannelSet(); // need make sure we have channels available&#xD;
																			// for all slots. instructionIndex may be >&#xD;
																			// initialized size of array because of&#xD;
																			// phases...&#xD;
								}&#xD;
							}&#xD;
							channel = findNextAvailableChannel(schedule, instructionNodeName, instructionIndex,&#xD;
									nodeIndex.get(currentNodeName), nodeIndex.get(snk));&#xD;
						}&#xD;
						workLoad.setNodeChannel(instructionNodeName, Integer.valueOf(channel));&#xD;
						if (realtimeHART) {&#xD;
							newInstruction = pushInstruction(flowName, currentNodeName, snk, channel);&#xD;
						} else {&#xD;
							newInstruction = hasPushInstruction(flowName, currentNodeName, snk, channel);&#xD;
						}&#xD;
&#xD;
						// if optimization flag is set, look to see if any optimizations are possible&#xD;
						if (optimizationRequested &amp;&amp; instructionIndex > 0) {&#xD;
							var priorInstructionTimeSlotArrayList = schedule.get(instructionIndex - 1);&#xD;
							var priorInstructionTimeSlot = priorInstructionTimeSlotArrayList&#xD;
									.toArray(new String[priorInstructionTimeSlotArrayList.size()]);&#xD;
							var priorInstruction = priorInstructionTimeSlot[nodeIndex.get(snk)]; // get&#xD;
																									// instruction&#xD;
																									// scheduled for&#xD;
																									// snk to execute&#xD;
																									// in the prior&#xD;
																									// time slot&#xD;
							if (index == (nTx - 1)) {&#xD;
								String hasSubstring = String.format(&quot;if has(%s&quot;, flowName);&#xD;
								String elseSubString = &quot;else pull(&quot;;&#xD;
								if (priorInstruction.contains(hasSubstring) &amp;&amp; !priorInstruction.contains(elseSubString)&#xD;
										&amp;&amp; !realtimeHART) {&#xD;
									// The sink node is not waiting, so add this instruction as an else to it&#xD;
									// Also need to make sure we haven't already combined a prior instruction by&#xD;
									// moving it to the else clause. May need a smater way to do this later...&#xD;
									// The combined instructions both use channels for their respective time slots!&#xD;
									// The else is being added to the prior time slot, so we need to&#xD;
									// get a new channel for that time slot and put back the channel we extraced&#xD;
									// from&#xD;
									// this time slot. And of course, clean up if any errors occur&#xD;
									// in the process&#xD;
									var instructionParametersArrayList = dsl.getInstructionParameters(priorInstruction);&#xD;
									var priorInstructionChannel = UNKNOWN;&#xD;
									if (instructionParametersArrayList.size() == 1) {&#xD;
										var instructionParameters = instructionParametersArrayList.get(0); // get a copy&#xD;
																											// of the&#xD;
																											// parameters&#xD;
										priorInstructionChannel = instructionParameters.getChannel();&#xD;
									} else { // we just checked above that the prior instruction did not have an else&#xD;
												// pull, wait, or sleep. So, there should be only one instruction here&#xD;
										String msg = String.format(&#xD;
												&quot;ERROR: More than one instruction in prior instruction string: %s&quot;,&#xD;
												priorInstruction);&#xD;
										System.err.println(msg);&#xD;
									}&#xD;
									workLoad.setNodeChannel(instructionNodeName,&#xD;
											Integer.valueOf(priorInstructionChannel));&#xD;
									channelsAvailable.addChannel(instructionIndex, channel); // return channel for&#xD;
																								// this slot&#xD;
									channel = priorInstructionChannel; // update this so that the corresponding wait&#xD;
																		// uses this channel&#xD;
									newInstruction = priorInstruction + String.format(&quot;else pull(%s: %s -> %s, #%s)&quot;,&#xD;
											flowName, currentNodeName, snk, priorInstructionChannel); // was channel&#xD;
									instructionIndex -= 1; // set instructionIndex to the priorInstruction index so we&#xD;
															// replace that slot with the new, optimized instruction&#xD;
									instructionNodeName = snk; // change currntNodeName to the snk node, which is the&#xD;
																// node name of the prior instruction&#xD;
								}&#xD;
							} else if ((flowNodeIndex == 0 &amp;&amp; index == 0 &amp;&amp; e2eFlag)&#xD;
									&amp;&amp; !(priorInstruction.contains(SLEEP_INSTRUCTION)&#xD;
											|| priorInstruction.contains(WAIT_FRAGMENT))) {&#xD;
								// We hit this case when combining the last push of one flow with the first push&#xD;
								// of&#xD;
								// a new flow--making an if has (Fi) push(Fi) else pull pull(Fi+1)&#xD;
								// print (&quot;Skipping optimization of combining \(priorInstruction) with&#xD;
								// \(newInstruction)\n&quot;)&#xD;
								// May want to add code here to combine when e2eFlag is true but need to compute&#xD;
								// new&#xD;
								// reliability values given less than 1 probablity that&#xD;
								// this first push/now pull will happen&#xD;
								// System.err.printf(&quot;New instruction is: %s\nPrior instruction is %s\n&quot;,&#xD;
								// newInstruction, priorInstruction);&#xD;
							} else { // not sure when we hit this when combining a sleep or wait() from prior flow&#xD;
										// with a new instruction&#xD;
								// Anywhere else? :-) Probably better figure it out!!&#xD;
								if (!priorInstruction.contains(ELSE_PULL_FRAGMENT)&#xD;
										&amp;&amp; !priorInstruction.contains(WAIT_FRAGMENT)&#xD;
										&amp;&amp; !priorInstruction.contains(SLEEP_INSTRUCTION) &amp;&amp; !realtimeHART) { // The sink&#xD;
																												// node&#xD;
																												// is&#xD;
																												// not&#xD;
																												// waiting,&#xD;
																												// so&#xD;
																												// add&#xD;
																												// this&#xD;
																												// instruction&#xD;
																												// as an&#xD;
																												// else&#xD;
																												// to&#xD;
																												// it&#xD;
									// Also need to make sure we haven't already combined a prior instruction by&#xD;
									// moving it to the else clause. May need a smarter way to do this later...&#xD;
									var instructionParametersArrayList = dsl.getInstructionParameters(priorInstruction);&#xD;
									var priorInstructionChannel = UNKNOWN;&#xD;
									var priorInstructionSnk = UNKNOWN;&#xD;
									if (instructionParametersArrayList.size() == 1) {&#xD;
										var instructionParameters = instructionParametersArrayList.get(0); // get a copy&#xD;
																											// of the&#xD;
																											// parameters&#xD;
										priorInstructionSnk = instructionParameters.getSnk();&#xD;
										priorInstructionChannel = instructionParameters.getChannel();&#xD;
									} else { // we just checked above that the prior instruction did not have an else&#xD;
												// pull, wait, or sleep. So, there should be only one instruction here&#xD;
										String msg = String.format(&#xD;
												&quot;ERROR: More than one instruction in prior instruction string: %s&quot;,&#xD;
												priorInstruction);&#xD;
										System.err.println(msg);&#xD;
									}&#xD;
									priorSrcInstruction = priorInstructionTimeSlot[nodeIndex.get(currentNodeName)]; // get&#xD;
																													// instruction&#xD;
																													// scheduled&#xD;
																													// for&#xD;
																													// snk/curentNodeName)&#xD;
																													// to&#xD;
																													// execute&#xD;
																													// in&#xD;
																													// the&#xD;
																													// prior&#xD;
																													// time&#xD;
									if (priorInstructionSnk.equals(currentNodeName)) { // will try to push and pull&#xD;
																						// to/from the same node, so&#xD;
																						// use the prior instruction&#xD;
																						// channel&#xD;
										newInstruction = priorInstruction + elsePullClause(flowName, currentNodeName,&#xD;
												snk, priorInstructionChannel);&#xD;
										instructionIndex -= 1; // set instructionIndex to the priorInstruction index so&#xD;
																// we replace that slot with the new, optimized&#xD;
																// instruction&#xD;
										instructionNodeName = snk; // change currntNodeName to the snk node, which is&#xD;
																	// the node name of the prior instruction&#xD;
									} else if (priorSrcInstruction.contains(SLEEP_INSTRUCTION)) { // was&#xD;
																									// !priorSrcInstruction.contains(&quot;wait(&quot;);&#xD;
																									// I think it needs&#xD;
																									// to be a sleep and&#xD;
																									// then we can add a&#xD;
																									// wait there&#xD;
										// Make sure the currentNodeName entry for this time slot has a sleep. If so,&#xD;
										// then we combine instructions with new as an else push and add wait at&#xD;
										// currentNodeName&#xD;
										workLoad.setNodeChannel(instructionNodeName,&#xD;
												Integer.valueOf(priorInstructionChannel));&#xD;
										newInstruction = priorInstruction + elsePullClause(flowName, currentNodeName,&#xD;
												snk, priorInstructionChannel); // was&#xD;
																				// channel&#xD;
										// need to change priorSrcInstruction from sleep to wait on channel&#xD;
										priorSrcInstruction = waitInstruction(priorInstructionChannel); // was channel&#xD;
										priorSrcUpdated = true; // set flag so this instruction is updated when we&#xD;
																// insert currenInstruction into the&#xD;
																// currentInstructionTimeSlot&#xD;
										instructionIndex -= 1; // set instructionIndex to the priorInstruction index so&#xD;
																// we replace that slot with the new, optimized&#xD;
																// instruction&#xD;
										instructionNodeName = snk; // change currntNodeName to the snk node, which is&#xD;
																	// the node name of the prior instruction&#xD;
									}&#xD;
								}&#xD;
							}&#xD;
						}&#xD;
						ArrayList&lt;String> currentInstructionTimeSlotArrayList; // =&#xD;
																				// schedule.get(instructionIndex);&#xD;
						String[] currentInstructionTimeSlot; // =&#xD;
																// currentInstructionTimeSlotArrayList.toArray(new&#xD;
																// String[currentInstructionTimeSlotArrayList.size()]);&#xD;
						currentNodeInstruction[index] = instructionIndex; // store the slot index for this&#xD;
																			// instruction&#xD;
						if (instructionIndex &lt; schedule.size()) {&#xD;
							currentInstructionTimeSlotArrayList = schedule.get(instructionIndex); // load current&#xD;
																									// instruction,&#xD;
																									// in case&#xD;
																									// another&#xD;
																									// instruction&#xD;
																									// is in this&#xD;
																									// time slot for&#xD;
																									// another node&#xD;
																									// that doesn't&#xD;
																									// conflict&#xD;
																									// channels&#xD;
							currentInstructionTimeSlot = currentInstructionTimeSlotArrayList&#xD;
									.toArray(new String[currentInstructionTimeSlotArrayList.size()]);&#xD;
						} else {&#xD;
							currentInstructionTimeSlotArrayList = new InstructionTimeSlot(nNodes, SLEEP_INSTRUCTION);&#xD;
							currentInstructionTimeSlot = currentInstructionTimeSlotArrayList&#xD;
									.toArray(new String[currentInstructionTimeSlotArrayList.size()]);&#xD;
						}&#xD;
						currentInstructionTimeSlot[nodeIndex.get(instructionNodeName)] = newInstruction; // an&#xD;
																											// error&#xD;
																											// finding&#xD;
																											// the&#xD;
																											// right&#xD;
																											// location&#xD;
																											// will&#xD;
																											// result&#xD;
																											// in&#xD;
																											// location&#xD;
																											// of&#xD;
																											// snk&#xD;
																											// or 0&#xD;
						if (priorSrcUpdated) {&#xD;
							currentInstructionTimeSlot[nodeIndex.get(currentNodeName)] = priorSrcInstruction; // an&#xD;
																												// error&#xD;
																												// finding&#xD;
																												// the&#xD;
																												// right&#xD;
																												// location&#xD;
																												// will&#xD;
																												// result&#xD;
																												// in&#xD;
																												// location&#xD;
																												// of&#xD;
																												// snk&#xD;
																												// or&#xD;
																												// 0&#xD;
						}&#xD;
						// If this is a basic push() then the snk node will have the initial wait&#xD;
						// instruction in&#xD;
						// its time slot. Thus, need to add the channel # to that wait&#xD;
						var snkInstruction = currentInstructionTimeSlot[nodeIndex.get(snk)]; // get instruction&#xD;
																								// scheduled for&#xD;
																								// snk to execute&#xD;
																								// in the current&#xD;
																								// time slot&#xD;
						if (snkInstruction.equals(SLEEP_INSTRUCTION)) {&#xD;
							currentInstructionTimeSlot[nodeIndex.get(snk)] = waitInstruction(channel);&#xD;
						}&#xD;
						if (flowNodeIndex > 0) {&#xD;
							var priorNodeName = nodesInFlow[flowNodeIndex - 1];// get name of prior node in the&#xD;
																				// flow (aka predecessor)&#xD;
							var possibleCombineInstruction = String.format(&quot;if has(%1$s) push(%1$s: %2$s -> %3$s, #&quot;,&#xD;
									flowName, priorNodeName, currentNodeName);&#xD;
							if (optimizationRequested &amp;&amp; !realtimeHART &amp;&amp; nTx > 1) { // One more optimization&#xD;
																						// possible: combine two&#xD;
																						// conditional pushes at the&#xD;
																						// same slot involving a&#xD;
																						// common node&#xD;
								var upstreamNodeInstruction = currentInstructionTimeSlot[nodeIndex.get(priorNodeName)];&#xD;
								var instr = hasPushInstruction(flowName, currentNodeName, snk, channel);&#xD;
								if (newInstruction.equals(instr)&#xD;
										&amp;&amp; upstreamNodeInstruction.contains(possibleCombineInstruction)&#xD;
										&amp;&amp; !upstreamNodeInstruction.contains(&quot;else&quot;)) {&#xD;
									var instructionParametersArrayList = dsl&#xD;
											.getInstructionParameters(upstreamNodeInstruction);&#xD;
									var upstreamNodeChannel = UNKNOWN;&#xD;
									if (instructionParametersArrayList.size() == 1) {&#xD;
										var instructionParameters = instructionParametersArrayList.get(0); // get a copy&#xD;
																											// of the&#xD;
																											// paramaters&#xD;
										upstreamNodeChannel = instructionParameters.getChannel();&#xD;
										// return upstreamNodeChannel to the available channels for this time slot&#xD;
										channelsAvailable.addChannel(instructionIndex, upstreamNodeChannel);&#xD;
									} else { // we just checked above that the prior instruction did not have an else&#xD;
												// pull, wait, or sleep. So, there should be only one instruction here&#xD;
										String msg = String.format(&#xD;
												&quot;ERROR: More than one instruction in upstream node  instruction string: %s&quot;,&#xD;
												upstreamNodeInstruction);&#xD;
										System.err.println(msg);&#xD;
									}&#xD;
									// use the newInstruction channel in upstream instruction that is being combined&#xD;
									// and return the upstream channel to the available channel set&#xD;
									newInstruction = newInstruction&#xD;
											+ elsePullClause(flowName, priorNodeName, currentNodeName, channel); // was&#xD;
																													// upstreamNodeChannel&#xD;
									currentInstructionTimeSlot[nodeIndex.get(instructionNodeName)] = newInstruction; // an&#xD;
																														// error&#xD;
																														// finding&#xD;
																														// the&#xD;
																														// right&#xD;
																														// location&#xD;
																														// will&#xD;
																														// result&#xD;
																														// in&#xD;
																														// location&#xD;
																														// of&#xD;
																														// snk&#xD;
																														// or&#xD;
																														// 0&#xD;
									currentInstructionTimeSlot[nodeIndex.get(priorNodeName)] = waitInstruction(channel);&#xD;
									; // an error finding the right location will result&#xD;
										// in location of snk or 0 // was&#xD;
										// upstreamNodeChannel&#xD;
								} else if (newInstruction&#xD;
										.contains(elsePullClause(flowName, priorNodeName, currentNodeName, channel))&#xD;
										&amp;&amp; currentInstructionTimeSlot[nodeIndex.get(priorNodeName)]&#xD;
												.contains(possibleCombineInstruction)) {&#xD;
									currentInstructionTimeSlot[nodeIndex.get(priorNodeName)] = waitInstruction(channel); // Replace&#xD;
																															// combined&#xD;
																															// instruction&#xD;
																															// in&#xD;
																															// prior&#xD;
																															// node&#xD;
																															// program&#xD;
																															// with&#xD;
																															// wait()&#xD;
								}&#xD;
							}&#xD;
							if (!realtimeHART &amp;&amp; nTx > 1) { // WARP schedule with multiple tx per link requested,&#xD;
															// so add 'else wait()' for down upstream node when&#xD;
															// needed&#xD;
								var upstreamNodeInstruction = currentInstructionTimeSlot[nodeIndex.get(priorNodeName)];&#xD;
								if (newInstruction.equals(hasPushInstruction(flowName, currentNodeName, snk, channel))&#xD;
										&amp;&amp; upstreamNodeInstruction.contains(possibleCombineInstruction)) {&#xD;
									String upstreamNodeChannel = getFirstChannelInInstruction(upstreamNodeInstruction);&#xD;
									newInstruction = newInstruction + elseWaitInstruction(upstreamNodeChannel); // this&#xD;
																												// node&#xD;
																												// needs&#xD;
																												// to&#xD;
																												// wait&#xD;
																												// for&#xD;
																												// upstream&#xD;
																												// node&#xD;
																												// if&#xD;
																												// message&#xD;
																												// hasn't&#xD;
																												// arrived&#xD;
									currentInstructionTimeSlot[nodeIndex.get(instructionNodeName)] = newInstruction; // an&#xD;
																														// error&#xD;
																														// finding&#xD;
																														// the&#xD;
																														// right&#xD;
																														// location&#xD;
																														// will&#xD;
																														// result&#xD;
																														// in&#xD;
																														// location&#xD;
																														// of&#xD;
																														// snk&#xD;
																														// or&#xD;
																														// 0&#xD;
									// Don't replace the push instruction in the upstream node in this case, because&#xD;
									// we added the else in this nodes time slot instead&#xD;
								}&#xD;
							}&#xD;
						}&#xD;
						var timeSlot = new InstructionTimeSlot(currentInstructionTimeSlot);&#xD;
						if (instructionIndex &lt; schedule.size()) { // This should always be the case, but check&#xD;
																	// anyway&#xD;
							schedule.set(instructionIndex, timeSlot);&#xD;
						} else {&#xD;
							schedule.add(timeSlot);&#xD;
							String msg = String.format(&#xD;
									&quot;ERROR: instructionIndex = %d > schedule length = %d. Appended instruction to avoid crash or throw...&quot;,&#xD;
									instructionIndex, schedule.size());&#xD;
							System.err.println(msg);&#xD;
							System.err.println(&#xD;
									&quot;\tProbably due to a flow having a phase > 0. Need to addjust schedule to have one hyperperiod as a startup period in this case&quot;);&#xD;
						}&#xD;
						flowLastInstruction = instructionIndex;&#xD;
						if (index == 0) {&#xD;
							FlowSrcInstructionTimeSlot = instructionIndex; // Store the time slot in which the&#xD;
																			// flow's src node first transmits&#xD;
						}&#xD;
					}&#xD;
					previousNodeInstruction = currentNodeInstruction; // copy current to previous node...don't&#xD;
																		// worry about clearing&#xD;
																		// currentNodeInstrucitons; will be set&#xD;
																		// in loop&#xD;
				}&#xD;
				Integer latency = flowLastInstruction - (flowPhase + (instance * flowPeriod)) + 1;&#xD;
				String latencyMsg = String.format(&quot;Maximum latency for %s:%d is %d\n&quot;, flowName, instance, latency);&#xD;
				if (verbose) {&#xD;
					System.out.printf(latencyMsg);&#xD;
				}&#xD;
				if (latency > flowDeadline) {&#xD;
					String deadlineMsg = String.format(&#xD;
							&quot;WARNING: This workload is not schedulable: Flow %s:%d latency %d > deadline %d\n&quot;,&#xD;
							flowName, instance, latency, flowDeadline);&#xD;
					deadlineMisses.add(deadlineMsg);&#xD;
					// System.out.printf(deadlineMsg);&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		setSchedule(schedule); // store the schedule built&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23UjHbhDEe2QK54y_oSyxw" name="waitInstruction" specification="_2p0SgrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23UjHrhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23UjH7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>var size = channel.length();&#xD;
		if (!Utilities.isInteger(channel)) {&#xD;
			System.out.println(&quot;channel length is &quot; + String.valueOf(size));&#xD;
			System.err.println(&quot;ERROR: channel is not an Integer: &quot; + channel);&#xD;
		}&#xD;
		return String.format(&quot;wait(#%s)&quot;, channel);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23UjILhDEe2QK54y_oSyxw" name="elseWaitInstruction" specification="_2p0ShbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23UjIbhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23UjIrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>var size = channel.length();&#xD;
		if (!Utilities.isInteger(channel)) {&#xD;
			System.err.println(&quot;ERROR: channel is not an Integer: &quot; + channel);&#xD;
			System.err.println(&quot;\t channel size is not an Integer: &quot; + String.valueOf(size));&#xD;
		}&#xD;
		return String.format(&quot; else wait(#%s)&quot;, channel);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23UjI7hDEe2QK54y_oSyxw" name="elsePullClause" specification="_2p05krhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23UjJLhDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23UjJbhDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23UjJrhDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23UjJ7hDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23UjKLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>return String.format(&quot; else pull(%s: %s -> %s, #%s)&quot;, flow, src, snk, channel);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23UjKbhDEe2QK54y_oSyxw" name="hasPushInstruction" specification="_2p05mLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23UjKrhDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23UjK7hDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23UjLLhDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23UjLbhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23UjLrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>return String.format(&quot;if has(%1$s) push(%1$s: %2$s -> %3$s, #%4$s)&quot;, flow, src, snk, channel);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VKELhDEe2QK54y_oSyxw" name="pushInstruction" specification="_2p05nrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VKEbhDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKErhDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKE7hDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKFLhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKFbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>return String.format(&quot;push(%1$s: %2$s -> %3$s, #%4$s)&quot;, flow, src, snk, channel);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VKFrhDEe2QK54y_oSyxw" name="getFirstChannelInInstruction" specification="_2p1go7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VKF7hDEe2QK54y_oSyxw" name="Instruction">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKGLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>var beginIndex = Instruction.indexOf('#') + 1; // get index of the start of the channel #&#xD;
		var endIndex = Instruction.indexOf(')', beginIndex); // get index of the last character of the&#xD;
																// channel #&#xD;
		var channel = Instruction.substring(beginIndex, endIndex); // this substring has the 1st channel&#xD;
		return channel;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VKGbhDEe2QK54y_oSyxw" name="findNextAvailableInstructionTimeSlot" specification="_20q3prhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VKGrhDEe2QK54y_oSyxw" name="schedule" type="_2p-DgLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23VKG7hDEe2QK54y_oSyxw" name="startLocation">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKHLhDEe2QK54y_oSyxw" name="nodeInFlow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKHbhDEe2QK54y_oSyxw" name="transIndex">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKHrhDEe2QK54y_oSyxw" name="nTx">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKH7hDEe2QK54y_oSyxw" name="previousNodeInstruction">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23VKILhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKIbhDEe2QK54y_oSyxw" name="currentNodeInstruction">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23VKIrhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKI7hDEe2QK54y_oSyxw" name="sleepInstruction">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKJLhDEe2QK54y_oSyxw" name="realtimeHART">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKJbhDEe2QK54y_oSyxw" name="optimizationRequested">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKJrhDEe2QK54y_oSyxw" name="srcNodeIndex">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKJ7hDEe2QK54y_oSyxw" name="snkNodeIndex">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKKLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var currentTime = startLocation; // Make sure we don't start looking before the starting&#xD;
											// location&#xD;
		if (transIndex > 0) {&#xD;
			currentTime = Math.max(startLocation, currentNodeInstruction[transIndex - 1]); // Make sure we&#xD;
																							// don't start&#xD;
																							// looking&#xD;
																							// before the&#xD;
																							// startLocation&#xD;
																							// AND the&#xD;
																							// previous&#xD;
																							// instruction&#xD;
																							// we inserted&#xD;
		}&#xD;
		var done = false; // Flag indicating time slot search is done&#xD;
		if (realtimeHART || (nTx == 1 || nodeInFlow == 0 || transIndex >= nTx - 1)) {&#xD;
			// do the same thing for all nodes when nTx == 1 as for first node of flow when&#xD;
			// nTx == 1 and&#xD;
			// for kth retry&#xD;
			while (currentTime &lt; schedule.size() &amp;&amp; !done) {&#xD;
				var currentInstructionTimeSlot = schedule.get(currentTime);&#xD;
				if (slotIsAvailable(currentInstructionTimeSlot, srcNodeIndex, snkNodeIndex)) {&#xD;
					done = true;&#xD;
				} else {&#xD;
					currentTime += 1;&#xD;
				}&#xD;
			}&#xD;
		} else { // !reatimeHART and (nTx > 1 and nodeInFlow > 0)&#xD;
			Integer slotOffsetFromLastPreviousInstructionEntry;&#xD;
			if (transIndex >= (previousNodeInstruction.length - 1)) {&#xD;
				slotOffsetFromLastPreviousInstructionEntry = transIndex - (previousNodeInstruction.length - 1) + 1;&#xD;
				var possibleInstructionTimeSlotIndex = previousNodeInstruction[previousNodeInstruction.length - 1]&#xD;
						+ slotOffsetFromLastPreviousInstructionEntry; // same as previous node's next retry&#xD;
																		// entry&#xD;
				// or continuous past it if more attempts for this instruction&#xD;
				if (startLocation &lt; possibleInstructionTimeSlotIndex) { // make sure this time isn't earlier&#xD;
																		// than the starting location&#xD;
					// (which can also mean the start time for searching available slots due to&#xD;
					// channel&#xD;
					// unavailability)&#xD;
					currentTime = possibleInstructionTimeSlotIndex; // OK to update to this time slot index&#xD;
				}&#xD;
				done = false; // However, we need to check if the current slot is available, and if not keep&#xD;
								// searching until we find one. This happens with preemptions&#xD;
				if (!optimizationRequested) {&#xD;
					while (currentTime &lt; schedule.size() &amp;&amp; !done) {&#xD;
						var currentInstructionTimeSlot = schedule.get(currentTime);&#xD;
						if (slotIsAvailable(currentInstructionTimeSlot, srcNodeIndex, snkNodeIndex)) { // get&#xD;
																										// the&#xD;
																										// proposed&#xD;
																										// currentInstructionTimeSlot.&#xD;
																										// If&#xD;
																										// available,&#xD;
																										// done&#xD;
																										// is&#xD;
																										// true,&#xD;
																										// else&#xD;
																										// keep&#xD;
																										// checking&#xD;
																										// for a&#xD;
																										// time&#xD;
							done = true;&#xD;
						} else {&#xD;
							currentTime += 1;&#xD;
						}&#xD;
					}&#xD;
				} else {&#xD;
					// do something to support the optimization&#xD;
					while (currentTime &lt; schedule.size() &amp;&amp; !done) {&#xD;
						var currentInstructionTimeSlot = schedule.get(currentTime);&#xD;
						if (slotIsAvailable(currentInstructionTimeSlot, srcNodeIndex, snkNodeIndex)) { // get&#xD;
																										// the&#xD;
																										// proposed&#xD;
																										// currentInstructionTimeSlot.&#xD;
																										// If&#xD;
																										// available,&#xD;
																										// done&#xD;
																										// is&#xD;
																										// true,&#xD;
																										// else&#xD;
																										// keep&#xD;
																										// checking&#xD;
																										// for a&#xD;
																										// time&#xD;
							done = true;&#xD;
						} else {&#xD;
							currentTime += 1;&#xD;
						}&#xD;
					}&#xD;
				}&#xD;
			} else {&#xD;
				var possibleInstructionTimeSlotIndex = previousNodeInstruction[transIndex + 1]; // same as&#xD;
																								// previous&#xD;
																								// node's&#xD;
																								// next&#xD;
																								// retry&#xD;
																								// entry&#xD;
				if (startLocation &lt;= possibleInstructionTimeSlotIndex) { // make sure this time isn't&#xD;
																			// earlier than the starting&#xD;
																			// location&#xD;
					// (which can also mean the start time for searching available slots due to&#xD;
					// channel&#xD;
					// unavailability)&#xD;
					currentTime = possibleInstructionTimeSlotIndex; //&#xD;
				}&#xD;
				done = false; // However, we need to check if the current slot is available, and if not keep&#xD;
								// searching until we find one. This happens with preemptions&#xD;
				if (!optimizationRequested) {&#xD;
					while (currentTime &lt; schedule.size() &amp;&amp; !done) {&#xD;
						var currentInstructionTimeSlot = schedule.get(currentTime);&#xD;
						if (slotIsAvailable(currentInstructionTimeSlot, srcNodeIndex, snkNodeIndex)) { // get&#xD;
																										// the&#xD;
																										// proposed&#xD;
																										// currentInstructionTimeSlot.&#xD;
																										// If&#xD;
																										// available,&#xD;
																										// done&#xD;
																										// is&#xD;
																										// true,&#xD;
																										// else&#xD;
																										// keep&#xD;
																										// checking&#xD;
																										// for a&#xD;
																										// time&#xD;
							done = true;&#xD;
						} else {&#xD;
							currentTime += 1;&#xD;
						}&#xD;
					}&#xD;
				} else {&#xD;
					// do something to support the optimization&#xD;
					if (currentTime &lt; schedule.size()) { // First make sure we haven't exceeded the current&#xD;
															// schedule table. If so, no need to optimize.&#xD;
						// Just return current time and let caller figure out what to do.&#xD;
						var tmpInstructionTimeSlot = schedule.get(currentTime);&#xD;
						var srcInstruction = tmpInstructionTimeSlot.get(srcNodeIndex);&#xD;
						var snkInstruction = tmpInstructionTimeSlot.get(snkNodeIndex);&#xD;
						if (!srcInstruction.contains(&quot;wait(&quot;) || !snkInstruction.contains(&quot;sleep&quot;)) { // instruction&#xD;
																										// should&#xD;
																										// contain&#xD;
																										// a wait,&#xD;
																										// so we&#xD;
																										// can use&#xD;
																										// it&#xD;
																										// during&#xD;
																										// optimization.&#xD;
																										// Only a&#xD;
																										// wait&#xD;
																										// for&#xD;
																										// this&#xD;
																										// time&#xD;
																										// slot is&#xD;
																										// expected&#xD;
																										// at this&#xD;
																										// point&#xD;
							// we also need to be sure the snk is sleeping&#xD;
							// If either condition is not true, then we need to find another time slot&#xD;
							while (currentTime &lt; schedule.size() &amp;&amp; !done) {&#xD;
								var currentInstructionTimeSlot = schedule.get(currentTime);&#xD;
								if (slotIsAvailable(currentInstructionTimeSlot, srcNodeIndex, snkNodeIndex)) { // get&#xD;
																												// the&#xD;
																												// proposed&#xD;
																												// currentInstructionTimeSlot.&#xD;
																												// If&#xD;
																												// available,&#xD;
																												// done&#xD;
																												// is&#xD;
																												// true,&#xD;
																												// else&#xD;
																												// keep&#xD;
																												// checking&#xD;
																												// for&#xD;
																												// a&#xD;
																												// time&#xD;
									done = true;&#xD;
								} else {&#xD;
									currentTime += 1;&#xD;
								}&#xD;
							}&#xD;
						} else if (srcInstruction.contains(&quot;else(&quot;)) { // This should never be the case, but not&#xD;
																		// sure if it is bad...print an error&#xD;
																		// indicating the issue&#xD;
							var errorString = String.format(&#xD;
									&quot;POSSIBLE ERROR, but not sure...   At time slot %d of the schedule, &quot;, currentTime);&#xD;
							errorString += &quot;instruction for the src node contains\n   an unexpected 'else wait' instruction:&quot;;&#xD;
							errorString += srcInstruction;&#xD;
							System.err.println(errorString);&#xD;
						}&#xD;
					}&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		return currentTime;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VKKbhDEe2QK54y_oSyxw" name="slotIsAvailable" specification="_20revLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VKKrhDEe2QK54y_oSyxw" name="currentInstructionTimeSlot" type="_2pjMwLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23VKK7hDEe2QK54y_oSyxw" name="srcNodeIndex">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKLLhDEe2QK54y_oSyxw" name="snkNodeIndex">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKLbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>var vacantSlot = false; // assume slot is not vacant ----// Flag indicating time slot search is&#xD;
								// done&#xD;
		if (SLEEP_INSTRUCTION.equals(currentInstructionTimeSlot.get(srcNodeIndex))&#xD;
				&amp;&amp; SLEEP_INSTRUCTION.equals(currentInstructionTimeSlot.get(snkNodeIndex))) { // src and snk&#xD;
																								// are both&#xD;
																								// sleeping, so&#xD;
																								// slot is&#xD;
																								// available&#xD;
			vacantSlot = true;&#xD;
		}&#xD;
		return vacantSlot;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VKLrhDEe2QK54y_oSyxw" name="findNextAvailableChannel" specification="_20rewbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VKL7hDEe2QK54y_oSyxw" name="schedule" type="_2p-DgLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23VKMLhDEe2QK54y_oSyxw" name="nodeName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKMbhDEe2QK54y_oSyxw" name="currentTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKMrhDEe2QK54y_oSyxw" name="srcNodeIndex">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKM7hDEe2QK54y_oSyxw" name="snkNodeIndex">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23VKNLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>var newChannel = UNKNOWN; // indicates no channel was available. The caller will need to check&#xD;
									// this result&#xD;
&#xD;
		// create an instance of the Warp DSL class for parsing instructions&#xD;
		var dsl = new WarpDSL();&#xD;
		InstructionTimeSlot priorInstructionTimeSlot;&#xD;
&#xD;
		var channels = channelsAvailable.getChannelSet(currentTime);&#xD;
		if (currentTime > 0) { // get the prior schedule time slot to see what channels were used in&#xD;
								// that slot, which have to be avoided here&#xD;
			Integer priorTime = currentTime - 1;&#xD;
			priorInstructionTimeSlot = schedule.get(priorTime); // get a copy of the prior time slot&#xD;
			var srcPriorInstruction = priorInstructionTimeSlot.get(srcNodeIndex);&#xD;
			var snkPriorInstruction = priorInstructionTimeSlot.get(snkNodeIndex);&#xD;
&#xD;
			// extract the channels used by the src and snk nodes in the prior time slot and&#xD;
			// store them in&#xD;
			// an array&#xD;
			var instructionParametersArrayList = dsl.getInstructionParameters(srcPriorInstruction); // get&#xD;
																									// the&#xD;
																									// parameters&#xD;
																									// from&#xD;
																									// the&#xD;
																									// instruction&#xD;
																									// in&#xD;
																									// the&#xD;
																									// src&#xD;
																									// node's&#xD;
																									// prior&#xD;
																									// time&#xD;
																									// slot&#xD;
			for (int i = 0; i &lt; instructionParametersArrayList.size(); i++) {&#xD;
				var instructionParameters = instructionParametersArrayList.get(i); // get a copy of the&#xD;
																					// paramaters&#xD;
				channels.remove(instructionParameters.getChannel());&#xD;
			}&#xD;
			instructionParametersArrayList = dsl.getInstructionParameters(snkPriorInstruction); // get the&#xD;
																								// parameters&#xD;
																								// from&#xD;
																								// the&#xD;
																								// instruction&#xD;
																								// in the&#xD;
																								// snk&#xD;
																								// node's&#xD;
																								// prior&#xD;
																								// time&#xD;
																								// slot&#xD;
			for (int i = 0; i &lt; instructionParametersArrayList.size(); i++) {&#xD;
				var instructionParameters = instructionParametersArrayList.get(i); // get a copy of the&#xD;
																					// paramaters&#xD;
				channels.remove(instructionParameters.getChannel());&#xD;
			}&#xD;
		}&#xD;
		Integer channel = workLoad.getNodeChannel(nodeName); // get the last used channel for the node&#xD;
		channel++; // increment the channel because we don't use the same channel in consecutive&#xD;
					// time&#xD;
					// slots for the same node&#xD;
		if (channel >= getNumChannels()) { // valid range is 0..NumChannels-1. Reset when channel hits&#xD;
											// max&#xD;
			channel = 0;&#xD;
		}&#xD;
		var channelFound = false;&#xD;
		while (!channelFound &amp;&amp; !channels.isEmpty()) { // loop until a channel is found or we run out of&#xD;
														// channels to assign&#xD;
			var channelString = String.valueOf(channel);&#xD;
			var channelRemoved = channels.remove(channelString);&#xD;
			if (channelRemoved) {&#xD;
				// newChannel has the channel&#xD;
				newChannel = channelString;&#xD;
				channelFound = true;&#xD;
			} else {&#xD;
				// try another channel&#xD;
				channel += 1;&#xD;
				if (channel >= getNumChannels()) { // valid range is 0..NumChannels-1. Reset when channel&#xD;
													// hits max&#xD;
					channel = 0;&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		return newChannel; // returns UNKNOWN to indicate no channel found. This should never happen.&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VKNbhDEe2QK54y_oSyxw" name="selectPriority" specification="_2p2HsLhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>setScheduleSelected(ScheduleChoices.PRIORITY);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VKNrhDEe2QK54y_oSyxw" name="selectRM" specification="_2p2uwLhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>setScheduleSelected(ScheduleChoices.RM);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VKN7hDEe2QK54y_oSyxw" name="selectDM" specification="_2p2uwbhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>setScheduleSelected(ScheduleChoices.DM);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VKOLhDEe2QK54y_oSyxw" name="selectRtHART" specification="_2p2uwrhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>setScheduleSelected(ScheduleChoices.RTHART);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VKObhDEe2QK54y_oSyxw" name="setScheduleSelected" specification="_21600LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VKOrhDEe2QK54y_oSyxw" name="choice" type="_214_pbhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>switch (choice) {&#xD;
		case PRIORITY:&#xD;
			schedulerName = &quot;Priority&quot;;&#xD;
			schChoice = &quot;-Priority&quot;;&#xD;
			workLoad.setFlowsInPriorityOrder();&#xD;
			break;&#xD;
		case RM:&#xD;
			schedulerName = &quot;RateMonotonic&quot;;&#xD;
			schChoice = &quot;-RM&quot;;&#xD;
			workLoad.setFlowsInRMorder();&#xD;
			break;&#xD;
		case DM:&#xD;
			schedulerName = &quot;DeadlineMonotonic&quot;;&#xD;
			schChoice = &quot;-DM&quot;;&#xD;
			workLoad.setFlowsInDMorder();&#xD;
			break;&#xD;
		case RTHART:&#xD;
			schedulerName = &quot;RealtimeHART&quot;;&#xD;
			schChoice = &quot;-RealTimeHART&quot;;&#xD;
			workLoad.setFlowsInRealTimeHARTorder();&#xD;
			setRealTimeHartFlag(true);&#xD;
			break;&#xD;
		case CONNECTIVITY_POSET_DM:&#xD;
			schedulerName = &quot;ConnectivityPosetDM&quot;;&#xD;
			schChoice = &quot;-CPdm&quot;;&#xD;
			workLoad.setFlowsInDMorder();&#xD;
			break;&#xD;
		case CONNECTIVITY_POSET_PRIORITY:&#xD;
			schedulerName = &quot;ConnectivityPoset&quot;;&#xD;
			schChoice = &quot;-CPoset&quot;;&#xD;
			workLoad.setFlowsInPriorityOrder();&#xD;
			break;&#xD;
		case CONNECTIVITY_POSET_RM:&#xD;
			schedulerName = &quot;ConnectivityPosetRM&quot;;&#xD;
			schChoice = &quot;-CPrm&quot;;&#xD;
			workLoad.setFlowsInRMorder();&#xD;
			break;&#xD;
		case POSET_DM:&#xD;
			schedulerName = &quot;PosetDM&quot;;&#xD;
			schChoice = &quot;-PosetDM&quot;;&#xD;
			workLoad.setFlowsInDMorder();&#xD;
			break;&#xD;
		case POSET_PRIORITY:&#xD;
			schedulerName = &quot;Poset&quot;;&#xD;
			schChoice = &quot;-Poset&quot;;&#xD;
			workLoad.setFlowsInPriorityOrder();&#xD;
			break;&#xD;
		case POSET_RM:&#xD;
			schedulerName = &quot;PosetRM&quot;;&#xD;
			schChoice = &quot;-PosetDM&quot;;&#xD;
			workLoad.setFlowsInRMorder();&#xD;
			break;&#xD;
		case WARP_POSET_DM:&#xD;
			schedulerName = &quot;WarpPosetDM&quot;;&#xD;
			schChoice = &quot;-WPdm&quot;;&#xD;
			workLoad.setFlowsInDMorder();&#xD;
			break;&#xD;
		case WARP_POSET_PRIORITY:&#xD;
			schedulerName = &quot;WarpPoset&quot;;&#xD;
			schChoice = &quot;-WarpPoset&quot;;&#xD;
			workLoad.setFlowsInPriorityOrder();&#xD;
			break;&#xD;
		case WARP_POSET_RM:&#xD;
			schedulerName = &quot;WarpPosetRM&quot;;&#xD;
			schChoice = &quot;-WPrm&quot;;&#xD;
			workLoad.setFlowsInRMorder();&#xD;
			break;&#xD;
		default:&#xD;
			schedulerName = &quot;Priority&quot;;&#xD;
			schChoice = &quot;-Priority&quot;;&#xD;
			workLoad.setFlowsInPriorityOrder();&#xD;
			break;&#xD;
		}&#xD;
		SchedulerSelected = choice;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VKO7hDEe2QK54y_oSyxw" name="setSchedule" specification="_20sFwbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VKPLhDEe2QK54y_oSyxw" name="schedule" type="_2p-DgLhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>scheduleBuilt = schedule;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VKPbhDEe2QK54y_oSyxw" name="getSchedule" specification="_2p2uw7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VKPrhDEe2QK54y_oSyxw" type="_2p-DgLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return scheduleBuilt;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VKP7hDEe2QK54y_oSyxw" name="getSchedulerName" specification="_2p3V0LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VKQLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>return schedulerName;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VKQbhDEe2QK54y_oSyxw" name="getSchChoice" specification="_2p3V1bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VKQrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>return schChoice;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VKQ7hDEe2QK54y_oSyxw" name="getNumChannels" specification="_2p384bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VKRLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>return nChannels;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VxILhDEe2QK54y_oSyxw" name="getNumTransmissions" specification="_2p4j8LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VxIbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>return nTransmissions;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VxIrhDEe2QK54y_oSyxw" name="getRealTimeHartFlag" specification="_2p4j9bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VxI7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>return realTimeHARTflag;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VxJLhDEe2QK54y_oSyxw" name="setRealTimeHartFlag" specification="_2p4j97hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VxJbhDEe2QK54y_oSyxw" name="flag">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>realTimeHARTflag = flag;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VxJrhDEe2QK54y_oSyxw" name="getMinPacketReceptionRate" specification="_2p5LALhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VxJ7hDEe2QK54y_oSyxw" type="_21600rhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return workLoad.getMinPacketReceptionRate();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VxKLhDEe2QK54y_oSyxw" name="getE2e" specification="_2p5LBLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VxKbhDEe2QK54y_oSyxw" type="_21600rhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return workLoad.getE2e();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VxKrhDEe2QK54y_oSyxw" name="getName" specification="_2p5LCLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VxK7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>return workLoad.getName();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VxLLhDEe2QK54y_oSyxw" name="getOptimizationFlag" specification="_2p5yFLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VxLbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>return optimizationRequested;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VxLrhDEe2QK54y_oSyxw" name="deadlineMisses" specification="_2p5yGbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VxL7hDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return deadlineMisses;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VxMLhDEe2QK54y_oSyxw" name="getNumFaults" specification="_2p6ZILhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VxMbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>return workLoad.getNumFaults();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VxMrhDEe2QK54y_oSyxw" name="getNodeMapIndex" specification="_2p6ZJbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VxM7hDEe2QK54y_oSyxw" type="_2z4NcLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>var orderedNodes = workLoad.getNodeNamesOrderedAlphabetically(); // create an array of node&#xD;
																			// names&#xD;
		// sorted alphabetically&#xD;
		var nodeIndexMap = new HashMap&lt;String, Integer>(); // create a new mapping from node names to&#xD;
															// index in schedule&#xD;
		// table&#xD;
		var nNodes = orderedNodes.length;&#xD;
		for (int index = 0; index &lt; nNodes; index++) { // set up the node to index mapping&#xD;
			var name = orderedNodes[index];&#xD;
			nodeIndexMap.put(name, index); // add name, index mapping to NodeIndex map&#xD;
		}&#xD;
		return nodeIndexMap;&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2p0SgLhDEe2QK54y_oSyxw" name="toWorkLoad" method="_23UjGLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23pTKrhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Returns the workload of the program object.&lt;/h1>&#xD;
	 * &lt;p>A workload contains all of the flows.&lt;/p>&#xD;
	 * &#xD;
	 * @return workload</body>
                </ownedComment>
                <ownedParameter xmi:id="_20q3pbhDEe2QK54y_oSyxw" type="_2q5QkLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2p0SgbhDEe2QK54y_oSyxw" name="buildOriginalProgram" method="_23UjHLhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2p0SgrhDEe2QK54y_oSyxw" name="waitInstruction" visibility="private" method="_23UjHbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2p0Sg7hDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2p0ShLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2p0ShbhDEe2QK54y_oSyxw" name="elseWaitInstruction" visibility="private" method="_23UjILhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2p05kLhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2p05kbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2p05krhDEe2QK54y_oSyxw" name="elsePullClause" visibility="private" method="_23UjI7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2p05k7hDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2p05lLhDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2p05lbhDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2p05lrhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2p05l7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2p05mLhDEe2QK54y_oSyxw" name="hasPushInstruction" visibility="private" method="_23UjKbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2p05mbhDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2p05mrhDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2p05m7hDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2p05nLhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2p05nbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2p05nrhDEe2QK54y_oSyxw" name="pushInstruction" visibility="private" method="_23VKELhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2p05n7hDEe2QK54y_oSyxw" name="flow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2p05oLhDEe2QK54y_oSyxw" name="src">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2p1goLhDEe2QK54y_oSyxw" name="snk">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2p1gobhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2p1gorhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2p1go7hDEe2QK54y_oSyxw" name="getFirstChannelInInstruction" visibility="private" method="_23VKFrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2p1gpLhDEe2QK54y_oSyxw" name="Instruction">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2p1gpbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2p2HsLhDEe2QK54y_oSyxw" name="selectPriority" method="_23VKNbhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2p2uwLhDEe2QK54y_oSyxw" name="selectRM" method="_23VKNrhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2p2uwbhDEe2QK54y_oSyxw" name="selectDM" method="_23VKN7hDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2p2uwrhDEe2QK54y_oSyxw" name="selectRtHART" method="_23VKOLhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2p2uw7hDEe2QK54y_oSyxw" name="getSchedule" method="_23VKPbhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23pTK7hDEe2QK54y_oSyxw">
                  <body>&lt;h1>Returns the schedule for the networks messages.&lt;/h1>&#xD;
	 * &#xD;
	 * @return scheduleBuilt A ProgramSchedule object</body>
                </ownedComment>
                <ownedParameter xmi:id="_20sFw7hDEe2QK54y_oSyxw" type="_2p-DgLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2p3V0LhDEe2QK54y_oSyxw" name="getSchedulerName" method="_23VKP7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2p3V0bhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2p3V1bhDEe2QK54y_oSyxw" name="getSchChoice" method="_23VKQbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2p384LhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2p384bhDEe2QK54y_oSyxw" name="getNumChannels" method="_23VKQ7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2p384rhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2p4j8LhDEe2QK54y_oSyxw" name="getNumTransmissions" method="_23VxILhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2p4j8bhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2p4j9bhDEe2QK54y_oSyxw" name="getRealTimeHartFlag" visibility="private" method="_23VxIrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2p4j9rhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2p4j97hDEe2QK54y_oSyxw" name="setRealTimeHartFlag" visibility="private" method="_23VxJLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2p4j-LhDEe2QK54y_oSyxw" name="flag">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2p5LALhDEe2QK54y_oSyxw" name="getMinPacketReceptionRate" method="_23VxJrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_217b4bhDEe2QK54y_oSyxw" type="_21600rhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2p5LBLhDEe2QK54y_oSyxw" name="getE2e" method="_23VxKLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_217b4rhDEe2QK54y_oSyxw" type="_21600rhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2p5LCLhDEe2QK54y_oSyxw" name="getName" method="_23VxKrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2p5yELhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2p5yFLhDEe2QK54y_oSyxw" name="getOptimizationFlag" method="_23VxLLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2p5yFbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2p5yGbhDEe2QK54y_oSyxw" name="deadlineMisses" method="_23VxLrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20sFxLhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2p6ZILhDEe2QK54y_oSyxw" name="getNumFaults" method="_23VxMLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2p6ZIbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2p6ZJbhDEe2QK54y_oSyxw" name="getNodeMapIndex" method="_23VxMrhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23pTLLhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Returns a mapping of the program's workload's nodes to an index.&lt;/h1>&#xD;
	 * &lt;p>A Hashmap is returned that maps a Node to an index number. The lower the number,&#xD;
	 * the further to the front of the alphabet the node is.&lt;/p>&#xD;
	 * &#xD;
	 * @return nodeIndexMap from Strings representing node names to Integers for their alphabetical order</body>
                </ownedComment>
                <ownedParameter xmi:id="_217b47hDEe2QK54y_oSyxw" type="_2z4NcLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20q3oLhDEe2QK54y_oSyxw" name="setDefaultParameters" visibility="private" method="_23UjE7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20q3obhDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20q3orhDEe2QK54y_oSyxw" name="nChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20q3o7hDEe2QK54y_oSyxw" name="verbose">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20q3pLhDEe2QK54y_oSyxw" name="reportLatency">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20q3prhDEe2QK54y_oSyxw" name="findNextAvailableInstructionTimeSlot" visibility="private" method="_23VKGbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20q3p7hDEe2QK54y_oSyxw" name="schedule" type="_2p-DgLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20q3qLhDEe2QK54y_oSyxw" name="startLocation">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20q3qbhDEe2QK54y_oSyxw" name="nodeInFlow">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20resLhDEe2QK54y_oSyxw" name="transIndex">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20resbhDEe2QK54y_oSyxw" name="nTx">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20resrhDEe2QK54y_oSyxw" name="previousNodeInstruction">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_20reurhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20res7hDEe2QK54y_oSyxw" name="currentNodeInstruction">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_20reu7hDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20retLhDEe2QK54y_oSyxw" name="sleepInstruction">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20retbhDEe2QK54y_oSyxw" name="realtimeHART">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20retrhDEe2QK54y_oSyxw" name="optimizationRequested">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20ret7hDEe2QK54y_oSyxw" name="srcNodeIndex">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20reuLhDEe2QK54y_oSyxw" name="snkNodeIndex">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20reubhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20revLhDEe2QK54y_oSyxw" name="slotIsAvailable" visibility="private" method="_23VKKbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20revbhDEe2QK54y_oSyxw" name="currentInstructionTimeSlot" type="_2pjMwLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20revrhDEe2QK54y_oSyxw" name="srcNodeIndex">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20rev7hDEe2QK54y_oSyxw" name="snkNodeIndex">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20rewLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20rewbhDEe2QK54y_oSyxw" name="findNextAvailableChannel" visibility="private" method="_23VKLrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20rewrhDEe2QK54y_oSyxw" name="schedule" type="_2p-DgLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20rew7hDEe2QK54y_oSyxw" name="nodeName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20rexLhDEe2QK54y_oSyxw" name="currentTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20rexbhDEe2QK54y_oSyxw" name="srcNodeIndex">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20rexrhDEe2QK54y_oSyxw" name="snkNodeIndex">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20sFwLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20sFwbhDEe2QK54y_oSyxw" name="setSchedule" visibility="private" method="_23VKO7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20sFwrhDEe2QK54y_oSyxw" name="schedule" type="_2p-DgLhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_215msbhDEe2QK54y_oSyxw" name="Program" visibility="package" method="_23UjB7hDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_215mt7hDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_215muLhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_215msrhDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_215ms7hDEe2QK54y_oSyxw" name="nChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_215mtLhDEe2QK54y_oSyxw" name="choice" type="_214_pbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_215mtbhDEe2QK54y_oSyxw" name="verbose">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_215mtrhDEe2QK54y_oSyxw" name="reportLatency">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_215mubhDEe2QK54y_oSyxw" type="_2pzEYbhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_215murhDEe2QK54y_oSyxw" name="Program" visibility="package" method="_23UjDrhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_216Nw7hDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_216NxLhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_216NwLhDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_216NwbhDEe2QK54y_oSyxw" name="nChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_216NwrhDEe2QK54y_oSyxw" name="choice" type="_214_pbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_216NxbhDEe2QK54y_oSyxw" type="_2pzEYbhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_216NxrhDEe2QK54y_oSyxw" name="buildProgram" method="_23UjGrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_216Nx7hDEe2QK54y_oSyxw" name="choice" type="_214_pbhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_21600LhDEe2QK54y_oSyxw" name="setScheduleSelected" visibility="private" method="_23VKObhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21600bhDEe2QK54y_oSyxw" name="choice" type="_214_pbhDEe2QK54y_oSyxw"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2p-DgLhDEe2QK54y_oSyxw" name="ProgramSchedule">
              <generalization xmi:id="_20tT4LhDEe2QK54y_oSyxw" general="_2qavcbhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22v7QLhDEe2QK54y_oSyxw" 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="_22v7QbhDEe2QK54y_oSyxw" value="1L"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23VxNLhDEe2QK54y_oSyxw" name="ProgramSchedule" specification="_2p-qkLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23VxNbhDEe2QK54y_oSyxw" type="_2p-DgLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23WYMLhDEe2QK54y_oSyxw" name="ProgramSchedule" specification="_2p-qlLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23WYMbhDEe2QK54y_oSyxw" name="row">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23WYMrhDEe2QK54y_oSyxw" name="column">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23WYM7hDEe2QK54y_oSyxw" type="_2p-DgLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(row,column);&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2p-qkLhDEe2QK54y_oSyxw" name="ProgramSchedule" method="_23VxNLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2p-qkbhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2p-qkrhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2p-qk7hDEe2QK54y_oSyxw" type="_2p-DgLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2p-qlLhDEe2QK54y_oSyxw" name="ProgramSchedule" visibility="package" method="_23WYMLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2p-ql7hDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2p-qmLhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2p-qlbhDEe2QK54y_oSyxw" name="row">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2p-qlrhDEe2QK54y_oSyxw" name="column">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2p-qmbhDEe2QK54y_oSyxw" type="_2p-DgLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2p_RoLhDEe2QK54y_oSyxw" name="ProgramVisualization">
              <ownedComment xmi:id="_23pTLbhDEe2QK54y_oSyxw">
                <body>ProgramVisualization is a class that compiles data and organizes it in a&#xD;
easily readable manner using a series of methods to create different aspects&#xD;
of the visualization&#xD;
 *</body>
              </ownedComment>
              <generalization xmi:id="_20t687hDEe2QK54y_oSyxw" general="_2qirQLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22wiULhDEe2QK54y_oSyxw" name="SOURCE_SUFFIX" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22wiUbhDEe2QK54y_oSyxw" value="&quot;.dsl&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22wiUrhDEe2QK54y_oSyxw" name="sourceCode" visibility="private" type="_2p-DgLhDEe2QK54y_oSyxw" association="_24Ew8bhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22wiVLhDEe2QK54y_oSyxw" name="program" visibility="private" type="_2pzEYbhDEe2QK54y_oSyxw" association="_24Ew9LhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22wiVrhDEe2QK54y_oSyxw" name="deadlinesMet" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23WYNLhDEe2QK54y_oSyxw" name="displayVisualization" specification="_2p_4sLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23WYNbhDEe2QK54y_oSyxw" type="_2pe7ULhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return new GuiVisualization(createTitle(), createColumnHeader(), createVisualizationData());&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23WYNrhDEe2QK54y_oSyxw" name="createHeader" specification="_2p_4tLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23WYN7hDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>Description header = new Description();&#xD;
&#xD;
		header.add(createTitle());&#xD;
		header.add(String.format(&quot;Scheduler Name: %s\n&quot;, program.getSchedulerName()));&#xD;
&#xD;
		/*&#xD;
		 * The following parameters are output based on a special schedule or the fault&#xD;
		 * model&#xD;
		 */&#xD;
		if (program.getNumFaults() > 0) { // only specify when deterministic fault model is assumed&#xD;
			header.add(String.format(&quot;numFaults: %d\n&quot;, program.getNumFaults()));&#xD;
		}&#xD;
		header.add(String.format(&quot;M: %s\n&quot;, String.valueOf(program.getMinPacketReceptionRate())));&#xD;
		header.add(String.format(&quot;E2E: %s\n&quot;, String.valueOf(program.getE2e())));&#xD;
		header.add(String.format(&quot;nChannels: %d\n&quot;, program.getNumChannels()));&#xD;
		return header;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23WYOLhDEe2QK54y_oSyxw" name="createFooter" specification="_2qAfw7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23WYObhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>Description footer = new Description();&#xD;
		String deadlineMsg = null;&#xD;
&#xD;
		if (deadlinesMet) {&#xD;
			deadlineMsg = &quot;All flows meet their deadlines\n&quot;;&#xD;
		} else {&#xD;
			deadlineMsg = &quot;WARNING: NOT all flows meet their deadlines. See deadline analysis report.\n&quot;;&#xD;
		}&#xD;
		footer.add(String.format(&quot;// %s&quot;, deadlineMsg));&#xD;
		return footer;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23WYOrhDEe2QK54y_oSyxw" name="createColumnHeader" specification="_2qBG0rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23WYO7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23WYPLhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <language>java</language>
                <body>var orderedNodes = program.toWorkLoad().getNodeNamesOrderedAlphabetically();&#xD;
		String[] columnNames = new String[orderedNodes.length + 1];&#xD;
		columnNames[0] = &quot;Time Slot&quot;; // add the Time Slot column header first&#xD;
		/* loop through the node names, adding each to the header */&#xD;
		for (int i = 0; i &lt; orderedNodes.length; i++) {&#xD;
			columnNames[i + 1] = orderedNodes[i];&#xD;
		}&#xD;
		return columnNames;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23WYPbhDEe2QK54y_oSyxw" name="createVisualizationData" specification="_2qBG2bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23WYPrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23WYP7hDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <language>java</language>
                <body>if (visualizationData == null) {&#xD;
			int numRows = sourceCode.getNumRows();&#xD;
			int numColumns = sourceCode.getNumColumns();&#xD;
			visualizationData = new String[numRows][numColumns + 1];&#xD;
&#xD;
			for (int row = 0; row &lt; numRows; row++) {&#xD;
				visualizationData[row][0] = String.format(&quot;%s&quot;, row);&#xD;
				for (int column = 0; column &lt; numColumns; column++) {&#xD;
					visualizationData[row][column + 1] = sourceCode.get(row, column);&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		return visualizationData;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23WYQLhDEe2QK54y_oSyxw" name="createTitle" specification="_2qBt5rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23WYQbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>return String.format(&quot;WARP program for graph %s\n&quot;, program.getName());&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2p_4sLhDEe2QK54y_oSyxw" name="displayVisualization" method="_23WYNLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20t68LhDEe2QK54y_oSyxw" type="_2pe7ULhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2p_4tLhDEe2QK54y_oSyxw" name="createHeader" visibility="protected" method="_23WYNrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20t68bhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qAfw7hDEe2QK54y_oSyxw" name="createFooter" visibility="protected" method="_23WYOLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20t68rhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qBG0rhDEe2QK54y_oSyxw" name="createColumnHeader" visibility="protected" method="_23WYOrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2qBG07hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2qBG1LhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2qBG2bhDEe2QK54y_oSyxw" name="createVisualizationData" visibility="protected" method="_23WYPbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2qBt4LhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2qBt4bhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2qBt5rhDEe2QK54y_oSyxw" name="createTitle" visibility="private" method="_23WYQLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23p6MLhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Creates title for visualization.&lt;/h1>&#xD;
	 * &lt;p>&#xD;
	 * Creates a basic title for the graph, displaying the correct name for whatever&#xD;
	 * graph is used.&#xD;
	 * &lt;/p>&#xD;
	 * &#xD;
	 * @return the title of the graph as a String.</body>
                </ownedComment>
                <ownedParameter xmi:id="_2qBt57hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qCU8LhDEe2QK54y_oSyxw" name="ReleaseTimeComparator">
              <interfaceRealization xmi:id="_218qALhDEe2QK54y_oSyxw" client="_2qCU8LhDEe2QK54y_oSyxw" supplier="_20IsILhDEe2QK54y_oSyxw" contract="_20IsILhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23WYQrhDEe2QK54y_oSyxw" name="compare" specification="_219RELhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23WYQ7hDEe2QK54y_oSyxw" name="obj1" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23WYRLhDEe2QK54y_oSyxw" name="obj2" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23WYRbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>var result = obj1.releaseTimeComparison(obj2);&#xD;
		if (result == 0) {&#xD;
			// tied for priority, so break tie on release time&#xD;
			result = obj1.priorityComparison(obj2);&#xD;
		}&#xD;
		return result; // 0 => tie on priority and release time&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_219RELhDEe2QK54y_oSyxw" name="compare" method="_23WYQrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_219REbhDEe2QK54y_oSyxw" name="obj1" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_219RErhDEe2QK54y_oSyxw" name="obj2" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_219RE7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qC8AbhDEe2QK54y_oSyxw" name="ReleaseTimeQueue">
              <generalization xmi:id="_2qEKIrhDEe2QK54y_oSyxw" general="_2qEKILhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22xJYLhDEe2QK54y_oSyxw" 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="_22xJYbhDEe2QK54y_oSyxw" value="1L"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23WYRrhDEe2QK54y_oSyxw" name="ReleaseTimeQueue" specification="_2qDjEbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23WYR7hDEe2QK54y_oSyxw" type="_2qC8AbhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(1, new ReleaseTimeComparator&lt;T>());&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23W_QLhDEe2QK54y_oSyxw" name="ReleaseTimeQueue" specification="_20uiALhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23W_QbhDEe2QK54y_oSyxw" name="schedulableObjects" type="_20lYErhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23W_QrhDEe2QK54y_oSyxw" type="_2qC8AbhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(new ReleaseTimeComparator&lt;T>());&#xD;
		this.addAll(schedulableObjects);&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2qDjEbhDEe2QK54y_oSyxw" name="ReleaseTimeQueue" visibility="package" method="_23WYRrhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2qDjErhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2qDjE7hDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2qDjFLhDEe2QK54y_oSyxw" type="_2qC8AbhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20uiALhDEe2QK54y_oSyxw" name="ReleaseTimeQueue" visibility="package" method="_23W_QLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_20uiArhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_20uiA7hDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_20uiAbhDEe2QK54y_oSyxw" name="schedulableObjects" type="_20lYErhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20uiBLhDEe2QK54y_oSyxw" type="_2qC8AbhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qExMLhDEe2QK54y_oSyxw" name="ReliabilityAnalysis">
              <ownedComment xmi:id="_23p6MbhDEe2QK54y_oSyxw">
                <body>ReliabilityAnalysis analyzes the end-to-end reliability of messages transmitted in flows for the&#xD;
WARP system.&#xD;
&lt;p>&#xD;
&#xD;
Let M represent the Minimum Packet Reception Rate on an edge in a flow. The end-to-end&#xD;
reliability for each flow, flow:src->sink, is computed iteratively as follows:&lt;br>&#xD;
(1)The flow:src node has an initial probability of 1.0 when it is released. All other initial&#xD;
probabilities are 0.0. (That is, the reset of the nodes in the flow have an initial probability&#xD;
value of 0.0.) &lt;br>&#xD;
(2) each src->sink pair probability is computed as NewSinkNodeState = (1-M)*PrevSnkNodeState +&#xD;
M*PrevSrcNodeState &lt;br>&#xD;
This value represents the probability that the message as been received by the node SinkNode.&#xD;
Thus, the NewSinkNodeState probability will increase each time a push or pull is executed with&#xD;
SinkNode as a listener.&#xD;
&lt;p>&#xD;
&#xD;
The last probability state value for any node is the reliability of the message reaching that&#xD;
node, and the end-to-end reliability of a flow is the value of the last Flow:SinkNode&#xD;
probability.&#xD;
&lt;p>&#xD;
&#xD;
CS2820 Spring 2023 Project: Implement this class to compute the probabilities the comprise the&#xD;
ReliablityMatrix, which is the core of the file visualization that is requested in Warp.&#xD;
&lt;p>&#xD;
&#xD;
To do this, you will need to retrieve the program source, parse the instructions for each node,&#xD;
in each time slot, to extract the src and snk nodes in the instruction and then apply the message&#xD;
success probability equation defined above.&#xD;
&lt;p>&#xD;
&#xD;
I recommend using the getInstructionParameters method of the WarpDSL class to extract the src and&#xD;
snk nodes from the instruction string in a program schedule time slot.&#xD;
&#xD;
@author sgoddard&#xD;
@version 1.5&#xD;
 *</body>
              </ownedComment>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23W_Q7hDEe2QK54y_oSyxw" name="ReliabilityAnalysis" specification="_20uiBrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23W_RLhDEe2QK54y_oSyxw" name="program" type="_2pzEYbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23W_RbhDEe2QK54y_oSyxw" type="_2qExMLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>// TODO Auto-generated constructor stub&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23W_RrhDEe2QK54y_oSyxw" name="verifyReliabilities" specification="_2qExMbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23W_R7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>// TODO Auto-generated method stub&#xD;
 return true;&#xD;
  </body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2qExMbhDEe2QK54y_oSyxw" name="verifyReliabilities" method="_23W_RrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2qExMrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20uiBrhDEe2QK54y_oSyxw" name="ReliabilityAnalysis" method="_23W_Q7hDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_20uiCLhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_20uiCbhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_20uiB7hDEe2QK54y_oSyxw" name="program" type="_2pzEYbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20uiCrhDEe2QK54y_oSyxw" type="_2qExMLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_f5ECELhEEe2QK54y_oSyxw" name="getReliabilities">
                <ownedParameter xmi:id="_f5ECEbhEEe2QK54y_oSyxw" type="_2qGmYLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="_2qExM7hDEe2QK54y_oSyxw" name="ReliabilityParameters" visibility="package">
              <ownedComment xmi:id="_23p6MrhDEe2QK54y_oSyxw">
                <body>@author sgoddard&#xD;
 *</body>
              </ownedComment>
              <ownedAttribute xmi:id="_2qFYQLhDEe2QK54y_oSyxw" name="minPacketReceptionRate" type="_21600rhDEe2QK54y_oSyxw" isReadOnly="true"/>
              <ownedAttribute xmi:id="_2qFYQbhDEe2QK54y_oSyxw" name="e2e" type="_21600rhDEe2QK54y_oSyxw" isReadOnly="true"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qFYQrhDEe2QK54y_oSyxw" name="ReliabilityRow">
              <generalization xmi:id="_20vJELhDEe2QK54y_oSyxw" general="_2qJCoLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22xJYrhDEe2QK54y_oSyxw" 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="_22xJY7hDEe2QK54y_oSyxw" value="1L"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23W_SLhDEe2QK54y_oSyxw" name="ReliabilityRow" specification="_2qF_ULhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23W_SbhDEe2QK54y_oSyxw" type="_2qFYQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23W_SrhDEe2QK54y_oSyxw" name="ReliabilityRow" specification="_2194ILhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23W_S7hDEe2QK54y_oSyxw" name="numColumns">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23W_TLhDEe2QK54y_oSyxw" name="element" type="_21600rhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23W_TbhDEe2QK54y_oSyxw" type="_2qFYQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(numColumns, element);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23W_TrhDEe2QK54y_oSyxw" name="ReliabilityRow" specification="_2194JrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23W_T7hDEe2QK54y_oSyxw" name="rowArray" type="_21600rhDEe2QK54y_oSyxw">
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23W_ULhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23W_UbhDEe2QK54y_oSyxw" type="_2qFYQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(rowArray);&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2qF_ULhDEe2QK54y_oSyxw" name="ReliabilityRow" method="_23W_SLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2qF_UbhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2qF_UrhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2qF_U7hDEe2QK54y_oSyxw" type="_2qFYQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2194ILhDEe2QK54y_oSyxw" name="ReliabilityRow" visibility="package" method="_23W_SrhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2194I7hDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2194JLhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2194IbhDEe2QK54y_oSyxw" name="numColumns">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2194IrhDEe2QK54y_oSyxw" name="element" type="_21600rhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_2194JbhDEe2QK54y_oSyxw" type="_2qFYQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2194JrhDEe2QK54y_oSyxw" name="ReliabilityRow" visibility="package" method="_23W_TrhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2194KLhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_21-fMLhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2194J7hDEe2QK54y_oSyxw" name="rowArray" type="_21600rhDEe2QK54y_oSyxw">
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_21-fMrhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:id="_21-fMbhDEe2QK54y_oSyxw" type="_2qFYQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qGmYLhDEe2QK54y_oSyxw" name="ReliabilityTable">
              <generalization xmi:id="_20vwILhDEe2QK54y_oSyxw" general="_2qavcbhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22xJZLhDEe2QK54y_oSyxw" 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="_22xJZbhDEe2QK54y_oSyxw" value="1L"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23W_UrhDEe2QK54y_oSyxw" name="ReliabilityTable" specification="_2qGmYbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23W_U7hDEe2QK54y_oSyxw" type="_2qGmYLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23W_VLhDEe2QK54y_oSyxw" name="ReliabilityTable" specification="_2qGmZbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23W_VbhDEe2QK54y_oSyxw" name="row">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23W_VrhDEe2QK54y_oSyxw" name="column">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23W_V7hDEe2QK54y_oSyxw" type="_2qGmYLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super();&#xD;
		for(int i=0; i &lt; row; i++) {&#xD;
			ReliabilityRow emptyRow = new ReliabilityRow();&#xD;
			for(int j=0; j &lt; column; j++) {&#xD;
				emptyRow.add(0.0);&#xD;
			}&#xD;
			this.add(emptyRow);&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2qGmYbhDEe2QK54y_oSyxw" name="ReliabilityTable" method="_23W_UrhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2qGmYrhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2qGmY7hDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2qGmZLhDEe2QK54y_oSyxw" type="_2qGmYLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qGmZbhDEe2QK54y_oSyxw" name="ReliabilityTable" visibility="package" method="_23W_VLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2qGmaLhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2qGmabhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2qGmZrhDEe2QK54y_oSyxw" name="row">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2qGmZ7hDEe2QK54y_oSyxw" name="column">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2qGmarhDEe2QK54y_oSyxw" type="_2qGmYLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qHNcLhDEe2QK54y_oSyxw" name="ReliabilityVisualization">
              <ownedComment xmi:id="_23p6M7hDEe2QK54y_oSyxw">
                <body>ReliabilityVisualization creates the visualizations for&#xD;
the reliability analysis of the WARP program. &lt;p>&#xD;
&#xD;
CS2820 Spring 2023 Project: Implement this class to create&#xD;
the file visualization that is requested in Warp.&#xD;
&#xD;
@author sgoddard&#xD;
 *</body>
              </ownedComment>
              <generalization xmi:id="_20vwIrhDEe2QK54y_oSyxw" general="_2qirQLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22xJZrhDEe2QK54y_oSyxw" name="SOURCE_SUFFIX" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22xJZ7hDEe2QK54y_oSyxw" value="&quot;.ra&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22xJaLhDEe2QK54y_oSyxw" name="OBJECT_NAME" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22xJabhDEe2QK54y_oSyxw" value="&quot;Reliability Analysis&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22xJarhDEe2QK54y_oSyxw" name="ra" visibility="private" type="_2qExMLhDEe2QK54y_oSyxw" association="_24Ew97hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qH0gLhDEe2QK54y_oSyxw" name="ReportVisualization">
              <generalization xmi:id="_20wXObhDEe2QK54y_oSyxw" general="_2qirQLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22xwcbhDEe2QK54y_oSyxw" name="SUFFIX" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22xwcrhDEe2QK54y_oSyxw" value="&quot;.txt&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22xwc7hDEe2QK54y_oSyxw" name="content" visibility="private" type="_2pKyQrhDEe2QK54y_oSyxw" association="_24FYAbhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22xwdbhDEe2QK54y_oSyxw" name="title" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23W_WLhDEe2QK54y_oSyxw" name="ReportVisualization" specification="_20vwI7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23W_WbhDEe2QK54y_oSyxw" name="fm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23W_WrhDEe2QK54y_oSyxw" name="warp" type="_2qY6QLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23W_W7hDEe2QK54y_oSyxw" name="content" type="_2pKyQrhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23W_XLhDEe2QK54y_oSyxw" name="title">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23W_XbhDEe2QK54y_oSyxw" type="_2qH0gLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(fm, warp, new String(title + &quot;Report&quot;), SUFFIX);&#xD;
		this.content = content;&#xD;
		this.title = title;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23W_XrhDEe2QK54y_oSyxw" name="visualization" specification="_2qH0gbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23W_X7hDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return createReport();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23W_YLhDEe2QK54y_oSyxw" name="createReport" specification="_2qIbk7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23W_YbhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>Description report;&#xD;
		if (content.size() > 0) {&#xD;
			report = new Description(new String (title + &quot; Report&quot;));&#xD;
			report.addAll(content);&#xD;
		} else {&#xD;
			report = new Description(new String (&quot;No &quot; + title + &quot; to report&quot;));&#xD;
		}&#xD;
		return report;&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2qH0gbhDEe2QK54y_oSyxw" name="visualization" method="_23W_XrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20wXN7hDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qIbk7hDEe2QK54y_oSyxw" name="createReport" visibility="private" method="_23W_YLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20wXOLhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20vwI7hDEe2QK54y_oSyxw" name="ReportVisualization" visibility="package" method="_23W_WLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_20wXNLhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_20wXNbhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_20wXMLhDEe2QK54y_oSyxw" name="fm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20wXMbhDEe2QK54y_oSyxw" name="warp" type="_2qY6QLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20wXMrhDEe2QK54y_oSyxw" name="content" type="_2pKyQrhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20wXM7hDEe2QK54y_oSyxw" name="title">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20wXNrhDEe2QK54y_oSyxw" type="_2qH0gLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qJCoLhDEe2QK54y_oSyxw" name="Row">
              <generalization xmi:id="_21_GRrhDEe2QK54y_oSyxw" general="_2z5bkLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22xwd7hDEe2QK54y_oSyxw" 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="_22xweLhDEe2QK54y_oSyxw" value="1L"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23W_YrhDEe2QK54y_oSyxw" name="Row" specification="_2qJpsbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23W_Y7hDEe2QK54y_oSyxw" type="_2qJCoLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23XmULhDEe2QK54y_oSyxw" name="Row" specification="_21-fM7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23XmUbhDEe2QK54y_oSyxw" name="numElements">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23XmUrhDEe2QK54y_oSyxw" name="element" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23XmU7hDEe2QK54y_oSyxw" type="_2qJCoLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super();&#xD;
		for (int i=0; i &lt; numElements; i++) {  &#xD;
			this.add(element); // create the the row initialized with element&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23XmVLhDEe2QK54y_oSyxw" name="Row" specification="_21_GQLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23XmVbhDEe2QK54y_oSyxw" name="rowArray" type="_21q9MbhDEe2QK54y_oSyxw">
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23XmVrhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23XmV7hDEe2QK54y_oSyxw" type="_2qJCoLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super();&#xD;
		for (int i=0; i &lt; rowArray.length; i++) {  &#xD;
			this.add(rowArray[i]); // create the the row initialized with rowArray&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23XmWLhDEe2QK54y_oSyxw" name="Row" specification="_2qJptbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23XmWbhDEe2QK54y_oSyxw" name="numElements">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23XmWrhDEe2QK54y_oSyxw" type="_2qJCoLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(numElements);&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2qJpsbhDEe2QK54y_oSyxw" name="Row" method="_23W_YrhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2qJpsrhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2qJps7hDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2qJptLhDEe2QK54y_oSyxw" type="_2qJCoLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qJptbhDEe2QK54y_oSyxw" name="Row" visibility="package" method="_23XmWLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2qJpt7hDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2qJpuLhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2qJptrhDEe2QK54y_oSyxw" name="numElements">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2qJpubhDEe2QK54y_oSyxw" type="_2qJCoLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_21-fM7hDEe2QK54y_oSyxw" name="Row" visibility="package" method="_23XmULhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_21-fNrhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_21-fN7hDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_21-fNLhDEe2QK54y_oSyxw" name="numElements">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_21-fNbhDEe2QK54y_oSyxw" name="element" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21-fOLhDEe2QK54y_oSyxw" type="_2qJCoLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_21_GQLhDEe2QK54y_oSyxw" name="Row" visibility="package" method="_23XmVLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_21_GQrhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_21_GQ7hDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_21_GQbhDEe2QK54y_oSyxw" name="rowArray" type="_21q9MbhDEe2QK54y_oSyxw">
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_21_GRbhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:id="_21_GRLhDEe2QK54y_oSyxw" type="_2qJCoLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qKQwLhDEe2QK54y_oSyxw" name="SchedulableObjectQueue">
              <generalization xmi:id="_2qLe4LhDEe2QK54y_oSyxw" general="_2qEKILhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22xwebhDEe2QK54y_oSyxw" 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="_22yXgLhDEe2QK54y_oSyxw" value="1L"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23XmW7hDEe2QK54y_oSyxw" name="SchedulableObjectQueue" specification="_21_tULhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23XmXLhDEe2QK54y_oSyxw" name="comparitor" type="_20IsILhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23XmXbhDEe2QK54y_oSyxw" type="_2qKQwLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(1, comparitor);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23XmXrhDEe2QK54y_oSyxw" name="SchedulableObjectQueue" specification="_21_tVrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23XmX7hDEe2QK54y_oSyxw" name="comparitor" type="_20IsILhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23XmYLhDEe2QK54y_oSyxw" name="schedulableObjects" type="_20lYErhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23XmYbhDEe2QK54y_oSyxw" type="_2qKQwLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(comparitor);&#xD;
		this.addAll(schedulableObjects);&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_21_tULhDEe2QK54y_oSyxw" name="SchedulableObjectQueue" visibility="package" method="_23XmW7hDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_21_tUrhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_21_tU7hDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_21_tUbhDEe2QK54y_oSyxw" name="comparitor" type="_20IsILhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21_tVLhDEe2QK54y_oSyxw" type="_2qKQwLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_21_tVrhDEe2QK54y_oSyxw" name="SchedulableObjectQueue" visibility="package" method="_23XmXrhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_21_tWbhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_21_tWrhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_21_tV7hDEe2QK54y_oSyxw" name="comparitor" type="_20IsILhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21_tWLhDEe2QK54y_oSyxw" name="schedulableObjects" type="_20lYErhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21_tW7hDEe2QK54y_oSyxw" type="_2qKQwLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qMF8LhDEe2QK54y_oSyxw" name="Schedule" isAbstract="true">
              <ownedComment xmi:id="_23p6NLhDEe2QK54y_oSyxw">
                <body>Schedule builds a non-preemptive, priority schedule &#xD;
for the Partially Ordered Set (Poset) using numChannels. &#xD;
It ensures, precedence constraints are preserved, and &#xD;
reports deadline misses.&#xD;
&#xD;
@author sgoddard2&#xD;
 *</body>
              </ownedComment>
              <ownedAttribute xmi:id="_22yXgbhDEe2QK54y_oSyxw" name="UNKNOWN" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22yXgrhDEe2QK54y_oSyxw" value="&quot;unknown&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22yXg7hDEe2QK54y_oSyxw" name="schedulable" visibility="protected">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22yXhbhDEe2QK54y_oSyxw" name="numChannels" visibility="protected">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22yXh7hDEe2QK54y_oSyxw" name="fakeTime" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22yXiLhDEe2QK54y_oSyxw" value="0"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22yXirhDEe2QK54y_oSyxw" name="endScheduleTime" visibility="protected">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22yXjLhDEe2QK54y_oSyxw" name="schedule" visibility="protected" type="_2qVP4LhDEe2QK54y_oSyxw" association="_24FYBLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22y-kbhDEe2QK54y_oSyxw" name="poset" visibility="protected" type="_2ps9wLhDEe2QK54y_oSyxw" association="_24FYB7hDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23XmYrhDEe2QK54y_oSyxw" name="Schedule" specification="_20w-QLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23XmY7hDEe2QK54y_oSyxw" name="poset" type="_2ps9wLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23XmZLhDEe2QK54y_oSyxw" name="numChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23XmZbhDEe2QK54y_oSyxw" type="_2qMF8LhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>this.poset = poset;&#xD;
		this.numChannels = numChannels;&#xD;
		var maxPhase = poset.getMaxPhase();&#xD;
		endScheduleTime = poset.getHyperPeriod();&#xD;
		if (maxPhase > 0) {&#xD;
			/* need to schedule longer to cover start-up period */&#xD;
			endScheduleTime = maxPhase + 2*endScheduleTime ;&#xD;
		}&#xD;
		schedule = new ScheduleTable(numChannels+1,endScheduleTime);&#xD;
		schedulable = true;&#xD;
		buildSchedule();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23XmcLhDEe2QK54y_oSyxw" name="getSchedule" specification="_2qPJQbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23XmcbhDEe2QK54y_oSyxw" type="_2qVP4LhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return schedule;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23XmcrhDEe2QK54y_oSyxw" name="buildSchedule" specification="_2qPJQrhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>var next = poset.getNextActivation();&#xD;
		while (next != null) {&#xD;
			/* Add next to the schedule if max of its release time &#xD;
			 * and end time is less than the endScheduleTime.&#xD;
			 * Otherwise, its releaseTime is >= endScheduleTime&#xD;
			 * or endTime >= currentTime, which means can't&#xD;
			 * schedule at this time.&#xD;
			 */&#xD;
			if (!addToSchedule(next)) {&#xD;
				schedulable = false;&#xD;
				reportNotSchedulable(next);&#xD;
				/* Record unschedulable element */&#xD;
				fakeSchedulingToTestRest(next);&#xD;
				next.setNextReleaseTime(next.getEndTime());&#xD;
				if (next.getReleaseTime() &lt; endScheduleTime) {&#xD;
					poset.addActivation(next);&#xD;
				}&#xD;
			} else {&#xD;
				/* update the next release time and add it back into&#xD;
				 * the priority queue&#xD;
				 */&#xD;
				next.setNextReleaseTime(next.getEndTime());&#xD;
				if (next.getReleaseTime() &lt; endScheduleTime) {&#xD;
					poset.addActivation(next);&#xD;
				}&#xD;
&#xD;
			}&#xD;
			next = poset.getNextActivation();&#xD;
		}&#xD;
		print();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Xmc7hDEe2QK54y_oSyxw" name="toProgram" specification="_2qPwULhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23XmdLhDEe2QK54y_oSyxw" type="_2p-DgLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>var nodeNames = poset.getNodesNamesOrderedAlphabetically();&#xD;
		var numNodes = nodeNames.length;&#xD;
		var program = new ProgramSchedule(endScheduleTime,numNodes);&#xD;
		CodeFragment codeFragment = null;&#xD;
		var duration = 0; // default duration for SLEEP;&#xD;
		String name = null;&#xD;
		var startTime = 0;&#xD;
		var endTime = 0;&#xD;
		HashMap&lt;String, Integer> nodeIndexMap = new HashMap&lt;>();&#xD;
		&#xD;
		if (!schedulable) {&#xD;
			/* not Schedulable, so we will not create code */&#xD;
			return program; // return empty program&#xD;
		}&#xD;
		&#xD;
		/* build the nodeIndexMap by putting nodes in alphabetic&#xD;
		 * order and then hashing its name to its rank&#xD;
		 */&#xD;
		for (int i = 0; i &lt; numNodes; i++) {&#xD;
			nodeIndexMap.put(nodeNames[i], i);&#xD;
		}&#xD;
		&#xD;
		for (int channel = 0; channel &lt; numChannels; channel++) {&#xD;
			for (int time = 0; time &lt; endScheduleTime; time++) {&#xD;
				var entry = schedule.get(channel,time);&#xD;
				if (entry == null) {&#xD;
					/* no entry here, so instruction will be SLEEP instruction */&#xD;
					codeFragment = new CodeFragment();&#xD;
					startTime = time;&#xD;
					endTime = time;&#xD;
					name = &quot;Empty&quot;;&#xD;
				} else {&#xD;
					/* create the codeFragment for this activation entry */&#xD;
					codeFragment = new CodeFragment(entry.getDelta(),entry.getEdges(),&#xD;
							entry.getCoordinators(),channel);&#xD;
					startTime = entry.getStartTime();&#xD;
					endTime = entry.getEndTime();&#xD;
					name = entry.getName();&#xD;
					duration =  endTime - startTime + 1;&#xD;
					if (duration > codeFragment.size()) {&#xD;
						/* for combination fragments, we can sometimes generate&#xD;
						 * more efficient code than originally thought. So,&#xD;
						 * update schedule by replacing the entry with null&#xD;
						 * and update the activation with the the new end time.&#xD;
						 */&#xD;
						for (int k = 0; k &lt; (duration - codeFragment.size()); k++) {&#xD;
							schedule.set(channel,endTime-k,null);&#xD;
						}&#xD;
						endTime = codeFragment.size() + startTime - 1;&#xD;
						entry.setEndTime(endTime);&#xD;
						&#xD;
					}&#xD;
				}&#xD;
				duration =  endTime - startTime + 1;&#xD;
				/* duration can be &lt; fragment size  when two activations &#xD;
				 * were combined but they had different delta values. &#xD;
				 * The larger was used, but we should make sure duration isn't&#xD;
				 * > size, else we may overwrite something. Just report for now.&#xD;
				 */&#xD;
				if (duration > codeFragment.size()) {&#xD;
					System.err.printf(&quot;activation %s: duration = %d, codeSize = %d&quot;, &#xD;
							name,duration, codeFragment.size());&#xD;
				} else if (time != startTime ){&#xD;
					System.err.printf(&quot;activation %s: time = %d, startTime = %d&quot;, &#xD;
							name, time, startTime);&#xD;
&#xD;
				} else {&#xD;
					var instructions = codeFragment.instructions();&#xD;
					var coordinator = codeFragment.getCoordinator();&#xD;
&#xD;
					if (coordinator != null) {&#xD;
						/* coordinator is null the entry is sleep,&#xD;
						 * which happens when the schedule entry was null.&#xD;
						 * We skip this entry and then replace nulls in the&#xD;
						 * program with sleep instructions at the end&#xD;
						 */&#xD;
						for (int i = 0; i &lt; duration; i++) {&#xD;
							var instr = instructions.get(i);&#xD;
							/* enter the instruciton in the program */&#xD;
							var row = time+i;&#xD;
							var column = nodeIndexMap.get(coordinator);		&#xD;
							program.set(row,column,instr);&#xD;
&#xD;
							/* get the listeners from the instruction &#xD;
							 * and insert the wait() instructions into&#xD;
							 * the program for each listener&#xD;
							 * */&#xD;
							var dsl = new WarpDSL();&#xD;
							var instructionParametersArray = dsl.getInstructionParameters(instr); &#xD;
							for (InstructionParameters fragment: instructionParametersArray) {&#xD;
								String listener = fragment.getListener();&#xD;
								if(!listener.equals(UNKNOWN)) {&#xD;
									/* need to add a wait instruction for node listener&#xD;
									 * wait(#channel)&#xD;
									 * at time,listener location of program table&#xD;
									 */&#xD;
									program.set(time+i,nodeIndexMap.get(listener),codeFragment.wait(channel));&#xD;
								}&#xD;
							}&#xD;
						}&#xD;
					}&#xD;
					time += duration-1;&#xD;
				}&#xD;
&#xD;
			}&#xD;
		}&#xD;
		replaceNullWithSleep(program);&#xD;
		return program;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23XmdbhDEe2QK54y_oSyxw" name="replaceNullWithSleep" specification="_20xlUrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23XmdrhDEe2QK54y_oSyxw" name="program" type="_2p-DgLhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>var rows = program.getNumRows();&#xD;
		var columns = program.getNumColumns();&#xD;
&#xD;
		for (int i = 0; i &lt; rows; i++) {&#xD;
			for (int j = 0; j &lt; columns; j++) {&#xD;
				var entry = program.get(i,j);&#xD;
				if (entry == null) {&#xD;
					program.set(i, j, CodeFragment.sleep());&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Xmd7hDEe2QK54y_oSyxw" name="fakeSchedulingToTestRest" specification="_20xlVLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23XmeLhDEe2QK54y_oSyxw" name="next" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>var pred = next.getPredecessor();&#xD;
		var startTime = fakeTime;&#xD;
		var channel = numChannels; // use last channel&#xD;
		if (pred != null) {&#xD;
			/* remove pred end time */&#xD;
			pred.pollEndTimes(); &#xD;
		} &#xD;
		next.setStartTime(next.getReleaseTime());&#xD;
		var duration = next.getExecutionDuration();&#xD;
		fakeTime = startTime + duration - 1;&#xD;
		if (fakeTime >= endScheduleTime) {&#xD;
			System.err.print(&quot;NOT SCHEDULABLE: CAN'T STORE ANY MORE FAKE ENTRIES&quot;);&#xD;
			print();&#xD;
		}&#xD;
		next.setEndTime(next.getReleaseTime()+next.getDeadline()-next.getPhase());&#xD;
		/* Add the endTime to the elements endTimes Q&#xD;
		 * so that we can track predecessor endTimes&#xD;
		 * and make sure successors don't start before &#xD;
		 * predecessors&#xD;
		 */&#xD;
		next.addToEndTimes(endScheduleTime); &#xD;
		/* Create a new entry, based on next, to be entered&#xD;
		 * into the scheduling tale&#xD;
		 */&#xD;
		var entry = new Activation(next, startTime);&#xD;
		for (int i = startTime; i &lt;= fakeTime; i++) {&#xD;
			/* Add this object to the schedule for the&#xD;
			 * from startTime to endTime.&#xD;
			 */&#xD;
			schedule.set(channel, i, entry);&#xD;
		}&#xD;
		fakeTime++;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23YNYLhDEe2QK54y_oSyxw" name="getChannelAndSetStartTime" specification="_20xlVrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23YNYbhDEe2QK54y_oSyxw" name="schedulableObject" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23YNYrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var time = schedulableObject.getReleaseTime();&#xD;
		var channel = numChannels; // default is no channel available&#xD;
		var endTime = endScheduleTime; // duration of the schedule&#xD;
		schedulableObject.setStartTime(endTime);&#xD;
		schedulableObject.setEndTime(endTime);&#xD;
		/* Create a flag indicating it might be possible to combine&#xD;
		 * to partitions. This flag will be used to create a channel&#xD;
		 * affinity, in case scheduler wants to combine to partitions.&#xD;
		 */&#xD;
		var pred = schedulableObject.getPredecessor();&#xD;
		if (pred != null) {&#xD;
			/* peek at the head of the endTimes for pred */&#xD;
			var predEndTime = pred.peekEndTimes();&#xD;
			if (predEndTime == null) {&#xD;
				return numChannels; // return indicates no channel/time&#xD;
			} else if (predEndTime >= time) {&#xD;
				/* can't schedule here; need to look later */&#xD;
				time = predEndTime+1;&#xD;
			} &#xD;
		}&#xD;
		var scheduleLocation = findChannelAndTime(time,schedulableObject );&#xD;
		channel = scheduleLocation.getChannel();&#xD;
		time = scheduleLocation.getTime();&#xD;
&#xD;
		if (channel != numChannels &amp;&amp; time &lt; endScheduleTime) {&#xD;
			/* Found a channel with no conflicts.&#xD;
			 * Set the object's start time to the that&#xD;
			 * time.&#xD;
			 */&#xD;
			schedulableObject.setStartTime(time);&#xD;
&#xD;
		}&#xD;
		return channel;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23YNY7hDEe2QK54y_oSyxw" name="findChannelAndTime" specification="_20xlWbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23YNZLhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23YNZbhDEe2QK54y_oSyxw" name="schedulableObject" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23YNZrhDEe2QK54y_oSyxw" type="_2qNUELhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>var channel = numChannels; // default is no channel available &#xD;
		var duration = schedulableObject.getExecutionDuration();&#xD;
		&#xD;
		while (time &lt; endScheduleTime &amp;&amp; conflictsExist(schedulableObject, time, duration )) {&#xD;
			time ++; //+= duration+1;&#xD;
		}&#xD;
		if (time >= endScheduleTime) {&#xD;
			/* no conflict time available */&#xD;
			return new ScheduleLocation(channel, time);	&#xD;
		} &#xD;
		&#xD;
		/* can schedule at current value of time, so find the best channel.&#xD;
		 * Bias toward and empty channel at near lowest end of spectrum */&#xD;
		for (int i = numChannels-1; i >= 0 ; i--) {&#xD;
			/* Start at numChannels and work down to 0&#xD;
			 * checking for conflicts and finding an&#xD;
			 * empty slot at the same time. This will&#xD;
			 * result in the lowest possible channel&#xD;
			 * being used if their are no conflicts&#xD;
			 * with any channel entries.&#xD;
			 * &#xD;
			 * This version combines entries as soon as.&#xD;
			 * possible, without looking for other, low-channel&#xD;
			 * combinations.&#xD;
			 */&#xD;
			// var entry = schedule.get(i,time);&#xD;
			if (time > 0 &amp;&amp; schedulableObject.getReleaseTime() &lt; time) {&#xD;
				var priorEntry = schedule.get(i, time-1);&#xD;
				if (priorEntry != null) {&#xD;
					var combinedDuration = priorEntry.getCombinedExecutionDuration(schedulableObject);&#xD;
					if (priorEntry.canCombine(schedulableObject) &amp;&amp; &#xD;
							noOtherChannelConflicts(i,schedulableObject, time-1) &amp;&amp;&#xD;
							isAvailable(schedulableObject,i,priorEntry.getStartTime(),combinedDuration)) {&#xD;
						channel = i;&#xD;
						time = priorEntry.getStartTime();&#xD;
						break;&#xD;
					}&#xD;
				}&#xD;
			}&#xD;
			if (isAvailable(schedulableObject, i, time, duration)) {&#xD;
				channel = i;&#xD;
			}&#xD;
&#xD;
		}&#xD;
		/* no time and channel found in interval [time, time+duration]&#xD;
		 * so, advance time and check again&#xD;
		 */&#xD;
		if (channel == numChannels) {&#xD;
			return continueSearch(time,schedulableObject);&#xD;
		} else {&#xD;
			return new ScheduleLocation(channel, time);	&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23YNZ7hDEe2QK54y_oSyxw" name="continueSearch" specification="_20xlXbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23YNaLhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23YNabhDEe2QK54y_oSyxw" name="activation" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23YNarhDEe2QK54y_oSyxw" type="_2qNUELhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return findChannelAndTime(time+1,activation);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23YNa7hDEe2QK54y_oSyxw" name="noOtherChannelConflicts" specification="_20yMYLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23YNbLhDEe2QK54y_oSyxw" name="exceptedChannel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23YNbbhDEe2QK54y_oSyxw" name="schedulableObject" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23YNbrhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23YNb7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>var result = true;&#xD;
&#xD;
		if (time >= endScheduleTime) {&#xD;
			/* not enough time left in the schedule,&#xD;
			 * so return false &#xD;
			 */&#xD;
			return false;&#xD;
		}&#xD;
		for (Integer channel = 0; channel &lt; numChannels ; channel++) {&#xD;
			var entry = schedule.get(channel,time);&#xD;
&#xD;
			if (entry != null &amp;&amp; schedulableObject != null &amp;&amp; channel != exceptedChannel) {&#xD;
				if (entry.conflictExists(schedulableObject)) {&#xD;
					result = false;&#xD;
					return result;&#xD;
				}&#xD;
			} &#xD;
		}&#xD;
		return result;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23YNcLhDEe2QK54y_oSyxw" name="conflictsExist" specification="_20yMZbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23YNcbhDEe2QK54y_oSyxw" name="obj" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23YNcrhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23YNc7hDEe2QK54y_oSyxw" name="duration">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23YNdLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>var result = false;&#xD;
&#xD;
		if (time+duration >= endScheduleTime) {&#xD;
			/* not enough time left in the schedule,&#xD;
			 * so return false &#xD;
			 */&#xD;
			return false;&#xD;
		}&#xD;
		if (duration &lt;= 0) {&#xD;
			result  = true;&#xD;
		} else {&#xD;
			for (Integer i = time; i &lt; time+duration; i++ ) {&#xD;
				for (Integer channel = 0; channel &lt; numChannels ; channel++) {&#xD;
					var entry = schedule.get(channel,i);&#xD;
					if (entry != null &amp;&amp; obj != null) {&#xD;
						if (entry.conflictExists(obj)) {&#xD;
							result = true;&#xD;
							return result;&#xD;
						}&#xD;
					} &#xD;
				}&#xD;
			}	&#xD;
		}&#xD;
		return result;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23YNdbhDEe2QK54y_oSyxw" name="freeOfCoordinatorConflicts" specification="_20yMarhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23YNdrhDEe2QK54y_oSyxw" name="obj" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23YNd7hDEe2QK54y_oSyxw" name="requestedChannel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23YNeLhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23YNebhDEe2QK54y_oSyxw" name="duration">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23YNerhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>var result = true;&#xD;
&#xD;
		if (time+(duration-1) >= endScheduleTime) {&#xD;
			/* not enough time left in the schedule,&#xD;
			 * so return false &#xD;
			 */&#xD;
			return false;&#xD;
		}&#xD;
		if (duration &lt;= 0) {&#xD;
			result  = false;&#xD;
		} else {&#xD;
			for (Integer i = time; i &lt; time+duration; i++ ) {&#xD;
				for (Integer channel = 0; channel &lt; numChannels ; channel++) {&#xD;
					var entry = schedule.get(channel,time);&#xD;
					if (entry != null &amp;&amp; obj != null) {&#xD;
						if (entry.canCombine(obj) &amp;&amp; channel != requestedChannel) {&#xD;
							result = false; // same coordinator is scheduled&#xD;
							return result;&#xD;
						}&#xD;
					} &#xD;
				}&#xD;
			}	&#xD;
		}&#xD;
		return result;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23YNe7hDEe2QK54y_oSyxw" name="isAvailable" specification="_20yMcLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23YNfLhDEe2QK54y_oSyxw" name="a1" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23YNfbhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23YNfrhDEe2QK54y_oSyxw" name="start">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23YNf7hDEe2QK54y_oSyxw" name="duration">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23YNgLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>var available = true;&#xD;
		&#xD;
		if (conflictsExist(a1,start,duration)) {&#xD;
			return false;&#xD;
		}&#xD;
		for (Integer j = start; j &lt; start+duration; j++ ) {&#xD;
			var currentEntry = schedule.get(channel,j);&#xD;
			if (currentEntry != null) {&#xD;
				if (currentEntry.canCombine(a1)) {&#xD;
					/* no conflict with this entry, and can&#xD;
					 * combine so check for combined entry time&#xD;
					 *  to see if we can combine activations&#xD;
					 */&#xD;
					var combinedDuration = currentEntry.getCombinedExecutionDuration(a1);&#xD;
					var combinedEntry = new CombinedActivation(currentEntry,a1);&#xD;
					var searchTime = currentEntry.getEndTime()+1;&#xD;
					var searchLength = combinedDuration - (duration-(j-start));&#xD;
					return isAvailable(combinedEntry, channel, searchTime, searchLength);&#xD;
				} else {&#xD;
					available = false;&#xD;
					break;&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		if (available) {&#xD;
			available = freeOfCoordinatorConflicts(a1, channel, start, duration);&#xD;
		}&#xD;
		return available;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23YNgbhDEe2QK54y_oSyxw" name="isAvailable" specification="_20yzcbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23YNgrhDEe2QK54y_oSyxw" name="a1" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23YNg7hDEe2QK54y_oSyxw" name="start">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23YNhLhDEe2QK54y_oSyxw" name="duration">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23YNhbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>var available = false;&#xD;
		&#xD;
		for (Integer channel = 0; channel &lt; numChannels; channel++) {&#xD;
			if (isAvailable(a1,channel,start,duration)) {&#xD;
			available = true;&#xD;
			break;&#xD;
			}&#xD;
		}&#xD;
		return available;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23YNhrhDEe2QK54y_oSyxw" name="timeRemaining" specification="_2qQ-cLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23YNh7hDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23YNiLhDEe2QK54y_oSyxw" name="start">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23YNibhDEe2QK54y_oSyxw" name="duration">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23YNirhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var result = duration;&#xD;
&#xD;
		var row = schedule.get(channel);&#xD;
		for (Integer i = start; i &lt; start+duration; i++, result-- ) {&#xD;
			if (row.get(i) != null) {&#xD;
				break;&#xD;
			}&#xD;
		}&#xD;
		return result;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23YNi7hDEe2QK54y_oSyxw" name="canCombineEntriesInPlace" specification="_20yzdrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23YNjLhDEe2QK54y_oSyxw" name="a1" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23YNjbhDEe2QK54y_oSyxw" name="a2" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23YNjrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>var result = false;&#xD;
		if (a1 == null || a2 == null) {&#xD;
			return false;&#xD;
		}&#xD;
		var minStartTime = Math.min(a1.getStartTime(), a2.getStartTime()); &#xD;
		var maxEndTime = Math.max(a1.getEndTime(), a2.getEndTime()); &#xD;
		&#xD;
		if (a2.canCombine(a1)) {&#xD;
			 var combinedDuration = a2.getCombinedExecutionDuration(a1);&#xD;
			 var newEndTime = minStartTime + combinedDuration - 1;&#xD;
			 if (newEndTime &lt;= maxEndTime) {&#xD;
				result = true;&#xD;
			 }&#xD;
		}&#xD;
		return result;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23YNj7hDEe2QK54y_oSyxw" name="combinedEntriesInPlace" specification="_20yzerhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23YNkLhDEe2QK54y_oSyxw" name="a1" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23YNkbhDEe2QK54y_oSyxw" name="a2" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23YNkrhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23YNk7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>var result = false;&#xD;
		if (canCombineEntriesInPlace(a1,a2)) {&#xD;
			var entry = new CombinedActivation(a1, a2);&#xD;
			var startTime = entry.getStartTime();&#xD;
			var endTime = entry.getEndTime();&#xD;
			for (int i = startTime; i &lt;= endTime; i++) {&#xD;
				/* Add this object to the schedule for the&#xD;
				 * from startTime to endTime.&#xD;
				 */&#xD;
				schedule.set(channel, i, entry);&#xD;
			}&#xD;
			result = true;&#xD;
		}&#xD;
		return result;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23YNlLhDEe2QK54y_oSyxw" name="addToSchedule" specification="_20yzf7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23YNlbhDEe2QK54y_oSyxw" name="next" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23YNlrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>var channel = getChannelAndSetStartTime(next);&#xD;
		if (channel == numChannels) {&#xD;
			return false;&#xD;
		}&#xD;
		/* found a time and channel  that are valid */&#xD;
		Activation currentEntry = null;	&#xD;
		var combineTime = endScheduleTime;&#xD;
		var startTime = next.getStartTime(); // set by getChannel()&#xD;
		var duration = next.getExecutionDuration();	&#xD;
		var endTime = startTime + duration - 1;&#xD;
		/* Check the schedule to see if we need to &#xD;
		 * combine next with a higher priority entry &#xD;
		 * in the schedule during its execution&#xD;
		 */&#xD;
		for (int i = startTime; i &lt; startTime + duration; i++) {&#xD;
			currentEntry = schedule.get(channel,i);&#xD;
			if (currentEntry != null &amp;&amp; next.canCombine(currentEntry)) {&#xD;
				/* found an entry to combine, record the time,&#xD;
				 * update the combined duration and new&#xD;
				 * endTime, then exit the loop&#xD;
				 */&#xD;
				/* need to check if combined time is available or&#xD;
				 * if we have to combine yet another entry &#xD;
				 */&#xD;
				 var endCurrentEntry = currentEntry.getEndTime();&#xD;
				 var combinedDuration = next.getCombinedExecutionDuration(currentEntry);&#xD;
				 var newEndTime = startTime + combinedDuration - 1;&#xD;
				 /* need to check to make sure there are no conflicts on other &#xD;
				  * channels for this new interval&#xD;
				  */&#xD;
				 var available = isAvailable(next, channel, startTime, combinedDuration);&#xD;
				 if (available) {	 &#xD;
					 var additionalTimeNeeded = newEndTime - endCurrentEntry;&#xD;
					 if (additionalTimeNeeded > 0) {&#xD;
						 /* see if we can combine the two existing adjacent entries&#xD;
						  * in place. If so, then try to recursively schedule next&#xD;
						  */&#xD;
						 var additionalCombine = schedule.get(channel,endCurrentEntry+1);&#xD;
						 if (additionalCombine != null) {&#xD;
							 if (!combinedEntriesInPlace(currentEntry,additionalCombine,channel)) {&#xD;
								 return false;&#xD;
							 }&#xD;
							 addToSchedule(next);&#xD;
							 return true;&#xD;
						 }&#xD;
					 }&#xD;
					 combineTime = i;&#xD;
					 duration = next.getCombinedExecutionDuration(currentEntry);&#xD;
					 endTime = startTime + duration - 1;&#xD;
					 break;&#xD;
				 }&#xD;
			}&#xD;
		}&#xD;
		next.setEndTime(endTime);&#xD;
		var responseTime = endTime - next.getReleaseTime();&#xD;
		if (responseTime > next.getDeadline()) {&#xD;
			return false; // unable to schedule this entry&#xD;
		}&#xD;
		/* Add the endTime to the elements endTimes Q&#xD;
		 * so that we can track predecessor endTimes&#xD;
		 * and make sure successors don't start before &#xD;
		 * predecessors&#xD;
		 */&#xD;
		next.addToEndTimes(endTime); &#xD;
		/* remove predecessor end time that matches this start time */&#xD;
		var pred = next.getPredecessor();&#xD;
		if (pred != null) {&#xD;
			pred.pollEndTimes(); &#xD;
		}&#xD;
		/* Create a new entry, based on next, to be entered&#xD;
		 * into the scheduling tale&#xD;
		 */&#xD;
		var entry = new Activation(next, startTime);&#xD;
		if (combineTime &lt; endScheduleTime) {&#xD;
			/* change entry to point to combinedActivation&#xD;
			 * and set startTime to the beginning of the &#xD;
			 * combined entries */&#xD;
			var combinedActivation = new CombinedActivation(currentEntry, entry);&#xD;
			entry = combinedActivation;&#xD;
			startTime = entry.getStartTime();&#xD;
			duration = entry.getExecutionDuration();&#xD;
			endTime = startTime + duration - 1;&#xD;
			entry.setEndTime(endTime);&#xD;
			next.setEndTime(endTime);&#xD;
		}&#xD;
		for (int i = startTime; i &lt;= endTime; i++) {&#xD;
			/* Add this object to the schedule for the&#xD;
			 * from startTime to endTime.&#xD;
			 */&#xD;
			schedule.set(channel, i, entry);&#xD;
		}&#xD;
		return true;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23YNl7hDEe2QK54y_oSyxw" name="reportNotSchedulable" specification="_20zagbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23YNmLhDEe2QK54y_oSyxw" name="object" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>object.print(&quot;This entry is not Schedulable:&quot;);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23YNmbhDEe2QK54y_oSyxw" name="printVerbose" specification="_2qRlgLhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>System.out.println(&quot;\nSchedule:&quot;);&#xD;
		var endSchedule = schedule.get(0).size();&#xD;
		for (int i = 0; i &lt; numChannels; i++) {&#xD;
			System.out.printf(&quot;\nChannel: %d&quot;,i);&#xD;
			var name = UNKNOWN;&#xD;
			for (int j = 0; j &lt; endSchedule; j++) {&#xD;
				var entry = schedule.get(i,j);&#xD;
				if (entry != null) {&#xD;
					var entryName = entry.getName();&#xD;
					if (!name.equals(entryName)) {&#xD;
						name = entryName;&#xD;
						entry.print(&quot;Time &quot; + j +&quot;:&quot;);&#xD;
					}&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23YNmrhDEe2QK54y_oSyxw" name="print" specification="_2qRlgbhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>System.out.printf(&quot;\nSchedule (length is %d):\n&quot;, endScheduleTime);&#xD;
		for (int i = 0; i &lt; schedule.size(); i++) {&#xD;
			System.out.printf(&quot;\nChannel: %d: &quot;,i);&#xD;
			var name = UNKNOWN;&#xD;
			var startTime = -1;&#xD;
			for (int j = 0; j &lt; endScheduleTime; j++) {&#xD;
				var entry = schedule.get(i,j);&#xD;
				if (entry != null) {&#xD;
					var entryName = entry.getName();&#xD;
					if (!name.equals(entryName) || startTime != entry.getStartTime()) {&#xD;
						/* only print out unique entries (not duplicates in the interval */&#xD;
						name = entryName;&#xD;
						startTime = entry.getStartTime();&#xD;
						System.out.printf(&quot;%s[%d,%d] &quot;, &#xD;
								name, entry.getStartTime(),entry.getEndTime());&#xD;
					} &#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		/* report the number of Activations not schedulable, if any */&#xD;
		ArrayList&lt;Activation> notSchedulable = schedule.get(numChannels);&#xD;
		var numNotSchedulable = 0; 	&#xD;
		var name = UNKNOWN;&#xD;
		var lastStartTime = -1;&#xD;
		for (int i = 0; i &lt; endScheduleTime; i++) {&#xD;
			var entry = notSchedulable.get(i);&#xD;
			if (entry != null) {&#xD;
				var entryName = entry.getName();&#xD;
				if (!name.equals(entryName) || (name.equals(entryName) &amp;&amp; lastStartTime != entry.getStartTime())) {&#xD;
					name = entryName;&#xD;
					lastStartTime = entry.getStartTime();&#xD;
					numNotSchedulable++;&#xD;
				}&#xD;
			}&#xD;
		}&#xD;
		if (numNotSchedulable > 0 ) {&#xD;
			System.out.printf(&quot;\n%d Activations were not schedulable\n&quot;, numNotSchedulable);&#xD;
		}&#xD;
		System.out.println();&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2qPJQbhDEe2QK54y_oSyxw" name="getSchedule" method="_23XmcLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23p6N7hDEe2QK54y_oSyxw">
                  <body>@return the schedule</body>
                </ownedComment>
                <ownedParameter xmi:id="_20xlULhDEe2QK54y_oSyxw" type="_2qVP4LhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qPJQrhDEe2QK54y_oSyxw" name="buildSchedule" visibility="private" method="_23XmcrhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2qPwULhDEe2QK54y_oSyxw" name="toProgram" method="_23Xmc7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20xlUbhDEe2QK54y_oSyxw" type="_2p-DgLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qQ-cLhDEe2QK54y_oSyxw" name="timeRemaining" visibility="protected" method="_23YNhrhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23p6PbhDEe2QK54y_oSyxw">
                  <body>timeRemaining returns duration minus the number of vacant slots found. &#xD;
	 * &#xD;
	 * @return duration-vacantSlots</body>
                </ownedComment>
                <ownedParameter xmi:id="_2qQ-cbhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2qQ-crhDEe2QK54y_oSyxw" name="start">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2qQ-c7hDEe2QK54y_oSyxw" name="duration">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2qQ-dLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2qRlgLhDEe2QK54y_oSyxw" name="printVerbose" method="_23YNmbhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2qRlgbhDEe2QK54y_oSyxw" name="print" method="_23YNmrhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_20w-QLhDEe2QK54y_oSyxw" name="Schedule" visibility="package" method="_23XmYrhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_20w-Q7hDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_20w-RLhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_20w-QbhDEe2QK54y_oSyxw" name="poset" type="_2ps9wLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20w-QrhDEe2QK54y_oSyxw" name="numChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20w-RbhDEe2QK54y_oSyxw" type="_2qMF8LhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20xlUrhDEe2QK54y_oSyxw" name="replaceNullWithSleep" visibility="private" method="_23XmdbhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23p6OLhDEe2QK54y_oSyxw">
                  <body>Replace all null entries in program with sleep instructions&#xD;
	 * &#xD;
	 * @param program</body>
                </ownedComment>
                <ownedParameter xmi:id="_20xlU7hDEe2QK54y_oSyxw" name="program" type="_2p-DgLhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20xlVLhDEe2QK54y_oSyxw" name="fakeSchedulingToTestRest" visibility="private" method="_23Xmd7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20xlVbhDEe2QK54y_oSyxw" name="next" type="_2oxJpLhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20xlVrhDEe2QK54y_oSyxw" name="getChannelAndSetStartTime" visibility="protected" method="_23YNYLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23p6ObhDEe2QK54y_oSyxw">
                  <body>getChannel checks for conflicts and if none, returns a free&#xD;
	 * channel. &lt;br>&#xD;
	 * If return value == numChannels, then no channel can be assigned&#xD;
	 * due to either conflicts or no availability.&#xD;
	 * @param schedulableObject&#xD;
	 * &#xD;
	 * @return available channel or numChannels when none available</body>
                </ownedComment>
                <ownedParameter xmi:id="_20xlV7hDEe2QK54y_oSyxw" name="schedulableObject" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20xlWLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20xlWbhDEe2QK54y_oSyxw" name="findChannelAndTime" visibility="protected" method="_23YNY7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20xlWrhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20xlW7hDEe2QK54y_oSyxw" name="schedulableObject" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20xlXLhDEe2QK54y_oSyxw" type="_2qNUELhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20xlXbhDEe2QK54y_oSyxw" name="continueSearch" visibility="protected" method="_23YNZ7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23p6OrhDEe2QK54y_oSyxw">
                  <body>continueSearch continues the search for a channel time.&lt;br>&#xD;
	 * The default implementation continues at time+1 by calling&#xD;
	 * findChannelAndTime(time+1,schedulableObject). This method&#xD;
	 * can be overridden to provide preemptive searches or any&#xD;
	 * other method of continuing the search.&#xD;
	 * &#xD;
	 * @param time&#xD;
	 * @param activation&#xD;
	 * @return ScheduleLocation</body>
                </ownedComment>
                <ownedParameter xmi:id="_20xlXrhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20xlX7hDEe2QK54y_oSyxw" name="activation" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20xlYLhDEe2QK54y_oSyxw" type="_2qNUELhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_20yMYLhDEe2QK54y_oSyxw" name="noOtherChannelConflicts" visibility="protected" method="_23YNa7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20yMYbhDEe2QK54y_oSyxw" name="exceptedChannel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20yMYrhDEe2QK54y_oSyxw" name="schedulableObject" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20yMY7hDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20yMZLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20yMZbhDEe2QK54y_oSyxw" name="conflictsExist" visibility="protected" method="_23YNcLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20yMZrhDEe2QK54y_oSyxw" name="obj" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20yMZ7hDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20yMaLhDEe2QK54y_oSyxw" name="duration">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20yMabhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20yMarhDEe2QK54y_oSyxw" name="freeOfCoordinatorConflicts" visibility="protected" method="_23YNdbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20yMa7hDEe2QK54y_oSyxw" name="obj" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20yMbLhDEe2QK54y_oSyxw" name="requestedChannel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20yMbbhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20yMbrhDEe2QK54y_oSyxw" name="duration">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20yMb7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20yMcLhDEe2QK54y_oSyxw" name="isAvailable" visibility="protected" method="_23YNe7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23p6O7hDEe2QK54y_oSyxw">
                  <body>isAvailable returns true if the schedule for the channel is available in the &#xD;
	 * interval [start, start+duration-1]</body>
                </ownedComment>
                <ownedParameter xmi:id="_20yMcbhDEe2QK54y_oSyxw" name="a1" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20yMcrhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20yMc7hDEe2QK54y_oSyxw" name="start">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20yMdLhDEe2QK54y_oSyxw" name="duration">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20yzcLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20yzcbhDEe2QK54y_oSyxw" name="isAvailable" visibility="protected" method="_23YNgbhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23p6PLhDEe2QK54y_oSyxw">
                  <body>isAvailable returns true if the schedule is available in the &#xD;
	 * interval [start, start+duration-1] in any channel</body>
                </ownedComment>
                <ownedParameter xmi:id="_20yzcrhDEe2QK54y_oSyxw" name="a1" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20yzc7hDEe2QK54y_oSyxw" name="start">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20yzdLhDEe2QK54y_oSyxw" name="duration">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20yzdbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20yzdrhDEe2QK54y_oSyxw" name="canCombineEntriesInPlace" visibility="private" method="_23YNi7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20yzd7hDEe2QK54y_oSyxw" name="a1" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20yzeLhDEe2QK54y_oSyxw" name="a2" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20yzebhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20yzerhDEe2QK54y_oSyxw" name="combinedEntriesInPlace" visibility="private" method="_23YNj7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20yze7hDEe2QK54y_oSyxw" name="a1" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20yzfLhDEe2QK54y_oSyxw" name="a2" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20yzfbhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_20yzfrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20yzf7hDEe2QK54y_oSyxw" name="addToSchedule" visibility="protected" method="_23YNlLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20yzgLhDEe2QK54y_oSyxw" name="next" type="_2oxJpLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_20zagLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_20zagbhDEe2QK54y_oSyxw" name="reportNotSchedulable" visibility="private" method="_23YNl7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_20zagrhDEe2QK54y_oSyxw" name="object" type="_2oxJpLhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <nestedClassifier xmi:type="uml:Class" xmi:id="_2qNUELhDEe2QK54y_oSyxw" name="ScheduleLocation" visibility="protected">
                <ownedAttribute xmi:id="_22y-k7hDEe2QK54y_oSyxw" name="channel" visibility="package">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedAttribute>
                <ownedAttribute xmi:id="_22y-lbhDEe2QK54y_oSyxw" name="time" visibility="package">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedAttribute>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23XmZrhDEe2QK54y_oSyxw" name="ScheduleLocation" specification="_2qNUEbhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23XmZ7hDEe2QK54y_oSyxw" type="_2qNUELhDEe2QK54y_oSyxw" direction="return"/>
                  <language>java</language>
                  <body>this.channel = 0;&#xD;
			this.time = 0;&#xD;
		</body>
                </ownedBehavior>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23XmaLhDEe2QK54y_oSyxw" name="ScheduleLocation" specification="_2qN7I7hDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23XmabhDEe2QK54y_oSyxw" name="channel">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                  </ownedParameter>
                  <ownedParameter xmi:id="_23XmarhDEe2QK54y_oSyxw" name="time">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                  </ownedParameter>
                  <ownedParameter xmi:id="_23Xma7hDEe2QK54y_oSyxw" type="_2qNUELhDEe2QK54y_oSyxw" direction="return"/>
                  <language>java</language>
                  <body>this.channel = channel;&#xD;
			this.time = time;&#xD;
		</body>
                </ownedBehavior>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23XmbLhDEe2QK54y_oSyxw" name="getChannel" specification="_2qOiMrhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23XmbbhDEe2QK54y_oSyxw" direction="return">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                  </ownedParameter>
                  <language>java</language>
                  <body>return channel;&#xD;
		</body>
                </ownedBehavior>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23XmbrhDEe2QK54y_oSyxw" name="getTime" specification="_2qOiNLhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23Xmb7hDEe2QK54y_oSyxw" direction="return">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                  </ownedParameter>
                  <language>java</language>
                  <body>return time;&#xD;
		</body>
                </ownedBehavior>
                <ownedOperation xmi:id="_2qNUEbhDEe2QK54y_oSyxw" name="ScheduleLocation" visibility="package" method="_23XmZrhDEe2QK54y_oSyxw">
                  <eAnnotations xmi:id="_2qN7ILhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                    <details xmi:id="_2qN7IbhDEe2QK54y_oSyxw" key="create"/>
                  </eAnnotations>
                  <ownedParameter xmi:id="_2qN7IrhDEe2QK54y_oSyxw" type="_2qNUELhDEe2QK54y_oSyxw" direction="return"/>
                </ownedOperation>
                <ownedOperation xmi:id="_2qN7I7hDEe2QK54y_oSyxw" name="ScheduleLocation" visibility="package" method="_23XmaLhDEe2QK54y_oSyxw">
                  <eAnnotations xmi:id="_2qN7JrhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                    <details xmi:id="_2qOiMLhDEe2QK54y_oSyxw" key="create"/>
                  </eAnnotations>
                  <ownedParameter xmi:id="_2qN7JLhDEe2QK54y_oSyxw" name="channel">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                  </ownedParameter>
                  <ownedParameter xmi:id="_2qN7JbhDEe2QK54y_oSyxw" name="time">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                  </ownedParameter>
                  <ownedParameter xmi:id="_2qOiMbhDEe2QK54y_oSyxw" type="_2qNUELhDEe2QK54y_oSyxw" direction="return"/>
                </ownedOperation>
                <ownedOperation xmi:id="_2qOiMrhDEe2QK54y_oSyxw" name="getChannel" visibility="protected" method="_23XmbLhDEe2QK54y_oSyxw">
                  <ownedComment xmi:id="_23p6NbhDEe2QK54y_oSyxw">
                    <body>@return the channel</body>
                  </ownedComment>
                  <ownedParameter xmi:id="_2qOiM7hDEe2QK54y_oSyxw" direction="return">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                  </ownedParameter>
                </ownedOperation>
                <ownedOperation xmi:id="_2qOiNLhDEe2QK54y_oSyxw" name="getTime" visibility="protected" method="_23XmbrhDEe2QK54y_oSyxw">
                  <ownedComment xmi:id="_23p6NrhDEe2QK54y_oSyxw">
                    <body>@return the time</body>
                  </ownedComment>
                  <ownedParameter xmi:id="_2qPJQLhDEe2QK54y_oSyxw" direction="return">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                  </ownedParameter>
                </ownedOperation>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qVP4LhDEe2QK54y_oSyxw" name="ScheduleTable">
              <generalization xmi:id="_200BkLhDEe2QK54y_oSyxw" general="_2qavcbhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22zloLhDEe2QK54y_oSyxw" 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="_22zlobhDEe2QK54y_oSyxw" value="1L"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Y0cLhDEe2QK54y_oSyxw" name="ScheduleTable" specification="_2qV28LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Y0cbhDEe2QK54y_oSyxw" type="_2qVP4LhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Y0crhDEe2QK54y_oSyxw" name="ScheduleTable" specification="_2qV29LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Y0c7hDEe2QK54y_oSyxw" name="row">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23Y0dLhDEe2QK54y_oSyxw" name="column">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23Y0dbhDEe2QK54y_oSyxw" type="_2qVP4LhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(row,column);&#xD;
		&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2qV28LhDEe2QK54y_oSyxw" name="ScheduleTable" visibility="package" method="_23Y0cLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2qV28bhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2qV28rhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2qV287hDEe2QK54y_oSyxw" type="_2qVP4LhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qV29LhDEe2QK54y_oSyxw" name="ScheduleTable" visibility="package" method="_23Y0crhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2qV297hDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2qV2-LhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2qV29bhDEe2QK54y_oSyxw" name="row">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2qV29rhDEe2QK54y_oSyxw" name="column">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2qV2-bhDEe2QK54y_oSyxw" type="_2qVP4LhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qWeALhDEe2QK54y_oSyxw" name="ScheduleTime">
              <ownedAttribute xmi:id="_22zlorhDEe2QK54y_oSyxw" name="startTime">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22zlo7hDEe2QK54y_oSyxw" name="endTime">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Y0drhDEe2QK54y_oSyxw" name="ScheduleTime" specification="_2qWeAbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Y0d7hDEe2QK54y_oSyxw" name="startTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23Y0eLhDEe2QK54y_oSyxw" name="endTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23Y0ebhDEe2QK54y_oSyxw" type="_2qWeALhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>this.startTime = startTime;&#xD;
		this.endTime = endTime;&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2qWeAbhDEe2QK54y_oSyxw" name="ScheduleTime" visibility="package" method="_23Y0drhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2qXFELhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2qXFEbhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2qWeArhDEe2QK54y_oSyxw" name="startTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2qWeA7hDEe2QK54y_oSyxw" name="endTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2qXFErhDEe2QK54y_oSyxw" type="_2qWeALhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qXFE7hDEe2QK54y_oSyxw" name="SimulatorInput">
              <ownedComment xmi:id="_23p6PrhDEe2QK54y_oSyxw">
                <body>@author sgoddard&#xD;
 *</body>
              </ownedComment>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qXsILhDEe2QK54y_oSyxw" name="SortedPeriodQueue">
              <generalization xmi:id="_2qYTMLhDEe2QK54y_oSyxw" general="_2qEKILhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22zlpLhDEe2QK54y_oSyxw" 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="_22zlpbhDEe2QK54y_oSyxw" value="1L"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Y0erhDEe2QK54y_oSyxw" name="SortedPeriodQueue" specification="_2qXsIrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Y0e7hDEe2QK54y_oSyxw" type="_2qXsILhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(1, new PeriodComparator&lt;T>());&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Y0fLhDEe2QK54y_oSyxw" name="SortedPeriodQueue" specification="_200oobhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Y0fbhDEe2QK54y_oSyxw" name="schedulableObjects" type="_20lYErhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23Y0frhDEe2QK54y_oSyxw" type="_2qXsILhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(new PeriodComparator&lt;T>());&#xD;
		this.addAll(schedulableObjects);&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2qXsIrhDEe2QK54y_oSyxw" name="SortedPeriodQueue" visibility="package" method="_23Y0erhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2qXsI7hDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2qXsJLhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2qXsJbhDEe2QK54y_oSyxw" type="_2qXsILhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_200oobhDEe2QK54y_oSyxw" name="SortedPeriodQueue" visibility="package" method="_23Y0fLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_200oo7hDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_200opLhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_200oorhDEe2QK54y_oSyxw" name="schedulableObjects" type="_20lYErhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_200opbhDEe2QK54y_oSyxw" type="_2qXsILhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="_2qY6QLhDEe2QK54y_oSyxw" name="SystemAttributes" visibility="package">
              <generalization xmi:id="_200op7hDEe2QK54y_oSyxw" general="_2qExM7hDEe2QK54y_oSyxw"/>
              <nestedClassifier xmi:type="uml:Enumeration" xmi:id="_2qY6QbhDEe2QK54y_oSyxw" name="ScheduleChoices">
                <ownedLiteral xmi:id="_2qY6Q7hDEe2QK54y_oSyxw" name="PRIORITY"/>
                <ownedLiteral xmi:id="_2qY6RLhDEe2QK54y_oSyxw" name="RM"/>
                <ownedLiteral xmi:id="_2qY6RbhDEe2QK54y_oSyxw" name="DM"/>
                <ownedLiteral xmi:id="_2qZhULhDEe2QK54y_oSyxw" name="RTHART"/>
                <ownedLiteral xmi:id="_2qZhUbhDEe2QK54y_oSyxw" name="POSET_PRIORITY"/>
                <ownedLiteral xmi:id="_2qZhUrhDEe2QK54y_oSyxw" name="POSET_RM"/>
                <ownedLiteral xmi:id="_2qZhU7hDEe2QK54y_oSyxw" name="POSET_DM"/>
                <ownedLiteral xmi:id="_2qZhVLhDEe2QK54y_oSyxw" name="WARP_POSET_PRIORITY"/>
                <ownedLiteral xmi:id="_2qZhVbhDEe2QK54y_oSyxw" name="WARP_POSET_RM"/>
                <ownedLiteral xmi:id="_2qZhVrhDEe2QK54y_oSyxw" name="WARP_POSET_DM"/>
                <ownedLiteral xmi:id="_2qZhV7hDEe2QK54y_oSyxw" name="CONNECTIVITY_POSET_PRIORITY"/>
                <ownedLiteral xmi:id="_2qZhWLhDEe2QK54y_oSyxw" name="CONNECTIVITY_POSET_RM"/>
                <ownedLiteral xmi:id="_2qZhWbhDEe2QK54y_oSyxw" name="CONNECTIVITY_POSET_DM"/>
              </nestedClassifier>
              <ownedAttribute xmi:id="_2qaIYLhDEe2QK54y_oSyxw" name="numChannels" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_2qaIYbhDEe2QK54y_oSyxw" name="numFaults" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_2qaIYrhDEe2QK54y_oSyxw" name="name" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_2qaIY7hDEe2QK54y_oSyxw" name="schedulerName" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_2qaIZLhDEe2QK54y_oSyxw" name="numTransmissions" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_2qaIZbhDEe2QK54y_oSyxw" name="optimizationFlag" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qavcLhDEe2QK54y_oSyxw" name="SystemFactory">
              <ownedComment xmi:id="_23p6P7hDEe2QK54y_oSyxw">
                <body>Factory Class to create a schedule instance.&#xD;
This factory can be used to create different&#xD;
types of schedules.&#xD;
@author sgoddard&#xD;
 *</body>
              </ownedComment>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Y0f7hDEe2QK54y_oSyxw" name="create" specification="_201PsrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Y0gLhDEe2QK54y_oSyxw" name="workload" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23Y0gbhDEe2QK54y_oSyxw" name="numChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23Y0grhDEe2QK54y_oSyxw" name="choice" type="_2qY6QbhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>return new WarpSystem(workload,numChannels, choice);&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_201PsrhDEe2QK54y_oSyxw" name="create" isStatic="true" method="_23Y0f7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_201Ps7hDEe2QK54y_oSyxw" name="workload" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_201PtLhDEe2QK54y_oSyxw" name="numChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_201PtbhDEe2QK54y_oSyxw" name="choice" type="_2qY6QbhDEe2QK54y_oSyxw"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qavcbhDEe2QK54y_oSyxw" name="Table">
              <generalization xmi:id="_22BihbhDEe2QK54y_oSyxw" general="_2z5bkLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22zlprhDEe2QK54y_oSyxw" 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="_22zlp7hDEe2QK54y_oSyxw" value="1L"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Y0g7hDEe2QK54y_oSyxw" name="Table" specification="_2qbWgbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Y0hLhDEe2QK54y_oSyxw" type="_2qavcbhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Y0hbhDEe2QK54y_oSyxw" name="Table" specification="_2qb9kLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Y0hrhDEe2QK54y_oSyxw" name="row">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23Y0h7hDEe2QK54y_oSyxw" name="column">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23Y0iLhDEe2QK54y_oSyxw" type="_2qavcbhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super();&#xD;
		&#xD;
		for(int i=0; i &lt; row; i++) {&#xD;
			ArrayList&lt;E> nullRow = new ArrayList&lt;E>();&#xD;
			for(int j=0; j &lt; column; j++) {&#xD;
				nullRow.add(null);&#xD;
			}&#xD;
			this.add((E) nullRow);&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Y0ibhDEe2QK54y_oSyxw" name="getNumRows" specification="_2qb9lrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Y0irhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>return this.size();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Y0i7hDEe2QK54y_oSyxw" name="getNumColumns" specification="_2qb9mLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Y0jLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var numColumns = 0;&#xD;
		var numRows = this.size();&#xD;
		if (numRows > 0) {&#xD;
			var lastRow = this.get(numRows-1);&#xD;
			numColumns = lastRow.size();&#xD;
		}&#xD;
		return numColumns;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Y0jbhDEe2QK54y_oSyxw" name="set" specification="_22BigLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Y0jrhDEe2QK54y_oSyxw" name="row">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23Y0j7hDEe2QK54y_oSyxw" name="column">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23Y0kLhDEe2QK54y_oSyxw" name="element" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>E fullRow;&#xD;
		if (row &lt; this.size()) {&#xD;
			fullRow = this.get(row);&#xD;
			if (column &lt; fullRow.size()) {&#xD;
				fullRow.set(column, element);&#xD;
			}&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ZbgLhDEe2QK54y_oSyxw" name="get" specification="_2qb9mrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ZbgbhDEe2QK54y_oSyxw" name="row">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23ZbgrhDEe2QK54y_oSyxw" name="column">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23Zbg7hDEe2QK54y_oSyxw" type="_21q9MbhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>T element = null;&#xD;
		E fullRow;&#xD;
		if (row &lt; this.size()) {&#xD;
			fullRow = this.get(row);&#xD;
			if (column &lt; fullRow.size()) {&#xD;
				element = fullRow.get(column);&#xD;
			}&#xD;
		}&#xD;
		return element;&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2qbWgbhDEe2QK54y_oSyxw" name="Table" method="_23Y0g7hDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2qbWgrhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2qbWg7hDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2qbWhLhDEe2QK54y_oSyxw" type="_2qavcbhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qb9kLhDEe2QK54y_oSyxw" name="Table" method="_23Y0hbhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2qb9k7hDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2qb9lLhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2qb9kbhDEe2QK54y_oSyxw" name="row">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2qb9krhDEe2QK54y_oSyxw" name="column">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2qb9lbhDEe2QK54y_oSyxw" type="_2qavcbhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qb9lrhDEe2QK54y_oSyxw" name="getNumRows" method="_23Y0ibhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2qb9l7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2qb9mLhDEe2QK54y_oSyxw" name="getNumColumns" method="_23Y0i7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2qb9mbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2qb9mrhDEe2QK54y_oSyxw" name="get" method="_23ZbgLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2qb9m7hDEe2QK54y_oSyxw" name="row">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2qckoLhDEe2QK54y_oSyxw" name="column">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_22BihLhDEe2QK54y_oSyxw" type="_21q9MbhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_22BigLhDEe2QK54y_oSyxw" name="set" method="_23Y0jbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_22BigbhDEe2QK54y_oSyxw" name="row">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_22BigrhDEe2QK54y_oSyxw" name="column">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_22Big7hDEe2QK54y_oSyxw" name="element" type="_21q9MbhDEe2QK54y_oSyxw"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="_2qckobhDEe2QK54y_oSyxw" name="Visualization">
              <ownedComment xmi:id="_23p6QLhDEe2QK54y_oSyxw">
                <body>@author sgoddard&#xD;
@version 1.4</body>
              </ownedComment>
              <nestedClassifier xmi:type="uml:Enumeration" xmi:id="_2qdLsLhDEe2QK54y_oSyxw" name="SystemChoices">
                <ownedLiteral xmi:id="_2qdLsrhDEe2QK54y_oSyxw" name="SOURCE"/>
                <ownedLiteral xmi:id="_2qdLs7hDEe2QK54y_oSyxw" name="RELIABILITIES"/>
                <ownedLiteral xmi:id="_2qdLtLhDEe2QK54y_oSyxw" name="SIMULATOR_INPUT"/>
                <ownedLiteral xmi:id="_2qdLtbhDEe2QK54y_oSyxw" name="LATENCY"/>
                <ownedLiteral xmi:id="_2qdLtrhDEe2QK54y_oSyxw" name="LATENCY_REPORT"/>
                <ownedLiteral xmi:id="_2qdywLhDEe2QK54y_oSyxw" name="DEADLINE_REPORT"/>
                <ownedLiteral xmi:id="_2qdywbhDEe2QK54y_oSyxw" name="CHANNEL"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Enumeration" xmi:id="_2qdywrhDEe2QK54y_oSyxw" name="WorkLoadChoices">
                <ownedLiteral xmi:id="_2qdyxLhDEe2QK54y_oSyxw" name="INPUT_GRAPH"/>
                <ownedLiteral xmi:id="_2qdyxbhDEe2QK54y_oSyxw" name="COMUNICATION_GRAPH"/>
                <ownedLiteral xmi:id="_2qeZ0LhDEe2QK54y_oSyxw" name="GRAPHVIZ"/>
              </nestedClassifier>
              <ownedOperation xmi:id="_2qeZ0bhDEe2QK54y_oSyxw" name="toDisplay"/>
              <ownedOperation xmi:id="_2qeZ0rhDEe2QK54y_oSyxw" name="toFile"/>
              <ownedOperation xmi:id="_2qeZ07hDEe2QK54y_oSyxw" name="toString">
                <ownedParameter xmi:id="_2qfA4LhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qfA4bhDEe2QK54y_oSyxw" name="VisualizationFactory">
              <ownedComment xmi:id="_23p6QbhDEe2QK54y_oSyxw">
                <body>Factory Class to create a visualization instance.&#xD;
This factory can be used to create different&#xD;
types of visualizations.&#xD;
@author sgoddard&#xD;
 *</body>
              </ownedComment>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ZbhLhDEe2QK54y_oSyxw" name="createWorkLoadVisualization" specification="_2012xLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ZbhbhDEe2QK54y_oSyxw" name="workload" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23ZbhrhDEe2QK54y_oSyxw" name="outputDirectory">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23Zbh7hDEe2QK54y_oSyxw" name="choice" type="_2qdywrhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23ZbiLhDEe2QK54y_oSyxw" type="_2qckobhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return new VisualizationImplementation(workload, outputDirectory, choice);&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2012xLhDEe2QK54y_oSyxw" name="createWorkLoadVisualization" isStatic="true" method="_23ZbhLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2012xbhDEe2QK54y_oSyxw" name="workload" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_2012xrhDEe2QK54y_oSyxw" name="outputDirectory">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2012x7hDEe2QK54y_oSyxw" name="choice" type="_2qdywrhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_202d0LhDEe2QK54y_oSyxw" type="_2qckobhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qfn8LhDEe2QK54y_oSyxw" name="VisualizationImplementation">
              <ownedComment xmi:id="_23qhQLhDEe2QK54y_oSyxw">
                <body>@author sgoddard&#xD;
@version 1.5</body>
              </ownedComment>
              <ownedAttribute xmi:id="_220MsLhDEe2QK54y_oSyxw" name="visualization" visibility="private" type="_2pKyQrhDEe2QK54y_oSyxw" association="_24F_ELhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_220zwbhDEe2QK54y_oSyxw" name="fileContent" visibility="private" type="_2pKyQrhDEe2QK54y_oSyxw" association="_24F_E7hDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_220zw7hDEe2QK54y_oSyxw" name="window" visibility="private" type="_2pe7ULhDEe2QK54y_oSyxw" association="_24F_FrhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_220zxbhDEe2QK54y_oSyxw" name="fileName" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_221a0LhDEe2QK54y_oSyxw" name="inputFileName" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_221a0rhDEe2QK54y_oSyxw" name="fileNameTemplate" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_221a1LhDEe2QK54y_oSyxw" name="fm" visibility="private" type="_2pQR0LhDEe2QK54y_oSyxw" association="_24F_GbhDEe2QK54y_oSyxw">
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_221a1bhDEe2QK54y_oSyxw" value="null"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_222B4bhDEe2QK54y_oSyxw" name="workLoad" visibility="private" type="_2q5QkLhDEe2QK54y_oSyxw" association="_24GmIbhDEe2QK54y_oSyxw">
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_222B4rhDEe2QK54y_oSyxw" value="null"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_222B5LhDEe2QK54y_oSyxw" name="visualizationObject" visibility="private" type="_2qirQLhDEe2QK54y_oSyxw" association="_24GmJLhDEe2QK54y_oSyxw"/>
              <interfaceRealization xmi:id="_202d0bhDEe2QK54y_oSyxw" client="_2qfn8LhDEe2QK54y_oSyxw" supplier="_2qckobhDEe2QK54y_oSyxw" contract="_2qckobhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ZbibhDEe2QK54y_oSyxw" name="VisualizationImplementation" specification="_22CwobhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ZbirhDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23Zbi7hDEe2QK54y_oSyxw" name="outputDirectory">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23ZbjLhDEe2QK54y_oSyxw" name="choice" type="_22CJkrhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23ZbjbhDEe2QK54y_oSyxw" type="_2qfn8LhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>this.fm = new FileManager();&#xD;
		this.workLoad = workLoad;&#xD;
		inputFileName = workLoad.getInputFileName();&#xD;
		this.fileNameTemplate = createFileNameTemplate(outputDirectory);&#xD;
		visualizationObject = null;&#xD;
		createVisualization(choice);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ZbjrhDEe2QK54y_oSyxw" name="toDisplay" specification="_2qg2ELhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>window = visualizationObject.displayVisualization();&#xD;
		if (window != null) {&#xD;
			window.setVisible();&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23Zbj7hDEe2QK54y_oSyxw" name="toFile" specification="_2qg2FLhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>fm.writeFile(fileName, fileContent.toString());&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ZbkLhDEe2QK54y_oSyxw" name="toString" specification="_2qg2GLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ZbkbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>return visualization.toString();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ZbkrhDEe2QK54y_oSyxw" name="createVisualization" specification="_22CwqLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Zbk7hDEe2QK54y_oSyxw" name="choice" type="_22CJkLhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>switch (choice) { // select the requested visualization&#xD;
		case SOURCE:&#xD;
			createVisualization(new ProgramVisualization(warp));&#xD;
			break;&#xD;
&#xD;
		case RELIABILITIES:&#xD;
			// TODO Implement Reliability Analysis Visualization&#xD;
			createVisualization(new ReliabilityVisualization(warp));&#xD;
			break;&#xD;
&#xD;
		case SIMULATOR_INPUT:&#xD;
			// TODO Implement Simulator Input Visualization&#xD;
			createVisualization(new NotImplentedVisualization(&quot;SimInputNotImplemented&quot;));&#xD;
			break;&#xD;
&#xD;
		case LATENCY:&#xD;
			// TODO Implement Latency Analysis Visualization&#xD;
			createVisualization(new LatencyVisualization(warp));&#xD;
			break;&#xD;
&#xD;
		case CHANNEL:&#xD;
			// TODO Implement Channel Analysis Visualization&#xD;
			createVisualization(new ChannelVisualization(warp));&#xD;
			break;&#xD;
&#xD;
		case LATENCY_REPORT:&#xD;
			createVisualization(&#xD;
					new ReportVisualization(fm, warp, new LatencyAnalysis(warp).latencyReport(), &quot;Latency&quot;));&#xD;
			break;&#xD;
&#xD;
		case DEADLINE_REPORT:&#xD;
			createVisualization(new ReportVisualization(fm, warp, warp.toProgram().deadlineMisses(), &quot;DeadlineMisses&quot;));&#xD;
			break;&#xD;
&#xD;
		default:&#xD;
			createVisualization(new NotImplentedVisualization(&quot;UnexpectedChoice&quot;));&#xD;
			break;&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ZblLhDEe2QK54y_oSyxw" name="createVisualization" specification="_22CwqrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ZblbhDEe2QK54y_oSyxw" name="choice" type="_22CJkrhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>switch (choice) { // select the requested visualization&#xD;
		case COMUNICATION_GRAPH:&#xD;
			// createWarpVisualization();&#xD;
			createVisualization(new CommunicationGraph(fm, workLoad));&#xD;
			break;&#xD;
&#xD;
		case GRAPHVIZ:&#xD;
			createVisualization(new GraphViz(fm, workLoad.toString()));&#xD;
			break;&#xD;
&#xD;
		case INPUT_GRAPH:&#xD;
			createVisualization(workLoad);&#xD;
			break;&#xD;
&#xD;
		default:&#xD;
			createVisualization(new NotImplentedVisualization(&quot;UnexpectedChoice&quot;));&#xD;
			break;&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ZblrhDEe2QK54y_oSyxw" name="createVisualization" specification="_22DXsLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23Zbl7hDEe2QK54y_oSyxw" name="obj" type="_21q9MbhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>visualization = obj.visualization();&#xD;
		fileContent = obj.fileVisualization();&#xD;
		/* display is file content printed to console */&#xD;
		fileName = obj.createFile(fileNameTemplate); // in output directory&#xD;
		visualizationObject = obj;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ZbmLhDEe2QK54y_oSyxw" name="createFileNameTemplate" specification="_2qhdI7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ZbmbhDEe2QK54y_oSyxw" name="outputDirectory">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23ZbmrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>String fileNameTemplate;&#xD;
		var workingDirectory = fm.getBaseDirectory();&#xD;
		var newDirectory = fm.createDirectory(workingDirectory, outputDirectory);&#xD;
		// Now create the fileNameTemplate using full output path and input filename&#xD;
		if (inputFileName.contains(&quot;/&quot;)) {&#xD;
			var index = inputFileName.lastIndexOf(&quot;/&quot;) + 1;&#xD;
			fileNameTemplate = newDirectory + File.separator + inputFileName.substring(index);&#xD;
		} else {&#xD;
			fileNameTemplate = newDirectory + File.separator + inputFileName;&#xD;
		}&#xD;
		return fileNameTemplate;&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2qg2ELhDEe2QK54y_oSyxw" name="toDisplay" method="_23ZbjrhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2qg2FLhDEe2QK54y_oSyxw" name="toFile" method="_23Zbj7hDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2qg2GLhDEe2QK54y_oSyxw" name="toString" method="_23ZbkLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2qg2GbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2qhdI7hDEe2QK54y_oSyxw" name="createFileNameTemplate" visibility="private" method="_23ZbmLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23qhRLhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Creates a file name template.&lt;/h1>&#xD;
	 * &lt;p>Uses a string outputDirectory to create a template for a filename that allows&#xD;
	 * for easier formatting if the '/' is used in the file name.&lt;/p>&#xD;
	 * &#xD;
	 * @param outputDirectory string used to make template for file name&#xD;
	 * @return new template for created file name</body>
                </ownedComment>
                <ownedParameter xmi:id="_2qhdJLhDEe2QK54y_oSyxw" name="outputDirectory">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2qhdJbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_22CwobhDEe2QK54y_oSyxw" name="VisualizationImplementation" method="_23ZbibhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_22CwpbhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_22CwprhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedComment xmi:id="_23qhQbhDEe2QK54y_oSyxw">
                  <body>Initializes a new visualization by taking in a Workload, Output Directory,&#xD;
	 * and a SystemChoices enum and uses them to create a file name and&#xD;
	 * visualization.&#xD;
	 * &#xD;
	 * @param workLoad        workLoad that will be used to get data for&#xD;
	 *                        visualization&#xD;
	 * @param outputDirectory string representing output directory for file name&#xD;
	 * @param choice          choice that is decided by user in how to create&#xD;
	 *                        implementation</body>
                </ownedComment>
                <ownedParameter xmi:id="_22CworhDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_22Cwo7hDEe2QK54y_oSyxw" name="outputDirectory">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_22CwpLhDEe2QK54y_oSyxw" name="choice" type="_22CJkrhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_22Cwp7hDEe2QK54y_oSyxw" type="_2qfn8LhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_22CwqLhDEe2QK54y_oSyxw" name="createVisualization" visibility="private" method="_23ZbkrhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23qhQrhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Creates a visualization based on the SystemChoice provided&lt;/h1>&#xD;
	 * &#xD;
	 * @param choice can be set to different requests to change how visualization is&#xD;
	 *               implemented</body>
                </ownedComment>
                <ownedParameter xmi:id="_22CwqbhDEe2QK54y_oSyxw" name="choice" type="_22CJkLhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_22CwqrhDEe2QK54y_oSyxw" name="createVisualization" visibility="private" method="_23ZblLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23qhQ7hDEe2QK54y_oSyxw">
                  <body>&lt;h1>Creates a visualization based on the WorkloadChoice provided&lt;/h1>&#xD;
	 * &#xD;
	 * @param choice user choice for how visualization is represented</body>
                </ownedComment>
                <ownedParameter xmi:id="_22Cwq7hDEe2QK54y_oSyxw" name="choice" type="_22CJkrhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_22DXsLhDEe2QK54y_oSyxw" name="createVisualization" visibility="private" method="_23ZblrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_22DXsbhDEe2QK54y_oSyxw" name="obj" type="_21q9MbhDEe2QK54y_oSyxw"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qirQLhDEe2QK54y_oSyxw" name="VisualizationObject" visibility="package" isAbstract="true">
              <ownedComment xmi:id="_23qhRbhDEe2QK54y_oSyxw">
                <body>@author sgoddard&#xD;
@version 1.5&#xD;
 *</body>
              </ownedComment>
              <ownedAttribute xmi:id="_222o8LhDEe2QK54y_oSyxw" name="fm" visibility="private" type="_2pQR0LhDEe2QK54y_oSyxw" association="_24GmJ7hDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_222o8rhDEe2QK54y_oSyxw" name="suffix" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_222o9LhDEe2QK54y_oSyxw" name="nameExtension" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_223QAbhDEe2QK54y_oSyxw" name="NOT_IMPLEMENTED" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_223QArhDEe2QK54y_oSyxw" value="&quot;This visualization has not been implemented.&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_223QA7hDEe2QK54y_oSyxw" name="visualizationData" visibility="protected">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_223QBLhDEe2QK54y_oSyxw" value="*"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23aCkLhDEe2QK54y_oSyxw" name="VisualizationObject" specification="_203E4LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23aCkbhDEe2QK54y_oSyxw" name="fm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23aCkrhDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23aCk7hDEe2QK54y_oSyxw" name="suffix">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23aClLhDEe2QK54y_oSyxw" type="_2qirQLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>this.fm = fm;&#xD;
		this.nameExtension = String.format(&quot;-%sM-%sE2E&quot;, String.valueOf(workLoad.getMinPacketReceptionRate()),&#xD;
				String.valueOf(workLoad.getE2e()));&#xD;
		this.suffix = suffix;&#xD;
		visualizationData = null;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23aClbhDEe2QK54y_oSyxw" name="VisualizationObject" specification="_203r9LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23aClrhDEe2QK54y_oSyxw" name="fm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23aCl7hDEe2QK54y_oSyxw" name="warp" type="_2qY6QLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23aCmLhDEe2QK54y_oSyxw" name="suffix">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23aCmbhDEe2QK54y_oSyxw" type="_2qirQLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>this.fm = fm;&#xD;
		if (warp.getNumFaults() > 0) {&#xD;
			this.nameExtension = nameExtension(warp.getSchedulerName(), warp.getNumFaults());&#xD;
		} else {&#xD;
			this.nameExtension = nameExtension(warp.getSchedulerName(), warp.getMinPacketReceptionRate(),&#xD;
					warp.getE2e());&#xD;
		}&#xD;
		this.suffix = suffix;&#xD;
		visualizationData = null;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23aCmrhDEe2QK54y_oSyxw" name="VisualizationObject" specification="_203r-7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23aCm7hDEe2QK54y_oSyxw" name="fm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23aCnLhDEe2QK54y_oSyxw" name="warp" type="_2qY6QLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23aCnbhDEe2QK54y_oSyxw" name="nameExtension">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23aCnrhDEe2QK54y_oSyxw" name="suffix">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23aCn7hDEe2QK54y_oSyxw" type="_2qirQLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>this.fm = fm;&#xD;
		if (warp.getNumFaults() > 0) {&#xD;
			this.nameExtension = nameExtension(warp.getSchedulerName(), warp.getNumFaults()) + nameExtension;&#xD;
		} else {&#xD;
			this.nameExtension = nameExtension(warp.getSchedulerName(), warp.getMinPacketReceptionRate(), warp.getE2e())&#xD;
					+ nameExtension;&#xD;
		}&#xD;
&#xD;
		this.suffix = suffix;&#xD;
		visualizationData = null;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23aCoLhDEe2QK54y_oSyxw" name="VisualizationObject" specification="_203sA7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23aCobhDEe2QK54y_oSyxw" name="fm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23aCorhDEe2QK54y_oSyxw" name="nameExtension">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23aCo7hDEe2QK54y_oSyxw" name="suffix">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23aCpLhDEe2QK54y_oSyxw" type="_2qirQLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>this.fm = fm;&#xD;
		this.nameExtension = nameExtension;&#xD;
		this.suffix = suffix;&#xD;
		visualizationData = null;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23aCpbhDEe2QK54y_oSyxw" name="nameExtension" specification="_22D-wLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23aCprhDEe2QK54y_oSyxw" name="schName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23aCp7hDEe2QK54y_oSyxw" name="m" type="_21600rhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23aCqLhDEe2QK54y_oSyxw" name="e2e">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23aCqbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>String extension = String.format(&quot;%s-%sM-%sE2E&quot;, schName, String.valueOf(m), String.valueOf(e2e));&#xD;
		return extension;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23aCqrhDEe2QK54y_oSyxw" name="nameExtension" specification="_2qj5YLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23aCq7hDEe2QK54y_oSyxw" name="schName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23aCrLhDEe2QK54y_oSyxw" name="numFaults">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23aCrbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>String extension = String.format(&quot;%s-%sFaults&quot;, schName, String.valueOf(numFaults));&#xD;
		return extension;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23aCrrhDEe2QK54y_oSyxw" name="getFileManager" specification="_2qkgcbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23aCr7hDEe2QK54y_oSyxw" type="_2pQR0LhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return fm;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23aCsLhDEe2QK54y_oSyxw" name="visualization" specification="_2qkgcrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23aCsbhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>Description content = new Description();&#xD;
		var data = createVisualizationData();&#xD;
&#xD;
		if (data != null) {&#xD;
			String nodeString = String.join(&quot;\t&quot;, createColumnHeader()) + &quot;\n&quot;;&#xD;
			content.add(nodeString);&#xD;
&#xD;
			for (int rowIndex = 0; rowIndex &lt; data.length; rowIndex++) {&#xD;
				var row = data[rowIndex];&#xD;
				String rowString = String.join(&quot;\t&quot;, row) + &quot;\n&quot;;&#xD;
				content.add(rowString);&#xD;
			}&#xD;
		} else {&#xD;
			content.add(NOT_IMPLEMENTED);&#xD;
		}&#xD;
		return content;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23aCsrhDEe2QK54y_oSyxw" name="createFile" specification="_2qkgc7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23aCs7hDEe2QK54y_oSyxw" name="fileNameTemplate">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23aCtLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>return fm.createFile(fileNameTemplate, nameExtension, suffix);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23aCtbhDEe2QK54y_oSyxw" name="fileVisualization" specification="_2qkgdrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23aCtrhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>Description fileContent = createHeader();&#xD;
		fileContent.addAll(visualization());&#xD;
		fileContent.addAll(createFooter());&#xD;
		return fileContent;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23apoLhDEe2QK54y_oSyxw" name="displayVisualization" specification="_2qkgd7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23apobhDEe2QK54y_oSyxw" type="_2pe7ULhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return null; // not implemented&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23aporhDEe2QK54y_oSyxw" name="createHeader" specification="_2qkgeLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23apo7hDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>Description header = new Description();&#xD;
		return header;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23appLhDEe2QK54y_oSyxw" name="createFooter" specification="_2qlHgLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23appbhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>Description footer = new Description();&#xD;
		return footer;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23apprhDEe2QK54y_oSyxw" name="createColumnHeader" specification="_2qlHgbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23app7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23apqLhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <language>java</language>
                <body>return new String[] { NOT_IMPLEMENTED };&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23apqbhDEe2QK54y_oSyxw" name="createVisualizationData" specification="_2qlHhbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23apqrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23apq7hDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <language>java</language>
                <body>return visualizationData; // not implemented--returns null&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2qj5YLhDEe2QK54y_oSyxw" name="nameExtension" visibility="private" method="_23aCqrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2qj5YbhDEe2QK54y_oSyxw" name="schName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2qj5YrhDEe2QK54y_oSyxw" name="numFaults">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2qkgcLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2qkgcbhDEe2QK54y_oSyxw" name="getFileManager" method="_23aCrrhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23qhRrhDEe2QK54y_oSyxw">
                  <body>@return the fm</body>
                </ownedComment>
                <ownedParameter xmi:id="_204TALhDEe2QK54y_oSyxw" type="_2pQR0LhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qkgcrhDEe2QK54y_oSyxw" name="visualization" method="_23aCsLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_204TAbhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qkgc7hDEe2QK54y_oSyxw" name="createFile" method="_23aCsrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2qkgdLhDEe2QK54y_oSyxw" name="fileNameTemplate">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2qkgdbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2qkgdrhDEe2QK54y_oSyxw" name="fileVisualization" method="_23aCtbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_204TArhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qkgd7hDEe2QK54y_oSyxw" name="displayVisualization" method="_23apoLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_204TA7hDEe2QK54y_oSyxw" type="_2pe7ULhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qkgeLhDEe2QK54y_oSyxw" name="createHeader" visibility="protected" method="_23aporhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_204TBLhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qlHgLhDEe2QK54y_oSyxw" name="createFooter" visibility="protected" method="_23appLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2046ELhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qlHgbhDEe2QK54y_oSyxw" name="createColumnHeader" visibility="protected" method="_23apprhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2qlHgrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2qlHg7hDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2qlHhbhDEe2QK54y_oSyxw" name="createVisualizationData" visibility="protected" method="_23apqbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2qlHhrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2qlHh7hDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_203E4LhDEe2QK54y_oSyxw" name="VisualizationObject" visibility="package" method="_23aCkLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_203r8bhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_203r8rhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_203E4bhDEe2QK54y_oSyxw" name="fm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_203E4rhDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_203r8LhDEe2QK54y_oSyxw" name="suffix">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_203r87hDEe2QK54y_oSyxw" type="_2qirQLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_203r9LhDEe2QK54y_oSyxw" name="VisualizationObject" visibility="package" method="_23aClbhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_203r-LhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_203r-bhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_203r9bhDEe2QK54y_oSyxw" name="fm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_203r9rhDEe2QK54y_oSyxw" name="warp" type="_2qY6QLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_203r97hDEe2QK54y_oSyxw" name="suffix">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_203r-rhDEe2QK54y_oSyxw" type="_2qirQLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_203r-7hDEe2QK54y_oSyxw" name="VisualizationObject" visibility="package" method="_23aCmrhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_203sALhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_203sAbhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_203r_LhDEe2QK54y_oSyxw" name="fm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_203r_bhDEe2QK54y_oSyxw" name="warp" type="_2qY6QLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_203r_rhDEe2QK54y_oSyxw" name="nameExtension">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_203r_7hDEe2QK54y_oSyxw" name="suffix">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_203sArhDEe2QK54y_oSyxw" type="_2qirQLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_203sA7hDEe2QK54y_oSyxw" name="VisualizationObject" visibility="package" method="_23aCoLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_203sB7hDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_203sCLhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_203sBLhDEe2QK54y_oSyxw" name="fm" type="_2pQR0LhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_203sBbhDEe2QK54y_oSyxw" name="nameExtension">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_203sBrhDEe2QK54y_oSyxw" name="suffix">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_203sCbhDEe2QK54y_oSyxw" type="_2qirQLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_22D-wLhDEe2QK54y_oSyxw" name="nameExtension" visibility="private" method="_23aCpbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_22D-wbhDEe2QK54y_oSyxw" name="schName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_22D-wrhDEe2QK54y_oSyxw" name="m" type="_21600rhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_22D-w7hDEe2QK54y_oSyxw" name="e2e">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
                </ownedParameter>
                <ownedParameter xmi:id="_22D-xLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qnjwLhDEe2QK54y_oSyxw" name="WorkLoadListener" visibility="package" isLeaf="true">
              <ownedComment xmi:id="_23qhR7hDEe2QK54y_oSyxw">
                <body>@author sgoddard&#xD;
 *</body>
              </ownedComment>
              <generalization xmi:id="_22FM4LhDEe2QK54y_oSyxw" general="_20VgcbhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_2233EbhDEe2QK54y_oSyxw" name="workLoad" visibility="package" type="_2q5QkLhDEe2QK54y_oSyxw" association="_24HNMbhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_2233E7hDEe2QK54y_oSyxw" name="currentFlow" visibility="package">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23aprLhDEe2QK54y_oSyxw" name="WorkLoadListener" specification="_2046EbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23aprbhDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23aprrhDEe2QK54y_oSyxw" type="_2qnjwLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>this.workLoad = workLoad; // used to populate the workLoad as the input file is read&#xD;
     this.currentFlow = new String();&#xD;
  // Read input file and build AST of graphFile&#xD;
     try {&#xD;
     	CharStream inputGraph = CharStreams.fromString(workLoad.toString());&#xD;
     	var lexer = new WARPLexer(inputGraph);&#xD;
     	var tokens = new CommonTokenStream(lexer);&#xD;
     	var parser = new WARPParser(tokens);&#xD;
     	ParseTree warpTree = parser.warp(); // begin parsing at rule 'warp'&#xD;
     	var warp = new ParseTreeWalker();&#xD;
     	 // Now populate build the workLoad by walking the input Graph tokens&#xD;
     	warp.walk(this, warpTree);&#xD;
     } catch (Exception e) {&#xD;
     	e.printStackTrace();&#xD;
     	System.err.println(&quot;ERROR: Unable to parse graphFile&quot; + e.getMessage());&#xD;
     }&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23apr7hDEe2QK54y_oSyxw" name="buildNodesAndFlows" specification="_205hJLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23apsLhDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>/*&#xD;
 	 * Create the listener object, which will read the workLoad &#xD;
 	 * description and then buid the node and flow objects that&#xD;
 	 * instantiates the workLoad. This object is not needed&#xD;
 	 * after that.&#xD;
 	 */&#xD;
 	new WorkLoadListener(workLoad); &#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23apsbhDEe2QK54y_oSyxw" name="testPrintStdOut" specification="_2qoK0LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23apsrhDEe2QK54y_oSyxw" name="msg">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>System.out.printf(&quot;\n In WARPworkLoad Listener!!\n&quot;);&#xD;
 	System.out.printf(msg);&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23aps7hDEe2QK54y_oSyxw" name="enterWarpName" specification="_205hJrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23aptLhDEe2QK54y_oSyxw" name="ctx" type="_20WulbhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>var name = ctx.getText();  // get the name of the graph &#xD;
     workLoad.setName(name); // store the  name for later reference&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23aptbhDEe2QK54y_oSyxw" name="enterFlowName" specification="_205hK7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23aptrhDEe2QK54y_oSyxw" name="ctx" type="_20YjwrhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>currentFlow = ctx.getText();&#xD;
     workLoad.addFlow(currentFlow);&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23apt7hDEe2QK54y_oSyxw" name="exitPriority" specification="_206INbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23apuLhDEe2QK54y_oSyxw" name="ctx" type="_206IM7hDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>var priority = Integer.parseInt(ctx.getText());  // get priority from the AST&#xD;
     workLoad.setFlowPriority(currentFlow, priority);&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23apubhDEe2QK54y_oSyxw" name="exitPeriod" specification="_206vQbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23apurhDEe2QK54y_oSyxw" name="ctx" type="_206IOrhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>var period = Integer.parseInt(ctx.getText());// get period from the AST&#xD;
     workLoad.setFlowPeriod(currentFlow, period);&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23apu7hDEe2QK54y_oSyxw" name="exitDeadline" specification="_206vSLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23apvLhDEe2QK54y_oSyxw" name="ctx" type="_206vRrhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>var deadline = Integer.parseInt(ctx.getText());// get deadline from the AST&#xD;
     workLoad.setFlowDeadline(currentFlow, deadline);&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23apvbhDEe2QK54y_oSyxw" name="exitPhase" specification="_207WVLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23apvrhDEe2QK54y_oSyxw" name="ctx" type="_207WUrhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>var phase = Integer.parseInt(ctx.getText());// get phase from the AST&#xD;
     workLoad.setFlowPhase(currentFlow, phase);&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23apv7hDEe2QK54y_oSyxw" name="exitSrcNode" specification="_207WWbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23apwLhDEe2QK54y_oSyxw" name="ctx" type="_20ZK07hDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>var nodeName = ctx.getText(); // get the src node name&#xD;
     workLoad.addNodeToFlow(currentFlow, nodeName);&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23bQsLhDEe2QK54y_oSyxw" name="exitSnkNode" specification="_2079YrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23bQsbhDEe2QK54y_oSyxw" name="ctx" type="_20Zx5rhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>var nodeName = ctx.getText(); // get the snk node name&#xD;
     workLoad.addNodeToFlow(currentFlow, nodeName);&#xD;
 </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23bQsrhDEe2QK54y_oSyxw" name="exitFlow" specification="_2079Z7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23bQs7hDEe2QK54y_oSyxw" name="ctx" type="_20bAALhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>workLoad.finalizeCurrentFlow(currentFlow);&#xD;
 </body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2qoK0LhDEe2QK54y_oSyxw" name="testPrintStdOut" method="_23apsbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2qox4LhDEe2QK54y_oSyxw" name="msg">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2046EbhDEe2QK54y_oSyxw" name="WorkLoadListener" visibility="private" method="_23aprLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_205hIbhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_205hIrhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_205hILhDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_205hI7hDEe2QK54y_oSyxw" type="_2qnjwLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_205hJLhDEe2QK54y_oSyxw" name="buildNodesAndFlows" isStatic="true" method="_23apr7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_205hJbhDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_205hJrhDEe2QK54y_oSyxw" name="enterWarpName" method="_23aps7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_205hJ7hDEe2QK54y_oSyxw" name="ctx" type="_20WulbhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_205hK7hDEe2QK54y_oSyxw" name="enterFlowName" method="_23aptbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_205hLLhDEe2QK54y_oSyxw" name="ctx" type="_20YjwrhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_206INbhDEe2QK54y_oSyxw" name="exitPriority" method="_23apt7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_206INrhDEe2QK54y_oSyxw" name="ctx" type="_206IM7hDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_206vQbhDEe2QK54y_oSyxw" name="exitPeriod" method="_23apubhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_206vQrhDEe2QK54y_oSyxw" name="ctx" type="_206IOrhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_206vSLhDEe2QK54y_oSyxw" name="exitDeadline" method="_23apu7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_206vSbhDEe2QK54y_oSyxw" name="ctx" type="_206vRrhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_207WVLhDEe2QK54y_oSyxw" name="exitPhase" method="_23apvbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_207WVbhDEe2QK54y_oSyxw" name="ctx" type="_207WUrhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_207WWbhDEe2QK54y_oSyxw" name="exitSrcNode" method="_23apv7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_207WWrhDEe2QK54y_oSyxw" name="ctx" type="_20ZK07hDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2079YrhDEe2QK54y_oSyxw" name="exitSnkNode" method="_23bQsLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2079Y7hDEe2QK54y_oSyxw" name="ctx" type="_20Zx5rhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2079Z7hDEe2QK54y_oSyxw" name="exitFlow" method="_23bQsrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2079aLhDEe2QK54y_oSyxw" name="ctx" type="_20bAALhDEe2QK54y_oSyxw"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qqAALhDEe2QK54y_oSyxw" name="WarpDSL">
              <ownedComment xmi:id="_23rIULhDEe2QK54y_oSyxw">
                <body>@author sgoddard&#xD;
 *</body>
              </ownedComment>
              <ownedAttribute xmi:id="_224eIbhDEe2QK54y_oSyxw" name="UNKNOWN" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_224eIrhDEe2QK54y_oSyxw" value="&quot;unknown&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_224eI7hDEe2QK54y_oSyxw" name="UNUSED" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_224eJLhDEe2QK54y_oSyxw" value="&quot;unused&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_224eJbhDEe2QK54y_oSyxw" name="PUSH" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_225FMLhDEe2QK54y_oSyxw" value="&quot;push&quot;"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23bQxLhDEe2QK54y_oSyxw" name="getInstructionParameters" specification="_2qscQLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23bQxbhDEe2QK54y_oSyxw" name="instruction">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23bQxrhDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>ArrayList&lt;InstructionParameters> instructionParametersArrayList;&#xD;
 	var dsl = new ListenerDsl();&#xD;
     // Read input file and build AST of graph&#xD;
     try {&#xD;
     	CharStream inputInstruction = CharStreams.fromString(instruction);&#xD;
     	var lexer = new WARPdslLexer(inputInstruction);&#xD;
     	var instructionTokens = new CommonTokenStream(lexer);&#xD;
     	var parser = new WARPdslParser(instructionTokens);&#xD;
     	ParseTree instructionTree = parser.instruction(); // begin parsing at rule 'warp'&#xD;
     	var warp = new ParseTreeWalker();&#xD;
     	warp.walk(dsl, instructionTree);&#xD;
     } catch (Exception e) {&#xD;
     	e.printStackTrace();&#xD;
     	System.err.println(&quot;Unable to parse instruction instruction from the schedule entry:&quot; + e.getMessage());&#xD;
     }&#xD;
     instructionParametersArrayList = dsl.getInstructionParameters();&#xD;
     return instructionParametersArrayList;&#xD;
 </body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2qscQLhDEe2QK54y_oSyxw" name="getInstructionParameters" method="_23bQxLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2qscQbhDEe2QK54y_oSyxw" name="instruction">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_22Fz8LhDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <nestedClassifier xmi:type="uml:Class" xmi:id="_2qqnELhDEe2QK54y_oSyxw" name="InstructionParameters">
                <ownedAttribute xmi:id="_225FMbhDEe2QK54y_oSyxw" name="name" isReadOnly="true">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <defaultValue xmi:type="uml:LiteralString" xmi:id="_225FMrhDEe2QK54y_oSyxw" value="UNUSED"/>
                </ownedAttribute>
                <ownedAttribute xmi:id="_225FM7hDEe2QK54y_oSyxw" name="flow" isReadOnly="true">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <defaultValue xmi:type="uml:LiteralString" xmi:id="_225FNLhDEe2QK54y_oSyxw" value="UNUSED"/>
                </ownedAttribute>
                <ownedAttribute xmi:id="_225FNbhDEe2QK54y_oSyxw" name="src" isReadOnly="true">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <defaultValue xmi:type="uml:LiteralString" xmi:id="_225FNrhDEe2QK54y_oSyxw" value="UNUSED"/>
                </ownedAttribute>
                <ownedAttribute xmi:id="_225FN7hDEe2QK54y_oSyxw" name="snk" isReadOnly="true">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <defaultValue xmi:type="uml:LiteralString" xmi:id="_225FOLhDEe2QK54y_oSyxw" value="UNUSED"/>
                </ownedAttribute>
                <ownedAttribute xmi:id="_225FObhDEe2QK54y_oSyxw" name="channel" isReadOnly="true">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <defaultValue xmi:type="uml:LiteralString" xmi:id="_225FOrhDEe2QK54y_oSyxw" value="UNUSED"/>
                </ownedAttribute>
                <ownedAttribute xmi:id="_225FO7hDEe2QK54y_oSyxw" name="coordinator" visibility="private">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <defaultValue xmi:type="uml:LiteralString" xmi:id="_225FPLhDEe2QK54y_oSyxw" value="UNKNOWN"/>
                </ownedAttribute>
                <ownedAttribute xmi:id="_225FPrhDEe2QK54y_oSyxw" name="listener">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <defaultValue xmi:type="uml:LiteralString" xmi:id="_225FP7hDEe2QK54y_oSyxw" value="UNKNOWN"/>
                </ownedAttribute>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23bQtLhDEe2QK54y_oSyxw" name="getCoordinator" specification="_2qqnEbhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23bQtbhDEe2QK54y_oSyxw" direction="return">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  </ownedParameter>
                  <language>java</language>
                  <body>return coordinator;&#xD;
		</body>
                </ownedBehavior>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23bQtrhDEe2QK54y_oSyxw" name="setCoordinator" specification="_2qrOIbhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23bQt7hDEe2QK54y_oSyxw" name="coordinator">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  </ownedParameter>
                  <language>java</language>
                  <body>this.coordinator = coordinator;&#xD;
		</body>
                </ownedBehavior>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23bQuLhDEe2QK54y_oSyxw" name="setName" specification="_2qrOI7hDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23bQubhDEe2QK54y_oSyxw" name="name">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  </ownedParameter>
                  <language>java</language>
                  <body>this.name = name;&#xD;
     </body>
                </ownedBehavior>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23bQurhDEe2QK54y_oSyxw" name="setFlow" specification="_2qrOJbhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23bQu7hDEe2QK54y_oSyxw" name="flow">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  </ownedParameter>
                  <language>java</language>
                  <body>this.flow = flow;&#xD;
     </body>
                </ownedBehavior>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23bQvLhDEe2QK54y_oSyxw" name="setSrc" specification="_2qrOJ7hDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23bQvbhDEe2QK54y_oSyxw" name="src">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  </ownedParameter>
                  <language>java</language>
                  <body>this.src = src;&#xD;
     </body>
                </ownedBehavior>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23bQvrhDEe2QK54y_oSyxw" name="setSnk" specification="_2qr1MLhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23bQv7hDEe2QK54y_oSyxw" name="snk">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  </ownedParameter>
                  <language>java</language>
                  <body>this.snk = snk;&#xD;
     </body>
                </ownedBehavior>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23bQwLhDEe2QK54y_oSyxw" name="setChannel" specification="_2qr1MrhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23bQwbhDEe2QK54y_oSyxw" name="channel">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  </ownedParameter>
                  <language>java</language>
                  <body>this.channel = channel;&#xD;
     </body>
                </ownedBehavior>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23bQwrhDEe2QK54y_oSyxw" name="unused" specification="_2qr1NLhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23bQw7hDEe2QK54y_oSyxw" direction="return">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  </ownedParameter>
                  <language>java</language>
                  <body>return UNUSED;&#xD;
		</body>
                </ownedBehavior>
                <ownedOperation xmi:id="_2qqnEbhDEe2QK54y_oSyxw" name="getCoordinator" method="_23bQtLhDEe2QK54y_oSyxw">
                  <ownedComment xmi:id="_23rIUbhDEe2QK54y_oSyxw">
                    <body>@return the coordinator</body>
                  </ownedComment>
                  <ownedParameter xmi:id="_2qrOILhDEe2QK54y_oSyxw" direction="return">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  </ownedParameter>
                </ownedOperation>
                <ownedOperation xmi:id="_2qrOIbhDEe2QK54y_oSyxw" name="setCoordinator" method="_23bQtrhDEe2QK54y_oSyxw">
                  <ownedComment xmi:id="_23rIUrhDEe2QK54y_oSyxw">
                    <body>@param coordinator the coordinator to set</body>
                  </ownedComment>
                  <ownedParameter xmi:id="_2qrOIrhDEe2QK54y_oSyxw" name="coordinator">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  </ownedParameter>
                </ownedOperation>
                <ownedOperation xmi:id="_2qrOI7hDEe2QK54y_oSyxw" name="setName" visibility="private" method="_23bQuLhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_2qrOJLhDEe2QK54y_oSyxw" name="name">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  </ownedParameter>
                </ownedOperation>
                <ownedOperation xmi:id="_2qrOJbhDEe2QK54y_oSyxw" name="setFlow" visibility="private" method="_23bQurhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_2qrOJrhDEe2QK54y_oSyxw" name="flow">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  </ownedParameter>
                </ownedOperation>
                <ownedOperation xmi:id="_2qrOJ7hDEe2QK54y_oSyxw" name="setSrc" visibility="private" method="_23bQvLhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_2qrOKLhDEe2QK54y_oSyxw" name="src">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  </ownedParameter>
                </ownedOperation>
                <ownedOperation xmi:id="_2qr1MLhDEe2QK54y_oSyxw" name="setSnk" visibility="private" method="_23bQvrhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_2qr1MbhDEe2QK54y_oSyxw" name="snk">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  </ownedParameter>
                </ownedOperation>
                <ownedOperation xmi:id="_2qr1MrhDEe2QK54y_oSyxw" name="setChannel" visibility="private" method="_23bQwLhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_2qr1M7hDEe2QK54y_oSyxw" name="channel">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  </ownedParameter>
                </ownedOperation>
                <ownedOperation xmi:id="_2qr1NLhDEe2QK54y_oSyxw" name="unused" method="_23bQwrhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_2qr1NbhDEe2QK54y_oSyxw" direction="return">
                    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  </ownedParameter>
                </ownedOperation>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="_2qscQ7hDEe2QK54y_oSyxw" name="ListenerDsl" visibility="private" isLeaf="true">
                <generalization xmi:id="_22GbArhDEe2QK54y_oSyxw" general="_22Fz8bhDEe2QK54y_oSyxw"/>
                <ownedAttribute xmi:id="_225sQLhDEe2QK54y_oSyxw" name="inAction" visibility="package">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedAttribute>
                <ownedAttribute xmi:id="_225sQrhDEe2QK54y_oSyxw" name="instructionParametersArrayList" visibility="package" type="_2z5bkLhDEe2QK54y_oSyxw" association="_24HNNLhDEe2QK54y_oSyxw"/>
                <ownedAttribute xmi:id="_226TUbhDEe2QK54y_oSyxw" name="instructionParameters" visibility="package" type="_2qqnELhDEe2QK54y_oSyxw" association="_24HNN7hDEe2QK54y_oSyxw"/>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23bQx7hDEe2QK54y_oSyxw" name="ListenerDsl" specification="_2qtDULhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23bQyLhDEe2QK54y_oSyxw" type="_2qscQ7hDEe2QK54y_oSyxw" direction="return"/>
                  <language>java</language>
                  <body>inAction = false;&#xD;
         instructionParametersArrayList = new ArrayList&lt;InstructionParameters>();&#xD;
     </body>
                </ownedBehavior>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23bQybhDEe2QK54y_oSyxw" name="getInstructionParameters" specification="_2qtDVLhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23bQyrhDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
                  <language>java</language>
                  <body>return instructionParametersArrayList;&#xD;
     </body>
                </ownedBehavior>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23bQy7hDEe2QK54y_oSyxw" name="enterAction" specification="_20-ZobhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23bQzLhDEe2QK54y_oSyxw" name="ctx" type="_209LgLhDEe2QK54y_oSyxw"/>
                  <language>java</language>
                  <body>inAction = true;&#xD;
         instructionParameters = new InstructionParameters();  // create a new instance of the parameter structure with default initialization&#xD;
     </body>
                </ownedBehavior>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23bQzbhDEe2QK54y_oSyxw" name="exitAction" specification="_20_AsLhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23bQzrhDEe2QK54y_oSyxw" name="ctx" type="_209LgLhDEe2QK54y_oSyxw"/>
                  <language>java</language>
                  <body>inAction = false;&#xD;
         instructionParametersArrayList.add(instructionParameters);  // this action is done, so add the parameters to the list&#xD;
     </body>
                </ownedBehavior>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23b3wLhDEe2QK54y_oSyxw" name="exitFlowName" specification="_20_nwbhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23b3wbhDEe2QK54y_oSyxw" name="ctx" type="_20_AtbhDEe2QK54y_oSyxw"/>
                  <language>java</language>
                  <body>if (inAction) {&#xD;
             String flowName = ctx.getText(); // get the flow name&#xD;
             instructionParameters.setFlow(flowName);&#xD;
         }&#xD;
     </body>
                </ownedBehavior>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23b3wrhDEe2QK54y_oSyxw" name="exitCmd" specification="_21AO0bhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23b3w7hDEe2QK54y_oSyxw" name="ctx" type="_20_nxrhDEe2QK54y_oSyxw"/>
                  <language>java</language>
                  <body>String command = ctx.getText(); // get the command/instruction name&#xD;
         instructionParameters.setName(command);&#xD;
     </body>
                </ownedBehavior>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23b3xLhDEe2QK54y_oSyxw" name="exitSrcNode" specification="_21A14bhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23b3xbhDEe2QK54y_oSyxw" name="ctx" type="_21AO1rhDEe2QK54y_oSyxw"/>
                  <language>java</language>
                  <body>String srcName = ctx.getText(); // get the src node name&#xD;
         instructionParameters.setSrc(srcName);&#xD;
         var command = instructionParameters.getName();&#xD;
         if (command.equals(PUSH)) {&#xD;
         	/* if push then coordinator is src &#xD;
         	 */&#xD;
         	instructionParameters.setCoordinator(srcName);&#xD;
         }else {&#xD;
         	/* otherwise listener is src */&#xD;
         	instructionParameters.setListener(srcName);&#xD;
         }&#xD;
     </body>
                </ownedBehavior>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23b3xrhDEe2QK54y_oSyxw" name="exitSnkNode" specification="_21CEAbhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23b3x7hDEe2QK54y_oSyxw" name="ctx" type="_21Bc8rhDEe2QK54y_oSyxw"/>
                  <language>java</language>
                  <body>String snkName = ctx.getText(); // get the snk node name&#xD;
         instructionParameters.setSnk(snkName);&#xD;
         var command = instructionParameters.getName();&#xD;
         if (command.equals(PUSH)) {&#xD;
         	/* if push then listener is snk */&#xD;
         	instructionParameters.setListener(snkName);&#xD;
         }else {&#xD;
         	/* otherwise coordinator is snk &#xD;
         	 */&#xD;
         	instructionParameters.setCoordinator(snkName);&#xD;
         }&#xD;
     </body>
                </ownedBehavior>
                <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23b3yLhDEe2QK54y_oSyxw" name="exitChannel" specification="_21CrEbhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_23b3ybhDEe2QK54y_oSyxw" name="ctx" type="_21CEBrhDEe2QK54y_oSyxw"/>
                  <language>java</language>
                  <body>String channelString = ctx.getText(); // get the snk node name&#xD;
     	String channel; // resulting channel that will be extracted from the channel string&#xD;
     	Integer index = channelString.indexOf('#');&#xD;
     	if (index >= 0 &amp;&amp; index &lt; channelString.length()) {&#xD;
     		channel = channelString.substring(index+1); // get string starting at first channel number&#xD;
     	} else {&#xD;
     		channel = UNKNOWN; // no valid channel in the channelString, so set to UNKNOWN&#xD;
     	}	&#xD;
         instructionParameters.setChannel(channel); &#xD;
     </body>
                </ownedBehavior>
                <ownedOperation xmi:id="_2qtDULhDEe2QK54y_oSyxw" name="ListenerDsl" visibility="package" method="_23bQx7hDEe2QK54y_oSyxw">
                  <eAnnotations xmi:id="_2qtDUbhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                    <details xmi:id="_2qtDUrhDEe2QK54y_oSyxw" key="create"/>
                  </eAnnotations>
                  <ownedParameter xmi:id="_2qtDU7hDEe2QK54y_oSyxw" type="_2qscQ7hDEe2QK54y_oSyxw" direction="return"/>
                </ownedOperation>
                <ownedOperation xmi:id="_2qtDVLhDEe2QK54y_oSyxw" name="getInstructionParameters" method="_23bQybhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_22GbAbhDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
                </ownedOperation>
                <ownedOperation xmi:id="_20-ZobhDEe2QK54y_oSyxw" name="enterAction" method="_23bQy7hDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_20-ZorhDEe2QK54y_oSyxw" name="ctx" type="_209LgLhDEe2QK54y_oSyxw"/>
                </ownedOperation>
                <ownedOperation xmi:id="_20_AsLhDEe2QK54y_oSyxw" name="exitAction" method="_23bQzbhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_20_AsbhDEe2QK54y_oSyxw" name="ctx" type="_209LgLhDEe2QK54y_oSyxw"/>
                </ownedOperation>
                <ownedOperation xmi:id="_20_nwbhDEe2QK54y_oSyxw" name="exitFlowName" method="_23b3wLhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_20_nwrhDEe2QK54y_oSyxw" name="ctx" type="_20_AtbhDEe2QK54y_oSyxw"/>
                </ownedOperation>
                <ownedOperation xmi:id="_21AO0bhDEe2QK54y_oSyxw" name="exitCmd" method="_23b3wrhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_21AO0rhDEe2QK54y_oSyxw" name="ctx" type="_20_nxrhDEe2QK54y_oSyxw"/>
                </ownedOperation>
                <ownedOperation xmi:id="_21A14bhDEe2QK54y_oSyxw" name="exitSrcNode" method="_23b3xLhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_21A14rhDEe2QK54y_oSyxw" name="ctx" type="_21AO1rhDEe2QK54y_oSyxw"/>
                </ownedOperation>
                <ownedOperation xmi:id="_21CEAbhDEe2QK54y_oSyxw" name="exitSnkNode" method="_23b3xrhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_21CEArhDEe2QK54y_oSyxw" name="ctx" type="_21Bc8rhDEe2QK54y_oSyxw"/>
                </ownedOperation>
                <ownedOperation xmi:id="_21CrEbhDEe2QK54y_oSyxw" name="exitChannel" method="_23b3yLhDEe2QK54y_oSyxw">
                  <ownedParameter xmi:id="_21CrErhDEe2QK54y_oSyxw" name="ctx" type="_21CEBrhDEe2QK54y_oSyxw"/>
                </ownedOperation>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qvfkLhDEe2QK54y_oSyxw" name="WarpPoset">
              <ownedComment xmi:id="_23rIU7hDEe2QK54y_oSyxw">
                <body>ConnectivityPoset extends Poset by selecting&#xD;
the base station in the flow as the primary &#xD;
coordinator&#xD;
&#xD;
@author sgoddard</body>
              </ownedComment>
              <generalization xmi:id="_21FHVbhDEe2QK54y_oSyxw" general="_2ps9wLhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23b3yrhDEe2QK54y_oSyxw" name="WarpPoset" specification="_21FHULhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23b3y7hDEe2QK54y_oSyxw" name="workload" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23b3zLhDEe2QK54y_oSyxw" type="_2qvfkLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(workload);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23b3zbhDEe2QK54y_oSyxw" name="findCoordinator" specification="_22HpILhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23b3zrhDEe2QK54y_oSyxw" name="nodesInFlow" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23b3z7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var baseStation = findBaseStation();&#xD;
		var baseName = baseStation.getName();&#xD;
		var size = nodesInFlow.size();&#xD;
		/* assume flow sink is the coordinator */&#xD;
		Integer coordinatorIndex = size-1;&#xD;
&#xD;
		if (baseName.equals(nodesInFlow.get(0).getName())) {&#xD;
			/* flow src is coordinator, so update index */&#xD;
			coordinatorIndex = 0;&#xD;
		}&#xD;
		return coordinatorIndex;&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_21FHULhDEe2QK54y_oSyxw" name="WarpPoset" visibility="package" method="_23b3yrhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_21FHUrhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_21FHU7hDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_21FHUbhDEe2QK54y_oSyxw" name="workload" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21FHVLhDEe2QK54y_oSyxw" type="_2qvfkLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_22HpILhDEe2QK54y_oSyxw" name="findCoordinator" visibility="protected" method="_23b3zbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_22HpIbhDEe2QK54y_oSyxw" name="nodesInFlow" type="_2z5bkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_22HpIrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2qwGoLhDEe2QK54y_oSyxw" name="WarpSystem">
              <ownedComment xmi:id="_23rIVLhDEe2QK54y_oSyxw">
                <body>@author sgoddard&#xD;
@version 1.4</body>
              </ownedComment>
              <ownedAttribute xmi:id="_226TU7hDEe2QK54y_oSyxw" name="program" visibility="private" type="_2pzEYbhDEe2QK54y_oSyxw" association="_24HNOrhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_2266YbhDEe2QK54y_oSyxw" name="workLoad" visibility="private" type="_2q5QkLhDEe2QK54y_oSyxw" association="_24H0QbhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_2266Y7hDEe2QK54y_oSyxw" name="ra" visibility="private" type="_2qExMLhDEe2QK54y_oSyxw" association="_24H0RLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_2266ZbhDEe2QK54y_oSyxw" name="la" visibility="private" type="_2pka4LhDEe2QK54y_oSyxw" association="_24H0R7hDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_227hcbhDEe2QK54y_oSyxw" name="ca" visibility="private" type="_2o8IwLhDEe2QK54y_oSyxw" association="_24IbUbhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_227hc7hDEe2QK54y_oSyxw" name="numChannels" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_228Ig7hDEe2QK54y_oSyxw" name="verboseMode" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_228IhLhDEe2QK54y_oSyxw" value="false"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_228IhrhDEe2QK54y_oSyxw" name="latencyRequested" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_228vkLhDEe2QK54y_oSyxw" value="false"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23b30rhDEe2QK54y_oSyxw" name="WarpSystem" specification="_22IQMrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23b307hDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23b31LhDEe2QK54y_oSyxw" name="numChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23b31bhDEe2QK54y_oSyxw" name="choice" type="_214_pbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23b31rhDEe2QK54y_oSyxw" type="_2qwGoLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>this.workLoad = workLoad;&#xD;
 this.numChannels = numChannels;&#xD;
 createProgram(workLoad, numChannels, choice);&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23b317hDEe2QK54y_oSyxw" name="toWorkload" specification="_2qwtsLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23b32LhDEe2QK54y_oSyxw" type="_2q5QkLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return workLoad;&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ce0LhDEe2QK54y_oSyxw" name="toProgram" specification="_2qxUw7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ce0bhDEe2QK54y_oSyxw" type="_2pzEYbhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return program;&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ce0rhDEe2QK54y_oSyxw" name="toReliabilityAnalysis" specification="_2qx70rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ce07hDEe2QK54y_oSyxw" type="_2qExMLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>ra = new ReliabilityAnalysis(program);&#xD;
 return ra;&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ce1LhDEe2QK54y_oSyxw" name="toSimulator" specification="_2qx71rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ce1bhDEe2QK54y_oSyxw" type="_2qXFE7hDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return null;&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ce1rhDEe2QK54y_oSyxw" name="toLatencyAnalysis" specification="_2qyi4rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ce17hDEe2QK54y_oSyxw" type="_2pka4LhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>la = new LatencyAnalysis(this);&#xD;
 return la;&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ce2LhDEe2QK54y_oSyxw" name="toChannelAnalysis" specification="_2qzJ8rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ce2bhDEe2QK54y_oSyxw" type="_2o8IwLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>ca = new ChannelAnalysis(this);&#xD;
 return ca;&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ce2rhDEe2QK54y_oSyxw" name="reliabilitiesMet" specification="_2qzxALhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ce27hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>if (ra == null) {&#xD;
   ra = new ReliabilityAnalysis(program);&#xD;
 }&#xD;
 return ra.verifyReliabilities();&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ce3LhDEe2QK54y_oSyxw" name="deadlinesMet" specification="_2qzxBbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ce3bhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>Boolean result = true;&#xD;
 if (program.deadlineMisses().size() > 0) {&#xD;
   result = false;&#xD;
 }&#xD;
 return result;&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ce3rhDEe2QK54y_oSyxw" name="createProgram" specification="_22I3QbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ce37hDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23ce4LhDEe2QK54y_oSyxw" name="numChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23ce4bhDEe2QK54y_oSyxw" name="choice" type="_214_pbhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>program = new Program(workLoad, numChannels, choice, verboseMode, latencyRequested);&#xD;
&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ce4rhDEe2QK54y_oSyxw" name="getNumFaults" specification="_2q0YE7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ce47hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>return program.getNumFaults();&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ce5LhDEe2QK54y_oSyxw" name="getMinPacketReceptionRate" specification="_2q0_I7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ce5bhDEe2QK54y_oSyxw" type="_21600rhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return workLoad.getMinPacketReceptionRate();&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ce5rhDEe2QK54y_oSyxw" name="getE2e" specification="_2q0_J7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ce57hDEe2QK54y_oSyxw" type="_21600rhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return workLoad.getE2e();&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ce6LhDEe2QK54y_oSyxw" name="getName" specification="_2q1mM7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ce6bhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>return workLoad.getName();&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ce6rhDEe2QK54y_oSyxw" name="getSchedulerName" specification="_2q2NQLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ce67hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>return program.getSchedulerName();&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ce7LhDEe2QK54y_oSyxw" name="getNumTransmissions" specification="_2q2NRbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ce7bhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>return program.getNumTransmissions();&#xD;
  </body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ce7rhDEe2QK54y_oSyxw" name="getOptimizationFlag" specification="_2q20UrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ce77hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>return program.getOptimizationFlag();&#xD;
  </body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2qwtsLhDEe2QK54y_oSyxw" name="toWorkload" method="_23b317hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21GVcLhDEe2QK54y_oSyxw" type="_2q5QkLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qxUw7hDEe2QK54y_oSyxw" name="toProgram" method="_23ce0LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21GVcbhDEe2QK54y_oSyxw" type="_2pzEYbhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qx70rhDEe2QK54y_oSyxw" name="toReliabilityAnalysis" method="_23ce0rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21GVcrhDEe2QK54y_oSyxw" type="_2qExMLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qx71rhDEe2QK54y_oSyxw" name="toSimulator" method="_23ce1LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21GVc7hDEe2QK54y_oSyxw" type="_2qXFE7hDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qyi4rhDEe2QK54y_oSyxw" name="toLatencyAnalysis" method="_23ce1rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21G8gLhDEe2QK54y_oSyxw" type="_2pka4LhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qzJ8rhDEe2QK54y_oSyxw" name="toChannelAnalysis" method="_23ce2LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21G8gbhDEe2QK54y_oSyxw" type="_2o8IwLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2qzxALhDEe2QK54y_oSyxw" name="reliabilitiesMet" method="_23ce2rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2qzxAbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2qzxBbhDEe2QK54y_oSyxw" name="deadlinesMet" method="_23ce3LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2qzxBrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q0YE7hDEe2QK54y_oSyxw" name="getNumFaults" method="_23ce4rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2q0YFLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q0_I7hDEe2QK54y_oSyxw" name="getMinPacketReceptionRate" method="_23ce5LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_22I3RbhDEe2QK54y_oSyxw" type="_21600rhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2q0_J7hDEe2QK54y_oSyxw" name="getE2e" method="_23ce5rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_22I3RrhDEe2QK54y_oSyxw" type="_21600rhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2q1mM7hDEe2QK54y_oSyxw" name="getName" method="_23ce6LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2q1mNLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q2NQLhDEe2QK54y_oSyxw" name="getSchedulerName" method="_23ce6rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2q2NQbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q2NRbhDEe2QK54y_oSyxw" name="getNumTransmissions" method="_23ce7LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2q2NRrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q20UrhDEe2QK54y_oSyxw" name="getOptimizationFlag" method="_23ce7rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2q20U7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q20V7hDEe2QK54y_oSyxw" name="toSensorNetwork"/>
              <ownedOperation xmi:id="_22IQMrhDEe2QK54y_oSyxw" name="WarpSystem" method="_23b30rhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_22IQNrhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_22IQN7hDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_22IQM7hDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_22IQNLhDEe2QK54y_oSyxw" name="numChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_22IQNbhDEe2QK54y_oSyxw" name="choice" type="_214_pbhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_22I3QLhDEe2QK54y_oSyxw" type="_2qwGoLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_22I3QbhDEe2QK54y_oSyxw" name="createProgram" visibility="private" method="_23ce3rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_22I3QrhDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_22I3Q7hDEe2QK54y_oSyxw" name="numChannels">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_22I3RLhDEe2QK54y_oSyxw" name="choice" type="_214_pbhDEe2QK54y_oSyxw"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2q5QkLhDEe2QK54y_oSyxw" name="WorkLoad">
              <ownedComment xmi:id="_23rIVbhDEe2QK54y_oSyxw">
                <body>&lt;h1>Represents all the flows in a file.&lt;/h1>&#xD;
&#xD;
Build the nodes and flows for the workload described in the workload&#xD;
description file, whose name is passed into the Constructor via the parameter&#xD;
inputFileName. Good default values for the constructors are m = 0.9, e2e =&#xD;
0.99, and numFaults = 1 when the second constructor is used.&#xD;
&#xD;
@author sgoddard&#xD;
@version 1.4&#xD;
 *</body>
              </ownedComment>
              <generalization xmi:id="_21Km5LhDEe2QK54y_oSyxw" general="_2rGE4LhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_228vkrhDEe2QK54y_oSyxw" name="DEFAULT_PRIORITY" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_228vk7hDEe2QK54y_oSyxw" value="0"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_229WoLhDEe2QK54y_oSyxw" name="DEFAULT_INDEX" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_229WobhDEe2QK54y_oSyxw" value="0"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_229WorhDEe2QK54y_oSyxw" name="DEFAULT_TX_NUM" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_229Wo7hDEe2QK54y_oSyxw" value="0"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_229WpLhDEe2QK54y_oSyxw" name="FLOW_WARNING" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_229WpbhDEe2QK54y_oSyxw" value="&quot;\n\tWarning! Bad situation: &quot; + &quot;Flow %s doesn't exist but trying to &quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_229WprhDEe2QK54y_oSyxw" name="numFaults" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_229Wp7hDEe2QK54y_oSyxw" value="0"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_229WqLhDEe2QK54y_oSyxw" name="minPacketReceptionRate" type="_21600rhDEe2QK54y_oSyxw" isReadOnly="true">
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_229WqbhDEe2QK54y_oSyxw" value="0.0"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_229WqrhDEe2QK54y_oSyxw" name="e2e" visibility="private" type="_21600rhDEe2QK54y_oSyxw">
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_229Wq7hDEe2QK54y_oSyxw" value="0.0"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_2299sLhDEe2QK54y_oSyxw" name="intForNodeNames">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_2299sbhDEe2QK54y_oSyxw" value="false"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_2299srhDEe2QK54y_oSyxw" name="intForFlowNames" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_2299s7hDEe2QK54y_oSyxw" value="false"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_2299tbhDEe2QK54y_oSyxw" name="flows" type="_2pZbwLhDEe2QK54y_oSyxw" association="_23rIVrhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_2299trhDEe2QK54y_oSyxw" name="nodes" type="_2pqhgLhDEe2QK54y_oSyxw" association="_23rvYLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_2299t7hDEe2QK54y_oSyxw" name="name" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22-kwbhDEe2QK54y_oSyxw" name="flowNamesInOriginalOrder" type="_2z5bkLhDEe2QK54y_oSyxw" association="_24IbVLhDEe2QK54y_oSyxw">
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22-kw7hDEe2QK54y_oSyxw" value="new ArrayList&lt;>()"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22-kxLhDEe2QK54y_oSyxw" name="flowNamesInPriorityOrder" type="_2z5bkLhDEe2QK54y_oSyxw" association="_24IbV7hDEe2QK54y_oSyxw">
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22_L0LhDEe2QK54y_oSyxw" value="new ArrayList&lt;>()"/>
              </ownedAttribute>
              <interfaceRealization xmi:id="_21IxtLhDEe2QK54y_oSyxw" client="_2q5QkLhDEe2QK54y_oSyxw" supplier="_2qExM7hDEe2QK54y_oSyxw" contract="_2qExM7hDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dF4LhDEe2QK54y_oSyxw" name="WorkLoad" specification="_22KFYLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dF4bhDEe2QK54y_oSyxw" name="m" type="_21600rhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23dF4rhDEe2QK54y_oSyxw" name="e2e" type="_21600rhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23dF47hDEe2QK54y_oSyxw" name="inputFileName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23dF5LhDEe2QK54y_oSyxw" type="_2q5QkLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(inputFileName);&#xD;
		setDefaultParameters();&#xD;
		minPacketReceptionRate = m; // use file manager passed to this object&#xD;
		this.e2e = e2e; // use populate this flows object as the input file is read&#xD;
		/*&#xD;
		 * Read input file, build the AST of graph and the listener will build the node&#xD;
		 * and flow data objects&#xD;
		 */&#xD;
		WorkLoadListener.buildNodesAndFlows(this);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dF5bhDEe2QK54y_oSyxw" name="WorkLoad" specification="_22KscLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dF5rhDEe2QK54y_oSyxw" name="numFaults">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23dF57hDEe2QK54y_oSyxw" name="m" type="_21600rhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23dF6LhDEe2QK54y_oSyxw" name="e2e" type="_21600rhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23dF6bhDEe2QK54y_oSyxw" name="inputFileName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23dF6rhDEe2QK54y_oSyxw" type="_2q5QkLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(inputFileName);&#xD;
		setDefaultParameters();&#xD;
		this.numFaults = numFaults;&#xD;
		minPacketReceptionRate = m; // use file manager passed to this object&#xD;
		this.e2e = e2e; // use populate this flows object as the input file is read&#xD;
		/*&#xD;
		 * Read input file, build the AST of graph and the listener will build the node&#xD;
		 * and flow data objects&#xD;
		 */&#xD;
		WorkLoadListener.buildNodesAndFlows(this);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dF67hDEe2QK54y_oSyxw" name="setDefaultParameters" specification="_2q6esLhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>intForNodeNames = true; // default is that node names are all alpha names&#xD;
		intForFlowNames = true; // default is that node names are all alpha names&#xD;
		flows = new FlowMap(); // map of all flow nodes in the WARP graph (&lt;name, Flow>)&#xD;
		nodes = new NodeMap(); // map of all graph nodes in the WARP graph (&lt;name, Node>)&#xD;
		flowNamesInOriginalOrder = new ArrayList&lt;>(); // array to hold names of flows to preserve their&#xD;
														// order&#xD;
		flowNamesInPriorityOrder = new ArrayList&lt;>();&#xD;
		numFaults = DEFAULT_TX_NUM;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dF7LhDEe2QK54y_oSyxw" name="getE2e" specification="_2q7FwLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dF7bhDEe2QK54y_oSyxw" type="_21600rhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return e2e;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dF7rhDEe2QK54y_oSyxw" name="getIntForFlowNames" specification="_2q7FwbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dF77hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>return intForFlowNames;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dF8LhDEe2QK54y_oSyxw" name="getName" specification="_2q7Fw7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dF8bhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>return name;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dF8rhDEe2QK54y_oSyxw" name="setMinPacketReceptionRate" specification="_22KsebhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dF87hDEe2QK54y_oSyxw" name="minPacketReceptionRate" type="_21600rhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>this.minPacketReceptionRate = minPacketReceptionRate;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dF9LhDEe2QK54y_oSyxw" name="getMaxPhase" specification="_2q7FxbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dF9bhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var queue = new SchedulableObjectQueue&lt;Flow>(new MaxPhaseComparator&lt;Flow>(), flows.values());&#xD;
		return queue.poll().getPhase();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dF9rhDEe2QK54y_oSyxw" name="getMinPeriod" specification="_2q7s0LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dF97hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var queue = new SchedulableObjectQueue&lt;Flow>(new PeriodComparator&lt;Flow>(), flows.values());&#xD;
		return queue.poll().getPeriod();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dF-LhDEe2QK54y_oSyxw" name="setE2e" specification="_22LTgLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dF-bhDEe2QK54y_oSyxw" name="e2e" type="_21600rhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>this.e2e = e2e;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dF-rhDEe2QK54y_oSyxw" name="setIntForFlowNames" specification="_2q8T4LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dF-7hDEe2QK54y_oSyxw" name="intForFlowNames">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>this.intForFlowNames = intForFlowNames;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dF_LhDEe2QK54y_oSyxw" name="setName" specification="_2q8T4rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dF_bhDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>this.name = name;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dF_rhDEe2QK54y_oSyxw" name="setNodeChannel" specification="_2q8T5LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dF_7hDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23dGALhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var node = nodes.get(name); // get the node object&#xD;
		node.setChannel(channel);&#xD;
		nodes.put(name, node); // update the nodes map with the updated object&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dGAbhDEe2QK54y_oSyxw" name="getNodeChannel" specification="_2q8T57hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dGArhDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23dGA7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var node = nodes.get(name); // get the node object&#xD;
		return node.getChannel();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ds8LhDEe2QK54y_oSyxw" name="addFlow" specification="_2q868LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ds8bhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>/*&#xD;
		 * add a new flow node to the Flows dictionary. Only name, priority, and index&#xD;
		 * are changed from default values priority is set to the number of flows&#xD;
		 * already added (index), 0 for first flow This will create a default priority&#xD;
		 * equal to the order listed in the input graph file. We also set index to the&#xD;
		 * same value so we can preserve that order as a secondary sort key. The&#xD;
		 * initalPriority field is probably not needed, but it might be useful in the&#xD;
		 * future?? If the optional flow parameters (priority, period, ...) is set, then&#xD;
		 * this default priority will be over written&#xD;
		 */&#xD;
		if (flows.containsKey(flowName)) {&#xD;
			System.out.printf(&#xD;
					&quot;\n\tWarning! A flow with name %s already exists. &quot; + &quot;It has been replaced with a new flow\n.&quot;, flowName);&#xD;
		}&#xD;
		var index = flows.size();&#xD;
		var flowNode = new Flow(flowName, index, index);&#xD;
		flows.put(flowName, flowNode);&#xD;
		if (!Utilities.isInteger(flowName) &amp;&amp; intForFlowNames) {&#xD;
			intForFlowNames = false; // set false because name not is a number; &amp;&amp; above makes sure we&#xD;
										// only set it once&#xD;
		}&#xD;
		flowNamesInOriginalOrder.add(flowName);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ds8rhDEe2QK54y_oSyxw" name="isIntForNodeNames" specification="_2q868rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ds87hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>// returns true if all node names are ints&#xD;
		return intForNodeNames;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ds9LhDEe2QK54y_oSyxw" name="isIntForFlowNames" specification="_2q869LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ds9bhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
                <language>java</language>
                <body>// returns true if all flow names are an ints&#xD;
		return intForFlowNames;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ds9rhDEe2QK54y_oSyxw" name="addNodeToFlow" specification="_2q9iALhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ds97hDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23ds-LhDEe2QK54y_oSyxw" name="nodeName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>if (!Utilities.isInteger(nodeName) &amp;&amp; intForNodeNames) {&#xD;
			/*&#xD;
			 * set false because name not is a number; &amp;&amp; above makes sure we only set it&#xD;
			 * once&#xD;
			 */&#xD;
			intForNodeNames = false;&#xD;
		}&#xD;
		if (!nodes.containsKey(nodeName)) { // create the node and add it to nodes if map doesn't have&#xD;
											// this node already.&#xD;
			/* If the node already exists, just need to add to the flow */&#xD;
			var index = nodes.size(); // nodeIndex will be the order added&#xD;
			var graphNode = new Node(nodeName, DEFAULT_PRIORITY, index); // create a new graph node&#xD;
			nodes.put(nodeName, graphNode); // add it to the map of nodes&#xD;
		}&#xD;
		/*&#xD;
		 * Node is now created and in the nodes map Next we need to get the current flow&#xD;
		 * and add this node to that flow by appending it to the node array for that&#xD;
		 * flow&#xD;
		 */&#xD;
		var flowNode = getFlow(flowName);&#xD;
		var graphNode = new Node(nodeName, flowNode.nodes.size(), DEFAULT_INDEX);&#xD;
		/*&#xD;
		 * the priority is the node's index in the flow, which is the current array size&#xD;
		 */&#xD;
		flowNode.addNode(graphNode);&#xD;
		flowNode.linkTxAndTotalCost.add(DEFAULT_TX_NUM);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ds-bhDEe2QK54y_oSyxw" name="getFlowPriority" specification="_2q9iA7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ds-rhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23ds-7hDEe2QK54y_oSyxw" name="nodeName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23ds_LhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var priority = 0;&#xD;
		var flow = getFlow(flowName);&#xD;
		Iterator&lt;Node> nodes = flow.nodes.iterator();&#xD;
		while (nodes.hasNext()) {&#xD;
			var node = nodes.next();&#xD;
			// why is == used?&#xD;
			if (node.getName() == nodeName) {&#xD;
				priority = node.getPriority(); // found the src node, set its index&#xD;
				break;&#xD;
			}&#xD;
		}&#xD;
		return priority;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ds_bhDEe2QK54y_oSyxw" name="setFlowPriority" specification="_2q9iB7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ds_rhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23ds_7hDEe2QK54y_oSyxw" name="priority">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var flowNode = getFlow(flowName);&#xD;
		flowNode.setPriority(priority);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dtALhDEe2QK54y_oSyxw" name="setFlowPeriod" specification="_2q9iCrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dtAbhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23dtArhDEe2QK54y_oSyxw" name="period">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var flowNode = getFlow(flowName);&#xD;
		flowNode.setPeriod(period);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dtA7hDEe2QK54y_oSyxw" name="setFlowDeadline" specification="_2q-JELhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dtBLhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23dtBbhDEe2QK54y_oSyxw" name="deadline">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var flowNode = getFlow(flowName);&#xD;
		flowNode.setDeadline(deadline);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dtBrhDEe2QK54y_oSyxw" name="setFlowPhase" specification="_2q-JE7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dtB7hDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23dtCLhDEe2QK54y_oSyxw" name="phase">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var flowNode = getFlow(flowName);&#xD;
		flowNode.setPhase(phase);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dtCbhDEe2QK54y_oSyxw" name="getFlowIndex" specification="_2q-JFrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dtCrhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23dtC7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var flowNode = getFlow(flowName);&#xD;
		return flowNode.index;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dtDLhDEe2QK54y_oSyxw" name="getFlowPriority" specification="_2q-JGbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dtDbhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23dtDrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var flowNode = getFlow(flowName);&#xD;
		return flowNode.getPriority();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dtD7hDEe2QK54y_oSyxw" name="getFlowPeriod" specification="_2q-wIbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dtELhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23dtEbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var flowNode = getFlow(flowName);&#xD;
		return flowNode.getPeriod();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dtErhDEe2QK54y_oSyxw" name="getFlowDeadline" specification="_2q-wJLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dtE7hDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23dtFLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var flowNode = getFlow(flowName);&#xD;
		return flowNode.getDeadline();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23dtFbhDEe2QK54y_oSyxw" name="getFlowPhase" specification="_2q-wJ7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23dtFrhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23dtF7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var flowNode = getFlow(flowName);&#xD;
		return flowNode.getPhase();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23eUALhDEe2QK54y_oSyxw" name="getFlowTxAttemptsPerLink" specification="_2q_XMLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23eUAbhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23eUArhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var flowNode = getFlow(flowName);&#xD;
		return flowNode.numTxPerLink;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23eUA7hDEe2QK54y_oSyxw" name="setFlowsInPriorityOrder" specification="_2q_XM7hDEe2QK54y_oSyxw">
                <language>java</language>
                <body>// create a list of Flow objects from the FlowMap using the stream interface.&#xD;
		List&lt;Flow> unsortedFlows = flows.values().stream().collect(Collectors.toList());&#xD;
		// Now sort by a secondary key, which is index in this case&#xD;
		List&lt;Flow> sortedByIndex = unsortedFlows.stream().sorted(Comparator.comparing(Flow::getIndex))&#xD;
				.collect(Collectors.toList());&#xD;
		// Now sort by primary key, which is priority in this case&#xD;
		List&lt;Flow> sortedFlows = sortedByIndex.stream().sorted(Comparator.comparing(Flow::getPriority))&#xD;
				.collect(Collectors.toList());&#xD;
		// Finally, create a new flowNamesInPriorityOrder that contains the flow names&#xD;
		// in the requested&#xD;
		// order&#xD;
		flowNamesInPriorityOrder = new ArrayList&lt;>();&#xD;
		sortedFlows.forEach((node) -> flowNamesInPriorityOrder.add(node.getName()));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23eUBLhDEe2QK54y_oSyxw" name="setFlowsInDMorder" specification="_2q_XNLhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>/* create a list of Flow objects from the FlowMap using the stream interface. */&#xD;
		List&lt;Flow> unsortedFlows = flows.values().stream().collect(Collectors.toList());&#xD;
		/* Now sort by a secondary key, which is priority in this case */&#xD;
		List&lt;Flow> sortedByPriority = unsortedFlows.stream().sorted(Comparator.comparing(Flow::getPriority))&#xD;
				.collect(Collectors.toList());&#xD;
		/* Now sort by primary key, which is deadline in this case */&#xD;
		List&lt;Flow> sortedFlows = sortedByPriority.stream().sorted(Comparator.comparing(Flow::getDeadline))&#xD;
				.collect(Collectors.toList());&#xD;
		/*&#xD;
		 * Finally, create a new flowNamesInPriorityOrder that contains the flow names&#xD;
		 * in the requested order&#xD;
		 */&#xD;
		flowNamesInPriorityOrder = new ArrayList&lt;>();&#xD;
		sortedFlows.forEach((node) -> flowNamesInPriorityOrder.add(node.getName()));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23eUBbhDEe2QK54y_oSyxw" name="setFlowsInRMorder" specification="_2q_XNbhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>// create a list of Flow objects from the FlowMap using the stream interface.&#xD;
		List&lt;Flow> unsortedFlows = flows.values().stream().collect(Collectors.toList());&#xD;
		// Now sort by a secondary key, which is priority in this case&#xD;
		List&lt;Flow> sortedByPriority = unsortedFlows.stream().sorted(Comparator.comparing(Flow::getPriority))&#xD;
				.collect(Collectors.toList());&#xD;
		// Now sort by primary key, which is period in this case&#xD;
		List&lt;Flow> sortedFlows = sortedByPriority.stream().sorted(Comparator.comparing(Flow::getPeriod))&#xD;
				.collect(Collectors.toList());&#xD;
		// Finally, create a new flowNamesInPriorityOrder that contains the flow names&#xD;
		// in the requested&#xD;
		// order&#xD;
		flowNamesInPriorityOrder = new ArrayList&lt;>();&#xD;
		sortedFlows.forEach((node) -> flowNamesInPriorityOrder.add(node.getName()));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23eUBrhDEe2QK54y_oSyxw" name="setFlowsInRealTimeHARTorder" specification="_2q_XNrhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>setFlowsInPriorityOrder(); // use Priority order for RealTimeHART&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23eUB7hDEe2QK54y_oSyxw" name="finalizeCurrentFlow" specification="_2q_XN7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23eUCLhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>if (numFaults > 0) {&#xD;
			finalizeFlowWithFixedFaultTolerance(flowName);&#xD;
		} else {&#xD;
			finalizeFlowWithE2eParameters(flowName);&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23eUCbhDEe2QK54y_oSyxw" name="nextReleaseTime" specification="_2q_XObhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23eUCrhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23eUC7hDEe2QK54y_oSyxw" name="currentTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23eUDLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var flow = getFlow(flowName);&#xD;
		flow.setLastUpdateTime(currentTime);&#xD;
		flow.setNextReleaseTime(currentTime);&#xD;
		return flow.getReleaseTime(); // next release Time at or after currentTime&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23eUDbhDEe2QK54y_oSyxw" name="nextAbsoluteDeadline" specification="_2q_-QbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23eUDrhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23eUD7hDEe2QK54y_oSyxw" name="currentTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23eUELhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var flow = getFlow(flowName);&#xD;
		flow.setLastUpdateTime(currentTime);&#xD;
		flow.setNextReleaseTime(currentTime);&#xD;
		return flow.getReleaseTime() + flow.getDeadline(); // next deadline after currentTime&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23eUEbhDEe2QK54y_oSyxw" name="finalizeFlowWithE2eParameters" specification="_2q_-RbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23eUErhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>var flowNode = flows.get(flowName);&#xD;
		var m = minPacketReceptionRate; // shorten the name :-)&#xD;
		if (flowNode != null) {&#xD;
			var nodes = flowNode.nodes;&#xD;
			int nHops = nodes.size();&#xD;
			if (nHops &lt; 1) {&#xD;
				/*&#xD;
				 * number of hops in flow, but make sure it will be at least 1, else it isn't a&#xD;
				 * flow! || was -1 at end&#xD;
				 */&#xD;
				nHops = 2;&#xD;
			}&#xD;
			Double nTx = 1.0; // set nTx to 1 by default (1 transmission per link required at a minimum&#xD;
								// and when m == 1.0&#xD;
			if (m &lt; 1.0) {&#xD;
				/*&#xD;
				 * now compute nTXper link based on Ryan's formula: log(1 - e2e^(1/hops)) /&#xD;
				 * log(1 - M) = # txs per hop&#xD;
				 */&#xD;
				nTx = Math.log((1.0 - Math.pow(e2e, (1.0 / (double) nHops)))) / Math.log(1.0 - m);&#xD;
			}&#xD;
			/* set numTxPerLink based on M, E2E, and flow length */&#xD;
			flowNode.numTxPerLink = (int) Math.ceil(nTx);&#xD;
			/* Now compute nTx per link to reach E2E requirement. */&#xD;
			ArrayList&lt;Integer> linkTxAndTotalCost = numTxAttemptsPerLinkAndTotalTxAttempts(flowNode, e2e, m, true);&#xD;
			flowNode.linkTxAndTotalCost = linkTxAndTotalCost;&#xD;
			flows.put(flowName, flowNode); // update flow node in Flows array&#xD;
		} else { // should never happen...&#xD;
			System.out.printf(&quot;\n\tWarning! Bad situation: Flow %s doesn't exist but &quot;&#xD;
					+ &quot;trying to get its numTxPerLink property\n.&quot;, flowName);&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23eUE7hDEe2QK54y_oSyxw" name="finalizeFlowWithFixedFaultTolerance" specification="_2q_-R7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23eUFLhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>var flowNode = flows.get(flowName);&#xD;
		if (flowNode != null) {&#xD;
			/* set numTxPerLink based on numFaults */&#xD;
			flowNode.numTxPerLink = numFaults + 1;&#xD;
			/* Now compute nTx per link to reach E2E requirement. */&#xD;
			ArrayList&lt;Integer> linkTxAndTotalCost = getFixedTxPerLinkAndTotalTxCost(flowNode);&#xD;
			flowNode.linkTxAndTotalCost = linkTxAndTotalCost;&#xD;
			flows.put(flowName, flowNode); // update flow node in Flows array&#xD;
		} else { // should never happen...&#xD;
			System.out.printf(&quot;\n\tWarning! Bad situation: Flow %s doesn't exist but &quot;&#xD;
					+ &quot;trying to get its numTxPerLink property\n.&quot;, flowName);&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23eUFbhDEe2QK54y_oSyxw" name="getFixedTxPerLinkAndTotalTxCost" specification="_21J_0LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23eUFrhDEe2QK54y_oSyxw" name="flow" type="_2pTVILhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23eUF7hDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>var nodesInFlow = flow.nodes;&#xD;
		var nNodesInFlow = nodesInFlow.size();&#xD;
		ArrayList&lt;Integer> txArrayList = new ArrayList&lt;Integer>();&#xD;
		/*&#xD;
		 * Each node will have at most numFaults+1 transmissions. Because we don't know&#xD;
		 * which nodes will send the message over an edge, we give the cost to each&#xD;
		 * node.&#xD;
		 */&#xD;
		for (int i = 0; i &lt; nNodesInFlow; i++) {&#xD;
			txArrayList.add(numFaults + 1);&#xD;
		}&#xD;
		/*&#xD;
		 * now compute the maximum # of TX, assuming at most numFaults occur on an edge&#xD;
		 * per period, and each edge requires at least one successful TX.&#xD;
		 */&#xD;
		var numEdgesInFlow = nNodesInFlow - 1;&#xD;
		var maxFaultsInFlow = numEdgesInFlow * numFaults;&#xD;
		txArrayList.add(numEdgesInFlow + maxFaultsInFlow);&#xD;
		return txArrayList;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23e7ELhDEe2QK54y_oSyxw" name="numTxAttemptsPerLinkAndTotalTxAttempts" specification="_22LTg7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23e7EbhDEe2QK54y_oSyxw" name="flow" type="_2pTVILhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23e7ErhDEe2QK54y_oSyxw" name="e2e" type="_21600rhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23e7E7hDEe2QK54y_oSyxw" name="M" type="_21600rhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23e7FLhDEe2QK54y_oSyxw" name="optimizationRequested">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23e7FbhDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>var nodesInFlow = flow.nodes;&#xD;
		var nNodesInFlow = nodesInFlow.size(); // The last entry will contain the worst-case cost of&#xD;
												// transmitting E2E in isolation&#xD;
		// var nPushes = Array(repeating: 0, count: nNodesInFlow+1);&#xD;
		var nPushes = new Integer[nNodesInFlow + 1]; // Array to track nPushes for each node in this&#xD;
														// flow (same as nTx per link)&#xD;
		Arrays.fill(nPushes, 0); // initialize to all 0 values&#xD;
		var nHops = nNodesInFlow - 1;&#xD;
		// minLinkReliablityNeded is the minimum reliability needed per link in a flow&#xD;
		// to hit E2E&#xD;
		// reliability for the flow&#xD;
		Double minLinkReliablityNeded = Math.max(e2e, Math.pow(e2e, (1.0 / (double) nHops))); // use max&#xD;
																								// to&#xD;
																								// handle&#xD;
																								// rounding&#xD;
																								// error&#xD;
																								// when&#xD;
																								// e2e ==&#xD;
																								// 1.0&#xD;
		// Now compute reliability of packet reaching each node in the given time slot&#xD;
		// Start with a 2-D reliability window that is a 2-D matrix of no size&#xD;
		// each row is a time slot, stating at time 0&#xD;
		// each column represents the reliability of the packet reaching that node at&#xD;
		// the&#xD;
		// current time slot (i.e., the row it is in)&#xD;
		// will add rows as we compute reliabilities until the final reliability is&#xD;
		// reached&#xD;
		// for all nodes.&#xD;
		var reliabilityWindow = new Vector&lt;Vector&lt;Double>>();&#xD;
		var newReliabilityRow = new Vector&lt;Double>();&#xD;
		for (int i = 0; i &lt; nNodesInFlow; i++) {&#xD;
			newReliabilityRow.add(0.0); // create the the row initialized with 0.0 values&#xD;
		}&#xD;
		reliabilityWindow.add(newReliabilityRow); // now add row to the reliability window, Time 0&#xD;
		Vector&lt;Double> tmpVector = reliabilityWindow.get(0);&#xD;
		var currentReliabilityRow = tmpVector.toArray(new Double[tmpVector.size()]);&#xD;
		// var currentReliabilityRow = (Double[]) reliabilityWindow.get(0).toArray();&#xD;
		// Want reliabilityWindow[0][0] = 1.0 (i.e., P(packet@FlowSrc) = 1&#xD;
		// but I din't want to mess with the newReliablityRow vector I use below&#xD;
		// So, we initialize this first entry to 1.0, wich is reliabilityWindow[0][0]&#xD;
		// We will then update this row with computed values for each node and put it&#xD;
		// back in the matrix&#xD;
		currentReliabilityRow[0] = 1.0; // initialize (i.e., P(packet@FlowSrc) = 1&#xD;
		Double e2eReliabilityState = currentReliabilityRow[nNodesInFlow - 1]; // the analysis will end&#xD;
																				// when the 2e2&#xD;
																				// reliability metrix is&#xD;
																				// met, initially the&#xD;
																				// state is not met and&#xD;
																				// will be 0 with this&#xD;
																				// statement&#xD;
		var timeSlot = 0; // start time at 0&#xD;
		while (e2eReliabilityState &lt; e2e) { // change to while and increment increment timeSlot becuase&#xD;
											// we don't know how long this schedule window will last&#xD;
			var prevReliabilityRow = currentReliabilityRow;&#xD;
			currentReliabilityRow = newReliabilityRow.toArray(new Double[newReliabilityRow.size()]); // would&#xD;
																										// be&#xD;
																										// reliabilityWindow[timeSlot]&#xD;
																										// if&#xD;
																										// working&#xD;
																										// through&#xD;
																										// a&#xD;
																										// schedule&#xD;
			// Now use each flow:src->sink to update reliability computations&#xD;
			// this is the update formula for the state probabilities&#xD;
			// nextState = (1 - M) * prevState + M*NextHighestFlowState&#xD;
			// use MinLQ for M in above equation&#xD;
			// NewSinkNodeState = (1-M)*PrevSnkNodeState + M*PrevSrcNodeState&#xD;
&#xD;
			for (int nodeIndex = 0; nodeIndex &lt; (nNodesInFlow - 1); nodeIndex++) { // loop through each&#xD;
																					// node in the flow and&#xD;
																					// update the sates for&#xD;
																					// each link (i.e.,&#xD;
																					// sink->src pair)&#xD;
				var flowSrcNodeindex = nodeIndex;&#xD;
				var flowSnkNodeindex = nodeIndex + 1;&#xD;
				var prevSrcNodeState = prevReliabilityRow[flowSrcNodeindex];&#xD;
				var prevSnkNodeState = prevReliabilityRow[flowSnkNodeindex];&#xD;
				Double nextSnkState;&#xD;
				if ((prevSnkNodeState &lt; minLinkReliablityNeded) &amp;&amp; prevSrcNodeState > 0) { // do a push&#xD;
																							// until PrevSnk&#xD;
																							// state > e2e to&#xD;
																							// ensure next&#xD;
																							// node reaches&#xD;
																							// target E2E BUT&#xD;
																							// skip if no&#xD;
																							// chance of&#xD;
																							// success (i.e.,&#xD;
																							// source doesn't&#xD;
																							// have packet)&#xD;
					nextSnkState = ((1.0 - M) * prevSnkNodeState) + (M * prevSrcNodeState); // need to&#xD;
																							// continue&#xD;
																							// attempting to&#xD;
																							// Tx, so update&#xD;
																							// current state&#xD;
					nPushes[nodeIndex] += 1; // increment the number of pushes for for this node to snk node&#xD;
				} else {&#xD;
					nextSnkState = prevSnkNodeState; // snkNode has met its reliability. Thus move on to the&#xD;
														// next node and record the reliability met&#xD;
				}&#xD;
&#xD;
				if (currentReliabilityRow[flowSrcNodeindex] &lt; prevReliabilityRow[flowSrcNodeindex]) { // probabilities&#xD;
																										// are&#xD;
																										// non-decreasing&#xD;
																										// so&#xD;
																										// update&#xD;
																										// if&#xD;
																										// we&#xD;
																										// were&#xD;
																										// higher&#xD;
																										// by&#xD;
																										// carring&#xD;
																										// old&#xD;
																										// value&#xD;
																										// forward&#xD;
					currentReliabilityRow[flowSrcNodeindex] = prevReliabilityRow[flowSrcNodeindex]; // carry&#xD;
																									// forward&#xD;
																									// the&#xD;
																									// previous&#xD;
																									// state&#xD;
																									// for the&#xD;
																									// src&#xD;
																									// node,&#xD;
																									// which&#xD;
																									// may get&#xD;
																									// over&#xD;
																									// written&#xD;
																									// later&#xD;
																									// by&#xD;
																									// another&#xD;
																									// instruction&#xD;
																									// in this&#xD;
																									// slot&#xD;
				}&#xD;
				currentReliabilityRow[flowSnkNodeindex] = nextSnkState;&#xD;
			}&#xD;
&#xD;
			e2eReliabilityState = currentReliabilityRow[nNodesInFlow - 1];&#xD;
			Vector&lt;Double> currentReliabilityVector = new Vector&lt;Double>();&#xD;
			// convert the row to a vector so we can add it to the reliability window&#xD;
			Collections.addAll(currentReliabilityVector, currentReliabilityRow);&#xD;
			if (timeSlot &lt; reliabilityWindow.size()) {&#xD;
				reliabilityWindow.set(timeSlot, (currentReliabilityVector));&#xD;
			} else {&#xD;
				reliabilityWindow.add(currentReliabilityVector);&#xD;
			}&#xD;
			timeSlot += 1; // increase to next time slot&#xD;
		}&#xD;
		var size = reliabilityWindow.size();&#xD;
		nPushes[nNodesInFlow] = size; // The total (worst-case) cost to transmit E2E in isolation with&#xD;
										// specified reliability target is the number of rows in the&#xD;
										// reliabilityWindow&#xD;
		// Now convert the array to the ArrayList needed to return&#xD;
		ArrayList&lt;Integer> nPushesArrayList = new ArrayList&lt;Integer>();&#xD;
		Collections.addAll(nPushesArrayList, nPushes);&#xD;
		return nPushesArrayList;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23e7FrhDEe2QK54y_oSyxw" name="getNodeNamesOrderedAlphabetically" specification="_2rAlULhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23e7F7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23e7GLhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <language>java</language>
                <body>var nodes = getNodes();&#xD;
		Set&lt;String> keys = nodes.keySet(); // get the names from the node map&#xD;
		String[] nodeNames = keys.toArray(new String[keys.size()]);&#xD;
		Arrays.sort(nodeNames); // NodeNames are now sorted&#xD;
		// However, if names are actually strings of integers, then the sort doesn't&#xD;
		// come out&#xD;
		// the way we would like. So, handle that case&#xD;
		var nodeNamesAsInts = new Integer[nodeNames.length];&#xD;
		var allIntNames = true; // flag to see if all names are Ints or not&#xD;
		for (int i = 0; i &lt; nodeNames.length; i++) {&#xD;
			var nodeName = nodeNames[i];&#xD;
			if (Utilities.isInteger(nodeName) &amp;&amp; allIntNames) {&#xD;
				// nodeName is an alpha representation of an integer&#xD;
				nodeNamesAsInts[i] = Integer.parseInt(nodeName);&#xD;
			} else {&#xD;
				// nodeName is an alpha name and not an integer, so set flag and terminate loop&#xD;
				allIntNames = false; // set false because name not is a number; &amp;&amp; above makes sure we only&#xD;
										// set it once&#xD;
				break; // can stop the loop once we know not all of the names are ints&#xD;
			}&#xD;
		}&#xD;
		if (allIntNames) {&#xD;
			// If all names are ints, then we need to sort them accordingly&#xD;
			// Otherwise, we get names in what appears to not be in order because&#xD;
			Arrays.sort(nodeNamesAsInts); // sort the ints in assending order&#xD;
			for (int i = 0; i &lt; nodeNamesAsInts.length; i++) {&#xD;
				nodeNames[i] = Integer.toString(nodeNamesAsInts[i]); // convert int to string&#xD;
			}&#xD;
		}&#xD;
		return nodeNames;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23e7GbhDEe2QK54y_oSyxw" name="getFlow" specification="_2rAlVLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23e7GrhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23e7G7hDEe2QK54y_oSyxw" type="_2pTVILhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>var flow = flows.get(flowName); // get the requested flow node&#xD;
		if (flow == null) {// return empty node if not found&#xD;
			flow = new Flow();&#xD;
			System.out.printf(FLOW_WARNING + &quot;retrieve it\n.&quot;, flowName);&#xD;
		}&#xD;
		return flow;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23e7HLhDEe2QK54y_oSyxw" name="getFlowNames" specification="_2rBMYLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23e7HbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23e7HrhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <language>java</language>
                <body>return flowNamesInOriginalOrder.toArray(new String[0]);&#xD;
		// could use new String[list.size()], but due to JVM optimizations new (new&#xD;
		// String[0] is better&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23e7H7hDEe2QK54y_oSyxw" name="getNodeIndex" specification="_2rBMZLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23e7ILhDEe2QK54y_oSyxw" name="nodeName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23e7IbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>// public function to return the dictionary of nodes&#xD;
		var index = 0;&#xD;
		var node = nodes.get(nodeName); // could throw an exception if null, but just return 0 for now&#xD;
		if (node != null) {&#xD;
			index = node.getIndex();&#xD;
		}&#xD;
		return index;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23e7IrhDEe2QK54y_oSyxw" name="getNodesInFlow" specification="_2rBMZ7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23e7I7hDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23e7JLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23e7JbhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <language>java</language>
                <body>// get the flow node for requested Flow and then loop through the&#xD;
		// nodes in the flow to create an array of the node names in&#xD;
		// the same order as they exist in the flow specification (i.e., Graph file)&#xD;
		var flow = flows.get(flowName);&#xD;
		String[] nodes;&#xD;
		if (flow != null) {&#xD;
			nodes = new String[flow.nodes.size()];&#xD;
			for (int i = 0; i &lt; nodes.length; i++) {&#xD;
				var node = flow.nodes.get(i); // get the node from the arrayList&#xD;
				nodes[i] = node.getName(); // get the name and store it in the array&#xD;
			}&#xD;
&#xD;
		} else {&#xD;
			nodes = new String[0]; // return empty array&#xD;
			System.out.printf(&quot;\n\t Warning! No Flow with name %s.\n&quot;, flowName);&#xD;
		}&#xD;
		return nodes;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23e7JrhDEe2QK54y_oSyxw" name="getHyperPeriod" specification="_2rBzcLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23e7J7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var hyperPeriod = 1; // hyperPeriod is LCM of all periods. Initialize to 1&#xD;
		for (String flowName : getFlowNames()) {&#xD;
			// var dm = new Utlitities();&#xD;
			hyperPeriod = Utilities.lcm(hyperPeriod, getFlowPeriod(flowName)); // Find LCM of hyperPeriod&#xD;
																				// so far and the current&#xD;
																				// period, then update the&#xD;
																				// hyperPeriod with that&#xD;
																				// value&#xD;
		}&#xD;
		return hyperPeriod;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23e7KLhDEe2QK54y_oSyxw" name="getTotalTxAttemptsInFlow" specification="_2rBzcrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23e7KbhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23e7KrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>var flow = getFlow(flowName);&#xD;
		var linkTxAndTotalCost = flow.getLinkTxAndTotalCost();&#xD;
		var totalCostIndex = linkTxAndTotalCost.size() - 1;&#xD;
		var totalCost = linkTxAndTotalCost.get(totalCostIndex);&#xD;
		return totalCost;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23e7K7hDEe2QK54y_oSyxw" name="getNumTxAttemptsPerLink" specification="_2rBzdbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23e7LLhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23e7LbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23e7LrhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <language>java</language>
                <body>var flow = getFlow(flowName);&#xD;
		var linkTxAndTotalCost = new ArrayList&lt;Integer>(flow.getLinkTxAndTotalCost());&#xD;
		var lastElement = linkTxAndTotalCost.size() - 1;&#xD;
		linkTxAndTotalCost.remove(lastElement); // remove the last element, because that is the sum of&#xD;
												// others&#xD;
		return linkTxAndTotalCost.toArray(new Integer[0]);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23fiILhDEe2QK54y_oSyxw" name="addEdge" specification="_21Km4bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23fiIbhDEe2QK54y_oSyxw" name="nodeName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23fiIrhDEe2QK54y_oSyxw" name="edge" type="_2pMAZLhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>var node = nodes.get(nodeName); // get the node object&#xD;
		node.addEdge(edge);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23fiI7hDEe2QK54y_oSyxw" name="maxFlowLength" specification="_2rCagbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23fiJLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>Integer maxLength = 0;&#xD;
		for (Flow flow : flows.values()) {&#xD;
			maxLength = Math.max(maxLength, flow.nodes.size());&#xD;
		}&#xD;
		return maxLength;&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2q6esLhDEe2QK54y_oSyxw" name="setDefaultParameters" visibility="private" method="_23dF67hDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2q7FwLhDEe2QK54y_oSyxw" name="getE2e" method="_23dF7LhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvZLhDEe2QK54y_oSyxw">
                  <body>@return the e2e</body>
                </ownedComment>
                <ownedParameter xmi:id="_22KseLhDEe2QK54y_oSyxw" type="_21600rhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2q7FwbhDEe2QK54y_oSyxw" name="getIntForFlowNames" method="_23dF7rhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvZbhDEe2QK54y_oSyxw">
                  <body>@return the intForFlowNames</body>
                </ownedComment>
                <ownedParameter xmi:id="_2q7FwrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q7Fw7hDEe2QK54y_oSyxw" name="getName" method="_23dF8LhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvZrhDEe2QK54y_oSyxw">
                  <body>@return the name</body>
                </ownedComment>
                <ownedParameter xmi:id="_2q7FxLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q7FxbhDEe2QK54y_oSyxw" name="getMaxPhase" method="_23dF9LhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvaLhDEe2QK54y_oSyxw">
                  <body>@return the maximum phase of all flows</body>
                </ownedComment>
                <ownedParameter xmi:id="_2q7FxrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q7s0LhDEe2QK54y_oSyxw" name="getMinPeriod" method="_23dF9rhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvabhDEe2QK54y_oSyxw">
                  <body>@return the minimum period of all flows</body>
                </ownedComment>
                <ownedParameter xmi:id="_2q7s0bhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q8T4LhDEe2QK54y_oSyxw" name="setIntForFlowNames" method="_23dF-rhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rva7hDEe2QK54y_oSyxw">
                  <body>@param intForFlowNames the intForFlowNames to set</body>
                </ownedComment>
                <ownedParameter xmi:id="_2q8T4bhDEe2QK54y_oSyxw" name="intForFlowNames">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q8T4rhDEe2QK54y_oSyxw" name="setName" method="_23dF_LhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvbLhDEe2QK54y_oSyxw">
                  <body>@param name the name to set</body>
                </ownedComment>
                <ownedParameter xmi:id="_2q8T47hDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q8T5LhDEe2QK54y_oSyxw" name="setNodeChannel" method="_23dF_rhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvbbhDEe2QK54y_oSyxw">
                  <body>@param name    the node whose channel is to be set&#xD;
	 * @param channel the channel to set</body>
                </ownedComment>
                <ownedParameter xmi:id="_2q8T5bhDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2q8T5rhDEe2QK54y_oSyxw" name="channel">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q8T57hDEe2QK54y_oSyxw" name="getNodeChannel" method="_23dGAbhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvbrhDEe2QK54y_oSyxw">
                  <body>@return the node channel</body>
                </ownedComment>
                <ownedParameter xmi:id="_2q8T6LhDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2q8T6bhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q868LhDEe2QK54y_oSyxw" name="addFlow" method="_23ds8LhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvb7hDEe2QK54y_oSyxw">
                  <body>&lt;h1>Add a new flow to the Flows dictionary&lt;/h1>&#xD;
	 * &lt;p>&#xD;
	 * If the flow name already exists it will be overwritten with the new one.&#xD;
	 * If any flow name is not an integer, the intForFlowNames will be permanently set to false for this workload.&#xD;
	 * &lt;/p>&#xD;
	 * &#xD;
	 * @param flowName</body>
                </ownedComment>
                <ownedParameter xmi:id="_2q868bhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q868rhDEe2QK54y_oSyxw" name="isIntForNodeNames" method="_23ds8rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2q8687hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q869LhDEe2QK54y_oSyxw" name="isIntForFlowNames" method="_23ds9LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2q869bhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q9iALhDEe2QK54y_oSyxw" name="addNodeToFlow" method="_23ds9rhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvcLhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Adds a node to the given flow.&lt;/h1>&#xD;
	 * &lt;p>&#xD;
	 * If the node already exists in the workload, it will only be added to the flow. Otherwise a new node will be created.&#xD;
	 * &lt;/p>&#xD;
	 * @param flowName Name of flow to add the node to.&#xD;
	 * @param nodeName The node that will be added to the flow.</body>
                </ownedComment>
                <ownedParameter xmi:id="_2q9iAbhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2q9iArhDEe2QK54y_oSyxw" name="nodeName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q9iA7hDEe2QK54y_oSyxw" name="getFlowPriority" method="_23ds-bhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvcbhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Returns the priority of the node with nodeName belonging to the flow flowName&lt;/h1>&#xD;
	 * &lt;p>Gets the flow by the flowName then uses an iterator from the flow's nodes to&#xD;
	 * iterate through all the nodes until the node with name nodeName is found. Then that&#xD;
	 * node's priority is returned&lt;/p>&#xD;
	 * &lt;p>0 is returned if the node or flow is not found.&lt;/p>&#xD;
	 * &#xD;
	 * @param flowName the name of the flow&#xD;
	 * @param nodeName the node in the flow&#xD;
	 * @return the priority of nodeName belonging to flowName</body>
                </ownedComment>
                <ownedParameter xmi:id="_2q9iBLhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2q9iBbhDEe2QK54y_oSyxw" name="nodeName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2q9iBrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q9iB7hDEe2QK54y_oSyxw" name="setFlowPriority" method="_23ds_bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2q9iCLhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2q9iCbhDEe2QK54y_oSyxw" name="priority">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q9iCrhDEe2QK54y_oSyxw" name="setFlowPeriod" method="_23dtALhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2q9iC7hDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2q9iDLhDEe2QK54y_oSyxw" name="period">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q-JELhDEe2QK54y_oSyxw" name="setFlowDeadline" method="_23dtA7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2q-JEbhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2q-JErhDEe2QK54y_oSyxw" name="deadline">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q-JE7hDEe2QK54y_oSyxw" name="setFlowPhase" method="_23dtBrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2q-JFLhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2q-JFbhDEe2QK54y_oSyxw" name="phase">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q-JFrhDEe2QK54y_oSyxw" name="getFlowIndex" method="_23dtCbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2q-JF7hDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2q-JGLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q-JGbhDEe2QK54y_oSyxw" name="getFlowPriority" method="_23dtDLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2q-JGrhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2q-wILhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q-wIbhDEe2QK54y_oSyxw" name="getFlowPeriod" method="_23dtD7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvcrhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Returns the period of the flow with flowName.&lt;/h1>&#xD;
	 * &#xD;
	 * @param flowName the name of the flow to find the period of&#xD;
	 * @return the flow's period</body>
                </ownedComment>
                <ownedParameter xmi:id="_2q-wIrhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2q-wI7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q-wJLhDEe2QK54y_oSyxw" name="getFlowDeadline" method="_23dtErhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvc7hDEe2QK54y_oSyxw">
                  <body>&lt;h1>Returns the deadline of the flow with flowName.&lt;/h1>&#xD;
	 * &#xD;
	 * @param flowName the name of the flow to find the deadline of.&#xD;
	 * @return the flow's deadline.</body>
                </ownedComment>
                <ownedParameter xmi:id="_2q-wJbhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2q-wJrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q-wJ7hDEe2QK54y_oSyxw" name="getFlowPhase" method="_23dtFbhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvdLhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Returns the phase of the flow with flowName.&lt;/h1>&#xD;
	 * &#xD;
	 * @param flowName the name of the flow to find the phase of.&#xD;
	 * @return the flow's phase.</body>
                </ownedComment>
                <ownedParameter xmi:id="_2q-wKLhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2q-wKbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q_XMLhDEe2QK54y_oSyxw" name="getFlowTxAttemptsPerLink" method="_23eUALhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvdbhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Returns the flow tx attempts per link for the flow with name flowName.&lt;/h1> &#xD;
	 * &#xD;
	 * @param flowName the name of the flow.&#xD;
	 * @return number of tx per link.</body>
                </ownedComment>
                <ownedParameter xmi:id="_2q_XMbhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2q_XMrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q_XM7hDEe2QK54y_oSyxw" name="setFlowsInPriorityOrder" method="_23eUA7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvdrhDEe2QK54y_oSyxw">
                  <body>public method that takes lists of flows that are unsorted, sorted by index, &#xD;
	 * and sorted by priority, and proceeds to make a new Array List that&#xD;
	 * contains the flow names in the order that has been requested</body>
                </ownedComment>
              </ownedOperation>
              <ownedOperation xmi:id="_2q_XNLhDEe2QK54y_oSyxw" name="setFlowsInDMorder" method="_23eUBLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvd7hDEe2QK54y_oSyxw">
                  <body>public method that sorts flows in order of deadline</body>
                </ownedComment>
              </ownedOperation>
              <ownedOperation xmi:id="_2q_XNbhDEe2QK54y_oSyxw" name="setFlowsInRMorder" method="_23eUBbhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rveLhDEe2QK54y_oSyxw">
                  <body>public method that sorts flows in order of period.</body>
                </ownedComment>
              </ownedOperation>
              <ownedOperation xmi:id="_2q_XNrhDEe2QK54y_oSyxw" name="setFlowsInRealTimeHARTorder" method="_23eUBrhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2q_XN7hDEe2QK54y_oSyxw" name="finalizeCurrentFlow" method="_23eUB7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2q_XOLhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q_XObhDEe2QK54y_oSyxw" name="nextReleaseTime" method="_23eUCbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2q_XOrhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2q_XO7hDEe2QK54y_oSyxw" name="currentTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2q_-QLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q_-QbhDEe2QK54y_oSyxw" name="nextAbsoluteDeadline" method="_23eUDbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2q_-QrhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2q_-Q7hDEe2QK54y_oSyxw" name="currentTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2q_-RLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q_-RbhDEe2QK54y_oSyxw" name="finalizeFlowWithE2eParameters" visibility="private" method="_23eUEbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2q_-RrhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2q_-R7hDEe2QK54y_oSyxw" name="finalizeFlowWithFixedFaultTolerance" visibility="private" method="_23eUE7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2q_-SLhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rAlULhDEe2QK54y_oSyxw" name="getNodeNamesOrderedAlphabetically" method="_23e7FrhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rve7hDEe2QK54y_oSyxw">
                  <body>public method that gets the nodes from a node map, and sorts them in alphabetical&#xD;
order. If the names are strings of integers, then there must be an additional&#xD;
step to sort them correctly. If all of the node names are ints, sort them in &#xD;
ascending order, and then convert it to a string&#xD;
@return a list of strings containing the names of the nodes in alphabetical order.</body>
                </ownedComment>
                <ownedParameter xmi:id="_2rAlUbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2rAlUrhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rAlVLhDEe2QK54y_oSyxw" name="getFlow" visibility="private" method="_23e7GbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2rAlVbhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_21Km4LhDEe2QK54y_oSyxw" type="_2pTVILhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2rBMYLhDEe2QK54y_oSyxw" name="getFlowNames" method="_23e7HLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2rBMYbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2rBMYrhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rBMZLhDEe2QK54y_oSyxw" name="getNodeIndex" method="_23e7H7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvfLhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Returns the index of the given node.&lt;/h1>&#xD;
	 * &lt;p>A nodes index is an alternate name for the simulator input file.&lt;/p>&#xD;
	 * &#xD;
	 * @param nodeName the Name of the node&#xD;
	 * @return the index of the node</body>
                </ownedComment>
                <ownedParameter xmi:id="_2rBMZbhDEe2QK54y_oSyxw" name="nodeName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2rBMZrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rBMZ7hDEe2QK54y_oSyxw" name="getNodesInFlow" method="_23e7IrhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23sWcLhDEe2QK54y_oSyxw">
                  <body>Loops through a requested flow and obtains the nodes contained in the flow.&#xD;
if not, return an empty array.&#xD;
&#xD;
@param flowName the flow in which nodes will be obtained from &#xD;
@return an array of strings containing the nodes obtained from the selected flow.</body>
                </ownedComment>
                <ownedParameter xmi:id="_2rBMaLhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2rBMabhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2rBMarhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rBzcLhDEe2QK54y_oSyxw" name="getHyperPeriod" method="_23e7JrhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23sWcbhDEe2QK54y_oSyxw">
                  <body>public method that obtains the least common multiple of every period, and &#xD;
returns it.&#xD;
@return an Integer hyperPeriod that represents the LCM of every period.</body>
                </ownedComment>
                <ownedParameter xmi:id="_2rBzcbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rBzcrhDEe2QK54y_oSyxw" name="getTotalTxAttemptsInFlow" method="_23e7KLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23sWcrhDEe2QK54y_oSyxw">
                  <body>Public method that returns the amount of times that a transmission was &#xD;
attempted in the flow&#xD;
@param flowName String that will be checked to see amount of transmissions&#xD;
@return Integer representing amount of transmissions attempted.</body>
                </ownedComment>
                <ownedParameter xmi:id="_2rBzc7hDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2rBzdLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rBzdbhDEe2QK54y_oSyxw" name="getNumTxAttemptsPerLink" method="_23e7K7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23sWc7hDEe2QK54y_oSyxw">
                  <body>finds the amount of transmissions that is required for each link in the flow&#xD;
	 * @param flowName flow in which amount of transmissions will be looked for&#xD;
	 * @return the same array described in the lines below.</body>
                </ownedComment>
                <ownedParameter xmi:id="_2rBzdrhDEe2QK54y_oSyxw" name="flowName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2rBzd7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2rBzeLhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rCagbhDEe2QK54y_oSyxw" name="maxFlowLength" method="_23fiI7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23sWdbhDEe2QK54y_oSyxw">
                  <body>Searches through all of the flows to find the one with the greatest length&#xD;
@return an Integer representing the greatest length of a flow</body>
                </ownedComment>
                <ownedParameter xmi:id="_2rCagrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_21J_0LhDEe2QK54y_oSyxw" name="getFixedTxPerLinkAndTotalTxCost" visibility="private" method="_23eUFbhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvebhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Returns the fixed tx per link and the total tx cost of the given flow.&lt;/h1>&#xD;
	 * &lt;p>The tx per link is defined as the number of faults allowed plus one since a node has to be used once to&#xD;
	 * transmit a message. The return value is an ArrayList with link num nodes in flow + 1. The last element in &#xD;
	 * the list is the maximum tx in the flow. all previous elements represent the tx per node of a flow and each&#xD;
	 * correspond to node.&lt;/p>&#xD;
	 * &#xD;
	 * @param flow the flow object to find the tx of.&#xD;
	 * @return an arraylist of integers with each entry corresponding to a node in the flow's tx. The last entry is the maximum tx.</body>
                </ownedComment>
                <ownedParameter xmi:id="_21J_0bhDEe2QK54y_oSyxw" name="flow" type="_2pTVILhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_22LTgrhDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_21Km4bhDEe2QK54y_oSyxw" name="addEdge" method="_23fiILhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23sWdLhDEe2QK54y_oSyxw">
                  <body>public method that adds an edge to the end of the specified node&#xD;
@param nodeName node that will have edge added to it&#xD;
@param edge edge to be added to node</body>
                </ownedComment>
                <ownedParameter xmi:id="_21Km4rhDEe2QK54y_oSyxw" name="nodeName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_21Km47hDEe2QK54y_oSyxw" name="edge" type="_2pMAZLhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_22KFYLhDEe2QK54y_oSyxw" name="WorkLoad" visibility="package" method="_23dF4LhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_22KFZLhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_22KFZbhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedComment xmi:id="_23rvYrhDEe2QK54y_oSyxw">
                  <body>Initializes a Workload object.&#xD;
	 * &#xD;
	 * @param m             The minimum package reception rate (Double)&#xD;
	 * @param e2e           The end to end reliability (Double)&#xD;
	 * @param inputFileName The file that contains the flows to be processed&#xD;
	 *                      (String)</body>
                </ownedComment>
                <ownedParameter xmi:id="_22KFYbhDEe2QK54y_oSyxw" name="m" type="_21600rhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_22KFYrhDEe2QK54y_oSyxw" name="e2e" type="_21600rhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_22KFY7hDEe2QK54y_oSyxw" name="inputFileName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_22KFZrhDEe2QK54y_oSyxw" type="_2q5QkLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_22KscLhDEe2QK54y_oSyxw" name="WorkLoad" visibility="package" method="_23dF5bhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_22KsdbhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_22KsdrhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedComment xmi:id="_23rvY7hDEe2QK54y_oSyxw">
                  <body>Initializes a Workload Object.&#xD;
	 * &#xD;
	 * @param numFaults     The number of faults in the workload. (Integer)&#xD;
	 * @param m             The minimum package reception rate (Double)&#xD;
	 * @param e2e           The end to end reliability (Double)&#xD;
	 * @param inputFileName The file that contains the flows to be processed&#xD;
	 *                      (String)</body>
                </ownedComment>
                <ownedParameter xmi:id="_22KscbhDEe2QK54y_oSyxw" name="numFaults">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_22KscrhDEe2QK54y_oSyxw" name="m" type="_21600rhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_22Ksc7hDEe2QK54y_oSyxw" name="e2e" type="_21600rhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_22KsdLhDEe2QK54y_oSyxw" name="inputFileName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_22Ksd7hDEe2QK54y_oSyxw" type="_2q5QkLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_22KsebhDEe2QK54y_oSyxw" name="setMinPacketReceptionRate" method="_23dF8rhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvZ7hDEe2QK54y_oSyxw">
                  <body>@param minPacketReceptionRate the minPacketReceptionRate to set</body>
                </ownedComment>
                <ownedParameter xmi:id="_22KserhDEe2QK54y_oSyxw" name="minPacketReceptionRate" type="_21600rhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_22LTgLhDEe2QK54y_oSyxw" name="setE2e" method="_23dF-LhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rvarhDEe2QK54y_oSyxw">
                  <body>@param e2e the e2e to set</body>
                </ownedComment>
                <ownedParameter xmi:id="_22LTgbhDEe2QK54y_oSyxw" name="e2e" type="_21600rhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_22LTg7hDEe2QK54y_oSyxw" name="numTxAttemptsPerLinkAndTotalTxAttempts" visibility="private" method="_23e7ELhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23rverhDEe2QK54y_oSyxw">
                  <body>private method creates a matrix that displays the reliability of transmitting &#xD;
packets to nodes in an efficient manner using the source and sink of the &#xD;
flow nodes&#xD;
@param flow a flow object in which the nodes will be retrieved&#xD;
@param e2e double to be used to set up matrix for transmission reliability&#xD;
@param M Double used for computing reliability for source and sink&#xD;
@param optimizationRequested boolean to verify if an optimization has been requested&#xD;
@return an ArrayList of integers that represents the worst case cost of transmitting e2e</body>
                </ownedComment>
                <ownedParameter xmi:id="_22LThLhDEe2QK54y_oSyxw" name="flow" type="_2pTVILhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_22LThbhDEe2QK54y_oSyxw" name="e2e" type="_21600rhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_22LThrhDEe2QK54y_oSyxw" name="M" type="_21600rhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_22LTh7hDEe2QK54y_oSyxw" name="optimizationRequested">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
                </ownedParameter>
                <ownedParameter xmi:id="_22L6kbhDEe2QK54y_oSyxw" type="_2z5bkLhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2rGE4LhDEe2QK54y_oSyxw" name="WorkLoadDescription">
              <ownedComment xmi:id="_23sWdrhDEe2QK54y_oSyxw">
                <body>Reads the input file, whose name is passed as input parameter to the&#xD;
constructor, and builds a Description object based on the contents. Each line&#xD;
of the file is an entry (string) in the Description object.&#xD;
&#xD;
@author sgoddard&#xD;
@version 1.4 Fall 2022</body>
              </ownedComment>
              <generalization xmi:id="_21NqMbhDEe2QK54y_oSyxw" general="_2qirQLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22_y4LhDEe2QK54y_oSyxw" name="EMPTY" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22_y4bhDEe2QK54y_oSyxw" value="&quot;&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22_y4rhDEe2QK54y_oSyxw" name="INPUT_FILE_SUFFIX" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_22_y47hDEe2QK54y_oSyxw" value="&quot;.wld&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22_y5LhDEe2QK54y_oSyxw" name="description" visibility="private" type="_2pKyQrhDEe2QK54y_oSyxw" association="_24JCYbhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_22_y5rhDEe2QK54y_oSyxw" name="inputGraphString" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_22_y6LhDEe2QK54y_oSyxw" name="fm" visibility="private" type="_2pQR0LhDEe2QK54y_oSyxw" association="_24JpcbhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_23AZ8bhDEe2QK54y_oSyxw" name="inputFileName" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23fiJbhDEe2QK54y_oSyxw" name="WorkLoadDescription" specification="_2rGr8LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23fiJrhDEe2QK54y_oSyxw" name="inputFileName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23fiJ7hDEe2QK54y_oSyxw" type="_2rGE4LhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>super(new FileManager(), EMPTY, INPUT_FILE_SUFFIX); // VisualizationObject constructor&#xD;
		this.fm = this.getFileManager();&#xD;
		initialize(inputFileName);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23fiKLhDEe2QK54y_oSyxw" name="visualization" specification="_2rHTA7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23fiKbhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return description;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23gJMLhDEe2QK54y_oSyxw" name="fileVisualization" specification="_2rH6ErhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23gJMbhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return description;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23gJMrhDEe2QK54y_oSyxw" name="toString" specification="_2rIhIrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23gJM7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>return inputGraphString;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23gJNLhDEe2QK54y_oSyxw" name="initialize" specification="_2rIhJ7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23gJNbhDEe2QK54y_oSyxw" name="inputFile">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>// Get the input graph file name and read its contents&#xD;
		InputGraphFile gf = new InputGraphFile(fm);&#xD;
		inputGraphString = gf.readGraphFile(inputFile);&#xD;
		this.inputFileName = gf.getGraphFileName();&#xD;
		description = new Description(inputGraphString);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23gJNrhDEe2QK54y_oSyxw" name="main" specification="_2rJIMLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23gJN7hDEe2QK54y_oSyxw" name="args">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23gJOLhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <language>java</language>
                <body>String fileName = &quot;StressTest.txt&quot;;&#xD;
		WorkLoadDescription wld = new WorkLoadDescription(fileName);&#xD;
		Description content = wld.visualization();&#xD;
		// remove empty lines&#xD;
		for (int i = content.size() - 1; i >= 0; i--) {&#xD;
			// equals &quot;&quot; if the line only contains whitespace and newlines&#xD;
			if (content.get(i).trim().equals(&quot;&quot;)) {&#xD;
				content.remove(i);&#xD;
			}&#xD;
		}&#xD;
		// The title is the first word in the first index of the content&#xD;
		// split doesn't remove spaces from the middle&#xD;
		String title = content.remove(0).trim().split(&quot; &quot;)[0];&#xD;
		// there is a } at the end so remove it&#xD;
		content.remove(content.size() - 1);&#xD;
		// sort alphabetically&#xD;
		// Collator is a comparator that sorts string alphabetically&#xD;
		Collections.sort(content, Collator.getInstance());&#xD;
		System.out.println(title);&#xD;
		for (int i = 1; i &lt;= content.size(); i++) {&#xD;
			System.out.println(&quot;Flow &quot; + i + &quot;: &quot; + content.get(i - 1).trim());&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2rGr8LhDEe2QK54y_oSyxw" name="WorkLoadDescription" visibility="package" method="_23fiJbhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2rHTALhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2rHTAbhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2rGr8bhDEe2QK54y_oSyxw" name="inputFileName">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2rHTArhDEe2QK54y_oSyxw" type="_2rGE4LhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2rHTA7hDEe2QK54y_oSyxw" name="visualization" method="_23fiKLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21NDIrhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2rH6ErhDEe2QK54y_oSyxw" name="fileVisualization" method="_23gJMLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21NqMLhDEe2QK54y_oSyxw" type="_2pKyQrhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2rIhIrhDEe2QK54y_oSyxw" name="toString" method="_23gJMrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2rIhI7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rIhJ7hDEe2QK54y_oSyxw" name="initialize" visibility="private" method="_23gJNLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2rIhKLhDEe2QK54y_oSyxw" name="inputFile">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rJIMLhDEe2QK54y_oSyxw" name="main" isStatic="true" method="_23gJNrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2rJIMbhDEe2QK54y_oSyxw" name="args">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2rJIMrhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2rJvQLhDEe2QK54y_oSyxw" name="Warp">
              <ownedComment xmi:id="_23sWd7hDEe2QK54y_oSyxw">
                <body>&lt;h1>This is the entry point to the warp program.&lt;/h1>&#xD;
&#xD;
@author sgoddard&#xD;
@version 1.5&#xD;
 *</body>
              </ownedComment>
              <ownedAttribute xmi:id="_23AZ8rhDEe2QK54y_oSyxw" name="NUM_CHANNELS" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_23AZ87hDEe2QK54y_oSyxw" value="16"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23AZ9LhDEe2QK54y_oSyxw" name="MIN_LQ" visibility="private" isLeaf="true" isStatic="true" type="_21600rhDEe2QK54y_oSyxw" isReadOnly="true">
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_23AZ9bhDEe2QK54y_oSyxw" value="0.9"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23AZ9rhDEe2QK54y_oSyxw" name="E2E" visibility="private" isLeaf="true" isStatic="true" type="_21600rhDEe2QK54y_oSyxw" isReadOnly="true">
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_23BBALhDEe2QK54y_oSyxw" value="0.99"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23BBAbhDEe2QK54y_oSyxw" name="DEFAULT_OUTPUT_SUB_DIRECTORY" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_23BBArhDEe2QK54y_oSyxw" value="&quot;OutputFiles/&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23BBA7hDEe2QK54y_oSyxw" name="DEFAULT_SCHEDULER" visibility="private" isLeaf="true" isStatic="true" type="_2qY6QbhDEe2QK54y_oSyxw" isReadOnly="true">
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_23BBBLhDEe2QK54y_oSyxw" value="ScheduleChoices.PRIORITY"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23BBBbhDEe2QK54y_oSyxw" name="DEFAULT_FAULTS_TOLERATED" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_23BBBrhDEe2QK54y_oSyxw" value="0"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23BBB7hDEe2QK54y_oSyxw" name="nChannels" visibility="private" isStatic="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23BoELhDEe2QK54y_oSyxw" name="numFaults" visibility="private" isStatic="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23BoErhDEe2QK54y_oSyxw" name="minLQ" visibility="private" isStatic="true" type="_21600rhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_23BoFLhDEe2QK54y_oSyxw" name="e2e" visibility="private" isStatic="true" type="_21600rhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_23CPIbhDEe2QK54y_oSyxw" name="outputSubDirectory" visibility="private" isStatic="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23CPI7hDEe2QK54y_oSyxw" name="guiRequested" visibility="private" isStatic="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23C2MLhDEe2QK54y_oSyxw" name="gvRequested" visibility="private" isStatic="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23C2MrhDEe2QK54y_oSyxw" name="wfRequested" visibility="private" isStatic="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23C2NLhDEe2QK54y_oSyxw" name="raRequested" visibility="private" isStatic="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23C2NrhDEe2QK54y_oSyxw" name="laRequested" visibility="private" isStatic="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23DdQLhDEe2QK54y_oSyxw" name="caRequested" visibility="private" isStatic="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23DdQrhDEe2QK54y_oSyxw" name="simRequested" visibility="private" isStatic="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23DdRLhDEe2QK54y_oSyxw" name="allRequested" visibility="private" isStatic="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23DdRrhDEe2QK54y_oSyxw" name="latencyRequested" visibility="private" isStatic="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23DdSLhDEe2QK54y_oSyxw" name="schedulerRequested" visibility="private" isStatic="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_23DdSbhDEe2QK54y_oSyxw" value="false"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23DdS7hDEe2QK54y_oSyxw" name="verboseMode" visibility="private" isStatic="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23EEUbhDEe2QK54y_oSyxw" name="inputFile" visibility="private" isStatic="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23EEU7hDEe2QK54y_oSyxw" name="schedulerSelected" visibility="private" isStatic="true" type="_2qY6QbhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23gJObhDEe2QK54y_oSyxw" name="main" specification="_2rK9YLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23gJOrhDEe2QK54y_oSyxw" name="args">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23gJO7hDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <language>java</language>
                <body>// parse command-line options and set WARP system parameters&#xD;
		setWarpParameters(args);&#xD;
&#xD;
		// and print out the values if in verbose mode&#xD;
		if (verboseMode) {&#xD;
			printWarpParameters();&#xD;
		}&#xD;
&#xD;
		// Create and visualize the workload&#xD;
		// inputFile string, which may be null,&#xD;
		WorkLoad workLoad = new WorkLoad(numFaults, minLQ, e2e, inputFile);&#xD;
		if (allRequested) {&#xD;
			for (WorkLoadChoices choice : WorkLoadChoices.values()) {&#xD;
				visualize(workLoad, choice); // visualize all Program choices&#xD;
			}&#xD;
			// Create and visualize the Warp System&#xD;
			if (schedulerRequested) {&#xD;
				WarpInterface warp = SystemFactory.create(workLoad, nChannels, schedulerSelected);&#xD;
				verifyPerformanceRequirements(warp);&#xD;
				for (SystemChoices choice : SystemChoices.values()) {&#xD;
					visualize(warp, choice); // visualize all System choices&#xD;
				}&#xD;
			} else { // create a system for all scheduler choices&#xD;
				for (ScheduleChoices sch : ScheduleChoices.values()) {&#xD;
					schedulerSelected = sch;&#xD;
					WarpInterface warp = SystemFactory.create(workLoad, nChannels, schedulerSelected);&#xD;
					verifyPerformanceRequirements(warp);&#xD;
					for (SystemChoices choice : SystemChoices.values()) {&#xD;
						visualize(warp, choice); // visualize all System choices&#xD;
					}&#xD;
				}&#xD;
			}&#xD;
		} else { // visualize warp workload, source program and other requested items&#xD;
			visualize(workLoad, WorkLoadChoices.INPUT_GRAPH);&#xD;
			if (wfRequested) {&#xD;
				visualize(workLoad, WorkLoadChoices.COMUNICATION_GRAPH);&#xD;
			}&#xD;
			if (gvRequested) {&#xD;
				visualize(workLoad, WorkLoadChoices.GRAPHVIZ);&#xD;
			}&#xD;
			WarpInterface warp = SystemFactory.create(workLoad, nChannels, schedulerSelected);&#xD;
			verifyPerformanceRequirements(warp);&#xD;
			visualize(warp, SystemChoices.SOURCE);&#xD;
			if (caRequested) {&#xD;
				visualize(warp, SystemChoices.CHANNEL);&#xD;
			}&#xD;
			if (laRequested) {&#xD;
				visualize(warp, SystemChoices.LATENCY);&#xD;
			}&#xD;
			if (latencyRequested || laRequested) {&#xD;
				visualize(warp, SystemChoices.LATENCY_REPORT);&#xD;
			}&#xD;
			if (raRequested) {&#xD;
				visualize(warp, SystemChoices.RELIABILITIES);&#xD;
			}&#xD;
		}&#xD;
&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23gJPLhDEe2QK54y_oSyxw" name="visualize" specification="_21O4UbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23gJPbhDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23gJPrhDEe2QK54y_oSyxw" name="choice" type="_2qdywrhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>var viz = VisualizationFactory.createWorkLoadVisualization(workLoad, outputSubDirectory, choice);&#xD;
		if (viz != null) {&#xD;
			if (verboseMode) {&#xD;
				System.out.println(viz.toString());&#xD;
			}&#xD;
			viz.toFile();&#xD;
			if (guiRequested) {&#xD;
				viz.toDisplay();&#xD;
			}&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23gwQLhDEe2QK54y_oSyxw" name="setWarpParameters" specification="_2rLkcbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23gwQbhDEe2QK54y_oSyxw" name="args">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23gwQrhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <language>java</language>
                <body>// move command line parsing into this&#xD;
															// function--need to set up globals?&#xD;
&#xD;
		// create holder objects for storing results ...&#xD;
		// BooleanHolder debug = new BooleanHolder();&#xD;
		StringHolder schedulerSelected = new StringHolder();&#xD;
		IntHolder channels = new IntHolder();&#xD;
		IntHolder faults = new IntHolder();&#xD;
		DoubleHolder m = new DoubleHolder();&#xD;
		DoubleHolder end2end = new DoubleHolder();&#xD;
		BooleanHolder gui = new BooleanHolder();&#xD;
		BooleanHolder gv = new BooleanHolder();&#xD;
		BooleanHolder wf = new BooleanHolder();&#xD;
		BooleanHolder ra = new BooleanHolder();&#xD;
		BooleanHolder la = new BooleanHolder();&#xD;
		BooleanHolder ca = new BooleanHolder();&#xD;
		BooleanHolder s = new BooleanHolder();&#xD;
		BooleanHolder all = new BooleanHolder();&#xD;
		BooleanHolder latency = new BooleanHolder();&#xD;
		BooleanHolder verbose = new BooleanHolder();&#xD;
		StringHolder input = new StringHolder();&#xD;
		StringHolder output = new StringHolder();&#xD;
&#xD;
		// create the parser and specify the allowed options ...&#xD;
		ArgParser parser = new ArgParser(&quot;java -jar warp.jar&quot;);&#xD;
		parser.addOption(&quot;-sch, --schedule %s {priority,rm,dm,rtHart,poset} #scheduler options&quot;, schedulerSelected);&#xD;
		parser.addOption(&quot;-c, --channels %d {[1,16]} #number of wireless channels&quot;, channels);&#xD;
		parser.addOption(&quot;-m %f {[0.5,1.0]} #minimum link quality in the system&quot;, m);&#xD;
		parser.addOption(&quot;-e, --e2e %f {[0.5,1.0]} #global end-to-end communcation reliability for all flows&quot;, end2end);&#xD;
		parser.addOption(&quot;-f, --faults %d {[1,10]} #number of faults per edge in a flow (per period)&quot;, faults);&#xD;
		parser.addOption(&quot;-gui %v #create a gui visualizations&quot;, gui);&#xD;
		parser.addOption(&quot;-gv %v #create a graph visualization (.gv) file for GraphViz&quot;, gv);&#xD;
		parser.addOption(&#xD;
				&quot;-wf  %v #create a WARP (.wf) file that shows the maximum number of transmissions on each segment of the flow needed to meet the end-to-end reliability&quot;,&#xD;
				wf);&#xD;
		parser.addOption(&quot;-ra  %v #create a reliability analysis file (tab delimited .csv) for the warp program&quot;, ra);&#xD;
		parser.addOption(&quot;-la  %v #create a latency analysis file (tab delimited .csv) for the warp program&quot;, la);&#xD;
		parser.addOption(&quot;-ca  %v #create a channel analysis file (tab delimited .csv) for the warp program&quot;, ca);&#xD;
		parser.addOption(&quot;-s  %v #create a simulator input file (.txt) for the warp program&quot;, s);&#xD;
		parser.addOption(&quot;-a, --all  %v #create all output files (activates -gv, -wf, -ra, -s)&quot;, all);&#xD;
		parser.addOption(&quot;-l, --latency  %v #generates end-to-end latency report file (.txt)&quot;, latency);&#xD;
		parser.addOption(&quot;-i, --input %s #&lt;InputFile> of graph flows (workload)&quot;, input);&#xD;
		parser.addOption(&quot;-o, --output %s #&lt;OutputDIRECTORY> where output files will be placed&quot;, output);&#xD;
		parser.addOption(&#xD;
				&quot;-v, --verbose %v #Echo input file name and parsed contents. Then for each flow instance: show maximum E2E latency and min/max communication cost for that instance of the flow&quot;,&#xD;
				verbose);&#xD;
		// parser.addOption (&quot;-d, -debug, --debug %v #Debug mode: base directory =&#xD;
		// $HOME/Documents/WARP/&quot;, debug);&#xD;
&#xD;
		// match the arguments ...&#xD;
		parser.matchAllArgs(args);&#xD;
&#xD;
		// Set WARP system configuration options&#xD;
		if (channels.value > 0) {&#xD;
			nChannels = channels.value; // set option specified&#xD;
		} else {&#xD;
			nChannels = NUM_CHANNELS; // set to default&#xD;
		}&#xD;
		if (faults.value > 0) { // global variable for # of Faults tolerated per edge&#xD;
			numFaults = faults.value; // set option specified&#xD;
		} else {&#xD;
			numFaults = DEFAULT_FAULTS_TOLERATED; // set to default&#xD;
		}&#xD;
		if (m.value > 0.0) { // global variable for minimum Link Quality in system&#xD;
			minLQ = m.value; // set option specified&#xD;
		} else {&#xD;
			minLQ = MIN_LQ; // set to default&#xD;
		}&#xD;
		if (end2end.value > 0.0) { // global variable for minimum Link Quality in system&#xD;
			e2e = end2end.value; // set option specified&#xD;
		} else {&#xD;
			e2e = E2E; // set to default&#xD;
		}&#xD;
		if (output.value != null) { // default output subdirectory (from working directory)&#xD;
			outputSubDirectory = output.value; // set option specified&#xD;
		} else {&#xD;
			outputSubDirectory = DEFAULT_OUTPUT_SUB_DIRECTORY; // set to default&#xD;
		}&#xD;
&#xD;
		guiRequested = gui.value; // GraphVis file requested flag&#xD;
		gvRequested = gv.value; // GraphVis file requested flag&#xD;
		wfRequested = wf.value; // WARP file requested flag&#xD;
		raRequested = ra.value; // Reliability Analysis file requested flag&#xD;
		laRequested = la.value; // Latency Analysis file requested flag&#xD;
		caRequested = ca.value; // Latency Analysis file requested flag&#xD;
		simRequested = s.value; // Simulation file requested flag&#xD;
		allRequested = all.value; // all out files requested flag&#xD;
		latencyRequested = latency.value; // latency report requested flag&#xD;
		verboseMode = verbose.value; // verbose mode flag (mainly for running in IDE)&#xD;
		// debugMode = debug.value; // debug mode flag (mainly for running in IDE)&#xD;
		inputFile = input.value; // input file specified&#xD;
		if (schedulerSelected.value != null) { // can't switch on a null value so check then switch&#xD;
			schedulerRequested = true;&#xD;
			switch (schedulerSelected.value) {&#xD;
			case &quot;priority&quot;:&#xD;
				Warp.schedulerSelected = ScheduleChoices.PRIORITY;&#xD;
				break;&#xD;
&#xD;
			case &quot;rm&quot;:&#xD;
				Warp.schedulerSelected = ScheduleChoices.RM;&#xD;
				break;&#xD;
&#xD;
			case &quot;dm&quot;:&#xD;
				Warp.schedulerSelected = ScheduleChoices.DM;&#xD;
				break;&#xD;
&#xD;
			case &quot;rtHart&quot;:&#xD;
				Warp.schedulerSelected = ScheduleChoices.RTHART;&#xD;
				break;&#xD;
&#xD;
			case &quot;poset&quot;:&#xD;
				Warp.schedulerSelected = ScheduleChoices.POSET_PRIORITY;&#xD;
				break;&#xD;
&#xD;
			default:&#xD;
				Warp.schedulerSelected = ScheduleChoices.PRIORITY;&#xD;
				break;&#xD;
			}&#xD;
		} else { // null value when no scheduler specified; so use default&#xD;
			Warp.schedulerSelected = DEFAULT_SCHEDULER;&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23gwQ7hDEe2QK54y_oSyxw" name="printWarpParameters" specification="_2rMLgrhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>// print all system configuration parameters&#xD;
		// Print out each of the system configuration values&#xD;
		System.out.println(&quot;WARP system configuration values:&quot;);&#xD;
		System.out.println(&quot;\tScheduler=&quot; + schedulerSelected);&#xD;
		System.out.println(&quot;\tnChanels=&quot; + nChannels);&#xD;
		System.out.println(&quot;\tnumFaults=&quot; + numFaults);&#xD;
		System.out.println(&quot;\tminLQ=&quot; + minLQ);&#xD;
		System.out.println(&quot;\tE2E=&quot; + e2e);&#xD;
		System.out.println(&quot;\tguiRequest flag=&quot; + guiRequested);&#xD;
		System.out.println(&quot;\tgvRequest flag=&quot; + gvRequested);&#xD;
		System.out.println(&quot;\twfRequest flag=&quot; + wfRequested);&#xD;
		System.out.println(&quot;\traRequest flag=&quot; + raRequested);&#xD;
		System.out.println(&quot;\tlaRequest flag=&quot; + laRequested);&#xD;
		System.out.println(&quot;\tcaRequest flag=&quot; + caRequested);&#xD;
		System.out.println(&quot;\tsimRequest flag=&quot; + simRequested);&#xD;
		System.out.println(&quot;\tallOutFilesRequest flag=&quot; + allRequested);&#xD;
		System.out.println(&quot;\tlatency flag=&quot; + latencyRequested);&#xD;
		if (inputFile != null) {&#xD;
			System.out.println(&quot;\tinput file=&quot; + inputFile);&#xD;
		} else {&#xD;
			System.out.println(&quot;\tNo input file specified; will be requested when needed.&quot;);&#xD;
		}&#xD;
		System.out.println(&quot;\toutputSubDirectory=&quot; + outputSubDirectory);&#xD;
		System.out.println(&quot;\tverbose flag=&quot; + verboseMode);&#xD;
		// System.out.println (&quot;\tdebug flag=&quot; + debugMode);&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2rK9YLhDEe2QK54y_oSyxw" name="main" isStatic="true" method="_23gJObhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23s9gLhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Entry point of the warp program.&lt;/h1>&#xD;
	 * &lt;p>&#xD;
	 * Sets up the warp parameters according to the command line arguments. The&#xD;
	 * program will print the parameters if it is in verbose mode. Then a workload&#xD;
	 * is created based off of the input file. Finally if all was requested, all&#xD;
	 * visualizations files are made, and if set&#xD;
	 * &lt;/p>&#xD;
	 * &#xD;
	 * @param args command line arguments.</body>
                </ownedComment>
                <ownedParameter xmi:id="_2rK9YbhDEe2QK54y_oSyxw" name="args">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2rK9YrhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rLkcbhDEe2QK54y_oSyxw" name="setWarpParameters" visibility="private" isStatic="true" method="_23gwQLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23s9grhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Sets the class attributes based on the command line arguments.&lt;/h1>&#xD;
	 * &lt;p>&#xD;
	 * If no value is given for an attribute the value will be set to the default.&#xD;
	 * &lt;/p>&#xD;
	 * &lt;h2>Options&lt;/h2>&#xD;
	 * &lt;ul>&#xD;
	 * &lt;li>-sch, --schedule %s {priority,rm,dm,rtHart,poset} #scheduler options&lt;/li>&#xD;
	 * &lt;li>-c, --channels %d {[1,16]} #number of wireless channels&lt;/li>&#xD;
	 * &lt;li>-m %f {[0.5,1.0]} #minimum link quality in the system&lt;/li>&#xD;
	 * &lt;li>-e, --e2e %f {[0.5,1.0]} #global end-to-end communcation reliability for&#xD;
	 * all flows&lt;/li>&#xD;
	 * &lt;li>-f, --faults %d {[1,10]} #number of faults per edge in a flow (per&#xD;
	 * period)&lt;/li>&#xD;
	 * &lt;li>-gui %v #create a gui visualizations&lt;/li>&#xD;
	 * &lt;li>-gv %v #create a graph visualization (.gv) file for GraphViz&lt;/li>&#xD;
	 * &lt;li>-wf %v #create a WARP (.wf) file that shows the maximum number of&#xD;
	 * transmissions on each segment of the flow needed to meet the end-to-end&#xD;
	 * reliability&lt;/li>&#xD;
	 * &lt;li>-ra %v #create a reliability analysis file (tab delimited .csv) for the&#xD;
	 * warp program&lt;/li>&#xD;
	 * &lt;li>-la %v #create a latency analysis file (tab delimited .csv) for the warp&#xD;
	 * program&lt;/li>&#xD;
	 * &lt;li>-ca %v #create a channel analysis file (tab delimited .csv) for the warp&#xD;
	 * program&lt;/li>&#xD;
	 * &lt;li>-s %v #create a simulator input file (.txt) for the warp program&lt;/li>&#xD;
	 * &lt;li>-a, --all %v #create all output files (activates -gv, -wf, -ra, -s)&lt;/li>&#xD;
	 * &lt;li>-l, --latency %v #generates end-to-end latency report file (.txt)&lt;/li>&#xD;
	 * &lt;li>-i, --input %s #&lt;InputFile> of graph flows (workload)&lt;/li>&#xD;
	 * &lt;li>-o, --output %s #&lt;OutputDIRECTORY> where output files will be placed&lt;/li>&#xD;
	 * &lt;li>-v, --verbose %v #Echo input file name and parsed contents. Then for each&#xD;
	 * flow instance: show maximum E2E latency and min/max communication cost for&#xD;
	 * that instance of the flow&lt;/li>&#xD;
	 * &lt;/ul>&#xD;
	 * &#xD;
	 * @param args An array of strings of the command line arguments</body>
                </ownedComment>
                <ownedParameter xmi:id="_2rLkcrhDEe2QK54y_oSyxw" name="args">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2rMLgLhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rMLgrhDEe2QK54y_oSyxw" name="printWarpParameters" visibility="private" isStatic="true" method="_23gwQ7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23s9g7hDEe2QK54y_oSyxw">
                  <body>&lt;h1>Prints the warp system configuration parameters&lt;/h1></body>
                </ownedComment>
              </ownedOperation>
              <ownedOperation xmi:id="_21O4UbhDEe2QK54y_oSyxw" name="visualize" visibility="private" isStatic="true" method="_23gJPLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23s9gbhDEe2QK54y_oSyxw">
                  <body>&lt;h1>Visualizes a workload.&lt;/h1>&#xD;
	 * &lt;p>&#xD;
	 * Puts the visualization in the the output folder directory. The type of&#xD;
	 * visualization is determined by the choice object that is passed in.&#xD;
	 * &lt;/p>&#xD;
	 * &#xD;
	 * @param workLoad The workload to visualize&#xD;
	 * @param choice   An item from the WorkLoadChoices enum that specifies what&#xD;
	 *                 visualization to create.</body>
                </ownedComment>
                <ownedParameter xmi:id="_21O4UrhDEe2QK54y_oSyxw" name="workLoad" type="_2q5QkLhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21O4U7hDEe2QK54y_oSyxw" name="choice" type="_2qdywrhDEe2QK54y_oSyxw"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2rOnwLhDEe2QK54y_oSyxw" name="WorkLoadTest" visibility="package">
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23gwRLhDEe2QK54y_oSyxw" name="testAddFlow" specification="_2rPO0LhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9,0.99,&quot;Example1a.txt&quot;);&#xD;
		String flowName = &quot;F2&quot;;&#xD;
		//Add flow to workload&#xD;
		wld.addFlow(flowName);&#xD;
		&#xD;
		//check flows in the created workload, and return true if flowName&#xD;
		//is in it&#xD;
		assertTrue(wld.getFlows().containsKey(flowName), String.format(&quot;Expected true but got false&quot;));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23gwRbhDEe2QK54y_oSyxw" name="testAddFlowOverwritten" specification="_2rPO17hDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9,0.99,&quot;Example1a.txt&quot;);&#xD;
		String flowName = &quot;F0&quot;;&#xD;
		&#xD;
		wld.addFlow(flowName);&#xD;
		&#xD;
		assertTrue(wld.getFlows().containsKey(flowName), String.format(&quot;Expected true but got false&quot;));&#xD;
		&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23gwRrhDEe2QK54y_oSyxw" name="testAddNodeToFlow" specification="_2rP15rhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9,0.99,&quot;Example1a.txt&quot;);&#xD;
		String flowName = &quot;F0&quot;;&#xD;
		String nodeName = &quot;A&quot;;&#xD;
				&#xD;
		//Adds a node to the flow in workload&#xD;
		wld.addNodeToFlow(flowName, nodeName);&#xD;
		&#xD;
		//Checking to see if the added node is present in workload.&#xD;
		assertTrue(wld.getNodes().containsKey(nodeName),String.format(&quot;Expected true but got false&quot;));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23gwR7hDEe2QK54y_oSyxw" name="testAddNodeToFlowEmpty" specification="_2rP17bhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9,0.99,&quot;EmptyWorkload.txt&quot;);&#xD;
		String flowName = &quot;F0&quot;;&#xD;
		String nodeName = &quot;A&quot;;&#xD;
		&#xD;
		wld.addFlow(flowName);&#xD;
		wld.addNodeToFlow(flowName, nodeName);&#xD;
		&#xD;
		assertTrue(wld.getNodes().containsKey(nodeName), String.format(&quot;Expected true but got false&quot;));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23gwSLhDEe2QK54y_oSyxw" name="testSetFlowPriority" specification="_2rQc9rhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;Example1a.txt&quot;);&#xD;
		String flowName = &quot;F0&quot;;&#xD;
		Integer priority = 0;&#xD;
		//sets priority to given flow&#xD;
		wld.setFlowPriority(flowName, priority);&#xD;
	    int actual = wld.getFlowPriority(flowName);&#xD;
		//checks to see if the priority has been correctly set to flowName&#xD;
		assertEquals(priority, actual,String.format(&quot;Expected %d Flow Priority but got %d.&quot;, priority, actual));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23gwSbhDEe2QK54y_oSyxw" name="testGetFlowTxAttemptsPerLink" specification="_2rQc_bhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;Example1a.txt&quot;);&#xD;
		String flowName = &quot;F0&quot;;&#xD;
		&#xD;
		int numAttempts = wld.getFlowTxAttemptsPerLink(flowName);&#xD;
		int expected = 3;&#xD;
		&#xD;
		&#xD;
		assertEquals(expected,numAttempts, String.format(&quot;Expected %d transmission attempts but got %d.&quot;, expected, numAttempts));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23gwSrhDEe2QK54y_oSyxw" name="testGetFlowNames" specification="_2rREBbhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9,0.99, &quot;Example1a.txt&quot;);&#xD;
		String[] flowNames = {&quot;F0&quot;, &quot;F1&quot;};&#xD;
		&#xD;
		List&lt;String> expected = new ArrayList&lt;String>(Arrays.asList(flowNames));&#xD;
		&#xD;
		List&lt;String> actual = wld.getFlowNamesInOriginalOrder();&#xD;
		&#xD;
		assertEquals(expected, actual, String.format(&quot;Expected Flow names %s, but got %s&quot;, expected, actual));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23gwS7hDEe2QK54y_oSyxw" name="testGetFlowNamesEmpty" specification="_2rREDLhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9,0.99,&quot;EmptyWorkload.txt&quot;);&#xD;
		String[] flowNames = {};&#xD;
		&#xD;
		List&lt;String> expected = new ArrayList&lt;String>(Arrays.asList(flowNames));&#xD;
		&#xD;
		List&lt;String> actual = wld.getFlowNamesInOriginalOrder();&#xD;
		&#xD;
		assertEquals(expected, actual, String.format(&quot;Expected Flow names %s, but got %s&quot;, expected, actual));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23gwTLhDEe2QK54y_oSyxw" name="testGetNodeIndexExisting" specification="_2rRrFrhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9,0.99,&quot;Example1a.txt&quot;);&#xD;
		&#xD;
		String nodeName = &quot;B&quot;;&#xD;
		&#xD;
		int actual = wld.getNodeIndex(nodeName);&#xD;
		int expected = 1;&#xD;
		&#xD;
		assertEquals(expected,actual,String.format(&quot;Expected Node index %d but got %d.&quot;, expected, actual));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23hXULhDEe2QK54y_oSyxw" name="testGetNodeIndexNonExisting" specification="_2rSSI7hDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9,0.99,&quot;Example1a.txt&quot;);&#xD;
		&#xD;
		String nodeName = &quot;null&quot;;&#xD;
		&#xD;
		int actual = wld.getNodeIndex(nodeName);&#xD;
		int expected = 0;&#xD;
		&#xD;
		assertEquals(expected,actual,String.format(&quot;Expected node index %d but got %d.&quot;, expected, actual));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23hXUbhDEe2QK54y_oSyxw" name="testGetNumTxAttemptsPerLink" specification="_2rSSKrhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9,0.99, &quot;Example1a.txt&quot;);&#xD;
		String flowName = &quot;F0&quot;;&#xD;
		&#xD;
		Integer[] expected = {3,3,0};&#xD;
		Integer[] actual = wld.getNumTxAttemptsPerLink(flowName);&#xD;
&#xD;
		assertArrayEquals(expected, actual, String.format(&quot;expected %s but got %s&quot;, printArrayHelper(expected), printArrayHelper(actual)));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23hXUrhDEe2QK54y_oSyxw" name="testMaxFlowLength" specification="_2rS5NLhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9,0.99,&quot;Example2.txt&quot;);&#xD;
		//6 is the highest length of a flow in Example2.txt&#xD;
		int expected = 6;&#xD;
		int actual = wld.maxFlowLength();&#xD;
		&#xD;
		assertEquals(expected,actual);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23hXU7hDEe2QK54y_oSyxw" name="testMaxFlowLengthEmpty" specification="_2rS5O7hDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9,0.99,&quot;EmptyWorkload.txt&quot;);&#xD;
		//6 is the highest length of a flow in Example2.txt&#xD;
		int expected = 0;&#xD;
		int actual = wld.maxFlowLength();&#xD;
		&#xD;
		assertEquals(expected,actual);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23hXVLhDEe2QK54y_oSyxw" name="testGetTotalTxAttemptsInFlowNonExistentFlow" specification="_2rTgRrhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;Example.txt&quot;);&#xD;
		String flowName = &quot;Nonexistent Flow&quot;;&#xD;
&#xD;
		// If the lambda does not throw an IndexOutOfBoundsException,&#xD;
		// then the test will fail&#xD;
		Exception thrown = assertThrows(IndexOutOfBoundsException.class, () -> wld.getTotalTxAttemptsInFlow(flowName),&#xD;
				&quot;An IndexOutOfBounds exception was expected but not thrown.&quot;);&#xD;
		&#xD;
		// expected and actual error messages&#xD;
		String expectedErrorMessage = &quot;Index -1 out of bounds for length 0&quot;;&#xD;
		String actualErrorMessage = thrown.getMessage();&#xD;
&#xD;
		// Checking to make sure the error message from the exception is what I expected&#xD;
		assertEquals(expectedErrorMessage, actualErrorMessage, String.format(&#xD;
				&quot;Error message is incorrect. Expected %s but got %s&quot;, expectedErrorMessage, actualErrorMessage));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23hXVbhDEe2QK54y_oSyxw" name="testGetTotalTxAttemptsInFlowExistentFlow1" specification="_2rUHUrhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0, 0.9, 0.99, &quot;Example.txt&quot;);&#xD;
		String flowName = &quot;F0&quot;;&#xD;
&#xD;
		// Create expected and actual values&#xD;
		System.out.println(String.format(&quot;Num: %d&quot;, wld.getTotalTxAttemptsInFlow(flowName)));&#xD;
		int expected = 4;&#xD;
		int actual = wld.getTotalTxAttemptsInFlow(flowName);&#xD;
&#xD;
		assertSame(expected, actual, String.format(&quot;Expected %d transmission attempts but got %d.&quot;, expected, actual));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23hXVrhDEe2QK54y_oSyxw" name="testGetTotalTxAttemptsInFlowExistentFlow2" specification="_2rUHWbhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0, 0.9, 0.99, &quot;StressTest.txt&quot;);&#xD;
		String flowName = &quot;AF4&quot;;&#xD;
&#xD;
		// Create expected and actual values&#xD;
		int expected = 11;&#xD;
		int actual = wld.getTotalTxAttemptsInFlow(flowName);&#xD;
&#xD;
		assertSame(expected, actual, String.format(&quot;Expected %d transmission attempts but got %d.&quot;, expected, actual));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23hXV7hDEe2QK54y_oSyxw" name="testGetTotalTxAttemptsInFlowExistentFlowNumFaults1" specification="_2rUuZLhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(6, 0.9, 0.99, &quot;Example.txt&quot;);&#xD;
		String flowName = &quot;F0&quot;;&#xD;
&#xD;
		// Create expected and actual values&#xD;
		System.out.println(String.format(&quot;Num: %d&quot;, wld.getTotalTxAttemptsInFlow(flowName)));&#xD;
		int expected = 14;&#xD;
		int actual = wld.getTotalTxAttemptsInFlow(flowName);&#xD;
&#xD;
		assertSame(expected, actual, String.format(&quot;Expected %d transmission attempts but got %d.&quot;, expected, actual));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23hXWLhDEe2QK54y_oSyxw" name="testGetTotalTxAttemptsInFlowExistentFlowNumFaults2" specification="_2rUua7hDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(5, 0.9, 0.99, &quot;StressTest.txt&quot;);&#xD;
		String flowName = &quot;AF4&quot;;&#xD;
&#xD;
		// Create expected and actual values&#xD;
		int expected = 42;&#xD;
		int actual = wld.getTotalTxAttemptsInFlow(flowName);&#xD;
&#xD;
		assertSame(expected, actual, String.format(&quot;Expected %d transmission attempts but got %d.&quot;, expected, actual));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23hXWbhDEe2QK54y_oSyxw" name="testGetFlowPriorityNonExistentFlow" specification="_2rUucrhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;Example.txt&quot;);&#xD;
		String flowName = &quot;Nonexistent Flow&quot;;&#xD;
&#xD;
		// Create expected and actual values&#xD;
		// when a node does not exist a blank flow is created and&#xD;
		// the priority is set by default to 0&#xD;
		int expected = 0;&#xD;
		int actual = wld.getFlowPriority(flowName);&#xD;
&#xD;
		assertSame(expected, actual, String.format(&quot;Expected %d priority but got %d.&quot;, expected, actual));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23hXWrhDEe2QK54y_oSyxw" name="testGetFlowPriorityDefaultPriority" specification="_2rVVdrhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;Example.txt&quot;);&#xD;
		String flowName = &quot;F0&quot;;&#xD;
&#xD;
		// Create expected and actual values&#xD;
		// 0 is the default priority and the priority is not specified in Example.txt&#xD;
		int expected = 0;&#xD;
		int actual = wld.getFlowPriority(flowName);&#xD;
&#xD;
		assertSame(expected, actual, String.format(&quot;Expected %d priority but got %d.&quot;, expected, actual));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23hXW7hDEe2QK54y_oSyxw" name="testGetFlowPriorityCustomPriority1" specification="_2rVVfbhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;Example1A.txt&quot;);&#xD;
		&#xD;
		// Create expected and actual values&#xD;
		{&#xD;
			String flowName = &quot;F0&quot;;&#xD;
			// 0 is the priority set for F0 in Example1A.txt&#xD;
			int expected = 0;&#xD;
			int actual = wld.getFlowPriority(flowName);&#xD;
&#xD;
			assertSame(expected, actual, String.format(&quot;Expected %d priority but got %d.&quot;, expected, actual));&#xD;
		}&#xD;
		&#xD;
		{&#xD;
			String flowName = &quot;F1&quot;;&#xD;
			// 1 is the priority set for F1 in Example1A.txt&#xD;
			int expected = 1;&#xD;
			int actual = wld.getFlowPriority(flowName);&#xD;
			&#xD;
			assertSame(expected, actual, String.format(&quot;Expected %d priority but got %d.&quot;, expected, actual));&#xD;
		}&#xD;
		&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23hXXLhDEe2QK54y_oSyxw" name="testGetFlowPriorityCustomPriority2" specification="_2rV8grhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;CustomWorkloadByZach.txt&quot;);&#xD;
		&#xD;
		// Create expected and actual values&#xD;
		{&#xD;
			String flowName = &quot;RandomFlow1&quot;;&#xD;
			// 70 is the priority set for RandomFlow1 in CustomWorkloadByZach.txt&#xD;
			int expected = 70;&#xD;
			int actual = wld.getFlowPriority(flowName);&#xD;
&#xD;
			assertSame(expected, actual, String.format(&quot;Expected %d priority but got %d.&quot;, expected, actual));&#xD;
		}&#xD;
		&#xD;
		{&#xD;
			String flowName = &quot;RandomFlow2&quot;;&#xD;
			// 48 is the priority set for RandomFlow2 in CustomWOrkloadByZach.txt&#xD;
			int expected = 48;&#xD;
			int actual = wld.getFlowPriority(flowName);&#xD;
			&#xD;
			assertSame(expected, actual, String.format(&quot;Expected %d priority but got %d.&quot;, expected, actual));&#xD;
		}&#xD;
		&#xD;
		{&#xD;
			String flowName = &quot;RandomFlow3&quot;;&#xD;
			// 23 is the priority set for RandomFlow3 in CustomWOrkloadByZach.txt&#xD;
			int expected = 23;&#xD;
			int actual = wld.getFlowPriority(flowName);&#xD;
			&#xD;
			assertSame(expected, actual, String.format(&quot;Expected %d priority but got %d.&quot;, expected, actual));&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23hXXbhDEe2QK54y_oSyxw" name="testGetFlowPriorityWithNodes" specification="_2rV8ibhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;Example1a.txt&quot;);&#xD;
		&#xD;
		String nodeName = &quot;B&quot;;&#xD;
		{&#xD;
			// Set up values&#xD;
			String flowName = &quot;F0&quot;;&#xD;
			int expected = 0;&#xD;
			int actual = wld.getFlowPriority(flowName, nodeName);&#xD;
		&#xD;
			assertSame(expected, actual, String.format(&quot;Expected %d priority but got %d.&quot;, expected, actual));&#xD;
		}&#xD;
		&#xD;
		{&#xD;
			// Set up values&#xD;
			String flowName = &quot;F1&quot;;&#xD;
			int expected = 0;&#xD;
			int actual = wld.getFlowPriority(flowName, nodeName);&#xD;
		&#xD;
			assertSame(expected, actual, String.format(&quot;Expected %d priority but got %d.&quot;, expected, actual));&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23hXXrhDEe2QK54y_oSyxw" name="testSetFlowsInRMOrder1" specification="_2rV8kLhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;Example1a.txt&quot;);&#xD;
		&#xD;
		// We are testing that flows are sorted in order of period then priority as the second key&#xD;
		wld.setFlowsInRMorder();&#xD;
		&#xD;
		String[] expectedArray = {&quot;F0&quot;, &quot;F1&quot;};&#xD;
		// convert and array to arraylist&#xD;
		List&lt;String> expected = new ArrayList&lt;String>(Arrays.asList(expectedArray));&#xD;
		// The actual contains a list of the names of the flows&#xD;
		List&lt;String> actual = wld.getFlowNamesInPriorityOrder();&#xD;
		&#xD;
		// first check the sizes are equals so the loop won't crash&#xD;
		int expectedLength = expected.size();&#xD;
		int actualLength = actual.size();&#xD;
		assertSame(expectedLength, actualLength, String.format(&quot;Length of expected array is %d but we got %d&quot;, expectedLength, actualLength));&#xD;
		&#xD;
		// check to make sure the content of each array is equal&#xD;
		for(int i = 0; i &lt; expectedLength; i++) {&#xD;
			String expectedString = expected.get(i);&#xD;
			String actualString = actual.get(i);&#xD;
			assertEquals(expectedString, actualString, String.format(&quot;Expected %s but got %s.&quot;, expectedString, actualString));&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23h-YLhDEe2QK54y_oSyxw" name="testSetFlowsInRMOrder2" specification="_2rWjlbhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;CustomWorkloadByZach.txt&quot;);&#xD;
		&#xD;
		// We are testing that flows are sorted in order of period then priority as the second key&#xD;
		wld.setFlowsInRMorder();&#xD;
		String[] expectedArray = {&quot;RandomFlow1&quot;, &quot;RandomFlow3&quot;, &quot;RandomFlow2&quot;};&#xD;
		List&lt;String> expected = new ArrayList&lt;String>(Arrays.asList(expectedArray));&#xD;
		// The actual contains a list of the names of the flows&#xD;
		List&lt;String> actual = wld.getFlowNamesInPriorityOrder();&#xD;
		&#xD;
		// ensuring the lengths are the same so the loop won't crash&#xD;
		int expectedLength = expected.size();&#xD;
		int actualLength = actual.size();&#xD;
		assertSame(expectedLength, actualLength, String.format(&quot;Length of expected array is %d but we got %d&quot;, expectedLength, actualLength));&#xD;
		&#xD;
		// making sure the arrays are actually equal&#xD;
		for(int i = 0; i &lt; expectedLength; i++) {&#xD;
			String expectedString = expected.get(i);&#xD;
			String actualString = actual.get(i);&#xD;
			assertEquals(expectedString, actualString, String.format(&quot;Expected %s but got %s.&quot;, expectedString, actualString));&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23h-YbhDEe2QK54y_oSyxw" name="testSetFlowsInRMOrderSamePeriod" specification="_2rWjnLhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;SamePeriod.txt&quot;);&#xD;
		&#xD;
		// We are testing that flows are sorted in order of period then priority as the second key&#xD;
		// Since the period for this file is the same we must check the priority&#xD;
		wld.setFlowsInRMorder();&#xD;
		String[] expectedArray = {&quot;SamePeriod3&quot;, &quot;SamePeriod2&quot;, &quot;SamePeriod1&quot;};&#xD;
		List&lt;String> expected = new ArrayList&lt;String>(Arrays.asList(expectedArray));&#xD;
		// The actual contains a list of the names of the flows&#xD;
		List&lt;String> actual = wld.getFlowNamesInPriorityOrder();&#xD;
		&#xD;
		// make sure the sizes are the same so it won't crash&#xD;
		int expectedLength = expected.size();&#xD;
		int actualLength = actual.size();&#xD;
		assertSame(expectedLength, actualLength, String.format(&quot;Length of expected array is %d but we got %d&quot;, expectedLength, actualLength));&#xD;
		&#xD;
		// ensure the arrays are equal&#xD;
		for(int i = 0; i &lt; expectedLength; i++) {&#xD;
			String expectedString = expected.get(i);&#xD;
			String actualString = actual.get(i);&#xD;
			assertEquals(expectedString, actualString, String.format(&quot;Expected %s but got %s.&quot;, expectedString, actualString));&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23h-YrhDEe2QK54y_oSyxw" name="testSetFlowsInRMOrderSamePeriodSamePriority" specification="_2rWjo7hDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;Example.txt&quot;);&#xD;
		&#xD;
		// We are testing that flows are sorted in order of period then priority as the second key&#xD;
		// Since the period for this file is the same we must check the priority&#xD;
		// Since priority same flows come in default order&#xD;
		wld.setFlowsInRMorder();&#xD;
		String[] expectedArray = {&quot;F0&quot;, &quot;F1&quot;};&#xD;
		List&lt;String> expected = new ArrayList&lt;String>(Arrays.asList(expectedArray));&#xD;
		// The actual contains a list of the names of the flows&#xD;
		List&lt;String> actual = wld.getFlowNamesInPriorityOrder();&#xD;
		&#xD;
		// test if the arrays have the same lengths&#xD;
		int expectedLength = expected.size();&#xD;
		int actualLength = actual.size();&#xD;
		assertSame(expectedLength, actualLength, String.format(&quot;Length of expected array is %d but we got %d&quot;, expectedLength, actualLength));&#xD;
		&#xD;
		// test that the arrays are equal&#xD;
		for(int i = 0; i &lt; expectedLength; i++) {&#xD;
			String expectedString = expected.get(i);&#xD;
			String actualString = actual.get(i);&#xD;
			assertEquals(expectedString, actualString, String.format(&quot;Expected %s but got %s.&quot;, expectedString, actualString));&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23h-Y7hDEe2QK54y_oSyxw" name="testGetNodeNamesOrderedAlphabetically" specification="_2rXKprhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;Example.txt&quot;);&#xD;
		&#xD;
		// abc is alphabetical order&#xD;
		String[] expected = {&quot;A&quot;, &quot;B&quot;, &quot;C&quot;};&#xD;
		String[] actual = wld.getNodeNamesOrderedAlphabetically();&#xD;
		&#xD;
		assertArrayEquals(expected, actual, String.format(&quot;Expected %s but got %s&quot;, printArrayHelper(expected), printArrayHelper(actual)));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23h-ZLhDEe2QK54y_oSyxw" name="testGetNodeNamesOrderedAlphabeticallyNumberedNodes" specification="_2rXKrbhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;NumberedNodes.txt&quot;);&#xD;
		&#xD;
		// creating expected and actual values&#xD;
		String[] expected = {&quot;1&quot;, &quot;2&quot;, &quot;3&quot;};&#xD;
		String[] actual = wld.getNodeNamesOrderedAlphabetically();&#xD;
		&#xD;
		assertArrayEquals(expected, actual, String.format(&quot;Expected %s but got %s&quot;, printArrayHelper(expected), printArrayHelper(actual)));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23h-ZbhDEe2QK54y_oSyxw" name="testGetNodeNamesOrderedAlphabeticallyMixedNodes" specification="_2rXxtbhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;MixedNodes.txt&quot;);&#xD;
		&#xD;
		// creating expected and actual values&#xD;
		String[] expected = {&quot;1A&quot;, &quot;1B&quot;, &quot;A1&quot;, &quot;B1&quot;};&#xD;
		String[] actual = wld.getNodeNamesOrderedAlphabetically();&#xD;
		&#xD;
		assertArrayEquals(expected, actual, String.format(&quot;Expected %s but got %s&quot;, printArrayHelper(expected), printArrayHelper(actual)));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23h-ZrhDEe2QK54y_oSyxw" name="testGetNodesInFlowNonExistentFlow" specification="_2rXxvLhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;Example.txt&quot;);&#xD;
		&#xD;
		// creating flowname, expected and actual values&#xD;
		String flowName = &quot;NonExistentFlow&quot;;&#xD;
		String[] expected = new String[0];&#xD;
		String[] actual = wld.getNodesInFlow(flowName);&#xD;
		&#xD;
		assertArrayEquals(expected, actual, String.format(&quot;Expected %s but got %s&quot;, printArrayHelper(expected), printArrayHelper(actual)));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23h-Z7hDEe2QK54y_oSyxw" name="testGetNodesInFlow1" specification="_2rYYw7hDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;Example.txt&quot;);&#xD;
		&#xD;
		// creates flowname and expected and actual values&#xD;
		String flowName = &quot;F0&quot;;&#xD;
		String[] expected = {&quot;A&quot;, &quot;B&quot;, &quot;C&quot;};&#xD;
		String[] actual = wld.getNodesInFlow(flowName);&#xD;
		&#xD;
		assertArrayEquals(expected, actual, String.format(&quot;Expected %s but got %s&quot;, printArrayHelper(expected), printArrayHelper(actual)));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23h-aLhDEe2QK54y_oSyxw" name="testGetNodesInFlow2" specification="_2rYYyrhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;CustomWorkloadByZach.txt&quot;);&#xD;
		&#xD;
		// creates flowname and expected and actual values&#xD;
		String flowName = &quot;RandomFlow3&quot;;&#xD;
		String[] expected = {&quot;D&quot;, &quot;C&quot;, &quot;A&quot;};&#xD;
		String[] actual = wld.getNodesInFlow(flowName);&#xD;
		&#xD;
		assertArrayEquals(expected, actual, String.format(&quot;Expected %s but got %s&quot;, printArrayHelper(expected), printArrayHelper(actual)));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23h-abhDEe2QK54y_oSyxw" name="testGetHyperPeriodNoFlows" specification="_2rYY0bhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;EmptyWorkload.txt&quot;);&#xD;
		&#xD;
		// creating expected and actual values&#xD;
		Integer expected = 1;&#xD;
		Integer actual = wld.getHyperPeriod();&#xD;
&#xD;
		assertEquals(expected, actual, String.format(&quot;Expected %d but got %d.&quot;, expected, actual));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23h-arhDEe2QK54y_oSyxw" name="testGetHyperPeriod" specification="_2rY_1rhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;CustomWorkloadByZach.txt&quot;);&#xD;
		&#xD;
		// expected and actual values&#xD;
		Integer expected = 180;&#xD;
		Integer actual = wld.getHyperPeriod();&#xD;
&#xD;
		assertEquals(expected, actual, String.format(&quot;Expected %d but got %d.&quot;, expected, actual));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23h-a7hDEe2QK54y_oSyxw" name="testGetFlowDeadlineNonExistentFlow" specification="_2rY_3bhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;Example.txt&quot;);&#xD;
		&#xD;
		String flowName = &quot;NonExistentFlow&quot;;&#xD;
		// default flow deadline is 100&#xD;
		Integer expected = 100;&#xD;
		// if a flow doesn't exist it will create a default flow with default parameters&#xD;
		Integer actual = wld.getFlowDeadline(flowName);&#xD;
		&#xD;
		assertEquals(expected, actual, String.format(&quot;expected %d but got %d&quot;, expected, actual));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23h-bLhDEe2QK54y_oSyxw" name="testGetFlowDeadline" specification="_2rZm5bhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;CustomWorkloadByZach.txt&quot;);&#xD;
		&#xD;
		// testing flow 1&#xD;
		{&#xD;
			//creating flowname and expected and actual values&#xD;
			String flowName = &quot;RandomFlow1&quot;;&#xD;
			Integer expected = 10;&#xD;
			Integer actual = wld.getFlowDeadline(flowName);&#xD;
			&#xD;
			// assertion&#xD;
			assertEquals(expected, actual, String.format(&quot;expected %d but got %d&quot;, expected, actual));			&#xD;
		}&#xD;
		&#xD;
		// testing flow 2&#xD;
		{&#xD;
			String flowName = &quot;RandomFlow2&quot;;&#xD;
			Integer expected = 0;&#xD;
			Integer actual = wld.getFlowDeadline(flowName);&#xD;
			&#xD;
			assertEquals(expected, actual, String.format(&quot;expected %d but got %d&quot;, expected, actual));&#xD;
		}&#xD;
		&#xD;
		// testing flow 3&#xD;
		{&#xD;
			String flowName = &quot;RandomFlow3&quot;;&#xD;
			Integer expected = 16;&#xD;
			Integer actual = wld.getFlowDeadline(flowName);&#xD;
			&#xD;
			assertEquals(expected, actual, String.format(&quot;expected %d but got %d&quot;, expected, actual));&#xD;
		}&#xD;
&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23h-bbhDEe2QK54y_oSyxw" name="testSetFlowDeadline" specification="_2rZm7LhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>WorkLoad wld = new WorkLoad(0.9, 0.99, &quot;CustomWorkloadByZach.txt&quot;);&#xD;
		&#xD;
		// flow name to use&#xD;
		String flowName = &quot;RandomFlow3&quot;;&#xD;
		&#xD;
		// making sure that the initial values are what we expect them to be&#xD;
		Integer initialExpectedDeadline = 16;&#xD;
		Integer initialActualDeadline = wld.getFlowDeadline(flowName);&#xD;
		&#xD;
		assertEquals(initialExpectedDeadline, initialActualDeadline, String.format(&quot;Expected %d but got %d&quot;, initialExpectedDeadline, initialActualDeadline));&#xD;
		&#xD;
		// setting the deadline to 1234&#xD;
		Integer expectedDeadline = 1234;&#xD;
		wld.setFlowDeadline(flowName, expectedDeadline);&#xD;
		&#xD;
		// getting the new deadline which should have changed&#xD;
		Integer actualDeadline = wld.getFlowDeadline(flowName);&#xD;
		&#xD;
		assertEquals(expectedDeadline, actualDeadline, String.format(&quot;Expected %d but got %d&quot;, expectedDeadline, actualDeadline));&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23h-brhDEe2QK54y_oSyxw" name="printArrayHelper" specification="_22Pk8bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23h-b7hDEe2QK54y_oSyxw" name="arr" type="_22O94LhDEe2QK54y_oSyxw">
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23h-cLhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23h-cbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>StringBuilder str = new StringBuilder().append(&quot;[&quot;);&#xD;
		for(int i = 0; i &lt; arr.length; i++) {&#xD;
			str.append((arr[i].toString() + &quot;, &quot;));&#xD;
		}&#xD;
		str.append(&quot;]&quot;);&#xD;
		return str.toString();&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2rPO0LhDEe2QK54y_oSyxw" name="testAddFlow" visibility="package" method="_23gwRLhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rPO17hDEe2QK54y_oSyxw" name="testAddFlowOverwritten" visibility="package" method="_23gwRbhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rP15rhDEe2QK54y_oSyxw" name="testAddNodeToFlow" visibility="package" method="_23gwRrhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rP17bhDEe2QK54y_oSyxw" name="testAddNodeToFlowEmpty" visibility="package" method="_23gwR7hDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rQc9rhDEe2QK54y_oSyxw" name="testSetFlowPriority" visibility="package" method="_23gwSLhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rQc_bhDEe2QK54y_oSyxw" name="testGetFlowTxAttemptsPerLink" visibility="package" method="_23gwSbhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rREBbhDEe2QK54y_oSyxw" name="testGetFlowNames" visibility="package" method="_23gwSrhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rREDLhDEe2QK54y_oSyxw" name="testGetFlowNamesEmpty" visibility="package" method="_23gwS7hDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rRrFrhDEe2QK54y_oSyxw" name="testGetNodeIndexExisting" visibility="package" method="_23gwTLhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rSSI7hDEe2QK54y_oSyxw" name="testGetNodeIndexNonExisting" visibility="package" method="_23hXULhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rSSKrhDEe2QK54y_oSyxw" name="testGetNumTxAttemptsPerLink" visibility="package" method="_23hXUbhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rS5NLhDEe2QK54y_oSyxw" name="testMaxFlowLength" visibility="package" method="_23hXUrhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rS5O7hDEe2QK54y_oSyxw" name="testMaxFlowLengthEmpty" visibility="package" method="_23hXU7hDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rTgRrhDEe2QK54y_oSyxw" name="testGetTotalTxAttemptsInFlowNonExistentFlow" visibility="package" method="_23hXVLhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rUHUrhDEe2QK54y_oSyxw" name="testGetTotalTxAttemptsInFlowExistentFlow1" visibility="package" method="_23hXVbhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rUHWbhDEe2QK54y_oSyxw" name="testGetTotalTxAttemptsInFlowExistentFlow2" visibility="package" method="_23hXVrhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rUuZLhDEe2QK54y_oSyxw" name="testGetTotalTxAttemptsInFlowExistentFlowNumFaults1" visibility="package" method="_23hXV7hDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rUua7hDEe2QK54y_oSyxw" name="testGetTotalTxAttemptsInFlowExistentFlowNumFaults2" visibility="package" method="_23hXWLhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rUucrhDEe2QK54y_oSyxw" name="testGetFlowPriorityNonExistentFlow" visibility="package" method="_23hXWbhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rVVdrhDEe2QK54y_oSyxw" name="testGetFlowPriorityDefaultPriority" visibility="package" method="_23hXWrhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rVVfbhDEe2QK54y_oSyxw" name="testGetFlowPriorityCustomPriority1" visibility="package" method="_23hXW7hDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rV8grhDEe2QK54y_oSyxw" name="testGetFlowPriorityCustomPriority2" visibility="package" method="_23hXXLhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rV8ibhDEe2QK54y_oSyxw" name="testGetFlowPriorityWithNodes" visibility="package" method="_23hXXbhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rV8kLhDEe2QK54y_oSyxw" name="testSetFlowsInRMOrder1" visibility="package" method="_23hXXrhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rWjlbhDEe2QK54y_oSyxw" name="testSetFlowsInRMOrder2" visibility="package" method="_23h-YLhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rWjnLhDEe2QK54y_oSyxw" name="testSetFlowsInRMOrderSamePeriod" visibility="package" method="_23h-YbhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rWjo7hDEe2QK54y_oSyxw" name="testSetFlowsInRMOrderSamePeriodSamePriority" visibility="package" method="_23h-YrhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rXKprhDEe2QK54y_oSyxw" name="testGetNodeNamesOrderedAlphabetically" visibility="package" method="_23h-Y7hDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rXKrbhDEe2QK54y_oSyxw" name="testGetNodeNamesOrderedAlphabeticallyNumberedNodes" visibility="package" method="_23h-ZLhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rXxtbhDEe2QK54y_oSyxw" name="testGetNodeNamesOrderedAlphabeticallyMixedNodes" visibility="package" method="_23h-ZbhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rXxvLhDEe2QK54y_oSyxw" name="testGetNodesInFlowNonExistentFlow" visibility="package" method="_23h-ZrhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rYYw7hDEe2QK54y_oSyxw" name="testGetNodesInFlow1" visibility="package" method="_23h-Z7hDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rYYyrhDEe2QK54y_oSyxw" name="testGetNodesInFlow2" visibility="package" method="_23h-aLhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rYY0bhDEe2QK54y_oSyxw" name="testGetHyperPeriodNoFlows" visibility="package" method="_23h-abhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rY_1rhDEe2QK54y_oSyxw" name="testGetHyperPeriod" visibility="package" method="_23h-arhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rY_3bhDEe2QK54y_oSyxw" name="testGetFlowDeadlineNonExistentFlow" visibility="package" method="_23h-a7hDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rZm5bhDEe2QK54y_oSyxw" name="testGetFlowDeadline" visibility="package" method="_23h-bLhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rZm7LhDEe2QK54y_oSyxw" name="testSetFlowDeadline" visibility="package" method="_23h-bbhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_22Pk8bhDEe2QK54y_oSyxw" name="printArrayHelper" visibility="package" method="_23h-brhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_22Pk8rhDEe2QK54y_oSyxw" name="arr" type="_22O94LhDEe2QK54y_oSyxw">
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_22Pk9LhDEe2QK54y_oSyxw" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:id="_22Pk87hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_2ra1ALhDEe2QK54y_oSyxw" name="SchedulableObject" isAbstract="true">
              <ownedAttribute xmi:id="_23ErYLhDEe2QK54y_oSyxw" name="DEFAULT" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_23ErYbhDEe2QK54y_oSyxw" value="0"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23ErYrhDEe2QK54y_oSyxw" name="DEFAULT_PERIOD" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_23ErY7hDEe2QK54y_oSyxw" value="100"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23ErZLhDEe2QK54y_oSyxw" name="DEFAULT_DEADLINE" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_23ErZbhDEe2QK54y_oSyxw" value="100"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23ErZrhDEe2QK54y_oSyxw" name="UNKNOWN" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_23ErZ7hDEe2QK54y_oSyxw" value="&quot;unknown&quot;"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23EraLhDEe2QK54y_oSyxw" name="BEFORE_START" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_23ErabhDEe2QK54y_oSyxw" value="-1"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23FScLhDEe2QK54y_oSyxw" name="name" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23FScrhDEe2QK54y_oSyxw" name="priority">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23FSc7hDEe2QK54y_oSyxw" name="period" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23FSdLhDEe2QK54y_oSyxw" name="deadline">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23FSdbhDEe2QK54y_oSyxw" name="phase" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23FSd7hDEe2QK54y_oSyxw" name="releaseTime" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23FSebhDEe2QK54y_oSyxw" name="startTime" visibility="private">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23F5gbhDEe2QK54y_oSyxw" name="endTime" isReadOnly="true">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23F5grhDEe2QK54y_oSyxw" name="lastUpdateTime">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                <defaultValue xmi:type="uml:LiteralString" xmi:id="_23F5g7hDEe2QK54y_oSyxw" value="BEFORE_START"/>
              </ownedAttribute>
              <ownedAttribute xmi:id="_23F5hLhDEe2QK54y_oSyxw" name="predecessor" type="_2ra1ALhDEe2QK54y_oSyxw" association="_23uysrhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_23F5hbhDEe2QK54y_oSyxw" name="endTimes" visibility="private" type="_2qEKILhDEe2QK54y_oSyxw" association="_24JpdLhDEe2QK54y_oSyxw"/>
              <ownedAttribute xmi:id="_23F5iLhDEe2QK54y_oSyxw" name="subObjects" type="_21TJwrhDEe2QK54y_oSyxw" isReadOnly="true" association="_24KQgbhDEe2QK54y_oSyxw"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ilcLhDEe2QK54y_oSyxw" name="SchedulableObject" specification="_2rcDILhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ilcbhDEe2QK54y_oSyxw" type="_2ra1ALhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>setDefaultParameters();&#xD;
		setNextReleaseTime(0); // initialize parameters&#xD;
		this.lastUpdateTime = -1; // reset lastUpdate &#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ilcrhDEe2QK54y_oSyxw" name="SchedulableObject" specification="_21Tw0LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ilc7hDEe2QK54y_oSyxw" name="obj" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23ildLhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23ildbhDEe2QK54y_oSyxw" type="_2ra1ALhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>this.name = obj.getName();&#xD;
		this.priority = obj.getPriority();&#xD;
		this.period = obj.getPeriod();&#xD;
		this.deadline = obj.getDeadline();&#xD;
		this.phase = obj.getPhase();&#xD;
		this.startTime = obj.getStartTime();&#xD;
		this.endTime = obj.getEndTime();&#xD;
		this.releaseTime = obj.getReleaseTime(); // initialize parameters&#xD;
		this.lastUpdateTime = time; // reset lastUpdate &#xD;
		this.predecessor = obj.getPredecessor();&#xD;
		this.endTimes = new PriorityQueue&lt;Integer>(); &#xD;
		this.endTimes.addAll(obj.getAllEndTimes());&#xD;
		this.subObjects = new LinkedList&lt;SchedulableObject>();&#xD;
		this.subObjects.addAll(obj.getSubObjects());&#xD;
		&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ildrhDEe2QK54y_oSyxw" name="SchedulableObject" specification="_2rcqMrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ild7hDEe2QK54y_oSyxw" name="priority">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23ileLhDEe2QK54y_oSyxw" name="period">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23ilebhDEe2QK54y_oSyxw" name="deadline">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23ilerhDEe2QK54y_oSyxw" name="phase">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23ile7hDEe2QK54y_oSyxw" type="_2ra1ALhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>setDefaultParameters();&#xD;
		this.priority = priority;&#xD;
		this.period = period;&#xD;
		this.deadline = deadline;&#xD;
		this.phase = phase;&#xD;
		setNextReleaseTime(0); // initialize parameters&#xD;
		this.lastUpdateTime = BEFORE_START; // reset lastUpdate &#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ilfLhDEe2QK54y_oSyxw" name="SchedulableObject" specification="_2rdRQLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ilfbhDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23ilfrhDEe2QK54y_oSyxw" name="priority">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23ilf7hDEe2QK54y_oSyxw" name="period">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23ilgLhDEe2QK54y_oSyxw" name="deadline">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23ilgbhDEe2QK54y_oSyxw" name="phase">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23ilgrhDEe2QK54y_oSyxw" type="_2ra1ALhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>setDefaultParameters();&#xD;
		this.name = name;&#xD;
		this.priority = priority;&#xD;
		this.period = period;&#xD;
		this.deadline = deadline;&#xD;
		this.phase = phase;&#xD;
		setNextReleaseTime(0); // initialize parameters&#xD;
		this.lastUpdateTime = BEFORE_START; // reset lastUpdate &#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ilg7hDEe2QK54y_oSyxw" name="setDefaultParameters" specification="_2rdRSbhDEe2QK54y_oSyxw">
                <language>java</language>
                <body>this.name = UNKNOWN;&#xD;
		this.priority = DEFAULT;&#xD;
		this.period = DEFAULT_PERIOD;&#xD;
		this.deadline = DEFAULT_DEADLINE;&#xD;
		this.phase = DEFAULT;&#xD;
		this.startTime = BEFORE_START;&#xD;
		this.endTime = BEFORE_START;&#xD;
		this.predecessor = null; &#xD;
		this.endTimes = new PriorityQueue&lt;Integer>(); &#xD;
		this.subObjects = new LinkedList&lt;SchedulableObject>();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ilhLhDEe2QK54y_oSyxw" name="getAllEndTimes" specification="_2rd4ULhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ilhbhDEe2QK54y_oSyxw" type="_2qEKILhDEe2QK54y_oSyxw" direction="return"/>
                <language>java</language>
                <body>return endTimes;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ilhrhDEe2QK54y_oSyxw" name="addToEndTimes" specification="_2rd4UrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ilh7hDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>/* Add the endTime to the endTimes Q&#xD;
		 * so that we can track predecessor endTimes&#xD;
		 * and make sure successors don't start before &#xD;
		 * predecessors&#xD;
		 */&#xD;
		endTimes.add(time);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23iliLhDEe2QK54y_oSyxw" name="peekEndTimes" specification="_2refYbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ilibhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>return endTimes.peek();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ilirhDEe2QK54y_oSyxw" name="pollEndTimes" specification="_2refY7hDEe2QK54y_oSyxw">
                <language>java</language>
                <body>endTimes.poll();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ili7hDEe2QK54y_oSyxw" name="addSubObject" specification="_21UX4LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23iljLhDEe2QK54y_oSyxw" name="obj" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <language>java</language>
                <body>subObjects.add(obj);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23iljbhDEe2QK54y_oSyxw" name="getName" specification="_2refZLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23iljrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>return name;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23ilj7hDEe2QK54y_oSyxw" name="setName" specification="_2rfGcLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23ilkLhDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>this.name = name;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jMgLhDEe2QK54y_oSyxw" name="getReleaseTime" specification="_2rfGcrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jMgbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>return releaseTime;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jMgrhDEe2QK54y_oSyxw" name="getPhase" specification="_2rfGdLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jMg7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>return phase;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jMhLhDEe2QK54y_oSyxw" name="getStartTime" specification="_2rftgLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jMhbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>return startTime;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jMhrhDEe2QK54y_oSyxw" name="setEndTime" specification="_2rftgrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jMh7hDEe2QK54y_oSyxw" name="endTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>this.endTime = endTime;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jMiLhDEe2QK54y_oSyxw" name="setStartTime" specification="_2rfthLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jMibhDEe2QK54y_oSyxw" name="startTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>this.startTime = startTime;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jMirhDEe2QK54y_oSyxw" name="setReleaseTime" specification="_2rgUkLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jMi7hDEe2QK54y_oSyxw" name="releaseTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>this.releaseTime = releaseTime;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jMjLhDEe2QK54y_oSyxw" name="setPeriod" specification="_2rgUkrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jMjbhDEe2QK54y_oSyxw" name="period">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>this.period = period;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jMjrhDEe2QK54y_oSyxw" name="setPhase" specification="_2rgUlLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jMj7hDEe2QK54y_oSyxw" name="phase">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>this.phase = phase;&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jMkLhDEe2QK54y_oSyxw" name="setNextReleaseTime" specification="_2rgUlrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jMkbhDEe2QK54y_oSyxw" name="currentTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <language>java</language>
                <body>if (currentTime >= lastUpdateTime) {&#xD;
			// released every (j*period)+phase, for all j >=0&#xD;
			Integer j = 0;&#xD;
			if (period > 0) {&#xD;
				j = (int) Math.ceil((double)currentTime/(double)period); // gives floor&#xD;
			} &#xD;
			Integer nextRelease = (j*period)+phase ;&#xD;
			releaseTime = nextRelease;&#xD;
			lastUpdateTime = currentTime;&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jMkrhDEe2QK54y_oSyxw" name="maxPhaseComparison" specification="_21UX4rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jMk7hDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23jMlLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>// for ascending order of priority&#xD;
		return compareDescendingOrder(this.getDeadline(), obj2.getDeadline());&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jzkLhDEe2QK54y_oSyxw" name="maxPhaseComparison" specification="_21UX5bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jzkbhDEe2QK54y_oSyxw" name="obj1" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23jzkrhDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23jzk7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>return obj1.maxPhaseComparison(obj2);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jzlLhDEe2QK54y_oSyxw" name="deadlineComparison" specification="_21UX6bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jzlbhDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23jzlrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>// for ascending order of priority&#xD;
		return compareAscendingOrder(this.getDeadline(), obj2.getDeadline());&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jzl7hDEe2QK54y_oSyxw" name="deadlineComparison" specification="_21UX7LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jzmLhDEe2QK54y_oSyxw" name="obj1" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23jzmbhDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23jzmrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>return obj1.deadlineComparison(obj2);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jzm7hDEe2QK54y_oSyxw" name="periodComparison" specification="_21U-8rhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jznLhDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23jznbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>// for ascending order of priority&#xD;
		return compareAscendingOrder(this.getPeriod(), obj2.getPeriod());&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jznrhDEe2QK54y_oSyxw" name="periodComparison" specification="_21U-9bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jzn7hDEe2QK54y_oSyxw" name="obj1" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23jzoLhDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23jzobhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>return obj1.periodComparison(obj2);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jzorhDEe2QK54y_oSyxw" name="priorityComparison" specification="_21U--bhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jzo7hDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23jzpLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>// for ascending order of priority&#xD;
		return compareAscendingOrder(this.getPriority(), obj2.getPriority());&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jzpbhDEe2QK54y_oSyxw" name="priorityComparison" specification="_21U-_LhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jzprhDEe2QK54y_oSyxw" name="obj1" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23jzp7hDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23jzqLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>return obj1.priorityComparison(obj2);&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jzqbhDEe2QK54y_oSyxw" name="releaseTimeComparison" specification="_21VmA7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jzqrhDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23jzq7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>// for ascending order of release time&#xD;
		return compareAscendingOrder(this.getReleaseTime(), obj2.getReleaseTime());&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jzrLhDEe2QK54y_oSyxw" name="releaseTimeComparison" specification="_21VmBrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jzrbhDEe2QK54y_oSyxw" name="obj1" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23jzrrhDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23jzr7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>return obj1.releaseTimeComparison(obj2); &#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jzsLhDEe2QK54y_oSyxw" name="LatestReleaseTimeComparison" specification="_21VmCrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jzsbhDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23jzsrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>// for ascending order of release time&#xD;
		return compareDescendingOrder(this.getReleaseTime(), obj2.getReleaseTime());&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jzs7hDEe2QK54y_oSyxw" name="LatestReleaseTimeComparison" specification="_21VmDbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jztLhDEe2QK54y_oSyxw" name="obj1" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23jztbhDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_23jztrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>return obj1.releaseTimeComparison(obj2); &#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23jzt7hDEe2QK54y_oSyxw" name="compareAscendingOrder" specification="_2rg7oLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23jzuLhDEe2QK54y_oSyxw" name="v1">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23jzubhDEe2QK54y_oSyxw" name="v2">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23jzurhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>if (v1 &lt; v2)&#xD;
			return -1; &#xD;
		else if (v1 > v2)&#xD;
			return 1; &#xD;
		return 0; // tied: values are the same &#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23kaoLhDEe2QK54y_oSyxw" name="compareDescendingOrder" specification="_2rg7pLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23kaobhDEe2QK54y_oSyxw" name="v1">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23kaorhDEe2QK54y_oSyxw" name="v2">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <ownedParameter xmi:id="_23kao7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <language>java</language>
                <body>if (v1 &lt; v2)&#xD;
			return 1; &#xD;
		else if (v1 > v2)&#xD;
			return -1; &#xD;
		return 0; // tied: values are the same &#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23kapLhDEe2QK54y_oSyxw" name="print" specification="_2rhisbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_23kapbhDEe2QK54y_oSyxw" name="headerMsg">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>System.out.printf(&quot;\n%s&quot;,headerMsg);&#xD;
		print();&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_23kaprhDEe2QK54y_oSyxw" name="print" specification="_2rhis7hDEe2QK54y_oSyxw">
                <language>java</language>
                <body>System.out.printf(&quot;\nName: %s\n&quot;,getName());&#xD;
		System.out.printf(&quot;\tPriority: %d\n&quot;,getPriority());&#xD;
		System.out.printf(&quot;\tPeriod: %d\n&quot;,getPeriod());&#xD;
		System.out.printf(&quot;\tDeadline: %d\n&quot;,getDeadline());&#xD;
		System.out.printf(&quot;\tPhase: %d\n&quot;, getPhase());&#xD;
		System.out.printf(&quot;\tReleaseTime: %d\n&quot;,getReleaseTime());&#xD;
		System.out.printf(&quot;\tStartTime: %d\n&quot;,getStartTime());&#xD;
		System.out.printf(&quot;\tEndTime: %d\n&quot;,getEndTime());&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_2rcDILhDEe2QK54y_oSyxw" name="SchedulableObject" visibility="package" method="_23ilcLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2rcDIbhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2rcqMLhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2rcqMbhDEe2QK54y_oSyxw" type="_2ra1ALhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2rcqMrhDEe2QK54y_oSyxw" name="SchedulableObject" visibility="package" method="_23ildrhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2rcqN7hDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2rcqOLhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2rcqM7hDEe2QK54y_oSyxw" name="priority">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2rcqNLhDEe2QK54y_oSyxw" name="period">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2rcqNbhDEe2QK54y_oSyxw" name="deadline">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2rcqNrhDEe2QK54y_oSyxw" name="phase">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2rcqObhDEe2QK54y_oSyxw" type="_2ra1ALhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2rdRQLhDEe2QK54y_oSyxw" name="SchedulableObject" visibility="package" method="_23ilfLhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_2rdRRrhDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_2rdRR7hDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_2rdRQbhDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2rdRQrhDEe2QK54y_oSyxw" name="priority">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2rdRQ7hDEe2QK54y_oSyxw" name="period">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2rdRRLhDEe2QK54y_oSyxw" name="deadline">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2rdRRbhDEe2QK54y_oSyxw" name="phase">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2rdRSLhDEe2QK54y_oSyxw" type="_2ra1ALhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2rdRSbhDEe2QK54y_oSyxw" name="setDefaultParameters" visibility="private" method="_23ilg7hDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2rd4ULhDEe2QK54y_oSyxw" name="getAllEndTimes" method="_23ilhLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23uytbhDEe2QK54y_oSyxw">
                  <body>@return the endTimes queue</body>
                </ownedComment>
                <ownedParameter xmi:id="_21Tw1rhDEe2QK54y_oSyxw" type="_2qEKILhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_2rd4UrhDEe2QK54y_oSyxw" name="addToEndTimes" method="_23ilhrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2refYLhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2refYbhDEe2QK54y_oSyxw" name="peekEndTimes" method="_23iliLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2refYrhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2refY7hDEe2QK54y_oSyxw" name="pollEndTimes" method="_23ilirhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_2refZLhDEe2QK54y_oSyxw" name="getName" method="_23iljbhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23uytrhDEe2QK54y_oSyxw">
                  <body>@return the name</body>
                </ownedComment>
                <ownedParameter xmi:id="_2refZbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rfGcLhDEe2QK54y_oSyxw" name="setName" method="_23ilj7hDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23uyt7hDEe2QK54y_oSyxw">
                  <body>@param name the name to set</body>
                </ownedComment>
                <ownedParameter xmi:id="_2rfGcbhDEe2QK54y_oSyxw" name="name">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rfGcrhDEe2QK54y_oSyxw" name="getReleaseTime" method="_23jMgLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23uyuLhDEe2QK54y_oSyxw">
                  <body>@return the releaseTime</body>
                </ownedComment>
                <ownedParameter xmi:id="_2rfGc7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rfGdLhDEe2QK54y_oSyxw" name="getPhase" method="_23jMgrhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23uyubhDEe2QK54y_oSyxw">
                  <body>@return the phase</body>
                </ownedComment>
                <ownedParameter xmi:id="_2rfGdbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rftgLhDEe2QK54y_oSyxw" name="getStartTime" method="_23jMhLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23uyurhDEe2QK54y_oSyxw">
                  <body>@return the startTime</body>
                </ownedComment>
                <ownedParameter xmi:id="_2rftgbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rftgrhDEe2QK54y_oSyxw" name="setEndTime" method="_23jMhrhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23uyu7hDEe2QK54y_oSyxw">
                  <body>@param endTime the endTime to set</body>
                </ownedComment>
                <ownedParameter xmi:id="_2rftg7hDEe2QK54y_oSyxw" name="endTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rfthLhDEe2QK54y_oSyxw" name="setStartTime" method="_23jMiLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23uyvLhDEe2QK54y_oSyxw">
                  <body>@param startTime the startTime to set</body>
                </ownedComment>
                <ownedParameter xmi:id="_2rfthbhDEe2QK54y_oSyxw" name="startTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rgUkLhDEe2QK54y_oSyxw" name="setReleaseTime" method="_23jMirhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23uyvbhDEe2QK54y_oSyxw">
                  <body>@param releaseTime the releaseTime to set</body>
                </ownedComment>
                <ownedParameter xmi:id="_2rgUkbhDEe2QK54y_oSyxw" name="releaseTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rgUkrhDEe2QK54y_oSyxw" name="setPeriod" method="_23jMjLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23uyvrhDEe2QK54y_oSyxw">
                  <body>@param period the period to set</body>
                </ownedComment>
                <ownedParameter xmi:id="_2rgUk7hDEe2QK54y_oSyxw" name="period">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rgUlLhDEe2QK54y_oSyxw" name="setPhase" method="_23jMjrhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23uyv7hDEe2QK54y_oSyxw">
                  <body>@param phase the phase to set</body>
                </ownedComment>
                <ownedParameter xmi:id="_2rgUlbhDEe2QK54y_oSyxw" name="phase">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rgUlrhDEe2QK54y_oSyxw" name="setNextReleaseTime" method="_23jMkLhDEe2QK54y_oSyxw">
                <ownedComment xmi:id="_23uywLhDEe2QK54y_oSyxw">
                  <body>@param releaseTime the releaseTime to set</body>
                </ownedComment>
                <ownedParameter xmi:id="_2rgUl7hDEe2QK54y_oSyxw" name="currentTime">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rg7oLhDEe2QK54y_oSyxw" name="compareAscendingOrder" method="_23jzt7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2rg7obhDEe2QK54y_oSyxw" name="v1">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2rg7orhDEe2QK54y_oSyxw" name="v2">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2rg7o7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rg7pLhDEe2QK54y_oSyxw" name="compareDescendingOrder" method="_23kaoLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2rg7pbhDEe2QK54y_oSyxw" name="v1">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2rg7prhDEe2QK54y_oSyxw" name="v2">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
                <ownedParameter xmi:id="_2rhisLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rhisbhDEe2QK54y_oSyxw" name="print" method="_23kapLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_2rhisrhDEe2QK54y_oSyxw" name="headerMsg">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_2rhis7hDEe2QK54y_oSyxw" name="print" method="_23kaprhDEe2QK54y_oSyxw"/>
              <ownedOperation xmi:id="_21Tw0LhDEe2QK54y_oSyxw" name="SchedulableObject" visibility="package" method="_23ilcrhDEe2QK54y_oSyxw">
                <eAnnotations xmi:id="_21Tw07hDEe2QK54y_oSyxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_21Tw1LhDEe2QK54y_oSyxw" key="create"/>
                </eAnnotations>
                <ownedComment xmi:id="_23uytLhDEe2QK54y_oSyxw">
                  <body>Constructor that creates a copy of schedulable &#xD;
	 * parameters of the input obj, but setting its&#xD;
	 * lastUpdateTime to input time.&#xD;
	 * &#xD;
	 * @param obj&#xD;
	 * @param time</body>
                </ownedComment>
                <ownedParameter xmi:id="_21Tw0bhDEe2QK54y_oSyxw" name="obj" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21Tw0rhDEe2QK54y_oSyxw" name="time">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
                </ownedParameter>
                <ownedParameter xmi:id="_21Tw1bhDEe2QK54y_oSyxw" type="_2ra1ALhDEe2QK54y_oSyxw" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_21UX4LhDEe2QK54y_oSyxw" name="addSubObject" method="_23ili7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21UX4bhDEe2QK54y_oSyxw" name="obj" type="_2ra1ALhDEe2QK54y_oSyxw"/>
              </ownedOperation>
              <ownedOperation xmi:id="_21UX4rhDEe2QK54y_oSyxw" name="maxPhaseComparison" method="_23jMkrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21UX47hDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21UX5LhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_21UX5bhDEe2QK54y_oSyxw" name="maxPhaseComparison" method="_23jzkLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21UX5rhDEe2QK54y_oSyxw" name="obj1" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21UX57hDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21UX6LhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_21UX6bhDEe2QK54y_oSyxw" name="deadlineComparison" method="_23jzlLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21UX6rhDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21UX67hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_21UX7LhDEe2QK54y_oSyxw" name="deadlineComparison" method="_23jzl7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21UX7bhDEe2QK54y_oSyxw" name="obj1" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21U-8LhDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21U-8bhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_21U-8rhDEe2QK54y_oSyxw" name="periodComparison" method="_23jzm7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21U-87hDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21U-9LhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_21U-9bhDEe2QK54y_oSyxw" name="periodComparison" method="_23jznrhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21U-9rhDEe2QK54y_oSyxw" name="obj1" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21U-97hDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21U--LhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_21U--bhDEe2QK54y_oSyxw" name="priorityComparison" method="_23jzorhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21U--rhDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21U--7hDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_21U-_LhDEe2QK54y_oSyxw" name="priorityComparison" method="_23jzpbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21VmALhDEe2QK54y_oSyxw" name="obj1" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21VmAbhDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21VmArhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_21VmA7hDEe2QK54y_oSyxw" name="releaseTimeComparison" method="_23jzqbhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21VmBLhDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21VmBbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_21VmBrhDEe2QK54y_oSyxw" name="releaseTimeComparison" method="_23jzrLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21VmB7hDEe2QK54y_oSyxw" name="obj1" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21VmCLhDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21VmCbhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_21VmCrhDEe2QK54y_oSyxw" name="LatestReleaseTimeComparison" method="_23jzsLhDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21VmC7hDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21VmDLhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:id="_21VmDbhDEe2QK54y_oSyxw" name="LatestReleaseTimeComparison" method="_23jzs7hDEe2QK54y_oSyxw">
                <ownedParameter xmi:id="_21VmDrhDEe2QK54y_oSyxw" name="obj1" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21VmD7hDEe2QK54y_oSyxw" name="obj2" type="_2ra1ALhDEe2QK54y_oSyxw"/>
                <ownedParameter xmi:id="_21VmELhDEe2QK54y_oSyxw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_21q9MbhDEe2QK54y_oSyxw" name="T"/>
            <packagedElement xmi:type="uml:Class" xmi:id="_213xgLhDEe2QK54y_oSyxw" name="ScheduleLocation"/>
            <packagedElement xmi:type="uml:Class" xmi:id="_214_pbhDEe2QK54y_oSyxw" name="ScheduleChoices"/>
            <packagedElement xmi:type="uml:Class" xmi:id="_22CJkLhDEe2QK54y_oSyxw" name="SystemChoices"/>
            <packagedElement xmi:type="uml:Class" xmi:id="_22CJkrhDEe2QK54y_oSyxw" name="WorkLoadChoices"/>
            <packagedElement xmi:type="uml:Association" xmi:id="_23oFA7hDEe2QK54y_oSyxw" name="" memberEnd="_22fcmLhDEe2QK54y_oSyxw _23oFBLhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_23oFBLhDEe2QK54y_oSyxw" name="" type="_2pMAZLhDEe2QK54y_oSyxw" association="_23oFA7hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_23rIVrhDEe2QK54y_oSyxw" name="" memberEnd="_2299tbhDEe2QK54y_oSyxw _23rIV7hDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_23rIV7hDEe2QK54y_oSyxw" name="" type="_2q5QkLhDEe2QK54y_oSyxw" association="_23rIVrhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_23rvYLhDEe2QK54y_oSyxw" name="" memberEnd="_2299trhDEe2QK54y_oSyxw _23rvYbhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_23rvYbhDEe2QK54y_oSyxw" name="" type="_2q5QkLhDEe2QK54y_oSyxw" association="_23rvYLhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_23uysrhDEe2QK54y_oSyxw" name="" memberEnd="_23F5hLhDEe2QK54y_oSyxw _23uys7hDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_23uys7hDEe2QK54y_oSyxw" name="" type="_2ra1ALhDEe2QK54y_oSyxw" association="_23uysrhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_238OELhDEe2QK54y_oSyxw" name="" memberEnd="_238OEbhDEe2QK54y_oSyxw _22YH0rhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_238OEbhDEe2QK54y_oSyxw" name="" type="_2oxJpLhDEe2QK54y_oSyxw" association="_238OELhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_238OE7hDEe2QK54y_oSyxw" name="" memberEnd="_238OFLhDEe2QK54y_oSyxw _22Yu4bhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_238OFLhDEe2QK54y_oSyxw" name="" type="_2oxJpLhDEe2QK54y_oSyxw" association="_238OE7hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_238OFrhDEe2QK54y_oSyxw" name="" memberEnd="_238OF7hDEe2QK54y_oSyxw _22Yu47hDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_238OF7hDEe2QK54y_oSyxw" name="" type="_2oxJpLhDEe2QK54y_oSyxw" association="_238OFrhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_2381IbhDEe2QK54y_oSyxw" name="" memberEnd="_2381IrhDEe2QK54y_oSyxw _22Z9ArhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_2381IrhDEe2QK54y_oSyxw" name="" type="_2o8IwLhDEe2QK54y_oSyxw" association="_2381IbhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_2381JLhDEe2QK54y_oSyxw" name="" memberEnd="_2381JbhDEe2QK54y_oSyxw _22akELhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_2381JbhDEe2QK54y_oSyxw" name="" type="_2o8IwLhDEe2QK54y_oSyxw" association="_2381JLhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_2381J7hDEe2QK54y_oSyxw" name="" memberEnd="_2381KLhDEe2QK54y_oSyxw _22bLIbhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_2381KLhDEe2QK54y_oSyxw" name="" type="_2o9W4LhDEe2QK54y_oSyxw" association="_2381J7hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_239cMbhDEe2QK54y_oSyxw" name="" memberEnd="_239cMrhDEe2QK54y_oSyxw _22byMbhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_239cMrhDEe2QK54y_oSyxw" name="" type="_2o998LhDEe2QK54y_oSyxw" association="_239cMbhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_239cNLhDEe2QK54y_oSyxw" name="" memberEnd="_239cNbhDEe2QK54y_oSyxw _22cZQrhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_239cNbhDEe2QK54y_oSyxw" name="" type="_2pCPYLhDEe2QK54y_oSyxw" association="_239cNLhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_239cN7hDEe2QK54y_oSyxw" name="" memberEnd="_239cOLhDEe2QK54y_oSyxw _22dAU7hDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_239cOLhDEe2QK54y_oSyxw" name="" type="_2pCPYLhDEe2QK54y_oSyxw" association="_239cN7hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_23-DQbhDEe2QK54y_oSyxw" name="" memberEnd="_23-DQrhDEe2QK54y_oSyxw _22eOcbhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_23-DQrhDEe2QK54y_oSyxw" name="" type="_2pHu8LhDEe2QK54y_oSyxw" association="_23-DQbhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_23-DRLhDEe2QK54y_oSyxw" name="" memberEnd="_23-DRbhDEe2QK54y_oSyxw _22e1hLhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_23-DRbhDEe2QK54y_oSyxw" name="" type="_2pHu8LhDEe2QK54y_oSyxw" association="_23-DRLhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_23-DR7hDEe2QK54y_oSyxw" name="" memberEnd="_23-DSLhDEe2QK54y_oSyxw _22if47hDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_23-DSLhDEe2QK54y_oSyxw" name="" type="_2pTVILhDEe2QK54y_oSyxw" association="_23-DR7hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_23-qUbhDEe2QK54y_oSyxw" name="" memberEnd="_23-qUrhDEe2QK54y_oSyxw _22if5rhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_23-qUrhDEe2QK54y_oSyxw" name="" type="_2pTVILhDEe2QK54y_oSyxw" association="_23-qUbhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_23-qVLhDEe2QK54y_oSyxw" name="" memberEnd="_23-qVbhDEe2QK54y_oSyxw _22jG8rhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_23-qVbhDEe2QK54y_oSyxw" name="" type="_2pTVILhDEe2QK54y_oSyxw" association="_23-qVLhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_23_RYbhDEe2QK54y_oSyxw" name="" memberEnd="_23_RYrhDEe2QK54y_oSyxw _22juArhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_23_RYrhDEe2QK54y_oSyxw" name="" type="_2pTVILhDEe2QK54y_oSyxw" association="_23_RYbhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_23_RZLhDEe2QK54y_oSyxw" name="" memberEnd="_23_4cLhDEe2QK54y_oSyxw _22juBLhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_23_4cLhDEe2QK54y_oSyxw" name="" type="_2pTVILhDEe2QK54y_oSyxw" association="_23_RZLhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_23_4crhDEe2QK54y_oSyxw" name="" memberEnd="_23_4c7hDEe2QK54y_oSyxw _22k8I7hDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_23_4c7hDEe2QK54y_oSyxw" name="" type="_2paC0LhDEe2QK54y_oSyxw" association="_23_4crhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24AfgLhDEe2QK54y_oSyxw" name="" memberEnd="_24AfgbhDEe2QK54y_oSyxw _22ljMbhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24AfgbhDEe2QK54y_oSyxw" name="" type="_2paC0LhDEe2QK54y_oSyxw" association="_24AfgLhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24Afg7hDEe2QK54y_oSyxw" name="" memberEnd="_24AfhLhDEe2QK54y_oSyxw _22ljM7hDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24AfhLhDEe2QK54y_oSyxw" name="" type="_2pdtMLhDEe2QK54y_oSyxw" association="_24Afg7hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24AfhrhDEe2QK54y_oSyxw" name="" memberEnd="_24Afh7hDEe2QK54y_oSyxw _22mKQLhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24Afh7hDEe2QK54y_oSyxw" name="" type="_2pe7ULhDEe2QK54y_oSyxw" association="_24AfhrhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24AfibhDEe2QK54y_oSyxw" name="" memberEnd="_24AfirhDEe2QK54y_oSyxw _22mKQrhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24AfirhDEe2QK54y_oSyxw" name="" type="_2pe7ULhDEe2QK54y_oSyxw" association="_24AfibhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24BGkbhDEe2QK54y_oSyxw" name="" memberEnd="_24BGkrhDEe2QK54y_oSyxw _22mKRrhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24BGkrhDEe2QK54y_oSyxw" name="" type="_2pgwgLhDEe2QK54y_oSyxw" association="_24BGkbhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24BGlLhDEe2QK54y_oSyxw" name="" memberEnd="_24BGlbhDEe2QK54y_oSyxw _22nYZrhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24BGlbhDEe2QK54y_oSyxw" name="" type="_2pka4LhDEe2QK54y_oSyxw" association="_24BGlLhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24BGl7hDEe2QK54y_oSyxw" name="" memberEnd="_24BGmLhDEe2QK54y_oSyxw _22n_cLhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24BGmLhDEe2QK54y_oSyxw" name="" type="_2pka4LhDEe2QK54y_oSyxw" association="_24BGl7hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24BtobhDEe2QK54y_oSyxw" name="" memberEnd="_24BtorhDEe2QK54y_oSyxw _22n_crhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24BtorhDEe2QK54y_oSyxw" name="" type="_2pka4LhDEe2QK54y_oSyxw" association="_24BtobhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24BtpLhDEe2QK54y_oSyxw" name="" memberEnd="_24BtpbhDEe2QK54y_oSyxw _22n_dLhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24BtpbhDEe2QK54y_oSyxw" name="" type="_2pka4LhDEe2QK54y_oSyxw" association="_24BtpLhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24Btp7hDEe2QK54y_oSyxw" name="" memberEnd="_24BtqLhDEe2QK54y_oSyxw _22n_drhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24BtqLhDEe2QK54y_oSyxw" name="" type="_2pka4LhDEe2QK54y_oSyxw" association="_24Btp7hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24BtqrhDEe2QK54y_oSyxw" name="" memberEnd="_24Btq7hDEe2QK54y_oSyxw _22omhbhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24Btq7hDEe2QK54y_oSyxw" name="" type="_2pm3ILhDEe2QK54y_oSyxw" association="_24BtqrhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24CUsbhDEe2QK54y_oSyxw" name="" memberEnd="_24CUsrhDEe2QK54y_oSyxw _22pNk7hDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24CUsrhDEe2QK54y_oSyxw" name="" type="_2poFQrhDEe2QK54y_oSyxw" association="_24CUsbhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24CUtLhDEe2QK54y_oSyxw" name="" memberEnd="_24CUtbhDEe2QK54y_oSyxw _22p0qLhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24CUtbhDEe2QK54y_oSyxw" name="" type="_2ps9wLhDEe2QK54y_oSyxw" association="_24CUtLhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24CUt7hDEe2QK54y_oSyxw" name="" memberEnd="_24CUuLhDEe2QK54y_oSyxw _22qbsbhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24CUuLhDEe2QK54y_oSyxw" name="" type="_2ps9wLhDEe2QK54y_oSyxw" association="_24CUt7hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24C7wLhDEe2QK54y_oSyxw" name="" memberEnd="_24C7wbhDEe2QK54y_oSyxw _22qbs7hDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24C7wbhDEe2QK54y_oSyxw" name="" type="_2ps9wLhDEe2QK54y_oSyxw" association="_24C7wLhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24C7w7hDEe2QK54y_oSyxw" name="" memberEnd="_24C7xLhDEe2QK54y_oSyxw _22rCwLhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24C7xLhDEe2QK54y_oSyxw" name="" type="_2ps9wLhDEe2QK54y_oSyxw" association="_24C7w7hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24C7xrhDEe2QK54y_oSyxw" name="" memberEnd="_24C7x7hDEe2QK54y_oSyxw _22rCxbhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24C7x7hDEe2QK54y_oSyxw" name="" type="_2ps9wLhDEe2QK54y_oSyxw" association="_24C7xrhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24C7ybhDEe2QK54y_oSyxw" name="" memberEnd="_24C7yrhDEe2QK54y_oSyxw _22rCx7hDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24C7yrhDEe2QK54y_oSyxw" name="" type="_2ps9wLhDEe2QK54y_oSyxw" association="_24C7ybhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24Di0bhDEe2QK54y_oSyxw" name="" memberEnd="_24Di0rhDEe2QK54y_oSyxw _22rp0rhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24Di0rhDEe2QK54y_oSyxw" name="" type="_2ps9wLhDEe2QK54y_oSyxw" association="_24Di0bhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24Di1LhDEe2QK54y_oSyxw" name="" memberEnd="_24Di1bhDEe2QK54y_oSyxw _22s38bhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24Di1bhDEe2QK54y_oSyxw" name="" type="_2ps9wLhDEe2QK54y_oSyxw" association="_24Di1LhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24Di17hDEe2QK54y_oSyxw" name="" memberEnd="_24Di2LhDEe2QK54y_oSyxw _22uGEbhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24Di2LhDEe2QK54y_oSyxw" name="" type="_2pzEYbhDEe2QK54y_oSyxw" association="_24Di17hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24EJ4LhDEe2QK54y_oSyxw" name="" memberEnd="_24EJ4bhDEe2QK54y_oSyxw _22uGE7hDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24EJ4bhDEe2QK54y_oSyxw" name="" type="_2pzEYbhDEe2QK54y_oSyxw" association="_24EJ4LhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24EJ47hDEe2QK54y_oSyxw" name="" memberEnd="_24EJ5LhDEe2QK54y_oSyxw _22uGFbhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24EJ5LhDEe2QK54y_oSyxw" name="" type="_2pzEYbhDEe2QK54y_oSyxw" association="_24EJ47hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24EJ5rhDEe2QK54y_oSyxw" name="" memberEnd="_24EJ57hDEe2QK54y_oSyxw _22vUMLhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24EJ57hDEe2QK54y_oSyxw" name="" type="_2pzEYbhDEe2QK54y_oSyxw" association="_24EJ5rhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24EJ6bhDEe2QK54y_oSyxw" name="" memberEnd="_24EJ6rhDEe2QK54y_oSyxw _22vUOLhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24EJ6rhDEe2QK54y_oSyxw" name="" type="_2pzEYbhDEe2QK54y_oSyxw" association="_24EJ6bhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24Ew8bhDEe2QK54y_oSyxw" name="" memberEnd="_24Ew8rhDEe2QK54y_oSyxw _22wiUrhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24Ew8rhDEe2QK54y_oSyxw" name="" type="_2p_RoLhDEe2QK54y_oSyxw" association="_24Ew8bhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24Ew9LhDEe2QK54y_oSyxw" name="" memberEnd="_24Ew9bhDEe2QK54y_oSyxw _22wiVLhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24Ew9bhDEe2QK54y_oSyxw" name="" type="_2p_RoLhDEe2QK54y_oSyxw" association="_24Ew9LhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24Ew97hDEe2QK54y_oSyxw" name="" memberEnd="_24Ew-LhDEe2QK54y_oSyxw _22xJarhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24Ew-LhDEe2QK54y_oSyxw" name="" type="_2qHNcLhDEe2QK54y_oSyxw" association="_24Ew97hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24FYAbhDEe2QK54y_oSyxw" name="" memberEnd="_24FYArhDEe2QK54y_oSyxw _22xwc7hDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24FYArhDEe2QK54y_oSyxw" name="" type="_2qH0gLhDEe2QK54y_oSyxw" association="_24FYAbhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24FYBLhDEe2QK54y_oSyxw" name="" memberEnd="_24FYBbhDEe2QK54y_oSyxw _22yXjLhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24FYBbhDEe2QK54y_oSyxw" name="" type="_2qMF8LhDEe2QK54y_oSyxw" association="_24FYBLhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24FYB7hDEe2QK54y_oSyxw" name="" memberEnd="_24FYCLhDEe2QK54y_oSyxw _22y-kbhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24FYCLhDEe2QK54y_oSyxw" name="" type="_2qMF8LhDEe2QK54y_oSyxw" association="_24FYB7hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24F_ELhDEe2QK54y_oSyxw" name="" memberEnd="_24F_EbhDEe2QK54y_oSyxw _220MsLhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24F_EbhDEe2QK54y_oSyxw" name="" type="_2qfn8LhDEe2QK54y_oSyxw" association="_24F_ELhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24F_E7hDEe2QK54y_oSyxw" name="" memberEnd="_24F_FLhDEe2QK54y_oSyxw _220zwbhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24F_FLhDEe2QK54y_oSyxw" name="" type="_2qfn8LhDEe2QK54y_oSyxw" association="_24F_E7hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24F_FrhDEe2QK54y_oSyxw" name="" memberEnd="_24F_F7hDEe2QK54y_oSyxw _220zw7hDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24F_F7hDEe2QK54y_oSyxw" name="" type="_2qfn8LhDEe2QK54y_oSyxw" association="_24F_FrhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24F_GbhDEe2QK54y_oSyxw" name="" memberEnd="_24F_GrhDEe2QK54y_oSyxw _221a1LhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24F_GrhDEe2QK54y_oSyxw" name="" type="_2qfn8LhDEe2QK54y_oSyxw" association="_24F_GbhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24GmIbhDEe2QK54y_oSyxw" name="" memberEnd="_24GmIrhDEe2QK54y_oSyxw _222B4bhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24GmIrhDEe2QK54y_oSyxw" name="" type="_2qfn8LhDEe2QK54y_oSyxw" association="_24GmIbhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24GmJLhDEe2QK54y_oSyxw" name="" memberEnd="_24GmJbhDEe2QK54y_oSyxw _222B5LhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24GmJbhDEe2QK54y_oSyxw" name="" type="_2qfn8LhDEe2QK54y_oSyxw" association="_24GmJLhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24GmJ7hDEe2QK54y_oSyxw" name="" memberEnd="_24GmKLhDEe2QK54y_oSyxw _222o8LhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24GmKLhDEe2QK54y_oSyxw" name="" type="_2qirQLhDEe2QK54y_oSyxw" association="_24GmJ7hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24HNMbhDEe2QK54y_oSyxw" name="" memberEnd="_24HNMrhDEe2QK54y_oSyxw _2233EbhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24HNMrhDEe2QK54y_oSyxw" name="" type="_2qnjwLhDEe2QK54y_oSyxw" association="_24HNMbhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24HNNLhDEe2QK54y_oSyxw" name="" memberEnd="_24HNNbhDEe2QK54y_oSyxw _225sQrhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24HNNbhDEe2QK54y_oSyxw" name="" type="_2qscQ7hDEe2QK54y_oSyxw" association="_24HNNLhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24HNN7hDEe2QK54y_oSyxw" name="" memberEnd="_24HNOLhDEe2QK54y_oSyxw _226TUbhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24HNOLhDEe2QK54y_oSyxw" name="" type="_2qscQ7hDEe2QK54y_oSyxw" association="_24HNN7hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24HNOrhDEe2QK54y_oSyxw" name="" memberEnd="_24HNO7hDEe2QK54y_oSyxw _226TU7hDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24HNO7hDEe2QK54y_oSyxw" name="" type="_2qwGoLhDEe2QK54y_oSyxw" association="_24HNOrhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24H0QbhDEe2QK54y_oSyxw" name="" memberEnd="_24H0QrhDEe2QK54y_oSyxw _2266YbhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24H0QrhDEe2QK54y_oSyxw" name="" type="_2qwGoLhDEe2QK54y_oSyxw" association="_24H0QbhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24H0RLhDEe2QK54y_oSyxw" name="" memberEnd="_24H0RbhDEe2QK54y_oSyxw _2266Y7hDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24H0RbhDEe2QK54y_oSyxw" name="" type="_2qwGoLhDEe2QK54y_oSyxw" association="_24H0RLhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24H0R7hDEe2QK54y_oSyxw" name="" memberEnd="_24H0SLhDEe2QK54y_oSyxw _2266ZbhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24H0SLhDEe2QK54y_oSyxw" name="" type="_2qwGoLhDEe2QK54y_oSyxw" association="_24H0R7hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24IbUbhDEe2QK54y_oSyxw" name="" memberEnd="_24IbUrhDEe2QK54y_oSyxw _227hcbhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24IbUrhDEe2QK54y_oSyxw" name="" type="_2qwGoLhDEe2QK54y_oSyxw" association="_24IbUbhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24IbVLhDEe2QK54y_oSyxw" name="" memberEnd="_24IbVbhDEe2QK54y_oSyxw _22-kwbhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24IbVbhDEe2QK54y_oSyxw" name="" type="_2q5QkLhDEe2QK54y_oSyxw" association="_24IbVLhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24IbV7hDEe2QK54y_oSyxw" name="" memberEnd="_24IbWLhDEe2QK54y_oSyxw _22-kxLhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24IbWLhDEe2QK54y_oSyxw" name="" type="_2q5QkLhDEe2QK54y_oSyxw" association="_24IbV7hDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24JCYbhDEe2QK54y_oSyxw" name="" memberEnd="_24JCYrhDEe2QK54y_oSyxw _22_y5LhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24JCYrhDEe2QK54y_oSyxw" name="" type="_2rGE4LhDEe2QK54y_oSyxw" association="_24JCYbhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24JpcbhDEe2QK54y_oSyxw" name="" memberEnd="_24JpcrhDEe2QK54y_oSyxw _22_y6LhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24JpcrhDEe2QK54y_oSyxw" name="" type="_2rGE4LhDEe2QK54y_oSyxw" association="_24JpcbhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24JpdLhDEe2QK54y_oSyxw" name="" memberEnd="_24JpdbhDEe2QK54y_oSyxw _23F5hbhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24JpdbhDEe2QK54y_oSyxw" name="" type="_2ra1ALhDEe2QK54y_oSyxw" association="_24JpdLhDEe2QK54y_oSyxw"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_24KQgbhDEe2QK54y_oSyxw" name="" memberEnd="_24KQgrhDEe2QK54y_oSyxw _23F5iLhDEe2QK54y_oSyxw">
              <ownedEnd xmi:id="_24KQgrhDEe2QK54y_oSyxw" name="" type="_2ra1ALhDEe2QK54y_oSyxw" association="_24KQgbhDEe2QK54y_oSyxw"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="_2m6IcbhDEe2QK54y_oSyxw" name="warpdsls">
            <packagedElement xmi:type="uml:Class" xmi:id="_20VgcbhDEe2QK54y_oSyxw" name="WARPBaseListener"/>
            <packagedElement xmi:type="uml:Class" xmi:id="_20Vgc7hDEe2QK54y_oSyxw" name="WARPLexer"/>
            <packagedElement xmi:type="uml:Class" xmi:id="_20WHgbhDEe2QK54y_oSyxw" name="WARPParser"/>
            <packagedElement xmi:type="uml:Class" xmi:id="_22Fz8bhDEe2QK54y_oSyxw" name="WARPdslBaseListener"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="_2nIK4LhDEe2QK54y_oSyxw" name="utilities">
            <packagedElement xmi:type="uml:Class" xmi:id="_20qQkLhDEe2QK54y_oSyxw" name="Utilities"/>
          </packagedElement>
        </packagedElement>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_2mf4wrhDEe2QK54y_oSyxw" name="java">
      <packagedElement xmi:type="uml:Package" xmi:id="_2mf4w7hDEe2QK54y_oSyxw" name="util">
        <packagedElement xmi:type="uml:Package" xmi:id="_2moboLhDEe2QK54y_oSyxw" name="regex">
          <packagedElement xmi:type="uml:Class" xmi:id="_20ClgLhDEe2QK54y_oSyxw" name="Pattern"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="_2nmsALhDEe2QK54y_oSyxw" name="stream">
          <packagedElement xmi:type="uml:Class" xmi:id="_21IxsrhDEe2QK54y_oSyxw" name="Collectors"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="_2ny5QLhDEe2QK54y_oSyxw" name="concurrent">
          <packagedElement xmi:type="uml:Enumeration" xmi:id="_21QGcLhDEe2QK54y_oSyxw" name="TimeUnit"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_2qEKILhDEe2QK54y_oSyxw" name="PriorityQueue"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_2z4NcLhDEe2QK54y_oSyxw" name="HashMap"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_2z5bkLhDEe2QK54y_oSyxw" name="ArrayList"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_2z5bkrhDEe2QK54y_oSyxw" name="HashSet"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_2z6CobhDEe2QK54y_oSyxw" name="Iterator"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_2z6Co7hDEe2QK54y_oSyxw" name="Set"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_20IsILhDEe2QK54y_oSyxw" name="Comparator"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_20lYErhDEe2QK54y_oSyxw" name="Collection"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_20qQkrhDEe2QK54y_oSyxw" name="Arrays"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_21HjkLhDEe2QK54y_oSyxw" name="Collections"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_21IKobhDEe2QK54y_oSyxw" name="List"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_21IxsLhDEe2QK54y_oSyxw" name="Vector"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_21TJwLhDEe2QK54y_oSyxw" name="LinkedList"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_21TJwrhDEe2QK54y_oSyxw" name="Queue"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_2mwXc7hDEe2QK54y_oSyxw" name="io">
        <packagedElement xmi:type="uml:Class" xmi:id="_20LvcrhDEe2QK54y_oSyxw" name="File"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_20MWgbhDEe2QK54y_oSyxw" name="IOException"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_20eDUbhDEe2QK54y_oSyxw" name="BufferedReader"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_20eqYbhDEe2QK54y_oSyxw" name="InputStreamReader"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_2mwXdLhDEe2QK54y_oSyxw" name="nio">
        <packagedElement xmi:type="uml:Package" xmi:id="_2mwXdbhDEe2QK54y_oSyxw" name="file">
          <packagedElement xmi:type="uml:Class" xmi:id="_20MWg7hDEe2QK54y_oSyxw" name="Files"/>
          <packagedElement xmi:type="uml:Interface" xmi:id="_20M9kbhDEe2QK54y_oSyxw" name="Path"/>
          <packagedElement xmi:type="uml:Class" xmi:id="_20M9k7hDEe2QK54y_oSyxw" name="Paths"/>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_2m8ksLhDEe2QK54y_oSyxw" name="awt">
        <packagedElement xmi:type="uml:Class" xmi:id="_20cOILhDEe2QK54y_oSyxw" name="Component"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_2nun0LhDEe2QK54y_oSyxw" name="text">
        <packagedElement xmi:type="uml:Class" xmi:id="_21NDILhDEe2QK54y_oSyxw" name="Collator"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_21glILhDEe2QK54y_oSyxw" name="lang">
        <packagedElement xmi:type="uml:Interface" xmi:id="_21glIbhDEe2QK54y_oSyxw" name="Comparable"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_21xq4LhDEe2QK54y_oSyxw" name="RuntimeException"/>
        <packagedElement xmi:type="uml:DataType" xmi:id="_21600rhDEe2QK54y_oSyxw" name="Double"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_22O94LhDEe2QK54y_oSyxw" name="Object"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_2mwXcLhDEe2QK54y_oSyxw" name="com">
      <packagedElement xmi:type="uml:Package" xmi:id="_2mwXcbhDEe2QK54y_oSyxw" name="mkyong">
        <packagedElement xmi:type="uml:Package" xmi:id="_2mwXcrhDEe2QK54y_oSyxw" name="system">
          <packagedElement xmi:type="uml:Class" xmi:id="_20LvcLhDEe2QK54y_oSyxw" name="OSValidator"/>
        </packagedElement>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_2mxlkLhDEe2QK54y_oSyxw" name="javax">
      <packagedElement xmi:type="uml:Package" xmi:id="_2mxlkbhDEe2QK54y_oSyxw" name="swing">
        <packagedElement xmi:type="uml:Package" xmi:id="_2m9LwLhDEe2QK54y_oSyxw" name="table">
          <packagedElement xmi:type="uml:Interface" xmi:id="_20dcQ7hDEe2QK54y_oSyxw" name="TableCellRenderer"/>
          <packagedElement xmi:type="uml:Interface" xmi:id="_20dcRbhDEe2QK54y_oSyxw" name="TableColumnModel"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_20M9lbhDEe2QK54y_oSyxw" name="JFileChooser"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_20c1MLhDEe2QK54y_oSyxw" name="JFrame"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_20c1MrhDEe2QK54y_oSyxw" name="JScrollPane"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_20dcQbhDEe2QK54y_oSyxw" name="JTable"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_2m5hYLhDEe2QK54y_oSyxw" name="org">
      <packagedElement xmi:type="uml:Package" xmi:id="_2m5hYbhDEe2QK54y_oSyxw" name="antlr">
        <packagedElement xmi:type="uml:Package" xmi:id="_2m5hYrhDEe2QK54y_oSyxw" name="v4">
          <packagedElement xmi:type="uml:Package" xmi:id="_2m5hY7hDEe2QK54y_oSyxw" name="runtime">
            <packagedElement xmi:type="uml:Package" xmi:id="_2m6IcLhDEe2QK54y_oSyxw" name="tree">
              <packagedElement xmi:type="uml:Interface" xmi:id="_20U5YLhDEe2QK54y_oSyxw" name="ParseTree"/>
              <packagedElement xmi:type="uml:Class" xmi:id="_20U5YrhDEe2QK54y_oSyxw" name="ParseTreeWalker"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="_20TrQrhDEe2QK54y_oSyxw" name="CharStream"/>
            <packagedElement xmi:type="uml:Class" xmi:id="_20USUbhDEe2QK54y_oSyxw" name="CharStreams"/>
            <packagedElement xmi:type="uml:Class" xmi:id="_20USU7hDEe2QK54y_oSyxw" name="CommonTokenStream"/>
          </packagedElement>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_2ny5QbhDEe2QK54y_oSyxw" name="junit">
        <packagedElement xmi:type="uml:Package" xmi:id="_2ny5QrhDEe2QK54y_oSyxw" name="jupiter">
          <packagedElement xmi:type="uml:Package" xmi:id="_2ny5Q7hDEe2QK54y_oSyxw" name="api">
            <packagedElement xmi:type="uml:Class" xmi:id="_21QGcrhDEe2QK54y_oSyxw" name="Assertions"/>
            <packagedElement xmi:type="uml:Class" xmi:id="_21QGdLhDEe2QK54y_oSyxw" name="Assumptions"/>
            <packagedElement xmi:type="uml:Interface" xmi:id="_21QtgbhDEe2QK54y_oSyxw" name="Test"/>
            <packagedElement xmi:type="uml:Interface" xmi:id="_21Qtg7hDEe2QK54y_oSyxw" name="Timeout"/>
          </packagedElement>
        </packagedElement>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_2m7WkLhDEe2QK54y_oSyxw" name="WARPParser">
      <packagedElement xmi:type="uml:Class" xmi:id="_20WulbhDEe2QK54y_oSyxw" name="WarpNameContext"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_20X8sLhDEe2QK54y_oSyxw" name="WarpContext"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_20YjwrhDEe2QK54y_oSyxw" name="FlowNameContext"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_20ZK07hDEe2QK54y_oSyxw" name="SrcNodeContext"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_20Zx5rhDEe2QK54y_oSyxw" name="SnkNodeContext"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_20bAALhDEe2QK54y_oSyxw" name="FlowContext"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_206IM7hDEe2QK54y_oSyxw" name="PriorityContext"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_206IOrhDEe2QK54y_oSyxw" name="PeriodContext"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_206vRrhDEe2QK54y_oSyxw" name="DeadlineContext"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_207WUrhDEe2QK54y_oSyxw" name="PhaseContext"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_2nglYLhDEe2QK54y_oSyxw" name="WARPdslParser">
      <packagedElement xmi:type="uml:Class" xmi:id="_209LgLhDEe2QK54y_oSyxw" name="ActionContext"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_20_AtbhDEe2QK54y_oSyxw" name="FlowNameContext"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_20_nxrhDEe2QK54y_oSyxw" name="CmdContext"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_21AO1rhDEe2QK54y_oSyxw" name="SrcNodeContext"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_21Bc8rhDEe2QK54y_oSyxw" name="SnkNodeContext"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_21CEBrhDEe2QK54y_oSyxw" name="ChannelContext"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_2nvO4LhDEe2QK54y_oSyxw" name="argparser">
      <packagedElement xmi:type="uml:Class" xmi:id="_21NqMrhDEe2QK54y_oSyxw" name="ArgParser"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_21ORQbhDEe2QK54y_oSyxw" name="BooleanHolder"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_21ORQ7hDEe2QK54y_oSyxw" name="DoubleHolder"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_21ORRbhDEe2QK54y_oSyxw" name="IntHolder"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_21ORR7hDEe2QK54y_oSyxw" name="StringHolder"/>
    </packagedElement>
    <profileApplication xmi:id="_2DWIYrhDEe2QK54y_oSyxw">
      <eAnnotations xmi:id="_2DWIY7hDEe2QK54y_oSyxw" 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="_2DWvcLhDEe2QK54y_oSyxw" base_Package="_164v8LhDEe2QK54y_oSyxw">
    <languageName>java</languageName>
  </UMLLabProfile:TargetLanguage>
  <UMLLabProfile:Generics xmi:id="_2owikLhDEe2QK54y_oSyxw" genericsValue="T,E" base_Element="_2ov7gLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2oyXwbhDEe2QK54y_oSyxw" base_Element="_2oyXwLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2oyXwrhDEe2QK54y_oSyxw" base_Element="_2oyXwLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2oyXw7hDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_2oy-0LhDEe2QK54y_oSyxw" genericsValue="Edge" base_Element="_2oyXxLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2ozl4LhDEe2QK54y_oSyxw" genericsValue="Edge" base_Element="_2oy-0bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2o0M8LhDEe2QK54y_oSyxw" genericsValue="Edge" base_Element="_2ozl4bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2o00ALhDEe2QK54y_oSyxw" genericsValue="Edge" base_Element="_2o0M8bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2o00ArhDEe2QK54y_oSyxw" genericsValue="Edge" base_Element="_2o00AbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2pAaMLhDEe2QK54y_oSyxw" genericsValue="String" base_Element="_2o_zJrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2pDdgbhDEe2QK54y_oSyxw" genericsValue="String" base_Element="_2pDdgLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2pIWALhDEe2QK54y_oSyxw" base_Element="_2pHu8bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2pI9ELhDEe2QK54y_oSyxw" base_Element="_2pHu8bhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2pI9EbhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2pI9E7hDEe2QK54y_oSyxw" base_Element="_2pI9ErhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2pI9FLhDEe2QK54y_oSyxw" base_Element="_2pI9ErhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2pI9FbhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2pI9F7hDEe2QK54y_oSyxw" base_Element="_2pI9FrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2pJkILhDEe2QK54y_oSyxw" base_Element="_2pI9FrhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2pJkIbhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_2pKyQbhDEe2QK54y_oSyxw" genericsValue="T extends SchedulableObject" base_Element="_2pKyQLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2pLZW7hDEe2QK54y_oSyxw" base_Element="_2pLZWbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2pLZXLhDEe2QK54y_oSyxw" base_Element="_2pLZWbhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2pLZXbhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Array xmi:id="_2pMAY7hDEe2QK54y_oSyxw" base_Element="_2pMAYbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2pNOgbhDEe2QK54y_oSyxw" base_Element="_2pNOgLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2pOcorhDEe2QK54y_oSyxw" base_Element="_2pOcoLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2pOco7hDEe2QK54y_oSyxw" base_Element="_2pOcoLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2pOcpLhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2pPDsLhDEe2QK54y_oSyxw" base_Element="_2pOcpbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2pPDsbhDEe2QK54y_oSyxw" base_Element="_2pOcpbhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2pPDsrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2pPDtLhDEe2QK54y_oSyxw" base_Element="_2pPDs7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2pPDtbhDEe2QK54y_oSyxw" base_Element="_2pPDs7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_2pPDtrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_2pVKULhDEe2QK54y_oSyxw" genericsValue="Node" base_Element="_2pUjSrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2pVKUrhDEe2QK54y_oSyxw" genericsValue="Edge" base_Element="_2pVKUbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2pVxYbhDEe2QK54y_oSyxw" genericsValue="Integer" base_Element="_2pVxYLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2pXmkbhDEe2QK54y_oSyxw" base_Element="_2pWYc7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2pXmkrhDEe2QK54y_oSyxw" base_Element="_2pWYc7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_2pXmk7hDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2pap4bhDEe2QK54y_oSyxw" base_Element="_2pap4LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2pap4rhDEe2QK54y_oSyxw" base_Element="_2pap4LhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2pap47hDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Array xmi:id="_2pgJcbhDEe2QK54y_oSyxw" dimensions="2" base_Element="_2pfiY7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2pneMbhDEe2QK54y_oSyxw" genericsValue="T extends SchedulableObject" base_Element="_2pneMLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2poFQbhDEe2QK54y_oSyxw" genericsValue="T extends SchedulableObject" base_Element="_2poFQLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2ppTYLhDEe2QK54y_oSyxw" base_Element="_2posV7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2ppTYbhDEe2QK54y_oSyxw" base_Element="_2posV7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_2ppTYrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2ppTabhDEe2QK54y_oSyxw" base_Element="_2ppTZ7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2ppTarhDEe2QK54y_oSyxw" base_Element="_2ppTZ7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_2ppTa7hDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2pp6cLhDEe2QK54y_oSyxw" base_Element="_2ppTbLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2pp6cbhDEe2QK54y_oSyxw" base_Element="_2ppTbLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2pp6crhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2prvobhDEe2QK54y_oSyxw" base_Element="_2prvoLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2prvorhDEe2QK54y_oSyxw" base_Element="_2prvoLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2prvo7hDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_2psWsbhDEe2QK54y_oSyxw" genericsValue="T extends SchedulableObject" base_Element="_2psWsLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2ps9wrhDEe2QK54y_oSyxw" genericsValue="String, Integer" base_Element="_2ps9wbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2ptk0bhDEe2QK54y_oSyxw" genericsValue="String" base_Element="_2ptk0LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Array xmi:id="_2ptk1bhDEe2QK54y_oSyxw" base_Element="_2ptk0rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2pxPMbhDEe2QK54y_oSyxw" base_Element="_2pxPMLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2pxPMrhDEe2QK54y_oSyxw" base_Element="_2pxPMLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2pxPM7hDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_2pzEYLhDEe2QK54y_oSyxw" genericsValue="T extends SchedulableObject" base_Element="_2pydULhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2p3V0rhDEe2QK54y_oSyxw" base_Element="_2p3V0LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2p3V07hDEe2QK54y_oSyxw" base_Element="_2p3V0LhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2p3V1LhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2p3847hDEe2QK54y_oSyxw" base_Element="_2p384bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2p385LhDEe2QK54y_oSyxw" base_Element="_2p384bhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2p385bhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2p4j8rhDEe2QK54y_oSyxw" base_Element="_2p4j8LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2p4j87hDEe2QK54y_oSyxw" base_Element="_2p4j8LhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2p4j9LhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2p5LAbhDEe2QK54y_oSyxw" base_Element="_2p5LALhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2p5LArhDEe2QK54y_oSyxw" base_Element="_2p5LALhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2p5LA7hDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2p5LBbhDEe2QK54y_oSyxw" base_Element="_2p5LBLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2p5LBrhDEe2QK54y_oSyxw" base_Element="_2p5LBLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2p5LB7hDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2p5yEbhDEe2QK54y_oSyxw" base_Element="_2p5LCLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2p5yErhDEe2QK54y_oSyxw" base_Element="_2p5LCLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2p5yE7hDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2p5yFrhDEe2QK54y_oSyxw" base_Element="_2p5yFLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2p5yF7hDEe2QK54y_oSyxw" base_Element="_2p5yFLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2p5yGLhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2p6ZIrhDEe2QK54y_oSyxw" base_Element="_2p6ZILhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2p6ZI7hDEe2QK54y_oSyxw" base_Element="_2p6ZILhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2p6ZJLhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_2p7AMLhDEe2QK54y_oSyxw" genericsValue="String, Integer" base_Element="_2p6ZJbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2p_4sbhDEe2QK54y_oSyxw" base_Element="_2p_4sLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2p_4srhDEe2QK54y_oSyxw" base_Element="_2p_4sLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2p_4s7hDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2qAfwLhDEe2QK54y_oSyxw" base_Element="_2p_4tLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2qAfwbhDEe2QK54y_oSyxw" base_Element="_2p_4tLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2qAfwrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2qAfxLhDEe2QK54y_oSyxw" base_Element="_2qAfw7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2qBG0LhDEe2QK54y_oSyxw" base_Element="_2qAfw7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_2qBG0bhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Array xmi:id="_2qBG1bhDEe2QK54y_oSyxw" base_Element="_2qBG0rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2qBG1rhDEe2QK54y_oSyxw" base_Element="_2qBG0rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2qBG17hDEe2QK54y_oSyxw" base_Element="_2qBG0rhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2qBG2LhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Array xmi:id="_2qBt4rhDEe2QK54y_oSyxw" dimensions="2" base_Element="_2qBG2bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2qBt47hDEe2QK54y_oSyxw" base_Element="_2qBG2bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2qBt5LhDEe2QK54y_oSyxw" base_Element="_2qBG2bhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2qBt5bhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_2qC8ALhDEe2QK54y_oSyxw" genericsValue="T extends SchedulableObject" base_Element="_2qCU8LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2qDjELhDEe2QK54y_oSyxw" genericsValue="T extends SchedulableObject" base_Element="_2qC8AbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_2qEKIbhDEe2QK54y_oSyxw" base_Element="_2qEKILhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2qEKI7hDEe2QK54y_oSyxw" genericsValue="T" base_Element="_2qEKIrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2qIbkLhDEe2QK54y_oSyxw" base_Element="_2qH0gbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2qIbkbhDEe2QK54y_oSyxw" base_Element="_2qH0gbhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2qIbkrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_2qJpsLhDEe2QK54y_oSyxw" genericsValue="T" base_Element="_2qJCoLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2qK30LhDEe2QK54y_oSyxw" genericsValue="T extends SchedulableObject" base_Element="_2qKQwLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2qLe4bhDEe2QK54y_oSyxw" genericsValue="T" base_Element="_2qLe4LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2qXsIbhDEe2QK54y_oSyxw" genericsValue="T extends SchedulableObject" base_Element="_2qXsILhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2qYTMbhDEe2QK54y_oSyxw" genericsValue="T" base_Element="_2qYTMLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2qY6QrhDEe2QK54y_oSyxw" base_Element="_2qY6QbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2qbWgLhDEe2QK54y_oSyxw" genericsValue="T,E extends ArrayList&lt;T>" base_Element="_2qavcbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2qdLsbhDEe2QK54y_oSyxw" base_Element="_2qdLsLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2qdyw7hDEe2QK54y_oSyxw" base_Element="_2qdywrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2qg2EbhDEe2QK54y_oSyxw" base_Element="_2qg2ELhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2qg2ErhDEe2QK54y_oSyxw" base_Element="_2qg2ELhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2qg2E7hDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2qg2FbhDEe2QK54y_oSyxw" base_Element="_2qg2FLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2qg2FrhDEe2QK54y_oSyxw" base_Element="_2qg2FLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2qg2F7hDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2qhdILhDEe2QK54y_oSyxw" base_Element="_2qg2GLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2qhdIbhDEe2QK54y_oSyxw" base_Element="_2qg2GLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2qhdIrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Array xmi:id="_2qlHhLhDEe2QK54y_oSyxw" base_Element="_2qlHgbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Array xmi:id="_2qlHiLhDEe2QK54y_oSyxw" dimensions="2" base_Element="_2qlHhbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2qscQrhDEe2QK54y_oSyxw" genericsValue="InstructionParameters" base_Element="_2qscQLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2qtqYLhDEe2QK54y_oSyxw" genericsValue="InstructionParameters" base_Element="_2qtDVLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2qxUwLhDEe2QK54y_oSyxw" base_Element="_2qwtsLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2qxUwbhDEe2QK54y_oSyxw" base_Element="_2qwtsLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2qxUwrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2qxUxLhDEe2QK54y_oSyxw" base_Element="_2qxUw7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2qx70LhDEe2QK54y_oSyxw" base_Element="_2qxUw7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_2qx70bhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2qx707hDEe2QK54y_oSyxw" base_Element="_2qx70rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2qx71LhDEe2QK54y_oSyxw" base_Element="_2qx70rhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2qx71bhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2qx717hDEe2QK54y_oSyxw" base_Element="_2qx71rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2qyi4LhDEe2QK54y_oSyxw" base_Element="_2qx71rhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2qyi4bhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2qyi47hDEe2QK54y_oSyxw" base_Element="_2qyi4rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2qzJ8LhDEe2QK54y_oSyxw" base_Element="_2qyi4rhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2qzJ8bhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2qzJ87hDEe2QK54y_oSyxw" base_Element="_2qzJ8rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2qzJ9LhDEe2QK54y_oSyxw" base_Element="_2qzJ8rhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2qzJ9bhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2qzxArhDEe2QK54y_oSyxw" base_Element="_2qzxALhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2qzxA7hDEe2QK54y_oSyxw" base_Element="_2qzxALhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2qzxBLhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2q0YELhDEe2QK54y_oSyxw" base_Element="_2qzxBbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2q0YEbhDEe2QK54y_oSyxw" base_Element="_2qzxBbhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2q0YErhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2q0_ILhDEe2QK54y_oSyxw" base_Element="_2q0YE7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2q0_IbhDEe2QK54y_oSyxw" base_Element="_2q0YE7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_2q0_IrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2q0_JLhDEe2QK54y_oSyxw" base_Element="_2q0_I7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2q0_JbhDEe2QK54y_oSyxw" base_Element="_2q0_I7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_2q0_JrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2q1mMLhDEe2QK54y_oSyxw" base_Element="_2q0_J7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2q1mMbhDEe2QK54y_oSyxw" base_Element="_2q0_J7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_2q1mMrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2q1mNbhDEe2QK54y_oSyxw" base_Element="_2q1mM7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2q1mNrhDEe2QK54y_oSyxw" base_Element="_2q1mM7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_2q1mN7hDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2q2NQrhDEe2QK54y_oSyxw" base_Element="_2q2NQLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2q2NQ7hDEe2QK54y_oSyxw" base_Element="_2q2NQLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2q2NRLhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2q2NR7hDEe2QK54y_oSyxw" base_Element="_2q2NRbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2q20ULhDEe2QK54y_oSyxw" base_Element="_2q2NRbhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2q20UbhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2q20VLhDEe2QK54y_oSyxw" base_Element="_2q20UrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2q20VbhDEe2QK54y_oSyxw" base_Element="_2q20UrhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2q20VrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2q20WLhDEe2QK54y_oSyxw" base_Element="_2q20V7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2q20WbhDEe2QK54y_oSyxw" base_Element="_2q20V7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_2q3bYLhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Array xmi:id="_2rAlU7hDEe2QK54y_oSyxw" base_Element="_2rAlULhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Array xmi:id="_2rBMY7hDEe2QK54y_oSyxw" base_Element="_2rBMYLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Array xmi:id="_2rBMa7hDEe2QK54y_oSyxw" dimensions="1" base_Element="_2rBMZ7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Array xmi:id="_2rCagLhDEe2QK54y_oSyxw" base_Element="_2rBzdbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rHTBLhDEe2QK54y_oSyxw" base_Element="_2rHTA7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rH6ELhDEe2QK54y_oSyxw" base_Element="_2rHTA7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rH6EbhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rH6E7hDEe2QK54y_oSyxw" base_Element="_2rH6ErhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rIhILhDEe2QK54y_oSyxw" base_Element="_2rH6ErhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rIhIbhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rIhJLhDEe2QK54y_oSyxw" base_Element="_2rIhIrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rIhJbhDEe2QK54y_oSyxw" base_Element="_2rIhIrhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rIhJrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Array xmi:id="_2rLkcLhDEe2QK54y_oSyxw" dimensions="1" base_Element="_2rK9YbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Array xmi:id="_2rMLgbhDEe2QK54y_oSyxw" base_Element="_2rLkcrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rPO0bhDEe2QK54y_oSyxw" base_Element="_2rPO0LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rPO0rhDEe2QK54y_oSyxw" base_Element="_2rPO0LhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rPO07hDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rPO1LhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rPO1bhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23s9hLhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rPO1rhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23s9hbhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rP14LhDEe2QK54y_oSyxw" base_Element="_2rPO17hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rP14bhDEe2QK54y_oSyxw" base_Element="_2rPO17hDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rP14rhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rP147hDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rP15LhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23s9hrhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rP15bhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23s9h7hDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rP157hDEe2QK54y_oSyxw" base_Element="_2rP15rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rP16LhDEe2QK54y_oSyxw" base_Element="_2rP15rhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rP16bhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rP16rhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rP167hDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23s9iLhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rP17LhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23s9ibhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rQc8LhDEe2QK54y_oSyxw" base_Element="_2rP17bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rQc8bhDEe2QK54y_oSyxw" base_Element="_2rP17bhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rQc8rhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rQc87hDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rQc9LhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23s9irhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rQc9bhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23s9i7hDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rQc97hDEe2QK54y_oSyxw" base_Element="_2rQc9rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rQc-LhDEe2QK54y_oSyxw" base_Element="_2rQc9rhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rQc-bhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rQc-rhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rQc-7hDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23s9jLhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rQc_LhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23s9jbhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rQc_rhDEe2QK54y_oSyxw" base_Element="_2rQc_bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rREALhDEe2QK54y_oSyxw" base_Element="_2rQc_bhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rREAbhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rREArhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rREA7hDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23s9jrhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rREBLhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23s9j7hDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rREBrhDEe2QK54y_oSyxw" base_Element="_2rREBbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rREB7hDEe2QK54y_oSyxw" base_Element="_2rREBbhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rRECLhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rRECbhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rRECrhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23s9kLhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rREC7hDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23s9kbhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rRrELhDEe2QK54y_oSyxw" base_Element="_2rREDLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rRrEbhDEe2QK54y_oSyxw" base_Element="_2rREDLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rRrErhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rRrE7hDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rRrFLhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23s9krhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rRrFbhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23s9k7hDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rRrF7hDEe2QK54y_oSyxw" base_Element="_2rRrFrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rRrGLhDEe2QK54y_oSyxw" base_Element="_2rRrFrhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rRrGbhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rSSILhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rSSIbhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tkkLhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rSSIrhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tkkbhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rSSJLhDEe2QK54y_oSyxw" base_Element="_2rSSI7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rSSJbhDEe2QK54y_oSyxw" base_Element="_2rSSI7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rSSJrhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rSSJ7hDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rSSKLhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tkkrhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rSSKbhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tkk7hDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rSSK7hDEe2QK54y_oSyxw" base_Element="_2rSSKrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rSSLLhDEe2QK54y_oSyxw" base_Element="_2rSSKrhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rS5MLhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rS5MbhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rS5MrhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tklLhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rS5M7hDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tklbhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rS5NbhDEe2QK54y_oSyxw" base_Element="_2rS5NLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rS5NrhDEe2QK54y_oSyxw" base_Element="_2rS5NLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rS5N7hDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rS5OLhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rS5ObhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tklrhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rS5OrhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tkl7hDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rTgQLhDEe2QK54y_oSyxw" base_Element="_2rS5O7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rTgQbhDEe2QK54y_oSyxw" base_Element="_2rS5O7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rTgQrhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rTgQ7hDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rTgRLhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tkmLhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rTgRbhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tkmbhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rTgR7hDEe2QK54y_oSyxw" base_Element="_2rTgRrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rTgSLhDEe2QK54y_oSyxw" base_Element="_2rTgRrhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rTgSbhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rTgSrhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rUHULhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tkmrhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rUHUbhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tkm7hDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rUHU7hDEe2QK54y_oSyxw" base_Element="_2rUHUrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rUHVLhDEe2QK54y_oSyxw" base_Element="_2rUHUrhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rUHVbhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rUHVrhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rUHV7hDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tknLhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rUHWLhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tknbhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rUHWrhDEe2QK54y_oSyxw" base_Element="_2rUHWbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rUHW7hDEe2QK54y_oSyxw" base_Element="_2rUHWbhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rUuYLhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rUuYbhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rUuYrhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tknrhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rUuY7hDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tkn7hDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rUuZbhDEe2QK54y_oSyxw" base_Element="_2rUuZLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rUuZrhDEe2QK54y_oSyxw" base_Element="_2rUuZLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rUuZ7hDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rUuaLhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rUuabhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tkoLhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rUuarhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tkobhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rUubLhDEe2QK54y_oSyxw" base_Element="_2rUua7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rUubbhDEe2QK54y_oSyxw" base_Element="_2rUua7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rUubrhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rUub7hDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rUucLhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tkorhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rUucbhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tko7hDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rVVcLhDEe2QK54y_oSyxw" base_Element="_2rUucrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rVVcbhDEe2QK54y_oSyxw" base_Element="_2rUucrhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rVVcrhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rVVc7hDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rVVdLhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tkpLhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rVVdbhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tkpbhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rVVd7hDEe2QK54y_oSyxw" base_Element="_2rVVdrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rVVeLhDEe2QK54y_oSyxw" base_Element="_2rVVdrhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rVVebhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rVVerhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rVVe7hDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23tkprhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rVVfLhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLoLhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rVVfrhDEe2QK54y_oSyxw" base_Element="_2rVVfbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rVVf7hDEe2QK54y_oSyxw" base_Element="_2rVVfbhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rVVgLhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rVVgbhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rV8gLhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLobhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rV8gbhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLorhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rV8g7hDEe2QK54y_oSyxw" base_Element="_2rV8grhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rV8hLhDEe2QK54y_oSyxw" base_Element="_2rV8grhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rV8hbhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rV8hrhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rV8h7hDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLo7hDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rV8iLhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLpLhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rV8irhDEe2QK54y_oSyxw" base_Element="_2rV8ibhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rV8i7hDEe2QK54y_oSyxw" base_Element="_2rV8ibhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rV8jLhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rV8jbhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rV8jrhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLpbhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rV8j7hDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLprhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rV8kbhDEe2QK54y_oSyxw" base_Element="_2rV8kLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rWjkLhDEe2QK54y_oSyxw" base_Element="_2rV8kLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rWjkbhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rWjkrhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rWjk7hDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLp7hDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rWjlLhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLqLhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rWjlrhDEe2QK54y_oSyxw" base_Element="_2rWjlbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rWjl7hDEe2QK54y_oSyxw" base_Element="_2rWjlbhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rWjmLhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rWjmbhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rWjmrhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLqbhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rWjm7hDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLqrhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rWjnbhDEe2QK54y_oSyxw" base_Element="_2rWjnLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rWjnrhDEe2QK54y_oSyxw" base_Element="_2rWjnLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rWjn7hDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rWjoLhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rWjobhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLq7hDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rWjorhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLrLhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rXKoLhDEe2QK54y_oSyxw" base_Element="_2rWjo7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rXKobhDEe2QK54y_oSyxw" base_Element="_2rWjo7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rXKorhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rXKo7hDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rXKpLhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLrbhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rXKpbhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLrrhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rXKp7hDEe2QK54y_oSyxw" base_Element="_2rXKprhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rXKqLhDEe2QK54y_oSyxw" base_Element="_2rXKprhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rXKqbhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rXKqrhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rXKq7hDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLr7hDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rXKrLhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLsLhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rXKrrhDEe2QK54y_oSyxw" base_Element="_2rXKrbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rXxsLhDEe2QK54y_oSyxw" base_Element="_2rXKrbhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rXxsbhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rXxsrhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rXxs7hDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLsbhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rXxtLhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLsrhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rXxtrhDEe2QK54y_oSyxw" base_Element="_2rXxtbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rXxt7hDEe2QK54y_oSyxw" base_Element="_2rXxtbhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rXxuLhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rXxubhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rXxurhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLs7hDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rXxu7hDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLtLhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rXxvbhDEe2QK54y_oSyxw" base_Element="_2rXxvLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rXxvrhDEe2QK54y_oSyxw" base_Element="_2rXxvLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rXxv7hDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rYYwLhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rYYwbhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLtbhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rYYwrhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLtrhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rYYxLhDEe2QK54y_oSyxw" base_Element="_2rYYw7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rYYxbhDEe2QK54y_oSyxw" base_Element="_2rYYw7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rYYxrhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rYYx7hDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rYYyLhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLt7hDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rYYybhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLuLhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rYYy7hDEe2QK54y_oSyxw" base_Element="_2rYYyrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rYYzLhDEe2QK54y_oSyxw" base_Element="_2rYYyrhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rYYzbhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rYYzrhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rYYz7hDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLubhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rYY0LhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLurhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rY_0LhDEe2QK54y_oSyxw" base_Element="_2rYY0bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rY_0bhDEe2QK54y_oSyxw" base_Element="_2rYY0bhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rY_0rhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rY_07hDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rY_1LhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLu7hDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rY_1bhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLvLhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rY_17hDEe2QK54y_oSyxw" base_Element="_2rY_1rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rY_2LhDEe2QK54y_oSyxw" base_Element="_2rY_1rhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rY_2bhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rY_2rhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rY_27hDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLvbhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rY_3LhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLvrhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rY_3rhDEe2QK54y_oSyxw" base_Element="_2rY_3bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rZm4LhDEe2QK54y_oSyxw" base_Element="_2rY_3bhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rZm4bhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rZm4rhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rZm47hDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLv7hDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rZm5LhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLwLhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rZm5rhDEe2QK54y_oSyxw" base_Element="_2rZm5bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rZm57hDEe2QK54y_oSyxw" base_Element="_2rZm5bhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rZm6LhDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rZm6bhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rZm6rhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLwbhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rZm67hDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uLwrhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2rZm7bhDEe2QK54y_oSyxw" base_Element="_2rZm7LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2rZm7rhDEe2QK54y_oSyxw" base_Element="_2rZm7LhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2rZm77hDEe2QK54y_oSyxw" name="Test"/>
    <annotations xmi:id="_2rZm8LhDEe2QK54y_oSyxw" name="Timeout">
      <annotationParameters xmi:id="_2rZm8bhDEe2QK54y_oSyxw" name="value" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uysLhDEe2QK54y_oSyxw" value="2"/>
      </annotationParameters>
      <annotationParameters xmi:id="_2rZm8rhDEe2QK54y_oSyxw" name="unit" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_23uysbhDEe2QK54y_oSyxw" value="TimeUnit.SECONDS"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_2rd4UbhDEe2QK54y_oSyxw" genericsValue="Integer" base_Element="_2rd4ULhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_2z40gLhDEe2QK54y_oSyxw" base_Element="_2z4NcLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_2z5bkbhDEe2QK54y_oSyxw" base_Element="_2z5bkLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_2z6CoLhDEe2QK54y_oSyxw" base_Element="_2z5bkrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_2z6CorhDEe2QK54y_oSyxw" base_Element="_2z6CobhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_2z6psLhDEe2QK54y_oSyxw" base_Element="_2z6Co7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2z8e4rhDEe2QK54y_oSyxw" base_Element="_2z7307hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2z8e47hDEe2QK54y_oSyxw" base_Element="_2z7307hDEe2QK54y_oSyxw">
    <annotations xmi:id="_2z8e5LhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_2z9tA7hDEe2QK54y_oSyxw" genericsValue="Edge" base_Element="_2z9tArhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2z9tBrhDEe2QK54y_oSyxw" genericsValue="Edge" base_Element="_2z9tBbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_2z-7IbhDEe2QK54y_oSyxw" genericsValue="String, Activation" base_Element="_2z-7ILhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20ClgbhDEe2QK54y_oSyxw" base_Element="_20ClgLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_20FBwrhDEe2QK54y_oSyxw" base_Element="_20EaubhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_20FBw7hDEe2QK54y_oSyxw" base_Element="_20EaubhDEe2QK54y_oSyxw">
    <annotations xmi:id="_20FBxLhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_20IsIbhDEe2QK54y_oSyxw" base_Element="_20IsILhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_20KhULhDEe2QK54y_oSyxw" base_Element="_20J6QLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_20KhUbhDEe2QK54y_oSyxw" base_Element="_20J6QLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_20KhUrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_20LvcbhDEe2QK54y_oSyxw" base_Element="_20LvcLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20MWgLhDEe2QK54y_oSyxw" base_Element="_20LvcrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20MWgrhDEe2QK54y_oSyxw" base_Element="_20MWgbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20M9kLhDEe2QK54y_oSyxw" base_Element="_20MWg7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20M9krhDEe2QK54y_oSyxw" base_Element="_20M9kbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20M9lLhDEe2QK54y_oSyxw" base_Element="_20M9k7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20NkoLhDEe2QK54y_oSyxw" base_Element="_20M9lbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_20R2ELhDEe2QK54y_oSyxw" genericsValue="String, Flow" base_Element="_20RPALhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_20SdILhDEe2QK54y_oSyxw" genericsValue="Node, Activation" base_Element="_20R2EbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20USULhDEe2QK54y_oSyxw" base_Element="_20TrQrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20USUrhDEe2QK54y_oSyxw" base_Element="_20USUbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20USVLhDEe2QK54y_oSyxw" base_Element="_20USU7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20U5YbhDEe2QK54y_oSyxw" base_Element="_20U5YLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20VgcLhDEe2QK54y_oSyxw" base_Element="_20U5YrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20VgcrhDEe2QK54y_oSyxw" base_Element="_20VgcbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20WHgLhDEe2QK54y_oSyxw" base_Element="_20Vgc7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20WHgrhDEe2QK54y_oSyxw" base_Element="_20WHgbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20XVoLhDEe2QK54y_oSyxw" base_Element="_20WulbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_20XVo7hDEe2QK54y_oSyxw" base_Element="_20XVobhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_20XVpLhDEe2QK54y_oSyxw" base_Element="_20XVobhDEe2QK54y_oSyxw">
    <annotations xmi:id="_20XVpbhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_20X8sbhDEe2QK54y_oSyxw" base_Element="_20X8sLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_20X8tLhDEe2QK54y_oSyxw" base_Element="_20X8srhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_20YjwLhDEe2QK54y_oSyxw" base_Element="_20X8srhDEe2QK54y_oSyxw">
    <annotations xmi:id="_20YjwbhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_20Yjw7hDEe2QK54y_oSyxw" base_Element="_20YjwrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_20ZK0LhDEe2QK54y_oSyxw" base_Element="_20YjxLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_20ZK0bhDEe2QK54y_oSyxw" base_Element="_20YjxLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_20ZK0rhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_20Zx4LhDEe2QK54y_oSyxw" base_Element="_20ZK07hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_20Zx47hDEe2QK54y_oSyxw" base_Element="_20Zx4bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_20Zx5LhDEe2QK54y_oSyxw" base_Element="_20Zx4bhDEe2QK54y_oSyxw">
    <annotations xmi:id="_20Zx5bhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_20aY8LhDEe2QK54y_oSyxw" base_Element="_20Zx5rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_20aY87hDEe2QK54y_oSyxw" base_Element="_20aY8bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_20aY9LhDEe2QK54y_oSyxw" base_Element="_20aY8bhDEe2QK54y_oSyxw">
    <annotations xmi:id="_20aY9bhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_20bAAbhDEe2QK54y_oSyxw" base_Element="_20bAALhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_20bABLhDEe2QK54y_oSyxw" base_Element="_20bAArhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_20bnELhDEe2QK54y_oSyxw" base_Element="_20bAArhDEe2QK54y_oSyxw">
    <annotations xmi:id="_20bnEbhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_20cOIbhDEe2QK54y_oSyxw" base_Element="_20cOILhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20c1MbhDEe2QK54y_oSyxw" base_Element="_20c1MLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20dcQLhDEe2QK54y_oSyxw" base_Element="_20c1MrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20dcQrhDEe2QK54y_oSyxw" base_Element="_20dcQbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20dcRLhDEe2QK54y_oSyxw" base_Element="_20dcQ7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20eDULhDEe2QK54y_oSyxw" base_Element="_20dcRbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20eqYLhDEe2QK54y_oSyxw" base_Element="_20eDUbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20eqYrhDEe2QK54y_oSyxw" base_Element="_20eqYbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_20f4gbhDEe2QK54y_oSyxw" genericsValue="String" base_Element="_20f4gLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20gfkbhDEe2QK54y_oSyxw" base_Element="_20gfkLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_20i70bhDEe2QK54y_oSyxw" base_Element="_20iUwLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_20i70rhDEe2QK54y_oSyxw" base_Element="_20iUwLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_20i707hDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_20kJ8bhDEe2QK54y_oSyxw" genericsValue="String, Node" base_Element="_20kJ8LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20l_ILhDEe2QK54y_oSyxw" base_Element="_20lYErhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_20n0WbhDEe2QK54y_oSyxw" base_Element="_20n0VrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_20obYLhDEe2QK54y_oSyxw" base_Element="_20n0VrhDEe2QK54y_oSyxw">
    <annotations xmi:id="_20obYbhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_20oba7hDEe2QK54y_oSyxw" genericsValue="ScheduleTime" base_Element="_20obZrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_20ppgbhDEe2QK54y_oSyxw" base_Element="_20pCfrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_20ppgrhDEe2QK54y_oSyxw" base_Element="_20pCfrhDEe2QK54y_oSyxw">
    <annotations xmi:id="_20ppg7hDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_20qQkbhDEe2QK54y_oSyxw" base_Element="_20qQkLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_20qQk7hDEe2QK54y_oSyxw" base_Element="_20qQkrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_20tT4bhDEe2QK54y_oSyxw" genericsValue="String,InstructionTimeSlot" base_Element="_20tT4LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_20uiBbhDEe2QK54y_oSyxw" genericsValue="T" base_Element="_20uiAbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_20vJEbhDEe2QK54y_oSyxw" genericsValue="Double" base_Element="_20vJELhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_20vwIbhDEe2QK54y_oSyxw" genericsValue="Double,ReliabilityRow" base_Element="_20vwILhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_200ooLhDEe2QK54y_oSyxw" genericsValue="Activation,Row&lt;Activation>" base_Element="_200BkLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_200oprhDEe2QK54y_oSyxw" genericsValue="T" base_Element="_200oorhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_201PsbhDEe2QK54y_oSyxw" base_Element="_201PsLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_2012wbhDEe2QK54y_oSyxw" base_Element="_2012wLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_2012w7hDEe2QK54y_oSyxw" base_Element="_2012wrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_205hKLhDEe2QK54y_oSyxw" base_Element="_205hJrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_205hKbhDEe2QK54y_oSyxw" base_Element="_205hJrhDEe2QK54y_oSyxw">
    <annotations xmi:id="_205hKrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_206IMLhDEe2QK54y_oSyxw" base_Element="_205hK7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_206IMbhDEe2QK54y_oSyxw" base_Element="_205hK7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_206IMrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_206INLhDEe2QK54y_oSyxw" base_Element="_206IM7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_206IN7hDEe2QK54y_oSyxw" base_Element="_206INbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_206IOLhDEe2QK54y_oSyxw" base_Element="_206INbhDEe2QK54y_oSyxw">
    <annotations xmi:id="_206IObhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_206vQLhDEe2QK54y_oSyxw" base_Element="_206IOrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_206vQ7hDEe2QK54y_oSyxw" base_Element="_206vQbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_206vRLhDEe2QK54y_oSyxw" base_Element="_206vQbhDEe2QK54y_oSyxw">
    <annotations xmi:id="_206vRbhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_206vR7hDEe2QK54y_oSyxw" base_Element="_206vRrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_206vSrhDEe2QK54y_oSyxw" base_Element="_206vSLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_207WULhDEe2QK54y_oSyxw" base_Element="_206vSLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_207WUbhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_207WU7hDEe2QK54y_oSyxw" base_Element="_207WUrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_207WVrhDEe2QK54y_oSyxw" base_Element="_207WVLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_207WV7hDEe2QK54y_oSyxw" base_Element="_207WVLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_207WWLhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_207WW7hDEe2QK54y_oSyxw" base_Element="_207WWbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2079YLhDEe2QK54y_oSyxw" base_Element="_207WWbhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2079YbhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2079ZLhDEe2QK54y_oSyxw" base_Element="_2079YrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2079ZbhDEe2QK54y_oSyxw" base_Element="_2079YrhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2079ZrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2079abhDEe2QK54y_oSyxw" base_Element="_2079Z7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_208kcLhDEe2QK54y_oSyxw" base_Element="_2079Z7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_208kcbhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_20-ZoLhDEe2QK54y_oSyxw" base_Element="_209LgLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_20-Zo7hDEe2QK54y_oSyxw" base_Element="_20-ZobhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_20-ZpLhDEe2QK54y_oSyxw" base_Element="_20-ZobhDEe2QK54y_oSyxw">
    <annotations xmi:id="_20-ZpbhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_20_AsrhDEe2QK54y_oSyxw" base_Element="_20_AsLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_20_As7hDEe2QK54y_oSyxw" base_Element="_20_AsLhDEe2QK54y_oSyxw">
    <annotations xmi:id="_20_AtLhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_20_nwLhDEe2QK54y_oSyxw" base_Element="_20_AtbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_20_nw7hDEe2QK54y_oSyxw" base_Element="_20_nwbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_20_nxLhDEe2QK54y_oSyxw" base_Element="_20_nwbhDEe2QK54y_oSyxw">
    <annotations xmi:id="_20_nxbhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_21AO0LhDEe2QK54y_oSyxw" base_Element="_20_nxrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_21AO07hDEe2QK54y_oSyxw" base_Element="_21AO0bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_21AO1LhDEe2QK54y_oSyxw" base_Element="_21AO0bhDEe2QK54y_oSyxw">
    <annotations xmi:id="_21AO1bhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_21A14LhDEe2QK54y_oSyxw" base_Element="_21AO1rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_21A147hDEe2QK54y_oSyxw" base_Element="_21A14bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_21Bc8LhDEe2QK54y_oSyxw" base_Element="_21A14bhDEe2QK54y_oSyxw">
    <annotations xmi:id="_21Bc8bhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_21CEALhDEe2QK54y_oSyxw" base_Element="_21Bc8rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_21CEA7hDEe2QK54y_oSyxw" base_Element="_21CEAbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_21CEBLhDEe2QK54y_oSyxw" base_Element="_21CEAbhDEe2QK54y_oSyxw">
    <annotations xmi:id="_21CEBbhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_21CrELhDEe2QK54y_oSyxw" base_Element="_21CEBrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_21DSILhDEe2QK54y_oSyxw" base_Element="_21CrEbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_21DSIbhDEe2QK54y_oSyxw" base_Element="_21CrEbhDEe2QK54y_oSyxw">
    <annotations xmi:id="_21DSIrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_21IKoLhDEe2QK54y_oSyxw" base_Element="_21HjkLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_21IKorhDEe2QK54y_oSyxw" base_Element="_21IKobhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_21IxsbhDEe2QK54y_oSyxw" base_Element="_21IxsLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_21Ixs7hDEe2QK54y_oSyxw" base_Element="_21IxsrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21J_0rhDEe2QK54y_oSyxw" genericsValue="Integer" base_Element="_21J_0LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_21NDIbhDEe2QK54y_oSyxw" base_Element="_21NDILhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_21ORQLhDEe2QK54y_oSyxw" base_Element="_21NqMrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_21ORQrhDEe2QK54y_oSyxw" base_Element="_21ORQbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_21ORRLhDEe2QK54y_oSyxw" base_Element="_21ORQ7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_21ORRrhDEe2QK54y_oSyxw" base_Element="_21ORRbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_21O4ULhDEe2QK54y_oSyxw" base_Element="_21ORR7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_21QGcbhDEe2QK54y_oSyxw" base_Element="_21QGcLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_21QGc7hDEe2QK54y_oSyxw" base_Element="_21QGcrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_21QtgLhDEe2QK54y_oSyxw" base_Element="_21QGdLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_21QtgrhDEe2QK54y_oSyxw" base_Element="_21QtgbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_21RUkLhDEe2QK54y_oSyxw" base_Element="_21Qtg7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_21TJwbhDEe2QK54y_oSyxw" base_Element="_21TJwLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_21TJw7hDEe2QK54y_oSyxw" base_Element="_21TJwrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21f-EbhDEe2QK54y_oSyxw" genericsValue="T, E" base_Element="_21f-ELhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_21hMMLhDEe2QK54y_oSyxw" base_Element="_21glIbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21hMMrhDEe2QK54y_oSyxw" genericsValue="Activation" base_Element="_21hMMbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21iaULhDEe2QK54y_oSyxw" genericsValue="Edge" base_Element="_21hzQbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21jBYLhDEe2QK54y_oSyxw" genericsValue="String" base_Element="_21iaUrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21jocLhDEe2QK54y_oSyxw" genericsValue="String" base_Element="_21jBYrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21kPgLhDEe2QK54y_oSyxw" genericsValue="ScheduleTime" base_Element="_21jocrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21ldoLhDEe2QK54y_oSyxw" genericsValue="String" base_Element="_21k2kLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21n54LhDEe2QK54y_oSyxw" genericsValue="Edge" base_Element="_21nS0rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21n54bhDEe2QK54y_oSyxw" genericsValue="String" base_Element="_21nS07hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21og87hDEe2QK54y_oSyxw" genericsValue="String" base_Element="_21og8rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21pIALhDEe2QK54y_oSyxw" genericsValue="String" base_Element="_21og9bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21pvELhDEe2QK54y_oSyxw" genericsValue="Activation" base_Element="_21pIAbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_21qWILhDEe2QK54y_oSyxw" base_Element="_21pvEbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21qWIbhDEe2QK54y_oSyxw" genericsValue="Node" base_Element="_21pvErhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_21qWIrhDEe2QK54y_oSyxw" base_Element="_21pvEbhDEe2QK54y_oSyxw">
    <annotations xmi:id="_21qWI7hDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_21q9MLhDEe2QK54y_oSyxw" genericsValue="T" base_Element="_21qWJLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_21q9MrhDEe2QK54y_oSyxw" base_Element="_21q9MbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_21rkQrhDEe2QK54y_oSyxw" base_Element="_21q9M7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_21rkQ7hDEe2QK54y_oSyxw" base_Element="_21q9M7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_21rkRLhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_21sLUbhDEe2QK54y_oSyxw" genericsValue="String" base_Element="_21sLULhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21syYLhDEe2QK54y_oSyxw" genericsValue="Edge" base_Element="_21sLUrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21uAgbhDEe2QK54y_oSyxw" genericsValue="Flow" base_Element="_21uAgLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21vOoLhDEe2QK54y_oSyxw" genericsValue="Node" base_Element="_21unlLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21vOo7hDEe2QK54y_oSyxw" genericsValue="Integer" base_Element="_21vOorhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_21xq4bhDEe2QK54y_oSyxw" base_Element="_21xq4LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21y5AbhDEe2QK54y_oSyxw" genericsValue="T" base_Element="_21y5ALhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_21zgELhDEe2QK54y_oSyxw" base_Element="_21y5ArhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_21zgEbhDEe2QK54y_oSyxw" base_Element="_21y5ArhDEe2QK54y_oSyxw">
    <annotations xmi:id="_21zgErhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_21zgFLhDEe2QK54y_oSyxw" genericsValue="T" base_Element="_21zgE7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_210HJLhDEe2QK54y_oSyxw" base_Element="_210HILhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_210HJbhDEe2QK54y_oSyxw" base_Element="_210HILhDEe2QK54y_oSyxw">
    <annotations xmi:id="_210HJrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_210uMLhDEe2QK54y_oSyxw" genericsValue="Node" base_Element="_210HJ7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_211VQbhDEe2QK54y_oSyxw" genericsValue="T" base_Element="_211VQLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2118UbhDEe2QK54y_oSyxw" base_Element="_211VQrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_2118UrhDEe2QK54y_oSyxw" base_Element="_211VQrhDEe2QK54y_oSyxw">
    <annotations xmi:id="_2118U7hDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_212jZLhDEe2QK54y_oSyxw" genericsValue="Node" base_Element="_212jYrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Array xmi:id="_213KcrhDEe2QK54y_oSyxw" base_Element="_212jZbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_213Kc7hDEe2QK54y_oSyxw" genericsValue="Node" base_Element="_212jZrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_213xgbhDEe2QK54y_oSyxw" base_Element="_213xgLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_214YkrhDEe2QK54y_oSyxw" genericsValue="T" base_Element="_214YkbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_214_orhDEe2QK54y_oSyxw" base_Element="_214Yk7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_214_o7hDEe2QK54y_oSyxw" base_Element="_214Yk7hDEe2QK54y_oSyxw">
    <annotations xmi:id="_214_pLhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_215msLhDEe2QK54y_oSyxw" base_Element="_214_pbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_217b4LhDEe2QK54y_oSyxw" base_Element="_21600rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_218qAbhDEe2QK54y_oSyxw" genericsValue="T" base_Element="_218qALhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_219RFLhDEe2QK54y_oSyxw" base_Element="_219RELhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_219RFbhDEe2QK54y_oSyxw" base_Element="_219RELhDEe2QK54y_oSyxw">
    <annotations xmi:id="_219RFrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_21_GR7hDEe2QK54y_oSyxw" genericsValue="T" base_Element="_21_GRrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_21_tVbhDEe2QK54y_oSyxw" genericsValue="T" base_Element="_21_tUbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_22AUYLhDEe2QK54y_oSyxw" genericsValue="T" base_Element="_21_tV7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_22AUYbhDEe2QK54y_oSyxw" genericsValue="T" base_Element="_21_tWLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_22BihrhDEe2QK54y_oSyxw" genericsValue="E" base_Element="_22BihbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_22CJkbhDEe2QK54y_oSyxw" base_Element="_22CJkLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_22CwoLhDEe2QK54y_oSyxw" base_Element="_22CJkrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:TypeParameterDeclaration xmi:id="_22DXsrhDEe2QK54y_oSyxw" typeParameterDeclarationValue="T extends VisualizationObject" base_Operation="_22DXsLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22DXs7hDEe2QK54y_oSyxw" base_Element="_22DXsLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_22GbALhDEe2QK54y_oSyxw" base_Element="_22Fz8bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22HpI7hDEe2QK54y_oSyxw" base_Element="_22HpILhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_22HpJLhDEe2QK54y_oSyxw" genericsValue="Node" base_Element="_22HpIbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Annotations xmi:id="_22IQMLhDEe2QK54y_oSyxw" base_Element="_22HpILhDEe2QK54y_oSyxw">
    <annotations xmi:id="_22IQMbhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_22L6kLhDEe2QK54y_oSyxw" genericsValue="Integer" base_Element="_22LTg7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_22Pk8LhDEe2QK54y_oSyxw" base_Element="_22O94LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_22Yu4LhDEe2QK54y_oSyxw" genericsValue="String" base_Element="_22YH0rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_22Yu4rhDEe2QK54y_oSyxw" genericsValue="Edge" base_Element="_22Yu4bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_22ZV8LhDEe2QK54y_oSyxw" genericsValue="ScheduleTime" base_Element="_22Yu47hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22Z9A7hDEe2QK54y_oSyxw" base_Element="_22Z9ArhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22akEbhDEe2QK54y_oSyxw" base_Element="_22akELhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22akE7hDEe2QK54y_oSyxw" base_Element="_22akErhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22bLIrhDEe2QK54y_oSyxw" base_Element="_22bLIbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22bLJrhDEe2QK54y_oSyxw" base_Element="_22bLJbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22byMLhDEe2QK54y_oSyxw" base_Element="_22bLJ7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_22byMrhDEe2QK54y_oSyxw" genericsValue="ChannelSet" base_Element="_22byMbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22byM7hDEe2QK54y_oSyxw" base_Element="_22byMbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_22cZQ7hDEe2QK54y_oSyxw" genericsValue="Edge" base_Element="_22cZQrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22dAULhDEe2QK54y_oSyxw" base_Element="_22cZQrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22dAUrhDEe2QK54y_oSyxw" base_Element="_22dAUbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_22dnYLhDEe2QK54y_oSyxw" genericsValue="String" base_Element="_22dAU7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22dnYbhDEe2QK54y_oSyxw" base_Element="_22dAU7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22dnY7hDEe2QK54y_oSyxw" base_Element="_22dnYrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22eOcLhDEe2QK54y_oSyxw" base_Element="_22dnZLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22eOcrhDEe2QK54y_oSyxw" base_Element="_22eOcbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22e1gbhDEe2QK54y_oSyxw" base_Element="_22e1gLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22e1g7hDEe2QK54y_oSyxw" base_Element="_22e1grhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22e1hbhDEe2QK54y_oSyxw" base_Element="_22e1hLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22gDo7hDEe2QK54y_oSyxw" base_Element="_22gDorhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22h41rhDEe2QK54y_oSyxw" base_Element="_22h41LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22if4LhDEe2QK54y_oSyxw" base_Element="_22h417hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22if4rhDEe2QK54y_oSyxw" base_Element="_22if4bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_22if5LhDEe2QK54y_oSyxw" genericsValue="Node" base_Element="_22if47hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22if5bhDEe2QK54y_oSyxw" base_Element="_22if47hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_22jG8LhDEe2QK54y_oSyxw" genericsValue="Integer" base_Element="_22if5rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22jG8bhDEe2QK54y_oSyxw" base_Element="_22if5rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_22juALhDEe2QK54y_oSyxw" genericsValue="Edge" base_Element="_22jG8rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22juAbhDEe2QK54y_oSyxw" base_Element="_22jG8rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22juA7hDEe2QK54y_oSyxw" base_Element="_22juArhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22juBbhDEe2QK54y_oSyxw" base_Element="_22juBLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22k8ILhDEe2QK54y_oSyxw" base_Element="_22kVGLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22k8IrhDEe2QK54y_oSyxw" base_Element="_22k8IbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22k8JLhDEe2QK54y_oSyxw" base_Element="_22k8I7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22k8JrhDEe2QK54y_oSyxw" base_Element="_22k8JbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22ljMLhDEe2QK54y_oSyxw" base_Element="_22k8J7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22ljMrhDEe2QK54y_oSyxw" base_Element="_22ljMbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22ljNLhDEe2QK54y_oSyxw" base_Element="_22ljM7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22mKQbhDEe2QK54y_oSyxw" base_Element="_22mKQLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22mKQ7hDEe2QK54y_oSyxw" base_Element="_22mKQrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22mxULhDEe2QK54y_oSyxw" base_Element="_22mKRrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22mxU7hDEe2QK54y_oSyxw" base_Element="_22mxUrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22mxVrhDEe2QK54y_oSyxw" base_Element="_22mxVLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22nYYrhDEe2QK54y_oSyxw" base_Element="_22nYYLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22nYZLhDEe2QK54y_oSyxw" base_Element="_22nYY7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22nYZ7hDEe2QK54y_oSyxw" base_Element="_22nYZrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22n_cbhDEe2QK54y_oSyxw" base_Element="_22n_cLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22n_c7hDEe2QK54y_oSyxw" base_Element="_22n_crhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22n_dbhDEe2QK54y_oSyxw" base_Element="_22n_dLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_22n_d7hDEe2QK54y_oSyxw" genericsValue="String, Integer" base_Element="_22n_drhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22omgLhDEe2QK54y_oSyxw" base_Element="_22n_drhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22omhrhDEe2QK54y_oSyxw" base_Element="_22omhbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_22pNlLhDEe2QK54y_oSyxw" genericsValue="Edge" base_Element="_22pNk7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22qbsLhDEe2QK54y_oSyxw" base_Element="_22p0qLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22qbsrhDEe2QK54y_oSyxw" base_Element="_22qbsbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22qbt7hDEe2QK54y_oSyxw" base_Element="_22qbs7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22rCxLhDEe2QK54y_oSyxw" base_Element="_22rCwLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22rCxrhDEe2QK54y_oSyxw" base_Element="_22rCxbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_22rp0LhDEe2QK54y_oSyxw" genericsValue="Activation" base_Element="_22rCx7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22rp0bhDEe2QK54y_oSyxw" base_Element="_22rCx7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_22rp07hDEe2QK54y_oSyxw" genericsValue="String, Integer" base_Element="_22rp0rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22s38LhDEe2QK54y_oSyxw" base_Element="_22rp0rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22s38rhDEe2QK54y_oSyxw" base_Element="_22s38bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22uGErhDEe2QK54y_oSyxw" base_Element="_22uGEbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22uGFLhDEe2QK54y_oSyxw" base_Element="_22uGE7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22uGFrhDEe2QK54y_oSyxw" base_Element="_22uGFbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22utIbhDEe2QK54y_oSyxw" base_Element="_22utILhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22utI7hDEe2QK54y_oSyxw" base_Element="_22utIrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22utJbhDEe2QK54y_oSyxw" base_Element="_22utJLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22utJ7hDEe2QK54y_oSyxw" base_Element="_22utJrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22utKbhDEe2QK54y_oSyxw" base_Element="_22utKLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22vUMbhDEe2QK54y_oSyxw" base_Element="_22vUMLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22vUM7hDEe2QK54y_oSyxw" base_Element="_22vUMrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22vUNbhDEe2QK54y_oSyxw" base_Element="_22vUNLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22vUN7hDEe2QK54y_oSyxw" base_Element="_22vUNrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22vUObhDEe2QK54y_oSyxw" base_Element="_22vUOLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22wiU7hDEe2QK54y_oSyxw" base_Element="_22wiUrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22wiVbhDEe2QK54y_oSyxw" base_Element="_22wiVLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22wiV7hDEe2QK54y_oSyxw" base_Element="_22wiVrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22xwcLhDEe2QK54y_oSyxw" base_Element="_22xJarhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22xwdLhDEe2QK54y_oSyxw" base_Element="_22xwc7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22xwdrhDEe2QK54y_oSyxw" base_Element="_22xwdbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22yXhLhDEe2QK54y_oSyxw" base_Element="_22yXg7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22yXhrhDEe2QK54y_oSyxw" base_Element="_22yXhbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22yXibhDEe2QK54y_oSyxw" base_Element="_22yXh7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22yXi7hDEe2QK54y_oSyxw" base_Element="_22yXirhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22y-kLhDEe2QK54y_oSyxw" base_Element="_22yXjLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22y-krhDEe2QK54y_oSyxw" base_Element="_22y-kbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22y-lLhDEe2QK54y_oSyxw" base_Element="_22y-k7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22y-lrhDEe2QK54y_oSyxw" base_Element="_22y-lbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_220zwLhDEe2QK54y_oSyxw" base_Element="_220MsLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_220zwrhDEe2QK54y_oSyxw" base_Element="_220zwbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_220zxLhDEe2QK54y_oSyxw" base_Element="_220zw7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_220zxrhDEe2QK54y_oSyxw" base_Element="_220zxbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_221a0bhDEe2QK54y_oSyxw" base_Element="_221a0LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_221a07hDEe2QK54y_oSyxw" base_Element="_221a0rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_222B4LhDEe2QK54y_oSyxw" base_Element="_221a1LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_222B47hDEe2QK54y_oSyxw" base_Element="_222B4bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_222B5bhDEe2QK54y_oSyxw" base_Element="_222B5LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_222o8bhDEe2QK54y_oSyxw" base_Element="_222o8LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_222o87hDEe2QK54y_oSyxw" base_Element="_222o8rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_223QALhDEe2QK54y_oSyxw" base_Element="_222o9LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Array xmi:id="_223QBbhDEe2QK54y_oSyxw" dimensions="2" base_Element="_223QA7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2233ELhDEe2QK54y_oSyxw" base_Element="_223QA7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2233ErhDEe2QK54y_oSyxw" base_Element="_2233EbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_224eILhDEe2QK54y_oSyxw" base_Element="_2233E7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_225FPbhDEe2QK54y_oSyxw" base_Element="_225FO7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_225sQbhDEe2QK54y_oSyxw" base_Element="_225sQLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_225sQ7hDEe2QK54y_oSyxw" genericsValue="InstructionParameters" base_Element="_225sQrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_226TULhDEe2QK54y_oSyxw" base_Element="_225sQrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_226TUrhDEe2QK54y_oSyxw" base_Element="_226TUbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2266YLhDEe2QK54y_oSyxw" base_Element="_226TU7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2266YrhDEe2QK54y_oSyxw" base_Element="_2266YbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2266ZLhDEe2QK54y_oSyxw" base_Element="_2266Y7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_227hcLhDEe2QK54y_oSyxw" base_Element="_2266ZbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_227hcrhDEe2QK54y_oSyxw" base_Element="_227hcbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_227hdLhDEe2QK54y_oSyxw" base_Element="_227hc7hDEe2QK54y_oSyxw">
    <associatedElement xmi:type="uml:Operation" xmi:id="_227hdbhDEe2QK54y_oSyxw" name="getNumChannels" method="_23b30LhDEe2QK54y_oSyxw">
      <ownedParameter xmi:id="_228IgLhDEe2QK54y_oSyxw" direction="return">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
      </ownedParameter>
    </associatedElement>
  </UMLLabProfile:LegacyStyledElement>
  <UMLLabProfile:Annotations xmi:id="_228IgbhDEe2QK54y_oSyxw" base_Element="_227hdbhDEe2QK54y_oSyxw">
    <annotations xmi:id="_228IgrhDEe2QK54y_oSyxw" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_228IhbhDEe2QK54y_oSyxw" base_Element="_228Ig7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_228vkbhDEe2QK54y_oSyxw" base_Element="_228IhrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_229WrLhDEe2QK54y_oSyxw" base_Element="_229WqrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_2299tLhDEe2QK54y_oSyxw" base_Element="_2299srhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22-kwLhDEe2QK54y_oSyxw" base_Element="_2299t7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_22-kwrhDEe2QK54y_oSyxw" genericsValue="String" base_Element="_22-kwbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_22-kxbhDEe2QK54y_oSyxw" genericsValue="String" base_Element="_22-kxLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22_y5bhDEe2QK54y_oSyxw" base_Element="_22_y5LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_22_y57hDEe2QK54y_oSyxw" base_Element="_22_y5rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23AZ8LhDEe2QK54y_oSyxw" base_Element="_22_y6LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23BBCLhDEe2QK54y_oSyxw" base_Element="_23BBB7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23BoEbhDEe2QK54y_oSyxw" base_Element="_23BoELhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23BoE7hDEe2QK54y_oSyxw" base_Element="_23BoErhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23CPILhDEe2QK54y_oSyxw" base_Element="_23BoFLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23CPIrhDEe2QK54y_oSyxw" base_Element="_23CPIbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23CPJLhDEe2QK54y_oSyxw" base_Element="_23CPI7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23C2MbhDEe2QK54y_oSyxw" base_Element="_23C2MLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23C2M7hDEe2QK54y_oSyxw" base_Element="_23C2MrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23C2NbhDEe2QK54y_oSyxw" base_Element="_23C2NLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23C2N7hDEe2QK54y_oSyxw" base_Element="_23C2NrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23DdQbhDEe2QK54y_oSyxw" base_Element="_23DdQLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23DdQ7hDEe2QK54y_oSyxw" base_Element="_23DdQrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23DdRbhDEe2QK54y_oSyxw" base_Element="_23DdRLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23DdR7hDEe2QK54y_oSyxw" base_Element="_23DdRrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23DdSrhDEe2QK54y_oSyxw" base_Element="_23DdSLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23EEULhDEe2QK54y_oSyxw" base_Element="_23DdS7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23EEUrhDEe2QK54y_oSyxw" base_Element="_23EEUbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23EEVLhDEe2QK54y_oSyxw" base_Element="_23EEU7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23FScbhDEe2QK54y_oSyxw" base_Element="_23FScLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23FSdrhDEe2QK54y_oSyxw" base_Element="_23FSdbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23FSeLhDEe2QK54y_oSyxw" base_Element="_23FSd7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23F5gLhDEe2QK54y_oSyxw" base_Element="_23FSebhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_23F5hrhDEe2QK54y_oSyxw" genericsValue="Integer" base_Element="_23F5hbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_23F5h7hDEe2QK54y_oSyxw" base_Element="_23F5hbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Generics xmi:id="_23GgkLhDEe2QK54y_oSyxw" genericsValue="SchedulableObject" base_Element="_23F5iLhDEe2QK54y_oSyxw"/>
  <uml:OpaqueBehavior xmi:id="_23b30LhDEe2QK54y_oSyxw" name="getNumChannels" specification="_227hdbhDEe2QK54y_oSyxw">
    <ownedParameter xmi:id="_23b30bhDEe2QK54y_oSyxw" direction="return">
      <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
    </ownedParameter>
    <language>java</language>
    <body>return numChannels;&#xD;
  </body>
  </uml:OpaqueBehavior>
  <UMLLabProfile:Reference xmi:id="_238OErhDEe2QK54y_oSyxw" base_Element="_238OELhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_238OFbhDEe2QK54y_oSyxw" base_Element="_238OE7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_2381ILhDEe2QK54y_oSyxw" base_Element="_238OFrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_2381I7hDEe2QK54y_oSyxw" base_Element="_2381IbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_2381JrhDEe2QK54y_oSyxw" base_Element="_2381JLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_239cMLhDEe2QK54y_oSyxw" base_Element="_2381J7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_239cM7hDEe2QK54y_oSyxw" base_Element="_239cMbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_239cNrhDEe2QK54y_oSyxw" base_Element="_239cNLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_23-DQLhDEe2QK54y_oSyxw" base_Element="_239cN7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_23-DQ7hDEe2QK54y_oSyxw" base_Element="_23-DQbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_23-DRrhDEe2QK54y_oSyxw" base_Element="_23-DRLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_23-qULhDEe2QK54y_oSyxw" base_Element="_23-DR7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_23-qU7hDEe2QK54y_oSyxw" base_Element="_23-qUbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_23_RYLhDEe2QK54y_oSyxw" base_Element="_23-qVLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_23_RY7hDEe2QK54y_oSyxw" base_Element="_23_RYbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_23_4cbhDEe2QK54y_oSyxw" base_Element="_23_RZLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_23_4dLhDEe2QK54y_oSyxw" base_Element="_23_4crhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24AfgrhDEe2QK54y_oSyxw" base_Element="_24AfgLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24AfhbhDEe2QK54y_oSyxw" base_Element="_24Afg7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24AfiLhDEe2QK54y_oSyxw" base_Element="_24AfhrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24BGkLhDEe2QK54y_oSyxw" base_Element="_24AfibhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24BGk7hDEe2QK54y_oSyxw" base_Element="_24BGkbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24BGlrhDEe2QK54y_oSyxw" base_Element="_24BGlLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24BtoLhDEe2QK54y_oSyxw" base_Element="_24BGl7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24Bto7hDEe2QK54y_oSyxw" base_Element="_24BtobhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24BtprhDEe2QK54y_oSyxw" base_Element="_24BtpLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24BtqbhDEe2QK54y_oSyxw" base_Element="_24Btp7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24CUsLhDEe2QK54y_oSyxw" base_Element="_24BtqrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24CUs7hDEe2QK54y_oSyxw" base_Element="_24CUsbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24CUtrhDEe2QK54y_oSyxw" base_Element="_24CUtLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24CUubhDEe2QK54y_oSyxw" base_Element="_24CUt7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24C7wrhDEe2QK54y_oSyxw" base_Element="_24C7wLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24C7xbhDEe2QK54y_oSyxw" base_Element="_24C7w7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24C7yLhDEe2QK54y_oSyxw" base_Element="_24C7xrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24Di0LhDEe2QK54y_oSyxw" base_Element="_24C7ybhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24Di07hDEe2QK54y_oSyxw" base_Element="_24Di0bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24Di1rhDEe2QK54y_oSyxw" base_Element="_24Di1LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24Di2bhDEe2QK54y_oSyxw" base_Element="_24Di17hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24EJ4rhDEe2QK54y_oSyxw" base_Element="_24EJ4LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24EJ5bhDEe2QK54y_oSyxw" base_Element="_24EJ47hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24EJ6LhDEe2QK54y_oSyxw" base_Element="_24EJ5rhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24Ew8LhDEe2QK54y_oSyxw" base_Element="_24EJ6bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24Ew87hDEe2QK54y_oSyxw" base_Element="_24Ew8bhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24Ew9rhDEe2QK54y_oSyxw" base_Element="_24Ew9LhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24FYALhDEe2QK54y_oSyxw" base_Element="_24Ew97hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24FYA7hDEe2QK54y_oSyxw" base_Element="_24FYAbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24FYBrhDEe2QK54y_oSyxw" base_Element="_24FYBLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24FYCbhDEe2QK54y_oSyxw" base_Element="_24FYB7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24F_ErhDEe2QK54y_oSyxw" base_Element="_24F_ELhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24F_FbhDEe2QK54y_oSyxw" base_Element="_24F_E7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24F_GLhDEe2QK54y_oSyxw" base_Element="_24F_FrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24GmILhDEe2QK54y_oSyxw" base_Element="_24F_GbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24GmI7hDEe2QK54y_oSyxw" base_Element="_24GmIbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24GmJrhDEe2QK54y_oSyxw" base_Element="_24GmJLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24HNMLhDEe2QK54y_oSyxw" base_Element="_24GmJ7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24HNM7hDEe2QK54y_oSyxw" base_Element="_24HNMbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24HNNrhDEe2QK54y_oSyxw" base_Element="_24HNNLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24HNObhDEe2QK54y_oSyxw" base_Element="_24HNN7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24H0QLhDEe2QK54y_oSyxw" base_Element="_24HNOrhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24H0Q7hDEe2QK54y_oSyxw" base_Element="_24H0QbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24H0RrhDEe2QK54y_oSyxw" base_Element="_24H0RLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24IbULhDEe2QK54y_oSyxw" base_Element="_24H0R7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24IbU7hDEe2QK54y_oSyxw" base_Element="_24IbUbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24IbVrhDEe2QK54y_oSyxw" base_Element="_24IbVLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24JCYLhDEe2QK54y_oSyxw" base_Element="_24IbV7hDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24JpcLhDEe2QK54y_oSyxw" base_Element="_24JCYbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24Jpc7hDEe2QK54y_oSyxw" base_Element="_24JpcbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24KQgLhDEe2QK54y_oSyxw" base_Element="_24JpdLhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Reference xmi:id="_24KQg7hDEe2QK54y_oSyxw" base_Element="_24KQgbhDEe2QK54y_oSyxw"/>
  <UMLLabProfile:Patch xmi:id="_9eaLwLhDEe2QK54y_oSyxw" base_Element="_2o8IwLhDEe2QK54y_oSyxw" patchText="@@ -215,16 +215,193 @@&#xA; sts;%0D%0A%0D%0A&#xA;+  ChannelAnalysis(String/*No type specified*/ warp) %7B%0D%0A    this.program = warp.toProgram();%0D%0A    this.programTable = program.getSchedule();%0D%0A    conflictExists = false;%0D%0A  %7D%0D%0A%0D%0A&#xA;   Channe&#xA;" conflicting="false"/>
  <UMLLabProfile:Patch xmi:id="_9ebZ4LhDEe2QK54y_oSyxw" base_Element="_2o9W4LhDEe2QK54y_oSyxw" patchText="@@ -522,12 +522,195 @@&#xA; sis ca;%0D&#xA;+%0A%0D%0A  ChannelVisualization(String/*No type specified*/ warp) %7B%0D%0A    super(new FileManager(), warp, SOURCE_SUFFIX);%0D%0A    this.warp = warp;%0D%0A    this.ca = warp.toChannelAnalysis();%0D%0A  %7D%0D&#xA; %0A%7D%0D%0A&#xA;" conflicting="false"/>
  <UMLLabProfile:Patch xmi:id="_9ecA8LhDEe2QK54y_oSyxw" base_Element="_2pMAZLhDEe2QK54y_oSyxw" patchText="@@ -351,26 +351,24 @@&#xA; um EdgeState&#xA;-()&#xA;  %7B%0D%0A%09%09RELEAS&#xA;" conflicting="false"/>
  <UMLLabProfile:Patch xmi:id="_9e5T8LhDEe2QK54y_oSyxw" base_Element="_2pka4LhDEe2QK54y_oSyxw" patchText="@@ -258,265 +258,550 @@&#xA; %22;%0D%0A&#xA;-public static String FLOW_SEPARATOR = %22******************************%5Cn%22;%0D%0A  private Description latencyReport;%0D%0A  private Program p&#xA;+  private static String FLOW_SEPARATOR = %22******************************%5Cn%22;%0D%0A  private Description latencyReport;%0D%0A  private Program program;%0D%0A  private WorkLoad workload;%0D%0A  private ProgramSchedule programTable;%0D%0A  private HashMap%3CString, Integer%3E nodeIndex;%0D%0A%0D%0A  LatencyAnalysis(String/*No type specified*/ warp) %7B%0D%0A    this.latencyReport = new Description();%0D%0A    this.program = warp.toP&#xA; rogram&#xA;+()&#xA; ;%0D%0A  &#xA;-private WorkL&#xA;+  this.workl&#xA; oad &#xA;-w&#xA;+= warp.toW&#xA; orkload&#xA;+()&#xA; ;%0D%0A  &#xA;-private ProgramSchedule programTable;%0D%0A  private HashMap%3CString, Integer%3E nodeIndex;&#xA;+  this.programTable = program.getSchedule();%0D%0A    this.nodeIndex = program.getNodeMapIndex();%0D%0A  %7D&#xA; %0D%0A%0D%0A&#xA;" conflicting="false"/>
  <UMLLabProfile:Patch xmi:id="_9e6iELhDEe2QK54y_oSyxw" base_Element="_2pm3ILhDEe2QK54y_oSyxw" patchText="@@ -597,12 +597,195 @@&#xA; sis la;%0D&#xA;+%0A%0D%0A  LatencyVisualization(String/*No type specified*/ warp) %7B%0D%0A    super(new FileManager(), warp, SOURCE_SUFFIX);%0D%0A    this.warp = warp;%0D%0A    this.la = warp.toLatencyAnalysis();%0D%0A  %7D%0D&#xA; %0A%7D%0D%0A&#xA;" conflicting="false"/>
  <UMLLabProfile:Patch xmi:id="_9e7JILhDEe2QK54y_oSyxw" base_Element="_2p_RoLhDEe2QK54y_oSyxw" patchText="@@ -507,16 +507,606 @@&#xA; nesMet;%0D&#xA;+%0A%0D%0A%09/**%0D%0A%09 * %3Ch1%3ETakes an existing warp interface and converts it in into a program that%0D%0A%09 * can be visualized.%3C/h1%3E%0D%0A%09 * %0D%0A%09 * @param warp interface that will be used for visualization%0D%0A%09 */%0D%0A%09ProgramVisualization(String/*No type specified*/ warp) %7B%0D%0A%09%09super(new FileManager(), warp, SOURCE_SUFFIX);%0D%0A%09%09this.program = warp.toProgram();%0D%0A%09%09this.sourceCode = program.getSchedule();%0D%0A%09%09this.deadlinesMet = warp.deadlinesMet();%0D%0A%09%7D%0D%0A%0D%0A%09/**%0D%0A%09 * %3Ch1%3ECreates a Gui with a title, header, and data that can be visualized.%3C/h1%3E%0D%0A%09 * %0D%0A%09 * @return a gui visualization listing all above info.%0D%0A%09 */%0D&#xA; %0A%09@Overr&#xA;" conflicting="false"/>
  <UMLLabProfile:Patch xmi:id="_9e8XQLhDEe2QK54y_oSyxw" base_Element="_2qHNcLhDEe2QK54y_oSyxw" patchText="@@ -597,11 +597,4282 @@&#xA; is ra;%0D%0A&#xA;+%09%0D%0A%09ReliabilityVisualization(String/*No type specified*/ warp) %7B%0D%0A%09%09super(new FileManager(), warp, SOURCE_SUFFIX);%0D%0A%09%09this.warp = warp;%0D%0A%09%09this.ra = warp.toReliabilityAnalysis();%0D%0A%09%7D%0D%0A%09%0D%0A/* File Visualization for workload defined in Example.txt follows. Note%0D%0A * that your Authentication tag will be different from this example. The%0D%0A * rest of your output in the file ExamplePriority-0.9M-0.99E2E.ra%0D%0A * should match this output, where %5Ctab characters are used a column%0D%0A * delimiters.%0D%0A// Course CS2820 Authentication Tag: r3XWfL9ywZO36jnWMZcKC2KTB2hUCm3AQCGxREWbZRoSn4/XdrQ/QuNQvtzAxeSSw55bWTXwbI9VI0Om+mEhNd4JC2UzrBBrXnHmsbPxbZ8=%0D%0AReliability Analysis for graph Example created with the following parameters:%0D%0AScheduler Name:%09Priority%0D%0AM:%090.9%0D%0AE2E:%090.99%0D%0AnChannels:%0916%0D%0AF0:A%09F0:B%09F0:C%09F1:C%09F1:B%09F1:A%0D%0A1.0%090.9%090.0%091.0%090.0%090.0%0D%0A1.0%090.99%090.81%091.0%090.0%090.0%0D%0A1.0%090.999%090.972%091.0%090.0%090.0%0D%0A1.0%090.999%090.9963%091.0%090.0%090.0%0D%0A1.0%090.999%090.9963%091.0%090.9%090.0%0D%0A1.0%090.999%090.9963%091.0%090.99%090.81%0D%0A1.0%090.999%090.9963%091.0%090.999%090.972%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A1.0%090.999%090.9963%091.0%090.999%090.9963%0D%0A*/%0D%0A&#xA; %7D%0D%0A&#xA;" conflicting="false"/>
  <UMLLabProfile:Patch xmi:id="_9e8-ULhDEe2QK54y_oSyxw" base_Element="_2qY6QLhDEe2QK54y_oSyxw" patchText="@@ -113,18 +113,16 @@&#xA; eChoices&#xA;-()&#xA;  %7B%0D%0A%09   &#xA;" conflicting="false"/>
  <UMLLabProfile:Patch xmi:id="_9e9lYLhDEe2QK54y_oSyxw" base_Element="_2qckobhDEe2QK54y_oSyxw" patchText="@@ -145,26 +145,24 @@&#xA; ystemChoices&#xA;-()&#xA;  %7B%0D%0A    SOUR&#xA;@@ -284,18 +284,16 @@&#xA; dChoices&#xA;-()&#xA;  %7B%0D%0A    &#xA;" conflicting="false"/>
  <UMLLabProfile:Patch xmi:id="_9e-McLhDEe2QK54y_oSyxw" base_Element="_2qfA4bhDEe2QK54y_oSyxw" patchText="@@ -357,16 +357,241 @@&#xA; ory %7B%0D%0A%09&#xA;+%0D%0A%09public static Visualization createProgramVisualization(String/*No type specified*/ warp, %0D%0A%09%09%09String outputDirectory, SystemChoices choice) %7B%0D%0A%09%09return new VisualizationImplementation(warp, outputDirectory, choice);%0D%0A%09%7D%0D%0A%09&#xA; public s&#xA;" conflicting="false"/>
  <UMLLabProfile:Patch xmi:id="_9e-zgLhDEe2QK54y_oSyxw" base_Element="_2qfn8LhDEe2QK54y_oSyxw" patchText="@@ -500,24 +500,891 @@&#xA; nObject;%0D%0A%0D%0A&#xA;+%09/**%0D%0A%09 * Initializes a new visualization by taking a warp interface, Output Directory%0D%0A%09 * and a SystemChoices enum and uses them to create a file name and%0D%0A%09 * visualization.%0D%0A%09 * %0D%0A%09 * @param warp            interface in which workload will be retrieved%0D%0A%09 * @param outputDirectory a string representing the output directory for file%0D%0A%09 *                        name%0D%0A%09 * @param choice          the choice in which the user decides for creating the%0D%0A%09 *                        visualization%0D%0A%09 */%0D%0A%09public VisualizationImplementation(String/*No type specified*/ warp, String outputDirectory, SystemChoices choice) %7B%0D%0A%09%09this.fm = new FileManager();%0D%0A%09%09this.warp = warp;%0D%0A%09%09inputFileName = warp.toWorkload().getInputFileName();%0D%0A%09%09this.fileNameTemplate = createFileNameTemplate(outputDirectory);%0D%0A%09%09visualizationObject = null;%0D%0A%09%09createVisualization(choice);%0D%0A%09%7D%0D%0A%0D%0A&#xA; %09/**%0D%0A%09 * In&#xA;" conflicting="false"/>
  <UMLLabProfile:Patch xmi:id="_9fDE8LhDEe2QK54y_oSyxw" base_Element="_2rJvQLhDEe2QK54y_oSyxw" patchText="@@ -8973,32 +8973,4060 @@&#xA; %09%09%7D%0D%0A%09%09%7D%0D%0A%09%7D%0D%0A%0D%0A&#xA;+%09/**%0D%0A%09 * %3Ch1%3ECreates a visualization for a WarpInterface%3C/h1%3E%0D%0A%09 * %3Cp%3E%0D%0A%09 * Puts the visualization in the the output folder directory. The type of%0D%0A%09 * visualization is determined by the choice object that is passed in.%0D%0A%09 * %3C/p%3E%0D%0A%09 * %0D%0A%09 * @param warp   a WarpInteface probably a WarpSystem class%0D%0A%09 * @param choice An item from the SystemChoices enum that specifies what%0D%0A%09 *               visualization to create.%0D%0A%09 */%0D%0A%09private static void visualize(String/*No type specified*/ warp, SystemChoices choice) %7B%0D%0A%09%09var viz = VisualizationFactory.createProgramVisualization(warp, outputSubDirectory, choice);%0D%0A%09%09if (viz != null) %7B%0D%0A%09%09%09viz.toFile();%0D%0A%09%09%09if (guiRequested &amp;&amp; schedulerRequested) %7B%0D%0A%09%09%09%09/* Only display window when a specific scheduler has been requested */%0D%0A%09%09%09%09viz.toDisplay();%0D%0A%09%09%09%7D%0D%0A%09%09%7D%0D%0A%09%7D%0D%0A%0D%0A%09/**%0D%0A%09 * %3Ch1%3EVerifies a WarpInterface's performance.%3C/h1%3E%0D%0A%09 * %3Cp%3E%0D%0A%09 * Verifies the deadlines, reliabilities and if there are channel conflicts. If%0D%0A%09 * something is not verified a message will be printed to the console and in the%0D%0A%09 * case of a failure to verify the deadlines or the channel conflicts, a%0D%0A%09 * deadline/channel report will be created. If everything is successful a%0D%0A%09 * success message will be printed to the console.%0D%0A%09 * %3C/p%3E%0D%0A%09 * %0D%0A%09 * @param warp The WarpInterface to verify.%0D%0A%09 */%0D%0A%09private static void verifyPerformanceRequirements(String/*No type specified*/ warp) %7B%0D%0A%09%09verifyDeadlines(warp);%0D%0A%09%09verifyReliabilities(warp);%0D%0A%09%09verifyNoChannelConflicts(warp);%0D%0A%09%7D%0D%0A%0D%0A%09/**%0D%0A%09 * %3Ch1%3EChecks if the reliabilities are met on the WarpInterface.%3C/h1%3E%0D%0A%09 * %3Cp%3E%0D%0A%09 * NOTE: the reliability check is currently not implemented and will always%0D%0A%09 * return true. Prints the result of the check to the console.%0D%0A%09 * %3C/p%3E%0D%0A%09 * %0D%0A%09 * @param warp The WarpInterface to check the reliabilities of.%0D%0A%09 */%0D%0A%09private static void verifyReliabilities(String/*No type specified*/ warp) %7B%0D%0A%09%09if (schedulerSelected != ScheduleChoices.RTHART) %7B%0D%0A%09%09%09/* RealTime HART doesn't adhere to reliability targets */%0D%0A%09%09%09if (!warp.reliabilitiesMet()) %7B%0D%0A%09%09%09%09System.err.printf(%0D%0A%09%09%09%09%09%09%22%5Cn%5CtERROR: Not all flows meet the end-to-end %22 + %22reliability of %25s under %25s scheduling.%5Cn%22,%0D%0A%09%09%09%09%09%09String.valueOf(e2e), schedulerSelected.toString());%0D%0A%09%09%09%7D else if (verboseMode) %7B%0D%0A%09%09%09%09System.out.printf(%22%5Cn%5CtAll flows meet the end-to-end reliability %22 + %22of %25s under %25s scheduling.%5Cn%22,%0D%0A%09%09%09%09%09%09String.valueOf(e2e), schedulerSelected.toString());%0D%0A%09%09%09%7D%0D%0A%09%09%7D%0D%0A%09%7D%0D%0A%0D%0A%09/**%0D%0A%09 * %3Ch1%3EChecks to see if the deadlines are met on the warp interface%3C/h1%3E%0D%0A%09 * %3Cp%3E%0D%0A%09 * Returns false if there is at least one deadline missed. If a deadline is%0D%0A%09 * missed a deadline report file will be created. Result is printed to the%0D%0A%09 * console.%0D%0A%09 * %3C/p%3E%0D%0A%09 * %0D%0A%09 * @param warp The WarpInterface to check the deadlines of.%0D%0A%09 */%0D%0A%09private static void verifyDeadlines(String/*No type specified*/ warp) %7B%0D%0A%09%09if (!warp.deadlinesMet()) %7B%0D%0A%09%09%09System.err.printf(%22%5Cn%5CtERROR: Not all flows meet their deadlines under %25s scheduling.%5Cn%22,%0D%0A%09%09%09%09%09schedulerSelected.toString());%0D%0A%09%09%09visualize(warp, SystemChoices.DEADLINE_REPORT);%0D%0A%09%09%7D else if (verboseMode) %7B%0D%0A%09%09%09System.out.printf(%22%5Cn%5CtAll flows meet their deadlines under %25s scheduling.%5Cn%22,%0D%0A%09%09%09%09%09schedulerSelected.toString());%0D%0A%09%09%7D%0D%0A%09%7D%0D%0A%0D%0A%09/**%0D%0A%09 * %3Ch1%3EChecks if there is a channel conflict in the warp interface.%3C/h1%3E%0D%0A%09 * %3Cp%3E%0D%0A%09 * The result is printed to the console. If a channel analysis file was not%0D%0A%09 * originally requested, one will be made.%0D%0A%09 * %3C/p%3E%0D%0A%09 * %0D%0A%09 * @param warp The WarpInterface to check the channel conflicts of.%0D%0A%09 */%0D%0A%09private static void verifyNoChannelConflicts(String/*No type specified*/ warp) %7B%0D%0A%09%09if (warp.toChannelAnalysis().isChannelConflict()) %7B%0D%0A%09%09%09System.err.printf(%22%5Cn%5CtERROR: Channel conficts exists. See Channel Visualization for details.%5Cn%22);%0D%0A%09%09%09if (!caRequested) %7B // only need to create the visualization if not already requested%0D%0A%09%09%09%09visualize(warp, SystemChoices.CHANNEL);%0D%0A%09%09%09%7D%0D%0A%09%09%7D else if (verboseMode) %7B%0D%0A%09%09%09System.out.printf(%22%5Cn%5CtNo channel conflicts detected.%5Cn%22);%0D%0A%09%09%7D%0D%0A%09%7D%0D%0A%0D%0A&#xA; %09/**%0D%0A%09 * %3Ch1%3ESe&#xA;" conflicting="false"/>
</xmi:XMI>
