<div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
                                        
                                        
                                            
                                        
                                        
                                        Hi Trygve,<div><br></div><div>I apologize for any misunderstandings here. <span style="font-size: 10pt">I am not an English native speaker. It was not my intent do accuse you of lying.</span></div><div><span style="font-size: 10pt"><br></span></div><div><span style="font-size: 10pt">However, there is a difference between a bug report and an unsubstantiated rant. I did read your entire post "A Sad Day" as the latter. Whose mistake that was, I cannot tell now. Neutral, objective bug reports would read different, I suppose.</span></div><div><span style="font-size: 10pt"><br></span></div><div><span style="font-size: 10pt">> </span><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">I have copied the 2 methods below. The suspicious message is in 5.3: </span><i style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">f</i><i style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">ilteredEvent := child </i><i style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">processEvent: localEvent </i><i style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">using: self. </i><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"> This assignment to a filter seems to be the root of the problem.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">That's a bug then. I will investigate that. Morphs should be able to inject their own event dispatcher at any point during the dispatching. You'r observation is correct. We should fix that.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">> </span><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Class MyConnector>> processEvent: anEvent using: anIgnoredDispatcher is a regular event handler in 3.10.2. In 5.3, it is a filter, and its execution never stops.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Reading "</span><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">anIgnoredDispatcher" is misleading because that very method #processEvent:using: is actually talking to that "ignored" dispatcher. That's why I said, it's not true. It still is not true at that point in the code.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">However, you made a valid point as written above. I will investigate that.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">***</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">I am sorry that you had to use uppercase letters in your previous answer. You were screaming at me, I suppose. Well, it can sometimes be hard to form a substantiated, detailed answer to an abstract, high-level claim. I hope you can understand that. Sorry again.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">We need better ways to assess the image quality.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">We need better ways to post bug reports.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Best,</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Marcel</span></div><div class="mb_sig"></div>
                                        
                                        <blockquote class="history_container" type="cite" style="border-left-style: solid;border-width: 1px;margin-top: 20px;margin-left: 0px;padding-left: 10px;min-width: 500px">
                        <p style="color: #AAAAAA; margin-top: 10px;">Am 14.08.2020 11:01:38 schrieb Trygve Reenskaug <trygver@ifi.uio.no>:</p><div style="font-family:Arial,Helvetica,sans-serif">
    Hi Marcel,<br>
    I am 90, and decided I did not want to spend the rest of my days
    with a Squeak I had no hope of understanding. That was the reason
    behind my goodbye-message where I was endeavoring to be as concrete
    and non-emotional as I possibly could. I then put everything Squeak
    in cold storage and picked up my life with other activities.
    Unfortunately, you wrote:<br>
    <blockquote style="min-width: 500px"> Class MyConnector>> processEvent: anEvent using:
      anIgnoredDispatcher is a regular event handler in 3.10.2. In 5.3,
      it is a filter, and its execution never stops.<br>
      <span style="color: #ff0000">That's just not true.</span> <br>
    </blockquote>
    I am deeply offended because you accuse me of lying. I reluctantly
    had to retrieve Squeak from its storage yesterday and spend most of
    the night awake trying to formulate a non-emotional answer. This is
    the result:<br>
    <br>
    START FACTS<br>
    My Squeak Reverse Engineering program (SRE)  lets me build a diagram
    with nodes and connectors. I add new nodes interactively and the
    connectors are added automatically. The connectors behave as
    expected with the redbutton letting me add breakpoints to a
    connector line and the yellowbutton opens a menu as usual. SRE has
    been working for many years under Squeak 3.10.2 and has proven very
    useful.<br>
    <br>
    I have copied and compiled the SRE classes into Squeak 5.3. I can
    still build a diagram with its nodes and connectors <b>BUT the
      image freezes immediately if the cursor touches a connector</b>.
    This anomaly is consistently reproducible and is a clear bug. I WAS
    NOT LYING!<br>
    END FACTS<br>
    <br>
    I tried to debug the program. It was not easy because the normal
    debugging tools do not work in this case. My tentative findings
    were:<br>
    <blockquote style="min-width: 500px">1) <br>
      The first error is a MNU: Your system believes my connector object
      is an event, which is isn't.<br>
      <br>
      2) <br>
      <i>MyConnector>> processEvent:using:</i> is called from <i>MorphicEventDispatcher</i>,
      differently in the two releases:<br>
      3.10.2     MorphicEventDispatcher>>dispatchDefault: anEvent
      with: aMorph<br>
      5.3          MorphicEventDispatcher>>dispatchEvent: anEvent
      toSubmorphsOf: aMorph<br>
    </blockquote>
    I have copied the 2 methods below. The suspicious message is in 5.3:
    <i>f</i><i>ilteredEvent := child </i><i>processEvent: localEvent </i><i>using:
      self. </i> This assignment to a filter seems to be the root of the
    problem.<br>
    <blockquote style="min-width: 500px"><span style=""><b>3.10.2>></b></span><span style=""><b><font size="-1">MorphicEventDispatcher>></font></b><b>dispatchDefault:
          anEvent with: aMorph</b></span><br>
      <span style="">    "Dispatch the given event. The event will be
        passed to the front-most visible submorph that contains the
        position wrt. to the event."</span><br>
      <span style="">    | localEvt index child morphs inside |</span><br>
      <span style="">    "See if we're fully outside aMorphs bounds"</span><br>
      <span style="">    (aMorph fullBounds containsPoint: anEvent
        position) ifFalse:[^#rejected]. "outside"</span><br>
      <span style="">    "Traverse children"</span><br>
      <span style="">    index _ 1.</span><br>
      <span style="">    morphs _ aMorph submorphs.</span><br>
      <span style="">    inside _ false.</span><br>
      <span style="">    [index <= morphs size] whileTrue:[</span><br>
      <span style="">        child _ morphs at: index.</span><br>
      <span style="">        localEvt _ anEvent transformedBy: (child
        transformedFrom: aMorph).</span><br>
      <span style="">        (<i><b>child processEvent: localEvt using:
            self)</b></i> == #rejected ifFalse:[</span><br>
      <span style="">            "Not rejected. The event was in some
        submorph of the receiver"</span><br>
      <span style="">            inside _ true.</span><br>
      <span style="">            localEvt wasHandled ifTrue:[anEvent
        copyHandlerState: localEvt].</span><br>
      <span style="">            index _ morphs size. "break"</span><br>
      <span style="">        ].</span><br>
      <span style="">        index _ index + 1.</span><br>
      <span style="">    ].</span><br>
      <span style="">    "Check for being inside the receiver"</span><br>
      <span style="">    inside ifFalse:[inside _ aMorph containsPoint:
        anEvent position event: anEvent].</span><br>
      <span style="">    inside ifTrue:[^aMorph handleEvent: anEvent].</span><br>
      <span style="">    ^#rejected</span><br>
    </blockquote>
    and<br>
    <blockquote style="min-width: 500px"><span style=""><font size="-1"><b>5,3>>MorphicEventDispatcher>>dispatchEvent:
            anEvent toSubmorphsOf: aMorph</b></font></span><br>
      <span style="">
        <font size="-1">    "Dispatch the given event to the submorphs
          of the given morph. For coordinate transformations, work only
          with copies. Either return the given event or a copy of any
          filtered event to employ immutability to some extent. ---
          PRIVATE!"</font></span><br>
      <span style="">
        <font size="-1">    | localEvent filteredEvent |    </font></span><br>
      <span style="">
        <font size="-1">    aMorph submorphsDo: [:child |</font></span><br>
      <span style="">
        <font size="-1">       </font><font size="-1"> localEvent :=
          anEvent transformedBy: (child transformedFrom: aMorph).</font></span><br>
      <span style="">
        <font size="-1">       <i><b> filteredEvent :=</b></i><i><b>
              child </b></i></font></span><i><b><span style=""><font size="-1">processEvent: localEvent </font></span></b></i><i><b><span style=""><font size="-1">using: self. "use same dispatcher"</font></span></b></i><br>
      <span style="">
        <font size="-1">        filteredEvent == #rejected ifFalse: [
          "some event or #rejected symbol"</font></span><br>
      <span style="">
        <font size="-1">            self flag: #overlappingChildren.
          "mt: We cannot give two overlapping siblings the chance to
          handle the event!"    </font></span><br>
      <span style="">
        <font size="-1">            ^ self nextFromOriginal: anEvent
          local: localEvent filtered: filteredEvent]].</font></span><br>
      <span style="">
        <font size="-1">    ^ #rejected<br>
        </font></span></blockquote>
    <br>
    The 5.3 version assigns the result of MyConnector>>
    processEvent:using: to a variable called <i>filteredEvent</i>.
    Nothing like that happens in 3.10.2, yet you claim that <i>"The
      dispatcher is still dispatching as it was in Squeak 3.10.2"</i>.
    Since <i>MyConnector>> processEvent:using:</i> has never
    returned an event, the program is doomed to fail.<br>
    <br>
    To avoid any further problems, I repeat that I am reporting to the
    best of my ability what I have experienced with a real program
    running in 2 real Squeak releases on real hardware. I also trust
    that the 2 methods i have quoted exist in the release images even
    though I have copied them from one of my debugging images.<br>
    <br>
    I hope I can return everything Squeak back to its cold storage and
    that it will stay there.<br>
    Have fun and goodbye<br>
    --Trygve<br>
    <br>
    <span style=""><br>
    </span>
    <div class="moz-cite-prefix">On 2020-08-13 09:59, Marcel Taeumel
      wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:Mailbird-0fb9b21d-9b82-4570-9f8b-c20f9a804074@hpi.de" style="min-width: 500px">
      
      <div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000"> Hi Trygve.
        <div><br>
        </div>
        <div>> <span style="font-family: Arial, Helvetica,
            sans-serif;font-size: 13px">Class MorphicEventDispatcher has
            4 methods in 3.10.2 and 16 methods in 5.3.</span></div>
        <div><span style="font-family: Arial, Helvetica,
            sans-serif;font-size: 13px"><br>
          </span></div>
        <div><span style="font-family: Arial, Helvetica,
            sans-serif;font-size: 13px">Finally, we managed to improve
            modularity of Squeak's event handling by assembling -- once
            scattered -- methods and logic in a place where it can be
            found and understood. Of course, the number of methods in a
            class can go up in the process. What you describe as
            "additional bloat" is clearly a revelation of already
            existing complexity.</span></div>
        <div><span style="font-family: Arial, Helvetica,
            sans-serif;font-size: 13px"><br>
          </span></div>
        <div><span style="font-family: Arial, Helvetica, sans-serif"><span style="font-size: 13px">Since the plain number of methods
              is rather unhelpful to assess code readability, I wonder
              whether there are better names we can use to guide
              programmers when exploring MorphicEventDispatcher, its
              protocols, and methods.</span></span></div>
        <div><span style="font-family: Arial, Helvetica,
            sans-serif;font-size: 13px"><br>
          </span></div>
        <div><span style="font-family: Arial, Helvetica,
            sans-serif;font-size: 13px">> </span><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Class </span><i style="font-family: Arial, Helvetica,
            sans-serif;font-size: 13px"><span style="font-size: 12pt;line-height: 17.12px">MyMorph>> processEvent:
              anEvent using: anIgnoredDispatcher </span></i><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">is a regular event handler in 3.10.2. In 5.3, it is a
            filter, and its execution never stops.</span></div>
        <div><span style="font-family: Arial, Helvetica,
            sans-serif;font-size: 13px"><br>
          </span></div>
        <div><span style="font-family: Arial, Helvetica,
            sans-serif;font-size: 13px">That's just not true. The
            dispatcher is still dispatching as it was in Squeak 3.10.2.
            Event filters were added as a mechanism to tackle the
            existing mis-use of event listeners. The filter mechanism
            uses patterns that are already existing in the Squeak
            system. Yes, there is still room for improvement regarding
            its modularity.</span></div>
        <div><span style="font-family: Arial, Helvetica,
            sans-serif;font-size: 13px"><br>
          </span></div>
        <div><span style="font-family: Arial, Helvetica,
            sans-serif;font-size: 13px">***</span></div>
        <div><span style="font-family: Arial, Helvetica,
            sans-serif;font-size: 13px"><br>
          </span></div>
        <div><span style="font-family: Arial, Helvetica,
            sans-serif;font-size: 13px">We need better ways to assess
            the image quality. Phrases such as "unbelievable image
            bloat", "many thousands of classes", etc. are not helpful at
            all. Such a perspective ignores incidental vs. accidental
            complexity. It also ignores the role of tools in such a live
            and exploratory programming system.</span></div>
        <div><br>
        </div>
        <div>We need better ways to look beyond the source code. Of
          course, we strive for a clean, compact, understandable system.
          However, that goal must not only focus on lines of code,
          number of methods/classes/packages. Programmers do not just
          read code to gather understanding. They execute code, play
          around with objects ---> use tools. Those tools show us the
          names and relationships of all kinds of software artifacts.
          Those tools enable very concise, task-specific views on rather
          complex systems. Those tools can help find redundancy, clarify
          meaning.</div>
        <div><br>
        </div>
        <div>Don't get me wrong. I am always in favor of removing a
          class or concept if that is not necessary. I do think twice
          before adding a new class or extending the inheritance tree.</div>
        <div><br>
        </div>
        <div>However, just counting the number of code artifacts is not
          a helpful metric to move forward. It can only be a first step
          in a more throrough exploration process.</div>
        <div><br>
        </div>
        <div>Don't give up. Happy Squeaking! :-)</div>
        <div><br>
        </div>
        <div><span style="font-family: Arial, Helvetica,
            sans-serif;font-size: 13px">Best,</span></div>
        <div><span style="font-family: Arial, Helvetica,
            sans-serif;font-size: 13px">Marcel</span></div>
        <blockquote class="history_container" type="cite" style="border-left-style: solid;border-width: 1px;margin-top: 20px;margin-left: 0px;padding-left: 10px;min-width: 500px">
          <p style="color: #AAAAAA; margin-top: 10px;">Am 13.08.2020
            09:34:39 schrieb Trygve Reenskaug
            <a class="moz-txt-link-rfc2396E" href="mailto:trygver@ifi.uio.no"><trygver@ifi.uio.no></a>:</p>
          <div style="font-family:Arial,Helvetica,sans-serif"> <br>
            <span style="mso-spacerun:yes"></span>Dear All, <br>
            Imagine that you bought an iPhone 20 years ago. Over the
            years, you have filled it with pictures, contacts, and other
            personal data. You now want to upgrade to iPhone SE and find
            that all your personal data are lost because there is no way
            to transfer your data. Very sad.<br>
            <br>
            The same has happened to me with Squeak. The Squeak programs
            I have written over the past 20 years are effectively lost
            because I can’t port them to a current version of Squeak.
            Very sad.<br>
            <br>
            The essence of object orientation is that objects
            collaborate to achieve a goal. I retired 20 years ago and
            made it my task to create DCI (Data-Context-Interaction), a
            programming paradigm that merges the concepts of class and
            collaboration. BabyIDE is a non-intrusive Squeak program
            that includes a model of DCI as well as tools for
            programming within the paradigm. BabyIDE is a kind of
            Dynabook, a personal computer for experts in all domains.
            Its target group could be department managers in business
            and industry; they are experts in running their department
            in collaboration with other managers. Another target group
            could be farmers; they are experts in taking care of their
            animals. A third target group could be homeowners; they
            build expertise in controlling their smart home.<br>
            <br>
            Squeak is more than a programming language; it is a live
            universe of collaborating objects. The shared objects on the
            web is also a universe of collaborating objects that Kevin
            Kelly called a <i>single, global machine</i>. BabyIDE
            extends the Squeak image into this global machine, making
            all the combined objects available for personal programming
            as illustrated below:<br>
            <br>
            <div align="center"><span style="mso-no-proof:yes"><img src="cid:part1.B8569C86.7E4A26CB@ifi.uio.no" moz-do-not-send="true" width="497" height="284"></img><!-- </img> --></span><br>
            </div>
            <br>
            BabyIDE is now running in Squeak 3.10.2, together with a new
            Squeak Reverse Engineering tool. I want to port my programs
            to Squeak 3.5 to benefit from its improved internet
            communication facilities. This port has been pestering me
            since April, but the overwhelming complexity of 3.5 has
            forced me to accept defeat. I can’t avoid speculating about
            the nature of Squeak’s current target group. It used to be
            “children of all ages.” Today, it neither includes children
            nor old Smalltalk hands like me (I wrote my first Smalltalk
            program in 1978). Stephen Pope, another veteran who also
            bemoans what is happening to Squeak, wrote in a blog: <br>
            <br>
            <blockquote style="min-width: 500px"><i>“</i><i><span style="font-size: 12.0pt;mso-bidi-font-size: 10.0pt;line-height: 107%">The most popular systems
                  (Squeak and Pharo) both suffer from unbelievable image
                  bloat, with many thousands of classes, hundreds of
                  root classes, class hierarchies with many instance
                  variables in the high-level (abstract) classes, and
                  too many packages with cute but meaningless (to a
                  new-comer) names.”</span></i><br>
              <span style="font-size: 12.0pt;mso-bidi-font-size: 10.0pt;line-height: 107%"> </span><a href="https://smalltalk.tech.blog/2020/08/10/smalltalks-successor/" moz-do-not-send="true"><span style="font-size: 12.0pt;mso-bidi-font-size: 10.0pt;line-height: 107%">https://smalltalk.tech.blog/2020/08/10/smalltalks-successor/</span></a><br>
            </blockquote>
            I couldn’t agree more. A few examples:<br>
            <br>
            <blockquote style="min-width: 500px"><span style="mso-fareast-font-family:Arial;mso-bidi-font-family:Arial"><span style="mso-list:Ignore">1.<span style="font-style: normal;font-variant: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;line-height: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-language-override: normal;font-feature-settings: normal;font-variation-settings: normal">   </span></span></span>Class
              Object defines 485 methods. This means that every Squeak
              object understands at least 485 messages. Most of them are
              irrelevant to the problem at hand, but all of them can be
              part of unexpected behavior.  <br>
              <br>
              <span style="mso-fareast-font-family:Arial;mso-bidi-font-family:Arial"><span style="mso-list:Ignore">2.<span style="font-style: normal;font-variant: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;line-height: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-language-override: normal;font-feature-settings: normal;font-variation-settings: normal">   </span></span></span>The
              state of every Morph object is held in its regular
              instance variables PLUS any number of undeclared and
              undocumented variables in its <i>extension</i>, a
              Dictionary that may include another dictionary inside it.
              The Morph class comment: <i><span style="font-size: 12.0pt;mso-bidi-font-size: 10.0pt;line-height: 107%">“MorphExtension
                  Allows extra properties to be stored without adding a
                  storage burden to all morphs.”</span></i> I’m more
              concerned about the burden put upon the code reader.<br>
              <br>
              <span style="mso-fareast-font-family:Arial;mso-bidi-font-family:Arial"><span style="mso-list:Ignore">3.<span style="font-style: normal;font-variant: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;line-height: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-language-override: normal;font-feature-settings: normal;font-variation-settings: normal">   </span></span></span>For
              me, the final straw was the new filtering phase added to
              Squeak’s already complex event handling mechanism. Squeak
              3.5 has 208 new methods with ‘filter’ in their name, but
              there is no indication as to what they are for and when to
              use them. The abstract concepts of event filtering are
              documented, but there is no documentation on their
              reification into concrete code. The complexity of a
              basically simple mechanism has reached a new high far
              beyond the capabilities of my brain.<br>
              <br>
              <span style="mso-fareast-font-family:Arial;mso-bidi-font-family:Arial"><span style="mso-list:Ignore">4.<span style="font-style: normal;font-variant: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;line-height: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-language-override: normal;font-feature-settings: normal;font-variation-settings: normal">   </span></span></span>Class
              MorphicEventDispatcher has 4 methods in 3.10.2 and 16
              methods in 5.3.<br>
              <br>
              <span style="mso-fareast-font-family:Arial;mso-bidi-font-family:Arial"><span style="mso-list:Ignore">5.<span style="font-style: normal;font-variant: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;line-height: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-language-override: normal;font-feature-settings: normal;font-variation-settings: normal">   </span></span></span>Class
              <i><span style="font-size: 12.0pt;mso-bidi-font-size: 10.0pt;line-height: 107%">MyMorph>>
                  processEvent: anEvent using: anIgnoredDispatcher</span></i><br>
              is a regular event handler in 3.10.2. In 5.3, it is a
              filter, and its execution never stops. <br>
            </blockquote>
            <br>
            After 60 years in programming, 42 of them in Smalltalk, and
            the last 20 in Squeak, I have reached the end of my patience
            and reluctantly have to quit Squeak programming. It is truly
            a sad day.<br>
            <br>
            Have fun and Goodbye, <br>
            --Trygve <br>
            <br>
            <div class="moz-signature">-- <br>
              <link rel="File-List" href="TrygveSignature-filer/filelist.xml">
              <link rel="themeData" href="TrygveSignature-filer/themedata.thmx">
              <link rel="colorSchemeMapping" href="TrygveSignature-filer/colorschememapping.xml">
              <!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:SpellingState>Clean</w:SpellingState>
  <w:GrammarState>Clean</w:GrammarState>
  <w:TrackMoves>false</w:TrackMoves>
  <w:TrackFormatting/>
  <w:HyphenationZone>21</w:HyphenationZone>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>NO-BOK</w:LidThemeOther>
  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SplitPgBreakAndParaMark/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="--"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]-->
              <!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
        {mso-style-name:"Table Normal";
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-priority:99;
        mso-style-parent:"";
        mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
        mso-para-margin:0cm;
        mso-para-margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:10.0pt;
        font-family:"Times New Roman","serif";}
