<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:PapyrusJava="http://www.eclipse.org/papyrus/PapyrusJava/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:standard="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
  <uml:Model xmi:id="_DSyzIGbSEeqrtc6dy-mPpg" name="papyrus_diagram">
    <packagedElement xmi:type="uml:Package" xmi:id="_4xi98HqFEeqm79lOJbMtXA" name="ClassDiagram">
      <packagedElement xmi:type="uml:Package" xmi:id="_heG7MGbSEeqrtc6dy-mPpg" name="ProfileInterfacesDiagram">
        <packagedElement xmi:type="uml:Package" xmi:id="_3-X6UHEeEeqUv4VtPCytLw" name="Comments">
          <ownedComment xmi:type="uml:Comment" xmi:id="_ptH-MGq7EeqA3aEy4whLSQ">
            <body>Incomplete Profile
The profile can be strict or non strict.
Voter's preferences : AntiSymmetric, Mutable or Immutable.</body>
          </ownedComment>
          <ownedComment xmi:type="uml:Comment" xmi:id="_4VNFEGq_EeqA3aEy4whLSQ">
            <body>Complete Profile
The profile can be strict or non strict.
Voter's preferences : AntiSymmetric, Mutable or Immutable.</body>
          </ownedComment>
          <ownedComment xmi:type="uml:Comment" xmi:id="_ZhqC4GrAEeqA3aEy4whLSQ">
            <body>Incomplete profile
The profile is strict.
Voter's preferences : AntiSymmetric</body>
          </ownedComment>
          <ownedComment xmi:type="uml:Comment" xmi:id="_30z4UGrAEeqA3aEy4whLSQ">
            <body>Complete Profile
The profile is strict.
Voter's preferences : AntiSymmetric</body>
          </ownedComment>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_bSaYgGbTEeqrtc6dy-mPpg" name="PrefenceInterfacesDiagram">
        <packagedElement xmi:type="uml:Package" xmi:id="_0LoBcHEeEeqUv4VtPCytLw" name="Comments">
          <ownedComment xmi:type="uml:Comment" xmi:id="_VJnSIG-CEeqlG4dRMAe-Kg">
            <body>CompletePreference + AntiSymmetricPreference</body>
          </ownedComment>
          <ownedComment xmi:type="uml:Comment" xmi:id="_UmQBEHEcEeqUv4VtPCytLw">
            <body>Set of alternatives</body>
          </ownedComment>
          <ownedComment xmi:type="uml:Comment" xmi:id="_kAObwHEcEeqUv4VtPCytLw">
            <body>We can add an alternative and relations between them</body>
          </ownedComment>
          <ownedComment xmi:type="uml:Comment" xmi:id="_tc-qEHEcEeqUv4VtPCytLw">
            <body>No two alternatives are equally prefered</body>
          </ownedComment>
          <ownedComment xmi:type="uml:Comment" xmi:id="_7BRVgHEcEeqUv4VtPCytLw">
            <body>We can't add an alternative or a new relation</body>
          </ownedComment>
          <ownedComment xmi:type="uml:Comment" xmi:id="__sGQcHEdEeqUv4VtPCytLw">
            <body>Immutable + Antisymmetric</body>
          </ownedComment>
          <ownedComment xmi:type="uml:Comment" xmi:id="_StXh8HEeEeqUv4VtPCytLw">
            <body>Mutable + Antisymmetric</body>
          </ownedComment>
          <ownedComment xmi:type="uml:Comment" xmi:id="_b8ZdUHEeEeqUv4VtPCytLw">
            <body>All the alternatives are comparable two by two</body>
          </ownedComment>
          <ownedComment xmi:type="uml:Comment" xmi:id="_TlIswIYtEeqCsLxU4w-iPA">
            <body>Linear + Mutable</body>
          </ownedComment>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_NQBPsIYrEeqCsLxU4w-iPA" name="MutableLinearPreference">
          <generalization xmi:type="uml:Generalization" xmi:id="_JgQHcIYtEeqCsLxU4w-iPA" general="_QKjvwGbSEeqrtc6dy-mPpg"/>
          <ownedOperation xmi:type="uml:Operation" xmi:id="_scaaQIYrEeqCsLxU4w-iPA" name="changeOrder" visibility="public">
            <ownedParameter xmi:type="uml:Parameter" xmi:id="_FVHZMIYsEeqCsLxU4w-iPA" name="a" type="_PFRisGbSEeqrtc6dy-mPpg"/>
            <ownedParameter xmi:type="uml:Parameter" xmi:id="_jh1RoIY7EeqCsLxU4w-iPA" name="position">
              <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:type="uml:Operation" xmi:id="_Mt4WgIYsEeqCsLxU4w-iPA" name="deleteAlternative">
            <ownedParameter xmi:type="uml:Parameter" xmi:id="_b4Yx0IYsEeqCsLxU4w-iPA" name="a" type="_PFRisGbSEeqrtc6dy-mPpg"/>
          </ownedOperation>
          <ownedOperation xmi:type="uml:Operation" xmi:id="_Ooea8IYsEeqCsLxU4w-iPA" name="addAlternative">
            <ownedParameter xmi:type="uml:Parameter" xmi:id="_qQSrgIYsEeqCsLxU4w-iPA" name="a" type="_PFRisGbSEeqrtc6dy-mPpg"/>
          </ownedOperation>
          <ownedOperation xmi:type="uml:Operation" xmi:id="_m6oZcIY7EeqCsLxU4w-iPA" name="reverse">
            <ownedParameter xmi:type="uml:Parameter" xmi:id="_ySis4IY7EeqCsLxU4w-iPA" name="a1" type="_PFRisGbSEeqrtc6dy-mPpg"/>
            <ownedParameter xmi:type="uml:Parameter" xmi:id="_2MuDcIY7EeqCsLxU4w-iPA" name="a2" type="_PFRisGbSEeqrtc6dy-mPpg"/>
          </ownedOperation>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_VLu44HgQEeqXB-JP2owAEA" name="GUIClassDiagram">
        <packagedElement xmi:type="uml:Package" xmi:id="_vd5ZkHqLEeqm79lOJbMtXA" name="Comments">
          <ownedComment xmi:type="uml:Comment" xmi:id="_xqxg0HqLEeqm79lOJbMtXA">
            <body>SOI = Strict Incomplete Profile&#xD;
</body>
          </ownedComment>
          <ownedComment xmi:type="uml:Comment" xmi:id="_8AFu0HqLEeqm79lOJbMtXA">
            <body>SOC = Strict Complete Profile&#xD;
</body>
          </ownedComment>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_DFzwcGz7Eeqxlu-Q2xgkvw" name="AdditionalType">
        <packagedElement xmi:type="uml:Package" xmi:id="_O-N4cGbSEeqrtc6dy-mPpg" name="importedTypes">
          <packagedElement xmi:type="uml:Package" xmi:id="_O-PtoGbSEeqrtc6dy-mPpg" name="org">
            <packagedElement xmi:type="uml:Package" xmi:id="_O-Q7wGbSEeqrtc6dy-mPpg" name="slf4j">
              <packagedElement xmi:type="uml:Class" xmi:id="_O-SJ4GbSEeqrtc6dy-mPpg" name="Logger"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="_PMIYoGbSEeqrtc6dy-mPpg" name="com">
            <packagedElement xmi:type="uml:Package" xmi:id="_PMLb8GbSEeqrtc6dy-mPpg" name="collect">
              <packagedElement xmi:type="uml:Class" xmi:id="_PMMDAGbSEeqrtc6dy-mPpg" name="ImmutableSet"/>
              <packagedElement xmi:type="uml:Class" xmi:id="_PPLFkGbSEeqrtc6dy-mPpg" name="ImmutableList"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="_PPYg8GbSEeqrtc6dy-mPpg" name="graph">
              <packagedElement xmi:type="uml:Class" xmi:id="_PPYg8WbSEeqrtc6dy-mPpg" name="ImmutableGraph"/>
              <packagedElement xmi:type="uml:Class" xmi:id="_PR_wEGbSEeqrtc6dy-mPpg" name="Graph"/>
              <packagedElement xmi:type="uml:Class" xmi:id="_PT1jIGbSEeqrtc6dy-mPpg" name="MutableGraph"/>
            </packagedElement>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="_PEL9kGbSEeqrtc6dy-mPpg" name="java">
          <packagedElement xmi:type="uml:Package" xmi:id="_PEPA4GbSEeqrtc6dy-mPpg" name="util">
            <packagedElement xmi:type="uml:Class" xmi:id="_PERdIGbSEeqrtc6dy-mPpg" name="Set"/>
            <packagedElement xmi:type="uml:Class" xmi:id="_POESUGbSEeqrtc6dy-mPpg" name="Map"/>
            <packagedElement xmi:type="uml:Class" xmi:id="_PPpmsGbSEeqrtc6dy-mPpg" name="List"/>
            <packagedElement xmi:type="uml:Class" xmi:id="_QrvxQmbSEeqrtc6dy-mPpg" name="NavigableSet"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="_PF6b4GbSEeqrtc6dy-mPpg" name="lang">
            <packagedElement xmi:type="uml:Class" xmi:id="_PF7qAGbSEeqrtc6dy-mPpg" name="String"/>
            <packagedElement xmi:type="uml:Class" xmi:id="_PGXH0GbSEeqrtc6dy-mPpg" name="Object"/>
            <packagedElement xmi:type="uml:Class" xmi:id="_PMryQGbSEeqrtc6dy-mPpg" name="Exception"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="_QsG9oGbSEeqrtc6dy-mPpg" name="io">
            <packagedElement xmi:type="uml:Class" xmi:id="_QsG9oWbSEeqrtc6dy-mPpg" name="OutputStream"/>
            <packagedElement xmi:type="uml:Interface" xmi:id="_QsKA8WbSEeqrtc6dy-mPpg" name="IOException"/>
            <packagedElement xmi:type="uml:Class" xmi:id="_SyD9gGbSEeqrtc6dy-mPpg" name="InputStream"/>
          </packagedElement>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_3EAygGz6Eeqxlu-Q2xgkvw" name="Resources">
        <packagedElement xmi:type="uml:Package" xmi:id="_PMoH4GbSEeqrtc6dy-mPpg" name="exceptions">
          <packagedElement xmi:type="uml:Class" xmi:id="_PMrLMGbSEeqrtc6dy-mPpg" name="BadFormatODSException" visibility="public">
            <generalization xmi:type="uml:Generalization" xmi:id="_PMx44GbSEeqrtc6dy-mPpg" general="_PMryQGbSEeqrtc6dy-mPpg"/>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PM7C0GbSEeqrtc6dy-mPpg" name="BadFormatODSException" specification="_PMzuEGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    super();&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PNFa4GbSEeqrtc6dy-mPpg" name="BadFormatODSException" specification="_PM-GIGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    super(message);&#xD;
</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PMzuEGbSEeqrtc6dy-mPpg" name="BadFormatODSException" visibility="public" method="_PM7C0GbSEeqrtc6dy-mPpg"/>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PM-GIGbSEeqrtc6dy-mPpg" name="BadFormatODSException" visibility="public" method="_PNFa4GbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PNEMwGbSEeqrtc6dy-mPpg" name="message" type="_PF7qAGbSEeqrtc6dy-mPpg"/>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_PNJsUGbSEeqrtc6dy-mPpg" name="DuplicateValueException" visibility="public">
            <generalization xmi:type="uml:Generalization" xmi:id="_PNMIkGbSEeqrtc6dy-mPpg" general="_PMryQGbSEeqrtc6dy-mPpg"/>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PNUEYGbSEeqrtc6dy-mPpg" name="DuplicateValueException" specification="_PNNWsGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    super();&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PNdOUGbSEeqrtc6dy-mPpg" name="DuplicateValueException" specification="_PNWgoGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    super(message);&#xD;
</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PNNWsGbSEeqrtc6dy-mPpg" name="DuplicateValueException" visibility="public" method="_PNUEYGbSEeqrtc6dy-mPpg"/>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PNWgoGbSEeqrtc6dy-mPpg" name="DuplicateValueException" visibility="public" method="_PNdOUGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PNcAMGbSEeqrtc6dy-mPpg" name="message" type="_PF7qAGbSEeqrtc6dy-mPpg"/>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_PNg4sGbSEeqrtc6dy-mPpg" name="EmptySetException" visibility="public">
            <generalization xmi:type="uml:Generalization" xmi:id="_PNjU8GbSEeqrtc6dy-mPpg" general="_PMryQGbSEeqrtc6dy-mPpg"/>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PNr30GbSEeqrtc6dy-mPpg" name="EmptySetException" specification="_PNj8AGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    super();&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PN228GbSEeqrtc6dy-mPpg" name="EmptySetException" specification="_PNu7IGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    super(messageString);&#xD;
</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PNj8AGbSEeqrtc6dy-mPpg" name="EmptySetException" visibility="public" method="_PNr30GbSEeqrtc6dy-mPpg"/>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PNu7IGbSEeqrtc6dy-mPpg" name="EmptySetException" visibility="public" method="_PN228GbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PN1o0GbSEeqrtc6dy-mPpg" name="messageString" type="_PF7qAGbSEeqrtc6dy-mPpg"/>
            </ownedOperation>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="_PN8WgGbSEeqrtc6dy-mPpg" name="preferences">
          <packagedElement xmi:type="uml:Package" xmi:id="_PN9koGbSEeqrtc6dy-mPpg" name="analysis">
            <packagedElement xmi:type="uml:Class" xmi:id="_PN_Z0GbSEeqrtc6dy-mPpg" name="FrenchElection" visibility="public">
              <ownedAttribute xmi:type="uml:Property" xmi:id="_POBPAGbSEeqrtc6dy-mPpg" name="alternatives" visibility="private" type="_PMMDAGbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PODEMGbSEeqrtc6dy-mPpg" name="voters" visibility="private" type="_PMMDAGbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_POJx4GbSEeqrtc6dy-mPpg" name="scores" visibility="private" type="_POESUGbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_POM1MGbSEeqrtc6dy-mPpg" name="winners" visibility="private" type="_PMMDAGbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_POQfkGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_POS70GbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(FrenchElection.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_POa3oGbSEeqrtc6dy-mPpg" name="asFrenchElection" specification="_POVYEGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;FrenchElection Factory&quot;);&#xD;
    Preconditions.checkNotNull(linearPreferences);&#xD;
    return new FrenchElection(linearPreferences);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_POnE4GbSEeqrtc6dy-mPpg" name="FrenchElection" specification="_POd68GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;FrenchElection Constructor&quot;);&#xD;
    Map&lt;Alternative, Integer> tmpScores = Maps.newHashMap();&#xD;
    Set&lt;Voter> tmpVoters = Sets.newHashSet();&#xD;
    for (LinearPreference linearPreference : linearPreferences) {&#xD;
        if (!tmpVoters.add(linearPreference.getVoter()))&#xD;
            throw new IllegalArgumentException(&quot;A voter can't vote two times in a same election&quot;);&#xD;
        for (Alternative alternative : linearPreference.getAlternatives()) tmpScores.putIfAbsent(alternative, 0);&#xD;
        Alternative tmpAlternative = linearPreference.asList().get(0);&#xD;
        Integer votes = (tmpScores.get(tmpAlternative) != null) ? tmpScores.get(tmpAlternative) : 0;&#xD;
        tmpScores.put(tmpAlternative, votes + 1);&#xD;
    }&#xD;
    this.winners = ImmutableSet.copyOf(tmpScores.entrySet().stream().filter( entry -> Collections.max(tmpScores.entrySet(), (Entry&lt;Alternative, Integer> e1, Entry&lt;Alternative, Integer> e2) -> e1.getValue().compareTo(e2.getValue())).getValue().equals(entry.getValue())).map(Map.Entry::getKey).collect(Collectors.toSet()));&#xD;
    this.scores = tmpScores;&#xD;
    this.alternatives = ImmutableSet.copyOf(tmpScores.keySet());&#xD;
    this.voters = ImmutableSet.copyOf(tmpVoters);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_POrWUGbSEeqrtc6dy-mPpg" name="getWinners" specification="_POphIGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    return winners;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_POxc8GbSEeqrtc6dy-mPpg" name="getAlternatives" specification="_POtykGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    return alternatives;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PO3jkGbSEeqrtc6dy-mPpg" name="getScores" specification="_POz5MGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    return scores;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PO9DIGbSEeqrtc6dy-mPpg" name="getVoters" specification="_PO5_0GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    return voters;&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_POVYEGbSEeqrtc6dy-mPpg" name="asFrenchElection" visibility="public" isStatic="true" method="_POa3oGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_POXNQGbSEeqrtc6dy-mPpg" type="_PN_Z0GbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_POZCcGbSEeqrtc6dy-mPpg" name="linearPreferences" type="_PERdIGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_POd68GbSEeqrtc6dy-mPpg" name="FrenchElection" visibility="private" method="_POnE4GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_POl2wGbSEeqrtc6dy-mPpg" name="linearPreferences" type="_PERdIGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_POphIGbSEeqrtc6dy-mPpg" name="getWinners" visibility="public" method="_POrWUGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_POqIMGbSEeqrtc6dy-mPpg" type="_PMMDAGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_POtykGbSEeqrtc6dy-mPpg" name="getAlternatives" visibility="public" method="_POxc8GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_POvnwGbSEeqrtc6dy-mPpg" type="_PMMDAGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_POz5MGbSEeqrtc6dy-mPpg" name="getScores" visibility="public" method="_PO3jkGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PO1uYGbSEeqrtc6dy-mPpg" type="_POESUGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PO5_0GbSEeqrtc6dy-mPpg" name="getVoters" visibility="public" method="_PO9DIGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PO71AGbSEeqrtc6dy-mPpg" type="_PMMDAGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="_PPEX4GbSEeqrtc6dy-mPpg" name="classes">
            <packagedElement xmi:type="uml:Class" xmi:id="_PPG0IGbSEeqrtc6dy-mPpg" name="CompletePreferenceImpl" visibility="public">
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PPTBYGbSEeqrtc6dy-mPpg" name="equivalenceClasses" visibility="private" type="_PPLFkGbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PPVdoGbSEeqrtc6dy-mPpg" name="voter" visibility="private" type="_PIhD8GbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PPfOoGbSEeqrtc6dy-mPpg" name="graph" visibility="private" type="_PPYg8WbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PPiR8GbSEeqrtc6dy-mPpg" name="alternatives" visibility="private" type="_PMMDAGbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PPlVQGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_PPnxgGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(CompletePreferenceImpl.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_PPJ3cGbSEeqrtc6dy-mPpg" name="CompletePreferenceImpl implements CompletePreference" client="_PPG0IGbSEeqrtc6dy-mPpg" supplier="_PPIpUGbSEeqrtc6dy-mPpg" contract="_PPIpUGbSEeqrtc6dy-mPpg"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PP6scGbSEeqrtc6dy-mPpg" name="asCompletePreference" specification="_PPwUYGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QpVWcGbSEeqrtc6dy-mPpg" type="_PPIpUGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QpXLoGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QpXysGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QpYZwGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QpZn4GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QpaO8GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QpbdEGbSEeqrtc6dy-mPpg" name="equivalenceClasses" type="_PPpmsGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qpix0GbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QplOEGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;Factory CompletePreferenceImpl&quot;);&#xD;
    Preconditions.checkNotNull(equivalenceClasses);&#xD;
    Preconditions.checkNotNull(voter);&#xD;
    return new CompletePreferenceImpl(voter, equivalenceClasses);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PQLLIGbSEeqrtc6dy-mPpg" name="CompletePreferenceImpl" specification="_PP-W0GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QpoRYGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QprUsGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qpr7wGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qpsi0GbSEeqrtc6dy-mPpg" name="equivalenceClasses" type="_PPpmsGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QpuYAGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qpu_EGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;Constructor CompletePreferenceImpl&quot;);&#xD;
    this.voter = voter;&#xD;
    List&lt;ImmutableSet&lt;Alternative>> listImmutableSets = Lists.newArrayList();&#xD;
    for (Set&lt;Alternative> set : equivalenceClasses) {&#xD;
        listImmutableSets.add(ImmutableSet.copyOf(set));&#xD;
    }&#xD;
    this.equivalenceClasses = ImmutableList.copyOf(listImmutableSets);&#xD;
    this.graph = createGraph(equivalenceClasses);&#xD;
    this.alternatives = ImmutableSet.copyOf(this.graph.nodes());&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PQVjMGbSEeqrtc6dy-mPpg" name="createGraph" specification="_PQNnYGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QpwNMGbSEeqrtc6dy-mPpg" type="_PPYg8WbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QpyCYGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QpypcGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QpzQgGbSEeqrtc6dy-mPpg" name="equivalenceClasses" type="_PPpmsGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qp1FsGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qp1swGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    List&lt;Alternative> listAlternatives = Lists.newArrayList();&#xD;
    MutableGraph&lt;Alternative> newGraph = GraphBuilder.directed().allowsSelfLoops(true).build();&#xD;
    Alternative lastSetLinker = null;&#xD;
    for (Set&lt;Alternative> equivalenceClasse : equivalenceClasses) {&#xD;
        if (equivalenceClasse.isEmpty())&#xD;
            throw new EmptySetException(&quot;A Set can't be empty&quot;);&#xD;
        Alternative rememberAlternative = null;&#xD;
        for (Alternative alternative : equivalenceClasse) {&#xD;
            if (listAlternatives.contains(alternative))&#xD;
                throw new DuplicateValueException(&quot;you can't duplicate Alternatives&quot;);&#xD;
            listAlternatives.add(alternative);&#xD;
            if (lastSetLinker != null) {&#xD;
                newGraph.putEdge(lastSetLinker, alternative);&#xD;
                lastSetLinker = null;&#xD;
            }&#xD;
            newGraph.putEdge(alternative, alternative);&#xD;
            if (!Objects.isNull(rememberAlternative)) {&#xD;
                newGraph.putEdge(rememberAlternative, alternative);&#xD;
                newGraph.putEdge(alternative, rememberAlternative);&#xD;
            }&#xD;
            rememberAlternative = alternative;&#xD;
        }&#xD;
        lastSetLinker = rememberAlternative;&#xD;
    }&#xD;
    return ImmutableGraph.copyOf(Graphs.transitiveClosure(newGraph));&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PQbCwGbSEeqrtc6dy-mPpg" name="getAlternatives" specification="_PQXYYGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qp264GbSEeqrtc6dy-mPpg" type="_PMMDAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qp4JAGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qp5XIGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return this.alternatives;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PQf7QGbSEeqrtc6dy-mPpg" name="getVoter" specification="_PQdfAGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qp5-MGbSEeqrtc6dy-mPpg" type="_PIhD8GbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qp7zYGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qp8acGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return this.voter;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PQmB4GbSEeqrtc6dy-mPpg" name="getRank" specification="_PQiXgGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qp9okGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qp-2sGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qp_dwGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QqAE0GbSEeqrtc6dy-mPpg" name="a" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QqB6AGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QqChEGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    Preconditions.checkNotNull(a);&#xD;
    for (Set&lt;Alternative> equivalenceClasse : equivalenceClasses) {&#xD;
        if (equivalenceClasse.contains(a))&#xD;
            return equivalenceClasses.indexOf(equivalenceClasse) + 1;&#xD;
    }&#xD;
    throw new NoSuchElementException(&quot;Alternative not found&quot;);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PQsvkGbSEeqrtc6dy-mPpg" name="getAlternatives" specification="_PQoeIGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QqDvMGbSEeqrtc6dy-mPpg" type="_PMMDAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QqE9UGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QqFkYGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QqGLcGbSEeqrtc6dy-mPpg" name="rank">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QqIAoGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QqInsGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return ImmutableSet.copyOf(equivalenceClasses.get(rank - 1));&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PQy2MGbSEeqrtc6dy-mPpg" name="asEquivalenceClasses" specification="_PQvL0GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QqJ10GbSEeqrtc6dy-mPpg" type="_PPLFkGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QqLD8GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QqMSEGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return equivalenceClasses;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PQ4VwGbSEeqrtc6dy-mPpg" name="asGraph" specification="_PQ15gGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QqM5IGbSEeqrtc6dy-mPpg" type="_PPYg8WbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QqPVYGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QqRxoGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return graph;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PQ9OQGbSEeqrtc6dy-mPpg" name="hashCode" specification="_PQ6yAGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QqSYsGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QqS_wGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QqTm0GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return Objects.hash(equivalenceClasses, graph, voter);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PRHmUGbSEeqrtc6dy-mPpg" name="equals" specification="_PRA4oGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QqTm0WbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QqTm0mbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QqUN4GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QqUN4WbSEeqrtc6dy-mPpg" name="obj" type="_PGXH0GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QqU08GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QqU08WbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    if (this == obj) {&#xD;
        return true;&#xD;
    }&#xD;
    if (obj == null) {&#xD;
        return false;&#xD;
    }&#xD;
    if (!(obj instanceof CompletePreferenceImpl)) {&#xD;
        return false;&#xD;
    }&#xD;
    CompletePreferenceImpl other = (CompletePreferenceImpl) obj;&#xD;
    return Objects.equals(equivalenceClasses, other.equivalenceClasses) &amp;&amp; Objects.equals(graph, other.graph) &amp;&amp; Objects.equals(voter, other.voter);&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PPwUYGbSEeqrtc6dy-mPpg" name="asCompletePreference" visibility="public" isStatic="true" method="_PP6scGbSEeqrtc6dy-mPpg" raisedException="_PNJsUGbSEeqrtc6dy-mPpg _PNg4sGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PPyJkGbSEeqrtc6dy-mPpg" type="_PPIpUGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PPzXsGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PP1z8GbSEeqrtc6dy-mPpg" name="equivalenceClasses" type="_PPpmsGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PP3pIGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PP43QGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PP-W0GbSEeqrtc6dy-mPpg" name="CompletePreferenceImpl" visibility="protected" method="_PQLLIGbSEeqrtc6dy-mPpg" raisedException="_PNg4sGbSEeqrtc6dy-mPpg _PNJsUGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PQFEgGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PQG5sGbSEeqrtc6dy-mPpg" name="equivalenceClasses" type="_PPpmsGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PQIH0GbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PQJV8GbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PQNnYGbSEeqrtc6dy-mPpg" name="createGraph" visibility="private" method="_PQVjMGbSEeqrtc6dy-mPpg" raisedException="_PNg4sGbSEeqrtc6dy-mPpg _PNJsUGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PQQDoGbSEeqrtc6dy-mPpg" type="_PPYg8WbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PQR40GbSEeqrtc6dy-mPpg" name="equivalenceClasses" type="_PPpmsGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PQTG8GbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PQTuAGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PQXYYGbSEeqrtc6dy-mPpg" name="getAlternatives" visibility="public" method="_PQbCwGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PQZNkGbSEeqrtc6dy-mPpg" type="_PMMDAGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PQdfAGbSEeqrtc6dy-mPpg" name="getVoter" visibility="public" method="_PQf7QGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PQetIGbSEeqrtc6dy-mPpg" type="_PIhD8GbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PQiXgGbSEeqrtc6dy-mPpg" name="getRank" visibility="public" method="_PQmB4GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PQjloGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PQkzwGbSEeqrtc6dy-mPpg" name="a" type="_PFRisGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PQoeIGbSEeqrtc6dy-mPpg" name="getAlternatives" visibility="public" method="_PQsvkGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PQqTUGbSEeqrtc6dy-mPpg" type="_PMMDAGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PQrhcGbSEeqrtc6dy-mPpg" name="rank">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PQvL0GbSEeqrtc6dy-mPpg" name="asEquivalenceClasses" visibility="public" method="_PQy2MGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PQxoEGbSEeqrtc6dy-mPpg" type="_PPLFkGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PQ15gGbSEeqrtc6dy-mPpg" name="asGraph" visibility="public" method="_PQ4VwGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PQ3HoGbSEeqrtc6dy-mPpg" type="_PPYg8WbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PQ6yAGbSEeqrtc6dy-mPpg" name="hashCode" visibility="public" method="_PQ9OQGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PQ8AIGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PRA4oGbSEeqrtc6dy-mPpg" name="equals" visibility="public" method="_PRHmUGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PRCGwGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PRFxIGbSEeqrtc6dy-mPpg" name="obj" type="_PGXH0GbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QUa2YGbSEeqrtc6dy-mPpg" name="getRank"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QUcEgGbSEeqrtc6dy-mPpg" name="asGraph">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QUcEgWbSEeqrtc6dy-mPpg" type="_PR_wEGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QUcEgmbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QUcEg2bSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QUdSoGbSEeqrtc6dy-mPpg" name="getAlternatives">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QUdSoWbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QUdSombSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QUdSo2bSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QXQH8GbSEeqrtc6dy-mPpg" name="getRank">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QXQvAGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QXQvAWbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QXQvAmbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QX0vsGbSEeqrtc6dy-mPpg" name="getRank">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QX2k4GbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QX6PQGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QX8EcGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QaTb8GbSEeqrtc6dy-mPpg" name="getRank">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QaVRIGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QaWfQGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QaXGUGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QaXtYGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QaYUcGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QaY7gGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QaozIGbSEeqrtc6dy-mPpg" name="getRank">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QapaMGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QapaMWbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QapaMmbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QapaM2bSEeqrtc6dy-mPpg" name="a">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QapaNGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QapaNWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Qci3oGbSEeqrtc6dy-mPpg" name="getAlternatives"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QelfAGbSEeqrtc6dy-mPpg" name="getAlternatives">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QemtIGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QenUMGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QeoiUGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QhmWwGbSEeqrtc6dy-mPpg" name="getAlternatives">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QhoL8GbSEeqrtc6dy-mPpg" type="_PMMDAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QhpaEGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QhqoMGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QhrPQGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QhsdYGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QhtEcGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QixbcGbSEeqrtc6dy-mPpg" name="getAlternatives">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qiz3sGbSEeqrtc6dy-mPpg" type="_PMMDAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qi0ewGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qi1F0GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qi2T8GbSEeqrtc6dy-mPpg" name="rank">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qi3iEGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qi4JIGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QlIL4GbSEeqrtc6dy-mPpg" name="asEquivalenceClasses"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QnYOoGbSEeqrtc6dy-mPpg" name="asEquivalenceClasses">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QnZcwGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qnaq4GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QnbR8GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_PRQwQGbSEeqrtc6dy-mPpg" name="LinearPreferenceImpl" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_PRR-YGbSEeqrtc6dy-mPpg" general="_PPG0IGbSEeqrtc6dy-mPpg"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PRWP0GbSEeqrtc6dy-mPpg" name="list" visibility="private" type="_PPLFkGbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PRYsEGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_PRbvYGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(LinearPreferenceImpl.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_PRTzkGbSEeqrtc6dy-mPpg" name="LinearPreferenceImpl implements LinearPreference" client="_PRQwQGbSEeqrtc6dy-mPpg" supplier="_PRTMgGbSEeqrtc6dy-mPpg" contract="_PRTMgGbSEeqrtc6dy-mPpg"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PRn8oGbSEeqrtc6dy-mPpg" name="asLinearPreference" specification="_PRdkkGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QUAmsGbSEeqrtc6dy-mPpg" type="_PRTMgGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QUB00GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QUDC8GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QUDqAGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QUE4IGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QUGGQGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QUIigGbSEeqrtc6dy-mPpg" name="listAlternatives" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QUP3QGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QUSTgGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;LinearPreferenceImpl Factory with list of Alternatives&quot;);&#xD;
    Preconditions.checkNotNull(voter);&#xD;
    Preconditions.checkNotNull(listAlternatives);&#xD;
    List&lt;Set&lt;Alternative>> equivalenceClasses = Lists.newArrayList();&#xD;
    for (Alternative alternative : listAlternatives) {&#xD;
        equivalenceClasses.add(ImmutableSet.of(alternative));&#xD;
    }&#xD;
    return new LinearPreferenceImpl(voter, equivalenceClasses);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PRy7wWbSEeqrtc6dy-mPpg" name="LinearPreferenceImpl" specification="_PRqY4GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QUUvwGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QUUvwWbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QUUvwmbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QUVW0GbSEeqrtc6dy-mPpg" name="equivalenceClasses" type="_PERdIGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QUVW0WbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QUVW0mbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    super(voter, equivalenceClasses);&#xD;
    List&lt;Alternative> tmpList = Lists.newArrayList();&#xD;
    for (Set&lt;Alternative> equivalenceClass : equivalenceClasses) {&#xD;
        Alternative alternative = Iterables.getOnlyElement(equivalenceClass);&#xD;
        tmpList.add(alternative);&#xD;
    }&#xD;
    this.list = ImmutableList.copyOf(tmpList);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PR0J4WbSEeqrtc6dy-mPpg" name="asList" specification="_PRzi0GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QUVW02bSEeqrtc6dy-mPpg" type="_PPLFkGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QUVW1GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QUVW1WbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return this.list;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PR0w8mbSEeqrtc6dy-mPpg" name="hashCode" specification="_PR0w8GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QUV94GbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QUV94WbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QUV94mbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return Objects.hash(this.asGraph());&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PR2mIGbSEeqrtc6dy-mPpg" name="equals" specification="_PR1YAGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QUV942bSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QUV95GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QUV95WbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QUWk8GbSEeqrtc6dy-mPpg" name="o2" type="_PGXH0GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QUWk8WbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QUWk8mbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    if (this == o2) {&#xD;
        return true;&#xD;
    }&#xD;
    if (!super.equals(o2)) {&#xD;
        return false;&#xD;
    }&#xD;
    if (!(o2 instanceof Preference)) {&#xD;
        return false;&#xD;
    }&#xD;
    Preference other = (LinearPreferenceImpl) o2;&#xD;
    return this.asGraph().equals(other.asGraph());&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PRdkkGbSEeqrtc6dy-mPpg" name="asLinearPreference" visibility="public" isStatic="true" method="_PRn8oGbSEeqrtc6dy-mPpg" raisedException="_PNg4sGbSEeqrtc6dy-mPpg _PNJsUGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PRfZwGbSEeqrtc6dy-mPpg" type="_PRTMgGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PRgn4GbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PRh2AGbSEeqrtc6dy-mPpg" name="listAlternatives" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PRjrMGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PRkSQGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PRqY4GbSEeqrtc6dy-mPpg" name="LinearPreferenceImpl" visibility="private" method="_PRy7wWbSEeqrtc6dy-mPpg" raisedException="_PNg4sGbSEeqrtc6dy-mPpg _PNJsUGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PRxGkGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PRyUsGbSEeqrtc6dy-mPpg" name="equivalenceClasses" type="_PERdIGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PRyUsWbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PRy7wGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PRzi0GbSEeqrtc6dy-mPpg" name="asList" visibility="public" method="_PR0J4WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PR0J4GbSEeqrtc6dy-mPpg" type="_PPLFkGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PR0w8GbSEeqrtc6dy-mPpg" name="hashCode" visibility="public" method="_PR0w8mbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PR0w8WbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PR1YAGbSEeqrtc6dy-mPpg" name="equals" visibility="public" method="_PR2mIGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PR1_EGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PR1_EWbSEeqrtc6dy-mPpg" name="o2" type="_PGXH0GbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QRQ0sWbSEeqrtc6dy-mPpg" name="asList"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QSN28GbSEeqrtc6dy-mPpg" name="asList">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QSPsIGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QSQ6QGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QSRhUGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_PR7eoGbSEeqrtc6dy-mPpg" name="ImmutablePreferenceImpl" visibility="public">
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PR9T0GbSEeqrtc6dy-mPpg" name="graph" visibility="private" type="_PPYg8WbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PR9T0WbSEeqrtc6dy-mPpg" name="graphIntransitivelyClosed" visibility="private" type="_PPYg8WbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PR964GbSEeqrtc6dy-mPpg" name="alternatives" visibility="private" type="_PMMDAGbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PR-h8GbSEeqrtc6dy-mPpg" name="voter" visibility="private" type="_PIhD8GbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PR_JAGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_PR_JAWbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(ImmutablePreferenceImpl.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_PR8swGbSEeqrtc6dy-mPpg" name="ImmutablePreferenceImpl implements ImmutablePreference" client="_PR7eoGbSEeqrtc6dy-mPpg" supplier="_PR8FsGbSEeqrtc6dy-mPpg" contract="_PR8FsGbSEeqrtc6dy-mPpg"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PSQ10GbSEeqrtc6dy-mPpg" name="asImmutablePreference" specification="_PSF2sGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_vPFI8HskEeqnComa1zbUOQ" type="_PR8FsGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vPFwAHskEeqnComa1zbUOQ" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vPG-IHskEeqnComa1zbUOQ" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_vPHlMHskEeqnComa1zbUOQ" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vPIMQHskEeqnComa1zbUOQ" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vPIzUHskEeqnComa1zbUOQ" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_vPKBcHskEeqnComa1zbUOQ" name="graph" type="_PR_wEGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vPKogHskEeqnComa1zbUOQ" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vPKogXskEeqnComa1zbUOQ" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    Preconditions.checkNotNull(voter);&#xD;
    Preconditions.checkNotNull(graph);&#xD;
    return new ImmutablePreferenceImpl(voter, graph);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PSgGYGbSEeqrtc6dy-mPpg" name="copyOf" specification="_PSbN4GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_vPLPkHskEeqnComa1zbUOQ" type="_PR8FsGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vPLPkXskEeqnComa1zbUOQ" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vPLPknskEeqnComa1zbUOQ" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_vPL2oHskEeqnComa1zbUOQ" name="preference" type="_QKjvwGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vPMdsHskEeqnComa1zbUOQ" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vPMdsXskEeqnComa1zbUOQ" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    Preconditions.checkNotNull(preference);&#xD;
    return new ImmutablePreferenceImpl(preference.getVoter(), preference.asGraph());&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PSv-AGbSEeqrtc6dy-mPpg" name="ImmutablePreferenceImpl" specification="_PSjJsGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_vPNEwHskEeqnComa1zbUOQ" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vPNr0HskEeqnComa1zbUOQ" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vPNr0XskEeqnComa1zbUOQ" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_vPNr0nskEeqnComa1zbUOQ" name="graph" type="_PR_wEGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vPOS4HskEeqnComa1zbUOQ" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vPOS4XskEeqnComa1zbUOQ" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;ImmutablePreferenceImpl constructor from graph&quot;);&#xD;
    this.graphIntransitivelyClosed = ImmutableGraph.copyOf(graph);&#xD;
    this.graph = ImmutableGraph.copyOf(Graphs.transitiveClosure(this.graphIntransitivelyClosed));&#xD;
    this.alternatives = ImmutableSet.copyOf(graph.nodes());&#xD;
    this.voter = voter;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PS02gGbSEeqrtc6dy-mPpg" name="asGraph" specification="_PSyaQGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_vPO58HskEeqnComa1zbUOQ" type="_PPYg8WbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vPPhAHskEeqnComa1zbUOQ" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vPQIEHskEeqnComa1zbUOQ" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return this.graph;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PS5vAGbSEeqrtc6dy-mPpg" name="asIntransitiveGraph" specification="_PS2rsGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_vPQvIHskEeqnComa1zbUOQ" type="_PPYg8WbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vPRWMHskEeqnComa1zbUOQ" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vPR9QHskEeqnComa1zbUOQ" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return this.graphIntransitivelyClosed;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PS9ZYGbSEeqrtc6dy-mPpg" name="getAlternatives" specification="_PS7kMGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_vPSkUHskEeqnComa1zbUOQ" type="_PMMDAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vPTLYHskEeqnComa1zbUOQ" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vPTLYXskEeqnComa1zbUOQ" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return this.alternatives;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PTBq0GbSEeqrtc6dy-mPpg" name="getVoter" specification="_PS_OkGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_vPTycHskEeqnComa1zbUOQ" type="_PIhD8GbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vPUZgHskEeqnComa1zbUOQ" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vPVAkHskEeqnComa1zbUOQ" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return this.voter;&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PSF2sGbSEeqrtc6dy-mPpg" name="asImmutablePreference" visibility="public" isStatic="true" method="_PSQ10GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PSHr4GbSEeqrtc6dy-mPpg" type="_PR8FsGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PSI6AGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PSLWQGbSEeqrtc6dy-mPpg" name="graph" type="_PR_wEGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PSbN4GbSEeqrtc6dy-mPpg" name="copyOf" visibility="public" isStatic="true" method="_PSgGYGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PSdqIGbSEeqrtc6dy-mPpg" type="_PR8FsGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PSe4QGbSEeqrtc6dy-mPpg" name="preference" type="_QKjvwGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PSjJsGbSEeqrtc6dy-mPpg" name="ImmutablePreferenceImpl" visibility="protected" method="_PSv-AGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PSqecGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PSuv4GbSEeqrtc6dy-mPpg" name="graph" type="_PR_wEGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PSyaQGbSEeqrtc6dy-mPpg" name="asGraph" visibility="public" method="_PS02gGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PSzoYGbSEeqrtc6dy-mPpg" type="_PPYg8WbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PS2rsGbSEeqrtc6dy-mPpg" name="asIntransitiveGraph" visibility="public" method="_PS5vAGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PS4g4GbSEeqrtc6dy-mPpg" type="_PPYg8WbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PS7kMGbSEeqrtc6dy-mPpg" name="getAlternatives" visibility="public" method="_PS9ZYGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PS8yUGbSEeqrtc6dy-mPpg" type="_PMMDAGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PS_OkGbSEeqrtc6dy-mPpg" name="getVoter" visibility="public" method="_PTBq0GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PTAcsGbSEeqrtc6dy-mPpg" type="_PIhD8GbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QK2qsmbSEeqrtc6dy-mPpg" name="asGraph"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QK2qs2bSEeqrtc6dy-mPpg" name="asGraph">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QLAbsGbSEeqrtc6dy-mPpg" type="_PR_wEGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QLAbsWbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QLAbsmbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QLAbs2bSEeqrtc6dy-mPpg" name="getAlternatives">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QLAbtGbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QLJloGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QLJloWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QLmRn2bSEeqrtc6dy-mPpg" name="asGraph">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QLwCkGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QLwCkWbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QLwCkmbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QNiLQGbSEeqrtc6dy-mPpg" name="getAlternatives"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QOIoMGbSEeqrtc6dy-mPpg" name="getAlternatives">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QOIoMWbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QOIoMmbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QOIoM2bSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_9a514GbVEeqrtc6dy-mPpg" name="Operation4"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_9a85MGbVEeqrtc6dy-mPpg" name="asStrictGraph"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_BIBA0GbWEeqrtc6dy-mPpg" name="equals"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_FnHpYWbWEeqrtc6dy-mPpg" name="equals">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_FnHpYmbWEeqrtc6dy-mPpg" name="o" type="_PGXH0GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FnHpY2bWEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FnHpZGbWEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_rd96cG0QEeqxlu-Q2xgkvw" name="equals">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_rd-hgG0QEeqxlu-Q2xgkvw" name="o" type="_PGXH0GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rd_IkG0QEeqxlu-Q2xgkvw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rd_IkW0QEeqxlu-Q2xgkvw" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_rd_Ikm0QEeqxlu-Q2xgkvw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rd_Ik20QEeqxlu-Q2xgkvw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rd_IlG0QEeqxlu-Q2xgkvw" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_reQ1YG0QEeqxlu-Q2xgkvw" name="asStrictGraph">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_reQ1YW0QEeqxlu-Q2xgkvw" type="_PR_wEGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_reRccG0QEeqxlu-Q2xgkvw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_reRccW0QEeqxlu-Q2xgkvw" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_-2OqUHEbEeqUv4VtPCytLw" name="equals">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_-2OqUXEbEeqUv4VtPCytLw" name="o">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-2OqUnEbEeqUv4VtPCytLw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-2OqU3EbEeqUv4VtPCytLw" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_-2OqVHEbEeqUv4VtPCytLw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-2OqVXEbEeqUv4VtPCytLw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-2OqVnEbEeqUv4VtPCytLw" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_-33CAHEbEeqUv4VtPCytLw" name="equals">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_-33CAXEbEeqUv4VtPCytLw" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-33CAnEbEeqUv4VtPCytLw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-33CA3EbEeqUv4VtPCytLw" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_LvjB8HEjEeqUv4VtPCytLw" name="Equals"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_WE4eEHEjEeqUv4VtPCytLw" name="Equals">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_WE4eEXEjEeqUv4VtPCytLw" name="o" type="_PGXH0GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WE4eEnEjEeqUv4VtPCytLw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WE4eE3EjEeqUv4VtPCytLw" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_vLtE0HskEeqnComa1zbUOQ" name="Equals">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_vL1AoHskEeqnComa1zbUOQ" name="o">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vL1nsHskEeqnComa1zbUOQ" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vL210HskEeqnComa1zbUOQ" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_vL4rAHskEeqnComa1zbUOQ" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_f-GnEPaLEeW5KOK8aDMdgA"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vL5SEHskEeqnComa1zbUOQ" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vL55IHskEeqnComa1zbUOQ" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_vNWqoHskEeqnComa1zbUOQ" name="Equals">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_vNX4wHskEeqnComa1zbUOQ" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vNZG4HskEeqnComa1zbUOQ" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vNZt8HskEeqnComa1zbUOQ" value="1"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_PTHxcGbSEeqrtc6dy-mPpg" name="ImmutableAntiSymmetricPreferenceImpl" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_PTJmoGbSEeqrtc6dy-mPpg" general="_PR7eoGbSEeqrtc6dy-mPpg"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PTMp8GbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_PTPtQGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(ImmutableAntiSymmetricPreferenceImpl.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_PTK0wGbSEeqrtc6dy-mPpg" name="ImmutableAntiSymmetricPreferenceImpl implements ImmutableAntiSymmetricPreference" client="_PTHxcGbSEeqrtc6dy-mPpg" supplier="_PTKNsGbSEeqrtc6dy-mPpg" contract="_PTKNsGbSEeqrtc6dy-mPpg"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PTYQIGbSEeqrtc6dy-mPpg" name="asImmutableAntiSymmetricPreference" specification="_PTSJgGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_-bSawHEbEeqUv4VtPCytLw" type="_PTHxcGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-bSawXEbEeqUv4VtPCytLw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-bSawnEbEeqUv4VtPCytLw" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_-bSaw3EbEeqUv4VtPCytLw" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-bSaxHEbEeqUv4VtPCytLw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-bSaxXEbEeqUv4VtPCytLw" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_-bSaxnEbEeqUv4VtPCytLw" name="graph" type="_PR_wEGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-bSax3EbEeqUv4VtPCytLw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-bSayHEbEeqUv4VtPCytLw" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    Preconditions.checkNotNull(voter);&#xD;
    Preconditions.checkNotNull(graph);&#xD;
    return new ImmutableAntiSymmetricPreferenceImpl(voter, graph);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PTj2UGbSEeqrtc6dy-mPpg" name="ImmutableAntiSymmetricPreferenceImpl" specification="_PTasYGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_-bSayXEbEeqUv4VtPCytLw" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-bbksHEbEeqUv4VtPCytLw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-bbksXEbEeqUv4VtPCytLw" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_-bbksnEbEeqUv4VtPCytLw" name="graph" type="_PR_wEGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-bbks3EbEeqUv4VtPCytLw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-bbktHEbEeqUv4VtPCytLw" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    super(voter, graph);&#xD;
    for (EndpointPair&lt;Alternative> edge : super.asGraph().edges()) {&#xD;
        if (super.asGraph().hasEdgeConnecting(edge.nodeV(), edge.nodeU()) &amp;&amp; !edge.nodeV().equals(edge.nodeU()))&#xD;
            throw new IllegalArgumentException(&quot;Two Alternatives can't be ranked ex-æquo&quot;);&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PTSJgGbSEeqrtc6dy-mPpg" name="asImmutableAntiSymmetricPreference" visibility="public" isStatic="true" method="_PTYQIGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PTTXoGbSEeqrtc6dy-mPpg" type="_PTHxcGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PTUlwGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PTWa8GbSEeqrtc6dy-mPpg" name="graph" type="_PR_wEGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PTasYGbSEeqrtc6dy-mPpg" name="ImmutableAntiSymmetricPreferenceImpl" visibility="private" method="_PTj2UGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PTgzAGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PTioMGbSEeqrtc6dy-mPpg" name="graph" type="_PR_wEGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QPxm8GbSEeqrtc6dy-mPpg" name="asGraph"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QPxm8WbSEeqrtc6dy-mPpg" name="asGraph">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QPxm8mbSEeqrtc6dy-mPpg" type="_PR_wEGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QPxm82bSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QPxm9GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QPxm9WbSEeqrtc6dy-mPpg" name="getAlternatives">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QPxm9mbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QP6w4GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QP6w4WbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QP6w4mbSEeqrtc6dy-mPpg" name="getVoter">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QP6w42bSEeqrtc6dy-mPpg" type="_PIhD8GbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QP6w5GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QP6w5WbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QQOS5WbSEeqrtc6dy-mPpg" name="asGraph">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QQOS5mbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QQOS52bSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QQOS6GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QQ0IwWbSEeqrtc6dy-mPpg" name="asGraph">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QQ0IwmbSEeqrtc6dy-mPpg" type="_PPYg8WbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QQ0Iw2bSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QQ0IxGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_tqCJYG0QEeqxlu-Q2xgkvw" name="getAlternatives">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_tqCJYW0QEeqxlu-Q2xgkvw" type="_PMMDAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tqCwcG0QEeqxlu-Q2xgkvw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tqCwcW0QEeqxlu-Q2xgkvw" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_tqIQAG0QEeqxlu-Q2xgkvw" name="equals">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_tqI3EG0QEeqxlu-Q2xgkvw" name="o" type="_PGXH0GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tqI3EW0QEeqxlu-Q2xgkvw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tqI3Em0QEeqxlu-Q2xgkvw" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_tqI3E20QEeqxlu-Q2xgkvw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tqJeIG0QEeqxlu-Q2xgkvw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tqJeIW0QEeqxlu-Q2xgkvw" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_tqdAIG0QEeqxlu-Q2xgkvw" name="asStrictGraph">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_tqdnMG0QEeqxlu-Q2xgkvw" type="_PR_wEGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tqdnMW0QEeqxlu-Q2xgkvw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tqdnMm0QEeqxlu-Q2xgkvw" value="1"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_PTtAQGbSEeqrtc6dy-mPpg" name="MutableAntiSymmetricPreferenceImpl" visibility="public">
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PT08EGbSEeqrtc6dy-mPpg" name="voter" visibility="protected" type="_PIhD8GbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PT7CsGbSEeqrtc6dy-mPpg" name="graph" visibility="protected" type="_PT1jIGbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PT-GAGbSEeqrtc6dy-mPpg" name="alternatives" visibility="protected" type="_PERdIGbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PUBJUGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_PUGo4GbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(MutableAntiSymmetricPreference.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_PTzG4GbSEeqrtc6dy-mPpg" name="MutableAntiSymmetricPreferenceImpl implements MutableAntiSymmetricPreference" client="_PTtAQGbSEeqrtc6dy-mPpg" supplier="_PTwDkGbSEeqrtc6dy-mPpg" contract="_PTwDkGbSEeqrtc6dy-mPpg"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PUm_MGbSEeqrtc6dy-mPpg" name="MutableAntiSymmetricPreferenceImpl" specification="_PUJsMGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QBEckGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QBFqsGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QBGRwGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QBG40GbSEeqrtc6dy-mPpg" name="prefGraph" type="_PT1jIGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QBHf4GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QBIG8GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    this.voter = voter;&#xD;
    for (Alternative a1 : prefGraph.nodes()) {&#xD;
        for (Alternative a2 : prefGraph.successors(a1)) {&#xD;
            if (Graphs.transitiveClosure(prefGraph).hasEdgeConnecting(a2, a1) &amp;&amp; !a2.equals(a1)) {&#xD;
                throw new IllegalArgumentException(&quot;The alternatives &quot; + a1 + &quot; and &quot; + a2 + &quot; cannot be ex-eaquo.&quot;);&#xD;
            }&#xD;
        }&#xD;
    }&#xD;
    graph = prefGraph;&#xD;
    alternatives = graph.nodes();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PU3d4GbSEeqrtc6dy-mPpg" name="given" specification="_PUviEGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QBIuAGbSEeqrtc6dy-mPpg" type="_PTwDkGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QBJVEGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QBJ8IGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QBKjMGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QBLxUGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QBLxUWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QBMYYGbSEeqrtc6dy-mPpg" name="pref" type="_PT1jIGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QBM_cGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QBNmgGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;MutableAntiSymmetricPreferenceImpl given&quot;);&#xD;
    Preconditions.checkNotNull(voter);&#xD;
    Preconditions.checkNotNull(pref);&#xD;
    return new MutableAntiSymmetricPreferenceImpl(voter, pref);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PVDEEGbSEeqrtc6dy-mPpg" name="given" specification="_PU7vUGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QBONkGbSEeqrtc6dy-mPpg" type="_PTtAQGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QBO0oGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QBPbsGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QBPbsWbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QBQCwGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QBQp0GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;MutableAntiSymmetricPreferenceImpl given with voter&quot;);&#xD;
    Preconditions.checkNotNull(voter);&#xD;
    MutableGraph&lt;Alternative> pref = GraphBuilder.directed().allowsSelfLoops(true).build();&#xD;
    return new MutableAntiSymmetricPreferenceImpl(voter, pref);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PVGHYGbSEeqrtc6dy-mPpg" name="given" specification="_PVE5QGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QBRQ4GbSEeqrtc6dy-mPpg" type="_PTtAQGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QBR38GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QBSfAGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QBSfAWbSEeqrtc6dy-mPpg" name="pref" type="_QKjvwGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QBTGEGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QBTGEWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    Preconditions.checkNotNull(pref);&#xD;
    return new MutableAntiSymmetricPreferenceImpl(pref.getVoter(), Graphs.copyOf(pref.asGraph()));&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PVH8kGbSEeqrtc6dy-mPpg" name="addAlternative" specification="_PVGucGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QBTGEmbSEeqrtc6dy-mPpg" name="alternative" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QBTtIGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QBUUMGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;MutableAntiSymmetricPreferenceImpl addAlternative&quot;);&#xD;
    Preconditions.checkNotNull(alternative);&#xD;
    graph.addNode(alternative);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PVJKsWbSEeqrtc6dy-mPpg" name="addStrictPreference" specification="_PVH8kWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QBU7QGbSEeqrtc6dy-mPpg" name="a1" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QBViUGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QBWJYGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QBWwcGbSEeqrtc6dy-mPpg" name="a2" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QBXXgGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QBXXgWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;MutableAntiSymmetricPreferenceImpl addStrictPreference&quot;);&#xD;
    Preconditions.checkNotNull(a1);&#xD;
    Preconditions.checkNotNull(a2);&#xD;
    if (Graphs.transitiveClosure(graph).hasEdgeConnecting(a2, a1) &amp;&amp; !a1.equals(a2))&#xD;
        throw new IllegalArgumentException(&quot;Must not contain ex-eaquo Alternative&quot;);&#xD;
    graph.putEdge(a1, a2);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PVP4YGbSEeqrtc6dy-mPpg" name="asGraph" specification="_PVK_4GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QBX-kGbSEeqrtc6dy-mPpg" type="_PPYg8WbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QBX-kWbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QBX-kmbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return ImmutableGraph.copyOf(Graphs.transitiveClosure(graph));&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PVYbQGbSEeqrtc6dy-mPpg" name="asMutableGraph" specification="_PVSUoGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QBYloGbSEeqrtc6dy-mPpg" type="_PT1jIGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QBZMsGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QBZzwGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return graph;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PVd60GbSEeqrtc6dy-mPpg" name="getAlternatives" specification="_PVa3gGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QBaa0GbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QBbB4GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QBbo8GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;MutableAntiSymmetricPreferenceImpl getAlternatives&quot;);&#xD;
    if (alternatives.size() == graph.nodes().size() &amp;&amp; alternatives.containsAll(graph.nodes())) {&#xD;
        return ImmutableSet.copyOf(alternatives);&#xD;
    } else {&#xD;
        throw new IllegalStateException(&quot;Must not remove an alternative from the set&quot;);&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PVjaYGbSEeqrtc6dy-mPpg" name="getVoter" specification="_PVgXEGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QBcQAGbSEeqrtc6dy-mPpg" type="_PIhD8GbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QBc3EGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QBc3EWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return voter;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PVvnoGbSEeqrtc6dy-mPpg" name="toString" specification="_PVl2oGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QBdeIGbSEeqrtc6dy-mPpg" type="_PF7qAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QBeFMGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QBesQGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return MoreObjects.toStringHelper(this).add(&quot;voter&quot;, voter).add(&quot;graph&quot;, graph).toString();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PV4xkGbSEeqrtc6dy-mPpg" name="equals" specification="_PVz5EGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QBesQWbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QBfTUGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QBf6YGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QBf6YWbSEeqrtc6dy-mPpg" name="obj" type="_PGXH0GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QBhIgGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QBhvkGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    if (this == obj) {&#xD;
        return true;&#xD;
    }&#xD;
    if (obj == null) {&#xD;
        return false;&#xD;
    }&#xD;
    if (!(obj instanceof MutableAntiSymmetricPreferenceImpl)) {&#xD;
        return false;&#xD;
    }&#xD;
    MutableAntiSymmetricPreferenceImpl other = (MutableAntiSymmetricPreferenceImpl) obj;&#xD;
    return Objects.equals(voter, other.voter) &amp;&amp; Objects.equals(graph, other.graph);&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PUJsMGbSEeqrtc6dy-mPpg" name="MutableAntiSymmetricPreferenceImpl" visibility="private" method="_PUm_MGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PUecUGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PUhfoGbSEeqrtc6dy-mPpg" name="prefGraph" type="_PT1jIGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PUviEGbSEeqrtc6dy-mPpg" name="given" visibility="public" isStatic="true" method="_PU3d4GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PUylYGbSEeqrtc6dy-mPpg" type="_PTwDkGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PU0akGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PU2PwGbSEeqrtc6dy-mPpg" name="pref" type="_PT1jIGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PU7vUGbSEeqrtc6dy-mPpg" name="given" visibility="public" isStatic="true" method="_PVDEEGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PVB18GbSEeqrtc6dy-mPpg" type="_PTtAQGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PVCdAGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PVE5QGbSEeqrtc6dy-mPpg" name="given" visibility="public" isStatic="true" method="_PVGHYGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PVE5QWbSEeqrtc6dy-mPpg" type="_PTtAQGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PVFgUGbSEeqrtc6dy-mPpg" name="pref" type="_QKjvwGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PVGucGbSEeqrtc6dy-mPpg" name="addAlternative" visibility="public" method="_PVH8kGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PVGucWbSEeqrtc6dy-mPpg" name="alternative" type="_PFRisGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PVH8kWbSEeqrtc6dy-mPpg" name="addStrictPreference" visibility="public" method="_PVJKsWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PVIjoGbSEeqrtc6dy-mPpg" name="a1" type="_PFRisGbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PVJKsGbSEeqrtc6dy-mPpg" name="a2" type="_PFRisGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PVK_4GbSEeqrtc6dy-mPpg" name="asGraph" visibility="public" method="_PVP4YGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PVNcIGbSEeqrtc6dy-mPpg" type="_PPYg8WbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PVSUoGbSEeqrtc6dy-mPpg" name="asMutableGraph" visibility="public" method="_PVYbQGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PVXNIGbSEeqrtc6dy-mPpg" type="_PT1jIGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PVa3gGbSEeqrtc6dy-mPpg" name="getAlternatives" visibility="public" method="_PVd60GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PVcssGbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PVgXEGbSEeqrtc6dy-mPpg" name="getVoter" visibility="public" method="_PVjaYGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PViMQGbSEeqrtc6dy-mPpg" type="_PIhD8GbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PVl2oGbSEeqrtc6dy-mPpg" name="toString" visibility="public" method="_PVvnoGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PVnr0GbSEeqrtc6dy-mPpg" type="_PF7qAGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PVz5EGbSEeqrtc6dy-mPpg" name="equals" visibility="public" method="_PV4xkGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PV1uQGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PV3jcGbSEeqrtc6dy-mPpg" name="obj" type="_PGXH0GbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_P0pxMGbSEeqrtc6dy-mPpg" name="asMutableGraph"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_P2JmAGbSEeqrtc6dy-mPpg" name="asMutableGraph">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P2LbMGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P2MCQGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P2MpUGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_P4cFAGbSEeqrtc6dy-mPpg" name="addAlternative"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_P5jfUGbSEeqrtc6dy-mPpg" name="addAlternative">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P5lUgGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P5mioGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P5nJsGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_P6TGMGbSEeqrtc6dy-mPpg" name="addAlternative">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P6UUUGbSEeqrtc6dy-mPpg" name="a">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P6VicGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P6VicWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_P7Be8GbSEeqrtc6dy-mPpg" name="addAlternative">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P7CtEGbSEeqrtc6dy-mPpg" name="a" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P7D7MGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P7D7MWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_P7xF0GbSEeqrtc6dy-mPpg" name="addStrictPreference"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_P9EtYGbSEeqrtc6dy-mPpg" name="addStrictPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P9F7gGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P9F7gWbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P9GikGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_P9s_gGbSEeqrtc6dy-mPpg" name="addStrictPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P9u0sGbSEeqrtc6dy-mPpg" name="a1">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P9u0sWbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P9vbwGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_P-fCoGbSEeqrtc6dy-mPpg" name="addStrictPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P-gQwGbSEeqrtc6dy-mPpg" name="a1" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P-g30GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P-he4GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_P_VXMGbSEeqrtc6dy-mPpg" name="addStrictPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P_WlUGbSEeqrtc6dy-mPpg" name="a1" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P_XzcGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P_YagGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P_ZBkGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P_ZooGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P_aPsGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QAJ2kGbSEeqrtc6dy-mPpg" name="addStrictPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QALrwGbSEeqrtc6dy-mPpg" name="a1" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QAMS0GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QAM54GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QANg8GbSEeqrtc6dy-mPpg" name="a2">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QAOvEGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QAPWIGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_PWDJoGbSEeqrtc6dy-mPpg" name="MutablePreferenceImpl" visibility="public">
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PWJQQGbSEeqrtc6dy-mPpg" name="voter" visibility="protected" type="_PIhD8GbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PWM6oGbSEeqrtc6dy-mPpg" name="graph" visibility="protected" type="_PT1jIGbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PWP98GbSEeqrtc6dy-mPpg" name="alternatives" visibility="protected" type="_PERdIGbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_PWTBQGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_PWVdgGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(MutablePreference.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_PWGM8GbSEeqrtc6dy-mPpg" name="MutablePreferenceImpl implements MutablePreference" client="_PWDJoGbSEeqrtc6dy-mPpg" supplier="_PWEXwGbSEeqrtc6dy-mPpg" contract="_PWEXwGbSEeqrtc6dy-mPpg"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PWhqwGbSEeqrtc6dy-mPpg" name="MutablePreferenceImpl" specification="_PWX5wGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PzvLMGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PzxAYGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PzxncGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PzyOgGbSEeqrtc6dy-mPpg" name="prefGraph" type="_PT1jIGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Pzy1kGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PzzcoGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    this.voter = voter;&#xD;
    graph = prefGraph;&#xD;
    alternatives = graph.nodes();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PWrbwGbSEeqrtc6dy-mPpg" name="given" specification="_PWkuEGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Pz0qwGbSEeqrtc6dy-mPpg" type="_PWEXwGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Pz144GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Pz2f8GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Pz3HAGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Pz4VIGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Pz4VIWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Pz48MGbSEeqrtc6dy-mPpg" name="pref" type="_PT1jIGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Pz6KUGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Pz6xYGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;MutablePreferenceImpl given&quot;);&#xD;
    Preconditions.checkNotNull(voter);&#xD;
    Preconditions.checkNotNull(pref);&#xD;
    return new MutablePreferenceImpl(voter, pref);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PWywgGbSEeqrtc6dy-mPpg" name="given" specification="_PWt4AGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Pz7YcGbSEeqrtc6dy-mPpg" type="_PWDJoGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Pz8mkGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Pz9NoGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Pz90sGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Pz-bwGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Pz_C0GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;MutablePreferenceImpl given with voter&quot;);&#xD;
    Preconditions.checkNotNull(voter);&#xD;
    MutableGraph&lt;Alternative> pref = GraphBuilder.directed().allowsSelfLoops(true).build();&#xD;
    return new MutablePreferenceImpl(voter, pref);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PW6FQGbSEeqrtc6dy-mPpg" name="given" specification="_PW1MwGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P0AQ8GbSEeqrtc6dy-mPpg" type="_PWDJoGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P0BfEGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P0BfEWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P0CGIGbSEeqrtc6dy-mPpg" name="pref" type="_QKjvwGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P0DUQGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P0D7UGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    Preconditions.checkNotNull(pref);&#xD;
    return new MutablePreferenceImpl(pref.getVoter(), Graphs.copyOf(pref.asGraph()));&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PW_k0GbSEeqrtc6dy-mPpg" name="asGraph" specification="_PW8hgGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P0FJcGbSEeqrtc6dy-mPpg" type="_PPYg8WbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P0GXkGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P0G-oGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return ImmutableGraph.copyOf(Graphs.transitiveClosure(graph));&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PXEdUGbSEeqrtc6dy-mPpg" name="asMutableGraph" specification="_PXBaAGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P0HlsGbSEeqrtc6dy-mPpg" type="_PT1jIGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P0Iz0GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P0KB8GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return graph;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PXJV0GbSEeqrtc6dy-mPpg" name="addAlternative" specification="_PXG5kGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P0KpAGbSEeqrtc6dy-mPpg" name="alternative" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P0L3IGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P0MeMGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;MutablePreferenceImpl addAlternative&quot;);&#xD;
    Preconditions.checkNotNull(alternative);&#xD;
    graph.addNode(alternative);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PXQDgGbSEeqrtc6dy-mPpg" name="addEquivalence" specification="_PXLyEGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P0NsUGbSEeqrtc6dy-mPpg" name="a1" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P0O6cGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P0PhgGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P0PhgWbSEeqrtc6dy-mPpg" name="a2" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P0QvoGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P0RWsGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;MutablePreferenceImpl addEquivalence&quot;);&#xD;
    Preconditions.checkNotNull(a1);&#xD;
    Preconditions.checkNotNull(a2);&#xD;
    graph.putEdge(a1, a2);&#xD;
    graph.putEdge(a2, a1);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PXWxMGbSEeqrtc6dy-mPpg" name="setAsLeastAsGood" specification="_PXTG0GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P0Sk0GbSEeqrtc6dy-mPpg" name="a1" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P0Ty8GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P0UaAGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P0VBEGbSEeqrtc6dy-mPpg" name="a2" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P0WPMGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P0W2QGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;MutablePreferenceImpl putEdge&quot;);&#xD;
    Preconditions.checkNotNull(a1);&#xD;
    Preconditions.checkNotNull(a2);&#xD;
    graph.putEdge(a1, a2);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PXbpsGbSEeqrtc6dy-mPpg" name="getAlternatives" specification="_PXZNcGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P0XdUGbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P0YEYGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P0YrcGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;MutablePreferenceImpl getAlternatives&quot;);&#xD;
    if (alternatives.size() == graph.nodes().size() &amp;&amp; alternatives.containsAll(graph.nodes())) {&#xD;
        return ImmutableSet.copyOf(alternatives);&#xD;
    } else {&#xD;
        throw new IllegalStateException(&quot;Must not remove an alternative from the set&quot;);&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PXgiMGbSEeqrtc6dy-mPpg" name="getVoter" specification="_PXeF8GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P0ZSgGbSEeqrtc6dy-mPpg" type="_PIhD8GbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P0Z5kGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P0agoGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return voter;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PXkzoGbSEeqrtc6dy-mPpg" name="toString" specification="_PXiXYGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P0bHsGbSEeqrtc6dy-mPpg" type="_PF7qAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P0buwGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P0buwWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return MoreObjects.toStringHelper(this).add(&quot;voter&quot;, voter).add(&quot;graph&quot;, graph).toString();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PXsIYGbSEeqrtc6dy-mPpg" name="equals" specification="_PXn28GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P0cV0GbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P0dj8GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P0dj8WbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P0eLAGbSEeqrtc6dy-mPpg" name="obj" type="_PGXH0GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P0eyEGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P0fZIGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    if (this == obj) {&#xD;
        return true;&#xD;
    }&#xD;
    if (obj == null) {&#xD;
        return false;&#xD;
    }&#xD;
    if (!(obj instanceof MutablePreferenceImpl)) {&#xD;
        return false;&#xD;
    }&#xD;
    MutablePreferenceImpl other = (MutablePreferenceImpl) obj;&#xD;
    return Objects.equals(voter, other.voter) &amp;&amp; Objects.equals(graph, other.graph);&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PWX5wGbSEeqrtc6dy-mPpg" name="MutablePreferenceImpl" visibility="private" method="_PWhqwGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PWencGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PWgcoGbSEeqrtc6dy-mPpg" name="prefGraph" type="_PT1jIGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PWkuEGbSEeqrtc6dy-mPpg" name="given" visibility="public" isStatic="true" method="_PWrbwGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PWmjQGbSEeqrtc6dy-mPpg" type="_PWEXwGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PWnxYGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PWpmkGbSEeqrtc6dy-mPpg" name="pref" type="_PT1jIGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PWt4AGbSEeqrtc6dy-mPpg" name="given" visibility="public" isStatic="true" method="_PWywgGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PWvtMGbSEeqrtc6dy-mPpg" type="_PWDJoGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PWxiYGbSEeqrtc6dy-mPpg" name="voter" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PW1MwGbSEeqrtc6dy-mPpg" name="given" visibility="public" isStatic="true" method="_PW6FQGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PW3B8GbSEeqrtc6dy-mPpg" type="_PWDJoGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PW4QEGbSEeqrtc6dy-mPpg" name="pref" type="_QKjvwGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PW8hgGbSEeqrtc6dy-mPpg" name="asGraph" visibility="public" method="_PW_k0GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PW-WsGbSEeqrtc6dy-mPpg" type="_PPYg8WbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PXBaAGbSEeqrtc6dy-mPpg" name="asMutableGraph" visibility="public" method="_PXEdUGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PXDPMGbSEeqrtc6dy-mPpg" type="_PT1jIGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PXG5kGbSEeqrtc6dy-mPpg" name="addAlternative" visibility="public" method="_PXJV0GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PXIHsGbSEeqrtc6dy-mPpg" name="alternative" type="_PFRisGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PXLyEGbSEeqrtc6dy-mPpg" name="addEquivalence" visibility="public" method="_PXQDgGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PXNnQGbSEeqrtc6dy-mPpg" name="a1" type="_PFRisGbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PXO1YGbSEeqrtc6dy-mPpg" name="a2" type="_PFRisGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PXTG0GbSEeqrtc6dy-mPpg" name="setAsLeastAsGood" visibility="public" method="_PXWxMGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PXUU8GbSEeqrtc6dy-mPpg" name="a1" type="_PFRisGbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PXVjEGbSEeqrtc6dy-mPpg" name="a2" type="_PFRisGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PXZNcGbSEeqrtc6dy-mPpg" name="getAlternatives" visibility="public" method="_PXbpsGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PXabkGbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PXeF8GbSEeqrtc6dy-mPpg" name="getVoter" visibility="public" method="_PXgiMGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PXfUEGbSEeqrtc6dy-mPpg" type="_PIhD8GbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PXiXYGbSEeqrtc6dy-mPpg" name="toString" visibility="public" method="_PXkzoGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PXjlgGbSEeqrtc6dy-mPpg" type="_PF7qAGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PXn28GbSEeqrtc6dy-mPpg" name="equals" visibility="public" method="_PXsIYGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PXpFEGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PXq6QGbSEeqrtc6dy-mPpg" name="obj" type="_PGXH0GbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PX_DUGbSEeqrtc6dy-mPpg" name="asMutableGraph"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PaLbsGbSEeqrtc6dy-mPpg" name="asMutableGraph">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PaPtIGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PaSwcGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PaUloGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PeRRgGbSEeqrtc6dy-mPpg" name="addAlternative"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Pg3SgGbSEeqrtc6dy-mPpg" name="addAlternative">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Pg5uwGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Pg684GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Pg7j8GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PiCXMGbSEeqrtc6dy-mPpg" name="addAlternative">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PiEzcGbSEeqrtc6dy-mPpg" name="alternative">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PiGBkGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PiHPsGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Pk9IUGbSEeqrtc6dy-mPpg" name="addEquivalence"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PnWVAGbSEeqrtc6dy-mPpg" name="addEquivalence">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PnW8EGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PnXjIGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PnYKMGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Po0UoGbSEeqrtc6dy-mPpg" name="addEquivalence">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Po3X8GbSEeqrtc6dy-mPpg" name="a1">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Po4mEGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Po5NIGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PqAAYGbSEeqrtc6dy-mPpg" name="addEquivalence">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PqAAYWbSEeqrtc6dy-mPpg" name="a1" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PqAAYmbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PqAAY2bSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PqLmkGbSEeqrtc6dy-mPpg" name="addEquivalence">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PqMNoGbSEeqrtc6dy-mPpg" name="a1" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PqMNoWbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PqMNombSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PqMNo2bSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PqMNpGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PqMNpWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Pqw1YGbSEeqrtc6dy-mPpg" name="addEquivalence">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Pq0fwGbSEeqrtc6dy-mPpg" name="a1" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Pq2U8GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Pq3jEGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Pq4KIGbSEeqrtc6dy-mPpg" name="a2">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Pq5YQGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Pq6mYGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PtjqsGbSEeqrtc6dy-mPpg" name="setAsLeastAsGood"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PvbS8GbSEeqrtc6dy-mPpg" name="setAsLeastAsGood">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Pvb6AGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Pvb6AWbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PvchEGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PwDlEGbSEeqrtc6dy-mPpg" name="setAsLeastAsGood">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PwEzMGbSEeqrtc6dy-mPpg" name="a1">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PwFaQGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PwGBUGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Pw7HwGbSEeqrtc6dy-mPpg" name="setAsLeastAsGood">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Pw888GbSEeqrtc6dy-mPpg" name="a1" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Pw-LEGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Pw-yIGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Px4KAGbSEeqrtc6dy-mPpg" name="setAsLeastAsGood">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Px5_MGbSEeqrtc6dy-mPpg" name="a1" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Px7NUGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Px70YGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Px8bcGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Px9CgGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Px9pkGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Py1zUGbSEeqrtc6dy-mPpg" name="setAsLeastAsGood">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Py4PkGbSEeqrtc6dy-mPpg" name="a1" type="_PFRisGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Py6EwGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Py6r0GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Py7S4GbSEeqrtc6dy-mPpg" name="a2">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Py758GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Py8hAGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="_PPICQGbSEeqrtc6dy-mPpg" name="interfaces">
            <packagedElement xmi:type="uml:Interface" xmi:id="_PPIpUGbSEeqrtc6dy-mPpg" name="CompletePreference" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_QUZoQGbSEeqrtc6dy-mPpg" general="_PR8FsGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QUaPUGbSEeqrtc6dy-mPpg" name="getRank" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QXPg4GbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QaS04GbSEeqrtc6dy-mPpg" name="a" type="_PFRisGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QchCcGbSEeqrtc6dy-mPpg" name="getAlternatives" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qejp0GbSEeqrtc6dy-mPpg" type="_PMMDAGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QhkhkGbSEeqrtc6dy-mPpg" name="rank">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QlFvoGbSEeqrtc6dy-mPpg" name="asEquivalenceClasses" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QnVyYGbSEeqrtc6dy-mPpg" type="_PPLFkGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="_PRTMgGbSEeqrtc6dy-mPpg" name="LinearPreference" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_QRHDt2bSEeqrtc6dy-mPpg" general="_PPIpUGbSEeqrtc6dy-mPpg"/>
              <generalization xmi:type="uml:Generalization" xmi:id="_ELFo0HslEeqnComa1zbUOQ" general="_P0h1YGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QRQ0sGbSEeqrtc6dy-mPpg" name="asList" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QSMBwGbSEeqrtc6dy-mPpg" type="_PPLFkGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="_PR8FsGbSEeqrtc6dy-mPpg" name="ImmutablePreference" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_QK2qsGbSEeqrtc6dy-mPpg" general="_QKjvwGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QK2qsWbSEeqrtc6dy-mPpg" name="asGraph" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QLmRnmbSEeqrtc6dy-mPpg" type="_PPYg8WbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QNZBV2bSEeqrtc6dy-mPpg" name="getAlternatives" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QN-3OWbSEeqrtc6dy-mPpg" type="_PMMDAGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="_QKjvwGbSEeqrtc6dy-mPpg" name="Preference" visibility="public">
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QKjvw2bSEeqrtc6dy-mPpg" name="asGraph" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QKtgwGbSEeqrtc6dy-mPpg" type="_PR_wEGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QKtgwWbSEeqrtc6dy-mPpg" name="getAlternatives" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QKtgwmbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QKtgw2bSEeqrtc6dy-mPpg" name="getVoter" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QKtgxGbSEeqrtc6dy-mPpg" type="_PIhD8GbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="_PTKNsGbSEeqrtc6dy-mPpg" name="ImmutableAntiSymmetricPreference" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_QPn19mbSEeqrtc6dy-mPpg" general="_PR8FsGbSEeqrtc6dy-mPpg"/>
              <generalization xmi:type="uml:Generalization" xmi:id="_QPn192bSEeqrtc6dy-mPpg" general="_P0h1YGbSEeqrtc6dy-mPpg"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="_PTwDkGbSEeqrtc6dy-mPpg" name="MutableAntiSymmetricPreference" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_P0n8AGbSEeqrtc6dy-mPpg" general="_P0h1YGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_P0ojEGbSEeqrtc6dy-mPpg" name="asMutableGraph" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P2IX4GbSEeqrtc6dy-mPpg" type="_PT1jIGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_P4a24GbSEeqrtc6dy-mPpg" name="addAlternative" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P5iRMGbSEeqrtc6dy-mPpg" name="a" type="_PFRisGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_P7upkGbSEeqrtc6dy-mPpg" name="addStrictPreference" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P9DfQGbSEeqrtc6dy-mPpg" name="a1" type="_PFRisGbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_P_S68GbSEeqrtc6dy-mPpg" name="a2" type="_PFRisGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="_PWEXwGbSEeqrtc6dy-mPpg" name="MutablePreference" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_QKjvwWbSEeqrtc6dy-mPpg" general="_QKjvwGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PX0rQGbSEeqrtc6dy-mPpg" name="asMutableGraph" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PaI_cGbSEeqrtc6dy-mPpg" type="_PT1jIGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PeOOMGbSEeqrtc6dy-mPpg" name="addAlternative" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Pg02QGbSEeqrtc6dy-mPpg" name="alternative" type="_PFRisGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Pk6sEGbSEeqrtc6dy-mPpg" name="addEquivalence" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PnT4wGbSEeqrtc6dy-mPpg" name="a1" type="_PFRisGbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PqJxYGbSEeqrtc6dy-mPpg" name="a2" type="_PFRisGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_PtgnYGbSEeqrtc6dy-mPpg" name="setAsLeastAsGood" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_PvY2sGbSEeqrtc6dy-mPpg" name="a1" type="_PFRisGbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Px1twGbSEeqrtc6dy-mPpg" name="a2" type="_PFRisGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="_P0h1YGbSEeqrtc6dy-mPpg" name="AntiSymmetricPreference" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_QKjvwmbSEeqrtc6dy-mPpg" general="_QKjvwGbSEeqrtc6dy-mPpg"/>
            </packagedElement>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="_QrEcPmbSEeqrtc6dy-mPpg" name="profiles">
          <packagedElement xmi:type="uml:Package" xmi:id="_SfgN4GbSEeqrtc6dy-mPpg" name="analysis">
            <packagedElement xmi:type="uml:Class" xmi:id="_Sfj4QGbSEeqrtc6dy-mPpg" name="Dictator" visibility="public">
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SfrNAGbSEeqrtc6dy-mPpg" name="dictator" visibility="private" type="_PIhD8GbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SfxToGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SfxToWbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(Borda.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_SfoJsGbSEeqrtc6dy-mPpg" name="Dictator implements SocialWelfareFunction" client="_Sfj4QGbSEeqrtc6dy-mPpg" supplier="_SfltcGbSEeqrtc6dy-mPpg" contract="_SfltcGbSEeqrtc6dy-mPpg"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Sfx6sWbSEeqrtc6dy-mPpg" name="about" specification="_SfxTombSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sp11oGbSEeqrtc6dy-mPpg" type="_Sfj4QGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Sp3DwGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Sp3DwWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sp3q0GbSEeqrtc6dy-mPpg" name="v" type="_PIhD8GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Sp448GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Sp5gAGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;Dictator Factory&quot;);&#xD;
    Preconditions.checkNotNull(v);&#xD;
    return new Dictator(v);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Sf1lEWbSEeqrtc6dy-mPpg" name="Dictator" specification="_Sfx6smbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sp6HEGbSEeqrtc6dy-mPpg" name="v" type="_PIhD8GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Sp7VMGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Sp7VMWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;Dictator constructor&quot;);&#xD;
    this.dictator = v;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Sf2zMGbSEeqrtc6dy-mPpg" name="getSocietyPreference" specification="_Sf1lEmbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sp8jUGbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Sp9xcGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Sp9xcWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sp-YgGbSEeqrtc6dy-mPpg" name="profile" type="_QrNmeGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Sp-_kGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Sp_moGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getSocietyStrictPreference&quot;);&#xD;
    Preconditions.checkNotNull(profile);&#xD;
    Preconditions.checkArgument(profile.getProfile().containsKey(dictator));&#xD;
    LOGGER.debug(&quot;parameter profile : {}&quot;, profile);&#xD;
    LOGGER.debug(&quot;Dictator : {}&quot;, dictator);&#xD;
    LOGGER.debug(&quot;return preference : {}&quot;, profile.getPreference(dictator));&#xD;
    return profile.getPreference(dictator);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Sf3aQGbSEeqrtc6dy-mPpg" name="getDictator" specification="_Sf2zMWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SqA0wGbSEeqrtc6dy-mPpg" type="_PIhD8GbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SqBb0GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SqCC4GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getDictator&quot;);&#xD;
    return dictator;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Sf4BUGbSEeqrtc6dy-mPpg" name="hashCode" specification="_Sf3aQWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SqCp8GbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SqD4EGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SqEfIGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return Objects.hash(dictator);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Sf4oYWbSEeqrtc6dy-mPpg" name="equals" specification="_Sf4BUWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SqFGMGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SqGUUGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SqG7YGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SqHicGbSEeqrtc6dy-mPpg" name="o" type="_PGXH0GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SqIwkGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SqIwkWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    if (this == o)&#xD;
        return true;&#xD;
    if (o == null)&#xD;
        return false;&#xD;
    if (this.getClass() != o.getClass())&#xD;
        return false;&#xD;
    Dictator dict = (Dictator) o;&#xD;
    return this.getDictator() == dict.getDictator();&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SfxTombSEeqrtc6dy-mPpg" name="about" visibility="public" isStatic="true" method="_Sfx6sWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SfxTo2bSEeqrtc6dy-mPpg" type="_Sfj4QGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sfx6sGbSEeqrtc6dy-mPpg" name="v" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Sfx6smbSEeqrtc6dy-mPpg" name="Dictator" visibility="private" method="_Sf1lEWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sf1lEGbSEeqrtc6dy-mPpg" name="v" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Sf1lEmbSEeqrtc6dy-mPpg" name="getSocietyPreference" visibility="public" method="_Sf2zMGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sf2MIGbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sf2MIWbSEeqrtc6dy-mPpg" name="profile" type="_QrNmeGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Sf2zMWbSEeqrtc6dy-mPpg" name="getDictator" visibility="public" method="_Sf3aQGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sf2zMmbSEeqrtc6dy-mPpg" type="_PIhD8GbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Sf3aQWbSEeqrtc6dy-mPpg" name="hashCode" visibility="public" method="_Sf4BUGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sf3aQmbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Sf4BUWbSEeqrtc6dy-mPpg" name="equals" visibility="public" method="_Sf4oYWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sf4BUmbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sf4oYGbSEeqrtc6dy-mPpg" name="o" type="_PGXH0GbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SiP_4GbSEeqrtc6dy-mPpg" name="getSocietyPreference"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SkD9wGbSEeqrtc6dy-mPpg" name="getSocietyPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SkFy8GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SkGaAGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SkHoIGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SmJBYGbSEeqrtc6dy-mPpg" name="getSocietyPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SmKPgGbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SmLdoGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SmMEsGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SnRp0GbSEeqrtc6dy-mPpg" name="getSocietyPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SnTfAGbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SnUGEGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SnUtIGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SnVUMGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SnV7QGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SnV7QWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SojcMGbSEeqrtc6dy-mPpg" name="getSocietyPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SokqUGbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Sol4cGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SomfgGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SonGkGbSEeqrtc6dy-mPpg" name="profile">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SontoGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SooUsGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="_SfltcGbSEeqrtc6dy-mPpg" name="SocialWelfareFunction" visibility="public">
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SiM8kGbSEeqrtc6dy-mPpg" name="getSocietyPreference" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SkDWsGbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SnRCwGbSEeqrtc6dy-mPpg" name="profile" type="_QrNmeGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_Sf_WEGbSEeqrtc6dy-mPpg" name="Borda" visibility="public">
              <ownedAttribute xmi:type="uml:Property" xmi:id="_Sf_9IGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SgByUGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(Borda.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SgOmoGbSEeqrtc6dy-mPpg" name="scores" visibility="private" isUnique="false"/>
              <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_Sf_WEWbSEeqrtc6dy-mPpg" name="Borda implements SocialWelfareFunction" client="_Sf_WEGbSEeqrtc6dy-mPpg" supplier="_SfltcGbSEeqrtc6dy-mPpg" contract="_SfltcGbSEeqrtc6dy-mPpg"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SgcCAGbSEeqrtc6dy-mPpg" name="withScores" specification="_SgXJgGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SqLM0GbSEeqrtc6dy-mPpg" type="_Sf_WEGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SqLz4GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SqMa8GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SqNCAGbSEeqrtc6dy-mPpg" name="tempscores">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SqOQIGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SqOQIWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    if (Objects.equals(tempscores, null))&#xD;
        return withScores();&#xD;
    return new Borda(tempscores);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SggTcGbSEeqrtc6dy-mPpg" name="withScores" specification="_SgeeQGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SqPeQGbSEeqrtc6dy-mPpg" type="_Sf_WEGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SqQFUGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SqQsYGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return new Borda(HashMultiset.create());&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SgzOYGbSEeqrtc6dy-mPpg" name="Borda" specification="_SgiIoGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SqRTcGbSEeqrtc6dy-mPpg" name="tempscores">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SqR6gGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SqShkGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;Borda constructor&quot;);&#xD;
    scores = tempscores;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Sg4t8GbSEeqrtc6dy-mPpg" name="getMultiSet" specification="_Sg24wGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SqTIoGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SqUWwGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SqU90GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getMultiSet:&quot;);&#xD;
    return scores;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ShJMoWbSEeqrtc6dy-mPpg" name="getSocietyPreference" specification="_ShIlkGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SqVk4GbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SqWL8GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SqWzAGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SqXaEGbSEeqrtc6dy-mPpg" name="profile" type="_QrNmeGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SqYBIGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SqYoMGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getSocietyStrictPreference&quot;);&#xD;
    Preconditions.checkNotNull(profile);&#xD;
    LOGGER.debug(&quot;parameter SProfile : {}&quot;, profile);&#xD;
    setScores(profile);&#xD;
    LOGGER.debug(&quot;return AScores : {}&quot;, scores);&#xD;
    List&lt;Set&lt;Alternative>> al = new ArrayList&lt;>();&#xD;
    Set&lt;Alternative> s;&#xD;
    Multiset&lt;Alternative> tempscores = scores;&#xD;
    while (!tempscores.isEmpty()) {&#xD;
        s = getMax(tempscores);&#xD;
        al.add(s);&#xD;
        for (Alternative a : s) {&#xD;
            tempscores.remove(a, tempscores.count(a));&#xD;
        }&#xD;
    }&#xD;
    OldCompletePreferenceImpl pref = OldCompletePreferenceImpl.createCompletePreferenceImpl(al);&#xD;
    LOGGER.debug(&quot;return AScores : {}&quot;, pref);&#xD;
    return pref;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ShX2IGbSEeqrtc6dy-mPpg" name="setScores" specification="_ShRIcGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SqZPQGbSEeqrtc6dy-mPpg" name="pref" type="_O-JnAGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SqadYGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SqbEcGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getScorePref&quot;);&#xD;
    Preconditions.checkNotNull(pref);&#xD;
    LOGGER.debug(&quot;parameter SPref : {}&quot;, pref);&#xD;
    int size = pref.getPreferencesNonStrict().size();&#xD;
    for (Alternative a : OldCompletePreferenceImpl.toAlternativeSet(pref.getPreferencesNonStrict())) {&#xD;
        scores.add(a, size - pref.getAlternativeRank(a) + 1);&#xD;
    }&#xD;
    LOGGER.debug(&quot;return score : {}&quot;, scores);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ShgZAGbSEeqrtc6dy-mPpg" name="setScores" specification="_Shej0GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SqbrgGbSEeqrtc6dy-mPpg" name="profile" type="_QrQpEGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Sqc5oGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SqdgsGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getScoreProf&quot;);&#xD;
    Preconditions.checkNotNull(profile);&#xD;
    LOGGER.debug(&quot;parameter SProfile : {}&quot;, profile);&#xD;
    Iterable&lt;Voter> allVoters = profile.getAllVoters();&#xD;
    for (Voter v : allVoters) {&#xD;
        setScores(profile.getPreference(v));&#xD;
    }&#xD;
    LOGGER.debug(&quot;return scores : {}&quot;, scores);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Shl4kGbSEeqrtc6dy-mPpg" name="getMax" specification="_ShiOMGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SqeHwGbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Sqeu0GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SqfV4GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sqf88GbSEeqrtc6dy-mPpg" name="tempscores">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SqgkAGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SqhLEGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getMax&quot;);&#xD;
    Preconditions.checkNotNull(tempscores);&#xD;
    Set&lt;Alternative> set = new HashSet&lt;>();&#xD;
    Iterable&lt;Alternative> alternativesList = tempscores.elementSet();&#xD;
    Alternative alternativeMax = Alternative.withId(0);&#xD;
    boolean first = true;&#xD;
    for (Alternative a : alternativesList) {&#xD;
        if (first) {&#xD;
            alternativeMax = a;&#xD;
            set.add(a);&#xD;
            first = false;&#xD;
        } else {&#xD;
            if (tempscores.count(a) > tempscores.count(alternativeMax)) {&#xD;
                alternativeMax = a;&#xD;
                set = new HashSet&lt;>();&#xD;
                set.add(a);&#xD;
            }&#xD;
            if (tempscores.count(a) == tempscores.count(alternativeMax)) {&#xD;
                set.add(a);&#xD;
            }&#xD;
        }&#xD;
    }&#xD;
    LOGGER.debug(&quot;Max : {} &quot;, set);&#xD;
    return set;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ShrYIGbSEeqrtc6dy-mPpg" name="hashCode" specification="_ShnGsGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SqhyIGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SqjAQGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SqjAQWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return Objects.hash(scores);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Sh1JIGbSEeqrtc6dy-mPpg" name="equals" specification="_ShyF0GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SqkOYGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Sqk1cGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Sqk1cWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SqlcgGbSEeqrtc6dy-mPpg" name="o" type="_PGXH0GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SqmDkGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SqmqoGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    if (this == o)&#xD;
        return true;&#xD;
    if (o == null)&#xD;
        return false;&#xD;
    if (this.getClass() != o.getClass())&#xD;
        return false;&#xD;
    Borda borda = (Borda) o;&#xD;
    return this.scores.equals(borda.scores);&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SgXJgGbSEeqrtc6dy-mPpg" name="withScores" visibility="public" isStatic="true" method="_SgcCAGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SgZlwGbSEeqrtc6dy-mPpg" type="_Sf_WEGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sgba8GbSEeqrtc6dy-mPpg" name="tempscores"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SgeeQGbSEeqrtc6dy-mPpg" name="withScores" visibility="public" isStatic="true" method="_SggTcGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SgfFUGbSEeqrtc6dy-mPpg" type="_Sf_WEGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SgiIoGbSEeqrtc6dy-mPpg" name="Borda" visibility="private" method="_SgzOYGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SgvkAGbSEeqrtc6dy-mPpg" name="tempscores"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Sg24wGbSEeqrtc6dy-mPpg" name="getMultiSet" visibility="public" method="_Sg4t8GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sg4G4GbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_ShIlkGbSEeqrtc6dy-mPpg" name="getSocietyPreference" visibility="public" method="_ShJMoWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_ShIlkWbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_ShJMoGbSEeqrtc6dy-mPpg" name="profile" type="_QrNmeGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_ShRIcGbSEeqrtc6dy-mPpg" name="setScores" visibility="public" method="_ShX2IGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_ShULwGbSEeqrtc6dy-mPpg" name="pref" type="_O-JnAGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Shej0GbSEeqrtc6dy-mPpg" name="setScores" visibility="public" method="_ShgZAGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Shfx8GbSEeqrtc6dy-mPpg" name="profile" type="_QrQpEGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_ShiOMGbSEeqrtc6dy-mPpg" name="getMax" visibility="public" method="_Shl4kGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_ShjcUGbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_ShkqcGbSEeqrtc6dy-mPpg" name="tempscores"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_ShnGsGbSEeqrtc6dy-mPpg" name="hashCode" visibility="public" method="_ShrYIGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_ShntwGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_ShyF0GbSEeqrtc6dy-mPpg" name="equals" visibility="public" method="_Sh1JIGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Shys4GbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sh0iEGbSEeqrtc6dy-mPpg" name="o" type="_PGXH0GbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SiwWMGbSEeqrtc6dy-mPpg" name="getSocietyPreference"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Ske0gGbSEeqrtc6dy-mPpg" name="getSocietyPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SkgpsGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SkhQwGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Skh30GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Smj4IGbSEeqrtc6dy-mPpg" name="getSocietyPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SmltUGbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SmmUYGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Smm7cGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SntHoGbSEeqrtc6dy-mPpg" name="getSocietyPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Snu80GbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SnwK8GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SnwK8WbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SnxZEGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SnyAIGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SnynMGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SpBWQGbSEeqrtc6dy-mPpg" name="getSocietyPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SpCkYGbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SpDygGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SpEZkGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SpFAoGbSEeqrtc6dy-mPpg" name="profile">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SpFnsGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SpGOwGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_Sh720GbSEeqrtc6dy-mPpg" name="OldFrenchElection" visibility="public">
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SiB9cGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SiDyoGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(OldFrenchElection.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_Sh-TEGbSEeqrtc6dy-mPpg" name="OldFrenchElection implements SocialWelfareFunction" client="_Sh720GbSEeqrtc6dy-mPpg" supplier="_SfltcGbSEeqrtc6dy-mPpg" contract="_SfltcGbSEeqrtc6dy-mPpg"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SiIrIGbSEeqrtc6dy-mPpg" name="getSocietyPreference" specification="_SiFAwGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sqof0GbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Sqpt8GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SqqVAGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sqq8EGbSEeqrtc6dy-mPpg" name="profile" type="_QrNmeGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SqsKMGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SqsxQGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getSocietyPreference&quot;);&#xD;
    Preconditions.checkNotNull(profile);&#xD;
    if (!profile.isStrict()) {&#xD;
        throw new IllegalArgumentException(&quot;A french election can only happen with a strict profile.&quot;);&#xD;
    }&#xD;
    ImmutableStrictProfileI newProf = StrictProfileBuilder.createStrictProfileBuilder((StrictProfileI) profile).createOneAlternativeProfile();&#xD;
    return Borda.withScores().getSocietyPreference(newProf);&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SiFAwGbSEeqrtc6dy-mPpg" name="getSocietyPreference" visibility="public" method="_SiIrIGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SiGO4GbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SiHdAGbSEeqrtc6dy-mPpg" name="profile" type="_QrNmeGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Si3D4GbSEeqrtc6dy-mPpg" name="getSocietyPreference"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SlC1MGbSEeqrtc6dy-mPpg" name="getSocietyPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SlEDUGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SlEqYGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SlFRcGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SnIf4GbSEeqrtc6dy-mPpg" name="getSocietyPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SnJuAGbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SnK8IGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SnK8IWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SoXO8GbSEeqrtc6dy-mPpg" name="getSocietyPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SoYdEGbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SoZrMGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SoaSQGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Soa5UGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SocHcGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SocugGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SppBUGbSEeqrtc6dy-mPpg" name="getSocietyPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Spq2gGbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SpsEoGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SpsEoWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SpsrsGbSEeqrtc6dy-mPpg" name="profile">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Spt50GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Spt50WbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="_Sqv0kGbSEeqrtc6dy-mPpg" name="gui">
            <packagedElement xmi:type="uml:Class" xmi:id="_SqyQ0GbSEeqrtc6dy-mPpg" name="SOIRowsGUI" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_Sq0GAGbSEeqrtc6dy-mPpg" general="_Sqze8GbSEeqrtc6dy-mPpg"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_Sq1UIGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_Sq3JUGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(SOCRowsGUI.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Sq5lkGbSEeqrtc6dy-mPpg" name="createColumns" specification="_Sq4XcGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;createColumns :&quot;);&#xD;
    StrictProfileI strictProfile = profileBuilder.createStrictProfileI();&#xD;
    // if profile get from file is SOC, create a StrictProfile from it&#xD;
    // COLUMNS&#xD;
    List&lt;String> titles = new ArrayList&lt;>();&#xD;
    titles.add(&quot;Voters&quot;);&#xD;
    for (int a = 1; a &lt;= strictProfile.getMaxSizeOfPreference(); a++) {&#xD;
        titles.add(&quot;Alternative &quot; + a);&#xD;
    }&#xD;
    for (String title : titles) {&#xD;
        TableColumn column = new TableColumn(table, SWT.NONE);&#xD;
        column.setText(title);&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Sq8o4GbSEeqrtc6dy-mPpg" name="checkRadioButton" specification="_Sq7awGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;checkRadioButtons&quot;);&#xD;
    columnsButton.setSelection(false);&#xD;
    rowsButton.setSelection(true);&#xD;
    wrapButton.setSelection(false);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Sq_sMGbSEeqrtc6dy-mPpg" name="populateRows" specification="_Sq-eEGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;populateRows :&quot;);&#xD;
    StrictProfileI strictProfile = profileBuilder.createStrictProfileI();&#xD;
    // ROWS&#xD;
    // get voters&#xD;
    Iterable&lt;Voter> allVoters = strictProfile.getAllVoters();&#xD;
    // from&#xD;
    // profile&#xD;
    int nbAlternatives = strictProfile.getNbAlternatives();&#xD;
    List&lt;String> line = new ArrayList&lt;>();&#xD;
    for (Voter v : allVoters) {&#xD;
        line.add(&quot;Voter &quot; + v.getId());&#xD;
        OldCompletePreferenceImpl pref = strictProfile.getPreference(v);&#xD;
        Iterable&lt;Alternative> allPref = OldCompletePreferenceImpl.toAlternativeSet(pref.getPreferencesNonStrict());&#xD;
        for (Alternative a : allPref) {&#xD;
            line.add(a.toString());&#xD;
        }&#xD;
        TableItem item = new TableItem(table, SWT.NONE);&#xD;
        item.setText(line.toArray(new String[nbAlternatives + 1]));&#xD;
        // empty the list&#xD;
        line.clear();&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SrGZ4GbSEeqrtc6dy-mPpg" name="main" specification="_SrBhYGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    SOIRowsGUI soiRows = new SOIRowsGUI();&#xD;
    soiRows.displayProfileWindow(args);&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Sq4XcGbSEeqrtc6dy-mPpg" name="createColumns" visibility="public" method="_Sq5lkGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Sq7awGbSEeqrtc6dy-mPpg" name="checkRadioButton" visibility="public" method="_Sq8o4GbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Sq-eEGbSEeqrtc6dy-mPpg" name="populateRows" visibility="public" method="_Sq_sMGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SrBhYGbSEeqrtc6dy-mPpg" name="main" visibility="public" isStatic="true" method="_SrGZ4GbSEeqrtc6dy-mPpg" raisedException="_QsKA8WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SrDWkGbSEeqrtc6dy-mPpg" name="args" type="_PF7qAGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SrD9oGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SrEksGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_Sqze8GbSEeqrtc6dy-mPpg" name="ProfileDefaultGUI" visibility="public">
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SwG1sGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SwIq4GbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(ProfileDefaultGUI.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SwKgEGbSEeqrtc6dy-mPpg" name="display" visibility="protected" isLeaf="true" isStatic="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SwM8UGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>Display.getDefault()</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SwOxgGbSEeqrtc6dy-mPpg" name="mainShell" visibility="protected" isLeaf="true" isStatic="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SwQmsGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>new Shell(display, SWT.CLOSE | SWT.RESIZE)</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SwSb4GbSEeqrtc6dy-mPpg" name="columnsButton" visibility="protected" isStatic="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SwUREGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>new Button(mainShell, SWT.RADIO)</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SwWGQGbSEeqrtc6dy-mPpg" name="rowsButton" visibility="protected" isStatic="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SwX7cGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>new Button(mainShell, SWT.RADIO)</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SwZwoGbSEeqrtc6dy-mPpg" name="wrapButton" visibility="protected" isStatic="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_Swa-wGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>new Button(mainShell, SWT.RADIO)</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SwhscGbSEeqrtc6dy-mPpg" name="tableViewer" visibility="protected" isStatic="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SwjhoGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>new TableViewer(mainShell, SWT.MULTI | SWT.BORDER)</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SwpoQGbSEeqrtc6dy-mPpg" name="table" visibility="protected" isStatic="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SwrdcGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>tableViewer.getTable()</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SwsrkGbSEeqrtc6dy-mPpg" name="voterToModify" visibility="protected" isStatic="true" isUnique="false">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_ILxaUPaLEeW5KOK8aDMdgA"/>
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SwvH0GbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>null</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SwwV8GbSEeqrtc6dy-mPpg" name="newpref" visibility="protected" isStatic="true" type="_PIU2sGbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_Sw0AUGbSEeqrtc6dy-mPpg" name="profileBuilder" visibility="protected" isStatic="true" type="_SwzZQGbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Sw6uAGbSEeqrtc6dy-mPpg" name="displayProfileWindow" specification="_Sw2ckGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;displayProfileWindow&quot;);&#xD;
    Preconditions.checkNotNull(args[0]);&#xD;
    // arg is the file path&#xD;
    String arg = args[0];&#xD;
    ReadProfile rp = new ReadProfile();&#xD;
    try (FileInputStream is = new FileInputStream(arg)) {&#xD;
        ProfileI profileI = rp.createProfileFromStream(is);&#xD;
        profileBuilder = ProfileBuilder.createProfileBuilder(profileI);&#xD;
        displayRadioButtons(args);&#xD;
        tableDisplay();&#xD;
        mainShell.setText(&quot;Edit Profile&quot;);&#xD;
        mainShell.pack();&#xD;
        mainShell.open();&#xD;
        while (!display.isDisposed()) {&#xD;
            if (!display.readAndDispatch())&#xD;
                display.sleep();&#xD;
        }&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Sw9xUGbSEeqrtc6dy-mPpg" name="tableDisplay" specification="_Sw8jMGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;tableDisplay&quot;);&#xD;
    // table layout handling&#xD;
    mainShell.setLayout(new GridLayout());&#xD;
    table.setLinesVisible(true);&#xD;
    table.setHeaderVisible(true);&#xD;
    GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);&#xD;
    table.setLayoutData(data);&#xD;
    createColumns();&#xD;
    populateRows();&#xD;
    checkRadioButton();&#xD;
    TableColumn[] tableColumns = table.getColumns();&#xD;
    for (TableColumn tableColumn : tableColumns) {&#xD;
        tableColumn.pack();&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SxEfAGbSEeqrtc6dy-mPpg" name="displayRadioButtons" specification="_SxA0oGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;displayRadioButtons :&quot;);&#xD;
    columnsButton.setText(&quot;Columns&quot;);&#xD;
    rowsButton.setText(&quot;Rows&quot;);&#xD;
    wrapButton.setText(&quot;Wrapped&quot;);&#xD;
    String fileExtension = args[0].substring(args[0].length() - 3);&#xD;
    if (fileExtension.equals(&quot;soc&quot;)) {&#xD;
        columnsButton.addSelectionListener(new SelectionAdapter() {&#xD;
&#xD;
            @Override&#xD;
            public void widgetSelected(SelectionEvent e) {&#xD;
                emptyTable();&#xD;
                new SOCColumnsGUI().tableDisplay();&#xD;
                table.setRedraw(true);&#xD;
            }&#xD;
        });&#xD;
        rowsButton.addSelectionListener(new SelectionAdapter() {&#xD;
&#xD;
            @Override&#xD;
            public void widgetSelected(SelectionEvent e) {&#xD;
                emptyTable();&#xD;
                new SOCRowsGUI().tableDisplay();&#xD;
                table.setRedraw(true);&#xD;
            }&#xD;
        });&#xD;
        wrapButton.addSelectionListener(new SelectionAdapter() {&#xD;
&#xD;
            @Override&#xD;
            public void widgetSelected(SelectionEvent e) {&#xD;
                emptyTable();&#xD;
                new SOCWrappedColumnsGUI().tableDisplay();&#xD;
                table.setRedraw(true);&#xD;
            }&#xD;
        });&#xD;
    } else if (fileExtension.equals(&quot;soi&quot;)) {&#xD;
        columnsButton.addSelectionListener(new SelectionAdapter() {&#xD;
&#xD;
            @Override&#xD;
            public void widgetSelected(SelectionEvent e) {&#xD;
                emptyTable();&#xD;
                new SOIColumnsGUI().tableDisplay();&#xD;
                table.setRedraw(true);&#xD;
            }&#xD;
        });&#xD;
        rowsButton.addSelectionListener(new SelectionAdapter() {&#xD;
&#xD;
            @Override&#xD;
            public void widgetSelected(SelectionEvent e) {&#xD;
                emptyTable();&#xD;
                new SOIRowsGUI().tableDisplay();&#xD;
                table.setRedraw(true);&#xD;
            }&#xD;
        });&#xD;
        wrapButton.addSelectionListener(new SelectionAdapter() {&#xD;
&#xD;
            @Override&#xD;
            public void widgetSelected(SelectionEvent e) {&#xD;
                emptyTable();&#xD;
                new SOIWrappedColumnsGUI().tableDisplay();&#xD;
                table.setRedraw(true);&#xD;
            }&#xD;
        });&#xD;
    } else {&#xD;
        throw new IllegalArgumentException(&quot;The file is neither soc nor soi.&quot;);&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SxG7QGbSEeqrtc6dy-mPpg" name="checkRadioButton" specification="_SxFtIGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;checkRadioButtons&quot;);&#xD;
    columnsButton.setSelection(true);&#xD;
    rowsButton.setSelection(false);&#xD;
    wrapButton.setSelection(false);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SxJXgGbSEeqrtc6dy-mPpg" name="createColumns" specification="_SxIJYGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;createColumns :&quot;);&#xD;
    // if profile get from file is SOC, create a StrictProfile from it&#xD;
    StrictProfileI strictProfile = profileBuilder.createStrictProfileI();&#xD;
    // get voters&#xD;
    Iterable&lt;Voter> allVoters = strictProfile.getAllVoters();&#xD;
    // from&#xD;
    // profile&#xD;
    int i = 0;&#xD;
    // COLUMNS&#xD;
    List&lt;String> titles = new ArrayList&lt;>();&#xD;
    for (Voter v : allVoters) {&#xD;
        titles.add(&quot;Voter &quot; + v.getId());&#xD;
        i++;&#xD;
    }&#xD;
    for (i = 0; i &lt; titles.size(); i++) {&#xD;
        TableColumn column = new TableColumn(table, SWT.NONE);&#xD;
        column.setText(titles.get(i));&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SxNB4GbSEeqrtc6dy-mPpg" name="populateRows" specification="_SxLzwGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;populateRowsSOI :&quot;);&#xD;
    // ROWS&#xD;
    StrictProfileI strictProfile = profileBuilder.createStrictProfileI();&#xD;
    List&lt;String> alternatives = new ArrayList&lt;>();&#xD;
    int nbAlternatives = strictProfile.getMaxSizeOfPreference();&#xD;
    for (int i = 0; i &lt; nbAlternatives; i++) {&#xD;
        TableItem item = new TableItem(table, SWT.NONE);&#xD;
        // create a row with ith alternatives&#xD;
        item.setText(strictProfile.getIthAlternativesAsStrings(i).toArray(new String[nbAlternatives]));&#xD;
        // empty the list&#xD;
        alternatives.clear();&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SxRTUGbSEeqrtc6dy-mPpg" name="editStrictPreference" specification="_SxO3EGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;editPreference :&quot;);&#xD;
    Preconditions.checkNotNull(arg);&#xD;
    final Shell modalShell = new Shell(display, SWT.TITLE | SWT.BORDER | SWT.APPLICATION_MODAL | SWT.CLOSE);&#xD;
    modalShell.setText(&quot;Edit&quot;);&#xD;
    modalShell.setLayout(new GridLayout(2, true));&#xD;
    Label label = new Label(modalShell, SWT.NULL);&#xD;
    label.setText(&quot;Which voter do you want to change ?&quot;);&#xD;
    final Text text = new Text(modalShell, SWT.SINGLE | SWT.BORDER);&#xD;
    Label labelPref = new Label(modalShell, SWT.NULL);&#xD;
    labelPref.setText(&quot;Choose the preference :&quot;);&#xD;
    final Text textPref = new Text(modalShell, SWT.SINGLE | SWT.BORDER);&#xD;
    Button cancelButton = new Button(modalShell, SWT.PUSH);&#xD;
    cancelButton.setText(&quot;Cancel&quot;);&#xD;
    modalShell.pack();&#xD;
    modalShell.open();&#xD;
    text.addListener(SWT.Modify, new Listener() {&#xD;
&#xD;
        @Override&#xD;
        public void handleEvent(Event event) {&#xD;
            try {&#xD;
                voterToModify = Integer.parseInt(text.getText());&#xD;
            } catch (IllegalArgumentException iae) {&#xD;
                LOGGER.debug(&quot;Illegal Argument Exception : {}&quot;, iae);&#xD;
            }&#xD;
        }&#xD;
    });&#xD;
    textPref.addListener(SWT.Modify, new Listener() {&#xD;
&#xD;
        @Override&#xD;
        public void handleEvent(Event event) {&#xD;
            try {&#xD;
                newpref = new ReadProfile().createStrictPreferenceFrom(textPref.getText());&#xD;
            } catch (IllegalArgumentException iae) {&#xD;
                LOGGER.debug(&quot;Illegal Argument Exception : {} &quot;, iae);&#xD;
            }&#xD;
        }&#xD;
    });&#xD;
    cancelButton.addListener(SWT.Selection, new Listener() {&#xD;
&#xD;
        @Override&#xD;
        public void handleEvent(Event event) {&#xD;
            modalShell.dispose();&#xD;
        }&#xD;
    });&#xD;
    modalShell.addListener(SWT.Traverse, new Listener() {&#xD;
&#xD;
        @Override&#xD;
        public void handleEvent(Event event) {&#xD;
            if (event.detail == SWT.TRAVERSE_ESCAPE)&#xD;
                modalShell.dispose();&#xD;
            event.doit = false;&#xD;
        }&#xD;
    });&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SxUWoGbSEeqrtc6dy-mPpg" name="modif" specification="_SxTIgGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;modif :&quot;);&#xD;
    Voter voter = Voter.createVoter(voterToModify);&#xD;
    LOGGER.debug(&quot;New preference for voter v {} : {}&quot;, voter, newpref);&#xD;
    // change preference for this Voter in global ProfileBuilder&#xD;
    profileBuilder.addVote(voter, newpref);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SxbrYGbSEeqrtc6dy-mPpg" name="save" specification="_SxWy4GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;saveButton :&quot;);&#xD;
    Preconditions.checkNotNull(outputFile);&#xD;
    File file = new File(outputFile);&#xD;
    try (OutputStream outputStream = new FileOutputStream(file)) {&#xD;
        String fileExtension = file.toString().substring(file.toString().length() - 3);&#xD;
        if (fileExtension.equals(&quot;soc&quot;)) {&#xD;
            StrictProfile sp = profileBuilder.createStrictProfile();&#xD;
            sp.writeToSOC(outputStream);&#xD;
        } else {&#xD;
            // fileExtension == &quot;soi&quot;&#xD;
            StrictProfileI spi = profileBuilder.createStrictProfileI();&#xD;
            spi.writeToSOI(outputStream);&#xD;
        }&#xD;
    } catch (IOException ioe) {&#xD;
        MessageBox dialog = new MessageBox(mainShell, SWT.ICON_QUESTION | SWT.OK);&#xD;
        dialog.setText(&quot;IOException&quot;);&#xD;
        dialog.setMessage(&quot;Error when opening Stream : &quot; + ioe);&#xD;
        dialog.open();&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Sxf80GbSEeqrtc6dy-mPpg" name="emptyTable" specification="_SxeusGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;emptyTable&quot;);&#xD;
    table.setRedraw(false);&#xD;
    table.removeAll();&#xD;
    while (table.getColumnCount() > 0) {&#xD;
        table.getColumns()[0].dispose();&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Sw2ckGbSEeqrtc6dy-mPpg" name="displayProfileWindow" visibility="public" method="_Sw6uAGbSEeqrtc6dy-mPpg" raisedException="_QsKA8WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sw3qsGbSEeqrtc6dy-mPpg" name="args" type="_PF7qAGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Sw440GbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Sw5f4GbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Sw8jMGbSEeqrtc6dy-mPpg" name="tableDisplay" visibility="public" method="_Sw9xUGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SxA0oGbSEeqrtc6dy-mPpg" name="displayRadioButtons" visibility="public" method="_SxEfAGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SxCCwGbSEeqrtc6dy-mPpg" name="args" type="_PF7qAGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SxDQ4GbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SxDQ4WbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SxFtIGbSEeqrtc6dy-mPpg" name="checkRadioButton" visibility="public" method="_SxG7QGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SxIJYGbSEeqrtc6dy-mPpg" name="createColumns" visibility="public" method="_SxJXgGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SxLzwGbSEeqrtc6dy-mPpg" name="populateRows" visibility="public" method="_SxNB4GbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SxO3EGbSEeqrtc6dy-mPpg" name="editStrictPreference" visibility="public" method="_SxRTUGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SxQFMGbSEeqrtc6dy-mPpg" name="arg" type="_PF7qAGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SxTIgGbSEeqrtc6dy-mPpg" name="modif" visibility="public" method="_SxUWoGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SxWy4GbSEeqrtc6dy-mPpg" name="save" visibility="public" method="_SxbrYGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SxZPIGbSEeqrtc6dy-mPpg" name="outputFile" type="_PF7qAGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SxeusGbSEeqrtc6dy-mPpg" name="emptyTable" visibility="public" method="_Sxf80GbSEeqrtc6dy-mPpg"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_SrMggGbSEeqrtc6dy-mPpg" name="SOIWrappedColumnsGUI" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_SrOVsGbSEeqrtc6dy-mPpg" general="_SrNHkGbSEeqrtc6dy-mPpg"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SrPj0GbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SrRZAGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(SOIWrappedColumnsGUI.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SrTOMGbSEeqrtc6dy-mPpg" name="createColumns" specification="_SrSnIGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;createColumns :&quot;);&#xD;
    StrictProfileI strictProfile = profileBuilder.createStrictProfileI();&#xD;
    // if profile get from file is SOC, create a StrictProfile from it&#xD;
    Set&lt;OldCompletePreferenceImpl> uniquePreferences = strictProfile.getUniquePreferences();&#xD;
    // COLUMNS&#xD;
    List&lt;String> titles = new ArrayList&lt;>();&#xD;
    for (OldCompletePreferenceImpl p : uniquePreferences) {&#xD;
        int nbVoters = strictProfile.getNbVoterForPreference(p);&#xD;
        String voterOrVoters = (nbVoters > 1) ? &quot; voters&quot; : &quot; voter&quot;;&#xD;
        titles.add(nbVoters + voterOrVoters);&#xD;
    }&#xD;
    for (String title : titles) {&#xD;
        TableColumn column = new TableColumn(table, SWT.NONE);&#xD;
        column.setText(title);&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SrWRgGbSEeqrtc6dy-mPpg" name="checkRadioButton" specification="_SrVDYGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;checkRadioButtons&quot;);&#xD;
    columnsButton.setSelection(false);&#xD;
    rowsButton.setSelection(false);&#xD;
    wrapButton.setSelection(true);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SrYtwGbSEeqrtc6dy-mPpg" name="populateRows" specification="_SrYGsGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;populateRows :&quot;);&#xD;
    StrictProfileI strictProfile = profileBuilder.createStrictProfileI();&#xD;
    // ROWS&#xD;
    List&lt;String> alternatives = new ArrayList&lt;>();&#xD;
    // nb of rows&#xD;
    int nbAlternatives = strictProfile.getNbAlternatives();&#xD;
    for (int i = 0; i &lt; nbAlternatives; i++) {&#xD;
        TableItem item = new TableItem(table, SWT.NONE);&#xD;
        // create a row with ith alternatives&#xD;
        item.setText(strictProfile.getIthAlternativesOfUniquePrefAsString(i).toArray(new String[nbAlternatives]));&#xD;
        // empty the list&#xD;
        alternatives.clear();&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Sre0YGbSEeqrtc6dy-mPpg" name="main" specification="_Srai8GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    SOIWrappedColumnsGUI soiWrapped = new SOIWrappedColumnsGUI();&#xD;
    soiWrapped.displayProfileWindow(args);&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SrSnIGbSEeqrtc6dy-mPpg" name="createColumns" visibility="public" method="_SrTOMGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SrVDYGbSEeqrtc6dy-mPpg" name="checkRadioButton" visibility="public" method="_SrWRgGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SrYGsGbSEeqrtc6dy-mPpg" name="populateRows" visibility="public" method="_SrYtwGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Srai8GbSEeqrtc6dy-mPpg" name="main" visibility="public" isStatic="true" method="_Sre0YGbSEeqrtc6dy-mPpg" raisedException="_QsKA8WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SrbxEGbSEeqrtc6dy-mPpg" name="args" type="_PF7qAGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Src_MGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SrdmQGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_SrNHkGbSEeqrtc6dy-mPpg" name="ColumnsDefaultGUI" visibility="public">
              <ownedRule xmi:type="uml:InteractionConstraint" xmi:id="_AlfbQHwOEeqAHPJ5yK7igg" name="User click on column visualization"/>
              <generalization xmi:type="uml:Generalization" xmi:id="_Ss_3UGbSEeqrtc6dy-mPpg" general="_Sqze8GbSEeqrtc6dy-mPpg"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_StBsgGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_StEIwGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(ColumnsDefaultGUI.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_StFW4GbSEeqrtc6dy-mPpg" name="sourceX" visibility="protected" isUnique="false">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_StHMEGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>0</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_StIaMGbSEeqrtc6dy-mPpg" name="sourceY" visibility="protected" isUnique="false">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_StJBQGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>0</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_StSyQGbSEeqrtc6dy-mPpg" name="cellBeingDragged" visibility="protected" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_StUncGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>tableViewer.getCell(new Point(0, 0))</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_StWcoGbSEeqrtc6dy-mPpg" name="saveButton" visibility="protected" isStatic="true" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_StYR0GbSEeqrtc6dy-mPpg" name="destinationX" visibility="protected" isUnique="false">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_StaHAGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>0</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_StbVIGbSEeqrtc6dy-mPpg" name="destinationY" visibility="protected" isUnique="false">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_StdKUGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>0</body>
                </defaultValue>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_StjQ8GbSEeqrtc6dy-mPpg" name="displayProfileWindow" specification="_SteYcGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;displayProfileWindow&quot;);&#xD;
    Preconditions.checkNotNull(args);&#xD;
    Preconditions.checkNotNull(args[0]);&#xD;
    // arg is the file path&#xD;
    String arg = args[0];&#xD;
    ReadProfile rp = new ReadProfile();&#xD;
    try (FileInputStream is = new FileInputStream(arg)) {&#xD;
        ProfileI profileI = rp.createProfileFromStream(is);&#xD;
        profileBuilder = ProfileBuilder.createProfileBuilder(profileI);&#xD;
        displayRadioButtons(args);&#xD;
        saveButton = new Button(mainShell, SWT.PUSH);&#xD;
        saveButton.setText(&quot;Save&quot;);&#xD;
        GridData gridData = new GridData(GridData.BEGINNING, GridData.CENTER, true, false);&#xD;
        gridData.horizontalSpan = 1;&#xD;
        saveButton.setLayoutData(gridData);&#xD;
        saveButton.addSelectionListener(new SelectionAdapter() {&#xD;
&#xD;
            @Override&#xD;
            public void widgetSelected(SelectionEvent e) {&#xD;
                save(arg);&#xD;
            }&#xD;
        });&#xD;
        saveButton.setVisible(true);&#xD;
        GridData data = (GridData) saveButton.getLayoutData();&#xD;
        data.exclude = false;&#xD;
        tableDisplay();&#xD;
        mainShell.setText(&quot;Edit Profile&quot;);&#xD;
        mainShell.pack();&#xD;
        mainShell.open();&#xD;
        while (!display.isDisposed()) {&#xD;
            if (!display.readAndDispatch())&#xD;
                display.sleep();&#xD;
        }&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_StmUQGbSEeqrtc6dy-mPpg" name="tableDisplay" specification="_StlGIGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;tableDisplay&quot;);&#xD;
    // table layout handling&#xD;
    mainShell.setLayout(new GridLayout());&#xD;
    table.setLinesVisible(true);&#xD;
    table.setHeaderVisible(true);&#xD;
    GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);&#xD;
    table.setLayoutData(data);&#xD;
    createColumns();&#xD;
    populateRows();&#xD;
    handleDragAndDrop();&#xD;
    checkRadioButton();&#xD;
    TableColumn[] tableColumns = table.getColumns();&#xD;
    for (TableColumn tableColumn : tableColumns) {&#xD;
        tableColumn.pack();&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Stp-oGbSEeqrtc6dy-mPpg" name="handleDragAndDrop" specification="_StoJcGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;handleDragAndDrop :&quot;);&#xD;
    table.addListener(SWT.MouseDown, new Listener() {&#xD;
&#xD;
        @Override&#xD;
        public void handleEvent(Event event) {&#xD;
            ViewerCell viewerCell = tableViewer.getCell(new Point(event.x, event.y));&#xD;
            sourceX = event.x;&#xD;
            sourceY = event.y;&#xD;
            if (viewerCell == null)&#xD;
                return;&#xD;
            cellBeingDragged = viewerCell;&#xD;
        }&#xD;
    });&#xD;
    table.addListener(SWT.MouseUp, new Listener() {&#xD;
&#xD;
        @Override&#xD;
        public void handleEvent(Event event) {&#xD;
            if (cellBeingDragged == null)&#xD;
                return;&#xD;
            ViewerCell destinationCell = tableViewer.getCell(new Point(event.x, event.y));&#xD;
            if (destinationCell != null &amp;&amp; destinationCell != cellBeingDragged) {&#xD;
                // if moving from one voter to another&#xD;
                if (cellBeingDragged.getColumnIndex() != destinationCell.getColumnIndex()) {&#xD;
                    MessageBox messageBox = new MessageBox(mainShell, SWT.OK);&#xD;
                    messageBox.setText(&quot;Warning&quot;);&#xD;
                    messageBox.setMessage(&quot;You can't move alternatives between voters !&quot;);&#xD;
                    messageBox.open();&#xD;
                } else {&#xD;
                    // if moving cell within the same column&#xD;
                    ViewerCell currentCell = tableViewer.getCell(new Point(sourceX, sourceY));&#xD;
                    String cellBeingDraggedText = cellBeingDragged.getText();&#xD;
                    // if source is over destination in the table&#xD;
                    if (cellBeingDragged.getBounds().y &lt; destinationCell.getBounds().y) {&#xD;
                        while (currentCell.getBounds().y != destinationCell.getBounds().y) {&#xD;
                            LOGGER.debug(&quot;Current cell : {} replaced by {}&quot;, currentCell.getText(), currentCell.getNeighbor(ViewerCell.BELOW, false).getText());&#xD;
                            currentCell.setText(currentCell.getNeighbor(ViewerCell.BELOW, false).getText());&#xD;
                            currentCell = currentCell.getNeighbor(ViewerCell.BELOW, false);&#xD;
                        }&#xD;
                        destinationCell.setText(cellBeingDraggedText);&#xD;
                    } else {&#xD;
                        // table&#xD;
                        while (currentCell.getBounds().y != destinationCell.getBounds().y) {&#xD;
                            LOGGER.debug(&quot;Current cell : {} replaced by {}&quot;, currentCell.getText(), currentCell.getNeighbor(ViewerCell.ABOVE, false).getText());&#xD;
                            currentCell.setText(currentCell.getNeighbor(ViewerCell.ABOVE, false).getText());&#xD;
                            currentCell = currentCell.getNeighbor(ViewerCell.ABOVE, false);&#xD;
                        }&#xD;
                        destinationCell.setText(cellBeingDraggedText);&#xD;
                    }&#xD;
                }&#xD;
            }&#xD;
        }&#xD;
    });&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Stu3IGbSEeqrtc6dy-mPpg" name="save" specification="_Stsa4GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;save :&quot;);&#xD;
    Preconditions.checkNotNull(outputFile);&#xD;
    File file = new File(outputFile);&#xD;
    ProfileBuilder pb = ProfileBuilder.createProfileBuilder(new ReadProfile().createProfileFromColumnsTable(table));&#xD;
    try (OutputStream outputStream = new FileOutputStream(file)) {&#xD;
        String fileExtension = file.toString().substring(file.toString().length() - 3);&#xD;
        if (fileExtension.equals(&quot;soc&quot;)) {&#xD;
            StrictProfile sp = pb.createStrictProfile();&#xD;
            sp.writeToSOC(outputStream);&#xD;
        } else {&#xD;
            // fileExtension == &quot;soi&quot;&#xD;
            StrictProfileI spi = pb.createStrictProfileI();&#xD;
            spi.writeToSOI(outputStream);&#xD;
        }&#xD;
    } catch (IOException ioe) {&#xD;
        MessageBox dialog = new MessageBox(mainShell, SWT.ICON_QUESTION | SWT.OK);&#xD;
        dialog.setText(&quot;IOException&quot;);&#xD;
        dialog.setMessage(&quot;Error when opening Stream : &quot; + ioe);&#xD;
        dialog.open();&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SteYcGbSEeqrtc6dy-mPpg" name="displayProfileWindow" visibility="public" method="_StjQ8GbSEeqrtc6dy-mPpg" raisedException="_QsKA8WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_StgNoGbSEeqrtc6dy-mPpg" name="args" type="_PF7qAGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Stg0sGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SthbwGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_StlGIGbSEeqrtc6dy-mPpg" name="tableDisplay" visibility="public" method="_StmUQGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_StoJcGbSEeqrtc6dy-mPpg" name="handleDragAndDrop" visibility="public" method="_Stp-oGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Stsa4GbSEeqrtc6dy-mPpg" name="save" visibility="public" method="_Stu3IGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SttpAGbSEeqrtc6dy-mPpg" name="outputFile" type="_PF7qAGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_SrmJIGbSEeqrtc6dy-mPpg" name="SOCColumnsGUI" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_SrmwMGbSEeqrtc6dy-mPpg" general="_SrNHkGbSEeqrtc6dy-mPpg"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SrolYGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SrqakGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(SOCColumnsGUI.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SrsPwGbSEeqrtc6dy-mPpg" name="alternativeToAdd" visibility="private" type="_PF7qAGbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_Sr3O4GbSEeqrtc6dy-mPpg" name="label" visibility="private" isLeaf="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_Sr5rIGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>new Label(mainShell, SWT.NULL)</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SsA_4GbSEeqrtc6dy-mPpg" name="newAlternativeText" visibility="private" isLeaf="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SsC1EGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>new Text(mainShell, SWT.SINGLE | SWT.BORDER)</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SsKw4GbSEeqrtc6dy-mPpg" name="addAlternativeButton" visibility="private" isLeaf="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SsMmEGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>new Button(mainShell, SWT.PUSH)</body>
                </defaultValue>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SsPCUGbSEeqrtc6dy-mPpg" name="tableDisplay" specification="_SsN0MGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;tableDisplay&quot;);&#xD;
    // table layout handling&#xD;
    mainShell.setLayout(new GridLayout());&#xD;
    table.setLinesVisible(true);&#xD;
    table.setHeaderVisible(true);&#xD;
    GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);&#xD;
    table.setLayoutData(data);&#xD;
    label.setText(&quot;New alternative : &quot;);&#xD;
    addAlternativeButton.setText(&quot;Add&quot;);&#xD;
    newAlternativeText.addListener(SWT.Modify, new Listener() {&#xD;
&#xD;
        @Override&#xD;
        public void handleEvent(Event event) {&#xD;
            try {&#xD;
                alternativeToAdd = newAlternativeText.getText();&#xD;
                addAlternativeButton.setEnabled(true);&#xD;
            } catch (IllegalArgumentException iae) {&#xD;
                LOGGER.debug(&quot;Illegal Argument Exception : {}&quot;, iae);&#xD;
                addAlternativeButton.setEnabled(false);&#xD;
            }&#xD;
        }&#xD;
    });&#xD;
    addAlternativeButton.addSelectionListener(new SelectionAdapter() {&#xD;
&#xD;
        @Override&#xD;
        public void widgetSelected(SelectionEvent e) {&#xD;
            addAlternative(alternativeToAdd);&#xD;
        }&#xD;
    });&#xD;
    createColumns();&#xD;
    populateRows();&#xD;
    handleDragAndDrop();&#xD;
    checkRadioButton();&#xD;
    TableColumn[] tableColumns = table.getColumns();&#xD;
    for (TableColumn tableColumn : tableColumns) {&#xD;
        tableColumn.pack();&#xD;
    }&#xD;
    saveButton.setText(&quot;Save&quot;);&#xD;
    saveButton.addSelectionListener(new SelectionAdapter() {&#xD;
&#xD;
        @Override&#xD;
        public void widgetSelected(SelectionEvent e) {&#xD;
            save(MainGUI.fileToRead);&#xD;
        }&#xD;
    });&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SsT60GbSEeqrtc6dy-mPpg" name="addAlternative" specification="_SsRekGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;addAlternative :&quot;);&#xD;
    if (Strings.isNullOrEmpty(alternative))&#xD;
        return;&#xD;
    try {&#xD;
        Integer.parseInt(alternative);&#xD;
    } catch (NumberFormatException nfe) {&#xD;
        LOGGER.debug(&quot;NumberFormatException : {}&quot;, nfe);&#xD;
        MessageBox messageBox = new MessageBox(mainShell, SWT.OK);&#xD;
        messageBox.setText(&quot;Warning&quot;);&#xD;
        messageBox.setMessage(&quot;Alternative should be an integer !&quot;);&#xD;
        messageBox.open();&#xD;
        return;&#xD;
    }&#xD;
    StrictProfile strictProfile = profileBuilder.createStrictProfile();&#xD;
    if (strictProfile.getAlternatives().contains(Alternative.withId(Integer.parseInt(alternative)))) {&#xD;
        MessageBox messageBox = new MessageBox(mainShell, SWT.OK);&#xD;
        messageBox.setText(&quot;Warning&quot;);&#xD;
        messageBox.setMessage(&quot;This alternative already exists !&quot;);&#xD;
        messageBox.open();&#xD;
    } else {&#xD;
        TableItem item = new TableItem(table, SWT.NONE);&#xD;
        List&lt;String> altForEveryone = Collections.nCopies(strictProfile.getNbVoters(), alternative);&#xD;
        item.setText(altForEveryone.toArray(new String[strictProfile.getNbVoters()]));&#xD;
        newAlternativeText.setText(&quot;&quot;);&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SsWXEGbSEeqrtc6dy-mPpg" name="createColumns" specification="_SsVwAGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;createColumns :&quot;);&#xD;
    // if profile get from file is SOC, create a StrictProfile from it&#xD;
    StrictProfile strictProfile = profileBuilder.createStrictProfile();&#xD;
    // get voters&#xD;
    Iterable&lt;Voter> allVoters = strictProfile.getAllVoters();&#xD;
    // from&#xD;
    // profile&#xD;
    // COLUMNS&#xD;
    List&lt;String> titles = new ArrayList&lt;>();&#xD;
    for (Voter v : allVoters) {&#xD;
        titles.add(&quot;Voter &quot; + v.getId());&#xD;
    }&#xD;
    for (String title : titles) {&#xD;
        TableColumn column = new TableColumn(table, SWT.NONE);&#xD;
        column.setText(title);&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SsZaYGbSEeqrtc6dy-mPpg" name="populateRows" specification="_SsYMQGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;populateRows :&quot;);&#xD;
    StrictProfile strictProfile = profileBuilder.createStrictProfile();&#xD;
    // ROWS&#xD;
    List&lt;String> alternatives = new ArrayList&lt;>();&#xD;
    for (int i = 0; i &lt; strictProfile.getNbAlternatives(); i++) {&#xD;
        // get ith alternative of each voter&#xD;
        List&lt;Alternative> ithAlternatives = strictProfile.getIthAlternatives(i);&#xD;
        for (Alternative alt : ithAlternatives) {&#xD;
            // convert alternatives in the&#xD;
            alternatives.add(alt.toString());&#xD;
        // list to strings&#xD;
        }&#xD;
        TableItem item = new TableItem(table, SWT.NONE);&#xD;
        item.setText(alternatives.toArray(// create&#xD;
        new String[strictProfile.getNbAlternatives()]));&#xD;
        // a&#xD;
        // row&#xD;
        // with&#xD;
        // ith&#xD;
        // alternatives&#xD;
        // empty the list&#xD;
        alternatives.clear();&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SsfhAGbSEeqrtc6dy-mPpg" name="main" specification="_SsbPkGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    SOCColumnsGUI socColumns = new SOCColumnsGUI();&#xD;
    socColumns.displayProfileWindow(args);&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SsN0MGbSEeqrtc6dy-mPpg" name="tableDisplay" visibility="public" method="_SsPCUGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SsRekGbSEeqrtc6dy-mPpg" name="addAlternative" visibility="public" method="_SsT60GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SsSssGbSEeqrtc6dy-mPpg" name="alternative" type="_PF7qAGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SsVwAGbSEeqrtc6dy-mPpg" name="createColumns" visibility="public" method="_SsWXEGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SsYMQGbSEeqrtc6dy-mPpg" name="populateRows" visibility="public" method="_SsZaYGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SsbPkGbSEeqrtc6dy-mPpg" name="main" visibility="public" isStatic="true" method="_SsfhAGbSEeqrtc6dy-mPpg" raisedException="_QsKA8WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SsdEwGbSEeqrtc6dy-mPpg" name="args" type="_PF7qAGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ssdr0GbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SseS4GbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_SslnoGbSEeqrtc6dy-mPpg" name="SOCRowsGUI" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_SsmOsGbSEeqrtc6dy-mPpg" general="_Sqze8GbSEeqrtc6dy-mPpg"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_Ssnc0GbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SspSAGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(SOCRowsGUI.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SsruQGbSEeqrtc6dy-mPpg" name="createColumns" specification="_SsqgIGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;createColumns :&quot;);&#xD;
    StrictProfile strictProfile = profileBuilder.createStrictProfile();&#xD;
    // if profile get from file is SOC, create a StrictProfile from it&#xD;
    // COLUMNS&#xD;
    List&lt;String> titles = new ArrayList&lt;>();&#xD;
    Iterable&lt;Alternative> allAlternatives = strictProfile.getAlternatives();&#xD;
    titles.add(&quot;Voters&quot;);&#xD;
    for (Alternative a : allAlternatives) {&#xD;
        titles.add(&quot;Alternative &quot; + a);&#xD;
    }&#xD;
    for (String title : titles) {&#xD;
        TableColumn column = new TableColumn(table, SWT.NONE);&#xD;
        column.setText(title);&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SsuKgGbSEeqrtc6dy-mPpg" name="checkRadioButton" specification="_SstjcGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;checkRadioButtons&quot;);&#xD;
    columnsButton.setSelection(false);&#xD;
    rowsButton.setSelection(true);&#xD;
    wrapButton.setSelection(false);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SsvYoGbSEeqrtc6dy-mPpg" name="populateRows" specification="_SsuKgWbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;populateRows :&quot;);&#xD;
    StrictProfile strictProfile = profileBuilder.createStrictProfile();&#xD;
    // ROWS&#xD;
    // get voters&#xD;
    Iterable&lt;Voter> allVoters = strictProfile.getAllVoters();&#xD;
    // from&#xD;
    // profile&#xD;
    int nbAlternatives = strictProfile.getNbAlternatives();&#xD;
    List&lt;String> line = new ArrayList&lt;>();&#xD;
    for (Voter v : allVoters) {&#xD;
        line.add(&quot;Voter &quot; + v.getId());&#xD;
        OldCompletePreferenceImpl pref = strictProfile.getPreference(v);&#xD;
        Iterable&lt;Alternative> allPref = OldCompletePreferenceImpl.toAlternativeSet(pref.getPreferencesNonStrict());&#xD;
        for (Alternative a : allPref) {&#xD;
            line.add(a.toString());&#xD;
        }&#xD;
        TableItem item = new TableItem(table, SWT.NONE);&#xD;
        // create&#xD;
        item.setText(line.toArray(new String[nbAlternatives + 1]));&#xD;
        // a row&#xD;
        // with&#xD;
        // ith&#xD;
        // alternatives&#xD;
        // empty the list&#xD;
        line.clear();&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Ss1fQGbSEeqrtc6dy-mPpg" name="main" specification="_SsxN0GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    SOCRowsGUI socRows = new SOCRowsGUI();&#xD;
    socRows.displayProfileWindow(args);&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SsqgIGbSEeqrtc6dy-mPpg" name="createColumns" visibility="public" method="_SsruQGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SstjcGbSEeqrtc6dy-mPpg" name="checkRadioButton" visibility="public" method="_SsuKgGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SsuKgWbSEeqrtc6dy-mPpg" name="populateRows" visibility="public" method="_SsvYoGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SsxN0GbSEeqrtc6dy-mPpg" name="main" visibility="public" isStatic="true" method="_Ss1fQGbSEeqrtc6dy-mPpg" raisedException="_QsKA8WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Ssyb8GbSEeqrtc6dy-mPpg" name="args" type="_PF7qAGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SszqEGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ss0RIGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_St7EYGbSEeqrtc6dy-mPpg" name="MainGUI" visibility="public">
              <ownedAttribute xmi:type="uml:Property" xmi:id="_St8SgGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_St-uwGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(MainGUI.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SuE1YGbSEeqrtc6dy-mPpg" name="display" visibility="protected" isLeaf="true" isStatic="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SuGqkGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>Display.getDefault()</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SuMKIGbSEeqrtc6dy-mPpg" name="mainShell" visibility="protected" isLeaf="true" isStatic="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SuOmYGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>new Shell(display, SWT.CLOSE | SWT.RESIZE)</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SuV7IGbSEeqrtc6dy-mPpg" name="gridData" visibility="protected" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SuXwUGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>new GridData(GridData.CENTER, GridData.CENTER, true, false)</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SuZlgGbSEeqrtc6dy-mPpg" name="label" visibility="protected" isLeaf="true" isStatic="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SucBwGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>new Label(mainShell, SWT.CENTER)</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_Sud28GbSEeqrtc6dy-mPpg" name="selectFileToReadButton" visibility="protected" isLeaf="true" isStatic="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SugTMGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>new Button(mainShell, SWT.PUSH)</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SuiIYGbSEeqrtc6dy-mPpg" name="socColumnsGUIButton" visibility="protected" isStatic="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_Suj9kGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>new Button(mainShell, SWT.PUSH)</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SulywGbSEeqrtc6dy-mPpg" name="soicolumnsGUIButton" visibility="protected" isStatic="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_Sunn8GbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>new Button(mainShell, SWT.PUSH)</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_Suo2EGbSEeqrtc6dy-mPpg" name="socRowsGUIButton" visibility="protected" isStatic="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SuqEMGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>new Button(mainShell, SWT.PUSH)</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SuqrQGbSEeqrtc6dy-mPpg" name="soiRowsGUIButton" visibility="protected" isStatic="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SusgcGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>new Button(mainShell, SWT.PUSH)</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SuuVoGbSEeqrtc6dy-mPpg" name="socWrappedColumnsGUIButton" visibility="protected" isStatic="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SuwK0GbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>new Button(mainShell, SWT.PUSH)</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SuyAAGbSEeqrtc6dy-mPpg" name="soiWrappedColumnsGUIButton" visibility="protected" isStatic="true" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_Suz1MGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>new Button(mainShell, SWT.PUSH)</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_Su1qYGbSEeqrtc6dy-mPpg" name="fileToRead" visibility="protected" isStatic="true" type="_PF7qAGbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_Su3fkGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>&quot;&quot;</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_Su4tsGbSEeqrtc6dy-mPpg" name="fileExtension" visibility="protected" isStatic="true" type="_PF7qAGbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_Su7J8GbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>&quot;&quot;</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_Su8_IGbSEeqrtc6dy-mPpg" name="profileToRead" visibility="protected" isStatic="true" type="_PF7qAGbSEeqrtc6dy-mPpg" isUnique="false">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Su-NQGbSEeqrtc6dy-mPpg"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Su-0UGbSEeqrtc6dy-mPpg" value="*"/>
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_Su_bYGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>new String[1]</body>
                </defaultValue>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SvB3oGbSEeqrtc6dy-mPpg" name="displayGUI" specification="_SvApgGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;displayGUI :&quot;);&#xD;
    GridLayout gridLayout = new GridLayout();&#xD;
    gridLayout.marginTop = 10;&#xD;
    gridLayout.verticalSpacing = 10;&#xD;
    gridLayout.numColumns = 3;&#xD;
    mainShell.setLayout(gridLayout);&#xD;
    // file chooser&#xD;
    FileDialog fileChooser = new FileDialog(mainShell, SWT.OPEN);&#xD;
    fileChooser.setFilterExtensions(new String[] { &quot;*.soc&quot;, &quot;*.soi&quot; });&#xD;
    Font boldFont = new Font(label.getDisplay(), new FontData(&quot;Arial&quot;, 20, SWT.BOLD));&#xD;
    label.setFont(boldFont);&#xD;
    label.setText(&quot;Profile Editing&quot;);&#xD;
    selectFileToReadButton.setText(&quot;Select a profile&quot;);&#xD;
    gridData.horizontalSpan = 3;&#xD;
    gridData.horizontalAlignment = SWT.FILL;&#xD;
    label.setLayoutData(gridData);&#xD;
    gridData = new GridData(GridData.CENTER, GridData.CENTER, true, false);&#xD;
    gridData.horizontalSpan = 3;&#xD;
    selectFileToReadButton.setLayoutData(gridData);&#xD;
    createSOCButtons();&#xD;
    createSOIButtons();&#xD;
    if (Objects.equal(fileToRead, &quot;&quot;)) {&#xD;
        mainShell.setText(&quot;Profile editing - No profile loaded&quot;);&#xD;
        // remove SOI buttons&#xD;
        soicolumnsGUIButton.setVisible(false);&#xD;
        soiRowsGUIButton.setVisible(false);&#xD;
        soiWrappedColumnsGUIButton.setVisible(false);&#xD;
        GridData data = (GridData) soicolumnsGUIButton.getLayoutData();&#xD;
        data.exclude = true;&#xD;
        data = (GridData) soiRowsGUIButton.getLayoutData();&#xD;
        data.exclude = true;&#xD;
        data = (GridData) soiWrappedColumnsGUIButton.getLayoutData();&#xD;
        data.exclude = true;&#xD;
        // remove SOC buttons&#xD;
        socColumnsGUIButton.setVisible(false);&#xD;
        socRowsGUIButton.setVisible(false);&#xD;
        socWrappedColumnsGUIButton.setVisible(false);&#xD;
        data = (GridData) socColumnsGUIButton.getLayoutData();&#xD;
        data.exclude = true;&#xD;
        data = (GridData) socRowsGUIButton.getLayoutData();&#xD;
        data.exclude = true;&#xD;
        data = (GridData) socWrappedColumnsGUIButton.getLayoutData();&#xD;
        data.exclude = true;&#xD;
    } else {&#xD;
        mainShell.setText(&quot;Profile editing - &quot; + fileToRead);&#xD;
    }&#xD;
    // pack elements to reduce size to the smallest&#xD;
    mainShell.pack();&#xD;
    // center shell in your primary monitor&#xD;
    Rectangle screenSize = display.getPrimaryMonitor().getBounds();&#xD;
    mainShell.setLocation((screenSize.width - mainShell.getBounds().width) / 2, (screenSize.height - mainShell.getBounds().height) / 2);&#xD;
    // open the shell&#xD;
    mainShell.open();&#xD;
    selectFileToReadButton.addSelectionListener(new SelectionAdapter() {&#xD;
&#xD;
        @Override&#xD;
        public void widgetSelected(SelectionEvent e) {&#xD;
            fileToRead = fileChooser.open();&#xD;
            // shell text&#xD;
            if (fileToRead == null || fileToRead.isEmpty()) {&#xD;
                mainShell.setText(&quot;Profile editing - No profile loaded&quot;);&#xD;
                label.setText(&quot;Profile editing&quot;);&#xD;
            } else {&#xD;
                fileExtension = fileToRead.substring(fileToRead.length() - 3);&#xD;
                if (fileExtension.equals(&quot;soc&quot;)) {&#xD;
                    label.setText(&quot;SOC Profile editing&quot;);&#xD;
                    displaySOCButtons();&#xD;
                    mainShell.pack();&#xD;
                    mainShell.layout();&#xD;
                } else {&#xD;
                    // if extension is soi&#xD;
                    label.setText(&quot;SOI Profile editing&quot;);&#xD;
                    displaySOIButtons();&#xD;
                    mainShell.pack();&#xD;
                    mainShell.layout();&#xD;
                }&#xD;
                mainShell.setText(&quot;Profile editing - &quot; + fileToRead);&#xD;
                profileToRead[0] = fileToRead;&#xD;
            }&#xD;
        }&#xD;
    });&#xD;
    while (!mainShell.isDisposed()) {&#xD;
        if (!display.readAndDispatch())&#xD;
            display.sleep();&#xD;
    }&#xD;
    display.dispose();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SvFiAGbSEeqrtc6dy-mPpg" name="createSOCButtons" specification="_SvET4GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    socColumnsGUIButton.setText(&quot;Columns : Voters&quot;);&#xD;
    socRowsGUIButton.setText(&quot;Rows : Voters&quot;);&#xD;
    socWrappedColumnsGUIButton.setText(&quot;Columns : Voters wrapped&quot;);&#xD;
    gridData = new GridData(GridData.CENTER, GridData.CENTER, true, false);&#xD;
    gridData.horizontalSpan = 1;&#xD;
    socColumnsGUIButton.setLayoutData(gridData);&#xD;
    gridData = new GridData(GridData.CENTER, GridData.CENTER, true, false);&#xD;
    gridData.horizontalSpan = 1;&#xD;
    socRowsGUIButton.setLayoutData(gridData);&#xD;
    gridData = new GridData(GridData.CENTER, GridData.CENTER, true, false);&#xD;
    gridData.horizontalSpan = 1;&#xD;
    socWrappedColumnsGUIButton.setLayoutData(gridData);&#xD;
    // listeners&#xD;
    socColumnsGUIButton.addSelectionListener(new SelectionAdapter() {&#xD;
&#xD;
        @Override&#xD;
        public void widgetSelected(SelectionEvent e) {&#xD;
            if (fileToRead == null || fileToRead.isEmpty()) {&#xD;
                displayMessageNoFileLoaded();&#xD;
            } else {&#xD;
                try {&#xD;
                    new SOCColumnsGUI().displayProfileWindow(profileToRead);&#xD;
                } catch (IOException ioe) {&#xD;
                    LOGGER.debug(&quot;IOException when opening Columns GUI : {}&quot;, ioe);&#xD;
                }&#xD;
            }&#xD;
        }&#xD;
    });&#xD;
    socRowsGUIButton.addSelectionListener(new SelectionAdapter() {&#xD;
&#xD;
        @Override&#xD;
        public void widgetSelected(SelectionEvent e) {&#xD;
            if (fileToRead == null || fileToRead.isEmpty()) {&#xD;
                displayMessageNoFileLoaded();&#xD;
            } else {&#xD;
                try {&#xD;
                    new SOCRowsGUI().displayProfileWindow(profileToRead);&#xD;
                } catch (IOException ioe) {&#xD;
                    LOGGER.debug(&quot;IOException when opening Rows GUI : {}&quot;, ioe);&#xD;
                }&#xD;
            }&#xD;
        }&#xD;
    });&#xD;
    socWrappedColumnsGUIButton.addSelectionListener(new SelectionAdapter() {&#xD;
&#xD;
        @Override&#xD;
        public void widgetSelected(SelectionEvent e) {&#xD;
            if (fileToRead == null || fileToRead.isEmpty()) {&#xD;
                displayMessageNoFileLoaded();&#xD;
            } else {&#xD;
                try {&#xD;
                    new SOCWrappedColumnsGUI().displayProfileWindow(profileToRead);&#xD;
                } catch (IOException ioe) {&#xD;
                    LOGGER.debug(&quot;IOException when opening wrapped GUI : {}&quot;, ioe);&#xD;
                }&#xD;
            }&#xD;
        }&#xD;
    });&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SvIlUGbSEeqrtc6dy-mPpg" name="createSOIButtons" specification="_SvHXMGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    soicolumnsGUIButton.setText(&quot;Columns : Voters&quot;);&#xD;
    soiRowsGUIButton.setText(&quot;Rows : Voters&quot;);&#xD;
    soiWrappedColumnsGUIButton.setText(&quot;Columns : Voters wrapped&quot;);&#xD;
    gridData = new GridData(GridData.CENTER, GridData.CENTER, true, false);&#xD;
    gridData.horizontalSpan = 1;&#xD;
    soicolumnsGUIButton.setLayoutData(gridData);&#xD;
    gridData = new GridData(GridData.CENTER, GridData.CENTER, true, false);&#xD;
    gridData.horizontalSpan = 1;&#xD;
    soiRowsGUIButton.setLayoutData(gridData);&#xD;
    gridData = new GridData(GridData.CENTER, GridData.CENTER, true, false);&#xD;
    gridData.horizontalSpan = 1;&#xD;
    soiWrappedColumnsGUIButton.setLayoutData(gridData);&#xD;
    // listeners&#xD;
    soicolumnsGUIButton.addSelectionListener(new SelectionAdapter() {&#xD;
&#xD;
        @Override&#xD;
        public void widgetSelected(SelectionEvent e) {&#xD;
            if (fileToRead == null || fileToRead.isEmpty()) {&#xD;
                displayMessageNoFileLoaded();&#xD;
            } else {&#xD;
                try {&#xD;
                    new SOIColumnsGUI().displayProfileWindow(profileToRead);&#xD;
                } catch (IOException ioe) {&#xD;
                    LOGGER.debug(&quot;IOException when opening Columns SOI GUI : {}&quot;, ioe);&#xD;
                }&#xD;
            }&#xD;
        }&#xD;
    });&#xD;
    soiRowsGUIButton.addSelectionListener(new SelectionAdapter() {&#xD;
&#xD;
        @Override&#xD;
        public void widgetSelected(SelectionEvent e) {&#xD;
            if (fileToRead == null || fileToRead.isEmpty()) {&#xD;
                displayMessageNoFileLoaded();&#xD;
            } else {&#xD;
                try {&#xD;
                    new SOIRowsGUI().displayProfileWindow(profileToRead);&#xD;
                } catch (IOException ioe) {&#xD;
                    LOGGER.debug(&quot;IOException when opening Rows SOI GUI : {}&quot;, ioe);&#xD;
                }&#xD;
            }&#xD;
        }&#xD;
    });&#xD;
    soiWrappedColumnsGUIButton.addSelectionListener(new SelectionAdapter() {&#xD;
&#xD;
        @Override&#xD;
        public void widgetSelected(SelectionEvent e) {&#xD;
            if (fileToRead == null || fileToRead.isEmpty()) {&#xD;
                displayMessageNoFileLoaded();&#xD;
            } else {&#xD;
                try {&#xD;
                    new SOIWrappedColumnsGUI().displayProfileWindow(profileToRead);&#xD;
                } catch (IOException ioe) {&#xD;
                    LOGGER.debug(&quot;IOException when opening Wrapped Columns SOI GUI : {}&quot;, ioe);&#xD;
                }&#xD;
            }&#xD;
        }&#xD;
    });&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SvMPsGbSEeqrtc6dy-mPpg" name="displaySOCButtons" specification="_SvLBkGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;displaySOCButtons : &quot;);&#xD;
    // remove SOI buttons&#xD;
    soicolumnsGUIButton.setVisible(false);&#xD;
    soiRowsGUIButton.setVisible(false);&#xD;
    soiWrappedColumnsGUIButton.setVisible(false);&#xD;
    GridData data = (GridData) soicolumnsGUIButton.getLayoutData();&#xD;
    data.exclude = true;&#xD;
    data = (GridData) soiRowsGUIButton.getLayoutData();&#xD;
    data.exclude = true;&#xD;
    data = (GridData) soiWrappedColumnsGUIButton.getLayoutData();&#xD;
    data.exclude = true;&#xD;
    // add SOC buttons&#xD;
    socColumnsGUIButton.setVisible(true);&#xD;
    socRowsGUIButton.setVisible(true);&#xD;
    socWrappedColumnsGUIButton.setVisible(true);&#xD;
    data = (GridData) socColumnsGUIButton.getLayoutData();&#xD;
    data.exclude = false;&#xD;
    data = (GridData) socRowsGUIButton.getLayoutData();&#xD;
    data.exclude = false;&#xD;
    data = (GridData) socWrappedColumnsGUIButton.getLayoutData();&#xD;
    data.exclude = false;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SvOr8GbSEeqrtc6dy-mPpg" name="displaySOIButtons" specification="_SvNd0GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;displaySOIButtons : &quot;);&#xD;
    // remove SOC buttons&#xD;
    socColumnsGUIButton.setVisible(false);&#xD;
    socRowsGUIButton.setVisible(false);&#xD;
    socWrappedColumnsGUIButton.setVisible(false);&#xD;
    GridData data = (GridData) socColumnsGUIButton.getLayoutData();&#xD;
    data.exclude = true;&#xD;
    data = (GridData) socRowsGUIButton.getLayoutData();&#xD;
    data.exclude = true;&#xD;
    data = (GridData) socWrappedColumnsGUIButton.getLayoutData();&#xD;
    data.exclude = true;&#xD;
    // add SOI buttons&#xD;
    soicolumnsGUIButton.setVisible(true);&#xD;
    soiRowsGUIButton.setVisible(true);&#xD;
    soiWrappedColumnsGUIButton.setVisible(true);&#xD;
    data = (GridData) soicolumnsGUIButton.getLayoutData();&#xD;
    data.exclude = false;&#xD;
    data = (GridData) soiRowsGUIButton.getLayoutData();&#xD;
    data.exclude = false;&#xD;
    data = (GridData) soiWrappedColumnsGUIButton.getLayoutData();&#xD;
    data.exclude = false;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SvRIMGbSEeqrtc6dy-mPpg" name="displayMessageNoFileLoaded" specification="_SvQhIGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;displayMessageNoFileLoaded : &quot;);&#xD;
    MessageBox messageBox = new MessageBox(mainShell, SWT.OK);&#xD;
    messageBox.setText(&quot;Warning&quot;);&#xD;
    messageBox.setMessage(&quot;No profile loaded !&quot;);&#xD;
    messageBox.open();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SvWnwGbSEeqrtc6dy-mPpg" name="main" specification="_SvS9YGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    new MainGUI().displayGUI();&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SvApgGbSEeqrtc6dy-mPpg" name="displayGUI" visibility="public" method="_SvB3oGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SvET4GbSEeqrtc6dy-mPpg" name="createSOCButtons" visibility="public" method="_SvFiAGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SvHXMGbSEeqrtc6dy-mPpg" name="createSOIButtons" visibility="public" method="_SvIlUGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SvLBkGbSEeqrtc6dy-mPpg" name="displaySOCButtons" visibility="public" method="_SvMPsGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SvNd0GbSEeqrtc6dy-mPpg" name="displaySOIButtons" visibility="public" method="_SvOr8GbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SvQhIGbSEeqrtc6dy-mPpg" name="displayMessageNoFileLoaded" visibility="public" method="_SvRIMGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SvS9YGbSEeqrtc6dy-mPpg" name="main" visibility="public" isStatic="true" method="_SvWnwGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SvUykGbSEeqrtc6dy-mPpg" name="args" type="_PF7qAGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SvVZoGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SvWAsGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_SvcHUGbSEeqrtc6dy-mPpg" name="SOCWrappedColumnsGUI" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_SvcuYGbSEeqrtc6dy-mPpg" general="_SrNHkGbSEeqrtc6dy-mPpg"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_Svd8gGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SvfxsGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(SOCWrappedColumnsGUI.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SviN8GbSEeqrtc6dy-mPpg" name="createColumns" specification="_Svg_0GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;createColumns :&quot;);&#xD;
    StrictProfile strictProfile = profileBuilder.createStrictProfile();&#xD;
    // if profile get from file is SOC, create a StrictProfile from it&#xD;
    Set&lt;OldCompletePreferenceImpl> uniquePreferences = strictProfile.getUniquePreferences();&#xD;
    // COLUMNS&#xD;
    List&lt;String> titles = new ArrayList&lt;>();&#xD;
    for (OldCompletePreferenceImpl p : uniquePreferences) {&#xD;
        int nbVoters = strictProfile.getNbVoterForPreference(p);&#xD;
        String voterOrVoters = (nbVoters > 1) ? &quot; voters&quot; : &quot; voter&quot;;&#xD;
        titles.add(nbVoters + voterOrVoters);&#xD;
    }&#xD;
    for (String title : titles) {&#xD;
        TableColumn column = new TableColumn(table, SWT.NONE);&#xD;
        column.setText(title);&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SvnGcGbSEeqrtc6dy-mPpg" name="checkRadioButton" specification="_Svl4UGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;checkRadioButtons&quot;);&#xD;
    columnsButton.setSelection(false);&#xD;
    rowsButton.setSelection(false);&#xD;
    wrapButton.setSelection(true);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SvpisGbSEeqrtc6dy-mPpg" name="populateRows" specification="_SvoUkGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;populateRows :&quot;);&#xD;
    StrictProfile strictProfile = profileBuilder.createStrictProfile();&#xD;
    // ROWS&#xD;
    List&lt;String> alternatives = new ArrayList&lt;>();&#xD;
    // nb of rows&#xD;
    int nbAlternatives = strictProfile.getNbAlternatives();&#xD;
    for (int i = 0; i &lt; nbAlternatives; i++) {&#xD;
        // get ith alternative of each voter&#xD;
        List&lt;Alternative> ithAlternatives = strictProfile.getIthAlternativesOfUniquePreferences(i);&#xD;
        for (Alternative alt : ithAlternatives) {&#xD;
            // convert alternatives in the&#xD;
            alternatives.add(alt.toString());&#xD;
        // list to strings&#xD;
        }&#xD;
        TableItem item = new TableItem(table, SWT.NONE);&#xD;
        // create&#xD;
        item.setText(alternatives.toArray(new String[nbAlternatives]));&#xD;
        // a&#xD;
        // row&#xD;
        // with&#xD;
        // ith&#xD;
        // alternatives&#xD;
        // empty the list&#xD;
        alternatives.clear();&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Svw3cGbSEeqrtc6dy-mPpg" name="main" specification="_SvsmAGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    SOCWrappedColumnsGUI socWrapped = new SOCWrappedColumnsGUI();&#xD;
    socWrapped.displayProfileWindow(args);&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Svg_0GbSEeqrtc6dy-mPpg" name="createColumns" visibility="public" method="_SviN8GbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Svl4UGbSEeqrtc6dy-mPpg" name="checkRadioButton" visibility="public" method="_SvnGcGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SvoUkGbSEeqrtc6dy-mPpg" name="populateRows" visibility="public" method="_SvpisGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SvsmAGbSEeqrtc6dy-mPpg" name="main" visibility="public" isStatic="true" method="_Svw3cGbSEeqrtc6dy-mPpg" raisedException="_QsKA8WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SvubMGbSEeqrtc6dy-mPpg" name="args" type="_PF7qAGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SvvCQGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SvvpUGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_SxjnMGbSEeqrtc6dy-mPpg" name="SOIColumnsGUI" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_Sxk1UGbSEeqrtc6dy-mPpg" general="_SrNHkGbSEeqrtc6dy-mPpg"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SxmDcGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_Sxn4oGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(SOIColumnsGUI.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Sxpt0GbSEeqrtc6dy-mPpg" name="createColumns" specification="_SxpGwGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;createColumns :&quot;);&#xD;
    StrictProfileI strictProfile = profileBuilder.createStrictProfileI();&#xD;
    // if profile get from file is SOI, create a StrictProfile from it&#xD;
    // get voters&#xD;
    Iterable&lt;Voter> allVoters = strictProfile.getAllVoters();&#xD;
    // from&#xD;
    // profile&#xD;
    // COLUMNS&#xD;
    List&lt;String> titles = new ArrayList&lt;>();&#xD;
    for (Voter v : allVoters) {&#xD;
        titles.add(&quot;Voter &quot; + v.getId());&#xD;
    }&#xD;
    for (String title : titles) {&#xD;
        TableColumn column = new TableColumn(table, SWT.NONE);&#xD;
        column.setText(title);&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SxsKEGbSEeqrtc6dy-mPpg" name="populateRows" specification="_SxrjAGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;populateRows&quot;);&#xD;
    StrictProfileI strictProfile = profileBuilder.createStrictProfileI();&#xD;
    // ROWS&#xD;
    List&lt;String> alternatives = new ArrayList&lt;>();&#xD;
    int nbAlternatives = strictProfile.getMaxSizeOfPreference();&#xD;
    for (int i = 0; i &lt; nbAlternatives; i++) {&#xD;
        TableItem item = new TableItem(table, SWT.NONE);&#xD;
        // create a row with ith alternatives&#xD;
        item.setText(strictProfile.getIthAlternativesAsStrings(i).toArray(new String[nbAlternatives]));&#xD;
        // empty the list&#xD;
        alternatives.clear();&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Sxy3wGbSEeqrtc6dy-mPpg" name="main" specification="_SxumUGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    SOIColumnsGUI soiColumns = new SOIColumnsGUI();&#xD;
    soiColumns.displayProfileWindow(args);&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SxpGwGbSEeqrtc6dy-mPpg" name="createColumns" visibility="public" method="_Sxpt0GbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SxrjAGbSEeqrtc6dy-mPpg" name="populateRows" visibility="public" method="_SxsKEGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SxumUGbSEeqrtc6dy-mPpg" name="main" visibility="public" isStatic="true" method="_Sxy3wGbSEeqrtc6dy-mPpg" raisedException="_QsKA8WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sxv0cGbSEeqrtc6dy-mPpg" name="args" type="_PF7qAGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SxxCkGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SxxpoGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="_SwyLIGbSEeqrtc6dy-mPpg" name="management">
            <packagedElement xmi:type="uml:Class" xmi:id="_SwzZQGbSEeqrtc6dy-mPpg" name="ProfileBuilder" visibility="public">
              <ownedAttribute xmi:type="uml:Property" xmi:id="_S2r-0GbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_S2ubEGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(ProfileBuilder.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_S2wQQGbSEeqrtc6dy-mPpg" name="votes" visibility="protected" type="_POESUGbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_S2xeYGbSEeqrtc6dy-mPpg" name="nextVoterId" visibility="protected" isUnique="false">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_S2zTkGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>1</body>
                </defaultValue>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S24zIGbSEeqrtc6dy-mPpg" name="ProfileBuilder" specification="_S20hsGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;constructor empty:&quot;);&#xD;
    this.votes = new HashMap&lt;>();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S3BWAGbSEeqrtc6dy-mPpg" name="ProfileBuilder" specification="_S26oUGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;parameter prof : {}&quot;, prof);&#xD;
    this.votes = castMapExtendsToRegularVoterPref(prof.getProfile());&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S3G1kGbSEeqrtc6dy-mPpg" name="addVote" specification="_S3DLMGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;addProfile:&quot;);&#xD;
    Preconditions.checkNotNull(v);&#xD;
    Preconditions.checkNotNull(pref);&#xD;
    LOGGER.debug(&quot;parameters: voter {} pref {}&quot;, v, pref);&#xD;
    votes.put(v, pref);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S3M8MGbSEeqrtc6dy-mPpg" name="addVotes" specification="_S3IqwGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;AddVotes&quot;);&#xD;
    Preconditions.checkNotNull(pref);&#xD;
    Preconditions.checkNotNull(nbVoters);&#xD;
    LOGGER.debug(&quot;parameters : nbVoters {} for the preference {}&quot;, nbVoters, pref);&#xD;
    for (int m = 0; m &lt; nbVoters; m++) {&#xD;
        // we create as many profiles as&#xD;
        // voters&#xD;
        Voter v = Voter.createVoter(nextVoterId);&#xD;
        LOGGER.debug(&quot;adds the voter {} and the pref as parameter to the profile&quot;, nextVoterId);&#xD;
        nextVoterId++;&#xD;
        addVote(v, pref);&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S3QmkGbSEeqrtc6dy-mPpg" name="createProfileI" specification="_S3OxYGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;createProfileI:&quot;);&#xD;
    return ImmutableProfileI.createImmutableProfileI(votes);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S3Tp4GbSEeqrtc6dy-mPpg" name="createProfile" specification="_S3R0sGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;createProfile:&quot;);&#xD;
    if (!createProfileI().isComplete()) {&#xD;
        throw new IllegalArgumentException(&quot;The built profile is not complete.&quot;);&#xD;
    }&#xD;
    return ImmutableProfile.createImmutableProfile(votes);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S3X7UGbSEeqrtc6dy-mPpg" name="createStrictProfileI" specification="_S3VfEGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;createStrictProfileI:&quot;);&#xD;
    if (!createProfileI().isStrict()) {&#xD;
        throw new IllegalArgumentException(&quot;The built profile is not strict.&quot;);&#xD;
    }&#xD;
    return ImmutableStrictProfileI.createImmutableStrictProfileI(votes);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S3a-oGbSEeqrtc6dy-mPpg" name="createStrictProfile" specification="_S3ZJcGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    if (!createProfileI().isComplete()) {&#xD;
        throw new IllegalArgumentException(&quot;The built profile is not complete.&quot;);&#xD;
    }&#xD;
    if (!createProfileI().isStrict()) {&#xD;
        throw new IllegalArgumentException(&quot;The built profile is not strict.&quot;);&#xD;
    }&#xD;
    return ImmutableStrictProfile.createImmutableStrictProfile(votes);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S3epAGbSEeqrtc6dy-mPpg" name="castMapExtendsToRegularVoterPref" specification="_S3cz0GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;castMapToRegularVoterPref&quot;);&#xD;
    Preconditions.checkNotNull(map);&#xD;
    Map&lt;Voter, OldCompletePreferenceImpl> result = new HashMap&lt;>();&#xD;
    for (Voter v : map.keySet()) {&#xD;
        LOGGER.debug(&quot;adds the voter {} and his preference {}&quot;, v, map.get(v));&#xD;
        result.put(v, map.get(v));&#xD;
    }&#xD;
    return result;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S3pBEGbSEeqrtc6dy-mPpg" name="createProfileBuilder" specification="_S3geMGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    return new ProfileBuilder();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S3w84GbSEeqrtc6dy-mPpg" name="createProfileBuilder" specification="_S3srcGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    if (Objects.equals(prof, null))&#xD;
        return createProfileBuilder();&#xD;
    return new ProfileBuilder(prof);&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S20hsGbSEeqrtc6dy-mPpg" name="ProfileBuilder" visibility="protected" method="_S24zIGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S26oUGbSEeqrtc6dy-mPpg" name="ProfileBuilder" visibility="private" method="_S3BWAGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S3AH4GbSEeqrtc6dy-mPpg" name="prof" type="_QrQpEGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S3DLMGbSEeqrtc6dy-mPpg" name="addVote" visibility="public" method="_S3G1kGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S3EZUGbSEeqrtc6dy-mPpg" name="v" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S3FncGbSEeqrtc6dy-mPpg" name="pref" type="_O-JnAGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S3IqwGbSEeqrtc6dy-mPpg" name="addVotes" visibility="public" method="_S3M8MGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S3J44GbSEeqrtc6dy-mPpg" name="pref" type="_O-JnAGbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S3Kf8GbSEeqrtc6dy-mPpg" name="nbVoters">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S3OxYGbSEeqrtc6dy-mPpg" name="createProfileI" visibility="public" method="_S3QmkGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S3PYcGbSEeqrtc6dy-mPpg" type="_QrQpEGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S3R0sGbSEeqrtc6dy-mPpg" name="createProfile" visibility="public" method="_S3Tp4GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S3TC0GbSEeqrtc6dy-mPpg" type="_QsEhYmbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S3VfEGbSEeqrtc6dy-mPpg" name="createStrictProfileI" visibility="public" method="_S3X7UGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S3WtMGbSEeqrtc6dy-mPpg" type="_QsEhYGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S3ZJcGbSEeqrtc6dy-mPpg" name="createStrictProfile" visibility="public" method="_S3a-oGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S3ZwgGbSEeqrtc6dy-mPpg" type="_QsD6UGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S3cz0GbSEeqrtc6dy-mPpg" name="castMapExtendsToRegularVoterPref" visibility="public" isStatic="true" method="_S3epAGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S3da4GbSEeqrtc6dy-mPpg" type="_POESUGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S3eB8GbSEeqrtc6dy-mPpg" name="map" type="_POESUGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S3geMGbSEeqrtc6dy-mPpg" name="createProfileBuilder" visibility="public" isStatic="true" method="_S3pBEGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S3lWsGbSEeqrtc6dy-mPpg" type="_SwzZQGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S3srcGbSEeqrtc6dy-mPpg" name="createProfileBuilder" visibility="public" isStatic="true" method="_S3w84GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S3ugoGbSEeqrtc6dy-mPpg" type="_SwzZQGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S3vHsGbSEeqrtc6dy-mPpg" name="prof" type="_QrQpEGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_Sx6MgGbSEeqrtc6dy-mPpg" name="ReadODS" visibility="public">
              <ownedAttribute xmi:type="uml:Property" xmi:id="_Sx7aoGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_Sx9P0GbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(ReadODS.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SyCIUGbSEeqrtc6dy-mPpg" name="ReadODS" specification="_Sx-d8GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    throw new IllegalStateException(&quot;Utility Class&quot;);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SyNHcGbSEeqrtc6dy-mPpg" name="checkFormatandPrint" specification="_SyI2AGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    Objects.requireNonNull(inputStream);&#xD;
    LOGGER.debug(&quot;Open Stream&quot;);&#xD;
    SpreadsheetDocument spreadsheetDoc = SpreadsheetDocument.loadDocument(inputStream);&#xD;
    LOGGER.debug(&quot;Open Spreadsheet&quot;);&#xD;
    Table table = spreadsheetDoc.getSheetByIndex(0);&#xD;
    LOGGER.debug(&quot;Get sheet index 0 done&quot;);&#xD;
    LOGGER.debug(&quot;Checking format&quot;);&#xD;
    if (table.getCellByPosition(1, 0).getStringValue().equals(&quot;&quot;))&#xD;
        return printFormatCountOfRankings(table);&#xD;
    else if (table.getCellByPosition(0, 0).getStringValue().equals(&quot;&quot;))&#xD;
        return printFormatRanksFormat(table);&#xD;
    return printFormatVotersToRankings(table);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SyYGkGbSEeqrtc6dy-mPpg" name="printFormatCountOfRankings" specification="_SyUcMGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    Objects.requireNonNull(table);&#xD;
    StringBuilder stringBuilder = new StringBuilder();&#xD;
    int nbAlternatives = Integer.parseInt(table.getCellByPosition(0, 0).getStringValue());&#xD;
    List&lt;Alternative> alternatives = new ArrayList&lt;>(nbAlternatives);&#xD;
    for (int i = 1; i &lt;= nbAlternatives; i++) alternatives.add(Alternative.withId(Integer.valueOf(table.getCellByPosition(0, i).getStringValue())));&#xD;
    stringBuilder.append(&quot;There are &quot; + nbAlternatives + &quot; alternatives\n&quot; + &quot;List of alternatives : &quot; + alternatives + &quot;\n&quot;);&#xD;
    int nbOrders = Integer.parseInt(table.getCellByPosition(2, nbAlternatives + 1).getStringValue());&#xD;
    stringBuilder.append(&quot;There are &quot; + nbOrders + &quot; different orders\n&quot;);&#xD;
    CellRange prefRange = table.getCellRangeByPosition(1, nbAlternatives + 2, nbAlternatives, nbOrders + nbAlternatives + 1);&#xD;
    for (int i = 0; i &lt; prefRange.getRowNumber(); i++) {&#xD;
        int nbVoters = Integer.parseInt(table.getCellByPosition(0, i + nbAlternatives + 2).getStringValue());&#xD;
        stringBuilder.append(nbVoters + &quot; voters for preference &quot; + (i + 1) + &quot; : &quot;);&#xD;
        for (int j = 0; j &lt; prefRange.getColumnNumber(); j++) {&#xD;
            stringBuilder.append(prefRange.getCellByPosition(j, i).getStringValue() + &quot;>&quot;);&#xD;
        }&#xD;
        stringBuilder.deleteCharAt(stringBuilder.length() - 1).append(&quot;\n&quot;);&#xD;
    }&#xD;
    return stringBuilder.toString();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SyeNMGbSEeqrtc6dy-mPpg" name="printFormatRanksFormat" specification="_Syai0GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    Objects.requireNonNull(table);&#xD;
    StringBuilder stringBuilder = new StringBuilder();&#xD;
    List&lt;Alternative> alternatives = getAlternatives(table);&#xD;
    stringBuilder.append(&quot;There are &quot; + alternatives.size() + &quot; alternatives\n&quot; + &quot;List of alternatives : &quot; + alternatives + &quot;\n&quot;);&#xD;
    int nbTotVoters = getnbTotVoters(table);&#xD;
    stringBuilder.append(&quot;There are &quot; + nbTotVoters + &quot; voters\n&quot;);&#xD;
    CellRange prefRange = table.getCellRangeByPosition(1, 1, nbTotVoters, alternatives.size());&#xD;
    for (int j = 0; j &lt; prefRange.getColumnNumber(); j++) {&#xD;
        Voter voter = Voter.createVoter(Integer.parseInt(table.getCellByPosition(j + 1, 0).getStringValue()));&#xD;
        stringBuilder.append(&quot;Voter &quot; + voter.getId() + &quot; : &quot;);&#xD;
        int nbChoice = 1;&#xD;
        while (nbChoice &lt;= alternatives.size()) {&#xD;
            Set&lt;Alternative> set = Sets.newLinkedHashSet();&#xD;
            for (int i = 0; i &lt; prefRange.getRowNumber(); i++) {&#xD;
                if (nbChoice == Integer.parseInt(prefRange.getCellByPosition(j, i).getStringValue())) {&#xD;
                    int number = Integer.parseInt(table.getCellByPosition(0, i + 1).getStringValue());&#xD;
                    set.add(Alternative.withId(number));&#xD;
                }&#xD;
            }&#xD;
            nbChoice++;&#xD;
            if (set.size() >= 2) {&#xD;
                stringBuilder.append(&quot;{&quot;);&#xD;
                for (Alternative alter : set) {&#xD;
                    stringBuilder.append(alter + &quot;,&quot;);&#xD;
                }&#xD;
                stringBuilder.deleteCharAt(stringBuilder.length() - 1).append(&quot;}>&quot;);&#xD;
            } else {&#xD;
                for (Alternative alter : set) {&#xD;
                    stringBuilder.append(alter + &quot;>&quot;);&#xD;
                }&#xD;
            }&#xD;
        }&#xD;
        stringBuilder.deleteCharAt(stringBuilder.length() - 1).append(&quot;\n&quot;);&#xD;
    }&#xD;
    return stringBuilder.toString();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SyjFsGbSEeqrtc6dy-mPpg" name="printFormatVotersToRankings" specification="_SygCYGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    Objects.requireNonNull(table);&#xD;
    StringBuilder stringBuilder = new StringBuilder();&#xD;
    List&lt;Alternative> alternatives = getAlternatives(table);&#xD;
    stringBuilder.append(&quot;There are &quot; + alternatives.size() + &quot; alternatives\n&quot; + &quot;List of alternatives : &quot; + alternatives + &quot;\n&quot;);&#xD;
    int nbTotVoters = getnbTotVoters(table);&#xD;
    stringBuilder.append(&quot;There are &quot; + nbTotVoters + &quot; voters\n&quot;);&#xD;
    CellRange prefRange = table.getCellRangeByPosition(0, 1, nbTotVoters - 1, alternatives.size());&#xD;
    for (int j = 0; j &lt; prefRange.getColumnNumber(); j++) {&#xD;
        Voter voter = Voter.createVoter(Integer.parseInt(table.getCellByPosition(j, 0).getStringValue()));&#xD;
        stringBuilder.append(&quot;Voter &quot; + voter.getId() + &quot; : &quot;);&#xD;
        for (int i = 0; i &lt; prefRange.getRowNumber(); i++) {&#xD;
            stringBuilder.append(Integer.parseInt(prefRange.getCellByPosition(j, i).getStringValue()) + &quot;>&quot;);&#xD;
        }&#xD;
        stringBuilder.deleteCharAt(stringBuilder.length() - 1).append(&quot;\n&quot;);&#xD;
    }&#xD;
    return stringBuilder.toString();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SypMUGbSEeqrtc6dy-mPpg" name="getAlternatives" specification="_SykT0GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    Objects.requireNonNull(table);&#xD;
    List&lt;Alternative> alternatives = new ArrayList&lt;>();&#xD;
    while (!table.getCellByPosition(0, alternatives.size() + 1).getStringValue().equals(&quot;&quot;)) {&#xD;
        String valueOfCurrentCell = table.getCellByPosition(0, alternatives.size() + 1).getStringValue();&#xD;
        alternatives.add(Alternative.withId(Integer.valueOf(valueOfCurrentCell)));&#xD;
    }&#xD;
    return alternatives;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SyuE0GbSEeqrtc6dy-mPpg" name="getnbTotVoters" specification="_SyrBgGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    Objects.requireNonNull(table);&#xD;
    int nbTotVoters = 0;&#xD;
    int start = (table.getCellByPosition(0, 0).getStringValue().equals(&quot;&quot;)) ? 1 : 0;&#xD;
    while (!table.getCellByPosition(nbTotVoters + start, 0).getStringValue().equals(&quot;&quot;)) nbTotVoters++;&#xD;
    return nbTotVoters;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Sy0ygGbSEeqrtc6dy-mPpg" name="checkFormatandReturnCompletePreference" specification="_Syv6AGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    Objects.requireNonNull(inputStream);&#xD;
    LOGGER.debug(&quot;Open Stream&quot;);&#xD;
    SpreadsheetDocument spreadsheetDoc = SpreadsheetDocument.loadDocument(inputStream);&#xD;
    LOGGER.debug(&quot;Open Spreadsheet&quot;);&#xD;
    Table table = spreadsheetDoc.getSheetByIndex(0);&#xD;
    LOGGER.debug(&quot;Get sheet index 0 done&quot;);&#xD;
    LOGGER.debug(&quot;Checking format&quot;);&#xD;
    if (table.getCellByPosition(1, 0).getStringValue().equals(&quot;&quot;))&#xD;
        throw new BadFormatODSException(&quot;Expected data at cell (1, 0)&quot;);&#xD;
    else if (table.getCellByPosition(0, 0).getStringValue().equals(&quot;&quot;))&#xD;
        return completeFormatRanksFormat(table);&#xD;
    return completeFormatVotersToRankings(table);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Sy8HQGbSEeqrtc6dy-mPpg" name="completeFormatRanksFormat" specification="_Sy2nsGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    Objects.requireNonNull(table);&#xD;
    List&lt;CompletePreference> completePreferences = Lists.newArrayList();&#xD;
    List&lt;Alternative> alternatives = getAlternatives(table);&#xD;
    int nbTotVoters = getnbTotVoters(table);&#xD;
    CellRange prefRange = table.getCellRangeByPosition(1, 1, nbTotVoters, alternatives.size());&#xD;
    for (int j = 0; j &lt; prefRange.getColumnNumber(); j++) {&#xD;
        Voter voter = Voter.createVoter(Integer.parseInt(table.getCellByPosition(j + 1, 0).getStringValue()));&#xD;
        int nbChoice = 1;&#xD;
        List&lt;Set&lt;Alternative>> equivalenceClasses = Lists.newArrayList();&#xD;
        while (nbChoice &lt;= alternatives.size()) {&#xD;
            Set&lt;Alternative> set = Sets.newLinkedHashSet();&#xD;
            for (int i = 0; i &lt; prefRange.getRowNumber(); i++) {&#xD;
                if (nbChoice == Integer.parseInt(prefRange.getCellByPosition(j, i).getStringValue())) {&#xD;
                    set.add(Alternative.withId(Integer.parseInt(table.getCellByPosition(0, i + 1).getStringValue())));&#xD;
                }&#xD;
            }&#xD;
            if (!set.isEmpty())&#xD;
                equivalenceClasses.add(set);&#xD;
            nbChoice++;&#xD;
        }&#xD;
        completePreferences.add(CompletePreferenceImpl.asCompletePreference(voter, equivalenceClasses));&#xD;
    }&#xD;
    return ImmutableSet.copyOf(completePreferences);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SzC08GbSEeqrtc6dy-mPpg" name="completeFormatVotersToRankings" specification="_Sy98cGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    Objects.requireNonNull(table);&#xD;
    List&lt;CompletePreference> completePreferences = Lists.newArrayList();&#xD;
    List&lt;Alternative> alternatives = getAlternatives(table);&#xD;
    int nbTotVoters = getnbTotVoters(table);&#xD;
    CellRange prefRange = table.getCellRangeByPosition(0, 1, nbTotVoters - 1, alternatives.size());&#xD;
    for (int j = 0; j &lt; prefRange.getColumnNumber(); j++) {&#xD;
        List&lt;Set&lt;Alternative>> list = Lists.newArrayList();&#xD;
        Voter voter = Voter.createVoter(Integer.parseInt(table.getCellByPosition(j, 0).getStringValue()));&#xD;
        for (CompletePreference completePreference : completePreferences) if (completePreference.getVoter() == voter)&#xD;
            throw new DuplicateValueException(&quot;Two voters can't have the same ID&quot;);&#xD;
        for (int i = 0; i &lt; prefRange.getRowNumber(); i++) {&#xD;
            list.add(ImmutableSet.of(createAlternativeFromCellRange(j, i, prefRange)));&#xD;
        }&#xD;
        completePreferences.add(CompletePreferenceImpl.asCompletePreference(voter, list));&#xD;
    }&#xD;
    return ImmutableSet.copyOf(completePreferences);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SzTToGbSEeqrtc6dy-mPpg" name="createAlternativeFromCellRange" specification="_SzN0EGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    return Alternative.withId(Integer.parseInt(prefRange.getCellByPosition(colomnIndex, rowIndex).getStringValue()));&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Sx-d8GbSEeqrtc6dy-mPpg" name="ReadODS" visibility="private" method="_SyCIUGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SyI2AGbSEeqrtc6dy-mPpg" name="checkFormatandPrint" visibility="public" isStatic="true" method="_SyNHcGbSEeqrtc6dy-mPpg" raisedException="_PMryQGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SyKEIGbSEeqrtc6dy-mPpg" type="_PF7qAGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SyLSQGbSEeqrtc6dy-mPpg" name="inputStream" type="_SyD9gGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SyUcMGbSEeqrtc6dy-mPpg" name="printFormatCountOfRankings" visibility="public" isStatic="true" method="_SyYGkGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SyVqUGbSEeqrtc6dy-mPpg" type="_PF7qAGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SyXfgGbSEeqrtc6dy-mPpg" name="table"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Syai0GbSEeqrtc6dy-mPpg" name="printFormatRanksFormat" visibility="public" isStatic="true" method="_SyeNMGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sybw8GbSEeqrtc6dy-mPpg" type="_PF7qAGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Syc_EGbSEeqrtc6dy-mPpg" name="table"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SygCYGbSEeqrtc6dy-mPpg" name="printFormatVotersToRankings" visibility="public" isStatic="true" method="_SyjFsGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SygpcGbSEeqrtc6dy-mPpg" type="_PF7qAGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Syh3kGbSEeqrtc6dy-mPpg" name="table"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SykT0GbSEeqrtc6dy-mPpg" name="getAlternatives" visibility="private" isStatic="true" method="_SypMUGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sylh8GbSEeqrtc6dy-mPpg" type="_PFRisGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SymwEGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SymwEWbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Syn-MGbSEeqrtc6dy-mPpg" name="table"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SyrBgGbSEeqrtc6dy-mPpg" name="getnbTotVoters" visibility="private" isStatic="true" method="_SyuE0GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SyrokGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SytdwGbSEeqrtc6dy-mPpg" name="table"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Syv6AGbSEeqrtc6dy-mPpg" name="checkFormatandReturnCompletePreference" visibility="public" isStatic="true" method="_Sy0ygGbSEeqrtc6dy-mPpg" raisedException="_PMryQGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SyxvMGbSEeqrtc6dy-mPpg" type="_PMMDAGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Syy9UGbSEeqrtc6dy-mPpg" name="inputStream" type="_SyD9gGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Sy2nsGbSEeqrtc6dy-mPpg" name="completeFormatRanksFormat" visibility="public" isStatic="true" method="_Sy8HQGbSEeqrtc6dy-mPpg" raisedException="_PNJsUGbSEeqrtc6dy-mPpg _PNg4sGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sy4c4GbSEeqrtc6dy-mPpg" type="_PMMDAGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sy6SEGbSEeqrtc6dy-mPpg" name="table"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Sy98cGbSEeqrtc6dy-mPpg" name="completeFormatVotersToRankings" visibility="public" isStatic="true" method="_SzC08GbSEeqrtc6dy-mPpg" raisedException="_PNJsUGbSEeqrtc6dy-mPpg _PNg4sGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sy_xoGbSEeqrtc6dy-mPpg" type="_PMMDAGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SzA_wGbSEeqrtc6dy-mPpg" name="table"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SzN0EGbSEeqrtc6dy-mPpg" name="createAlternativeFromCellRange" visibility="private" isStatic="true" method="_SzTToGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SzPCMGbSEeqrtc6dy-mPpg" type="_PFRisGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SzPpQGbSEeqrtc6dy-mPpg" name="colomnIndex">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SzQ3YGbSEeqrtc6dy-mPpg" name="rowIndex">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SzSFgGbSEeqrtc6dy-mPpg" name="prefRange"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_SzeSwGbSEeqrtc6dy-mPpg" name="ReadProfile" visibility="public">
              <ownedAttribute xmi:type="uml:Property" xmi:id="_Szfg4GbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SzhWEGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(ReadProfile.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SzzC4GbSEeqrtc6dy-mPpg" name="createProfileFromStream" specification="_Szh9IGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;CreateProfileFromReadFile : &quot;);&#xD;
    Preconditions.checkNotNull(is);&#xD;
    try (InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8)) {&#xD;
        List&lt;String> fileRead = CharStreams.readLines(isr);&#xD;
        Iterator&lt;String> it = fileRead.iterator();&#xD;
        String lineNbVoters;&#xD;
        // first number of&#xD;
        int nbAlternatives = Integer.parseInt(it.next());&#xD;
        // the file is the&#xD;
        // number of&#xD;
        // alternatives&#xD;
        LOGGER.debug(&quot;number of alternatives : {}&quot;, nbAlternatives);&#xD;
        List&lt;String> alternatives = new ArrayList&lt;>();&#xD;
        List&lt;String> profiles = new ArrayList&lt;>();&#xD;
        for (int i = 1; i &lt;= nbAlternatives; i++) {&#xD;
            // get the lines with the&#xD;
            // alternatives&#xD;
            String nextAlternative = it.next().trim();&#xD;
            int indexOfFirstComma = nextAlternative.indexOf(',');&#xD;
            if (indexOfFirstComma != -1) {&#xD;
                String nextAlternativeNumber = nextAlternative.substring(0, indexOfFirstComma);&#xD;
                alternatives.add(nextAlternativeNumber);&#xD;
            } else {&#xD;
                alternatives.add(nextAlternative);&#xD;
            }&#xD;
        }&#xD;
        LOGGER.debug(&quot;alternatives : {}&quot;, alternatives);&#xD;
        // get the line with the nb of&#xD;
        lineNbVoters = it.next().trim();&#xD;
        // voters&#xD;
        LOGGER.debug(&quot;line with stats about the votes ); {}&quot;, lineNbVoters);&#xD;
        while (it.hasNext()) {&#xD;
            // get the rest of the file&#xD;
            profiles.add(it.next().trim());&#xD;
        }&#xD;
        LOGGER.debug(&quot;lines with the number of votes for each StrictPreference : {}&quot;, profiles);&#xD;
        OldLinearPreferenceImpl listeAlternatives = getAlternatives(alternatives);&#xD;
        List&lt;Integer> listInt = getStatsVoters(lineNbVoters);&#xD;
        return buildProfile(profiles, listeAlternatives, listInt.get(0));&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S0EvsGbSEeqrtc6dy-mPpg" name="createProfileFromColumnsTable" specification="_Sz8M0GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;createProfileFromColumnsTable : &quot;);&#xD;
    Preconditions.checkNotNull(table);&#xD;
    ProfileBuilder profileBuilder = ProfileBuilder.createProfileBuilder();&#xD;
    int nbColumns = table.getColumnCount();&#xD;
    for (int column = 0; column &lt; nbColumns; column++) {&#xD;
        // browse columns&#xD;
        StringBuilder newPrefString = new StringBuilder(table.getItem(0).getText(column));&#xD;
        for (TableItem item : Iterables.skip(Arrays.asList(table.getItems()), 1)) {&#xD;
            String altText = item.getText(column);&#xD;
            if (!Objects.equal(altText, null) &amp;&amp; !Objects.equal(altText, &quot;&quot;)) {&#xD;
                newPrefString.append(&quot;,&quot; + altText);&#xD;
            }&#xD;
        }&#xD;
        Voter voter = Voter.createVoter(column + 1);&#xD;
        OldLinearPreferenceImpl newPref = new ReadProfile().createStrictPreferenceFrom(newPrefString.toString());&#xD;
        profileBuilder.addVote(voter, newPref);&#xD;
    }&#xD;
    return profileBuilder.createProfileI().restrictProfile();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S0UAQGbSEeqrtc6dy-mPpg" name="createProfileFromRowsTable" specification="_S0JBIGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;createProfileFromRowsTable : &quot;);&#xD;
    Preconditions.checkNotNull(table);&#xD;
    ProfileBuilder profileBuilder = ProfileBuilder.createProfileBuilder();&#xD;
    int nbItems = table.getItemCount();&#xD;
    int nbColumns = table.getColumnCount();&#xD;
    for (int item = 0; item &lt; nbItems; item++) {&#xD;
        // browse columns&#xD;
        StringBuilder newPrefString = new StringBuilder(table.getItem(item).getText(0));&#xD;
        for (int column = 1; column &lt; nbColumns; column++) {&#xD;
            String altText = table.getItem(item).getText(column);&#xD;
            if (altText != null &amp;&amp; altText.equals(&quot;&quot;)) {&#xD;
                newPrefString.append(&quot;,&quot; + altText);&#xD;
            }&#xD;
        }&#xD;
        Voter voter = Voter.createVoter(item + 1);&#xD;
        OldLinearPreferenceImpl newPref = new ReadProfile().createStrictPreferenceFrom(newPrefString.toString());&#xD;
        profileBuilder.addVote(voter, newPref);&#xD;
    }&#xD;
    return profileBuilder.createProfileI().restrictProfile();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S0eYUGbSEeqrtc6dy-mPpg" name="createProfileFromURL" specification="_S0at8GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;CreateProfileFromURL : &quot;);&#xD;
    Preconditions.checkNotNull(url);&#xD;
    LOGGER.debug(&quot;parameter : URL = {}&quot;, url);&#xD;
    Client client = ClientBuilder.newClient();&#xD;
    Response response = client.target(url.toString()).request().get();&#xD;
    try (InputStream is = (InputStream) response.getEntity()) {&#xD;
        return createProfileFromStream(is).restrictProfile();&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S0jQ0GbSEeqrtc6dy-mPpg" name="displayProfileFromStream" specification="_S0gNgGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;DisplayProfileFromFile : &quot;);&#xD;
    Preconditions.checkNotNull(is);&#xD;
    LOGGER.debug(&quot;parameter : InputStream = {}&quot;, is);&#xD;
    try (InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8)) {&#xD;
        List&lt;String> fileRead = CharStreams.readLines(isr);&#xD;
        for (String line : fileRead) {&#xD;
            LOGGER.info(line);&#xD;
        }&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S0wFIGbSEeqrtc6dy-mPpg" name="getAlternatives" specification="_S0m7MGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;GetAlternatives :&quot;);&#xD;
    Preconditions.checkNotNull(listOfStrings);&#xD;
    LOGGER.debug(&quot;parameter : file = {}&quot;, listOfStrings);&#xD;
    List&lt;Alternative> alternatives = new ArrayList&lt;>();&#xD;
    for (String alternative : listOfStrings) {&#xD;
        LOGGER.debug(&quot;next Alternative : {}&quot;, alternative);&#xD;
        alternatives.add(Alternative.withId(Integer.parseInt(alternative)));&#xD;
    }&#xD;
    OldLinearPreferenceImpl listAlternatives = OldLinearPreferenceImpl.createStrictCompletePreferenceImpl(alternatives);&#xD;
    LOGGER.debug(&quot;returns listAlternatives : {}&quot;, listAlternatives);&#xD;
    return listAlternatives;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S02LwGbSEeqrtc6dy-mPpg" name="getStatsVoters" specification="_S0yhYGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;GetNbVoters :&quot;);&#xD;
    Preconditions.checkNotNull(s);&#xD;
    LOGGER.debug(&quot;parameter : s = {}&quot;, s);&#xD;
    List&lt;Integer> list = new ArrayList&lt;>();&#xD;
    String[] line = s.split(&quot;,&quot;);&#xD;
    list.add(Integer.parseInt(line[0].trim()));&#xD;
    list.add(Integer.parseInt(line[1].trim()));&#xD;
    list.add(Integer.parseInt(line[2].trim()));&#xD;
    LOGGER.debug(&quot;returns list : {}\n&quot;, list);&#xD;
    return list;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S085cGbSEeqrtc6dy-mPpg" name="getPreferences" specification="_S04oAGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;GetPreferences&quot;);&#xD;
    Preconditions.checkNotNull(listeAlternatives);&#xD;
    Preconditions.checkNotNull(s1);&#xD;
    LOGGER.debug(&quot;parameters : listeAlternatives {}, s1 {}&quot;, listeAlternatives, s1);&#xD;
    String[] alternatives = s1.split(&quot;,&quot;);&#xD;
    List&lt;Alternative> pref = new ArrayList&lt;>();&#xD;
    for (String alternative : Iterables.skip(Arrays.asList(alternatives), 1)) {&#xD;
        Alternative alter = Alternative.withId(Integer.parseInt(alternative.trim()));&#xD;
        LOGGER.debug(&quot;next alternative {}&quot;, alter.getId());&#xD;
        if (listeAlternatives.contains(alter)) {&#xD;
            LOGGER.debug(&quot;correct alternative&quot;);&#xD;
            pref.add(alter);&#xD;
        } else {&#xD;
            LOGGER.debug(&quot;alternative not in the profile&quot;);&#xD;
            throw new IllegalArgumentException(&quot;The line s1 contains an alternative that is not in the profile's alternatives&quot;);&#xD;
        }&#xD;
    }&#xD;
    return OldLinearPreferenceImpl.createStrictCompletePreferenceImpl(pref);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S1CZAGbSEeqrtc6dy-mPpg" name="createStrictPreferenceFrom" specification="_S0_VsGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;GetPreferences&quot;);&#xD;
    Preconditions.checkNotNull(stringPreference);&#xD;
    LOGGER.debug(&quot;parameters : s1 {}&quot;, stringPreference);&#xD;
    String[] s2 = stringPreference.split(&quot;,&quot;);&#xD;
    List&lt;Alternative> pref = new ArrayList&lt;>();&#xD;
    for (String strAlt : s2) {&#xD;
        Alternative alter = Alternative.withId(Integer.parseInt(strAlt.trim()));&#xD;
        LOGGER.debug(&quot;next alternative {}&quot;, alter.getId());&#xD;
        pref.add(alter);&#xD;
    }&#xD;
    if (pref.isEmpty())&#xD;
        throw new IllegalArgumentException(&quot;The preference is empty.&quot;);&#xD;
    return OldLinearPreferenceImpl.createStrictCompletePreferenceImpl(pref);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S1MKAGbSEeqrtc6dy-mPpg" name="buildProfile" specification="_S1EOMGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;BuildProfiles :&quot;);&#xD;
    Preconditions.checkNotNull(file);&#xD;
    Preconditions.checkNotNull(listAlternatives);&#xD;
    Preconditions.checkNotNull(nbVoters);&#xD;
    StrictProfileBuilder profile = StrictProfileBuilder.createStrictProfileBuilder();&#xD;
    for (String line : file) {&#xD;
        LOGGER.debug(&quot;next line : {}&quot;, line);&#xD;
        if (!line.contains(&quot;,&quot;)) {&#xD;
            // the line of an alternative&#xD;
            throw new IllegalArgumentException(&quot;the first string of file is an alternative line.&quot;);&#xD;
        }&#xD;
        String[] lineAsArray = line.split(&quot;,&quot;);&#xD;
        OldLinearPreferenceImpl pref = getPreferences(listAlternatives, line);&#xD;
        LOGGER.debug(&quot;to add : {} votes for the StrictPreference {}&quot;, lineAsArray[0].trim(), pref);&#xD;
        profile.addVotes(pref, Integer.parseInt(lineAsArray[0].trim()));&#xD;
    }&#xD;
    return profile.createProfileI();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S1TewGbSEeqrtc6dy-mPpg" name="main" specification="_S1PNUGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    // read SOC file&#xD;
    try (InputStream socStream = getClass().getResourceAsStream(&quot;profil.soc&quot;)) {&#xD;
        LOGGER.debug(&quot;SOC Profile stream : {}&quot;, socStream);&#xD;
        displayProfileFromStream(socStream);&#xD;
    }&#xD;
    // read SOI file&#xD;
    try (InputStream soiStream = getClass().getResourceAsStream(&quot;profil.soi&quot;)) {&#xD;
        LOGGER.debug(&quot;SOI Profile stream : {}&quot;, soiStream);&#xD;
        displayProfileFromStream(soiStream);&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Szh9IGbSEeqrtc6dy-mPpg" name="createProfileFromStream" visibility="public" method="_SzzC4GbSEeqrtc6dy-mPpg" raisedException="_QsKA8WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Szh9IWbSEeqrtc6dy-mPpg" type="_QrQpEGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SzncsGbSEeqrtc6dy-mPpg" name="is" type="_SyD9gGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Sz8M0GbSEeqrtc6dy-mPpg" name="createProfileFromColumnsTable" visibility="public" method="_S0EvsGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sz_3MGbSEeqrtc6dy-mPpg" type="_QrQpEGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S0DhkGbSEeqrtc6dy-mPpg" name="table"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S0JBIGbSEeqrtc6dy-mPpg" name="createProfileFromRowsTable" visibility="public" method="_S0UAQGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S0MrgGbSEeqrtc6dy-mPpg" type="_QrQpEGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S0SLEGbSEeqrtc6dy-mPpg" name="table"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S0at8GbSEeqrtc6dy-mPpg" name="createProfileFromURL" visibility="public" method="_S0eYUGbSEeqrtc6dy-mPpg" raisedException="_QsKA8WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S0bVAGbSEeqrtc6dy-mPpg" type="_QrQpEGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S0dKMGbSEeqrtc6dy-mPpg" name="url"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S0gNgGbSEeqrtc6dy-mPpg" name="displayProfileFromStream" visibility="public" method="_S0jQ0GbSEeqrtc6dy-mPpg" raisedException="_QsKA8WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S0hboGbSEeqrtc6dy-mPpg" name="is" type="_SyD9gGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S0m7MGbSEeqrtc6dy-mPpg" name="getAlternatives" visibility="private" method="_S0wFIGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S0owYGbSEeqrtc6dy-mPpg" type="_PIU2sGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S0rzsGbSEeqrtc6dy-mPpg" name="listOfStrings" type="_PF7qAGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_S0to4GbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_S0u3AGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S0yhYGbSEeqrtc6dy-mPpg" name="getStatsVoters" visibility="private" method="_S02LwGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S0zvgGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_ILxaUPaLEeW5KOK8aDMdgA"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_S00WkGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_S009oGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S01ksGbSEeqrtc6dy-mPpg" name="s" type="_PF7qAGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S04oAGbSEeqrtc6dy-mPpg" name="getPreferences" visibility="public" method="_S085cGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S05PEGbSEeqrtc6dy-mPpg" type="_PIU2sGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S06dMGbSEeqrtc6dy-mPpg" name="listeAlternatives" type="_PIU2sGbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S07rUGbSEeqrtc6dy-mPpg" name="s1" type="_PF7qAGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S0_VsGbSEeqrtc6dy-mPpg" name="createStrictPreferenceFrom" visibility="public" method="_S1CZAGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S0_8wGbSEeqrtc6dy-mPpg" type="_PIU2sGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S1Bx8GbSEeqrtc6dy-mPpg" name="stringPreference" type="_PF7qAGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S1EOMGbSEeqrtc6dy-mPpg" name="buildProfile" visibility="public" method="_S1MKAGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S1FcUGbSEeqrtc6dy-mPpg" type="_QrQpEGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S1GqcGbSEeqrtc6dy-mPpg" name="file" type="_PF7qAGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_S1IfoGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_S1JGsGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S1JtwGbSEeqrtc6dy-mPpg" name="listAlternatives" type="_PIU2sGbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S1Li8GbSEeqrtc6dy-mPpg" name="nbVoters">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S1PNUGbSEeqrtc6dy-mPpg" name="main" visibility="public" method="_S1TewGbSEeqrtc6dy-mPpg" raisedException="_QsKA8WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S1QbcGbSEeqrtc6dy-mPpg" name="args" type="_PF7qAGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_S1RpkGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_S1SQoGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_S1YXQGbSEeqrtc6dy-mPpg" name="StrictProfileBuilder" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_S1ZlYGbSEeqrtc6dy-mPpg" general="_SwzZQGbSEeqrtc6dy-mPpg"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_S1azgGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_S1cBoGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(StrictProfileBuilder.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S1fE8GbSEeqrtc6dy-mPpg" name="createStrictProfileBuilder" specification="_S1dPwGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;StrictProfileBuilder Factory without parameter&quot;);&#xD;
    return new StrictProfileBuilder();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S1qrIGbSEeqrtc6dy-mPpg" name="createStrictProfileBuilder" specification="_S1g6IGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;StrictProfileBuilder Factory with parameter&quot;);&#xD;
    if (Objects.equals(prof, null))&#xD;
        return createStrictProfileBuilder();&#xD;
    return new StrictProfileBuilder(prof);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S1zOAGbSEeqrtc6dy-mPpg" name="StrictProfileBuilder" specification="_S1uVgGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;constructor empty:&quot;);&#xD;
    votes = new HashMap&lt;>();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S19mEGbSEeqrtc6dy-mPpg" name="StrictProfileBuilder" specification="_S12RUGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;parameter prof : {}&quot;, prof);&#xD;
    votes = castMapExtendsToRegularVoterPref(prof.getProfile());&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S2DFoGbSEeqrtc6dy-mPpg" name="addVote" specification="_S2ACUGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;addProfile:&quot;);&#xD;
    Preconditions.checkNotNull(v);&#xD;
    Preconditions.checkNotNull(pref);&#xD;
    LOGGER.debug(&quot;parameters: voter {} pref {}&quot;, v, pref);&#xD;
    if (!pref.isStrict()) {&#xD;
        throw new IllegalArgumentException(&quot;The preference must be strict.&quot;);&#xD;
    }&#xD;
    votes.put(v, pref);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S2H-IGbSEeqrtc6dy-mPpg" name="createOneAlternativeProfile" specification="_S2Fh4GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;createOneAlternativeProfile&quot;);&#xD;
    for (Voter v : votes.keySet()) {&#xD;
        List&lt;Alternative> alters = new ArrayList&lt;>();&#xD;
        alters.add(votes.get(v).getAlternative(0));&#xD;
        OldLinearPreferenceImpl prefOneAlter = OldLinearPreferenceImpl.createStrictCompletePreferenceImpl(alters);&#xD;
        addVote(v, prefOneAlter);&#xD;
    }&#xD;
    return ImmutableStrictProfileI.createImmutableStrictProfileI(votes);&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S1dPwGbSEeqrtc6dy-mPpg" name="createStrictProfileBuilder" visibility="public" isStatic="true" method="_S1fE8GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S1ed4GbSEeqrtc6dy-mPpg" type="_S1YXQGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S1g6IGbSEeqrtc6dy-mPpg" name="createStrictProfileBuilder" visibility="public" isStatic="true" method="_S1qrIGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S1iIQGbSEeqrtc6dy-mPpg" type="_S1YXQGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S1j9cGbSEeqrtc6dy-mPpg" name="prof" type="_QsEhYGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S1uVgGbSEeqrtc6dy-mPpg" name="StrictProfileBuilder" visibility="private" method="_S1zOAGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S12RUGbSEeqrtc6dy-mPpg" name="StrictProfileBuilder" visibility="private" method="_S19mEGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S18X8GbSEeqrtc6dy-mPpg" name="prof" type="_QsEhYGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S2ACUGbSEeqrtc6dy-mPpg" name="addVote" visibility="public" method="_S2DFoGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S2ApYGbSEeqrtc6dy-mPpg" name="v" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S2B3gGbSEeqrtc6dy-mPpg" name="pref" type="_O-JnAGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S2Fh4GbSEeqrtc6dy-mPpg" name="createOneAlternativeProfile" visibility="public" method="_S2H-IGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S2GwAGbSEeqrtc6dy-mPpg" type="_Qsf_MGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_S2M2oGbSEeqrtc6dy-mPpg" name="SWFCommander" visibility="public">
              <ownedAttribute xmi:type="uml:Property" xmi:id="_S2OEwGbSEeqrtc6dy-mPpg" name="swf" visibility="private" type="_SfltcGbSEeqrtc6dy-mPpg" isUnique="false"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_S2P58GbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_S2SWMGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(SWFCommander.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S2XOsGbSEeqrtc6dy-mPpg" name="createSWFCommander" specification="_S2TkUGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    return new SWFCommander(s);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S2dVUGbSEeqrtc6dy-mPpg" name="SWFCommander" specification="_S2ZD4GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    this.swf = s;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S2hmwGbSEeqrtc6dy-mPpg" name="askPreference" specification="_S2fKgGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;askPreference&quot;);&#xD;
    System.out.println(&quot;Enter a StrictPreference complete&quot;);&#xD;
    try (Scanner scan = new Scanner(System.in)) {&#xD;
        LOGGER.debug(&quot;Scanner OK&quot;);&#xD;
        String vote = scan.nextLine();&#xD;
        if (vote.isEmpty()) {&#xD;
            throw new IOException(&quot;empty Preference entered !&quot;);&#xD;
        }&#xD;
        return new ReadProfile().createStrictPreferenceFrom(vote);&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S2lRIGbSEeqrtc6dy-mPpg" name="createProfileIncrementally" specification="_S2jb8GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;createProfileIncrementally:&quot;);&#xD;
    StrictProfileBuilder prof = StrictProfileBuilder.createStrictProfileBuilder();&#xD;
    boolean keepGoing = true;&#xD;
    int voterId = 1;&#xD;
    while (keepGoing) {&#xD;
        LOGGER.debug(&quot;new voter id  : {}&quot;, voterId);&#xD;
        Voter v = Voter.createVoter(voterId);&#xD;
        OldLinearPreferenceImpl oldLinearPreferenceImpl = askPreference();&#xD;
        LOGGER.debug(&quot;strictPreference :{}&quot;, oldLinearPreferenceImpl);&#xD;
        prof.addVote(v, oldLinearPreferenceImpl);&#xD;
        LOGGER.info(&quot;Continue ? (yes/no)&quot;);&#xD;
        try (Scanner scn = new Scanner(System.in)) {&#xD;
            String answer = scn.nextLine();&#xD;
            // user can answer &quot;yes&quot; or just &quot;y&quot; to continue&#xD;
            if (answer.trim().equalsIgnoreCase((&quot;yes&quot;)) &amp;&amp; answer.trim().equalsIgnoreCase(&quot;y&quot;)) {&#xD;
                LOGGER.debug(&quot;answered no to continue.&quot;);&#xD;
                keepGoing = false;&#xD;
            }&#xD;
        }&#xD;
        voterId++;&#xD;
        ImmutableProfileI profile = (ImmutableProfileI) prof.createProfileI();&#xD;
        LOGGER.info(swf.getSocietyPreference(profile).toString());&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S2TkUGbSEeqrtc6dy-mPpg" name="createSWFCommander" visibility="public" isStatic="true" method="_S2XOsGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S2UycGbSEeqrtc6dy-mPpg" type="_S2M2oGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S2WAkGbSEeqrtc6dy-mPpg" name="s" type="_SfltcGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S2ZD4GbSEeqrtc6dy-mPpg" name="SWFCommander" visibility="private" method="_S2dVUGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S2cuQGbSEeqrtc6dy-mPpg" name="s" type="_SfltcGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S2fKgGbSEeqrtc6dy-mPpg" name="askPreference" visibility="public" isStatic="true" method="_S2hmwGbSEeqrtc6dy-mPpg" raisedException="_QsKA8WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S2gYoGbSEeqrtc6dy-mPpg" type="_PIU2sGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S2jb8GbSEeqrtc6dy-mPpg" name="createProfileIncrementally" visibility="public" method="_S2lRIGbSEeqrtc6dy-mPpg" raisedException="_QsKA8WbSEeqrtc6dy-mPpg"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_S311YGbSEeqrtc6dy-mPpg" name="TestODS" visibility="public">
              <ownedAttribute xmi:type="uml:Property" xmi:id="_S33DgGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_S35fwGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(TestODS.class)</body>
                </defaultValue>
              </ownedAttribute>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S3_mYGbSEeqrtc6dy-mPpg" name="main" specification="_S37U8GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    new TestODS().generateSpreadsheetDocument();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S4R6QGbSEeqrtc6dy-mPpg" name="generateSpreadsheetDocument" specification="_S4BbkGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    try (InputStream inputStream = TestODS.class.getResourceAsStream(&quot;demo9_data.ods&quot;);&#xD;
        SpreadsheetDocument spreadsheetDoc = SpreadsheetDocument.loadDocument(inputStream)) {&#xD;
        List&lt;Table> tables = spreadsheetDoc.getTableList();&#xD;
        for (Table table : tables) {&#xD;
            List&lt;Voter> voters = new ArrayList&lt;>();&#xD;
            for (Column column : table.getColumnList()) {&#xD;
                List&lt;Alternative> alternatives = new ArrayList&lt;>();&#xD;
                String firstCellText = column.getCellByIndex(0).getDisplayText();&#xD;
                voters.add(Voter.createVoter(Integer.parseInt(firstCellText.substring(firstCellText.length() - 1, firstCellText.indexOf(' ')))));&#xD;
                for (int alt = Integer.parseInt(column.getCellByIndex(1).getDisplayText()); alt &lt; column.getCellCount(); alt++) {&#xD;
                    alternatives.add(Alternative.withId(alt));&#xD;
                }&#xD;
            }&#xD;
        }&#xD;
        Cell positionCell = spreadsheetDoc.getTableByName(&quot;B&quot;).getCellByPosition(&quot;E1&quot;);&#xD;
        LOGGER.info(&quot;Found: {}.&quot;, positionCell.getDisplayText());&#xD;
        positionCell.setStringValue(&quot;ploum&quot;);&#xD;
        spreadsheetDoc.save(&quot;demo9s.ods&quot;);&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S37U8GbSEeqrtc6dy-mPpg" name="main" visibility="public" isStatic="true" method="_S3_mYGbSEeqrtc6dy-mPpg" raisedException="_PMryQGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_S39KIGbSEeqrtc6dy-mPpg" name="args" type="_PF7qAGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_S39xMGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_S3-YQGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_S4BbkGbSEeqrtc6dy-mPpg" name="generateSpreadsheetDocument" visibility="public" method="_S4R6QGbSEeqrtc6dy-mPpg" raisedException="_PMryQGbSEeqrtc6dy-mPpg"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="_XG3OgGz8EeqXjdVQZO8c9Q" name="classes">
            <packagedElement xmi:type="uml:Class" xmi:id="_QrNmeGbSEeqrtc6dy-mPpg" name="ImmutableProfileI" visibility="public">
              <ownedAttribute xmi:type="uml:Property" xmi:id="_QrTsYGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_QrWIoGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(ImmutableProfileI.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_QraaEGbSEeqrtc6dy-mPpg" name="votes" visibility="protected" type="_POESUGbSEeqrtc6dy-mPpg" isUnique="false"/>
              <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_QrR3d2bSEeqrtc6dy-mPpg" name="ImmutableProfileI implements ProfileI" client="_QrNmeGbSEeqrtc6dy-mPpg" supplier="_QrQpEGbSEeqrtc6dy-mPpg" contract="_QrQpEGbSEeqrtc6dy-mPpg"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QrtVAGbSEeqrtc6dy-mPpg" name="ImmutableProfileI" specification="_QrjkAGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sd_yAGbSEeqrtc6dy-mPpg" name="votes" type="_POESUGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeAZEGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeBAIGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;ImmutableProfileI constructor&quot;);&#xD;
    this.votes = votes;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QrujIGbSEeqrtc6dy-mPpg" name="getPreference" specification="_QrtVAWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SeCOQGbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeDcYGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeEDcGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SeEqgGbSEeqrtc6dy-mPpg" name="v" type="_PIhD8GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeF4oGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeGfsGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getPreference:&quot;);&#xD;
    Preconditions.checkNotNull(v);&#xD;
    LOGGER.debug(&quot;parameter voter : {}&quot;, v);&#xD;
    if (votes.containsKey(v)) {&#xD;
        return votes.get(v);&#xD;
    }&#xD;
    throw new NoSuchElementException(&quot;Voter &quot; + v + &quot;is not in the map !&quot;);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QrvKMGbSEeqrtc6dy-mPpg" name="getMaxSizeOfPreference" specification="_QrujIWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SeHGwGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeIU4GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeI78GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getMaxSizeOfPreference&quot;);&#xD;
    int maxSize = 0;&#xD;
    Collection&lt;? extends OldCompletePreferenceImpl> pref = votes.values();&#xD;
    for (OldCompletePreferenceImpl p : pref) {&#xD;
        if (maxSize &lt; p.size()) {&#xD;
            maxSize = p.size();&#xD;
        }&#xD;
    }&#xD;
    LOGGER.debug(&quot;biggest Preference has size : {}&quot;, maxSize);&#xD;
    return maxSize;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QrvxQGbSEeqrtc6dy-mPpg" name="getProfile" specification="_QrvKMWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SeJjAGbSEeqrtc6dy-mPpg" type="_POESUGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeKKEGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeKxIGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getProfile:&quot;);&#xD;
    return votes;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QryNgWbSEeqrtc6dy-mPpg" name="getAllVoters" specification="_QrvxQWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SeLYMGbSEeqrtc6dy-mPpg" type="_QrvxQmbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeL_QGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeMmUGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getAllVoters:&quot;);&#xD;
    NavigableSet&lt;Voter> keys = new TreeSet&lt;>();&#xD;
    for (Voter v : votes.keySet()) {&#xD;
        keys.add(v);&#xD;
    }&#xD;
    LOGGER.debug(&quot;all voter : {}&quot;, keys);&#xD;
    return keys;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Qry0kWbSEeqrtc6dy-mPpg" name="getNbVoters" specification="_QryNgmbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SeNNYGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeN0cGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeObgGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getNbVoters:&quot;);&#xD;
    return getAllVoters().size();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QrzboWbSEeqrtc6dy-mPpg" name="getSumVoteCount" specification="_Qry0kmbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SePpoGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeQ3wGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeRe0GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getSumCount:&quot;);&#xD;
    return getAllVoters().size();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Qr0CsWbSEeqrtc6dy-mPpg" name="getUniquePreferences" specification="_QrzbombSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SeSF4GbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeTUAGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeT7EGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getUniquePreferences&quot;);&#xD;
    Set&lt;OldCompletePreferenceImpl> unique = new LinkedHashSet&lt;>();&#xD;
    for (OldCompletePreferenceImpl pref : votes.values()) {&#xD;
        LOGGER.debug(&quot;next preference : {}&quot;, pref);&#xD;
        unique.add(pref);&#xD;
    }&#xD;
    return unique;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Qr0pwWbSEeqrtc6dy-mPpg" name="getNbUniquePreferences" specification="_Qr0CsmbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SeUiIGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeVJMGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeVwQGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getNbUniquePreferences:&quot;);&#xD;
    return getUniquePreferences().size();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Qr1Q0GbSEeqrtc6dy-mPpg" name="isComplete" specification="_Qr0pwmbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SeW-YGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeYMgGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeYzkGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;isComplete&quot;);&#xD;
    OldCompletePreferenceImpl pref = votes.values().iterator().next();&#xD;
    LOGGER.debug(&quot;first preferences :{}&quot;, pref);&#xD;
    for (OldCompletePreferenceImpl p : votes.values()) {&#xD;
        if (!p.hasSameAlternatives(pref)) {&#xD;
            LOGGER.debug(&quot;Profile incomplete.&quot;);&#xD;
            return false;&#xD;
        }&#xD;
    }&#xD;
    LOGGER.debug(&quot;Profile is complete.&quot;);&#xD;
    return true;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Qr134GbSEeqrtc6dy-mPpg" name="isStrict" specification="_Qr1Q0WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SeZaoGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeaowGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SebP0GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;isStrict:&quot;);&#xD;
    for (OldCompletePreferenceImpl p : votes.values()) {&#xD;
        if (!p.isStrict()) {&#xD;
            LOGGER.debug(&quot;non strict&quot;);&#xD;
            return false;&#xD;
        }&#xD;
    }&#xD;
    LOGGER.debug(&quot;strict&quot;);&#xD;
    return true;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Qr2e8WbSEeqrtc6dy-mPpg" name="getNbVoterForPreference" specification="_Qr134WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Seb24GbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SedFAGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SedFAWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SedsEGbSEeqrtc6dy-mPpg" name="p" type="_O-JnAGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_See6MGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SefhQGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getnbVoterByPreference:&quot;);&#xD;
    Preconditions.checkNotNull(p);&#xD;
    LOGGER.debug(&quot;parameter preference: {}&quot;, p);&#xD;
    int nb = 0;&#xD;
    for (OldCompletePreferenceImpl p1 : votes.values()) {&#xD;
        if (p.equals(p1)) {&#xD;
            nb++;&#xD;
        }&#xD;
    }&#xD;
    LOGGER.debug(&quot;result: {}&quot;, nb);&#xD;
    return nb;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Qr3tEGbSEeqrtc6dy-mPpg" name="equals" specification="_Qr3GAGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SegIUGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SehWcGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Seh9gGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SeikkGbSEeqrtc6dy-mPpg" name="o" type="_PGXH0GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SejysGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SekZwGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    if (this == o)&#xD;
        return true;&#xD;
    if (o == null)&#xD;
        return false;&#xD;
    if (this.getClass() != o.getClass())&#xD;
        return false;&#xD;
    ImmutableProfileI immu = (ImmutableProfileI) o;&#xD;
    return this.getAllVoters().equals(immu.getAllVoters());&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Qr4UIGbSEeqrtc6dy-mPpg" name="hashCode" specification="_Qr3tEWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Seln4GbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SemO8GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Sem2AGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    return Objects.hash(votes);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Qr4UI2bSEeqrtc6dy-mPpg" name="restrictProfile" specification="_Qr4UIWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SendEGbSEeqrtc6dy-mPpg" type="_QrQpEGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeorMGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SepSQGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;StricterProfile : &quot;);&#xD;
    ProfileBuilder profileBuilder = ProfileBuilder.createProfileBuilder(this);&#xD;
    if (isComplete()) {&#xD;
        if (isStrict()) {&#xD;
            LOGGER.debug(&quot;strict complete profile&quot;);&#xD;
            return profileBuilder.createStrictProfile();&#xD;
        }&#xD;
        LOGGER.debug(&quot;non strict complete profile&quot;);&#xD;
        return profileBuilder.createProfile();&#xD;
    }&#xD;
    if (isStrict()) {&#xD;
        LOGGER.debug(&quot;strict incomplete profile&quot;);&#xD;
        return profileBuilder.createStrictProfileI();&#xD;
    }&#xD;
    LOGGER.debug(&quot;non strict incomplete profile&quot;);&#xD;
    return this;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Qr5iQWbSEeqrtc6dy-mPpg" name="checkCompleteMap" specification="_Qr47MGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sep5UGbSEeqrtc6dy-mPpg" type="_POESUGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SerHcGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SerugGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SesVkGbSEeqrtc6dy-mPpg" name="map" type="_POESUGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ses8oGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SetjsGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;checkCompleteMap:&quot;);&#xD;
    Preconditions.checkNotNull(map);&#xD;
    if (!createImmutableProfileI(map).isComplete()) {&#xD;
        throw new IllegalArgumentException(&quot;map is incomplete&quot;);&#xD;
    }&#xD;
    return map;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Qr_B0WbSEeqrtc6dy-mPpg" name="checkStrictMap" specification="_Qr-awGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Seux0GbSEeqrtc6dy-mPpg" type="_POESUGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SevY4GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Sev_8GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SewnAGbSEeqrtc6dy-mPpg" name="map" type="_POESUGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SexOEGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Sex1IGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;checkstrictMap:&quot;);&#xD;
    Preconditions.checkNotNull(map);&#xD;
    if (!createImmutableProfileI(map).isStrict()) {&#xD;
        throw new IllegalArgumentException(&quot;map is not strict&quot;);&#xD;
    }&#xD;
    return map;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QsAP8WbSEeqrtc6dy-mPpg" name="createImmutableProfileI" specification="_Qr_o4GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SezDQGbSEeqrtc6dy-mPpg" type="_QrNmeGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SezqUGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Se0RYGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Se04cGbSEeqrtc6dy-mPpg" name="votes" type="_POESUGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Se1fgGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Se1fgWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;Factory ImmutableProfileI&quot;);&#xD;
    Preconditions.checkNotNull(votes);&#xD;
    return new ImmutableProfileI(votes);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QsA3AWbSEeqrtc6dy-mPpg" name="getNbAlternatives" specification="_QsAP8mbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Se1fgmbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Se2GkGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Se2toGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getNbAlternatives&quot;);&#xD;
    return getAlternatives().size();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QsBeEWbSEeqrtc6dy-mPpg" name="getAlternatives" specification="_QsA3AmbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Se3UsGbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Se4i0GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Se5J4GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getAlternatives&quot;);&#xD;
    Set&lt;Alternative> set = new HashSet&lt;>();&#xD;
    for (OldCompletePreferenceImpl pref : getUniquePreferences()) {&#xD;
        for (Alternative a : OldCompletePreferenceImpl.toAlternativeSet(pref.getPreferencesNonStrict())) {&#xD;
            set.add(a);&#xD;
        }&#xD;
    }&#xD;
    return set;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QsCFIWbSEeqrtc6dy-mPpg" name="getFormat" specification="_QsBeEmbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Se5w8GbSEeqrtc6dy-mPpg" type="_PF7qAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Se6_EGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Se7mIGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getFormat : &quot;);&#xD;
    if (isComplete()) {&#xD;
        if (isStrict()) {&#xD;
            LOGGER.debug(&quot;strict complete profile&quot;);&#xD;
            return &quot;soc&quot;;&#xD;
        }&#xD;
        LOGGER.debug(&quot;non strict complete profile&quot;);&#xD;
        return &quot;toc&quot;;&#xD;
    }&#xD;
    if (isStrict()) {&#xD;
        LOGGER.debug(&quot;strict incomplete profile&quot;);&#xD;
        return &quot;soi&quot;;&#xD;
    }&#xD;
    LOGGER.debug(&quot;non strict incomplete profile&quot;);&#xD;
    return &quot;toi&quot;;&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QrjkAGbSEeqrtc6dy-mPpg" name="ImmutableProfileI" visibility="protected" method="_QrtVAGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qrst8GbSEeqrtc6dy-mPpg" name="votes" type="_POESUGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QrtVAWbSEeqrtc6dy-mPpg" name="getPreference" visibility="public" method="_QrujIGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qrt8EGbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qrt8EWbSEeqrtc6dy-mPpg" name="v" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QrujIWbSEeqrtc6dy-mPpg" name="getMaxSizeOfPreference" visibility="public" method="_QrvKMGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QrujImbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QrvKMWbSEeqrtc6dy-mPpg" name="getProfile" visibility="public" method="_QrvxQGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QrvKMmbSEeqrtc6dy-mPpg" type="_POESUGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QrvxQWbSEeqrtc6dy-mPpg" name="getAllVoters" visibility="public" method="_QryNgWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QryNgGbSEeqrtc6dy-mPpg" type="_QrvxQmbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QryNgmbSEeqrtc6dy-mPpg" name="getNbVoters" visibility="public" method="_Qry0kWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qry0kGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Qry0kmbSEeqrtc6dy-mPpg" name="getSumVoteCount" visibility="public" method="_QrzboWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QrzboGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QrzbombSEeqrtc6dy-mPpg" name="getUniquePreferences" visibility="public" method="_Qr0CsWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qr0CsGbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Qr0CsmbSEeqrtc6dy-mPpg" name="getNbUniquePreferences" visibility="public" method="_Qr0pwWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qr0pwGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Qr0pwmbSEeqrtc6dy-mPpg" name="isComplete" visibility="public" method="_Qr1Q0GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qr0pw2bSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Qr1Q0WbSEeqrtc6dy-mPpg" name="isStrict" visibility="public" method="_Qr134GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qr1Q0mbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Qr134WbSEeqrtc6dy-mPpg" name="getNbVoterForPreference" visibility="public" method="_Qr2e8WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qr134mbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qr2e8GbSEeqrtc6dy-mPpg" name="p" type="_O-JnAGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Qr3GAGbSEeqrtc6dy-mPpg" name="equals" visibility="public" method="_Qr3tEGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qr3GAWbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qr3GAmbSEeqrtc6dy-mPpg" name="o" type="_PGXH0GbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Qr3tEWbSEeqrtc6dy-mPpg" name="hashCode" visibility="public" method="_Qr4UIGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qr3tEmbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Qr4UIWbSEeqrtc6dy-mPpg" name="restrictProfile" visibility="public" method="_Qr4UI2bSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qr4UImbSEeqrtc6dy-mPpg" type="_QrQpEGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Qr47MGbSEeqrtc6dy-mPpg" name="checkCompleteMap" visibility="public" isStatic="true" method="_Qr5iQWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qr47MWbSEeqrtc6dy-mPpg" type="_POESUGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qr5iQGbSEeqrtc6dy-mPpg" name="map" type="_POESUGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Qr-awGbSEeqrtc6dy-mPpg" name="checkStrictMap" visibility="public" isStatic="true" method="_Qr_B0WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qr-awWbSEeqrtc6dy-mPpg" type="_POESUGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qr_B0GbSEeqrtc6dy-mPpg" name="map" type="_POESUGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Qr_o4GbSEeqrtc6dy-mPpg" name="createImmutableProfileI" visibility="public" isStatic="true" method="_QsAP8WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qr_o4WbSEeqrtc6dy-mPpg" type="_QrNmeGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QsAP8GbSEeqrtc6dy-mPpg" name="votes" type="_POESUGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QsAP8mbSEeqrtc6dy-mPpg" name="getNbAlternatives" visibility="public" method="_QsA3AWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QsA3AGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QsA3AmbSEeqrtc6dy-mPpg" name="getAlternatives" visibility="public" method="_QsBeEWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QsBeEGbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QsBeEmbSEeqrtc6dy-mPpg" name="getFormat" visibility="public" method="_QsCFIWbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QsCFIGbSEeqrtc6dy-mPpg" type="_PF7qAGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QvZiMGbSEeqrtc6dy-mPpg" name="getPreference"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QyAKQGbSEeqrtc6dy-mPpg" name="getPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QyB_cGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QyDNkGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QyD0oGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Q1KzAGbSEeqrtc6dy-mPpg" name="getPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Q1MoMGbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q1N2UGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q1PEcGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Q2zKsGbSEeqrtc6dy-mPpg" name="getPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Q21m8GbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q24DMGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q24qQGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Q25RUGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q26fcGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q27GgGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Q4S_gGbSEeqrtc6dy-mPpg" name="getPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Q4U0sGbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q4WC0GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q4XQ8GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Q4X4AGbSEeqrtc6dy-mPpg" name="v">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q4ZGIGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q4aUQGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Q7KGQGbSEeqrtc6dy-mPpg" name="getMaxSizeOfPreference"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Q9lvMGbSEeqrtc6dy-mPpg" name="getMaxSizeOfPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Q9nkYGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q9oygGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q9pZkGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_RBuBQGbSEeqrtc6dy-mPpg" name="getProfile"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_REMGcGbSEeqrtc6dy-mPpg" name="getProfile">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_REUCQGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_REUpUGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_REVQYGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_RJpOMGbSEeqrtc6dy-mPpg" name="getAllVoters"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_RLuR0GbSEeqrtc6dy-mPpg" name="getAllVoters">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_RL20sGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RL3bwGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RL4C0GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_RP3yAGbSEeqrtc6dy-mPpg" name="getNbVoters"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_RSPwkGbSEeqrtc6dy-mPpg" name="getNbVoters">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_RSRlwGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RSSz4GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RSTa8GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_RV1QEGbSEeqrtc6dy-mPpg" name="getSumVoteCount"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_RYJkQGbSEeqrtc6dy-mPpg" name="getSumVoteCount">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_RYLZcGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RYMnkGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RYNOoGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_RbsAcGbSEeqrtc6dy-mPpg" name="getUniquePreferences"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Rd1VgGbSEeqrtc6dy-mPpg" name="getUniquePreferences">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Rd2joGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rd3KsGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rd3xwGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_RiEVQGbSEeqrtc6dy-mPpg" name="getNbUniquePreferences"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Rk608GbSEeqrtc6dy-mPpg" name="getNbUniquePreferences">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Rk8qIGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rk9RMGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rk94QGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_RoV8YGbSEeqrtc6dy-mPpg" name="isComplete"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Rq9ykGbSEeqrtc6dy-mPpg" name="isComplete">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Rq_nwGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RrAO0GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RrA14GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_RuZhEGbSEeqrtc6dy-mPpg" name="isStrict"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Rwpj0GbSEeqrtc6dy-mPpg" name="isStrict">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Rwqx8GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RwsAEGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RwsnIGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_R0b3o2bSEeqrtc6dy-mPpg" name="getNbVoterForPreference"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_R3ADcGbSEeqrtc6dy-mPpg" name="getNbVoterForPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_R3ADcWbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R3ADcmbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_R3ADc2bSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_R5ogsGbSEeqrtc6dy-mPpg" name="getNbVoterForPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_R5ogsWbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R5ogsmbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_R5ogs2bSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_R7CO4GbSEeqrtc6dy-mPpg" name="getNbVoterForPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_R7CO4WbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R7CO4mbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_R7CO42bSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_R7CO5GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R7CO5WbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_R7CO5mbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_R8TaMGbSEeqrtc6dy-mPpg" name="getNbVoterForPreference">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_R8VPYGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R8V2cGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_R8XEkGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_R8XroGbSEeqrtc6dy-mPpg" name="p">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R8YSsGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_R8Y5wGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_R-6pUGbSEeqrtc6dy-mPpg" name="equals"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SBhRYGbSEeqrtc6dy-mPpg" name="equals">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SBjGkGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SBjtoGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SBkUsGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SEKVsGbSEeqrtc6dy-mPpg" name="equals">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SEMK4GbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SENZAGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SEOAEGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SFkD4GbSEeqrtc6dy-mPpg" name="equals">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SFlSAGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SFmgIGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SFnHMGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SFnuQGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SFo8YGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SFpjcGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SGnz0GbSEeqrtc6dy-mPpg" name="equals">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SGpB8GbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SGppAGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SGqQEGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SGq3IGbSEeqrtc6dy-mPpg" name="o">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SGsFQGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SGsFQWbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SImw0GbSEeqrtc6dy-mPpg" name="restrictProfile"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SKpYMGbSEeqrtc6dy-mPpg" name="restrictProfile">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SKrNYGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SKr0cGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SKsbgGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SOA1QGbSEeqrtc6dy-mPpg" name="getNbAlternatives"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SQBncGbSEeqrtc6dy-mPpg" name="getNbAlternatives">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SQDcoGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SQEqwGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SQFR0GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_STRvwGbSEeqrtc6dy-mPpg" name="getAlternatives"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SVRT0GbSEeqrtc6dy-mPpg" name="getAlternatives">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SVR64GbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SVSh8GbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SVTJAGbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SYj4YGbSEeqrtc6dy-mPpg" name="getFormat"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Sat0gGbSEeqrtc6dy-mPpg" name="getFormat">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SavpsGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SawQwGbSEeqrtc6dy-mPpg" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Saw30GbSEeqrtc6dy-mPpg" value="1"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_Qsdi8GbSEeqrtc6dy-mPpg" name="ImmutableStrictProfile" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_QshNUGbSEeqrtc6dy-mPpg" general="_Qsf_MGbSEeqrtc6dy-mPpg"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_QslewGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_Qsn7AGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(ImmutableStrictProfile.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_QsjpkGbSEeqrtc6dy-mPpg" name="ImmutableStrictProfile implements StrictProfile" client="_Qsdi8GbSEeqrtc6dy-mPpg" supplier="_QsD6UGbSEeqrtc6dy-mPpg" contract="_QsD6UGbSEeqrtc6dy-mPpg"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Qsv20GbSEeqrtc6dy-mPpg" name="createImmutableStrictProfile" specification="_QspJIGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    return new ImmutableStrictProfile(map);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Qs4ZsGbSEeqrtc6dy-mPpg" name="ImmutableStrictProfile" specification="_QsxsAGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    super(checkCompleteMap(map));&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Qs95QGbSEeqrtc6dy-mPpg" name="getNbAlternatives" specification="_Qs7dAGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getNbAlternatives:&quot;);&#xD;
    return getAlternatives().size();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QtCKsGbSEeqrtc6dy-mPpg" name="getAlternatives" specification="_Qs_ucGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getAlternatives :&quot;);&#xD;
    OldCompletePreferenceImpl p = votes.values().iterator().next();&#xD;
    return OldCompletePreferenceImpl.toAlternativeSet(p.getPreferencesNonStrict());&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QtbzUGbSEeqrtc6dy-mPpg" name="getIthAlternatives" specification="_QtWTwGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getIthAlternatives :&quot;);&#xD;
    Preconditions.checkNotNull(i);&#xD;
    NavigableSet&lt;Voter> voters = getAllVoters();&#xD;
    List&lt;Alternative> listIthAlternatives = new ArrayList&lt;>();&#xD;
    for (Voter v : voters) {&#xD;
        listIthAlternatives.add(getPreference(v).getAlternative(i));&#xD;
    }&#xD;
    return listIthAlternatives;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QtjvIGbSEeqrtc6dy-mPpg" name="getIthAlternativesOfUniquePreferences" specification="_QtdogGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getIthAlternativesOfUniquePreferences :&quot;);&#xD;
    Preconditions.checkNotNull(i);&#xD;
    List&lt;Alternative> listIthAlternatives = new ArrayList&lt;>();&#xD;
    for (OldCompletePreferenceImpl p : getUniquePreferences()) {&#xD;
        listIthAlternatives.add(p.getAlternative(i));&#xD;
    }&#xD;
    return listIthAlternatives;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Qtp1wGbSEeqrtc6dy-mPpg" name="writeToSOC" specification="_QtmLYGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;writeToSOC :&quot;);&#xD;
    Preconditions.checkNotNull(output);&#xD;
    try (Writer writer = new BufferedWriter(new OutputStreamWriter(output))) {&#xD;
        StringBuilder soc = new StringBuilder();&#xD;
        soc.append(getNbAlternatives() + &quot;\n&quot;);&#xD;
        for (Alternative alter : getAlternatives()) {&#xD;
            soc.append(alter.getId() + &quot;\n&quot;);&#xD;
        }&#xD;
        soc.append(getNbVoters() + &quot;,&quot; + getSumVoteCount() + &quot;,&quot; + getNbUniquePreferences() + &quot;\n&quot;);&#xD;
        for (OldCompletePreferenceImpl pref : this.getUniquePreferences()) {&#xD;
            soc.append(getNbVoterForPreference(pref));&#xD;
            for (Alternative a : OldCompletePreferenceImpl.toAlternativeSet(pref.getPreferencesNonStrict())) {&#xD;
                soc.append(&quot;,&quot; + a);&#xD;
            }&#xD;
            soc.append(&quot;\n&quot;);&#xD;
        }&#xD;
        writer.append(soc);&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QspJIGbSEeqrtc6dy-mPpg" name="createImmutableStrictProfile" visibility="public" isStatic="true" method="_Qsv20GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qsq-UGbSEeqrtc6dy-mPpg" type="_Qsdi8GbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QsuBoGbSEeqrtc6dy-mPpg" name="map" type="_POESUGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QsxsAGbSEeqrtc6dy-mPpg" name="ImmutableStrictProfile" visibility="private" method="_Qs4ZsGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qs2kgGbSEeqrtc6dy-mPpg" name="map" type="_POESUGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Qs7dAGbSEeqrtc6dy-mPpg" name="getNbAlternatives" visibility="public" method="_Qs95QGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qs8rIGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Qs_ucGbSEeqrtc6dy-mPpg" name="getAlternatives" visibility="public" method="_QtCKsGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QtA8kGbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QtWTwGbSEeqrtc6dy-mPpg" name="getIthAlternatives" visibility="public" method="_QtbzUGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QtXh4GbSEeqrtc6dy-mPpg" type="_PFRisGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QtYI8GbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QtYwAGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QtZ-IGbSEeqrtc6dy-mPpg" name="i">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QtdogGbSEeqrtc6dy-mPpg" name="getIthAlternativesOfUniquePreferences" visibility="public" method="_QtjvIGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QtfdsGbSEeqrtc6dy-mPpg" type="_PFRisGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qtgr0GbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qth58GbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QtihAGbSEeqrtc6dy-mPpg" name="i">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QtmLYGbSEeqrtc6dy-mPpg" name="writeToSOC" visibility="public" method="_Qtp1wGbSEeqrtc6dy-mPpg" raisedException="_QsKA8WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QtoAkGbSEeqrtc6dy-mPpg" name="output" type="_QsG9oWbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_Qsf_MGbSEeqrtc6dy-mPpg" name="ImmutableStrictProfileI" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_QuVyQGbSEeqrtc6dy-mPpg" general="_QrNmeGbSEeqrtc6dy-mPpg"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_QuXncGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_QuhYcGbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(ImmutableStrictProfileI.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_QuWZUGbSEeqrtc6dy-mPpg" name="ImmutableStrictProfileI implements StrictProfileI" client="_Qsf_MGbSEeqrtc6dy-mPpg" supplier="_QsEhYGbSEeqrtc6dy-mPpg" contract="_QsEhYGbSEeqrtc6dy-mPpg"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QuotMGbSEeqrtc6dy-mPpg" name="createImmutableStrictProfileI" specification="_QujNoGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;Factory ImmutableStrictProfileI&quot;);&#xD;
    checkStrictMap(map);&#xD;
    return new ImmutableStrictProfileI(map);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QuyeMGbSEeqrtc6dy-mPpg" name="ImmutableStrictProfileI" specification="_QurJcGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    super(map);&#xD;
    LOGGER.debug(&quot;ImmutableStrictProfileI  constructor&quot;);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Qu4k0GbSEeqrtc6dy-mPpg" name="getPreference" specification="_Qu06cGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getPreference:&quot;);&#xD;
    Preconditions.checkNotNull(v);&#xD;
    if (!votes.containsKey(v)) {&#xD;
        throw new NoSuchElementException(&quot;Voter &quot; + v + &quot;is not in the map !&quot;);&#xD;
    }&#xD;
    return votes.get(v).toStrictPreference();&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QvAgoGbSEeqrtc6dy-mPpg" name="getIthAlternativesAsStrings" specification="_Qu7BEGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getIthAlternativesStrings&quot;);&#xD;
    if (i > getMaxSizeOfPreference()) {&#xD;
        throw new IndexOutOfBoundsException(&quot;The given index is out of bound.&quot;);&#xD;
    }&#xD;
    List&lt;String> list = new ArrayList&lt;>();&#xD;
    for (Voter v : getAllVoters()) {&#xD;
        OldLinearPreferenceImpl p = getPreference(v);&#xD;
        LOGGER.debug(&quot;the voter {} votes for the preference {}&quot;, v, p);&#xD;
        if (i >= p.size()) {&#xD;
            list.add(&quot;&quot;);&#xD;
            LOGGER.debug(&quot;the preference is smaller than the given index&quot;);&#xD;
        } else {&#xD;
            list.add(p.getAlternative(i).toString());&#xD;
            LOGGER.debug(&quot;the ith alternative is {}&quot;, p.getAlternative(i));&#xD;
        }&#xD;
    }&#xD;
    return list;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QvIccGbSEeqrtc6dy-mPpg" name="getIthAlternativesOfUniquePrefAsString" specification="_QvC84GbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getIthAlternativesOfUniquePrefAsString&quot;);&#xD;
    Preconditions.checkNotNull(i);&#xD;
    List&lt;String> list = new ArrayList&lt;>();&#xD;
    for (OldCompletePreferenceImpl p : getUniquePreferences()) {&#xD;
        String alter = &quot;&quot;;&#xD;
        if (i &lt; p.size()) {&#xD;
            alter = p.getAlternative(i).toString();&#xD;
            LOGGER.debug(&quot;the ith alternative is {}&quot;, p.getAlternative(i));&#xD;
        }&#xD;
        list.add(alter);&#xD;
    }&#xD;
    return list;&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QvN8AGbSEeqrtc6dy-mPpg" name="writeToSOI" specification="_QvK4sGbSEeqrtc6dy-mPpg">
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;writeToSOI :&quot;);&#xD;
    Preconditions.checkNotNull(output);&#xD;
    try (Writer writer = new BufferedWriter(new OutputStreamWriter(output))) {&#xD;
        StringBuilder soi = new StringBuilder();&#xD;
        soi.append(getNbAlternatives() + &quot;\n&quot;);&#xD;
        for (Alternative alter : getAlternatives()) {&#xD;
            soi.append(alter.getId() + &quot;\n&quot;);&#xD;
        }&#xD;
        soi.append(getNbVoters() + &quot;,&quot; + getSumVoteCount() + &quot;,&quot; + getNbUniquePreferences() + &quot;\n&quot;);&#xD;
        for (OldCompletePreferenceImpl pref : this.getUniquePreferences()) {&#xD;
            soi.append(getNbVoterForPreference(pref));&#xD;
            for (Alternative a : OldCompletePreferenceImpl.toAlternativeSet(pref.getPreferencesNonStrict())) {&#xD;
                soi.append(&quot;,&quot; + a);&#xD;
            }&#xD;
            soi.append(&quot;\n&quot;);&#xD;
        }&#xD;
        writer.append(soi);&#xD;
    }&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QujNoGbSEeqrtc6dy-mPpg" name="createImmutableStrictProfileI" visibility="public" isStatic="true" method="_QuotMGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QulC0GbSEeqrtc6dy-mPpg" type="_Qsf_MGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qum4AGbSEeqrtc6dy-mPpg" name="map" type="_POESUGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QurJcGbSEeqrtc6dy-mPpg" name="ImmutableStrictProfileI" visibility="protected" method="_QuyeMGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QuxQEGbSEeqrtc6dy-mPpg" name="map" type="_POESUGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Qu06cGbSEeqrtc6dy-mPpg" name="getPreference" visibility="public" method="_Qu4k0GbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qu1hgGbSEeqrtc6dy-mPpg" type="_PIU2sGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qu3WsGbSEeqrtc6dy-mPpg" name="v" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Qu7BEGbSEeqrtc6dy-mPpg" name="getIthAlternativesAsStrings" visibility="public" method="_QvAgoGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qu82QGbSEeqrtc6dy-mPpg" type="_PF7qAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qu-EYGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qu-rcGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qu_SgGbSEeqrtc6dy-mPpg" name="i">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QvC84GbSEeqrtc6dy-mPpg" name="getIthAlternativesOfUniquePrefAsString" visibility="public" method="_QvIccGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QvEyEGbSEeqrtc6dy-mPpg" type="_PF7qAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QvFZIGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QvGAMGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QvHOUGbSEeqrtc6dy-mPpg" name="i">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QvK4sGbSEeqrtc6dy-mPpg" name="writeToSOI" visibility="public" method="_QvN8AGbSEeqrtc6dy-mPpg" raisedException="_QsKA8WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QvMG0GbSEeqrtc6dy-mPpg" name="output" type="_QsG9oWbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="_SfAeoGbSEeqrtc6dy-mPpg" name="ImmutableProfile" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_SfCT0GbSEeqrtc6dy-mPpg" general="_QrNmeGbSEeqrtc6dy-mPpg"/>
              <ownedAttribute xmi:type="uml:Property" xmi:id="_SfJBgGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
                <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_SfMr4GbSEeqrtc6dy-mPpg" name="defaultValue">
                  <language>JAVA</language>
                  <body>LoggerFactory.getLogger(ImmutableProfile.class.getName())</body>
                </defaultValue>
              </ownedAttribute>
              <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_SfEJAGbSEeqrtc6dy-mPpg" name="ImmutableProfile implements Profile" client="_SfAeoGbSEeqrtc6dy-mPpg" supplier="_QsEhYmbSEeqrtc6dy-mPpg" contract="_QsEhYmbSEeqrtc6dy-mPpg"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SfQ9UGbSEeqrtc6dy-mPpg" name="createImmutableProfile" specification="_SfN6AGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SYSToG0JEeqxlu-Q2xgkvw" type="_SfAeoGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SYS6sG0JEeqxlu-Q2xgkvw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SYThwG0JEeqxlu-Q2xgkvw" value="1"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SYThwW0JEeqxlu-Q2xgkvw" name="votes" type="_POESUGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SYThwm0JEeqxlu-Q2xgkvw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SYUI0G0JEeqxlu-Q2xgkvw" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;Factory ImmutableProfile&quot;);&#xD;
    Preconditions.checkNotNull(votes);&#xD;
    return new ImmutableProfile(votes);&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SfZgMGbSEeqrtc6dy-mPpg" name="ImmutableProfile" specification="_SfSygGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SYUI0W0JEeqxlu-Q2xgkvw" name="votes" type="_POESUGbSEeqrtc6dy-mPpg">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SYUv4G0JEeqxlu-Q2xgkvw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SYUv4W0JEeqxlu-Q2xgkvw" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    super(checkCompleteMap(votes));&#xD;
</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SfdKkGbSEeqrtc6dy-mPpg" name="getAlternatives" specification="_SfauUGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SYVW8G0JEeqxlu-Q2xgkvw" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SYVW8W0JEeqxlu-Q2xgkvw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SYVW8m0JEeqxlu-Q2xgkvw" value="1"/>
                </ownedParameter>
                <language>JAVA</language>
                <body>&#xD;
    LOGGER.debug(&quot;getAlternatives:&quot;);&#xD;
    OldCompletePreferenceImpl p = votes.values().iterator().next();&#xD;
    return OldCompletePreferenceImpl.toAlternativeSet(p.getPreferencesNonStrict());&#xD;
</body>
              </ownedBehavior>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SfN6AGbSEeqrtc6dy-mPpg" name="createImmutableProfile" visibility="public" isStatic="true" method="_SfQ9UGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SfPIIGbSEeqrtc6dy-mPpg" type="_SfAeoGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SfQWQGbSEeqrtc6dy-mPpg" name="votes" type="_POESUGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SfSygGbSEeqrtc6dy-mPpg" name="ImmutableProfile" visibility="private" method="_SfZgMGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SfYSEGbSEeqrtc6dy-mPpg" name="votes" type="_POESUGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SfauUGbSEeqrtc6dy-mPpg" name="getAlternatives" visibility="public" method="_SfdKkGbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sfb8cGbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SYJJsG0JEeqxlu-Q2xgkvw" name="isComplete">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SYJwwG0JEeqxlu-Q2xgkvw" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SYJwwW0JEeqxlu-Q2xgkvw" value="1"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SYKX0G0JEeqxlu-Q2xgkvw" value="1"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="_a80MYGz8EeqXjdVQZO8c9Q" name="interfaces">
            <packagedElement xmi:type="uml:Interface" xmi:id="_QrQpEGbSEeqrtc6dy-mPpg" name="ProfileI" visibility="public">
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QvYUEGbSEeqrtc6dy-mPpg" name="getPreference" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qx_jMGbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Q2x8kGbSEeqrtc6dy-mPpg" name="v" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Q7IREGbSEeqrtc6dy-mPpg" name="getMaxSizeOfPreference" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Q9j6AGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_RBsMEGbSEeqrtc6dy-mPpg" name="getProfile" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_REKRQGbSEeqrtc6dy-mPpg" type="_POESUGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_RJjHkGbSEeqrtc6dy-mPpg" name="getAllVoters" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_RLoyQGbSEeqrtc6dy-mPpg" type="_QrvxQmbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_RPzgkGbSEeqrtc6dy-mPpg" name="getNbVoters" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_RSMtQGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_RVw-oGbSEeqrtc6dy-mPpg" name="getSumVoteCount" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_RYGg8GbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_RbnvAGbSEeqrtc6dy-mPpg" name="getUniquePreferences" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_RdxrIGbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_RiAD0GbSEeqrtc6dy-mPpg" name="getNbUniquePreferences" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Rk2jgGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_RoRD4GbSEeqrtc6dy-mPpg" name="isComplete" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Rq46EGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_RuUokGbSEeqrtc6dy-mPpg" name="isStrict" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_RwkrUGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_R0b3ombSEeqrtc6dy-mPpg" name="getNbVoterForPreference" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_R225iGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_R65E9WbSEeqrtc6dy-mPpg" name="p" type="_O-JnAGbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_R-0isGbSEeqrtc6dy-mPpg" name="equals" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SBc_8GbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SFdWMGbSEeqrtc6dy-mPpg" name="o" type="_PGXH0GbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SIh4UGbSEeqrtc6dy-mPpg" name="restrictProfile" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SKkfsGbSEeqrtc6dy-mPpg" type="_QrQpEGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SN8j0GbSEeqrtc6dy-mPpg" name="getNbAlternatives" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SP8u8GbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_STM3QGbSEeqrtc6dy-mPpg" name="getAlternatives" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_SVL0QGbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_SYe_4GbSEeqrtc6dy-mPpg" name="getFormat" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sao8AGbSEeqrtc6dy-mPpg" type="_PF7qAGbSEeqrtc6dy-mPpg" direction="return"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="_QsD6UGbSEeqrtc6dy-mPpg" name="StrictProfile" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_QsEhYWbSEeqrtc6dy-mPpg" general="_QsEhYGbSEeqrtc6dy-mPpg"/>
              <generalization xmi:type="uml:Generalization" xmi:id="_QsEhY2bSEeqrtc6dy-mPpg" general="_QsEhYmbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QsEhZGbSEeqrtc6dy-mPpg" name="getIthAlternatives" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QsFIcGbSEeqrtc6dy-mPpg" type="_PFRisGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QsFIcWbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QsFIcmbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QsFvgGbSEeqrtc6dy-mPpg" name="i">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QsFvgWbSEeqrtc6dy-mPpg" name="getIthAlternativesOfUniquePreferences" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QsFvgmbSEeqrtc6dy-mPpg" type="_PFRisGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QsGWkGbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QsGWkWbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QsGWkmbSEeqrtc6dy-mPpg" name="i">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QsJZ4GbSEeqrtc6dy-mPpg" name="writeToSOC" visibility="public" raisedException="_QsKA8WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QsKA8GbSEeqrtc6dy-mPpg" name="output" type="_QsG9oWbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="_QsEhYGbSEeqrtc6dy-mPpg" name="StrictProfileI" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_Qt004GbSEeqrtc6dy-mPpg" general="_QrQpEGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Qt2DAGbSEeqrtc6dy-mPpg" name="getPreference" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qt3RIGbSEeqrtc6dy-mPpg" type="_PIU2sGbSEeqrtc6dy-mPpg" direction="return"/>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qt5GUGbSEeqrtc6dy-mPpg" name="v" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Qt5tYGbSEeqrtc6dy-mPpg" name="isStrict" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qt67gGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_Qt8JoGbSEeqrtc6dy-mPpg" name="getIthAlternativesAsStrings" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_Qt9-0GbSEeqrtc6dy-mPpg" type="_PF7qAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qt_M8GbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qt_0AGbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QuAbEGbSEeqrtc6dy-mPpg" name="i">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QuCQQGbSEeqrtc6dy-mPpg" name="getIthAlternativesOfUniquePrefAsString" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QuEFcGbSEeqrtc6dy-mPpg" type="_PF7qAGbSEeqrtc6dy-mPpg" direction="return">
                  <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QuHv0GbSEeqrtc6dy-mPpg"/>
                  <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QuIW4GbSEeqrtc6dy-mPpg" value="*"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QuIW4WbSEeqrtc6dy-mPpg" name="i">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
                </ownedParameter>
              </ownedOperation>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QuKMEGbSEeqrtc6dy-mPpg" name="writeToSOI" visibility="public" raisedException="_QsKA8WbSEeqrtc6dy-mPpg">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QuMoUGbSEeqrtc6dy-mPpg" name="output" type="_QsG9oWbSEeqrtc6dy-mPpg"/>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="_QsEhYmbSEeqrtc6dy-mPpg" name="Profile" visibility="public">
              <generalization xmi:type="uml:Generalization" xmi:id="_QvRmYGbSEeqrtc6dy-mPpg" general="_QrQpEGbSEeqrtc6dy-mPpg"/>
              <ownedOperation xmi:type="uml:Operation" xmi:id="_QvS0gGbSEeqrtc6dy-mPpg" name="isComplete" visibility="public">
                <ownedParameter xmi:type="uml:Parameter" xmi:id="_QvTbkGbSEeqrtc6dy-mPpg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="_7mQOoGz6Eeqxlu-Q2xgkvw" name="j-voting">
          <packagedElement xmi:type="uml:Class" xmi:id="_PMEHMGbSEeqrtc6dy-mPpg" name="Generator" visibility="public">
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PMVM8GbSEeqrtc6dy-mPpg" name="getAlternatives" specification="_PMF8YGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    final ImmutableSet.Builder&lt;Alternative> builder = ImmutableSet.builder();&#xD;
    for (int i = 1; i &lt;= m; ++i) {&#xD;
        builder.add(Alternative.withId(i));&#xD;
    }&#xD;
    return builder.build();&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PMdIwGbSEeqrtc6dy-mPpg" name="getVoters" specification="_PMYQQGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    final ImmutableSet.Builder&lt;Voter> builder = ImmutableSet.builder();&#xD;
    for (int i = 1; i &lt;= n; ++i) {&#xD;
        builder.add(Voter.createVoter(i));&#xD;
    }&#xD;
    return builder.build();&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PMlEkGbSEeqrtc6dy-mPpg" name="Generator" specification="_PMflAGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    throw new IllegalStateException(&quot;Utility Class&quot;);&#xD;
</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PMF8YGbSEeqrtc6dy-mPpg" name="getAlternatives" visibility="public" isStatic="true" method="_PMVM8GbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PMSJoGbSEeqrtc6dy-mPpg" type="_PMMDAGbSEeqrtc6dy-mPpg" direction="return"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PMTXwGbSEeqrtc6dy-mPpg" name="m">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PMYQQGbSEeqrtc6dy-mPpg" name="getVoters" visibility="public" isStatic="true" method="_PMdIwGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PMasgGbSEeqrtc6dy-mPpg" type="_PMMDAGbSEeqrtc6dy-mPpg" direction="return"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PMb6oGbSEeqrtc6dy-mPpg" name="n">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PMflAGbSEeqrtc6dy-mPpg" name="Generator" visibility="private" method="_PMlEkGbSEeqrtc6dy-mPpg"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="_PIiSEGbSEeqrtc6dy-mPpg" name="Comparable"/>
          <packagedElement xmi:type="uml:Class" xmi:id="_PIhD8GbSEeqrtc6dy-mPpg" name="Voter" visibility="public">
            <ownedAttribute xmi:type="uml:Property" xmi:id="_PIzX0GbSEeqrtc6dy-mPpg" name="id" visibility="private" isUnique="false">
              <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_PI2bIGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
              <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_PI6skGbSEeqrtc6dy-mPpg" name="defaultValue">
                <language>JAVA</language>
                <body>LoggerFactory.getLogger(Voter.class.getName())</body>
              </defaultValue>
            </ownedAttribute>
            <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_PIxioGbSEeqrtc6dy-mPpg" name="Voter implements Comparable" client="_PIhD8GbSEeqrtc6dy-mPpg" supplier="_PIiSEGbSEeqrtc6dy-mPpg" contract="_PIiSEGbSEeqrtc6dy-mPpg"/>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PJBaQGbSEeqrtc6dy-mPpg" name="createVoter" specification="_PI8hwGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    Preconditions.checkNotNull(id);&#xD;
    return new Voter(id);&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PJNngGbSEeqrtc6dy-mPpg" name="Voter" specification="_PJD2gGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    this.id = id;&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PJTHEGbSEeqrtc6dy-mPpg" name="getId" specification="_PJQDwGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    return id;&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PJjlwGbSEeqrtc6dy-mPpg" name="compareTo" specification="_PJVjUGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;compare:&quot;);&#xD;
    Preconditions.checkNotNull(v2);&#xD;
    LOGGER.debug(&quot;calling voter : v1 {}, parameter v2 {}&quot;, this.getId(), v2.getId());&#xD;
    return this.getId() - v2.getId();&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PJsvsGbSEeqrtc6dy-mPpg" name="equals" specification="_PJnQIGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    if (this == o)&#xD;
        return true;&#xD;
    if (o == null)&#xD;
        return false;&#xD;
    if (this.getClass() != o.getClass())&#xD;
        return false;&#xD;
    Voter voter = (Voter) o;&#xD;
    return this.getId() == voter.getId();&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PJzdYGbSEeqrtc6dy-mPpg" name="hashCode" specification="_PJvzAGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    return id;&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PJ5kAGbSEeqrtc6dy-mPpg" name="toString" specification="_PJ15oGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    return MoreObjects.toStringHelper(this).addValue(id).toString();&#xD;
</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PI8hwGbSEeqrtc6dy-mPpg" name="createVoter" visibility="public" isStatic="true" method="_PJBaQGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PI9v4GbSEeqrtc6dy-mPpg" type="_PIhD8GbSEeqrtc6dy-mPpg" direction="return"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PI_lEGbSEeqrtc6dy-mPpg" name="id">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PJD2gGbSEeqrtc6dy-mPpg" name="Voter" visibility="private" method="_PJNngGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PJMZYGbSEeqrtc6dy-mPpg" name="id">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PJQDwGbSEeqrtc6dy-mPpg" name="getId" visibility="public" method="_PJTHEGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PJRR4GbSEeqrtc6dy-mPpg" direction="return">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PJVjUGbSEeqrtc6dy-mPpg" name="compareTo" visibility="public" method="_PJjlwGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PJgicGbSEeqrtc6dy-mPpg" direction="return">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PJhwkGbSEeqrtc6dy-mPpg" name="v2" type="_PIhD8GbSEeqrtc6dy-mPpg"/>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PJnQIGbSEeqrtc6dy-mPpg" name="equals" visibility="public" method="_PJsvsGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PJpFUGbSEeqrtc6dy-mPpg" direction="return">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PJq6gGbSEeqrtc6dy-mPpg" name="o" type="_PGXH0GbSEeqrtc6dy-mPpg"/>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PJvzAGbSEeqrtc6dy-mPpg" name="hashCode" visibility="public" method="_PJzdYGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PJxoMGbSEeqrtc6dy-mPpg" direction="return">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PJ15oGbSEeqrtc6dy-mPpg" name="toString" visibility="public" method="_PJ5kAGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PJ4V4GbSEeqrtc6dy-mPpg" type="_PF7qAGbSEeqrtc6dy-mPpg" direction="return"/>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_PIU2sGbSEeqrtc6dy-mPpg" name="OldLinearPreferenceImpl" visibility="public">
            <generalization xmi:type="uml:Generalization" xmi:id="_PK3NUGbSEeqrtc6dy-mPpg" general="_O-JnAGbSEeqrtc6dy-mPpg"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_PK5pkGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
              <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_PK8s4GbSEeqrtc6dy-mPpg" name="defaultValue">
                <language>JAVA</language>
                <body>LoggerFactory.getLogger(OldLinearPreferenceImpl.class.getName())</body>
              </defaultValue>
            </ownedAttribute>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PLKIQGbSEeqrtc6dy-mPpg" name="OldLinearPreferenceImpl" specification="_PK-iEGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    super(listAlternativeToListSetAlternative(preference));&#xD;
    LOGGER.debug(&quot;StrictPreference constructor&quot;);&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PLQO4GbSEeqrtc6dy-mPpg" name="toString" specification="_PLNLkGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    StringBuilder s = new StringBuilder();&#xD;
    for (Set&lt;Alternative> set : preference) {&#xD;
        for (Alternative alter : set) {&#xD;
            s.append(alter.toString() + &quot;,&quot;);&#xD;
        }&#xD;
    }&#xD;
    s.delete(s.length() - 1, s.length());&#xD;
    return s.toString();&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PLW8kGbSEeqrtc6dy-mPpg" name="getAlternatives" specification="_PLSrIGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;getAlternatives :&quot;);&#xD;
    return listSetAlternativeToList(preference);&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PLhUoGbSEeqrtc6dy-mPpg" name="listAlternativeToListSetAlternative" specification="_PLZY0GbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;listAlternativeToListSetAlternative :&quot;);&#xD;
    Preconditions.checkNotNull(list);&#xD;
    LOGGER.debug(&quot;parameter list : {}&quot;, list);&#xD;
    List&lt;Set&lt;Alternative>> set = new ArrayList&lt;>();&#xD;
    for (Alternative a : list) {&#xD;
        Set&lt;Alternative> alterset = new HashSet&lt;>();&#xD;
        alterset.add(a);&#xD;
        set.add(alterset);&#xD;
    }&#xD;
    LOGGER.debug(&quot;new list of set : {}&quot;, set);&#xD;
    return set;&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PLs60GbSEeqrtc6dy-mPpg" name="listSetAlternativeToList" specification="_PLk_AGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;listSetAlternativeToList :&quot;);&#xD;
    Preconditions.checkNotNull(sets);&#xD;
    LOGGER.debug(&quot;parameter sets :{}&quot;, sets);&#xD;
    List&lt;Alternative> alts = new ArrayList&lt;>();&#xD;
    for (Set&lt;Alternative> s : sets) {&#xD;
        for (Alternative a : s) {&#xD;
            alts.add(a);&#xD;
        }&#xD;
    }&#xD;
    LOGGER.debug(&quot;list : {}&quot;, alts);&#xD;
    return alts;&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PL1dsGbSEeqrtc6dy-mPpg" name="createStrictCompletePreferenceImpl" specification="_PLvXEGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    return new OldLinearPreferenceImpl(preference);&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PL7kUGbSEeqrtc6dy-mPpg" name="getAlternative" specification="_PL358GbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;getAlternative&quot;);&#xD;
    Preconditions.checkNotNull(position);&#xD;
    LOGGER.debug(&quot;position : {}&quot;, position);&#xD;
    if (position >= preference.size()) {&#xD;
        throw new IndexOutOfBoundsException(&quot;This position doesn't exist in the Preference&quot;);&#xD;
    }&#xD;
    return preference.get(position).iterator().next();&#xD;
</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PK-iEGbSEeqrtc6dy-mPpg" name="OldLinearPreferenceImpl" visibility="private" method="_PLKIQGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PLGd4GbSEeqrtc6dy-mPpg" name="preference" type="_PFRisGbSEeqrtc6dy-mPpg">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PLITEGbSEeqrtc6dy-mPpg"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PLI6IGbSEeqrtc6dy-mPpg" value="*"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PLNLkGbSEeqrtc6dy-mPpg" name="toString" visibility="public" method="_PLQO4GbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PLPAwGbSEeqrtc6dy-mPpg" type="_PF7qAGbSEeqrtc6dy-mPpg" direction="return"/>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PLSrIGbSEeqrtc6dy-mPpg" name="getAlternatives" visibility="public" method="_PLW8kGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PLT5QGbSEeqrtc6dy-mPpg" type="_PFRisGbSEeqrtc6dy-mPpg" direction="return">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PLUgUGbSEeqrtc6dy-mPpg"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PLVucGbSEeqrtc6dy-mPpg" value="*"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PLZY0GbSEeqrtc6dy-mPpg" name="listAlternativeToListSetAlternative" visibility="public" isStatic="true" method="_PLhUoGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PLbOAGbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PLccIGbSEeqrtc6dy-mPpg"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PLdDMGbSEeqrtc6dy-mPpg" value="*"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PLeRUGbSEeqrtc6dy-mPpg" name="list" type="_PFRisGbSEeqrtc6dy-mPpg">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PLffcGbSEeqrtc6dy-mPpg"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PLgGgGbSEeqrtc6dy-mPpg" value="*"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PLk_AGbSEeqrtc6dy-mPpg" name="listSetAlternativeToList" visibility="public" isStatic="true" method="_PLs60GbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PLm0MGbSEeqrtc6dy-mPpg" type="_PFRisGbSEeqrtc6dy-mPpg" direction="return">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PLoCUGbSEeqrtc6dy-mPpg"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PLopYGbSEeqrtc6dy-mPpg" value="*"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PLp3gGbSEeqrtc6dy-mPpg" name="sets" type="_PERdIGbSEeqrtc6dy-mPpg">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PLrFoGbSEeqrtc6dy-mPpg"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PLsTwGbSEeqrtc6dy-mPpg" value="*"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PLvXEGbSEeqrtc6dy-mPpg" name="createStrictCompletePreferenceImpl" visibility="public" isStatic="true" method="_PL1dsGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PLxMQGbSEeqrtc6dy-mPpg" type="_PIU2sGbSEeqrtc6dy-mPpg" direction="return"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PLzBcGbSEeqrtc6dy-mPpg" name="preference" type="_PFRisGbSEeqrtc6dy-mPpg">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PL0PkGbSEeqrtc6dy-mPpg"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PL0PkWbSEeqrtc6dy-mPpg" value="*"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PL358GbSEeqrtc6dy-mPpg" name="getAlternative" visibility="public" method="_PL7kUGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PL5IEGbSEeqrtc6dy-mPpg" type="_PFRisGbSEeqrtc6dy-mPpg" direction="return"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PL6WMGbSEeqrtc6dy-mPpg" name="position">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_ILxaUPaLEeW5KOK8aDMdgA"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_PFaFkGbSEeqrtc6dy-mPpg" name="IndexOutOfBoundsException"/>
          <packagedElement xmi:type="uml:Class" xmi:id="_PFRisGbSEeqrtc6dy-mPpg" name="Alternative" visibility="public">
            <ownedAttribute xmi:type="uml:Property" xmi:id="_PKA4wGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
              <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_PKD8EGbSEeqrtc6dy-mPpg" name="defaultValue">
                <language>JAVA</language>
                <body>LoggerFactory.getLogger(Alternative.class.getName())</body>
              </defaultValue>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_PKFxQGbSEeqrtc6dy-mPpg" name="id" visibility="private" isUnique="false">
              <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
            </ownedAttribute>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PKNGAGbSEeqrtc6dy-mPpg" name="withId" specification="_PKINgGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;Alternative Factory&quot;);&#xD;
    Preconditions.checkNotNull(id);&#xD;
    return new Alternative(id);&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PKYsMGbSEeqrtc6dy-mPpg" name="Alternative" specification="_PKO7MGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;Alternative constructor&quot;);&#xD;
    this.id = id;&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PKdksGbSEeqrtc6dy-mPpg" name="getId" specification="_PKbIcGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    return id;&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PKh2IGbSEeqrtc6dy-mPpg" name="equals" specification="_PKey0GbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    if (this == o)&#xD;
        return true;&#xD;
    if (o == null)&#xD;
        return false;&#xD;
    if (this.getClass() != o.getClass())&#xD;
        return false;&#xD;
    Alternative alter = (Alternative) o;&#xD;
    return this.getId() == alter.getId();&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PKjrUWbSEeqrtc6dy-mPpg" name="toString" specification="_PKjEQGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    return Integer.toString(id);&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PKk5cGbSEeqrtc6dy-mPpg" name="hashCode" specification="_PKkSYGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    return id;&#xD;
</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PKINgGbSEeqrtc6dy-mPpg" name="withId" visibility="public" isStatic="true" method="_PKNGAGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PKKCsGbSEeqrtc6dy-mPpg" type="_PFRisGbSEeqrtc6dy-mPpg" direction="return"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PKL34GbSEeqrtc6dy-mPpg" name="id">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PKO7MGbSEeqrtc6dy-mPpg" name="Alternative" visibility="private" method="_PKYsMGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PKXeEGbSEeqrtc6dy-mPpg" name="id">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PKbIcGbSEeqrtc6dy-mPpg" name="getId" visibility="public" method="_PKdksGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PKcWkGbSEeqrtc6dy-mPpg" direction="return">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PKey0GbSEeqrtc6dy-mPpg" name="equals" visibility="public" method="_PKh2IGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PKey0WbSEeqrtc6dy-mPpg" direction="return">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PKgoAGbSEeqrtc6dy-mPpg" name="o" type="_PGXH0GbSEeqrtc6dy-mPpg"/>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PKjEQGbSEeqrtc6dy-mPpg" name="toString" visibility="public" method="_PKjrUWbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PKjrUGbSEeqrtc6dy-mPpg" type="_PF7qAGbSEeqrtc6dy-mPpg" direction="return"/>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PKkSYGbSEeqrtc6dy-mPpg" name="hashCode" visibility="public" method="_PKk5cGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PKkSYWbSEeqrtc6dy-mPpg" direction="return">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
              </ownedParameter>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_O-JnAGbSEeqrtc6dy-mPpg" name="OldCompletePreferenceImpl" visibility="public">
            <ownedAttribute xmi:type="uml:Property" xmi:id="_PEAXYGbSEeqrtc6dy-mPpg" name="LOGGER" visibility="private" isLeaf="true" isStatic="true" type="_O-SJ4GbSEeqrtc6dy-mPpg" isUnique="false">
              <defaultValue xmi:type="uml:OpaqueExpression" xmi:id="_PEFP4GbSEeqrtc6dy-mPpg" name="defaultValue">
                <language>JAVA</language>
                <body>LoggerFactory.getLogger(OldCompletePreferenceImpl.class.getName())</body>
              </defaultValue>
            </ownedAttribute>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_PEdDUGbSEeqrtc6dy-mPpg" name="preference" visibility="package" type="_PPpmsGbSEeqrtc6dy-mPpg" isUnique="false">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PEh70GbSEeqrtc6dy-mPpg"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PEjJ8GbSEeqrtc6dy-mPpg" value="*"/>
            </ownedAttribute>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PE5IMGbSEeqrtc6dy-mPpg" name="OldCompletePreferenceImpl" specification="_PEmNQGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;Preference Factory&quot;);&#xD;
    this.preference = preference;&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PFlrwGbSEeqrtc6dy-mPpg" name="getAlternative" specification="_PFPtgGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;getAlternative&quot;);&#xD;
    Preconditions.checkNotNull(position);&#xD;
    if (position >= preference.size()) {&#xD;
        throw new IndexOutOfBoundsException(&quot;This position doesn't exist in the Preference&quot;);&#xD;
    }&#xD;
    return preference.get(position).iterator().next();&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PFygEGbSEeqrtc6dy-mPpg" name="getPreferencesNonStrict" specification="_PFrLUGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;getPreferencesNonStrict :&quot;);&#xD;
    return preference;&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PGIeUGbSEeqrtc6dy-mPpg" name="toString" specification="_PF2KcGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    StringBuilder s = new StringBuilder();&#xD;
    for (Set&lt;Alternative> set : preference) {&#xD;
        s.append(&quot;{&quot;);&#xD;
        for (Alternative alter : set) {&#xD;
            s.append(alter.getId() + &quot;,&quot;);&#xD;
        }&#xD;
        s.delete(s.length() - 1, s.length()).append(&quot;},&quot;);&#xD;
    }&#xD;
    s.delete(s.length() - 1, s.length());&#xD;
    return s.toString();&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PGSPUGbSEeqrtc6dy-mPpg" name="size" specification="_PGMvwGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;size :&quot;);&#xD;
    return size(preference);&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PGr38GbSEeqrtc6dy-mPpg" name="equals" specification="_PGkjMGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    if (this == o)&#xD;
        return true;&#xD;
    if (o == null)&#xD;
        return false;&#xD;
    if (this.getClass() != o.getClass())&#xD;
        return false;&#xD;
    OldCompletePreferenceImpl pref = (OldCompletePreferenceImpl) o;&#xD;
    return this.preference.equals(pref.preference);&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PGzMsGbSEeqrtc6dy-mPpg" name="hashCode" specification="_PGu7QGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    return Objects.hash(preference);&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PG9kwGbSEeqrtc6dy-mPpg" name="contains" specification="_PG1o8GbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;contains:&quot;);&#xD;
    Preconditions.checkNotNull(alter);&#xD;
    LOGGER.debug(&quot;parameter alternative : {}&quot;, alter);&#xD;
    return (toAlternativeSet(preference).contains(alter));&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PHKZEGbSEeqrtc6dy-mPpg" name="hasSameAlternatives" specification="_PHEScGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;hasSameAlternatives:&quot;);&#xD;
    Preconditions.checkNotNull(p);&#xD;
    LOGGER.debug(&quot;parameter preference : {}&quot;, p);&#xD;
    return (this.isIncludedIn(p) &amp;&amp; p.isIncludedIn(this));&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PHUxIGbSEeqrtc6dy-mPpg" name="isIncludedIn" specification="_PHPRkGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;isIncludedIn:&quot;);&#xD;
    Preconditions.checkNotNull(p);&#xD;
    LOGGER.debug(&quot;parameter preference : {}&quot;, p);&#xD;
    for (Alternative alter : toAlternativeSet(preference)) {&#xD;
        if (!p.contains(alter)) {&#xD;
            LOGGER.debug(&quot;return false&quot;);&#xD;
            return false;&#xD;
        }&#xD;
    }&#xD;
    LOGGER.debug(&quot;return true&quot;);&#xD;
    return true;&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PHgXUGbSEeqrtc6dy-mPpg" name="getAlternativeRank" specification="_PHZCkGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;getAlternativeRank:&quot;);&#xD;
    Preconditions.checkNotNull(alter);&#xD;
    if (!this.contains(alter)) {&#xD;
        throw new IllegalArgumentException(&quot;Alternative not in the set&quot;);&#xD;
    }&#xD;
    int rank = 1;&#xD;
    for (Set&lt;Alternative> set : preference) {&#xD;
        if (set.contains(alter)) {&#xD;
            LOGGER.debug(&quot;alternative rank : {}&quot;, rank);&#xD;
            break;&#xD;
        }&#xD;
        rank++;&#xD;
    }&#xD;
    return rank;&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PHtLoGbSEeqrtc6dy-mPpg" name="toAlternativeSet" specification="_PHkowGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;toAlternativeSet:&quot;);&#xD;
    Preconditions.checkNotNull(preference);&#xD;
    Set&lt;Alternative> set = new LinkedHashSet&lt;>();&#xD;
    for (Set&lt;Alternative> sets : preference) {&#xD;
        for (Alternative alter : sets) {&#xD;
            if (!set.contains(alter)) {&#xD;
                set.add(alter);&#xD;
            }&#xD;
        }&#xD;
    }&#xD;
    LOGGER.debug(&quot;set : {}&quot;, set);&#xD;
    return set;&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PH5_8GbSEeqrtc6dy-mPpg" name="size" specification="_PHwO8GbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;list set alternative size:&quot;);&#xD;
    Preconditions.checkNotNull(list);&#xD;
    int size = 0;&#xD;
    for (Set&lt;Alternative> set : list) {&#xD;
        size += set.size();&#xD;
    }&#xD;
    LOGGER.debug(&quot;size = {}&quot;, size);&#xD;
    return size;&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PIJQgGbSEeqrtc6dy-mPpg" name="createCompletePreferenceImpl" specification="_PH-4cGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;Preference Factory&quot;);&#xD;
    Preconditions.checkNotNull(preference);&#xD;
    LOGGER.debug(&quot;parameter : {}&quot;, preference);&#xD;
    if (toAlternativeSet(preference).size() != size(preference)) {&#xD;
        LOGGER.debug(&quot;alternative several times in the preference&quot;);&#xD;
        throw new IllegalArgumentException(&quot;A preference cannot contain several times the same alternative.&quot;);&#xD;
    }&#xD;
    return new OldCompletePreferenceImpl(preference);&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PIP-MGbSEeqrtc6dy-mPpg" name="isStrict" specification="_PIMT0GbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;isStrict:&quot;);&#xD;
    return (preference.size() == size(preference));&#xD;
</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PIZvMGbSEeqrtc6dy-mPpg" name="toStrictPreference" specification="_PITBgGbSEeqrtc6dy-mPpg">
              <language>JAVA</language>
              <body>&#xD;
    LOGGER.debug(&quot;toStrictPreference&quot;);&#xD;
    if (!isStrict()) {&#xD;
        throw new IllegalArgumentException(&quot;the preference is not strict.&quot;);&#xD;
    }&#xD;
    List&lt;Alternative> list = new ArrayList&lt;>();&#xD;
    for (Set&lt;Alternative> set : preference) {&#xD;
        for (Alternative a : set) {&#xD;
            list.add(a);&#xD;
        }&#xD;
    }&#xD;
    LOGGER.debug(&quot;list : {}&quot;, list);&#xD;
    return OldLinearPreferenceImpl.createStrictCompletePreferenceImpl(list);&#xD;
</body>
            </ownedBehavior>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PEmNQGbSEeqrtc6dy-mPpg" name="OldCompletePreferenceImpl" visibility="protected" method="_PE5IMGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PEzooGbSEeqrtc6dy-mPpg" name="preference" type="_PERdIGbSEeqrtc6dy-mPpg">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PE1d0GbSEeqrtc6dy-mPpg"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PE2r8GbSEeqrtc6dy-mPpg" value="*"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PFPtgGbSEeqrtc6dy-mPpg" name="getAlternative" visibility="public" method="_PFlrwGbSEeqrtc6dy-mPpg" raisedException="_PFaFkGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PFUmAGbSEeqrtc6dy-mPpg" type="_PFRisGbSEeqrtc6dy-mPpg" direction="return"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PFXCQGbSEeqrtc6dy-mPpg" name="position">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_ILxaUPaLEeW5KOK8aDMdgA"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PFrLUGbSEeqrtc6dy-mPpg" name="getPreferencesNonStrict" visibility="public" method="_PFygEGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PFuOoGbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PFwD0GbSEeqrtc6dy-mPpg"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PFxR8GbSEeqrtc6dy-mPpg" value="*"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PF2KcGbSEeqrtc6dy-mPpg" name="toString" visibility="public" method="_PGIeUGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PGGCEGbSEeqrtc6dy-mPpg" type="_PF7qAGbSEeqrtc6dy-mPpg" direction="return"/>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PGMvwGbSEeqrtc6dy-mPpg" name="size" visibility="public" method="_PGSPUGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PGPMAGbSEeqrtc6dy-mPpg" direction="return">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PGkjMGbSEeqrtc6dy-mPpg" name="equals" visibility="public" method="_PGr38GbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PGnmgGbSEeqrtc6dy-mPpg" direction="return">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PGqCwGbSEeqrtc6dy-mPpg" name="o" type="_PGXH0GbSEeqrtc6dy-mPpg"/>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PGu7QGbSEeqrtc6dy-mPpg" name="hashCode" visibility="public" method="_PGzMsGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PGwwcGbSEeqrtc6dy-mPpg" direction="return">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PG1o8GbSEeqrtc6dy-mPpg" name="contains" visibility="public" method="_PG9kwGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PG3eIGbSEeqrtc6dy-mPpg" direction="return">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PG7IgGbSEeqrtc6dy-mPpg" name="alter" type="_PFRisGbSEeqrtc6dy-mPpg"/>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PHEScGbSEeqrtc6dy-mPpg" name="hasSameAlternatives" visibility="public" method="_PHKZEGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PHGHoGbSEeqrtc6dy-mPpg" direction="return">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PHIj4GbSEeqrtc6dy-mPpg" name="p" type="_O-JnAGbSEeqrtc6dy-mPpg"/>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PHPRkGbSEeqrtc6dy-mPpg" name="isIncludedIn" visibility="public" method="_PHUxIGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PHRGwGbSEeqrtc6dy-mPpg" direction="return">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PHS78GbSEeqrtc6dy-mPpg" name="p" type="_O-JnAGbSEeqrtc6dy-mPpg"/>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PHZCkGbSEeqrtc6dy-mPpg" name="getAlternativeRank" visibility="public" method="_PHgXUGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PHcF4GbSEeqrtc6dy-mPpg" direction="return">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PHeiIGbSEeqrtc6dy-mPpg" name="alter" type="_PFRisGbSEeqrtc6dy-mPpg"/>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PHkowGbSEeqrtc6dy-mPpg" name="toAlternativeSet" visibility="public" isStatic="true" method="_PHtLoGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PHnFAGbSEeqrtc6dy-mPpg" type="_PERdIGbSEeqrtc6dy-mPpg" direction="return"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PHphQGbSEeqrtc6dy-mPpg" name="preference" type="_PERdIGbSEeqrtc6dy-mPpg">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PHqvYGbSEeqrtc6dy-mPpg"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PHr9gGbSEeqrtc6dy-mPpg" value="*"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PHwO8GbSEeqrtc6dy-mPpg" name="size" visibility="public" isStatic="true" method="_PH5_8GbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PHyrMGbSEeqrtc6dy-mPpg" direction="return">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PH1HcGbSEeqrtc6dy-mPpg" name="list" type="_PERdIGbSEeqrtc6dy-mPpg">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PH28oGbSEeqrtc6dy-mPpg"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PH4x0GbSEeqrtc6dy-mPpg" value="*"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PH-4cGbSEeqrtc6dy-mPpg" name="createCompletePreferenceImpl" visibility="public" isStatic="true" method="_PIJQgGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PICi0GbSEeqrtc6dy-mPpg" type="_O-JnAGbSEeqrtc6dy-mPpg" direction="return"/>
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PIFmIGbSEeqrtc6dy-mPpg" name="preference" type="_PERdIGbSEeqrtc6dy-mPpg">
                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PIHbUGbSEeqrtc6dy-mPpg"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PIICYGbSEeqrtc6dy-mPpg" value="*"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PIMT0GbSEeqrtc6dy-mPpg" name="isStrict" visibility="public" method="_PIP-MGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PIOwEGbSEeqrtc6dy-mPpg" direction="return">
                <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusJava_LIBRARIES/JavaLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:type="uml:Operation" xmi:id="_PITBgGbSEeqrtc6dy-mPpg" name="toStrictPreference" visibility="public" method="_PIZvMGbSEeqrtc6dy-mPpg">
              <ownedParameter xmi:type="uml:Parameter" xmi:id="_PIX6AGbSEeqrtc6dy-mPpg" type="_PIU2sGbSEeqrtc6dy-mPpg" direction="return"/>
            </ownedOperation>
          </packagedElement>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_oMADEIYtEeq0ksZO2OwcmQ" name="OldToNewCompletePreferenceImpl"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_cIIGcHqFEeqm79lOJbMtXA" name="UseCaseDiagram" visibility="public">
      <packagedElement xmi:type="uml:Package" xmi:id="_iZgzEIcJEeqsBPuVq_CinQ" name="Objects">
        <packagedElement xmi:type="uml:Actor" xmi:id="_jftYAHqFEeqm79lOJbMtXA" name="User"/>
        <packagedElement xmi:type="uml:Package" xmi:id="_wnPZgHqGEeqm79lOJbMtXA" name="GUI usage system">
          <packagedElement xmi:type="uml:UseCase" xmi:id="_2DMr4HqGEeqm79lOJbMtXA" name="View a profile">
            <extensionPoint xmi:type="uml:ExtensionPoint" xmi:id="_1i_a0IcIEeqsBPuVq_CinQ" name="ExtensionPoint2"/>
            <include xmi:type="uml:Include" xmi:id="_Nnif8HqHEeqm79lOJbMtXA" addition="_KTkNwHqHEeqm79lOJbMtXA"/>
          </packagedElement>
          <packagedElement xmi:type="uml:UseCase" xmi:id="_ExXwgHqHEeqm79lOJbMtXA" name="Create a profile">
            <include xmi:type="uml:Include" xmi:id="_n_N-UHqHEeqm79lOJbMtXA" addition="_WP4OwHqHEeqm79lOJbMtXA"/>
            <include xmi:type="uml:Include" xmi:id="_oZ5IIHqHEeqm79lOJbMtXA" addition="_Y9uVEHqHEeqm79lOJbMtXA"/>
            <include xmi:type="uml:Include" xmi:id="_4VGcEHqREeqm79lOJbMtXA" addition="_0ykJcHqREeqm79lOJbMtXA"/>
          </packagedElement>
          <packagedElement xmi:type="uml:UseCase" xmi:id="_KTkNwHqHEeqm79lOJbMtXA" name="Select a file"/>
          <packagedElement xmi:type="uml:UseCase" xmi:id="_WP4OwHqHEeqm79lOJbMtXA" name="Create alternatives"/>
          <packagedElement xmi:type="uml:UseCase" xmi:id="_Y9uVEHqHEeqm79lOJbMtXA" name="Create preferences"/>
          <packagedElement xmi:type="uml:UseCase" xmi:id="_FQ-oMHqIEeqm79lOJbMtXA" name="Rows visualization">
            <generalization xmi:type="uml:Generalization" xmi:id="_Uy6FAHqIEeqm79lOJbMtXA" general="_2DMr4HqGEeqm79lOJbMtXA"/>
          </packagedElement>
          <packagedElement xmi:type="uml:UseCase" xmi:id="_OnbaMHqIEeqm79lOJbMtXA" name="Columns visualization">
            <generalization xmi:type="uml:Generalization" xmi:id="_VTr20HqIEeqm79lOJbMtXA" general="_2DMr4HqGEeqm79lOJbMtXA"/>
          </packagedElement>
          <packagedElement xmi:type="uml:UseCase" xmi:id="_RZkKoHqIEeqm79lOJbMtXA" name="Wrapped visualization">
            <generalization xmi:type="uml:Generalization" xmi:id="_V-8aUHqIEeqm79lOJbMtXA" general="_2DMr4HqGEeqm79lOJbMtXA"/>
          </packagedElement>
          <packagedElement xmi:type="uml:UseCase" xmi:id="_0ykJcHqREeqm79lOJbMtXA" name="Create voters"/>
          <packagedElement xmi:type="uml:UseCase" xmi:id="_iKEPwH_gEeq2CdYuuttmvQ" name="Update a profile">
            <extend xmi:type="uml:Extend" xmi:id="_1i-MsIcIEeqsBPuVq_CinQ" extendedCase="_2DMr4HqGEeqm79lOJbMtXA" extensionLocation="_1i_a0IcIEeqsBPuVq_CinQ"/>
            <extensionPoint xmi:type="uml:ExtensionPoint" xmi:id="_RNH1AIcIEeqsBPuVq_CinQ" name="ExtensionPoint1"/>
            <extensionPoint xmi:type="uml:ExtensionPoint" xmi:id="_RugDwIcIEeqsBPuVq_CinQ" name="ExtensionPoint2"/>
            <extensionPoint xmi:type="uml:ExtensionPoint" xmi:id="_TvqqQIcIEeqsBPuVq_CinQ" name="ExtensionPoint3"/>
            <extensionPoint xmi:type="uml:ExtensionPoint" xmi:id="_XklGUIcIEeqsBPuVq_CinQ" name="ExtensionPoint4"/>
          </packagedElement>
          <packagedElement xmi:type="uml:UseCase" xmi:id="_-EeJIIcHEeqsBPuVq_CinQ" name="Modify the voters">
            <extend xmi:type="uml:Extend" xmi:id="_XkkfQIcIEeqsBPuVq_CinQ" extendedCase="_iKEPwH_gEeq2CdYuuttmvQ" extensionLocation="_XklGUIcIEeqsBPuVq_CinQ"/>
          </packagedElement>
          <packagedElement xmi:type="uml:UseCase" xmi:id="_-YRO4IcHEeqsBPuVq_CinQ" name="Modify the alternatives">
            <extend xmi:type="uml:Extend" xmi:id="_Rue1oIcIEeqsBPuVq_CinQ" extendedCase="_iKEPwH_gEeq2CdYuuttmvQ" extensionLocation="_RugDwIcIEeqsBPuVq_CinQ"/>
          </packagedElement>
          <packagedElement xmi:type="uml:UseCase" xmi:id="_--dsMIcHEeqsBPuVq_CinQ" name="Modify preferences">
            <extend xmi:type="uml:Extend" xmi:id="_RNHN8IcIEeqsBPuVq_CinQ" extendedCase="_iKEPwH_gEeq2CdYuuttmvQ" extensionLocation="_RNH1AIcIEeqsBPuVq_CinQ"/>
          </packagedElement>
          <packagedElement xmi:type="uml:UseCase" xmi:id="_cGJ0EIcIEeqsBPuVq_CinQ" name="Remove an alternative">
            <generalization xmi:type="uml:Generalization" xmi:id="_CsckYIcJEeqsBPuVq_CinQ" general="_-YRO4IcHEeqsBPuVq_CinQ"/>
          </packagedElement>
          <packagedElement xmi:type="uml:UseCase" xmi:id="_e_5oYIcIEeqsBPuVq_CinQ" name="Add an alternative ">
            <generalization xmi:type="uml:Generalization" xmi:id="_CT-aAIcJEeqsBPuVq_CinQ" general="_-YRO4IcHEeqsBPuVq_CinQ"/>
          </packagedElement>
          <packagedElement xmi:type="uml:UseCase" xmi:id="_8Th6gIcIEeqsBPuVq_CinQ" name="Remove a voter">
            <generalization xmi:type="uml:Generalization" xmi:id="_Bz6Z4IcJEeqsBPuVq_CinQ" general="_-EeJIIcHEeqsBPuVq_CinQ"/>
          </packagedElement>
          <packagedElement xmi:type="uml:UseCase" xmi:id="_8iVykIcIEeqsBPuVq_CinQ" name="Add a voter">
            <generalization xmi:type="uml:Generalization" xmi:id="_BVyTcIcJEeqsBPuVq_CinQ" general="_-EeJIIcHEeqsBPuVq_CinQ"/>
          </packagedElement>
          <packagedElement xmi:type="uml:UseCase" xmi:id="_ta3gUIcMEeqsBPuVq_CinQ" name="Rename a voter">
            <generalization xmi:type="uml:Generalization" xmi:id="_E6M4kIcNEeqsBPuVq_CinQ" general="_-EeJIIcHEeqsBPuVq_CinQ"/>
          </packagedElement>
          <packagedElement xmi:type="uml:UseCase" xmi:id="_t-kqUIcMEeqsBPuVq_CinQ" name="Rename an alternative">
            <generalization xmi:type="uml:Generalization" xmi:id="_EPMzwIcNEeqsBPuVq_CinQ" general="_-YRO4IcHEeqsBPuVq_CinQ"/>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_8_SUQHqGEeqm79lOJbMtXA" memberEnd="_8_Ya4nqGEeqm79lOJbMtXA _8_Ya43qGEeqm79lOJbMtXA">
          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8_Ya4HqGEeqm79lOJbMtXA" source="org.eclipse.papyrus">
            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8_Ya4XqGEeqm79lOJbMtXA" key="nature" value="UML_Nature"/>
          </eAnnotations>
          <ownedEnd xmi:type="uml:Property" xmi:id="_8_Ya4nqGEeqm79lOJbMtXA" name="view a soc profile" type="_2DMr4HqGEeqm79lOJbMtXA" association="_8_SUQHqGEeqm79lOJbMtXA"/>
          <ownedEnd xmi:type="uml:Property" xmi:id="_8_Ya43qGEeqm79lOJbMtXA" name="user" type="_jftYAHqFEeqm79lOJbMtXA" association="_8_SUQHqGEeqm79lOJbMtXA"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_HsWT4HqHEeqm79lOJbMtXA" memberEnd="_HsWT43qHEeqm79lOJbMtXA _HsWT5HqHEeqm79lOJbMtXA">
          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HsWT4XqHEeqm79lOJbMtXA" source="org.eclipse.papyrus">
            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HsWT4nqHEeqm79lOJbMtXA" key="nature" value="UML_Nature"/>
          </eAnnotations>
          <ownedEnd xmi:type="uml:Property" xmi:id="_HsWT43qHEeqm79lOJbMtXA" name="create a soc profile" type="_ExXwgHqHEeqm79lOJbMtXA" association="_HsWT4HqHEeqm79lOJbMtXA"/>
          <ownedEnd xmi:type="uml:Property" xmi:id="_HsWT5HqHEeqm79lOJbMtXA" name="user" type="_jftYAHqFEeqm79lOJbMtXA" association="_HsWT4HqHEeqm79lOJbMtXA"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_5Jq_EH_gEeq2CdYuuttmvQ" memberEnd="_5JupcH_gEeq2CdYuuttmvQ _5JvQgH_gEeq2CdYuuttmvQ">
          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5JtbUH_gEeq2CdYuuttmvQ" source="org.eclipse.papyrus">
            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5JuCYH_gEeq2CdYuuttmvQ" key="nature" value="UML_Nature"/>
          </eAnnotations>
          <ownedEnd xmi:type="uml:Property" xmi:id="_5JupcH_gEeq2CdYuuttmvQ" name="user" type="_jftYAHqFEeqm79lOJbMtXA" association="_5Jq_EH_gEeq2CdYuuttmvQ"/>
          <ownedEnd xmi:type="uml:Property" xmi:id="_5JvQgH_gEeq2CdYuuttmvQ" name="update a profile" type="_iKEPwH_gEeq2CdYuuttmvQ" association="_5Jq_EH_gEeq2CdYuuttmvQ"/>
        </packagedElement>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_ZgP3YHwIEeqAHPJ5yK7igg" name="SequenceDiagram">
      <packagedElement xmi:type="uml:Package" xmi:id="_6ymRsHzgEeq0BdJaLpBd6w" name="ViewProfilSequenceDiagram">
        <packagedElement xmi:type="uml:Package" xmi:id="_-9tKEIe-EeqVlJVZltjQtA" name="Objects">
          <packagedElement xmi:type="uml:Interaction" xmi:id="_7xrJEXzgEeq0BdJaLpBd6w" name="View a SOC profile">
            <ownedAttribute xmi:type="uml:Property" xmi:id="_7xrJEnzgEeq0BdJaLpBd6w" name="" type="_7xrJRXzgEeq0BdJaLpBd6w"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_7xrJE3zgEeq0BdJaLpBd6w" name="" type="_7xrJRnzgEeq0BdJaLpBd6w"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_7xrJFHzgEeq0BdJaLpBd6w" name=""/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_7xrJFXzgEeq0BdJaLpBd6w" name="" type="_7xrJEXzgEeq0BdJaLpBd6w"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_7xrJFnzgEeq0BdJaLpBd6w" name="" type="_7xrJEXzgEeq0BdJaLpBd6w"/>
            <lifeline xmi:type="uml:Lifeline" xmi:id="_7xrJF3zgEeq0BdJaLpBd6w" name="User" coveredBy="_7xrJG3zgEeq0BdJaLpBd6w _7xrJH3zgEeq0BdJaLpBd6w _7xrJIHzgEeq0BdJaLpBd6w _7xrJJnzgEeq0BdJaLpBd6w _7xrJJ3zgEeq0BdJaLpBd6w _7xrJKHzgEeq0BdJaLpBd6w _7xrJKXzgEeq0BdJaLpBd6w _7xrJKnzgEeq0BdJaLpBd6w _7xrJK3zgEeq0BdJaLpBd6w _7xrJLHzgEeq0BdJaLpBd6w _7xrJLnzgEeq0BdJaLpBd6w _7xrJL3zgEeq0BdJaLpBd6w _7xrJMHzgEeq0BdJaLpBd6w"/>
            <lifeline xmi:type="uml:Lifeline" xmi:id="_7xrJGHzgEeq0BdJaLpBd6w" name="" represents="_7xrJE3zgEeq0BdJaLpBd6w" coveredBy="_7xrJHHzgEeq0BdJaLpBd6w _7xrJHnzgEeq0BdJaLpBd6w _7xrJIXzgEeq0BdJaLpBd6w _7xrJI3zgEeq0BdJaLpBd6w _7xrJJHzgEeq0BdJaLpBd6w _7xrJJXzgEeq0BdJaLpBd6w _7xrJInzgEeq0BdJaLpBd6w _7xrJMnzgEeq0BdJaLpBd6w _7xrJNHzgEeq0BdJaLpBd6w _7xrJNXzgEeq0BdJaLpBd6w _7xrJN3zgEeq0BdJaLpBd6w _7xrJOHzgEeq0BdJaLpBd6w _7xrJOnzgEeq0BdJaLpBd6w _7xrJHXzgEeq0BdJaLpBd6w _7xrJM3zgEeq0BdJaLpBd6w _7xrJNnzgEeq0BdJaLpBd6w _7xrJOXzgEeq0BdJaLpBd6w"/>
            <lifeline xmi:type="uml:Lifeline" xmi:id="_7xrJGXzgEeq0BdJaLpBd6w" name="" represents="_7xrJFXzgEeq0BdJaLpBd6w"/>
            <lifeline xmi:type="uml:Lifeline" xmi:id="_7xrJGnzgEeq0BdJaLpBd6w" name="" represents="_7xrJFnzgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJG3zgEeq0BdJaLpBd6w" name="Message5SendEvent" covered="_7xrJF3zgEeq0BdJaLpBd6w" message="_7xrJO3zgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJHHzgEeq0BdJaLpBd6w" name="Message5ReceiveEvent" covered="_7xrJGHzgEeq0BdJaLpBd6w" message="_7xrJO3zgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:BehaviorExecutionSpecification" xmi:id="_7xrJHXzgEeq0BdJaLpBd6w" name="BehaviorExecutionSpecification8" covered="_7xrJGHzgEeq0BdJaLpBd6w" finish="_7xrJHnzgEeq0BdJaLpBd6w" start="_7xrJHHzgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJHnzgEeq0BdJaLpBd6w" name="Message10SendEvent" covered="_7xrJGHzgEeq0BdJaLpBd6w" message="_7xrJPHzgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJH3zgEeq0BdJaLpBd6w" name="Message10ReceiveEvent" covered="_7xrJF3zgEeq0BdJaLpBd6w" message="_7xrJPHzgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJIHzgEeq0BdJaLpBd6w" name="Message12SendEvent" covered="_7xrJF3zgEeq0BdJaLpBd6w" message="_7xrJPXzgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJIXzgEeq0BdJaLpBd6w" name="Message12ReceiveEvent" covered="_7xrJGHzgEeq0BdJaLpBd6w" message="_7xrJPXzgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:ActionExecutionSpecification" xmi:id="_7xrJInzgEeq0BdJaLpBd6w" name="ActionExecutionSpecification15" covered="_7xrJGHzgEeq0BdJaLpBd6w" finish="_7xrJJXzgEeq0BdJaLpBd6w" start="_7xrJIXzgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJI3zgEeq0BdJaLpBd6w" name="Message17SendEvent" covered="_7xrJGHzgEeq0BdJaLpBd6w" message="_7xrJPnzgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJJHzgEeq0BdJaLpBd6w" name="Message17ReceiveEvent" covered="_7xrJGHzgEeq0BdJaLpBd6w" message="_7xrJPnzgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:ExecutionOccurrenceSpecification" xmi:id="_7xrJJXzgEeq0BdJaLpBd6w" name="ActionExecutionSpecification15Finish" covered="_7xrJGHzgEeq0BdJaLpBd6w" execution="_7xrJInzgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:CombinedFragment" xmi:id="_7xrJJnzgEeq0BdJaLpBd6w" name="CombinedFragment32" covered="_7xrJF3zgEeq0BdJaLpBd6w" interactionOperator="alt">
              <operand xmi:type="uml:InteractionOperand" xmi:id="_7xrJJ3zgEeq0BdJaLpBd6w" visibility="public" covered="_7xrJF3zgEeq0BdJaLpBd6w">
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJKHzgEeq0BdJaLpBd6w" name="Message21SendEvent" covered="_7xrJF3zgEeq0BdJaLpBd6w" message="_7xrJP3zgEeq0BdJaLpBd6w"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJKXzgEeq0BdJaLpBd6w" name="Message26ReceiveEvent" covered="_7xrJF3zgEeq0BdJaLpBd6w" message="_7xrJQHzgEeq0BdJaLpBd6w"/>
              </operand>
              <operand xmi:type="uml:InteractionOperand" xmi:id="_7xrJKnzgEeq0BdJaLpBd6w" name="InteractionOperand2" covered="_7xrJF3zgEeq0BdJaLpBd6w">
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJK3zgEeq0BdJaLpBd6w" name="Message31SendEvent" covered="_7xrJF3zgEeq0BdJaLpBd6w" message="_7xrJQXzgEeq0BdJaLpBd6w"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJLHzgEeq0BdJaLpBd6w" name="Message36ReceiveEvent" covered="_7xrJF3zgEeq0BdJaLpBd6w" message="_7xrJQnzgEeq0BdJaLpBd6w"/>
                <guard xmi:type="uml:InteractionConstraint" xmi:id="_7xrJLXzgEeq0BdJaLpBd6w" name="guard"/>
              </operand>
              <operand xmi:type="uml:InteractionOperand" xmi:id="_7xrJLnzgEeq0BdJaLpBd6w" name="InteractionOperand3" covered="_7xrJF3zgEeq0BdJaLpBd6w">
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJL3zgEeq0BdJaLpBd6w" name="Message36SendEvent" covered="_7xrJF3zgEeq0BdJaLpBd6w" message="_7xrJQ3zgEeq0BdJaLpBd6w"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJMHzgEeq0BdJaLpBd6w" name="Message41ReceiveEvent" covered="_7xrJF3zgEeq0BdJaLpBd6w" message="_7xrJRHzgEeq0BdJaLpBd6w"/>
                <guard xmi:type="uml:InteractionConstraint" xmi:id="_7xrJMXzgEeq0BdJaLpBd6w" name="guard"/>
              </operand>
            </fragment>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJMnzgEeq0BdJaLpBd6w" name="Message21ReceiveEvent" covered="_7xrJGHzgEeq0BdJaLpBd6w" message="_7xrJP3zgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:BehaviorExecutionSpecification" xmi:id="_7xrJM3zgEeq0BdJaLpBd6w" name="BehaviorExecutionSpecification24" covered="_7xrJGHzgEeq0BdJaLpBd6w" finish="_7xrJNHzgEeq0BdJaLpBd6w" start="_7xrJMnzgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJNHzgEeq0BdJaLpBd6w" name="Message26SendEvent" covered="_7xrJGHzgEeq0BdJaLpBd6w" message="_7xrJQHzgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJNXzgEeq0BdJaLpBd6w" name="Message31ReceiveEvent" covered="_7xrJGHzgEeq0BdJaLpBd6w" message="_7xrJQXzgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:BehaviorExecutionSpecification" xmi:id="_7xrJNnzgEeq0BdJaLpBd6w" name="BehaviorExecutionSpecification34" covered="_7xrJGHzgEeq0BdJaLpBd6w" finish="_7xrJN3zgEeq0BdJaLpBd6w" start="_7xrJNXzgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJN3zgEeq0BdJaLpBd6w" name="Message36SendEvent" covered="_7xrJGHzgEeq0BdJaLpBd6w" message="_7xrJQnzgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJOHzgEeq0BdJaLpBd6w" name="Message36ReceiveEvent" covered="_7xrJGHzgEeq0BdJaLpBd6w" message="_7xrJQ3zgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:BehaviorExecutionSpecification" xmi:id="_7xrJOXzgEeq0BdJaLpBd6w" name="BehaviorExecutionSpecification39" covered="_7xrJGHzgEeq0BdJaLpBd6w" finish="_7xrJOnzgEeq0BdJaLpBd6w" start="_7xrJOHzgEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_7xrJOnzgEeq0BdJaLpBd6w" name="Message41SendEvent" covered="_7xrJGHzgEeq0BdJaLpBd6w" message="_7xrJRHzgEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_7xrJO3zgEeq0BdJaLpBd6w" name="Launch SOC profile viewer" receiveEvent="_7xrJHHzgEeq0BdJaLpBd6w" sendEvent="_7xrJG3zgEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_7xrJPHzgEeq0BdJaLpBd6w" name="Requests a SOC file" messageSort="reply" receiveEvent="_7xrJH3zgEeq0BdJaLpBd6w" sendEvent="_7xrJHnzgEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_7xrJPXzgEeq0BdJaLpBd6w" name="Give a SOC File (Profil)" messageSort="asynchCall" receiveEvent="_7xrJIXzgEeq0BdJaLpBd6w" sendEvent="_7xrJIHzgEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_7xrJPnzgEeq0BdJaLpBd6w" name="Checks the profile data" messageSort="asynchCall" receiveEvent="_7xrJJHzgEeq0BdJaLpBd6w" sendEvent="_7xrJI3zgEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_7xrJP3zgEeq0BdJaLpBd6w" name="Ask column visualization " receiveEvent="_7xrJMnzgEeq0BdJaLpBd6w" sendEvent="_7xrJKHzgEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_7xrJQHzgEeq0BdJaLpBd6w" name="Give column visualization (data) " messageSort="reply" receiveEvent="_7xrJKXzgEeq0BdJaLpBd6w" sendEvent="_7xrJNHzgEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_7xrJQXzgEeq0BdJaLpBd6w" name="Ask rows visualization (data) " receiveEvent="_7xrJNXzgEeq0BdJaLpBd6w" sendEvent="_7xrJK3zgEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_7xrJQnzgEeq0BdJaLpBd6w" name="Give rows visualization " messageSort="reply" receiveEvent="_7xrJLHzgEeq0BdJaLpBd6w" sendEvent="_7xrJN3zgEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_7xrJQ3zgEeq0BdJaLpBd6w" name="Ask wrapped visualization (data) " receiveEvent="_7xrJOHzgEeq0BdJaLpBd6w" sendEvent="_7xrJL3zgEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_7xrJRHzgEeq0BdJaLpBd6w" name="Give wrapped visualization " messageSort="reply" receiveEvent="_7xrJMHzgEeq0BdJaLpBd6w" sendEvent="_7xrJOnzgEeq0BdJaLpBd6w"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Actor" xmi:id="_7xrJRXzgEeq0BdJaLpBd6w" name="User"/>
          <packagedElement xmi:type="uml:Actor" xmi:id="_7xrJRnzgEeq0BdJaLpBd6w" name="System"/>
          <packagedElement xmi:type="uml:Actor" xmi:id="_7xrJR3zgEeq0BdJaLpBd6w" name="Interface : Main GUI"/>
          <packagedElement xmi:type="uml:Interaction" xmi:id="_MXXI8HzhEeq0BdJaLpBd6w" name="Current profile visualisation (the user provides a valid soc file)">
            <ownedAttribute xmi:type="uml:Property" xmi:id="_uQtpAHzhEeq0BdJaLpBd6w" name="" type="_7xrJRXzgEeq0BdJaLpBd6w"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_uyWWcHzhEeq0BdJaLpBd6w" name="" type="_7xrJR3zgEeq0BdJaLpBd6w"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_vXBJwHzhEeq0BdJaLpBd6w" name="" type="_7xrJRnzgEeq0BdJaLpBd6w"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_4AaogHzhEeq0BdJaLpBd6w" name="" type="_7xrJR3zgEeq0BdJaLpBd6w"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_HdO-AHzxEeq0BdJaLpBd6w" name="" type="_F6q84HziEeq0BdJaLpBd6w"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_opB2IIZVEeq-c_dq4O5YkQ" name="" type="_I_TykHziEeq0BdJaLpBd6w"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_4T2wQIZVEeq-c_dq4O5YkQ" name="" type="_MXXI8HzhEeq0BdJaLpBd6w"/>
            <ownedAttribute xmi:type="uml:Property" xmi:id="_6KXl8IZVEeq-c_dq4O5YkQ" name="" type="_HgN-YHziEeq0BdJaLpBd6w"/>
            <lifeline xmi:type="uml:Lifeline" xmi:id="_uQpXkHzhEeq0BdJaLpBd6w" name="" represents="_uQtpAHzhEeq0BdJaLpBd6w" coveredBy="__uyM8HziEeq0BdJaLpBd6w _TaBogHzjEeq0BdJaLpBd6w _Hy4-kHzpEeq0BdJaLpBd6w _ZY8LEHzwEeq0BdJaLpBd6w _2JiMIHzxEeq0BdJaLpBd6w _lRM0IIZUEeq-c_dq4O5YkQ _bBt2cIZWEeq-c_dq4O5YkQ _JVQmUIZXEeq-c_dq4O5YkQ _VJC9cIZXEeq-c_dq4O5YkQ"/>
            <lifeline xmi:type="uml:Lifeline" xmi:id="_uyVvYHzhEeq0BdJaLpBd6w" name="" represents="_uyWWcHzhEeq0BdJaLpBd6w" coveredBy="__vYp4XziEeq0BdJaLpBd6w _TaCPkHzjEeq0BdJaLpBd6w _anps0HzjEeq0BdJaLpBd6w _aoPisXzjEeq0BdJaLpBd6w _Hy5loHzpEeq0BdJaLpBd6w _jgVWAHzpEeq0BdJaLpBd6w _jhLqkHzpEeq0BdJaLpBd6w _ZY8yIHzwEeq0BdJaLpBd6w _woQKUHzwEeq0BdJaLpBd6w _lROCQIZUEeq-c_dq4O5YkQ _2d5wsIZUEeq-c_dq4O5YkQ _JVRNYIZXEeq-c_dq4O5YkQ _KCjxMIZXEeq-c_dq4O5YkQ"/>
            <lifeline xmi:type="uml:Lifeline" xmi:id="_vW_7oHzhEeq0BdJaLpBd6w" name="" represents="_vXBJwHzhEeq0BdJaLpBd6w" coveredBy="__uy0AHziEeq0BdJaLpBd6w __vYp4HziEeq0BdJaLpBd6w _anqT4HzjEeq0BdJaLpBd6w _aoPisHzjEeq0BdJaLpBd6w _jgV9EHzpEeq0BdJaLpBd6w _jhLDgHzpEeq0BdJaLpBd6w _woQxYHzwEeq0BdJaLpBd6w _2IGBsHzxEeq0BdJaLpBd6w _2d6-0IZUEeq-c_dq4O5YkQ _bAHT8IZWEeq-c_dq4O5YkQ _KCk_UIZXEeq-c_dq4O5YkQ _VHjvsIZXEeq-c_dq4O5YkQ _jhGLAHzpEeq0BdJaLpBd6w __vPf8HziEeq0BdJaLpBd6w _aoKqMHzjEeq0BdJaLpBd6w"/>
            <lifeline xmi:type="uml:Lifeline" xmi:id="_HdNv4HzxEeq0BdJaLpBd6w" name="" represents="_HdO-AHzxEeq0BdJaLpBd6w" coveredBy="_2IGowHzxEeq0BdJaLpBd6w _2Jg-AHzxEeq0BdJaLpBd6w _2Ja3YHzxEeq0BdJaLpBd6w"/>
            <lifeline xmi:type="uml:Lifeline" xmi:id="_opBPEIZVEeq-c_dq4O5YkQ" name="" represents="_opB2IIZVEeq-c_dq4O5YkQ" coveredBy="_bAH7AIZWEeq-c_dq4O5YkQ _bBtPYIZWEeq-c_dq4O5YkQ _bBfM8IZWEeq-c_dq4O5YkQ"/>
            <lifeline xmi:type="uml:Lifeline" xmi:id="_4T1iIIZVEeq-c_dq4O5YkQ" name="" represents="_4T2wQIZVEeq-c_dq4O5YkQ"/>
            <lifeline xmi:type="uml:Lifeline" xmi:id="_6KW-4IZVEeq-c_dq4O5YkQ" name="" represents="_6KXl8IZVEeq-c_dq4O5YkQ" coveredBy="_VHkWwIZXEeq-c_dq4O5YkQ _VJCWYIZXEeq-c_dq4O5YkQ _VI820IZXEeq-c_dq4O5YkQ"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="__uyM8HziEeq0BdJaLpBd6w" name="Message9SendEvent" covered="_uQpXkHzhEeq0BdJaLpBd6w" message="__ut7gHziEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="__uy0AHziEeq0BdJaLpBd6w" name="Message9ReceiveEvent" covered="_vW_7oHzhEeq0BdJaLpBd6w" message="__ut7gHziEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:BehaviorExecutionSpecification" xmi:id="__vPf8HziEeq0BdJaLpBd6w" name="BehaviorExecutionSpecification12" covered="_vW_7oHzhEeq0BdJaLpBd6w" finish="__vYp4HziEeq0BdJaLpBd6w" start="__uy0AHziEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="__vYp4HziEeq0BdJaLpBd6w" name="Message14SendEvent" covered="_vW_7oHzhEeq0BdJaLpBd6w" message="__vYC0HziEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="__vYp4XziEeq0BdJaLpBd6w" name="Message14ReceiveEvent" covered="_uyVvYHzhEeq0BdJaLpBd6w" message="__vYC0HziEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_TaBogHzjEeq0BdJaLpBd6w" name="Message16SendEvent" covered="_uQpXkHzhEeq0BdJaLpBd6w" message="_TaAaYHzjEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_TaCPkHzjEeq0BdJaLpBd6w" name="Message16ReceiveEvent" covered="_uyVvYHzhEeq0BdJaLpBd6w" message="_TaAaYHzjEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_anps0HzjEeq0BdJaLpBd6w" name="Message19SendEvent" covered="_uyVvYHzhEeq0BdJaLpBd6w" message="_anpFwHzjEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_anqT4HzjEeq0BdJaLpBd6w" name="Message19ReceiveEvent" covered="_vW_7oHzhEeq0BdJaLpBd6w" message="_anpFwHzjEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:BehaviorExecutionSpecification" xmi:id="_aoKqMHzjEeq0BdJaLpBd6w" name="BehaviorExecutionSpecification22" covered="_vW_7oHzhEeq0BdJaLpBd6w" finish="_aoPisHzjEeq0BdJaLpBd6w" start="_anqT4HzjEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_aoPisHzjEeq0BdJaLpBd6w" name="Message24SendEvent" covered="_vW_7oHzhEeq0BdJaLpBd6w" message="_aoOUkHzjEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_aoPisXzjEeq0BdJaLpBd6w" name="Message24ReceiveEvent" covered="_uyVvYHzhEeq0BdJaLpBd6w" message="_aoOUkHzjEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_Hy4-kHzpEeq0BdJaLpBd6w" name="Message26SendEvent" covered="_uQpXkHzhEeq0BdJaLpBd6w" message="_Hy2iUHzpEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_Hy5loHzpEeq0BdJaLpBd6w" name="Message26ReceiveEvent" covered="_uyVvYHzhEeq0BdJaLpBd6w" message="_Hy2iUHzpEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_jgVWAHzpEeq0BdJaLpBd6w" name="Message29SendEvent" covered="_uyVvYHzhEeq0BdJaLpBd6w" message="_jgUu8HzpEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_jgV9EHzpEeq0BdJaLpBd6w" name="Message29ReceiveEvent" covered="_vW_7oHzhEeq0BdJaLpBd6w" message="_jgUu8HzpEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:BehaviorExecutionSpecification" xmi:id="_jhGLAHzpEeq0BdJaLpBd6w" name="BehaviorExecutionSpecification32" covered="_vW_7oHzhEeq0BdJaLpBd6w" finish="_jhLDgHzpEeq0BdJaLpBd6w" start="_jgV9EHzpEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_jhLDgHzpEeq0BdJaLpBd6w" name="Message34SendEvent" covered="_vW_7oHzhEeq0BdJaLpBd6w" message="_jhKccHzpEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_jhLqkHzpEeq0BdJaLpBd6w" name="Message34ReceiveEvent" covered="_uyVvYHzhEeq0BdJaLpBd6w" message="_jhKccHzpEeq0BdJaLpBd6w"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_VHkWwIZXEeq-c_dq4O5YkQ" name="Message58ReceiveEvent" covered="_6KW-4IZVEeq-c_dq4O5YkQ" message="_VHhTcIZXEeq-c_dq4O5YkQ"/>
            <fragment xmi:type="uml:BehaviorExecutionSpecification" xmi:id="_VI820IZXEeq-c_dq4O5YkQ" name="BehaviorExecutionSpecification61" covered="_6KW-4IZVEeq-c_dq4O5YkQ" finish="_VJCWYIZXEeq-c_dq4O5YkQ" start="_VHkWwIZXEeq-c_dq4O5YkQ"/>
            <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_VJCWYIZXEeq-c_dq4O5YkQ" name="Message63SendEvent" covered="_6KW-4IZVEeq-c_dq4O5YkQ" message="_VJBIQIZXEeq-c_dq4O5YkQ"/>
            <fragment xmi:type="uml:CombinedFragment" xmi:id="_mJ4OUHztEeq0BdJaLpBd6w" name="CombinedFragment39" interactionOperator="alt">
              <operand xmi:type="uml:InteractionOperand" xmi:id="_etQ2UHzuEeq0BdJaLpBd6w" name="Column visualization">
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_ZY8LEHzwEeq0BdJaLpBd6w" name="Message40SendEvent" covered="_uQpXkHzhEeq0BdJaLpBd6w" message="_ZYvWwHzwEeq0BdJaLpBd6w"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_ZY8yIHzwEeq0BdJaLpBd6w" name="Message40ReceiveEvent" covered="_uyVvYHzhEeq0BdJaLpBd6w" message="_ZYvWwHzwEeq0BdJaLpBd6w"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_woQKUHzwEeq0BdJaLpBd6w" name="Message41SendEvent" covered="_uyVvYHzhEeq0BdJaLpBd6w" message="_woO8MHzwEeq0BdJaLpBd6w"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_woQxYHzwEeq0BdJaLpBd6w" name="Message41ReceiveEvent" covered="_vW_7oHzhEeq0BdJaLpBd6w" message="_woO8MHzwEeq0BdJaLpBd6w"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_2IGBsHzxEeq0BdJaLpBd6w" name="Message44SendEvent" covered="_vW_7oHzhEeq0BdJaLpBd6w" message="_2IFaoHzxEeq0BdJaLpBd6w"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_2IGowHzxEeq0BdJaLpBd6w" name="Message44ReceiveEvent" covered="_HdNv4HzxEeq0BdJaLpBd6w" message="_2IFaoHzxEeq0BdJaLpBd6w"/>
                <fragment xmi:type="uml:BehaviorExecutionSpecification" xmi:id="_2Ja3YHzxEeq0BdJaLpBd6w" name="BehaviorExecutionSpecification47" covered="_HdNv4HzxEeq0BdJaLpBd6w" finish="_2Jg-AHzxEeq0BdJaLpBd6w" start="_2IGowHzxEeq0BdJaLpBd6w"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_2Jg-AHzxEeq0BdJaLpBd6w" name="Message49SendEvent" covered="_HdNv4HzxEeq0BdJaLpBd6w" message="_2JgW8HzxEeq0BdJaLpBd6w"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_2JiMIHzxEeq0BdJaLpBd6w" name="Message49ReceiveEvent" covered="_uQpXkHzhEeq0BdJaLpBd6w" message="_2JgW8HzxEeq0BdJaLpBd6w"/>
                <guard xmi:type="uml:InteractionConstraint" xmi:id="_etRdYHzuEeq0BdJaLpBd6w">
                  <specification xmi:type="uml:LiteralString" xmi:id="_zB3usIZUEeq-c_dq4O5YkQ" value="Choose column visualization"/>
                </guard>
              </operand>
              <operand xmi:type="uml:InteractionOperand" xmi:id="_HixFoHzuEeq0BdJaLpBd6w" name="Wrap visualization">
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_lRM0IIZUEeq-c_dq4O5YkQ" name="Message46SendEvent" covered="_uQpXkHzhEeq0BdJaLpBd6w" message="_lRDDIIZUEeq-c_dq4O5YkQ"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_lROCQIZUEeq-c_dq4O5YkQ" name="Message46ReceiveEvent" covered="_uyVvYHzhEeq0BdJaLpBd6w" message="_lRDDIIZUEeq-c_dq4O5YkQ"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_2d5wsIZUEeq-c_dq4O5YkQ" name="Message47SendEvent" covered="_uyVvYHzhEeq0BdJaLpBd6w" message="_2d3UcIZUEeq-c_dq4O5YkQ"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_2d6-0IZUEeq-c_dq4O5YkQ" name="Message47ReceiveEvent" covered="_vW_7oHzhEeq0BdJaLpBd6w" message="_2d3UcIZUEeq-c_dq4O5YkQ"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_bAHT8IZWEeq-c_dq4O5YkQ" name="Message54SendEvent" covered="_vW_7oHzhEeq0BdJaLpBd6w" message="_bAFewIZWEeq-c_dq4O5YkQ"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_bAH7AIZWEeq-c_dq4O5YkQ" name="Message54ReceiveEvent" covered="_opBPEIZVEeq-c_dq4O5YkQ" message="_bAFewIZWEeq-c_dq4O5YkQ"/>
                <fragment xmi:type="uml:BehaviorExecutionSpecification" xmi:id="_bBfM8IZWEeq-c_dq4O5YkQ" name="BehaviorExecutionSpecification57" covered="_opBPEIZVEeq-c_dq4O5YkQ" finish="_bBtPYIZWEeq-c_dq4O5YkQ" start="_bAH7AIZWEeq-c_dq4O5YkQ"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_bBtPYIZWEeq-c_dq4O5YkQ" name="Message59SendEvent" covered="_opBPEIZVEeq-c_dq4O5YkQ" message="_bBsBQIZWEeq-c_dq4O5YkQ"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_bBt2cIZWEeq-c_dq4O5YkQ" name="Message59ReceiveEvent" covered="_uQpXkHzhEeq0BdJaLpBd6w" message="_bBsBQIZWEeq-c_dq4O5YkQ"/>
                <guard xmi:type="uml:InteractionConstraint" xmi:id="_HixssHzuEeq0BdJaLpBd6w" name="guard">
                  <specification xmi:type="uml:LiteralString" xmi:id="_0-iPsIZUEeq-c_dq4O5YkQ" value="Choose wrap visualization"/>
                </guard>
              </operand>
              <operand xmi:type="uml:InteractionOperand" xmi:id="_bkDCoHzuEeq0BdJaLpBd6w" name="Rows visualization">
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_JVQmUIZXEeq-c_dq4O5YkQ" name="Message59SendEvent" covered="_uQpXkHzhEeq0BdJaLpBd6w" message="_JVPYMIZXEeq-c_dq4O5YkQ"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_JVRNYIZXEeq-c_dq4O5YkQ" name="Message59ReceiveEvent" covered="_uyVvYHzhEeq0BdJaLpBd6w" message="_JVPYMIZXEeq-c_dq4O5YkQ"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_KCjxMIZXEeq-c_dq4O5YkQ" name="Message60SendEvent" covered="_uyVvYHzhEeq0BdJaLpBd6w" message="_KCjKIIZXEeq-c_dq4O5YkQ"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_KCk_UIZXEeq-c_dq4O5YkQ" name="Message60ReceiveEvent" covered="_vW_7oHzhEeq0BdJaLpBd6w" message="_KCjKIIZXEeq-c_dq4O5YkQ"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_VHjvsIZXEeq-c_dq4O5YkQ" name="Message58SendEvent" covered="_vW_7oHzhEeq0BdJaLpBd6w" message="_VHhTcIZXEeq-c_dq4O5YkQ"/>
                <fragment xmi:type="uml:MessageOccurrenceSpecification" xmi:id="_VJC9cIZXEeq-c_dq4O5YkQ" name="Message63ReceiveEvent" covered="_uQpXkHzhEeq0BdJaLpBd6w" message="_VJBIQIZXEeq-c_dq4O5YkQ"/>
                <guard xmi:type="uml:InteractionConstraint" xmi:id="_bkDpsHzuEeq0BdJaLpBd6w" name="guard">
                  <specification xmi:type="uml:LiteralString" xmi:id="_d3r5MHzuEeq0BdJaLpBd6w" value="Choose row visualization"/>
                </guard>
              </operand>
            </fragment>
            <message xmi:type="uml:Message" xmi:id="_nTpTwHziEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="__ut7gHziEeq0BdJaLpBd6w" name="Launch SOC Profile Viewer" receiveEvent="__uy0AHziEeq0BdJaLpBd6w" sendEvent="__uyM8HziEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="__vYC0HziEeq0BdJaLpBd6w" name="Display main GUI" messageSort="reply" receiveEvent="__vYp4XziEeq0BdJaLpBd6w" sendEvent="__vYp4HziEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_TaAaYHzjEeq0BdJaLpBd6w" name="Button select Profile Click" messageSort="asynchCall" receiveEvent="_TaCPkHzjEeq0BdJaLpBd6w" sendEvent="_TaBogHzjEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_anpFwHzjEeq0BdJaLpBd6w" name="Raise SelectFileToReadButton Event" receiveEvent="_anqT4HzjEeq0BdJaLpBd6w" sendEvent="_anps0HzjEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_aoOUkHzjEeq0BdJaLpBd6w" name="Open the FileDialog" messageSort="reply" receiveEvent="_aoPisXzjEeq0BdJaLpBd6w" sendEvent="_aoPisHzjEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_Hy2iUHzpEeq0BdJaLpBd6w" name="Choose SOC Profile File" messageSort="asynchCall" receiveEvent="_Hy5loHzpEeq0BdJaLpBd6w" sendEvent="_Hy4-kHzpEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_jgUu8HzpEeq0BdJaLpBd6w" name="Set the given profile" receiveEvent="_jgV9EHzpEeq0BdJaLpBd6w" sendEvent="_jgVWAHzpEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_jhKccHzpEeq0BdJaLpBd6w" name="Display the SOCButtons" messageSort="reply" receiveEvent="_jhLqkHzpEeq0BdJaLpBd6w" sendEvent="_jhLDgHzpEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_ZYvWwHzwEeq0BdJaLpBd6w" name="Column visualization button click" messageSort="asynchCall" receiveEvent="_ZY8yIHzwEeq0BdJaLpBd6w" sendEvent="_ZY8LEHzwEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_woO8MHzwEeq0BdJaLpBd6w" name="Raise socColumnsGUIButton Event" messageSort="asynchCall" receiveEvent="_woQxYHzwEeq0BdJaLpBd6w" sendEvent="_woQKUHzwEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_2IFaoHzxEeq0BdJaLpBd6w" name="Create SOCColumnGUI" receiveEvent="_2IGowHzxEeq0BdJaLpBd6w" sendEvent="_2IGBsHzxEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_2JgW8HzxEeq0BdJaLpBd6w" name="Display given profile (tables as columns)" messageSort="reply" receiveEvent="_2JiMIHzxEeq0BdJaLpBd6w" sendEvent="_2Jg-AHzxEeq0BdJaLpBd6w"/>
            <message xmi:type="uml:Message" xmi:id="_lRDDIIZUEeq-c_dq4O5YkQ" name="Wrapped visualization button click" messageSort="asynchCall" receiveEvent="_lROCQIZUEeq-c_dq4O5YkQ" sendEvent="_lRM0IIZUEeq-c_dq4O5YkQ"/>
            <message xmi:type="uml:Message" xmi:id="_2d3UcIZUEeq-c_dq4O5YkQ" name="Raise socWrappedColumnsGUIButton Event" messageSort="asynchCall" receiveEvent="_2d6-0IZUEeq-c_dq4O5YkQ" sendEvent="_2d5wsIZUEeq-c_dq4O5YkQ"/>
            <message xmi:type="uml:Message" xmi:id="_bAFewIZWEeq-c_dq4O5YkQ" name="Create SOCWrappedColumnsGUI" receiveEvent="_bAH7AIZWEeq-c_dq4O5YkQ" sendEvent="_bAHT8IZWEeq-c_dq4O5YkQ"/>
            <message xmi:type="uml:Message" xmi:id="_bBsBQIZWEeq-c_dq4O5YkQ" name="Display given profile (wrapped tables)" messageSort="reply" receiveEvent="_bBt2cIZWEeq-c_dq4O5YkQ" sendEvent="_bBtPYIZWEeq-c_dq4O5YkQ"/>
            <message xmi:type="uml:Message" xmi:id="_JVPYMIZXEeq-c_dq4O5YkQ" name="Row visualization button click" messageSort="asynchCall" receiveEvent="_JVRNYIZXEeq-c_dq4O5YkQ" sendEvent="_JVQmUIZXEeq-c_dq4O5YkQ"/>
            <message xmi:type="uml:Message" xmi:id="_KCjKIIZXEeq-c_dq4O5YkQ" name="Raise socRowsGUIButton Event" messageSort="asynchCall" receiveEvent="_KCk_UIZXEeq-c_dq4O5YkQ" sendEvent="_KCjxMIZXEeq-c_dq4O5YkQ"/>
            <message xmi:type="uml:Message" xmi:id="_VHhTcIZXEeq-c_dq4O5YkQ" name="Create SOCRowsGUI" receiveEvent="_VHkWwIZXEeq-c_dq4O5YkQ" sendEvent="_VHjvsIZXEeq-c_dq4O5YkQ"/>
            <message xmi:type="uml:Message" xmi:id="_VJBIQIZXEeq-c_dq4O5YkQ" name="Display given profile (tables as rows)" messageSort="reply" receiveEvent="_VJC9cIZXEeq-c_dq4O5YkQ" sendEvent="_VJCWYIZXEeq-c_dq4O5YkQ"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Actor" xmi:id="_F6q84HziEeq0BdJaLpBd6w" name="Interface : SOCColumnsGUI"/>
          <packagedElement xmi:type="uml:Actor" xmi:id="_HgN-YHziEeq0BdJaLpBd6w" name="Interface : SOCRowsGUI"/>
          <packagedElement xmi:type="uml:Actor" xmi:id="_I_TykHziEeq0BdJaLpBd6w" name="Interface : SOCWrappedColumnsGUI"/>
        </packagedElement>
      </packagedElement>
    </packagedElement>
    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_O7lbMGbSEeqrtc6dy-mPpg">
      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_O7pFkGbSEeqrtc6dy-mPpg" source="http://www.eclipse.org/uml2/2.0.0/UML">
        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/PapyrusJava/1#/"/>
      </eAnnotations>
      <appliedProfile xmi:type="uml:Profile" href="pathmap://PapyrusJava_PROFILES/PapyrusJava.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
    </profileApplication>
    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_O8c94GbSEeqrtc6dy-mPpg">
      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_O8ezEGbSEeqrtc6dy-mPpg" source="http://www.eclipse.org/uml2/2.0.0/UML">
        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/Codegen/1#/"/>
      </eAnnotations>
      <appliedProfile xmi:type="uml:Profile" href="pathmap://Codegen_PROFILES/Codegen.profile.uml#_fPDsIBa-EearhdjjJ6cVzQ"/>
    </profileApplication>
    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_O8uqsGbSEeqrtc6dy-mPpg">
      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_O8yVEGbSEeqrtc6dy-mPpg" source="http://www.eclipse.org/uml2/2.0.0/UML">
        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>
      </eAnnotations>
      <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
    </profileApplication>
  </uml:Model>
  <PapyrusJava:External xmi:id="_PD8tAGbSEeqrtc6dy-mPpg" name="org.slf4j.Logger" base_Classifier="_O-SJ4GbSEeqrtc6dy-mPpg"/>
  <PapyrusJava:External xmi:id="_PEYx4GbSEeqrtc6dy-mPpg" name="java.util.Set" base_Classifier="_PERdIGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_PErs0GbSEeqrtc6dy-mPpg" base_BehavioralFeature="_PEmNQGbSEeqrtc6dy-mPpg"/>
  <PapyrusJava:External xmi:id="_PFgMMGbSEeqrtc6dy-mPpg" name="IndexOutOfBoundsException" base_Classifier="_PFaFkGbSEeqrtc6dy-mPpg"/>
  <PapyrusJava:External xmi:id="_PGCXsGbSEeqrtc6dy-mPpg" name="java.lang.String" base_Classifier="_PF7qAGbSEeqrtc6dy-mPpg"/>
  <PapyrusJava:External xmi:id="_PGdOcGbSEeqrtc6dy-mPpg" name="java.lang.Object" base_Classifier="_PGXH0GbSEeqrtc6dy-mPpg"/>
  <PapyrusJava:External xmi:id="_PInxoGbSEeqrtc6dy-mPpg" name="Comparable" base_Classifier="_PIiSEGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_PJHg4GbSEeqrtc6dy-mPpg" base_BehavioralFeature="_PJD2gGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_PKTMoGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_PKO7MGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_PLDakGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_PK-iEGbSEeqrtc6dy-mPpg"/>
  <PapyrusJava:External xmi:id="_PMPtYGbSEeqrtc6dy-mPpg" name="com.google.common.collect.ImmutableSet" base_Classifier="_PMMDAGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_PMioUGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_PMflAGbSEeqrtc6dy-mPpg"/>
  <PapyrusJava:External xmi:id="_PMvcoGbSEeqrtc6dy-mPpg" name="java.lang.Exception" base_Classifier="_PMryQGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_PM3YcGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_PMzuEGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_PNBJcGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_PM-GIGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_PNQaAGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_PNNWsGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_PNZj8GbSEeqrtc6dy-mPpg" base_BehavioralFeature="_PNWgoGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_PNnmYGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_PNj8AGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_PNx-cGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_PNu7IGbSEeqrtc6dy-mPpg"/>
  <PapyrusJava:External xmi:id="_POH8sGbSEeqrtc6dy-mPpg" name="java.util.Map" base_Classifier="_POESUGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_POiMYGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_POd68GbSEeqrtc6dy-mPpg"/>
  <PapyrusJava:External xmi:id="_PPP-EGbSEeqrtc6dy-mPpg" name="com.google.common.collect.ImmutableList" base_Classifier="_PPLFkGbSEeqrtc6dy-mPpg"/>
  <PapyrusJava:External xmi:id="_PPcyYGbSEeqrtc6dy-mPpg" name="com.google.common.graph.ImmutableGraph" base_Classifier="_PPYg8WbSEeqrtc6dy-mPpg"/>
  <PapyrusJava:External xmi:id="_PPt4IGbSEeqrtc6dy-mPpg" name="java.util.List" base_Classifier="_PPpmsGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_PQCoQGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_PP-W0GbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_PRtcMGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_PRqY4GbSEeqrtc6dy-mPpg"/>
  <PapyrusJava:External xmi:id="_PSDacGbSEeqrtc6dy-mPpg" name="com.google.common.graph.Graph" base_Classifier="_PR_wEGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_PSm0EGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_PSjJsGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_PTdvsGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_PTasYGbSEeqrtc6dy-mPpg"/>
  <PapyrusJava:External xmi:id="_PT3_YGbSEeqrtc6dy-mPpg" name="com.google.common.graph.MutableGraph" base_Classifier="_PT1jIGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_PUYVsGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_PUJsMGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_PWbkIGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_PWX5wGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_QrmAQGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_QrjkAGbSEeqrtc6dy-mPpg"/>
  <PapyrusJava:External xmi:id="_QrxmcGbSEeqrtc6dy-mPpg" name="java.util.NavigableSet" base_Classifier="_QrvxQmbSEeqrtc6dy-mPpg"/>
  <PapyrusJava:External xmi:id="_QsIy0GbSEeqrtc6dy-mPpg" name="java.io.OutputStream" base_Classifier="_QsG9oWbSEeqrtc6dy-mPpg"/>
  <PapyrusJava:External xmi:id="_QsL2IGbSEeqrtc6dy-mPpg" name="java.io.IOException" base_Classifier="_QsKA8WbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_Qs0IQGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_QsxsAGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_QuuMwGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_QurJcGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_SfVOwGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_SfSygGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_Sf0W8GbSEeqrtc6dy-mPpg" base_BehavioralFeature="_Sfx6smbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_Sgkk4GbSEeqrtc6dy-mPpg" base_BehavioralFeature="_SgiIoGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_SyATIGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_Sx-d8GbSEeqrtc6dy-mPpg"/>
  <PapyrusJava:External xmi:id="_SyHA0GbSEeqrtc6dy-mPpg" name="java.io.InputStream" base_Classifier="_SyD9gGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_S1wxwGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_S1uVgGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_S157sGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_S12RUGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_S2a5EGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_S2ZD4GbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_S22W4GbSEeqrtc6dy-mPpg" base_BehavioralFeature="_S20hsGbSEeqrtc6dy-mPpg"/>
  <standard:Create xmi:id="_S29roGbSEeqrtc6dy-mPpg" base_BehavioralFeature="_S26oUGbSEeqrtc6dy-mPpg"/>
</xmi:XMI>