</style>
<![endif]--><!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1"/>
 </o:shapelayout></xml><![endif]-->
              <div class="WordSection1">
                <p class="MsoNormal"><i style="mso-bidi-font-style:normal"><span style="font-size: 10.0pt;mso-fareast-font-family: "Times New Roman";mso-ansi-language: EN-US" lang="EN-US">The essence of object
                      orientation is that objects <span class="GramE">collaborate<span style="mso-spacerun:yes">  </span>to</span>
                      achieve a goal. </span></i><span style="font-size: 10.0pt;mso-fareast-font-family: "Times New Roman";mso-ansi-language: EN-US" lang="EN-US"><br>
                    <span class="SpellE">Trygve</span> <span class="SpellE">Reenskaug</span>      </span><span style="font-size: 10.0pt;mso-fareast-font-family: "Times New Roman""><a href="mailto:%20trygver@ifi.uio.no" moz-do-not-send="true"><span style="mso-ansi-language: EN-US" lang="EN-US">mailto:
                        trygver@ifi.uio.no</span></a></span><span style="font-size: 10.0pt;mso-fareast-font-family: "Times New Roman";mso-ansi-language: EN-US" lang="EN-US"><br>
                    <span class="SpellE">Morgedalsvn</span>. 5A       </span><span style="font-size: 10.0pt;mso-fareast-font-family: "Times New Roman""><a href="http://folk.uio.no/trygver/" moz-do-not-send="true"><span style="mso-ansi-language:EN-US" lang="EN-US">http://folk.uio.no/trygver/</span></a></span><span style="font-size: 10.0pt;mso-fareast-font-family: "Times New Roman";mso-ansi-language: EN-US" lang="EN-US"><br>
                    N-0378 Oslo             </span><span style="font-size: 10.0pt;mso-fareast-font-family: "Times New Roman""><a href="http://fullOO.info" moz-do-not-send="true"><span style="mso-ansi-language:EN-US" lang="EN-US">http://fullOO.info</span></a></span><span style="font-size: 10.0pt;mso-fareast-font-family: "Times New Roman";mso-ansi-language: EN-US" lang="EN-US"><br>
                    Norway                     Tel: (+47) 468 58 625 </span><span style="font-size: 10.0pt;mso-ansi-language: EN-US" lang="EN-US"><o:p></o:p></span></p>
              </div>
            </div>
          </div>
        </blockquote>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap=""></pre>
    </blockquote>
    <br>
    <div class="moz-signature">-- <br>
      
      
      
      
      <link rel="File-List" href="TrygveSignature-filer/filelist.xml">
      <link rel="themeData" href="TrygveSignature-filer/themedata.thmx">
      <link rel="colorSchemeMapping" href="TrygveSignature-filer/colorschememapping.xml">
      <!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:SpellingState>Clean</w:SpellingState>
  <w:GrammarState>Clean</w:GrammarState>
  <w:TrackMoves>false</w:TrackMoves>
  <w:TrackFormatting/>
  <w:HyphenationZone>21</w:HyphenationZone>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>NO-BOK</w:LidThemeOther>
  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SplitPgBreakAndParaMark/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="--"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]-->
      <!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
        {mso-style-name:"Table Normal";
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-priority:99;
        mso-style-parent:"";
        mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
        mso-para-margin:0cm;
        mso-para-margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:10.0pt;
        font-family:"Times New Roman","serif";}
</style>
<![endif]--><!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1"/>
 </o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal"><i style="mso-bidi-font-style:normal"><span style="font-size: 10.0pt;mso-fareast-font-family: "Times New
              Roman";mso-ansi-language: EN-US" lang="EN-US">The essence of object orientation is
              that objects <span class="GramE">collaborate<span style="mso-spacerun:yes">  </span>to</span> achieve a
              goal. </span></i><span style="font-size: 10.0pt;mso-fareast-font-family: "Times
            New Roman";mso-ansi-language: EN-US" lang="EN-US"><br>
            <span class="SpellE">Trygve</span> <span class="SpellE">Reenskaug</span>      </span><span style="font-size: 10.0pt;mso-fareast-font-family: "Times
            New Roman""><a href="mailto:%20trygver@ifi.uio.no"><span style="mso-ansi-language:
                EN-US" lang="EN-US">mailto: trygver@ifi.uio.no</span></a></span><span style="font-size: 10.0pt;mso-fareast-font-family: "Times
            New Roman";mso-ansi-language: EN-US" lang="EN-US"><br>
            <span class="SpellE">Morgedalsvn</span>.
            5A       </span><span style="font-size: 10.0pt;mso-fareast-font-family: "Times New Roman""><a href="http://folk.uio.no/trygver/"><span style="mso-ansi-language:EN-US" lang="EN-US">http://folk.uio.no/trygver/</span></a></span><span style="font-size: 10.0pt;mso-fareast-font-family: "Times
            New Roman";mso-ansi-language: EN-US" lang="EN-US"><br>
            N-0378
            Oslo             </span><span style="font-size: 10.0pt;mso-fareast-font-family: "Times
            New Roman""><a href="http://fullOO.info"><span style="mso-ansi-language:EN-US" lang="EN-US">http://fullOO.info</span></a></span><span style="font-size: 10.0pt;mso-fareast-font-family: "Times
            New Roman";mso-ansi-language: EN-US" lang="EN-US"><br>
            Norway                     Tel:
            (+47) 468 58 625 </span><span style="font-size: 10.0pt;mso-ansi-language: EN-US" lang="EN-US"><o:p></o:p></span></p>
      </div>
    </div>
  </div></blockquote></div>