\FOT{2}\Seq%
{\def\PageNumberFormat%
{1}\def\PageNumberRestart%
{0}\def\PageNColumns%
{1}\def\PageColumnSep%
{36\p@}\def\PageBalanceColumns%
{0}\def\WritingMode%
{lefttoright}\def\InputWhitespaceTreatment%
{collapse}\def\LeftMargin%
{72\p@}\def\RightMargin%
{72\p@}\def\PageWidth%
{612\p@}\def\PageHeight%
{792\p@}\def\MinLeading%
{2\p@}\def\MinLeadingFactor%
{0}\def\TopMargin%
{72\p@}\def\BottomMargin%
{96\p@}\def\HeaderMargin%
{48\p@}\def\FooterMargin%
{48\p@}}\Node%
{}\Node%
{\def\Label%
{USERBOOK}}\Seq%
{}\Seq%
{}\SpS%
{\def\PageNColumns%
{1}\def\InputWhitespaceTreatment%
{collapse}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{}
\SpSOtherBackRightHeader%
{}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{}
\SpSOtherFrontRightHeader%
{}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{}
\SpSFirstFrontRightHeader%
{}\Par%
{\def\LineSpacing%
{1\p@}\def\LineSpacingFactor%
{0}}\endPar{}\Seq%
{}\Node%
{\def\Element%
{3}\def\ProcessingMode%
{book-titlepage-recto-mode}}\Par%
{\def\fSize%
{24.883\p@}\def\LineSpacing%
{32.348\p@}\def\LineSpacingFactor%
{0}\def\Quadding%
{center}\def\fFamName{Arial}\def\fWeight%
{bold}\def\sbNom%
{18.662\p@}\def\sbMin%
{18.662\p@}\def\sbMax%
{18.662\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Swarm User Guide\endPar{}\endNode{}\Seq%
{}\Par%
{\def\saNom%
{99.533\p@}\def\saMin%
{99.533\p@}\def\saMax%
{99.533\p@}\def\saConditional%
{1}} \endPar{}\Node%
{\def\Element%
{17}\def\ProcessingMode%
{book-titlepage-recto-mode}}\Seq%
{}\Par%
{\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\Quadding%
{center}\def\fFamName{Arial}\def\fWeight%
{bold}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Swarm Development Group\endPar{}\Par%
{\def\fSize%
{12\p@}\def\LineSpacing%
{15.6\p@}\def\LineSpacingFactor%
{0}\def\Quadding%
{center}\def\fFamName{Arial}\def\fWeight%
{bold}\def\saNom%
{28.8\p@}\def\saMin%
{28.8\p@}\def\saMax%
{28.8\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}} \endPar{}\endSeq{}\endNode{}\Seq%
{}\Node%
{\def\Element%
{18}\def\ProcessingMode%
{book-titlepage-recto-mode}}\DisplayGroup%
{}\Node%
{\def\Element%
{19}\def\ProcessingMode%
{book-titlepage-recto-mode}}\Seq%
{}\Par%
{\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\Quadding%
{center}\def\fFamName{Arial}\def\fWeight%
{bold}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Paul Johnson\endPar{}\Node%
{\def\Element%
{22}\def\ProcessingMode%
{book-titlepage-recto-mode}}\DisplayGroup%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{12\p@}}\Node%
{\def\Element%
{23}\def\ProcessingMode%
{book-titlepage-recto-mode}}\Par%
{\def\Quadding%
{center}\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{12\p@}}University of Kansas\endPar{}\endNode{}\Node%
{\def\Element%
{24}\def\ProcessingMode%
{book-titlepage-recto-mode}}\Par%
{\def\Quadding%
{center}\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{12\p@}}Department of Political Science\endPar{}\endNode{}\Node%
{\def\Element%
{25}\def\ProcessingMode%
{book-titlepage-recto-mode}}\DisplayGroup%
{\def\Quadding%
{center}\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{12\p@}}\Par%
{\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{26}\def\ProcessingMode%
{titlepage-address-mode}}pauljohn@ukans.edu\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endNode{}\Node%
{\def\Element%
{27}\def\ProcessingMode%
{book-titlepage-recto-mode}}\Seq%
{}\Par%
{\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\Quadding%
{center}\def\fFamName{Arial}\def\fWeight%
{bold}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Alex Lancaster\endPar{}\Node%
{\def\Element%
{30}\def\ProcessingMode%
{book-titlepage-recto-mode}}\DisplayGroup%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{12\p@}}\Node%
{\def\Element%
{31}\def\ProcessingMode%
{book-titlepage-recto-mode}}\Par%
{\def\Quadding%
{center}\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{12\p@}}Santa Fe Institute\endPar{}\endNode{}\Node%
{\def\Element%
{32}\def\ProcessingMode%
{book-titlepage-recto-mode}}\DisplayGroup%
{\def\Quadding%
{center}\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{12\p@}}\Par%
{\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{33}\def\ProcessingMode%
{titlepage-address-mode}}alex@santafe.edu\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endSeq{}\endSeq{}\endSpS{}\SpS%
{\def\PageNColumns%
{1}\def\InputWhitespaceTreatment%
{collapse}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{}
\SpSOtherBackRightHeader%
{}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{}
\SpSOtherFrontRightHeader%
{}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{}
\SpSFirstFrontRightHeader%
{}\Par%
{\def\LineSpacing%
{1\p@}\def\LineSpacingFactor%
{0}}\endPar{}\Seq%
{}\Node%
{\def\Element%
{3}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Swarm User Guide\endSeq{}\endNode{}\Seq%
{}\Par%
{}\Node%
{\def\Element%
{17}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Seq%
{}by Swarm Development Group\endSeq{}\endNode{}\endPar{}\Seq%
{}\Node%
{\def\Element%
{18}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Par%
{\def\saNom%
{13\p@}\def\saMin%
{13\p@}\def\saMax%
{13\p@}\def\saConditional%
{1}}\Seq%
{}by \Node%
{\def\Element%
{19}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Seq%
{}Paul Johnson \endSeq{}\endNode{}\Node%
{\def\Element%
{27}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Seq%
{}and Alex Lancaster\endSeq{}\endNode{}\endSeq{}\endPar{}\endNode{}\Seq%
{}\Node%
{\def\Element%
{8}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Par%
{}Published 09 January 2001\endPar{}\endNode{}\Seq%
{}\Node%
{\def\Element%
{4}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Par%
{\def\fFamName{Times-New-Roman}}Copyright © \Node%
{\def\Element%
{5}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Seq%
{}1999-2000 by \endSeq{}\endNode{}\Node%
{\def\Element%
{6}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Seq%
{}Swarm Development Group\endSeq{}\endNode{}\endPar{}\endNode{}\Seq%
{}\Node%
{\def\Element%
{34}\def\ProcessingMode%
{book-titlepage-verso-mode}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Node%
{\def\Element%
{35}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}A User's Guide for the Swarm Simulation System\endPar{}\endNode{}\Par%
{\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{35}\def\ProcessingMode%
{book-titlepage-verso-mode}}\endNode{}\Node%
{\def\Element%
{36}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} This document began with the Swarm Tutorial presented at
        SwarmFests 1998 and 1999 by Benedikt Stefansson of CASA
        Inc. (formerly of UCLA Department of Economics). The Swarm
        Toolkit is discussed in three stages of increasing detail.
        The first part provides an introductory treatment and
        description of Swarm. The second part provides a deeper survey
        of the anatomy of a swarm program. The third part goes into
        significantly greater detail on some elements of programming
        in Swarm that users are likely to enounter as they build
        programs with Swarm.  Users are encouraged to explore the
        Swarm sample programs and to visit the \Node%
{\def\Element%
{37}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Seq%
{}\Seq%
{}Swarm home page\endSeq{}\Seq%
{} (http://www.swarm.org)\endSeq{}\endSeq{}\endNode{}, where
        they can find out the latest news and join the Swarm e-mail
        community.
      \endPar{}\endNode{}\Node%
{\def\Element%
{38}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Paul Johnson's effort on this project was supported in
        part by a grant from the National Science Foundation
        (SBR-9709404).  Paul is the primary author of the main bulk of
        the \Node%
{\def\Element%
{39}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Seq%
{\def\fPosture%
{italic}}Guide\endSeq{}\endNode{} material.
       \endPar{}\endNode{}\Node%
{\def\Element%
{40}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Alex Lancaster is responsible for most of the
        SGML-"smithing" and markup issues in DocBook (see \Node%
{\def\Element%
{41}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Link%
{\def\Label%
{SWARM.USER.COLOPHON}}Colophon\endLink{}\endNode{}) and supplied
        additional material and text.\endPar{}\endNode{}\endPar{}\endSeq{}\endDisplayGroup{}\endNode{}\Seq%
{}\Node%
{\def\Element%
{9}\def\ProcessingMode%
{book-titlepage-verso-mode}}\DisplayGroup%
{\def\fFamName{Times-New-Roman}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Node%
{\def\Element%
{10}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}Licence terms for Swarm User Guide\endPar{}\endNode{}\Par%
{\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{10}\def\ProcessingMode%
{book-titlepage-verso-mode}}\endNode{}\Node%
{\def\Element%
{11}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Par%
{\def\fSize%
{8\p@}\def\fFamName{Times-New-Roman}}Reproduction of this documentation requires prior copyright
    release in writing, from the copyright holder (the Swarm Development Group);
    \Node%
{\def\Element%
{12}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Seq%
{\def\fPosture%
{italic}}except\endSeq{}\endNode{} for reasonable personal use or
    educational purposes.  Reproduction for mass distribution or
    profit, is not permitted.  The SGML source and associated utilites
    needed to generate this documentation can be found in the package:
    \Node%
{\def\Element%
{13}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Seq%
{}\Seq%
{}userbook-0.9.tar.gz\endSeq{}\Seq%
{} (ftp://ftp.swarm.org/pub/swarm/userbook-0.9.tar.gz)\endSeq{}\endSeq{}\endNode{}.
    Permission to use, copy, modify and distribute both the swarmdocs
    package \Node%
{\def\Element%
{14}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Seq%
{\def\fPosture%
{italic}}and\endSeq{}\endNode{} the documentation it generates
    (that is the HTML, TeX, dvi, PostScript and RTF output), must be
    in accordance with the \Node%
{\def\Element%
{15}\def\ProcessingMode%
{book-titlepage-verso-mode}}\Seq%
{}\Seq%
{}GNU General Public
    Licence\endSeq{}\Seq%
{} (http://www.gnu.org/copyleft/gpl.html)\endSeq{}\endSeq{}\endNode{} (GPL).\endPar{}\endNode{}\endPar{}\endSeq{}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSpS{}\endSeq{}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{1}\def\PageNumberFormat%
{i}\def\InputWhitespaceTreatment%
{collapse}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}Table of Contents\def\HeadingText{%
Table of Contents}%
\endHeadPar{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{bold}\def\Quadding%
{start}\def\sbNom%
{2.4\p@}\def\sbMin%
{2.4\p@}\def\sbMax%
{2.4\p@}\def\sbConditional%
{1}\def\saNom%
{2.4\p@}\def\saMin%
{2.4\p@}\def\saMax%
{2.4\p@}\def\saConditional%
{1}}\Link%
{\def\Label%
{SWARM.USER.PREFACE}}\Seq%
{}\Node%
{\def\Element%
{43}\def\ProcessingMode%
{xref-title-mode}}About this Guide\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.PREFACE}}\Node%
{\def\Label%
{SWARM.USER.PREFACE}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.PREFACE}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{bold}\def\Quadding%
{start}\def\sbNom%
{2.4\p@}\def\sbMin%
{2.4\p@}\def\sbMax%
{2.4\p@}\def\sbConditional%
{1}\def\saNom%
{2.4\p@}\def\saMin%
{2.4\p@}\def\saMax%
{2.4\p@}\def\saConditional%
{1}}\Link%
{\def\Label%
{SWARM.USER.USER1.PART}}\Seq%
{}\Seq%
{}\Seq%
{}Part I\endSeq{}. \endSeq{}\Node%
{\def\Element%
{88}\def\ProcessingMode%
{xref-title-mode}}Basic Concepts\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.PART}}\Node%
{\def\Label%
{SWARM.USER.USER1.PART}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.PART}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.01.CHAPTER}}\Seq%
{}\Seq%
{}\Seq%
{}1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{90}\def\ProcessingMode%
{xref-title-mode}}Introduction\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.01.CHAPTER}}\Node%
{\def\Label%
{SWARM.USER.USER1.01.CHAPTER}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.01.CHAPTER}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.01-FACTS.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}1.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{98}\def\ProcessingMode%
{xref-title-mode}}Basic Facts About Swarm\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.01-FACTS.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.01-FACTS.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.01-FACTS.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.01-TARGET.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}1.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{118}\def\ProcessingMode%
{xref-title-mode}}Swarm is a Dynamic Platform\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.01-TARGET.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.01-TARGET.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.01-TARGET.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.01-PREREQ.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}1.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{144}\def\ProcessingMode%
{xref-title-mode}}Prerequisites for Success with Swarm.\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.01-PREREQ.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.01-PREREQ.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.01-PREREQ.SECT1}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.02.CHAPTER}}\Seq%
{}\Seq%
{}\Seq%
{}2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{173}\def\ProcessingMode%
{xref-title-mode}}Programming and Simulation\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.02.CHAPTER}}\Node%
{\def\Label%
{SWARM.USER.USER1.02.CHAPTER}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.02.CHAPTER}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.02-OBJ.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}2.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{187}\def\ProcessingMode%
{xref-title-mode}}What is an Object?\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.02-OBJ.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.02-OBJ.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.02-OBJ.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-TYPES.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}2.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{251}\def\ProcessingMode%
{xref-title-mode}}The Variety of Objects\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-TYPES.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-TYPES.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-TYPES.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-ADV.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}2.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{255}\def\ProcessingMode%
{xref-title-mode}}The Advantages of Object Oriented Programming\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-ADV.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-ADV.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-ADV.SECT1}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-ADV-ENCAP.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}2.3.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{263}\def\ProcessingMode%
{xref-title-mode}}Encapsulation\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-ADV-ENCAP.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-ADV-ENCAP.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-ADV-ENCAP.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-ADV-INHERIT.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}2.3.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{279}\def\ProcessingMode%
{xref-title-mode}}Inheritance\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-ADV-INHERIT.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-ADV-INHERIT.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-ADV-INHERIT.SECT2}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.02-DES.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}2.4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{295}\def\ProcessingMode%
{xref-title-mode}}Discrete Event Simulation\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.02-DES.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.02-DES.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.02-DES.SECT1}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.03.CHAPTER}}\Seq%
{}\Seq%
{}\Seq%
{}3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{335}\def\ProcessingMode%
{xref-title-mode}}Nuts and Bolts of Object-Oriented Programming\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.03.CHAPTER}}\Node%
{\def\Label%
{SWARM.USER.USER1.03.CHAPTER}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.03.CHAPTER}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}3.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{337}\def\ProcessingMode%
{xref-title-mode}}Multilanguage support and Swarm\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG.SECT1}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG-OBJC.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}3.1.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{342}\def\ProcessingMode%
{xref-title-mode}}Objective C\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG-OBJC.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG-OBJC.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG-OBJC.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG-JAVA.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}3.1.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{351}\def\ProcessingMode%
{xref-title-mode}}Java\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG-JAVA.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG-JAVA.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG-JAVA.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG-WHY.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}3.1.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{369}\def\ProcessingMode%
{xref-title-mode}}Why is Swarm Written in Objective C?\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG-WHY.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG-WHY.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG-WHY.SECT2}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.03-OBJC.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}3.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{381}\def\ProcessingMode%
{xref-title-mode}}Objective C Basics\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.03-OBJC.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.03-OBJC.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.03-OBJC.SECT1}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-ID.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}3.2.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{383}\def\ProcessingMode%
{xref-title-mode}}The \Node%
{\def\Element%
{384}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}id\endSeq{}\endNode{} Variable Type\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-ID.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-ID.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-ID.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-INTERFACE.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}3.2.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{397}\def\ProcessingMode%
{xref-title-mode}}Interface File: Declaration of a Class\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-INTERFACE.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-INTERFACE.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-INTERFACE.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-IMPL.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}3.2.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{440}\def\ProcessingMode%
{xref-title-mode}}Implementation File: Defining a Class\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-IMPL.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-IMPL.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-IMPL.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-C.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}3.2.4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{472}\def\ProcessingMode%
{xref-title-mode}}C Functions vs. Objective C Methods\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-C.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-C.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-C.SECT2}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.03-JAVA.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}3.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{496}\def\ProcessingMode%
{xref-title-mode}}Java Basics\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.03-JAVA.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.03-JAVA.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.03-JAVA.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.03-INST.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}3.4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{545}\def\ProcessingMode%
{xref-title-mode}}Giving Life to Classes: Instantiation\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.03-INST.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.03-INST.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.03-INST.SECT1}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.03-INST-OBJC.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}3.4.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{557}\def\ProcessingMode%
{xref-title-mode}}Instantiation: Objective C Style\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.03-INST-OBJC.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER1.03-INST-OBJC.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.03-INST-OBJC.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.03-INST-JAVA.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}3.4.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{602}\def\ProcessingMode%
{xref-title-mode}}Instantiation: Java Style\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.03-INST-JAVA.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER1.03-INST-JAVA.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.03-INST-JAVA.SECT2}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.03-CLASSES.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}3.5\endSeq{}. \endSeq{}\Node%
{\def\Element%
{628}\def\ProcessingMode%
{xref-title-mode}}A Brief Clarification: Classes and Protocols in Objective
      C\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.03-CLASSES.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.03-CLASSES.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.03-CLASSES.SECT1}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.04.CHAPTER}}\Seq%
{}\Seq%
{}\Seq%
{}4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{678}\def\ProcessingMode%
{xref-title-mode}}The notion of a Swarm\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.04.CHAPTER}}\Node%
{\def\Label%
{SWARM.USER.USER1.04.CHAPTER}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.04.CHAPTER}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.04-AGENTS.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}4.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{684}\def\ProcessingMode%
{xref-title-mode}}Primary and Auxiliary Agents\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.04-AGENTS.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.04-AGENTS.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.04-AGENTS.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.04-SWARM.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}4.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{701}\def\ProcessingMode%
{xref-title-mode}}The (Swarm) OOP way\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.04-SWARM.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.04-SWARM.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.04-SWARM.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.04-MEMORY.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}4.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{739}\def\ProcessingMode%
{xref-title-mode}}Managing Memory in Swarms\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.04-MEMORY.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.04-MEMORY.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.04-MEMORY.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.04-BUILDOBJ.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}4.4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{747}\def\ProcessingMode%
{xref-title-mode}}What goes on in the \Node%
{\def\Element%
{748}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildObjects\endSeq{}\endNode{} method?\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.04-BUILDOBJ.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.04-BUILDOBJ.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.04-BUILDOBJ.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.04-BUILDACTION.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}4.5\endSeq{}. \endSeq{}\Node%
{\def\Element%
{784}\def\ProcessingMode%
{xref-title-mode}}What goes on in the \Node%
{\def\Element%
{785}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildActions\endSeq{}\endNode{} method?\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.04-BUILDACTION.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.04-BUILDACTION.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.04-BUILDACTION.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.04-SCHEDULE.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}4.6\endSeq{}. \endSeq{}\Node%
{\def\Element%
{811}\def\ProcessingMode%
{xref-title-mode}}Merging Schedules in Swarms\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.04-SCHEDULE.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.04-SCHEDULE.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.04-SCHEDULE.SECT1}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.05.CHAPTER}}\Seq%
{}\Seq%
{}\Seq%
{}5\endSeq{}. \endSeq{}\Node%
{\def\Element%
{827}\def\ProcessingMode%
{xref-title-mode}}The Graphical User Interface\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.05.CHAPTER}}\Node%
{\def\Label%
{SWARM.USER.USER1.05.CHAPTER}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.05.CHAPTER}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.05-GUI-ELEM.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}5.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{829}\def\ProcessingMode%
{xref-title-mode}}Elements of the Swarm GUI\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.05-GUI-ELEM.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.05-GUI-ELEM.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.05-GUI-ELEM.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.05-GUI-PROBE.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}5.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{855}\def\ProcessingMode%
{xref-title-mode}}GUI Probe Displays\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.05-GUI-PROBE.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.05-GUI-PROBE.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.05-GUI-PROBE.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.05-PROBE-USE.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}5.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{886}\def\ProcessingMode%
{xref-title-mode}}Using the GUI Probe Display\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.05-PROBE-USE.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER1.05-PROBE-USE.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.05-PROBE-USE.SECT1}}\endNode{}\endLink{}\endPar{}\endSeq{}\endSeq{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{bold}\def\Quadding%
{start}\def\sbNom%
{2.4\p@}\def\sbMin%
{2.4\p@}\def\sbMax%
{2.4\p@}\def\sbConditional%
{1}\def\saNom%
{2.4\p@}\def\saMin%
{2.4\p@}\def\saMax%
{2.4\p@}\def\saConditional%
{1}}\Link%
{\def\Label%
{SWARM.USER.USER2.PART}}\Seq%
{}\Seq%
{}\Seq%
{}Part II\endSeq{}. \endSeq{}\Node%
{\def\Element%
{928}\def\ProcessingMode%
{xref-title-mode}}Swarm Applications: Examples and Illustrations\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.PART}}\Node%
{\def\Label%
{SWARM.USER.USER2.PART}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.PART}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.01.CHAPTER}}\Seq%
{}\Seq%
{}\Seq%
{}6\endSeq{}. \endSeq{}\Node%
{\def\Element%
{930}\def\ProcessingMode%
{xref-title-mode}}The Swarm Tutorial: Reprise\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.01.CHAPTER}}\Node%
{\def\Label%
{SWARM.USER.USER2.01.CHAPTER}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.01.CHAPTER}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.01-TUTORIAL.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}6.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{944}\def\ProcessingMode%
{xref-title-mode}}Tutorial Progression\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.01-TUTORIAL.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.01-TUTORIAL.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.01-TUTORIAL.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.01-LEARN.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}6.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1002}\def\ProcessingMode%
{xref-title-mode}}What Are You Supposed to Learn from the Tutorial?\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.01-LEARN.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.01-LEARN.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.01-LEARN.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.01-APPS.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}6.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1075}\def\ProcessingMode%
{xref-title-mode}}After the Tutorial: What now?\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.01-APPS.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.01-APPS.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.01-APPS.SECT1}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.02.CHAPTER}}\Seq%
{}\Seq%
{}\Seq%
{}7\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1081}\def\ProcessingMode%
{xref-title-mode}}Creating Objects In Swarm\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.02.CHAPTER}}\Node%
{\def\Label%
{SWARM.USER.USER2.02.CHAPTER}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.02.CHAPTER}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.02-START.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}7.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1086}\def\ProcessingMode%
{xref-title-mode}}Begin at the Beginning\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.02-START.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.02-START.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.02-START.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.02-DETAIL.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}7.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1131}\def\ProcessingMode%
{xref-title-mode}}Detailed Look at
    \Node%
{\def\Element%
{1132}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{}/\Node%
{\def\Element%
{1133}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{}\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.02-DETAIL.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.02-DETAIL.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.02-DETAIL.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.02-ZONES.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}7.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1218}\def\ProcessingMode%
{xref-title-mode}}Swarm Zones and Recursive Objects Creation\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.02-ZONES.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.02-ZONES.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.02-ZONES.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.02-OBJECTS.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}7.4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1277}\def\ProcessingMode%
{xref-title-mode}}Using Swarm Library Objects and Header Files\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.02-OBJECTS.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.02-OBJECTS.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.02-OBJECTS.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.02-VARIATIONS.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}7.5\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1329}\def\ProcessingMode%
{xref-title-mode}}Variations on a Theme\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.02-VARIATIONS.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.02-VARIATIONS.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.02-VARIATIONS.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.02-DROP.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}7.6\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1346}\def\ProcessingMode%
{xref-title-mode}}How Do You Kill Off Those Poor Little Devils?\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.02-DROP.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.02-DROP.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.02-DROP.SECT1}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.03.CHAPTER}}\Seq%
{}\Seq%
{}\Seq%
{}8\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1371}\def\ProcessingMode%
{xref-title-mode}}Doing the Chores: \Node%
{\def\Element%
{1372}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}set\endSeq{}\endNode{} and
  \Node%
{\def\Element%
{1373}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}get\endSeq{}\endNode{}\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.03.CHAPTER}}\Node%
{\def\Label%
{SWARM.USER.USER2.03.CHAPTER}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.03.CHAPTER}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.03-GETSET.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}8.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1387}\def\ProcessingMode%
{xref-title-mode}}Get and Set Methods\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.03-GETSET.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.03-GETSET.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.03-GETSET.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.03-SET.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}8.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1407}\def\ProcessingMode%
{xref-title-mode}}Using Set Methods During Object Creation\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.03-SET.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.03-SET.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.03-SET.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.03-IMPORT.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}8.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1441}\def\ProcessingMode%
{xref-title-mode}}Passing Information Around\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.03-IMPORT.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.03-IMPORT.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.03-IMPORT.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.03-AVOID.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}8.4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1502}\def\ProcessingMode%
{xref-title-mode}}Circumventing the Object-Oriented Guidelines\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.03-AVOID.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.03-AVOID.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.03-AVOID.SECT1}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.04.CHAPTER}}\Seq%
{}\Seq%
{}\Seq%
{}9\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1526}\def\ProcessingMode%
{xref-title-mode}}Building Schedules\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.04.CHAPTER}}\Node%
{\def\Label%
{SWARM.USER.USER2.04.CHAPTER}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.04.CHAPTER}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.04-SCHEDULE.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}9.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1536}\def\ProcessingMode%
{xref-title-mode}}Building \Node%
{\def\Element%
{1537}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{}s\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.04-SCHEDULE.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.04-SCHEDULE.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.04-SCHEDULE.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.04-MACRO.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}9.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1579}\def\ProcessingMode%
{xref-title-mode}}What's that \Node%
{\def\Element%
{1580}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}M()\endSeq{}\endNode{} Thing?\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.04-MACRO.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.04-MACRO.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.04-MACRO.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.04-ACTIONGROUP.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}9.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1718}\def\ProcessingMode%
{xref-title-mode}}\Node%
{\def\Element%
{1719}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ActionGroup\endSeq{}\endNode{}s\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.04-ACTIONGROUP.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.04-ACTIONGROUP.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.04-ACTIONGROUP.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.04-ACTIVATING.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}9.4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1738}\def\ProcessingMode%
{xref-title-mode}}Activating Swarms\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.04-ACTIVATING.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.04-ACTIVATING.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.04-ACTIVATING.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.04-ACTIVITY.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}9.5\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1764}\def\ProcessingMode%
{xref-title-mode}}What is an \Node%
{\def\Element%
{1765}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Activity\endSeq{}\endNode{}?\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.04-ACTIVITY.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.04-ACTIVITY.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.04-ACTIVITY.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.04-DYNAMIC.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}9.6\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1795}\def\ProcessingMode%
{xref-title-mode}}Dynamic Scheduling\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.04-DYNAMIC.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.04-DYNAMIC.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.04-DYNAMIC.SECT1}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.05.CHAPTER}}\Seq%
{}\Seq%
{}\Seq%
{}10\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1837}\def\ProcessingMode%
{xref-title-mode}}Working with Lists\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.05.CHAPTER}}\Node%
{\def\Label%
{SWARM.USER.USER2.05.CHAPTER}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.05.CHAPTER}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.05-LIST-CLASS.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}10.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1841}\def\ProcessingMode%
{xref-title-mode}}The \Node%
{\def\Element%
{1842}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} Class\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.05-LIST-CLASS.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.05-LIST-CLASS.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.05-LIST-CLASS.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-SYNTAX.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}10.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1861}\def\ProcessingMode%
{xref-title-mode}}Basic \Node%
{\def\Element%
{1862}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} Syntax\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-SYNTAX.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-SYNTAX.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-SYNTAX.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-MODEL.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}10.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1915}\def\ProcessingMode%
{xref-title-mode}}Lists: Managing Objects in the Model Swarm\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-MODEL.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-MODEL.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-MODEL.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-PASSING.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}10.4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1947}\def\ProcessingMode%
{xref-title-mode}}Lists: Passing Information Among Levels in a Swarm Model\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-PASSING.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-PASSING.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-PASSING.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-CHORES.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}10.5\endSeq{}. \endSeq{}\Node%
{\def\Element%
{1989}\def\ProcessingMode%
{xref-title-mode}}Lists: Organizing Repetitive Chores inside Objects\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-CHORES.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-CHORES.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-CHORES.SECT1}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.06.CHAPTER}}\Seq%
{}\Seq%
{}\Seq%
{}11\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2091}\def\ProcessingMode%
{xref-title-mode}}Checking on a Swarm's progress: The Observer\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.06.CHAPTER}}\Node%
{\def\Label%
{SWARM.USER.USER2.06.CHAPTER}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.06.CHAPTER}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.06-MONITOR.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}11.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2093}\def\ProcessingMode%
{xref-title-mode}}Monitoring a Swarm\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.06-MONITOR.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.06-MONITOR.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.06-MONITOR.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.06-ZOOMRASTER.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}11.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2132}\def\ProcessingMode%
{xref-title-mode}}Making a clickable
    \Node%
{\def\Element%
{2133}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRaster\endSeq{}\endNode{}\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.06-ZOOMRASTER.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.06-ZOOMRASTER.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.06-ZOOMRASTER.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.06-GRAPHS.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}11.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2278}\def\ProcessingMode%
{xref-title-mode}}Displaying Results in Graphs\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.06-GRAPHS.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.06-GRAPHS.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.06-GRAPHS.SECT1}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.07.CHAPTER}}\Seq%
{}\Seq%
{}\Seq%
{}12\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2321}\def\ProcessingMode%
{xref-title-mode}}Probing and Displaying the Contents of Swarm Objects\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.07.CHAPTER}}\Node%
{\def\Label%
{SWARM.USER.USER2.07.CHAPTER}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.07.CHAPTER}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.07-PROBES.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}12.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2324}\def\ProcessingMode%
{xref-title-mode}}What's a Probe?\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.07-PROBES.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.07-PROBES.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.07-PROBES.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.07-PROBEDISPLAY.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}12.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2355}\def\ProcessingMode%
{xref-title-mode}}Managing Probe Displays\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.07-PROBEDISPLAY.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.07-PROBEDISPLAY.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.07-PROBEDISPLAY.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.07-CUSTOMIZE.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}12.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2381}\def\ProcessingMode%
{xref-title-mode}}How to Customize Probe Displays\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.07-CUSTOMIZE.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.07-CUSTOMIZE.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.07-CUSTOMIZE.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.07-PRECISION.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}12.4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2446}\def\ProcessingMode%
{xref-title-mode}}Controlling Precision of Display\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.07-PRECISION.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER2.07-PRECISION.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.07-PRECISION.SECT1}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.07-PRECISION-GLOBAL.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}12.4.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2450}\def\ProcessingMode%
{xref-title-mode}}Global setting of precision\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.07-PRECISION-GLOBAL.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER2.07-PRECISION-GLOBAL.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.07-PRECISION-GLOBAL.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER2.07-PRECISION-INDIV.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}12.4.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2477}\def\ProcessingMode%
{xref-title-mode}}Setting Precision for Individual Probes\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER2.07-PRECISION-INDIV.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER2.07-PRECISION-INDIV.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER2.07-PRECISION-INDIV.SECT2}}\endNode{}\endLink{}\endPar{}\endSeq{}\endSeq{}\endSeq{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{bold}\def\Quadding%
{start}\def\sbNom%
{2.4\p@}\def\sbMin%
{2.4\p@}\def\sbMax%
{2.4\p@}\def\sbConditional%
{1}\def\saNom%
{2.4\p@}\def\saMin%
{2.4\p@}\def\saMax%
{2.4\p@}\def\saConditional%
{1}}\Link%
{\def\Label%
{SWARM.USER.USER3.PART}}\Seq%
{}\Seq%
{}\Seq%
{}Part III\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2504}\def\ProcessingMode%
{xref-title-mode}}Advanced Topics\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.PART}}\Node%
{\def\Label%
{SWARM.USER.USER3.PART}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.PART}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.01.CHAPTER}}\Seq%
{}\Seq%
{}\Seq%
{}13\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2506}\def\ProcessingMode%
{xref-title-mode}}Anything C can do, Swarm Can Do Better\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.01.CHAPTER}}\Node%
{\def\Label%
{SWARM.USER.USER3.01.CHAPTER}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.01.CHAPTER}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.01-CMDLINE.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}13.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2512}\def\ProcessingMode%
{xref-title-mode}}Managing command line parameters\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.01-CMDLINE.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER3.01-CMDLINE.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.01-CMDLINE.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.01-CFUNCS.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}13.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2589}\def\ProcessingMode%
{xref-title-mode}}Using C Functions in Swarm\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.01-CFUNCS.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER3.01-CFUNCS.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.01-CFUNCS.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.01-EXAMPLES.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}13.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2628}\def\ProcessingMode%
{xref-title-mode}}Examples of Useful Functions: \Node%
{\def\Element%
{2629}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getInt\endSeq{}\endNode{}
      and \Node%
{\def\Element%
{2630}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getDouble\endSeq{}\endNode{}\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.01-EXAMPLES.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER3.01-EXAMPLES.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.01-EXAMPLES.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.01-DYNAMIC.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}13.4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2654}\def\ProcessingMode%
{xref-title-mode}}Dynamic Memory Allocation and Swarm Zones\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.01-DYNAMIC.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER3.01-DYNAMIC.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.01-DYNAMIC.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.01-DROP.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}13.5\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2695}\def\ProcessingMode%
{xref-title-mode}}Dropping Unused Objects\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.01-DROP.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER3.01-DROP.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.01-DROP.SECT1}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.02.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}14\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2731}\def\ProcessingMode%
{xref-title-mode}}The Swarm Collections Library\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.02.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER3.02.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.02.SECT1}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{2732}}\Seq%
{}\Seq%
{}\Seq%
{}14.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2733}\def\ProcessingMode%
{xref-title-mode}}Overview: the \Node%
{\def\Element%
{2734}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{},
      \Node%
{\def\Element%
{2735}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} and \Node%
{\def\Element%
{2736}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{}
      Protocols\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{2732}}\Node%
{\def\Element%
{2732}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2732}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.02-CHOOSE.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}14.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2805}\def\ProcessingMode%
{xref-title-mode}}Choosing between \Node%
{\def\Element%
{2806}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{}s,
      \Node%
{\def\Element%
{2807}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{}s, and
      \Node%
{\def\Element%
{2808}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{}s\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.02-CHOOSE.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER3.02-CHOOSE.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.02-CHOOSE.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.02-ARRAY.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}14.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2885}\def\ProcessingMode%
{xref-title-mode}}Using Swarm \Node%
{\def\Element%
{2886}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{}s\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.02-ARRAY.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER3.02-ARRAY.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.02-ARRAY.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.02-MAP.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}14.4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2930}\def\ProcessingMode%
{xref-title-mode}}Swarm \Node%
{\def\Element%
{2931}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{}s\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.02-MAP.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER3.02-MAP.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.02-MAP.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.02-INDEX.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}14.5\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3038}\def\ProcessingMode%
{xref-title-mode}}Accessing Collections with Indices\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.02-INDEX.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER3.02-INDEX.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.02-INDEX.SECT1}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.04.CHAPTER}}\Seq%
{}\Seq%
{}\Seq%
{}15\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3091}\def\ProcessingMode%
{xref-title-mode}}Using the Random Library\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.04.CHAPTER}}\Node%
{\def\Label%
{SWARM.USER.USER3.04.CHAPTER}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.04.CHAPTER}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-BUILT.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}15.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3096}\def\ProcessingMode%
{xref-title-mode}}Built-in Random Number Distributions\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-BUILT.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-BUILT.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.04-RAND-BUILT.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.04-OVERVIEW.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}15.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3130}\def\ProcessingMode%
{xref-title-mode}}Overview of the Random Library\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.04-OVERVIEW.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER3.04-OVERVIEW.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.04-OVERVIEW.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}15.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3161}\def\ProcessingMode%
{xref-title-mode}}The Random Number Generators\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN.SECT1}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN-USE.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}15.3.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3168}\def\ProcessingMode%
{xref-title-mode}}How to use the default random generator\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN-USE.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN-USE.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN-USE.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN-LIST.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}15.3.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3178}\def\ProcessingMode%
{xref-title-mode}}A list of generators in Swarm\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN-LIST.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN-LIST.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN-LIST.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN-SEED.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}15.3.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3232}\def\ProcessingMode%
{xref-title-mode}}A note on starting seeds\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN-SEED.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN-SEED.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN-SEED.SECT2}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}15.4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3243}\def\ProcessingMode%
{xref-title-mode}}The Distributions in Swarm\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST.SECT1}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST-CLASS.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}15.4.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3249}\def\ProcessingMode%
{xref-title-mode}}Classes that adopt the ProbabilityDistribution Protocol\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST-CLASS.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST-CLASS.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST-CLASS.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST-MATCH.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}15.4.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3271}\def\ProcessingMode%
{xref-title-mode}}Matching generator and distribution objects\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST-MATCH.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST-MATCH.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST-MATCH.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST-SETTING.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}15.4.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3282}\def\ProcessingMode%
{xref-title-mode}}Setting numerical parameters of distribution objects\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST-SETTING.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST-SETTING.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST-SETTING.SECT2}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-OTHER.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}15.5\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3297}\def\ProcessingMode%
{xref-title-mode}}How to Create Other Random Number Distributions\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.04-RAND-OTHER.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-OTHER.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.04-RAND-OTHER.SECT1}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.05.CHAPTER}}\Seq%
{}\Seq%
{}\Seq%
{}16\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3305}\def\ProcessingMode%
{xref-title-mode}}Serialization\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.05.CHAPTER}}\Node%
{\def\Label%
{SWARM.USER.USER3.05.CHAPTER}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.05.CHAPTER}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.05-SIM-PARAMS.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}16.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3331}\def\ProcessingMode%
{xref-title-mode}}Using the \Node%
{\def\Element%
{3332}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}LispArchiver\endSeq{}\endNode{} to manage
      simulation parameters\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.05-SIM-PARAMS.SECT1}}\Node%
{\def\Label%
{SWARM.USER.USER3.05-SIM-PARAMS.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.05-SIM-PARAMS.SECT1}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.05-SIM-PARAMS-STD.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}16.1.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3341}\def\ProcessingMode%
{xref-title-mode}}Using the Standard \Node%
{\def\Element%
{3342}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}lispAppArchiver\endSeq{}\endNode{}\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.05-SIM-PARAMS-STD.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER3.05-SIM-PARAMS-STD.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.05-SIM-PARAMS-STD.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER3.05-SIM-PARAMS-CUSTOM.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}16.1.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3419}\def\ProcessingMode%
{xref-title-mode}}Using Custom \Node%
{\def\Element%
{3420}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}LispArchiver\endSeq{}\endNode{} Instances\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER3.05-SIM-PARAMS-CUSTOM.SECT2}}\Node%
{\def\Label%
{SWARM.USER.USER3.05-SIM-PARAMS-CUSTOM.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER3.05-SIM-PARAMS-CUSTOM.SECT2}}\endNode{}\endLink{}\endPar{}\endSeq{}\endSeq{}\endSeq{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{bold}\def\Quadding%
{start}\def\sbNom%
{2.4\p@}\def\sbMin%
{2.4\p@}\def\sbMax%
{2.4\p@}\def\sbConditional%
{1}\def\saNom%
{2.4\p@}\def\saMin%
{2.4\p@}\def\saMax%
{2.4\p@}\def\saConditional%
{1}}\Link%
{\def\Label%
{SWARM.USER.TECH.APPENDIX}}\Seq%
{}\Seq%
{}\Seq%
{}A\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3463}\def\ProcessingMode%
{xref-title-mode}}Swarm Tools\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.TECH.APPENDIX}}\Node%
{\def\Label%
{SWARM.USER.TECH.APPENDIX}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.TECH.APPENDIX}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.TECH-RESOURCES.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}A.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3465}\def\ProcessingMode%
{xref-title-mode}}Web Resources for Object-Oriented Languages\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.TECH-RESOURCES.SECT1}}\Node%
{\def\Label%
{SWARM.USER.TECH-RESOURCES.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.TECH-RESOURCES.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.TECH.SGML.SECT1.DEBUG}}\Seq%
{}\Seq%
{}\Seq%
{}A.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3495}\def\ProcessingMode%
{xref-title-mode}}Debugging Tips for Swarm\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.TECH.SGML.SECT1.DEBUG}}\Node%
{\def\Label%
{SWARM.TECH.SGML.SECT1.DEBUG}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.TECH.SGML.SECT1.DEBUG}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.TECH-RESOURCES-BUGS-FINDING.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}A.2.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3498}\def\ProcessingMode%
{xref-title-mode}}Finding bugs\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.TECH-RESOURCES-BUGS-FINDING.SECT2}}\Node%
{\def\Label%
{SWARM.USER.TECH-RESOURCES-BUGS-FINDING.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.TECH-RESOURCES-BUGS-FINDING.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.TECH-RESOURCES-BUGS-PREVENTING-OBJC.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}A.2.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3530}\def\ProcessingMode%
{xref-title-mode}}Preventing Bugs: Objective C\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.TECH-RESOURCES-BUGS-PREVENTING-OBJC.SECT2}}\Node%
{\def\Label%
{SWARM.USER.TECH-RESOURCES-BUGS-PREVENTING-OBJC.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.TECH-RESOURCES-BUGS-PREVENTING-OBJC.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.TECH-RESOURCES-BUGS-PREVENTING-JAVA.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}A.2.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3547}\def\ProcessingMode%
{xref-title-mode}}Preventing Bugs: Java\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.TECH-RESOURCES-BUGS-PREVENTING-JAVA.SECT2}}\Node%
{\def\Label%
{SWARM.USER.TECH-RESOURCES-BUGS-PREVENTING-JAVA.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.TECH-RESOURCES-BUGS-PREVENTING-JAVA.SECT2}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.TECH-EMACS.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}A.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3550}\def\ProcessingMode%
{xref-title-mode}}Emacs and Swarm\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.TECH-EMACS.SECT1}}\Node%
{\def\Label%
{SWARM.USER.TECH-EMACS.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.TECH-EMACS.SECT1}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.TECH-EMACS-OBJC.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}A.3.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3553}\def\ProcessingMode%
{xref-title-mode}}Objective C\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.TECH-EMACS-OBJC.SECT2}}\Node%
{\def\Label%
{SWARM.USER.TECH-EMACS-OBJC.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.TECH-EMACS-OBJC.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.TECH-EMACS-JAVA.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}A.3.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3573}\def\ProcessingMode%
{xref-title-mode}}Java\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.TECH-EMACS-JAVA.SECT2}}\Node%
{\def\Label%
{SWARM.USER.TECH-EMACS-JAVA.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.TECH-EMACS-JAVA.SECT2}}\endNode{}\endLink{}\endPar{}\endSeq{}\endSeq{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{bold}\def\Quadding%
{start}\def\sbNom%
{2.4\p@}\def\sbMin%
{2.4\p@}\def\sbMax%
{2.4\p@}\def\sbConditional%
{1}\def\saNom%
{2.4\p@}\def\saMin%
{2.4\p@}\def\saMax%
{2.4\p@}\def\saConditional%
{1}}\Link%
{\def\Label%
{SWARM.USER.SWARMOBJC.APPENDIX}}\Seq%
{}\Seq%
{}\Seq%
{}B\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3582}\def\ProcessingMode%
{xref-title-mode}}Objective C - Swarm Style\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.SWARMOBJC.APPENDIX}}\Node%
{\def\Label%
{SWARM.USER.SWARMOBJC.APPENDIX}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.SWARMOBJC.APPENDIX}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.SWARMOBJC-NONCONV.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}B.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3585}\def\ProcessingMode%
{xref-title-mode}}Non-Conventional Techniques, And The Libraries In Which They're
      Used\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.SWARMOBJC-NONCONV.SECT1}}\Node%
{\def\Label%
{SWARM.USER.SWARMOBJC-NONCONV.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.SWARMOBJC-NONCONV.SECT1}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.SWARMOBJC-ZONES.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}B.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3589}\def\ProcessingMode%
{xref-title-mode}}Zones\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.SWARMOBJC-ZONES.SECT1}}\Node%
{\def\Label%
{SWARM.USER.SWARMOBJC-ZONES.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.SWARMOBJC-ZONES.SECT1}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.SWARMOBJC-ZONES-PRINCIPLE.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}B.2.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3591}\def\ProcessingMode%
{xref-title-mode}}Zones in Principle\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.SWARMOBJC-ZONES-PRINCIPLE.SECT2}}\Node%
{\def\Label%
{SWARM.USER.SWARMOBJC-ZONES-PRINCIPLE.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.SWARMOBJC-ZONES-PRINCIPLE.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.SWARMOBJC-ZONES-PRACTICE.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}B.2.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3607}\def\ProcessingMode%
{xref-title-mode}}Zones in Practice\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.SWARMOBJC-ZONES-PRACTICE.SECT2}}\Node%
{\def\Label%
{SWARM.USER.SWARMOBJC-ZONES-PRACTICE.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.SWARMOBJC-ZONES-PRACTICE.SECT2}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.SWARMOBJC-PHASES.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}B.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3610}\def\ProcessingMode%
{xref-title-mode}}Create Phase\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.SWARMOBJC-PHASES.SECT1}}\Node%
{\def\Label%
{SWARM.USER.SWARMOBJC-PHASES.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.SWARMOBJC-PHASES.SECT1}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.SWARMOBJC-PHASES-PRINCIPLE.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}B.3.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3612}\def\ProcessingMode%
{xref-title-mode}}The Create Phase in Principle\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.SWARMOBJC-PHASES-PRINCIPLE.SECT2}}\Node%
{\def\Label%
{SWARM.USER.SWARMOBJC-PHASES-PRINCIPLE.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.SWARMOBJC-PHASES-PRINCIPLE.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.SWARMOBJC-PHASES-PRACTICE.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}B.3.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3619}\def\ProcessingMode%
{xref-title-mode}}The Create Phase in Practice\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.SWARMOBJC-PHASES-PRACTICE.SECT2}}\Node%
{\def\Label%
{SWARM.USER.SWARMOBJC-PHASES-PRACTICE.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.SWARMOBJC-PHASES-PRACTICE.SECT2}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.SWARMOBJC-LIBRARIES.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}B.4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3629}\def\ProcessingMode%
{xref-title-mode}}Collections and Defobj\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.SWARMOBJC-LIBRARIES.SECT1}}\Node%
{\def\Label%
{SWARM.USER.SWARMOBJC-LIBRARIES.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.SWARMOBJC-LIBRARIES.SECT1}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{bold}\def\Quadding%
{start}\def\sbNom%
{2.4\p@}\def\sbMin%
{2.4\p@}\def\sbMax%
{2.4\p@}\def\sbConditional%
{1}\def\saNom%
{2.4\p@}\def\saMin%
{2.4\p@}\def\saMax%
{2.4\p@}\def\saConditional%
{1}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX}}\Seq%
{}\Seq%
{}\Seq%
{}C\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3638}\def\ProcessingMode%
{xref-title-mode}}Random Library Appendix\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX}}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT1.USAGE-BEGINNERS}}\Seq%
{}\Seq%
{}\Seq%
{}C.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3640}\def\ProcessingMode%
{xref-title-mode}}Supplemental comments on random number generators\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT1.USAGE-BEGINNERS}}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT1.USAGE-BEGINNERS}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT1.USAGE-BEGINNERS}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT1.USAGE}}\Seq%
{}\Seq%
{}\Seq%
{}C.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3656}\def\ProcessingMode%
{xref-title-mode}}Usage Guide\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT1.USAGE}}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT1.USAGE}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT1.USAGE}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT2.GENERATOR-USAGE}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3658}\def\ProcessingMode%
{xref-title-mode}}Usage Guide for Generators\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT2.GENERATOR-USAGE}}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT2.GENERATOR-USAGE}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT2.GENERATOR-USAGE}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3684}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.1.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3685}\def\ProcessingMode%
{xref-title-mode}}Simple generators\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3684}}\Node%
{\def\Element%
{3684}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3684}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{168\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3687}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.1.1.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3688}\def\ProcessingMode%
{xref-title-mode}}the lazy way\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3687}}\Node%
{\def\Element%
{3687}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3687}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{168\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3692}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.1.1.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3693}\def\ProcessingMode%
{xref-title-mode}}using a single seed value\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3692}}\Node%
{\def\Element%
{3692}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3692}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{168\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3707}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.1.1.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3708}\def\ProcessingMode%
{xref-title-mode}}using a vector of seed values\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3707}}\Node%
{\def\Element%
{3707}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3707}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{168\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3728}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.1.1.4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3729}\def\ProcessingMode%
{xref-title-mode}}antithetic values\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3728}}\Node%
{\def\Element%
{3728}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3728}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{168\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3734}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.1.1.5\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3735}\def\ProcessingMode%
{xref-title-mode}}generator output\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3734}}\Node%
{\def\Element%
{3734}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3734}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3745}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.1.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3746}\def\ProcessingMode%
{xref-title-mode}}Split generators\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3745}}\Node%
{\def\Element%
{3745}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3745}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3778}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.1.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3779}\def\ProcessingMode%
{xref-title-mode}}Saving and Resetting State\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3778}}\Node%
{\def\Element%
{3778}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3778}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT2.DISTRIB-USAGE}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3789}\def\ProcessingMode%
{xref-title-mode}}Usage Guide for Distributions\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT2.DISTRIB-USAGE}}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT2.DISTRIB-USAGE}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT2.DISTRIB-USAGE}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3794}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.2.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3795}\def\ProcessingMode%
{xref-title-mode}}Creating distributions\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3794}}\Node%
{\def\Element%
{3794}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3794}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{168\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3797}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.2.1.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3798}\def\ProcessingMode%
{xref-title-mode}}the lazy way:\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3797}}\Node%
{\def\Element%
{3797}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3797}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{168\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3802}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.2.1.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3803}\def\ProcessingMode%
{xref-title-mode}}Without default parameters, using a simple generator\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3802}}\Node%
{\def\Element%
{3802}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3802}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{168\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3809}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.2.1.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3810}\def\ProcessingMode%
{xref-title-mode}}Without default parameters, using a split generator\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3809}}\Node%
{\def\Element%
{3809}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3809}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{168\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3817}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.2.1.4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3818}\def\ProcessingMode%
{xref-title-mode}}With default parameters, using a simple generator\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3817}}\Node%
{\def\Element%
{3817}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3817}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{168\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3821}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.2.1.5\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3822}\def\ProcessingMode%
{xref-title-mode}}With default parameters, using a split generator\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3821}}\Node%
{\def\Element%
{3821}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3821}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{168\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3830}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.2.1.6\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3831}\def\ProcessingMode%
{xref-title-mode}}You may reset the default parameters this way, as often
as you like\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3830}}\Node%
{\def\Element%
{3830}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3830}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{168\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3834}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.2.1.7\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3835}\def\ProcessingMode%
{xref-title-mode}}You can obtain the current values of parameters\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3834}}\Node%
{\def\Element%
{3834}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3834}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{168\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3838}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.2.1.8\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3839}\def\ProcessingMode%
{xref-title-mode}}You can reset the variate counter and other state variables this way\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3838}}\Node%
{\def\Element%
{3838}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3838}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{168\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3844}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.2.1.9\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3845}\def\ProcessingMode%
{xref-title-mode}}Finally, we have the InternalState protocol methods\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3844}}\Node%
{\def\Element%
{3844}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3844}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3850}}\Seq%
{}\Seq%
{}\Seq%
{}C.2.2.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3851}\def\ProcessingMode%
{xref-title-mode}}Saving And Restoring State\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3850}}\Node%
{\def\Element%
{3850}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3850}}\endNode{}\endLink{}\endPar{}\endSeq{}\endSeq{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}C.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3859}\def\ProcessingMode%
{xref-title-mode}}Advanced Usage Guide\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE.SECT1}}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE.SECT1}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE-CHOOSE.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}C.3.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3862}\def\ProcessingMode%
{xref-title-mode}}Choosing a Generator\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE-CHOOSE.SECT2}}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE-CHOOSE.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE-CHOOSE.SECT2}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3863}}\Seq%
{}\Seq%
{}\Seq%
{}C.3.1.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3864}\def\ProcessingMode%
{xref-title-mode}}Choosing A Generator\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3863}}\Node%
{\def\Element%
{3863}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3863}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3894}}\Seq%
{}\Seq%
{}\Seq%
{}C.3.1.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3895}\def\ProcessingMode%
{xref-title-mode}}Strategy For Using Random Generators\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3894}}\Node%
{\def\Element%
{3894}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3894}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3908}}\Seq%
{}\Seq%
{}\Seq%
{}C.3.1.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3909}\def\ProcessingMode%
{xref-title-mode}}Generator Quality\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3908}}\Node%
{\def\Element%
{3908}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3908}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{4380}}\Seq%
{}\Seq%
{}\Seq%
{}C.3.1.4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{4381}\def\ProcessingMode%
{xref-title-mode}}More generator data\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{4380}}\Node%
{\def\Element%
{4380}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{4380}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE-DEFAULT.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}C.3.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{4835}\def\ProcessingMode%
{xref-title-mode}}Default Generators for the Distributions\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE-DEFAULT.SECT2}}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE-DEFAULT.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE-DEFAULT.SECT2}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{4836}}\Seq%
{}\Seq%
{}\Seq%
{}C.3.2.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{4837}\def\ProcessingMode%
{xref-title-mode}}Random Library: Default Generators\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{4836}}\Node%
{\def\Element%
{4836}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{4836}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{4888}}\Seq%
{}\Seq%
{}\Seq%
{}C.3.2.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{4889}\def\ProcessingMode%
{xref-title-mode}}Utility Generator And Distributions\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{4888}}\Node%
{\def\Element%
{4888}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{4888}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE-TEST.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}C.3.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{4897}\def\ProcessingMode%
{xref-title-mode}}Random Library Test Programs\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE-TEST.SECT2}}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE-TEST.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE-TEST.SECT2}}\endNode{}\endLink{}\endPar{}\endSeq{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE.SECT1}}\Seq%
{}\Seq%
{}\Seq%
{}C.4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{4950}\def\ProcessingMode%
{xref-title-mode}}Resources for random number generation\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE.SECT1}}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE.SECT1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE.SECT1}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE-GEN.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}C.4.1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{4953}\def\ProcessingMode%
{xref-title-mode}}Generators\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE-GEN.SECT2}}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE-GEN.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE-GEN.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE-DIST.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}C.4.2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{5037}\def\ProcessingMode%
{xref-title-mode}}Distributions\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE-DIST.SECT2}}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE-DIST.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE-DIST.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE-WEB.SECT2}}\Seq%
{}\Seq%
{}\Seq%
{}C.4.3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{5085}\def\ProcessingMode%
{xref-title-mode}}Useful Web Sites\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE-WEB.SECT2}}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE-WEB.SECT2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE-WEB.SECT2}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{120\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.BIBLIOGRAPHY}}\Seq%
{}\Node%
{\def\Element%
{5098}\def\ProcessingMode%
{xref-title-mode}}Bibliography\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.BIBLIOGRAPHY}}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.BIBLIOGRAPHY}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.RANDOM.SGML.BIBLIOGRAPHY}}\endNode{}\endLink{}\endPar{}\endSeq{}\endSeq{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{bold}\def\Quadding%
{start}\def\sbNom%
{2.4\p@}\def\sbMin%
{2.4\p@}\def\sbMax%
{2.4\p@}\def\sbConditional%
{1}\def\saNom%
{2.4\p@}\def\saMin%
{2.4\p@}\def\saMax%
{2.4\p@}\def\saConditional%
{1}}\Link%
{\def\Label%
{SWARM.USER.SGML.BIBLIOGRAPY}}\Seq%
{}\Node%
{\def\Element%
{5403}\def\ProcessingMode%
{xref-title-mode}}Bibliography\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.SGML.BIBLIOGRAPY}}\Node%
{\def\Label%
{SWARM.USER.SGML.BIBLIOGRAPY}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.SGML.BIBLIOGRAPY}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{bold}\def\Quadding%
{start}\def\sbNom%
{2.4\p@}\def\sbMin%
{2.4\p@}\def\sbMax%
{2.4\p@}\def\sbConditional%
{1}\def\saNom%
{2.4\p@}\def\saMin%
{2.4\p@}\def\saMax%
{2.4\p@}\def\saConditional%
{1}}\Link%
{\def\Label%
{SWARM.USER.GENERATED.INDEX}}\Seq%
{}Index\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.GENERATED.INDEX}}\Node%
{\def\Label%
{SWARM.USER.GENERATED.INDEX}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.GENERATED.INDEX}}\endNode{}\endLink{}\endPar{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{bold}\def\Quadding%
{start}\def\sbNom%
{2.4\p@}\def\sbMin%
{2.4\p@}\def\sbMax%
{2.4\p@}\def\sbConditional%
{1}\def\saNom%
{2.4\p@}\def\saMin%
{2.4\p@}\def\saMax%
{2.4\p@}\def\saConditional%
{1}}\Link%
{\def\Label%
{SWARM.USER.COLOPHON}}\Seq%
{}Colophon\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.COLOPHON}}\Node%
{\def\Label%
{SWARM.USER.COLOPHON}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.COLOPHON}}\endNode{}\endLink{}\endPar{}\endSeq{}\endSpS{}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberFormat%
{i}\def\InputWhitespaceTreatment%
{collapse}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}List of Tables\def\HeadingText{%
List of Tables}%
\endHeadPar{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.QUALITY}}\Seq%
{}\Seq%
{}\Seq%
{}C-1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3912}\def\ProcessingMode%
{xref-title-mode}}Random Library: Generator Statistical Tests\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.QUALITY}}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.QUALITY}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.QUALITY}}\endNode{}\endLink{}\endPar{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.DATA}}\Seq%
{}\Seq%
{}\Seq%
{}C-2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{4385}\def\ProcessingMode%
{xref-title-mode}}Random Library: Generator Data\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.DATA}}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.DATA}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.DATA}}\endNode{}\endLink{}\endPar{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.DEFAULT}}\Seq%
{}\Seq%
{}\Seq%
{}C-3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{4843}\def\ProcessingMode%
{xref-title-mode}}Random Library: Default Generators\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.DEFAULT}}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.DEFAULT}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.DEFAULT}}\endNode{}\endLink{}\endPar{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberFormat%
{i}\def\InputWhitespaceTreatment%
{collapse}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}List of Figures\def\HeadingText{%
List of Figures}%
\endHeadPar{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{MODELING.FIGURE}}\Seq%
{}\Seq%
{}\Seq%
{}2-1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{181}\def\ProcessingMode%
{xref-title-mode}}Agent-based modeling\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{MODELING.FIGURE}}\Node%
{\def\Label%
{MODELING.FIGURE}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{MODELING.FIGURE}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{INTERFACE-VS-IMPLEMENTATION.FIGURE}}\Seq%
{}\Seq%
{}\Seq%
{}2-2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{270}\def\ProcessingMode%
{xref-title-mode}}Interface vs. Implementation\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{INTERFACE-VS-IMPLEMENTATION.FIGURE}}\Node%
{\def\Label%
{INTERFACE-VS-IMPLEMENTATION.FIGURE}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{INTERFACE-VS-IMPLEMENTATION.FIGURE}}\endNode{}\endLink{}\endPar{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{OBJC-BASICS.FIGURE}}\Seq%
{}\Seq%
{}\Seq%
{}3-1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{405}\def\ProcessingMode%
{xref-title-mode}}Objective C Basics\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{OBJC-BASICS.FIGURE}}\Node%
{\def\Label%
{OBJC-BASICS.FIGURE}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{OBJC-BASICS.FIGURE}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{818}}\Seq%
{}\Seq%
{}\Seq%
{}4-1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{819}\def\ProcessingMode%
{xref-title-mode}}Nested hierarchy of Swarms\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{818}}\Node%
{\def\Element%
{818}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{818}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SYSTEM-DIAGRAM.FIGURE}}\Seq%
{}\Seq%
{}\Seq%
{}4-2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{823}\def\ProcessingMode%
{xref-title-mode}}Swarm virtual computer\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SYSTEM-DIAGRAM.FIGURE}}\Node%
{\def\Label%
{SYSTEM-DIAGRAM.FIGURE}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SYSTEM-DIAGRAM.FIGURE}}\endNode{}\endLink{}\endPar{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{GUI-GRAPH.FIGURE}}\Seq%
{}\Seq%
{}\Seq%
{}5-1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{838}\def\ProcessingMode%
{xref-title-mode}}Line graphs (in this case, a time series)\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{GUI-GRAPH.FIGURE}}\Node%
{\def\Label%
{GUI-GRAPH.FIGURE}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{GUI-GRAPH.FIGURE}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{GUI-HISTOGRAM.FIGURE}}\Seq%
{}\Seq%
{}\Seq%
{}5-2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{841}\def\ProcessingMode%
{xref-title-mode}}Histograms\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{GUI-HISTOGRAM.FIGURE}}\Node%
{\def\Label%
{GUI-HISTOGRAM.FIGURE}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{GUI-HISTOGRAM.FIGURE}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{GUI-RASTER.FIGURE}}\Seq%
{}\Seq%
{}\Seq%
{}5-3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{844}\def\ProcessingMode%
{xref-title-mode}}Rasters of discrete two-dimensional data\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{GUI-RASTER.FIGURE}}\Node%
{\def\Label%
{GUI-RASTER.FIGURE}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{GUI-RASTER.FIGURE}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SIMPLEBUG-PROBES1}}\Seq%
{}\Seq%
{}\Seq%
{}5-4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{847}\def\ProcessingMode%
{xref-title-mode}}Example \Node%
{\def\Element%
{848}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeMaps\endSeq{}\endNode{} for the
          \Node%
{\def\Element%
{849}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}tutorial\endSeq{}\endNode{}
          \Node%
{\def\Element%
{850}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm\endSeq{}\endNode{} and \Node%
{\def\Element%
{851}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ObserverSwarm
          \endSeq{}\endNode{}\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SIMPLEBUG-PROBES1}}\Node%
{\def\Label%
{SIMPLEBUG-PROBES1}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SIMPLEBUG-PROBES1}}\endNode{}\endLink{}\endPar{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SIMPLEBUG-PROBES2}}\Seq%
{}\Seq%
{}\Seq%
{}12-1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2344}\def\ProcessingMode%
{xref-title-mode}}Combining two \Node%
{\def\Element%
{2345}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}VarProbe\endSeq{}\endNode{} and one
      \Node%
{\def\Element%
{2346}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MessageProbe\endSeq{}\endNode{}s on a
        \Node%
{\def\Element%
{2347}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeDisplay\endSeq{}\endNode{}\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SIMPLEBUG-PROBES2}}\Node%
{\def\Label%
{SIMPLEBUG-PROBES2}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SIMPLEBUG-PROBES2}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.PROBING.SWITCHEROO.FIGURE}}\Seq%
{}\Seq%
{}\Seq%
{}B-1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3616}\def\ProcessingMode%
{xref-title-mode}}Schematic of proto-object creation\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.PROBING.SWITCHEROO.FIGURE}}\Node%
{\def\Label%
{SWARM.PROBING.SWITCHEROO.FIGURE}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.PROBING.SWITCHEROO.FIGURE}}\endNode{}\endLink{}\endPar{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberFormat%
{i}\def\InputWhitespaceTreatment%
{collapse}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}List of Examples\def\HeadingText{%
List of Examples}%
\endHeadPar{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.03.OBJC-CLASS.EXAMPLE}}\Seq%
{}\Seq%
{}\Seq%
{}3-1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{410}\def\ProcessingMode%
{xref-title-mode}}Objective C class\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.03.OBJC-CLASS.EXAMPLE}}\Node%
{\def\Label%
{SWARM.USER.USER1.03.OBJC-CLASS.EXAMPLE}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.03.OBJC-CLASS.EXAMPLE}}\endNode{}\endLink{}\endPar{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.03.C-VS-OBJC.EXAMPLE}}\Seq%
{}\Seq%
{}\Seq%
{}3-2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{482}\def\ProcessingMode%
{xref-title-mode}}C vs Objective C\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.03.C-VS-OBJC.EXAMPLE}}\Node%
{\def\Label%
{SWARM.USER.USER1.03.C-VS-OBJC.EXAMPLE}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.03.C-VS-OBJC.EXAMPLE}}\endNode{}\endLink{}\endPar{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Label%
{SWARM.USER.USER1.03.JAVA-CLASS.EXAMPLE}}\Seq%
{}\Seq%
{}\Seq%
{}3-3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{502}\def\ProcessingMode%
{xref-title-mode}}Java class\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Label%
{SWARM.USER.USER1.03.JAVA-CLASS.EXAMPLE}}\Node%
{\def\Label%
{SWARM.USER.USER1.03.JAVA-CLASS.EXAMPLE}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.USER.USER1.03.JAVA-CLASS.EXAMPLE}}\endNode{}\endLink{}\endPar{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{2393}}\Seq%
{}\Seq%
{}\Seq%
{}12-1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2394}\def\ProcessingMode%
{xref-title-mode}}Generating a \Node%
{\def\Element%
{2395}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeMap\endSeq{}\endNode{}\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{2393}}\Node%
{\def\Element%
{2393}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2393}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{2432}}\Seq%
{}\Seq%
{}\Seq%
{}12-2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2433}\def\ProcessingMode%
{xref-title-mode}}Non-verbose \Node%
{\def\Element%
{2434}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeMap\endSeq{}\endNode{} creation\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{2432}}\Node%
{\def\Element%
{2432}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2432}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{2470}}\Seq%
{}\Seq%
{}\Seq%
{}12-3\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2471}\def\ProcessingMode%
{xref-title-mode}}Global setting precision in
          \Node%
{\def\Element%
{2472}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugObserverSwarm.m\endSeq{}\endNode{}\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{2470}}\Node%
{\def\Element%
{2470}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2470}}\endNode{}\endLink{}\endPar{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{2496}}\Seq%
{}\Seq%
{}\Seq%
{}12-4\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2497}\def\ProcessingMode%
{xref-title-mode}}Setting precision for individual probes in
          \Node%
{\def\Element%
{2498}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm.m\endSeq{}\endNode{}:\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{2496}}\Node%
{\def\Element%
{2496}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2496}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{2946}}\Seq%
{}\Seq%
{}\Seq%
{}14-1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{2947}\def\ProcessingMode%
{xref-title-mode}}Maps and keys\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{2946}}\Node%
{\def\Element%
{2946}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2946}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3363}}\Seq%
{}\Seq%
{}\Seq%
{}16-1\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3364}\def\ProcessingMode%
{xref-title-mode}}Using a standard \Node%
{\def\Element%
{3365}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}lispAppName\endSeq{}\endNode{} 
          instance\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3363}}\Node%
{\def\Element%
{3363}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3363}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\fWeight%
{medium}\def\Quadding%
{start}}\Link%
{\def\Element%
{3427}}\Seq%
{}\Seq%
{}\Seq%
{}16-2\endSeq{}. \endSeq{}\Node%
{\def\Element%
{3432}\def\ProcessingMode%
{xref-title-mode}}Creating a Lisp parameter file with an alternate name\endNode{}\endSeq{}\endLink{}\Leader%
{}.\endLeader{}\Link%
{\def\Element%
{3427}}\Node%
{\def\Element%
{3427}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3427}}\endNode{}\endLink{}\endPar{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\Seq%
{}\Seq%
{}\Seq%
{}\Seq%
{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSpS{}\endSpS{}\endSpS{}\Node%
{\def\Element%
{1}}\endNode{}\Node%
{\def\Element%
{2}}\endNode{}\Node%
{\def\Label%
{SWARM.USER.PREFACE}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{1}\def\PageNumberFormat%
{i}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{43}\def\ProcessingMode%
{hf-mode}}\Seq%
{}About this Guide\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{43}\def\ProcessingMode%
{hf-mode}}\Seq%
{}About this Guide\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\Node%
{\def\Element%
{43}\def\ProcessingMode%
{component-title-mode}}About this Guide\endNode{}\endSeq{}\def\HeadingText{%
About this Guide}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{43}}\endNode{}\Node%
{\def\Element%
{44}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} This Guide presents an overview of the Swarm simulation
    toolkit. It is intended to be used in conjunction with other
    materials, which include the sample programs and tutorials
    provided by the Swarm team and the \Node%
{\def\Element%
{45}}\Seq%
{\def\fPosture%
{italic}}Swarm Documentation
    Set\endSeq{}\endNode{}.  Since this is a user guide, it is intended to be
    less formal and not so encyclopaedic as the \Node%
{\def\Element%
{46}}\Seq%
{}\Seq%
{}\Node%
{\def\Element%
{47}}\Seq%
{\def\fPosture%
{italic}}Reference Guide to Swarm\endSeq{}\endNode{}\endSeq{}\Seq%
{} (http://www.santafe.edu/projects/swarm/swarmdocs/refbook/refbook.html)\endSeq{}\endSeq{}\endNode{}. When there
    is any doubt, the \Node%
{\def\Element%
{48}}\Seq%
{\def\fPosture%
{italic}}Reference Guide\endSeq{}\endNode{} (and the
    source code itself) is the final, most appropriate,
    authority.\endPar{}\endNode{}\Node%
{\def\Element%
{49}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{50}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{51}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{52}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{53}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Part I. \endSeq{}\endNode{}\Node%
{\def\Element%
{54}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}An overview of Swarm and a brief
          primer on Swarm object-oriented programming using Objective
          C and Java.  \Node%
{\def\Element%
{55}\def\ProcessingMode%
{listitem-content-mode}}\DisplayGroup%
{\def\StartIndent%
{79.6\p@}\def\StartIndentFactor%
{0}\def\fFamName{Arial}\def\fSize%
{9\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\DisplayGroup%
{}\Par%
{\def\FirstLineStartIndent%
{-21.6\p@}\def\FirstLineStartIndentFactor%
{0}}\LineField%
{\def\FieldWidth%
{21.6\p@}\def\FieldWidthFactor%
{0}}\insertExternalGraphic%
{\def\EntitySystemId%
{figs/important.eps}\def\NotationSystemId%
{}\def\EscapementDirection%
{false}\def\PositionPointX%
{0\p@}\def\PositionPointXFactor%
{0}\def\PositionPointY%
{0\p@}\def\PositionPointYFactor%
{0}}\endLineField{}At the time of writing only Part I
          has been written from a joint Objective C/Java perspective,
          subsequent Parts assume you are using the Objective C
          version of Swarm, a limitation we hope to rectify in future
          versions of this
          \Node%
{\def\Element%
{57}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fPosture%
{italic}}Guide\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{58}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{59}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{60}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Part II. \endSeq{}\endNode{}\Node%
{\def\Element%
{61}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}A reprise on the Swarm tutorial
          package, explaining in-depth various non-obvious features of
          Swarm coding.  As previously noted, the present this only
          covers the Objective C version \endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{62}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{63}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{64}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Part III. \endSeq{}\endNode{}\Node%
{\def\Element%
{65}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Advanced Topics: as you might
          guess, not for the uninitiated, these are important topics
          you will need to know to become a competent in using the Swarm
          libraries.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{66}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The inspiration for this Guide was provided by
    \Node%
{\def\Element%
{67}}\Seq%
{}Benedikt Stefansson\endSeq{}\endNode{}
    \Node%
{\def\Element%
{70}}\Seq%
{}<\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}benedikt@post.com\endSeq{}>\endSeq{}\endNode{}, who prepared a series of
    lectures for the 1998 and 1999 SwarmFests.  Benedikt generated a
    series of slides and illustrations and many of them have been
    adapted for this Guide. He has also provided help in the form of
    sample code and advice about many topics.\endPar{}\endNode{}\Node%
{\def\Element%
{71}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Conventions used in this document:\endPar{}\endNode{}\Node%
{\def\Element%
{72}}\DisplayGroup%
{\def\StartIndent%
{69.6\p@}\def\StartIndentFactor%
{0}\def\fFamName{Arial}\def\fSize%
{9\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\DisplayGroup%
{}\Par%
{\def\FirstLineStartIndent%
{-21.6\p@}\def\FirstLineStartIndentFactor%
{0}}\LineField%
{\def\FieldWidth%
{21.6\p@}\def\FieldWidthFactor%
{0}}\insertExternalGraphic%
{\def\EntitySystemId%
{figs/note.eps}\def\NotationSystemId%
{}\def\EscapementDirection%
{false}\def\PositionPointX%
{0\p@}\def\PositionPointXFactor%
{0}\def\PositionPointY%
{0\p@}\def\PositionPointYFactor%
{0}}\endLineField{}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}\Node%
{\def\Element%
{73}\def\ProcessingMode%
{xref-title-mode}}Note\endNode{}\endSeq{}\endPar{}\Node%
{\def\Element%
{73}}\endNode{}\Node%
{\def\Element%
{74}}\Par%
{\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Interesting fact(s), not necessarily of vital
      significance to the user.\endPar{}\endNode{}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{75}}\DisplayGroup%
{\def\StartIndent%
{69.6\p@}\def\StartIndentFactor%
{0}\def\fFamName{Arial}\def\fSize%
{9\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\DisplayGroup%
{}\Par%
{\def\FirstLineStartIndent%
{-21.6\p@}\def\FirstLineStartIndentFactor%
{0}}\LineField%
{\def\FieldWidth%
{21.6\p@}\def\FieldWidthFactor%
{0}}\insertExternalGraphic%
{\def\EntitySystemId%
{figs/tip.eps}\def\NotationSystemId%
{}\def\EscapementDirection%
{false}\def\PositionPointX%
{0\p@}\def\PositionPointXFactor%
{0}\def\PositionPointY%
{0\p@}\def\PositionPointYFactor%
{0}}\endLineField{}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}\Node%
{\def\Element%
{76}\def\ProcessingMode%
{xref-title-mode}}Tip\endNode{}\endSeq{}\endPar{}\Node%
{\def\Element%
{76}}\endNode{}\Node%
{\def\Element%
{77}}\Par%
{\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}A coding tip, a suggested convention to adopt or
      suggested usage.\endPar{}\endNode{}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{78}}\DisplayGroup%
{\def\StartIndent%
{69.6\p@}\def\StartIndentFactor%
{0}\def\fFamName{Arial}\def\fSize%
{9\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\DisplayGroup%
{}\Par%
{\def\FirstLineStartIndent%
{-21.6\p@}\def\FirstLineStartIndentFactor%
{0}}\LineField%
{\def\FieldWidth%
{21.6\p@}\def\FieldWidthFactor%
{0}}\insertExternalGraphic%
{\def\EntitySystemId%
{figs/important.eps}\def\NotationSystemId%
{}\def\EscapementDirection%
{false}\def\PositionPointX%
{0\p@}\def\PositionPointXFactor%
{0}\def\PositionPointY%
{0\p@}\def\PositionPointYFactor%
{0}}\endLineField{}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}\Node%
{\def\Element%
{79}\def\ProcessingMode%
{xref-title-mode}}Important\endNode{}\endSeq{}\endPar{}\Node%
{\def\Element%
{79}}\endNode{}\Node%
{\def\Element%
{80}}\Par%
{\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Important fact(s) you should know before proceeding
      to the next section.\endPar{}\endNode{}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{81}}\DisplayGroup%
{\def\StartIndent%
{69.6\p@}\def\StartIndentFactor%
{0}\def\fFamName{Arial}\def\fSize%
{9\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\DisplayGroup%
{}\Par%
{\def\FirstLineStartIndent%
{-21.6\p@}\def\FirstLineStartIndentFactor%
{0}}\LineField%
{\def\FieldWidth%
{21.6\p@}\def\FieldWidthFactor%
{0}}\insertExternalGraphic%
{\def\EntitySystemId%
{figs/caution.eps}\def\NotationSystemId%
{}\def\EscapementDirection%
{false}\def\PositionPointX%
{0\p@}\def\PositionPointXFactor%
{0}\def\PositionPointY%
{0\p@}\def\PositionPointYFactor%
{0}}\endLineField{}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}\Node%
{\def\Element%
{82}\def\ProcessingMode%
{xref-title-mode}}Caution\endNode{}\endSeq{}\endPar{}\Node%
{\def\Element%
{82}}\endNode{}\Node%
{\def\Element%
{83}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}A note of caution, generally regarding a changed
      usage, deprecated functionality or other compatibility
      issue.\endPar{}\endNode{}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{84}}\DisplayGroup%
{\def\StartIndent%
{69.6\p@}\def\StartIndentFactor%
{0}\def\fFamName{Arial}\def\fSize%
{9\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\DisplayGroup%
{}\Par%
{\def\FirstLineStartIndent%
{-21.6\p@}\def\FirstLineStartIndentFactor%
{0}}\LineField%
{\def\FieldWidth%
{21.6\p@}\def\FieldWidthFactor%
{0}}\insertExternalGraphic%
{\def\EntitySystemId%
{figs/warning.eps}\def\NotationSystemId%
{}\def\EscapementDirection%
{false}\def\PositionPointX%
{0\p@}\def\PositionPointXFactor%
{0}\def\PositionPointY%
{0\p@}\def\PositionPointYFactor%
{0}}\endLineField{}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}\Node%
{\def\Element%
{85}\def\ProcessingMode%
{xref-title-mode}}Warning\endNode{}\endSeq{}\endPar{}\Node%
{\def\Element%
{85}}\endNode{}\Node%
{\def\Element%
{86}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Vital information that a user needs
      to be aware of before proceeding.\endPar{}\endNode{}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.PART}}\Seq%
{}\Seq%
{}\SpS%
{\def\PageNColumns%
{1}\def\InputWhitespaceTreatment%
{collapse}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{}
\SpSOtherBackRightHeader%
{}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{}
\SpSOtherFrontRightHeader%
{}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{}
\SpSFirstFrontRightHeader%
{}\Par%
{\def\LineSpacing%
{1\p@}\def\LineSpacingFactor%
{0}}\endPar{}\Seq%
{}\Node%
{\def\Element%
{88}\def\ProcessingMode%
{part-titlepage-recto-mode}}\Par%
{\def\fSize%
{24.883\p@}\def\LineSpacing%
{32.348\p@}\def\LineSpacingFactor%
{0}\def\Quadding%
{center}\def\fFamName{Arial}\def\fWeight%
{bold}\def\sbNom%
{18.662\p@}\def\sbMin%
{18.662\p@}\def\sbMax%
{18.662\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Part I. Basic Concepts\endPar{}\endNode{}\endSeq{}\endSpS{}\endSeq{}\Node%
{\def\Element%
{88}}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.01.CHAPTER}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{1}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{90}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 1. Introduction\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{90}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 1. Introduction\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Chapter 1. \Seq%
{}\Node%
{\def\Element%
{90}\def\ProcessingMode%
{component-title-mode}}Introduction\endNode{}\endSeq{}\def\HeadingText{%
Chapter 1. Introduction}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{90}}\endNode{}\Node%
{\def\Element%
{91}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The Swarm project was started in 1994 by Chris Langton, then
    at \Node%
{\def\Element%
{92}}\Seq%
{}\Seq%
{}Santa Fe Institute\endSeq{}\Seq%
{} (http://www.santafe.edu)\endSeq{}\endSeq{}\endNode{}
     (\Node%
{\def\Element%
{93}}\Seq%
{}SFI\endSeq{}\endNode{})in New Mexico.  It is currently based at
    the non-for-profit organization, \Node%
{\def\Element%
{94}}\Seq%
{}\Seq%
{}Swarm Development Group\endSeq{}\Seq%
{} (http://www.swarm.org)\endSeq{}\endSeq{}\endNode{} also
    based in Santa Fe, New Mexico.  The aim was to develop both a
    vocabulary and a set of standard computer tools for the
    development of multi-agent simulation models (so-called
    \Node%
{\def\Element%
{95}}\Seq%
{}ABM\endSeq{}\endNode{}s, short for Agent-Based Models).  Armed
    with this framework, researchers are able to focus on the
    substance of the modeling task, avoiding some of the complicated
    details of computer coding.\endPar{}\endNode{}\Node%
{\def\Element%
{96}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The Swarm project has benefitted from the contributions of
    many programmers, including Roger Burkhart, Nelson Minar, Manor
    Askenazi, Glen Ropella, Sven Thommesen, Marcus Daniels, Alex
    Lancaster, Vladimir Jojic, and Irene Lee. \endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.01-FACTS.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}1.1. \Node%
{\def\Element%
{98}\def\ProcessingMode%
{xref-title-mode}}Basic Facts About Swarm\endNode{}\def\HeadingText{%
1.1. Basic Facts About Swarm}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{98}}\endNode{}\Node%
{\def\Element%
{99}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{102}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Swarm is a collection of software libraries which provide
      support for simulation programming. Among the most prominent
      features are the following.

    \Node%
{\def\Element%
{103}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{104}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{105}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{106}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Swarm Code is
          Object-Oriented. \endSeq{}\endNode{}\Node%
{\def\Element%
{107}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}The swarm
          libraries are written in a computer language called
          "Objective-C", a superset of the C language. Objective-C
          adds the ability to create software "classes" from which
          individual instances can be created.  These instances are
          self-contained entities, and the terminology of
          object-oriented programming turns out to be very well suited
          to discussions of agent-based models.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{108}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{109}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{110}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Swarm Programs are Hierarchical. \endSeq{}\endNode{}\Node%
{\def\Element%
{111}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Most swarm applications have a structure that
            roughly goes like this.  First, a top level--often called
            the "observer swarm"--is created.  That layer creates
            screen displays and it also creates the level below it,
            which is called the "model swarm".  The model swarm in
            turn creates the individual agents, schedulestheir
            activities, collects information about them and relays
            that information when the observer swarm needs it. This
            terminology is not required by Swarm, but its use does
            facilitate it. \endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{112}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{113}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{114}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Swarm Provides Many Handy Tools. \endSeq{}\endNode{}\Node%
{\def\Element%
{115}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}As we shall see in later sections, the Swarm
            libraries provide a number of convenient pieces of code
            that will facilitate the design of an agent-based
            model. These tools facilitate the management of memory,
            the maintenance of lists, scheduling of actions, and many
            other chores.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}
    \endPar{}\endNode{}\Node%
{\def\Element%
{116}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} Users build simulations by incorporating Swarm objects in
      their own programs.  Users are encouraged to study a number of
      tutorial examples in order to make full use of the Swarm
      libraries and the strategy of modeling that inspires
      them.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.01-TARGET.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}1.2. \Node%
{\def\Element%
{118}\def\ProcessingMode%
{xref-title-mode}}Swarm is a Dynamic Platform\endNode{}\def\HeadingText{%
1.2. Swarm is a Dynamic Platform}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{118}}\endNode{}\Node%
{\def\Element%
{119}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Swarm is \Node%
{\def\Element%
{120}}\Seq%
{}\Seq%
{}        \Node%
{\def\Element%
{121}}\Seq%
{\def\fPosture%
{italic}}free software\endSeq{}\endNode{}\endSeq{}\Seq%
{} (http://www.gnu.org/philosophy/free-sw.html)\endSeq{}\endSeq{}\endNode{} 
      \Node%
{\def\Element%
{122}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}1\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{123}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}1. \endLineField{}sometimes referred to as
        "open source" source software, see the \Node%
{\def\Element%
{124}}\Seq%
{}\Seq%
{}Open Source
        Definition\endSeq{}\Seq%
{} (http://www.opensource.org/osd.html)\endSeq{}\endSeq{}\endNode{}\endPar{}\endNode{}}\endSeq{}\endNode{}.  

        The current Swarm distribution is effectively
        \Node%
{\def\Element%
{125}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}2\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{126}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}2. \endLineField{}The core Swarm libraries are currently
        released under the \Node%
{\def\Element%
{127}}\Seq%
{}\Seq%
{}LGPL\endSeq{}\Seq%
{} (http://www.gnu.org/copyleft/lgpl.html)\endSeq{}\endSeq{}\endNode{}, but
        the standard binary distributions generally include many GPLed
        support components, which effectively mean that Swarm is
        GPLed.\endPar{}\endNode{}}\endSeq{}\endNode{}
      released under the GNU General Public License (\Node%
{\def\Element%
{128}}\Seq%
{}\Seq%
{}GPL\endSeq{}\Seq%
{} (http://www.gnu.org/copyleft/gpl.html)\endSeq{}\endSeq{}\endNode{}).  The
      free software model of software development is particularly
      effective for a tool like Swarm, for both theoretical and
      practical reasons:
      \Node%
{\def\Element%
{129}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{130}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{131}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{132}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Complete Observability. \endSeq{}\endNode{}\Node%
{\def\Element%
{133}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}With full
            source available, if necessary, the modeller can always
            track the execution of the simulation right down to the
            operating system level.  This is very important for
            reproducibility, and ultimately allows you to go about
            proving (in an abstract mathematical sense) a simulation's
            `correctness'.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{134}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{135}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{136}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Developer Mind-Share. \endSeq{}\endNode{}\Node%
{\def\Element%
{137}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}More
            practically, Swarm is open source so that we can harness
            developer mind-share: more technically minded users can
            identify bugs, write patches, implement new features
            generally contribute to the evolution of Swarm.  These are
            all identical to the reasons that the GNU/Linux operating
            system has grown so fast (and is so robust)
            \Node%
{\def\Element%
{138}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5487}}[\Seq%
{}DiBona et. al. 1999\endSeq{}]\endLink{}\endNode{}.  As Swarm grows,
            more programmers, and technically curious modellers are
            becoming involved in the project.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}

    \endPar{}\endNode{}\Node%
{\def\Element%
{139}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The development work is being done by the \Node%
{\def\Element%
{140}}\Seq%
{}\Seq%
{}Swarm Development Group\endSeq{}\Seq%
{} (http://www.swarm.org)\endSeq{}\endSeq{}\endNode{},
      located in Santa Fe, New Mexico.  (The Swarm project relocated
      from the SFI at the end of October 1999).  Their results are
      periodically released on the Internet and users have access to
      the source code.  The creators fully intended for users to take
      the code, experiment with it, and propose changes and
      enhancements.  This open source strategy is designed to capture
      the contributions of a lively research community. When users
      make improvements in the libraries, they are encouraged to
      announce them to the community and make them available.  As a
      result of the interaction of the community and the Swarm team,
      the Swarm libraries are constantly being revised.\endPar{}\endNode{}\Node%
{\def\Element%
{141}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}To get an idea of how much things change, consider the brief
      history of the project. Swarm was originally intended for Unix
      operating systems that support the X Windows System.  The first
      beta version of Swarm was released in 1995.  In January 1997,
      version 1.0 was released to the public.  It would run on Solaris
      and Linux operating systems.  Quickly after that, minor releases
      followed that opened up Swarm to the DEC Alpha platform and
      other flavors of Unix.  In April 1998, the reach of Swarm again
      broadened, as version 1.1 was released and, with the help of the
      Cygnus Win32 package, Swarm could be used on the Microsoft
      Windows 95/NT (and now 98) operating systems.  In late 1999 the
      Swarm releases 2.0 and 2.0.1 introduced a Java layer for Swarm
      to enable Java programmers to access Swarm libraries and enabled
      the export of data through the HDF5 binary data format from
      NSCA.\endPar{}\endNode{}\Node%
{\def\Element%
{142}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Because Swarm does grow and change as a result of the
      complex interaction within a research community, its precise
      path for development is not predictable.  Current priorities for
      the Swarm team at the SDG include the further generalization of
      Swarm to be useful on a broader array of platforms and in
      conjunction with additional computer languages.  Prototype XML
      and Scheme layers for Swarm have been tested, for example.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.01-PREREQ.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}1.3. \Node%
{\def\Element%
{144}\def\ProcessingMode%
{xref-title-mode}}Prerequisites for Success with Swarm.\endNode{}\def\HeadingText{%
1.3. Prerequisites for Success with Swarm.}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{144}}\endNode{}\Node%
{\def\Element%
{145}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Swarm was originally conceived as a set of standardized
      methods for the design of multi-agent simulation models. One
      need not be a highly accomplished computer program to user the
      Swarm libraries.  In fact, as the installation process for Swarm
      becomes increasingly streamlined, it is quite easy for anyone
      with suitable hardware to test some of the sample
      applications. For people who have Windows 98/NT or Linux
      operating systems, compiled versions of the Swarm libraries are
      available and installation is quite painless\endPar{}\endNode{}\Node%
{\def\Element%
{146}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}However, it is not easy to create new Swarm
      applications. Doing so requires the creation of a computer
      program.  While one need not be an expert programmer, one must
      have a rudimentary understanding of vital computing
      concepts. The required knowledge will vary with the sort of
      model that one is intending to create, of course, but,\Node%
{\def\Element%
{147}}\Seq%
{\def\fPosture%
{italic}}      at the bare minumum\endSeq{}\endNode{}, users must have:

    \Node%
{\def\Element%
{148}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{149}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{150}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{} a basic understanding of computer programming\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{151}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{152}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{} and, at the time of writing, either of the two
      object-oriented programming languages, Java or Objective C
      \Node%
{\def\Element%
{153}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}3\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{154}\def\ProcessingMode%
{listitem-content-mode}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}3. \endLineField{}in the Objective C case, an understanding of
      the C computer language, is also helpful, since Objective C is a
      superset of the C language\endPar{}\endNode{}}\endSeq{}\endNode{}
          \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}
    \endPar{}\endNode{}\Node%
{\def\Element%
{155}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Java is a straightforward language to learn, and has the
      advantage of being a mainstream, well-supported language in
      terms of both tools and documentation.  Objective-C is, well,
      truly elegant and fun to use and people who know C say it is
      fairly easy to learn (C is also a highly useful language and it
      is relatively easy to learn).\endPar{}\endNode{}\Node%
{\def\Element%
{156}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} People who have not done computer
      programming will thus need to do some background preparation
      before they try to make a serious effort at building a Swarm
      model.\endPar{}\endNode{}\Node%
{\def\Element%
{157}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If you choose to implement your models in Objective C, we
      suggest that the first step is to find one of the many
      elementary guides to computing with C, such as \Node%
{\def\Element%
{158}}\Seq%
{\def\fPosture%
{italic}}The C Programming Language\endSeq{}\endNode{},
      \Node%
{\def\Element%
{159}}\Link%
{\def\Element%
{5426}}[\Seq%
{}Kernighan \& Ritchie, 1988\endSeq{}]\endLink{}\endNode{}.  Written by the
      authors of C, \Node%
{\def\Element%
{160}}\Seq%
{}Brian Kernighan\endSeq{}\endNode{} and \Node%
{\def\Element%
{163}}\Seq%
{}Dennis  Ritchie\endSeq{}\endNode{}, it is a truly readable and informative manual that
      all users ought to investigate.\endPar{}\endNode{}\Node%
{\def\Element%
{166}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If you choose to implement your models in Java, there are
    literally thousands of introductory programming-in-Java resources
    on the market, both in paper and electronic form (see \Node%
{\def\Element%
{167}}\Link%
{\def\Label%
{SWARM.USER.TECH-RESOURCES.SECT1}}\Seq%
{}Section \Seq%
{}A.1\endSeq{}\endSeq{}\endLink{}\endNode{} for some starting
    points).\endPar{}\endNode{}\Node%
{\def\Element%
{168}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}A manual with examples and exercises is vital.  These will
      teach the basics about writing code and compiling it into
      programs.\endPar{}\endNode{}\Node%
{\def\Element%
{169}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The Objective-C language is best learned from the online
      book \Node%
{\def\Element%
{170}}\Seq%
{\def\fPosture%
{italic}}Object Oriented Programming and the Objective C
      Language\endSeq{}\endNode{} \Node%
{\def\Element%
{171}}\Link%
{\def\Element%
{5455}}[\Seq%
{}NeXT, 1993\endSeq{}]\endLink{}\endNode{}.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.02.CHAPTER}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{173}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 2. Programming and Simulation\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{173}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 2. Programming and Simulation\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Chapter 2. \Seq%
{}\Node%
{\def\Element%
{173}\def\ProcessingMode%
{component-title-mode}}Programming and Simulation\endNode{}\endSeq{}\def\HeadingText{%
Chapter 2. Programming and Simulation}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{173}}\endNode{}\Node%
{\def\Element%
{174}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{176}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{179}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}    Swarm is designed to help researchers build models in which
    low-level actors interact (often called "complex systems"). The
    researcher has to give content to "agents," possibly by thinking
    of them as honey bees, investors, trees, or (the ubiquitous)
    "bugs."  One research goal is to discern overall patterns that
    emerge from these detailed behaviors at the individual
    level. 
  \endPar{}\endNode{}\Node%
{\def\Label%
{MODELING.FIGURE}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Node%
{\def\Element%
{181}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Figure 2-1. \endSeq{}Agent-based modeling\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{181}}\endNode{}\Node%
{\def\Element%
{182}}\Par%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertExternalGraphic%
{\def\DisplayAlignment%
{center}\def\IsDisplay%
{1}\def\ScaleType%
{false}\def\ScaleX%
{1}\def\ScaleY%
{1}\def\EntitySystemId%
{<OSFILE>/swarm/alex/src/Swarm/swarmguide/figs/modeling.eps}\def\NotationSystemId%
{EPS}}\endPar{}\endNode{}\endPar{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{183}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{185}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Object oriented programming is ideally suited to represent
    models of this sort. As we shall see, the objects are
    self-contained.  Objects may be designed to convey information
    (answer questions) from other objects and also they can retain,
    categorize, and summarize information.\endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.02-OBJ.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}2.1. \Node%
{\def\Element%
{187}\def\ProcessingMode%
{xref-title-mode}}What is an Object?\endNode{}\def\HeadingText{%
2.1. What is an Object?}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{187}}\endNode{}\Node%
{\def\Element%
{188}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{191}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{195}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}A careful study of either of the object-oriented programming
      languages (Java or Objective-C) is required before any
      significant progress can be made in building a Swarm model. The
      material presented here is intended as a summary or reminder of
      such a study, rather than a substitute.\endPar{}\endNode{}\Node%
{\def\Element%
{196}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}An object consists of two kinds of information\endPar{}\endNode{}\Node%
{\def\Element%
{197}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{198}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{199}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{200}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Variables. \endSeq{}\endNode{}\Node%
{\def\Element%
{201}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}The list of
          variables summarizes the "state" of the agent--its age,
          wealth, its ability, and so forth.  These variables may be
          of any type that is allowed in C, such as integer
          (\Node%
{\def\Element%
{202}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}int\endSeq{}\endNode{}), floating-point number
          (\Node%
{\def\Element%
{203}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}float\endSeq{}\endNode{}), an array, a pointer, and so forth.
          These variables might also be of type \Node%
{\def\Element%
{204}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}id\endSeq{}\endNode{}, which
          means they might also be instances of classes, and;\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{205}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{206}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{207}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Methods. \endSeq{}\endNode{}\Node%
{\def\Element%
{208}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{} Methods determine what the
            object can do. Typically, there will be methods that
            receive information from the "outside world", methods that
            send messages to the outside, and methods that process
            information.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{209}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Variables and methods are given meaningful names, so code is
      easier to read. The custom is to run words together to make
      meaningful tags, such as \Node%
{\def\Element%
{210}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}goToStore\endSeq{}\endNode{} or
      \Node%
{\def\Element%
{211}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}goHome\endSeq{}\endNode{}.\endPar{}\endNode{}\Node%
{\def\Element%
{212}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Objects are created through a process called
      "instantiation."  Put tersely, code is written in "classes" and
      then objects are created as instances of their classes. The
      varibles that an instance, or object, keeps inside itself are
      called "instance variables".  The information contained inside
      instance variables is available to all methods inside that
      object. If one of the methods in an object needs to have
      "private" information that is not available to other methods in
      the object, then "method variables" can be created to hold that
      information.\endPar{}\endNode{}\Node%
{\def\Element%
{213}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In both Objective-C and Java, the term
      \Node%
{\def\Element%
{214}}\Seq%
{\def\fPosture%
{italic}}message\endSeq{}\endNode{} is often used to refer to an
      instruction that tells an object to carry out one of its
      methods. (For readers more familiar to C++, the term
      \Node%
{\def\Element%
{215}}\Seq%
{\def\fPosture%
{italic}}member function\endSeq{}\endNode{}, refers to the same thing
      as the term method).  Here is an example of a message that tells
      an object known as \Node%
{\def\Element%
{216}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}bobDole\endSeq{}\endNode{} to execute its
      method \Node%
{\def\Element%
{217}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}runForPresident\endSeq{}\endNode{}.\endPar{}\endNode{}\Node%
{\def\Element%
{218}}\Node%
{\def\Element%
{219}\def\ProcessingMode%
{proglist-objc-java-mode}}\Table%
{\def\DisplayAlignment%
{start}\def\TableWidth%
{full}}\TablePart%
{}\insertTableColumn%
{\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{1}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\TeXTable%
{420\p@}{2}{L{210\p@}L{210\p@}}%
\TablePartHeader%
{}\Node%
{\def\Element%
{220}\def\ProcessingMode%
{proglist-objc-java-mode}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Objective C example\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Java example\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}%
\endTablePartHeader{}\Hline%
\Node%
{\def\Element%
{224}\def\ProcessingMode%
{proglist-objc-java-mode}}\Node%
{\def\Element%
{224}\def\ProcessingMode%
{proglist-objc-java-mode}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{227}\def\ProcessingMode%
{proglist-objc-java-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}[bobDole runForPresident];\endPar{}\endNode{}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{229}\def\ProcessingMode%
{proglist-objc-java-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}bobDole.runForPresident();\endPar{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}\endNode{}%
\TablePartFooter%
{}\endTablePartFooter{}\endTeXTable{}%
\endTablePart{}%
\endTable{}%
\endNode{}\endNode{}\Node%
{\def\Element%
{230}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In Objective C, some methods have parameters that specify
      details and they are added with colons (\Node%
{\def\Element%
{231}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}:\endSeq{}\endNode{})
      after the name of the method to be executed.  In Java, the
      entire method name is listed \Node%
{\def\Element%
{232}}\Seq%
{\def\fPosture%
{italic}}before\endSeq{}\endNode{} the
      parameters are given \Node%
{\def\Element%
{233}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}1\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{234}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}1. \endLineField{}In our Java example we use
      a dollar sign (\Node%
{\def\Element%
{235}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{6.75\p@}}\$\endSeq{}\endNode{}) inline between the parts of
      the method that are separated in the Objective C case.  This is
      purely a convention introduced to stay as close to conventions
      adopted by the Java Swarm libraries.  This is in no way enforced
      by the Java language itself.\endPar{}\endNode{}}\endSeq{}\endNode{}.
      For example, if the method \Node%
{\def\Element%
{236}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}runForPresident\endSeq{}\endNode{}
      required additional parameters, such as the year and the name of
      the runningmate, then the message might look like so:\endPar{}\endNode{}\Node%
{\def\Element%
{237}}\Node%
{\def\Element%
{238}\def\ProcessingMode%
{proglist-objc-java-mode}}\Table%
{\def\DisplayAlignment%
{start}\def\TableWidth%
{full}}\TablePart%
{}\insertTableColumn%
{\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{1}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\TeXTable%
{420\p@}{2}{L{210\p@}L{210\p@}}%
\TablePartHeader%
{}\Node%
{\def\Element%
{239}\def\ProcessingMode%
{proglist-objc-java-mode}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Objective C example\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Java example\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}%
\endTablePartHeader{}\Hline%
\Node%
{\def\Element%
{243}\def\ProcessingMode%
{proglist-objc-java-mode}}\Node%
{\def\Element%
{243}\def\ProcessingMode%
{proglist-objc-java-mode}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{246}\def\ProcessingMode%
{proglist-objc-java-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}[bobDole runForPresident:2000 with: RossPerot];\endPar{}\endNode{}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{248}\def\ProcessingMode%
{proglist-objc-java-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}bobDole.runForPresident\$with (2000, RossPerot);\endPar{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}\endNode{}%
\TablePartFooter%
{}\endTablePartFooter{}\endTeXTable{}%
\endTablePart{}\endNode{}%
\endTable{}%
\endNode{}\endNode{}\Node%
{\def\Element%
{249}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}We will have plenty of additional examples in the rest of
      the Guide.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-TYPES.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}2.2. \Node%
{\def\Element%
{251}\def\ProcessingMode%
{xref-title-mode}}The Variety of Objects\endNode{}\def\HeadingText{%
2.2. The Variety of Objects}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{251}}\endNode{}\Node%
{\def\Element%
{252}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In a Swarm model, there can be many types of agents (see
      \Node%
{\def\Element%
{253}}\Link%
{\def\Label%
{MODELING.FIGURE}}\Seq%
{}Figure \Seq%
{}2-1\endSeq{}\endSeq{}\endLink{}\endNode{}) Obviously, if a model
      is going to describe honey bees, it has to have honey bee
      agents. It will also have objects that represent other actors in
      the model, and not all other actors are animate.  There might be
      other insects and bears, but there will also be objects that
      represent the environment (trees, rainstorms, etc).  The model
      will typically also have objects that facilitate the modeling
      process and collect information about the simulation and relay
      it to the researcher. \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-ADV.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}2.3. \Node%
{\def\Element%
{255}\def\ProcessingMode%
{xref-title-mode}}The Advantages of Object Oriented Programming\endNode{}\def\HeadingText{%
2.3. The Advantages of Object Oriented Programming}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{255}}\endNode{}\Node%
{\def\Element%
{256}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Object oriented programming (\Node%
{\def\Element%
{257}}\Seq%
{}OOP\endSeq{}\endNode{})is well
      suited to describe autonomous agents,so it should have appeal to
      scientists and modelers on that basis alone.  However, that is
      not the end of the subject.  OOP it has virtues that are equally
      important to computer programmers. OOP, as it is found in
      Objective-C, is not exactly the same as OOP in C++ or Java, but
      these languages have some significant features in common.  The
      features we emphasize here are encapsulation and
      inheritance. \endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-ADV-ENCAP.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}2.3.1. \Node%
{\def\Element%
{263}\def\ProcessingMode%
{xref-title-mode}}Encapsulation\endNode{}\def\HeadingText{%
2.3.1. Encapsulation}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{259}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{263}}\endNode{}\Node%
{\def\Element%
{264}}\BOX%
{\def\BoxType%
{border}\def\LineThickness%
{1\p@}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{0\p@}\def\EndIndentFactor%
{0}\def\IsDisplay%
{1}}\DisplayGroup%
{\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{265}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} The values of the variables inside an object are
            private, unless methods are written to pass that
            information outside of the object.\endPar{}\endNode{}\endDisplayGroup{}\endBOX{}\endNode{}\Node%
{\def\Element%
{266}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This has both substantive and practical implications. The
      substantive importance is that the representation of an
      individual actor now presumes that the actor is a self-contained
      entity and that other actors do not automatically have access to
      all information inside that actor. Like humans, objects have to
      take effort to convey information to each other about their
      internal states. The practical advantages of encapsulation,
      however, are just as important.  Computer projects can be broken
      down into separable components (code for the classes) and when
      the code is finished, the details of what goes on inside each
      object may not be important to the programmer.  For example, if
      an object \Node%
{\def\Element%
{267}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}groceryStore\endSeq{}\endNode{} can respond to an
      message \Node%
{\def\Element%
{268}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}takeMoney\endSeq{}\endNode{}, and it gets the job
      done, we might not care how it does it.\endPar{}\endNode{}\Node%
{\def\Label%
{INTERFACE-VS-IMPLEMENTATION.FIGURE}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Node%
{\def\Element%
{270}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Figure 2-2. \endSeq{}Interface vs. Implementation\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{270}}\endNode{}\Node%
{\def\Element%
{271}}\Par%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertExternalGraphic%
{\def\DisplayAlignment%
{start}\def\IsDisplay%
{1}\def\ScaleType%
{false}\def\ScaleX%
{1}\def\ScaleY%
{1}\def\EntitySystemId%
{<OSFILE>/swarm/alex/src/Swarm/swarmguide/figs/interface-vs-implementation.eps}\def\NotationSystemId%
{EPS}}\endPar{}\endNode{}\endPar{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{272}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This is commonly referred to as the separation of
      "interface" from "implementation." While the interface declares
      what methods the object can execute, the implementation may
      remain hidden (see \Node%
{\def\Element%
{273}}\Link%
{\def\Label%
{INTERFACE-VS-IMPLEMENTATION.FIGURE}}\Seq%
{}Figure \Seq%
{}2-2\endSeq{}\endSeq{}\endLink{}\endNode{}), the user only
      has to be familiar with the interface of an object, not it's
      implementation\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.02-OBJ-ADV-INHERIT.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}2.3.2. \Node%
{\def\Element%
{279}\def\ProcessingMode%
{xref-title-mode}}Inheritance\endNode{}\def\HeadingText{%
2.3.2. Inheritance}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{275}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{279}}\endNode{}\Node%
{\def\Element%
{280}}\BOX%
{\def\BoxType%
{border}\def\LineThickness%
{1\p@}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{0\p@}\def\EndIndentFactor%
{0}\def\IsDisplay%
{1}}\DisplayGroup%
{\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{281}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Each subclass inherits all variables and methods of its
          superclass.\endPar{}\endNode{}\endDisplayGroup{}\endBOX{}\endNode{}\Node%
{\def\Element%
{282}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Inheritance works because code for each class designates
      that class as a subclass of a superclass.  For example, in the
      GNU Objective-C compiler used in the Swarm project, there is a
      most basic class, "object".  From the object class, the Swarm
      libraries create subclasses, and subclasses are created from
      them, and so forth until the programmer in a swarm project wants
      to create a new class of actors that is subclassed from
      \Node%
{\def\Element%
{283}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}SwarmObject\endSeq{}\endNode{}.  If the programmer needs to
      create several varieties of that class, there is no need to
      totally rewrite each one. Subclasses can be created that have as
      a base all variables and methods of the class but then new
      methods and variables can be added as well.\endPar{}\endNode{}\Node%
{\def\Element%
{284}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}When a method, say \Node%
{\def\Element%
{285}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}takeMoney\endSeq{}\endNode{}, exists in
        a class \Node%
{\def\Element%
{286}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Store\endSeq{}\endNode{}, and then a subclass is
        created, say \Node%
{\def\Element%
{287}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}GroceryStore\endSeq{}\endNode{}, then all
        objects instantiated from the subclass will respond to
        \Node%
{\def\Element%
{288}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}takeMoney\endSeq{}\endNode{}.  If the programmer wants to
        rewrite the \Node%
{\def\Element%
{289}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}takeMoney\endSeq{}\endNode{} method for
        \Node%
{\def\Element%
{290}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}GroceryStore\endSeq{}\endNode{}s, however, then the method
        can be revised inside the code for the subclass and then all
        instances of the \Node%
{\def\Element%
{291}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}GroceryStore\endSeq{}\endNode{} class
        will respond to \Node%
{\def\Element%
{292}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}takeMoney\endSeq{}\endNode{} in that
        specialized way.  The method inside the
        \Node%
{\def\Element%
{293}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}GroceryStore\endSeq{}\endNode{} subclass will override the
        super-class's definition of the method.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.02-DES.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}2.4. \Node%
{\def\Element%
{295}\def\ProcessingMode%
{xref-title-mode}}Discrete Event Simulation\endNode{}\def\HeadingText{%
2.4. Discrete Event Simulation}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{295}}\endNode{}\Node%
{\def\Element%
{296}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{299}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}A Swarm simulation proceeds in discrete time steps. Objects
      are created and then interact according to a scheduling
      mechanism.  As the simulation proceeds, the agents update their
      instance variables and they may be asked to report their state
      to the observer swarm layer of the simulation.\endPar{}\endNode{}\Node%
{\def\Element%
{300}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The modeling process in Swarm, then, is quite different from
      simulation modeling in a non-object oriented language, such as
      Fortran or Pascal.  These so-called "procedural languages" do
      not allow the modeler to take advantage of reusable classes
      through inheritance or the preservation of data allowed by
      encapsulation.  Here's an example of a simulation in a
      procedural language:\endPar{}\endNode{}\Node%
{\def\Element%
{301}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Node%
{\def\Element%
{302}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}Procedural language pseudo-code\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{302}}\endNode{}\Node%
{\def\Element%
{303}}\Seq%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}1. \endLineField{}\Node%
{\def\Element%
{305}}\Seq%
{\def\fWeight%
{bold}}get parameters\endSeq{}\endNode{}\endPar{}\endSeq{}\endNode{}\Node%
{\def\Element%
{306}}\Seq%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}2. \endLineField{}\Node%
{\def\Element%
{308}}\Seq%
{\def\fWeight%
{bold}}initialize\endSeq{}\endNode{}\Node%
{\def\Element%
{309}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}2\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{310}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}2. \endLineField{}Generally
              sets up data structures and support for output.\endPar{}\endNode{}}\endSeq{}\endNode{}
        \endPar{}\endSeq{}\endNode{}\Node%
{\def\Element%
{311}}\Seq%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}3. \endLineField{}\Node%
{\def\Element%
{313}}\Seq%
{\def\fWeight%
{bold}}for 1 to timesteps do:\endSeq{}\endNode{}\endPar{}\Node%
{\def\Element%
{314}}\DisplayGroup%
{\def\StartIndent%
{86\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{315}}\Seq%
{\def\StartIndent%
{104\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}a. \endLineField{}\Node%
{\def\Element%
{317}}\Seq%
{\def\fWeight%
{bold}}for 1 to num\char95{}agents do:\endSeq{}\endNode{}\endPar{}\Node%
{\def\Element%
{318}}\DisplayGroup%
{\def\StartIndent%
{124\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{319}}\Seq%
{\def\StartIndent%
{144\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-20\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{20\p@}\def\FieldWidthFactor%
{0}}i. \endLineField{}\Node%
{\def\Element%
{321}}\Seq%
{\def\fWeight%
{bold}}agent-i-do-something\endSeq{}\endNode{}
                  \Node%
{\def\Element%
{322}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}3\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{323}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}3. \endLineField{}Here must provide data structure to save
                      agent's state and implement behavior\endPar{}\endNode{}}\endSeq{}\endNode{}
                \endPar{}\endSeq{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endNode{}\Node%
{\def\Element%
{324}}\Seq%
{\def\StartIndent%
{104\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}b. \endLineField{}\Node%
{\def\Element%
{326}}\Seq%
{\def\fWeight%
{bold}}show state\endSeq{}\endNode{}          
              \Node%
{\def\Element%
{327}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}4\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{328}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}4. \endLineField{}Implementation of output often left to the programmer\endPar{}\endNode{}}\endSeq{}\endNode{}
            \endPar{}\endSeq{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endNode{}\Node%
{\def\Element%
{329}}\Seq%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}4. \endLineField{}\Node%
{\def\Element%
{331}}\Seq%
{\def\fWeight%
{bold}}quit\endSeq{}\endNode{}\endPar{}\endSeq{}\endNode{}\endPar{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.03.CHAPTER}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{335}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 3. Nuts and Bolts of Object-Oriented Programming\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{335}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 3. Nuts and Bolts of Object-Oriented Programming\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Chapter 3. \Seq%
{}\Node%
{\def\Element%
{335}\def\ProcessingMode%
{component-title-mode}}Nuts and Bolts of Object-Oriented Programming\endNode{}\endSeq{}\def\HeadingText{%
Chapter 3. Nuts and Bolts of Object-Oriented Programming}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{333}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{335}}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}3.1. \Node%
{\def\Element%
{337}\def\ProcessingMode%
{xref-title-mode}}Multilanguage support and Swarm\endNode{}\def\HeadingText{%
3.1. Multilanguage support and Swarm}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{337}}\endNode{}\Node%
{\def\Element%
{338}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Swarm is not a single application that is `turned on'. Swarm
      is a set of libraries that you can pick and choose features
      from. In order to use the Swarm libraries, it is necessary to
      create or use code that calls Swarm features.\endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG-OBJC.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}3.1.1. \Node%
{\def\Element%
{342}\def\ProcessingMode%
{xref-title-mode}}Objective C\endNode{}\def\HeadingText{%
3.1.1. Objective C}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{340}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{342}}\endNode{}\Node%
{\def\Element%
{343}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Until recently, there was one way to use Swarm features:
        write and compile a program in Objective C. This is a flexible
        and way to write a model using Swarm. Objective C models tend to
        have good performance because they are compiled by a native code
        optimizing compiler, namely
        \Node%
{\def\Element%
{344}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}GCC\endSeq{}\endNode{}.\endPar{}\endNode{}\Node%
{\def\Element%
{345}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Objective C was created by Brad Cox 
        \Node%
{\def\Element%
{346}}\Link%
{\def\Element%
{5455}}[\Seq%
{}NeXT, 1993\endSeq{}]\endLink{}\endNode{}. The aim was to create
        an elegant, object-oriented extension of C in the style of the
        Smalltalk language \Node%
{\def\Element%
{347}}\Link%
{\def\Element%
{5407}}[\Seq%
{}Goldberg \& Robson, 1989\endSeq{}]\endLink{}\endNode{}.  
        Objective C was used most intensively in the design of the
        NeXT computer operating system, which is now owned by Apple
        and is basis of Apple's runtime environment WebObjects.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG-JAVA.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}3.1.2. \Node%
{\def\Element%
{351}\def\ProcessingMode%
{xref-title-mode}}Java\endNode{}\def\HeadingText{%
3.1.2. Java}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{349}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{351}}\endNode{}\Node%
{\def\Element%
{352}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Since Swarm 2.0, modellers can use Java. For new users of
        Swarm, writing models in Java is considerably harder to get
        wrong. Java is also a more attractive languages for new users
        to learn since it is a popular language that has benefits
        outside of Swarm modelling.\endPar{}\endNode{}\Node%
{\def\Element%
{353}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Java was created by Sun Microsystems, initially to provide
        a platform-independent layer or interface for embedded devices
        (such as set-top boxes for digital television) and was
        originally known as \Node%
{\def\Element%
{354}}\Seq%
{\def\fPosture%
{italic}}Oak\endSeq{}\endNode{}.  With the
        advent and growth of the world wide web from 1992 onwards, Oak
        was renamed \Node%
{\def\Element%
{355}}\Seq%
{\def\fPosture%
{italic}}Java\endSeq{}\endNode{} and redirected at the
        market created by the web.  \Node%
{\def\Element%
{356}}\Seq%
{}\Character{8220}Write once, run
        anywhere\Character{8221}\endSeq{}\endNode{} was the motto of the original Java
        developers, the idea being to create an abstraction layer
        between the programmer and the underlying chip architecture
        (ix86, Sparc, Alpha) known as a \Node%
{\def\Element%
{357}}\Seq%
{\def\fPosture%
{italic}}virtual
        machine\endSeq{}\endNode{} (or interpreter)\Node%
{\def\Element%
{358}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}1\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{359}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}1. \endLineField{}In theory
        all programmers needed to do was to write so-called "pure
        Java" code that targeted the virtual machine, whilst the
        virtual machine itself only needed to ported once to each new
        architecture or chip, by the maintainers of the language
        itself (rather than the applications programmer).  With
        certain caveats, this has been largely realized, and Java is
        now a robust platform that is used in both web client GUI
        programming (applets) as well as server applications
        (servlets).  Use of Java does come at a cost, the extra step
        of translating the virtual machine instructions into the
        native machine instructions at run-time does have a
        performance penalty at run-time, but with the advent of
        so-called \Node%
{\def\Element%
{360}}\Seq%
{\def\fPosture%
{italic}}native compilers\endSeq{}\endNode{} which do
        this translation at compile-time (rather than at run-time),
        many applications can, in principle, run much faster than they
        currently do.\endPar{}\endNode{}}\endSeq{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{361}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The purpose of the Java layer of Swarm (actually it is a
        system that is potentially extensible to other languages such as
        Scheme or C++) is to mirror the \Node%
{\def\Element%
{362}}\Seq%
{\def\fPosture%
{italic}}protocols\endSeq{}\endNode{}
        of the Swarm libraries as Java
        \Node%
{\def\Element%
{363}}\Seq%
{\def\fPosture%
{italic}}interfaces\endSeq{}\endNode{}.\endPar{}\endNode{}\Node%
{\def\Element%
{364}}\DisplayGroup%
{\def\StartIndent%
{69.6\p@}\def\StartIndentFactor%
{0}\def\fFamName{Arial}\def\fSize%
{9\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\DisplayGroup%
{}\Par%
{\def\FirstLineStartIndent%
{-21.6\p@}\def\FirstLineStartIndentFactor%
{0}}\LineField%
{\def\FieldWidth%
{21.6\p@}\def\FieldWidthFactor%
{0}}\insertExternalGraphic%
{\def\EntitySystemId%
{figs/note.eps}\def\NotationSystemId%
{}\def\EscapementDirection%
{false}\def\PositionPointX%
{0\p@}\def\PositionPointXFactor%
{0}\def\PositionPointY%
{0\p@}\def\PositionPointYFactor%
{0}}\endLineField{}For more details on the ongoing work of integrating
        Swarm with other languages and simulation technologies such
        as XML and Scheme, see the paper \Node%
{\def\Element%
{366}}\Seq%
{\def\fPosture%
{italic}}Integrating
          Simulation Technologies With Swarm\endSeq{}\endNode{}
        \Node%
{\def\Element%
{367}}\Link%
{\def\Element%
{5510}}[\Seq%
{}Daniels, 1999\endSeq{}]\endLink{}\endNode{}.
        \endPar{}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.03-MULTI-LANG-WHY.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}3.1.3. \Node%
{\def\Element%
{369}\def\ProcessingMode%
{xref-title-mode}}Why is Swarm Written in Objective C?\endNode{}\def\HeadingText{%
3.1.3. Why is Swarm Written in Objective C?}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{369}}\endNode{}\Node%
{\def\Element%
{370}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Since Objective C is not currently a mainstream
        programming language, it is natural to ask why the Swarm
        project chose Objective C. There are a number of reasons:

      \Node%
{\def\Element%
{371}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{372}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{373}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{374}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Objective C is easier to learn. \endSeq{}\endNode{}\Node%
{\def\Element%
{375}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Objective C takes the familiar C language and adds a
              few simple elements. Objective C does not allow
              overloading or multiple inheritance of classes (although
              the use of protocols enables this, to an extent)\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{376}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{377}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{378}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Objective C allows run-time binding. \endSeq{}\endNode{}\Node%
{\def\Element%
{379}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}In contrast to other languages which check the match
            between the receiver of a command and its ability to carry
            out the command when a program is compiled, Objective C
            leaves that matching exercise until the program is
            running.  This means, for example, that one can have a
            program that builds a list of objects and then sends a
            message to each one.  In Objective C, the compiler won't
            worry about which type of object is in the list. The
            advantage, conceptually, is that one can put commands in
            their code without knowing the precise identity of the
            receiver, so code can be written to allow an environment
            and set of objects to change and evolve. The disadvantage,
            as critics of run-time binding will quickly point out, is
            that programs crash when an object recieves a message and
            it does not have the method that it is being told to
            execute.  The organization of Swarm into protocols reduces
            the risk of these crashes, however, because the compiler
            does check and issue a warning if a method is not
            implemented in a class that advertises a certain
            protocol.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}
      \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.03-OBJC.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}3.2. \Node%
{\def\Element%
{381}\def\ProcessingMode%
{xref-title-mode}}Objective C Basics\endNode{}\def\HeadingText{%
3.2. Objective C Basics}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{381}}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-ID.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}3.2.1. \Node%
{\def\Element%
{383}\def\ProcessingMode%
{xref-title-mode}}The \Node%
{\def\Element%
{384}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{10.8\p@}}id\endSeq{}\endNode{} Variable Type\endNode{}\def\HeadingText{%
3.2.1. The id Variable Type}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{383}}\endNode{}\Node%
{\def\Element%
{385}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The variable type that is added by Objective C is
      \Node%
{\def\Element%
{386}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}id\endSeq{}\endNode{}.  It is the default type for objects in
      Objective C. Think of this as a special variable type (which is
      actually a pointer to a special data structure - namely the
      object)\endPar{}\endNode{}\Node%
{\def\Element%
{387}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}All objects can refer to themselves by using the label
      \Node%
{\def\Element%
{388}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}self\endSeq{}\endNode{}.  This is necessary if, in the code that
      defines the object, the programmer wants to make the object
      execute one of its methods.  For example, suppose an object has
      a method called \Node%
{\def\Element%
{389}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}updateRecords\endSeq{}\endNode{}.  If a
      command\endPar{}\endNode{}\Node%
{\def\Element%
{390}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[self updateRecords];\endPar{}\endNode{}\Node%
{\def\Element%
{391}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} is received, then the \Node%
{\def\Element%
{392}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}updateRecords\endSeq{}\endNode{}
      command will be executed, presumably to cause the updating of
      instance variables. \endPar{}\endNode{}\Node%
{\def\Element%
{393}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}All objects can refer to superclass by the name
      \Node%
{\def\Element%
{394}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}super\endSeq{}\endNode{}. For example:\endPar{}\endNode{}\Node%
{\def\Element%
{395}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[super updateRecords]\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-INTERFACE.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}3.2.2. \Node%
{\def\Element%
{397}\def\ProcessingMode%
{xref-title-mode}}Interface File: Declaration of a Class\endNode{}\def\HeadingText{%
3.2.2. Interface File: Declaration of a Class}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{397}}\endNode{}\Node%
{\def\Element%
{398}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If you look in a directory where some Objective C Swarm
      code resides, you will see files in pairs, such as
      \Node%
{\def\Element%
{399}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ObserverSwarm.h\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{400}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ObserverSwarm.m\endSeq{}\endNode{}, ModelSwarm.h and
      \Node%
{\def\Element%
{401}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm.m\endSeq{}\endNode{}, and so forth.  The "h" files
      are the interface files (commonly called \Node%
{\def\Element%
{402}}\Seq%
{\def\fPosture%
{italic}}header
      files\endSeq{}\endNode{}), while the "m" files are the
      \Node%
{\def\Element%
{403}}\Seq%
{\def\fPosture%
{italic}}implementation files\endSeq{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Label%
{OBJC-BASICS.FIGURE}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Node%
{\def\Element%
{405}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Figure 3-1. \endSeq{}Objective C Basics\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{405}}\endNode{}\Node%
{\def\Element%
{406}}\Par%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertExternalGraphic%
{\def\DisplayAlignment%
{start}\def\IsDisplay%
{1}\def\ScaleType%
{false}\def\ScaleX%
{1}\def\ScaleY%
{1}\def\EntitySystemId%
{<OSFILE>/swarm/alex/src/Swarm/swarmguide/figs/objc-basics.eps}\def\NotationSystemId%
{EPS}}\endPar{}\endNode{}\endPar{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{407}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}As illustrated in \Node%
{\def\Element%
{408}}\Link%
{\def\Label%
{OBJC-BASICS.FIGURE}}\Seq%
{}Figure \Seq%
{}3-1\endSeq{}\endSeq{}\endLink{}\endNode{}, the
      interface declares the name of the class and the name of its
      superclass.  Then it gives a list of variable types and names
      enclosed by braces (\{\}), and then the names of the methods that
      the class can implement are listed. The variables defined in
      this list can be used by any of the methods defined for the
      class.  (These are often called "ivars", short for instance
      variables.)
    \Node%
{\def\Label%
{SWARM.USER.USER1.03.OBJC-CLASS.EXAMPLE}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}\def\Orientation%
{horizontal}}\Seq%
{}\Node%
{\def\Element%
{410}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Example 3-1. \endSeq{}Objective C class\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{410}}\endNode{}\Node%
{\def\Element%
{411}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}\Node%
{\def\Label%
{OBJC-DECL}}\Seq%
{\def\fWeight%
{bold}}(1)\endSeq{}\endNode{}@interface Bug\Node%
{\def\Label%
{OBJC-SUBCLASS}}\Seq%
{\def\fWeight%
{bold}}(2)\endSeq{}\endNode{} : SwarmObject\Node%
{\def\Label%
{OBJC-SUPERCLASS}}\Seq%
{\def\fWeight%
{bold}}(3)\endSeq{}\endNode{} 
\{
  int xPos, yPos;
  int worldXSize, worldYSize;\Node%
{\def\Label%
{OBJC-INSTANCES}}\Seq%
{\def\fWeight%
{bold}}(4)\endSeq{}\endNode{}
  id foodSpace;
\}
- setX: (int) x Y: (int) y;\Node%
{\def\Label%
{OBJC-METHOD1}}\Seq%
{\def\fWeight%
{bold}}(5)\endSeq{}\endNode{}
- step;\Node%
{\def\Label%
{OBJC-METHOD2}}\Seq%
{\def\fWeight%
{bold}}(6)\endSeq{}\endNode{}
- (return\char95{}type)look: (direction\char95{}type) d;\Node%
{\def\Label%
{OBJC-METHOD3}}\Seq%
{\def\fWeight%
{bold}}(7)\endSeq{}\endNode{}

@end\endPar{}\endNode{}\Node%
{\def\Element%
{419}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{420}}\Seq%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}\Seq%
{}\Seq%
{\def\fWeight%
{bold}}(1)\endSeq{}\endSeq{}\endLineField{}Declarations of instance variables and methods\endPar{}\endSeq{}\endNode{}\Node%
{\def\Element%
{422}}\Seq%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}\Seq%
{}\Seq%
{\def\fWeight%
{bold}}(2)\endSeq{}\endSeq{}\endLineField{}Sub class\endPar{}\endSeq{}\endNode{}\Node%
{\def\Element%
{424}}\Seq%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}\Seq%
{}\Seq%
{\def\fWeight%
{bold}}(3)\endSeq{}\endSeq{}\endLineField{}Super class\endPar{}\endSeq{}\endNode{}\Node%
{\def\Element%
{426}}\Seq%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}\Seq%
{}\Seq%
{\def\fWeight%
{bold}}(4)\endSeq{}\endSeq{}\endLineField{}Instance Variables\endPar{}\endSeq{}\endNode{}\Node%
{\def\Element%
{428}}\Seq%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}\Seq%
{}\Seq%
{\def\fWeight%
{bold}}(5)\endSeq{}\endSeq{}\endLineField{}declares method called \Node%
{\def\Element%
{430}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}set\endSeq{}\endNode{} 
                that takes two arguments\endPar{}\endSeq{}\endNode{}\Node%
{\def\Element%
{431}}\Seq%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}\Seq%
{}\Seq%
{\def\fWeight%
{bold}}(6)\endSeq{}\endSeq{}\endLineField{}declares a method called \Node%
{\def\Element%
{433}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}step\endSeq{}\endNode{}.\endPar{}\endSeq{}\endNode{}\Node%
{\def\Element%
{434}}\Seq%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}\Seq%
{}\Seq%
{\def\fWeight%
{bold}}(7)\endSeq{}\endSeq{}\endLineField{}declares a method called \Node%
{\def\Element%
{436}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}look\endSeq{}\endNode{}
                that takes one argument of type
                \Node%
{\def\Element%
{437}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}direction\char95{}type\endSeq{}\endNode{} and returns an argument of
                type \Node%
{\def\Element%
{438}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}return\char95{}type\endSeq{}\endNode{}.\endPar{}\endSeq{}\endNode{}\endDisplayGroup{}\endNode{}\endPar{}\endSeq{}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\KeepWithPrevious%
{1}\def\Orientation%
{horizontal}}\endDisplayGroup{}\endNode{}

    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-IMPL.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}3.2.3. \Node%
{\def\Element%
{440}\def\ProcessingMode%
{xref-title-mode}}Implementation File: Defining a Class\endNode{}\def\HeadingText{%
3.2.3. Implementation File: Defining a Class}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{440}}\endNode{}\Node%
{\def\Element%
{441}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Each implementation file--the \Node%
{\def\Element%
{442}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}.m\endSeq{}\endNode{} that
      parallels the \Node%
{\def\Element%
{443}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}.h\endSeq{}\endNode{} -- must import its header
      file.  For the header file described above, called
      \Node%
{\def\Element%
{444}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Bug.h\endSeq{}\endNode{}, for example, the implementation
      looks like:\endPar{}\endNode{}\Node%
{\def\Element%
{445}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\#import "Bug.h"
@implementation  Bug
- setX: (int) x Y: (int) y
\{
 xPos = x;
 yPos = y;
 return self;
\}
- step
\{
 // body 
 return self;
\}

- (return\char95{}type)look: (direction\char95{}type)d
\{
  return\char95{}type returnval;
  // body of method
  return returnval;
\}\endPar{}\endNode{}\Node%
{\def\Element%
{446}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This example shows a number of important features.  First,
      note that the method \Node%
{\def\Element%
{447}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}look\endSeq{}\endNode{} specifies a
      return type, (\Node%
{\def\Element%
{448}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}return\char95{}type\endSeq{}\endNode{}). In this example,
      \Node%
{\def\Element%
{449}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}return\char95{}type\endSeq{}\endNode{} would have to be replaced
      by a variable type, such as \Node%
{\def\Element%
{450}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}int\endSeq{}\endNode{},
      \Node%
{\def\Element%
{451}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}float\endSeq{}\endNode{}, or whatever, and
      \Node%
{\def\Element%
{452}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}returnval\endSeq{}\endNode{} would have to be a variable
      of that type.  When that method is called, the receiving code
      must be able to accept a return of that type.  In contrast, the
      method \Node%
{\def\Element%
{453}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}step\endSeq{}\endNode{} does not specify a return type.
      That means the default type, \Node%
{\def\Element%
{454}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}id\endSeq{}\endNode{}, is returned.  The
      code that calls this method must be consistent with that return
      type.\endPar{}\endNode{}\Node%
{\def\Element%
{455}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The \Node%
{\def\Element%
{456}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}return self\endSeq{}\endNode{} command is used for two
      types of situations.  Suppose the method is not intended to
      create any output, but rather it changes some instance
      variables. For example, suppose there is some program that
      creates an instance of \Node%
{\def\Element%
{457}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Bug\endSeq{}\endNode{} called
      \Node%
{\def\Element%
{458}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}aBug\endSeq{}\endNode{}. Then that object is sent this
      message:\endPar{}\endNode{}\Node%
{\def\Element%
{459}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[aBug step]\endPar{}\endNode{}\Node%
{\def\Element%
{460}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In such a case, the code that calls that method does not
        expect anything back from it (except itself).  Rather than fuss
      with \Node%
{\def\Element%
{461}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}void\endSeq{}\endNode{} as the return type, as one might in C,
        one can simply return \Node%
{\def\Element%
{462}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}self\endSeq{}\endNode{}.\endPar{}\endNode{}\Node%
{\def\Element%
{463}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In another case, one might actually intend to return the
        object to a list or another object. In such a case, return self
        will also be appropriate. If one is making a list of collected
        bugs, for example, then the usage of \Node%
{\def\Element%
{464}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}return
          self\endSeq{}\endNode{} in that method will give back
        \Node%
{\def\Element%
{465}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}aBug\endSeq{}\endNode{} \Node%
{\def\Element%
{466}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}id\endSeq{}\endNode{} to the calling
        program. To be perfectly concrete about it, suppose the calling
        code has a list called \Node%
{\def\Element%
{467}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}collectedBugs\endSeq{}\endNode{}.  Then
        using the \Node%
{\def\Element%
{468}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}addLast\endSeq{}\endNode{} notation from the Swarm
        collections library, the command to add \Node%
{\def\Element%
{469}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}aBug\endSeq{}\endNode{}
        to the list after being collected might look like this:\endPar{}\endNode{}\Node%
{\def\Element%
{470}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[collectedBugs addLast: [aBug look:
aDirection]];\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.03-OBJC-C.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}3.2.4. \Node%
{\def\Element%
{472}\def\ProcessingMode%
{xref-title-mode}}C Functions vs. Objective C Methods\endNode{}\def\HeadingText{%
3.2.4. C Functions vs. Objective C Methods}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{472}}\endNode{}\Node%
{\def\Element%
{473}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}For readers who are already familiar with C, perhaps a
        comparison of C functions against Objective C methods is in
        order. Since Objective C is a superset of C, an Objective C
        method can include any valid C commands. A method can return
        any type that a C function can return, and in addition it can
        an id (which, strictly speaking, is a pointer to an object).
        \endPar{}\endNode{}\Node%
{\def\Element%
{474}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In the abstract, an Objective C method has this structure:\endPar{}\endNode{}\Node%
{\def\Element%
{475}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- (type)name: (type)arg1 argName2: (type)arg2 
\{
 (body)
 return returnval;
\}\endPar{}\endNode{}\Node%
{\def\Element%
{476}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In comparison, a C function would look like this:\endPar{}\endNode{}\Node%
{\def\Element%
{477}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}(type)name((type) arg1,(type) arg2)) 
\{
 (body)
 return returnval;
\}\endPar{}\endNode{}\Node%
{\def\Element%
{478}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The code in body of an Objective C method can be exactly the
        same as in C.  The two languages are compared side-by-side in
        the following example, which describes how a function
        \Node%
{\def\Element%
{479}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}rand\char95{}move()\endSeq{}\endNode{} might compare to a method
        \Node%
{\def\Element%
{480}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}rand\char95{}move:\endSeq{}\endNode{}.  Of course, each of these
        assumes there are other functions and variables that can be
        accessed, but the contrast in style should be
        informative.\endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.03.C-VS-OBJC.EXAMPLE}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}\def\Orientation%
{horizontal}}\Seq%
{}\Node%
{\def\Element%
{482}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Example 3-2. \endSeq{}C vs Objective C\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{482}}\endNode{}\Node%
{\def\Element%
{483}}\Node%
{\def\Element%
{484}\def\ProcessingMode%
{proglist-objc-java-mode}}\Table%
{\def\DisplayAlignment%
{start}\def\TableWidth%
{full}}\TablePart%
{}\insertTableColumn%
{\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{1}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\TeXTable%
{420\p@}{2}{L{210\p@}L{210\p@}}%
\TablePartHeader%
{}\Node%
{\def\Element%
{485}\def\ProcessingMode%
{proglist-objc-java-mode}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}C \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Objective C\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}%
\endTablePartHeader{}\Hline%
\Node%
{\def\Element%
{489}\def\ProcessingMode%
{proglist-objc-java-mode}}\Node%
{\def\Element%
{489}\def\ProcessingMode%
{proglist-objc-java-mode}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{492}\def\ProcessingMode%
{proglist-objc-java-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}void rand\char95{}move(int i) \{    

 int tmp\char95{}loc;

 do\{
 tmp\char95{}loc=get\char95{}rand\char95{}loc();
 \} while(val[tmp\char95{}loc]!=0);

 val[location[i]]=0;
 val[tmp\char95{}loc]=i;
\}\endPar{}\endNode{}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{494}\def\ProcessingMode%
{proglist-objc-java-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}- rand\char95{}move: p 
\{
  id loc;

  do\{
   loc=[self getRandLoc];

  \} while([world at: loc]!=nil);

 [p moveTo: loc];
 return self;
\}\endPar{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}\endNode{}%
\TablePartFooter%
{}\endTablePartFooter{}\endTeXTable{}%
\endTablePart{}\endNode{}%
\endTable{}%
\endNode{}\endNode{}\endPar{}\endSeq{}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\KeepWithPrevious%
{1}\def\Orientation%
{horizontal}}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.03-JAVA.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}3.3. \Node%
{\def\Element%
{496}\def\ProcessingMode%
{xref-title-mode}}Java Basics\endNode{}\def\HeadingText{%
3.3. Java Basics}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{496}}\endNode{}\Node%
{\def\Element%
{497}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}One of the most obvious and immediate differences between
    Objective C (and incidentally C++) and Java, is that Java does not
    partion classes into "declarations" (header files) and
    "implementations" (implementation files).  All information for any
    Java class is contained in a single \Node%
{\def\Element%
{498}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}.java\endSeq{}\endNode{}
    file.\endPar{}\endNode{}\Node%
{\def\Element%
{499}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Perhaps the best way to illustrate this is to consider the
     Java equivalent of the previous Objective C \Node%
{\def\Element%
{500}}\Link%
{\def\Label%
{SWARM.USER.USER1.03.OBJC-CLASS.EXAMPLE}}\Seq%
{}Example \Seq%
{}3-1\endSeq{}\endSeq{}\endLink{}\endNode{}.\endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.03.JAVA-CLASS.EXAMPLE}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}\def\Orientation%
{horizontal}}\Seq%
{}\Node%
{\def\Element%
{502}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Example 3-3. \endSeq{}Java class\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{502}}\endNode{}\Node%
{\def\Element%
{503}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}\Node%
{\def\Label%
{JAVA-DECL}}\Seq%
{\def\fWeight%
{bold}}(1)\endSeq{}\endNode{}public class Bug\Node%
{\def\Label%
{JAVA-SUBCLASS}}\Seq%
{\def\fWeight%
{bold}}(2)\endSeq{}\endNode{} extends SwarmObject\Node%
{\def\Label%
{JAVA-SUPERCLASS}}\Seq%
{\def\fWeight%
{bold}}(3)\endSeq{}\endNode{} 
\{
  int xPos, yPos;
  int worldXSize, worldYSize;\Node%
{\def\Label%
{JAVA-INSTANCES}}\Seq%
{\def\fWeight%
{bold}}(4)\endSeq{}\endNode{}
  FoodSpace foodSpace;

 public Object setX\$Y (int x, int y)\Node%
{\def\Label%
{JAVA-METHOD1}}\Seq%
{\def\fWeight%
{bold}}(5)\endSeq{}\endNode{}
  \{
    xPos = x;
    yPos = y;
    return this;
  \}
 public Object step()\Node%
{\def\Label%
{JAVA-METHOD2}}\Seq%
{\def\fWeight%
{bold}}(6)\endSeq{}\endNode{}
  \{
    // body of step() code
    return this;
  \}
 public return\char95{}type look(direction\char95{}type d)\Node%
{\def\Label%
{JAVA-METHOD3}}\Seq%
{\def\fWeight%
{bold}}(7)\endSeq{}\endNode{}
  \{
    return\char95{}type returnval;
    // body of look() code
    return returnval;
  \}
\}\endPar{}\endNode{}\Node%
{\def\Element%
{511}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{512}}\Seq%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}\Seq%
{}\Seq%
{\def\fWeight%
{bold}}(1)\endSeq{}\endSeq{}\endLineField{}Complete class defintion\endPar{}\endSeq{}\endNode{}\Node%
{\def\Element%
{514}}\Seq%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}\Seq%
{}\Seq%
{\def\fWeight%
{bold}}(2)\endSeq{}\endSeq{}\endLineField{}Sub class\endPar{}\endSeq{}\endNode{}\Node%
{\def\Element%
{516}}\Seq%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}\Seq%
{}\Seq%
{\def\fWeight%
{bold}}(3)\endSeq{}\endSeq{}\endLineField{}Super class\endPar{}\endSeq{}\endNode{}\Node%
{\def\Element%
{518}}\Seq%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}\Seq%
{}\Seq%
{\def\fWeight%
{bold}}(4)\endSeq{}\endSeq{}\endLineField{}Instance Variables\endPar{}\endSeq{}\endNode{}\Node%
{\def\Element%
{520}}\Seq%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}\Seq%
{}\Seq%
{\def\fWeight%
{bold}}(5)\endSeq{}\endSeq{}\endLineField{}declares method called \Node%
{\def\Element%
{522}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}set\$Y()\endSeq{}\endNode{} 
                that takes two arguments\endPar{}\endSeq{}\endNode{}\Node%
{\def\Element%
{523}}\Seq%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}\Seq%
{}\Seq%
{\def\fWeight%
{bold}}(6)\endSeq{}\endSeq{}\endLineField{}declares a method called \Node%
{\def\Element%
{525}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}step()\endSeq{}\endNode{}
            takes no arguments.\endPar{}\endSeq{}\endNode{}\Node%
{\def\Element%
{526}}\Seq%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}}\Seq%
{}\Seq%
{\def\fWeight%
{bold}}(7)\endSeq{}\endSeq{}\endLineField{}declares a method called \Node%
{\def\Element%
{528}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}look()\endSeq{}\endNode{}
            that takes one argument of type
            \Node%
{\def\Element%
{529}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}direction\char95{}type\endSeq{}\endNode{} and returns an argument of
            type \Node%
{\def\Element%
{530}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}return\char95{}type\endSeq{}\endNode{}.\endPar{}\endSeq{}\endNode{}\endDisplayGroup{}\endNode{}\endPar{}\endSeq{}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\KeepWithPrevious%
{1}\def\Orientation%
{horizontal}}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{531}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}One important distinction to notice is that Java does not
    have a notion of an \Node%
{\def\Element%
{532}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}id\endSeq{}\endNode{} or "generic" data type.  All
    variables must be assigned a type, in the above example the
    \Node%
{\def\Element%
{533}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}foodSpace\endSeq{}\endNode{} instance variable is declared as
    being of type \Node%
{\def\Element%
{534}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}FoodSpace\endSeq{}\endNode{}.  This is because
    Java is a \Node%
{\def\Element%
{535}}\Seq%
{\def\fPosture%
{italic}}strongly typed\endSeq{}\endNode{} language.  The
    compiler checks all types of all variables to ensure all receiver
    objects respond to the messages that are sent to them by the
    programmer.  Most of the rest of the other differences between the
    Objective C and Java examples given, lie almost purely in
    deviations of syntax.  Here are a few obvious ones (this list is
    by no means exhaustive and the reader is encouraged to consult
    their Java or Objective C reference manual for all the detailed
    syntax):
 
      \Node%
{\def\Element%
{536}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{537}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{538}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}In Objective C, method names and the parameters are
            interspersed, whilst in Java, the entire method name is
            given before the parameters.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{539}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{540}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}In Java \Node%
{\def\Element%
{541}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}self\endSeq{}\endNode{} is referred to as
            \Node%
{\def\Element%
{542}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}this\endSeq{}\endNode{} (\Node%
{\def\Element%
{543}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}super\endSeq{}\endNode{} retains its
            meaning and syntax in both languages).  \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.03-INST.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}3.4. \Node%
{\def\Element%
{545}\def\ProcessingMode%
{xref-title-mode}}Giving Life to Classes: Instantiation\endNode{}\def\HeadingText{%
3.4. Giving Life to Classes: Instantiation}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{545}}\endNode{}\Node%
{\def\Element%
{546}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{548}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{551}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}After the code is written to implement the class (with
      \Node%
{\def\Element%
{552}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}.h\endSeq{}\endNode{} and \Node%
{\def\Element%
{553}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}.m\endSeq{}\endNode{} files for
      Objective C and \Node%
{\def\Element%
{554}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}.java\endSeq{}\endNode{} in the Java case),
      there is still work to be done. Instances of the class must be
      created. The creation of instances of a class is one of the
      specialized features of Swarm. Since the instantiation process
      can be sometimes different from the that described in the
      Objective C and Java literature, it is worth some special
      attention.\endPar{}\endNode{}\Node%
{\def\Element%
{555}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The creation of the substantively important objects is often
      handled in the model swarm.  This process uses the specialized
      memory management and object creation code in the Swarm
      library.\endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.03-INST-OBJC.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}3.4.1. \Node%
{\def\Element%
{557}\def\ProcessingMode%
{xref-title-mode}}Instantiation: Objective C Style\endNode{}\def\HeadingText{%
3.4.1. Instantiation: Objective C Style}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{557}}\endNode{}\Node%
{\def\Element%
{558}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{561}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The objects that represent the actors in a simulation--the
      substantively important entities--are usually subclassed from
      the \Node%
{\def\Element%
{562}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}SwarmObject\endSeq{}\endNode{} class. The "inheritance
      hierarchy" that leads to the class
      \Node%
{\def\Element%
{563}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}SwarmObject\endSeq{}\endNode{} passes through classes that
      allow the creation and deletion of objects from a simulation.
      Objects are often created by a pair of "bookend" commands,
      \Node%
{\def\Element%
{564}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{565}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{}. This is not part of the
      Objective C syntax.  Rather, it is unique to Swarm. \endPar{}\endNode{}\Node%
{\def\Element%
{566}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Suppose the \Node%
{\def\Element%
{567}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Bug.h\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{568}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Bug.m\endSeq{}\endNode{} files from previous exist, and one
      wants to create an instance of that class.  In a file
      \Node%
{\def\Element%
{569}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm.m\endSeq{}\endNode{}, one would typically have a
      method called \Node%
{\def\Element%
{570}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildObjects\endSeq{}\endNode{}, which is
      usually a method that houses all object creation. For
      example:\endPar{}\endNode{}\Node%
{\def\Element%
{571}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{574}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}// Excerpt from ModelSwarm.m that creates a Bug instance
\#import "Bug.h"
// \{other imports and code that defines schedules, etc\}
- buildObjects 
\{    
    id  aBug;
    bug = [Bug createBegin: self];
    // commands that set permanent features of the agent can apppear here
    bug = [Bug createEnd];
\}\endPar{}\endNode{}\Node%
{\def\Element%
{575}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} The class's "factory object", \Node%
{\def\Element%
{576}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Bug\endSeq{}\endNode{},
      is told to create an object in a memory zone that is provided by
      \Node%
{\def\Element%
{577}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm\endSeq{}\endNode{}
      (\Node%
{\def\Element%
{578}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm\endSeq{}\endNode{} is the
      \Node%
{\def\Element%
{579}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}self\endSeq{}\endNode{}.). Then the object
      \Node%
{\def\Element%
{580}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}aBug\endSeq{}\endNode{} is instructed to finish the creation
      process, after optional commands are added to define the
      features of the object (typically, to set permanent structural
      aspects of the class).  Many of these subtleties are explained
      in depth in later sections (see also \Node%
{\def\Element%
{581}}\Link%
{\def\Label%
{SWARM.USER.SWARMOBJC.APPENDIX}}\Seq%
{}Appendix \Seq%
{}B\endSeq{}\endSeq{}\endLink{}\endNode{}).\endPar{}\endNode{}\Node%
{\def\Element%
{582}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Object instances need not be created by the
      \Node%
{\def\Element%
{583}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{}/\Node%
{\def\Element%
{584}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{}
      pair.  Objects can often be created by a simple create command
      \Node%
{\def\Element%
{585}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}2\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{586}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}2. \endLineField{}For example, the Swarm collections library includes a
      class called \Node%
{\def\Element%
{587}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{6.75\p@}}List\endSeq{}\endNode{}, which is most often
      created this way.\endPar{}\endNode{}}\endSeq{}\endNode{}.\endPar{}\endNode{}\Node%
{\def\Element%
{588}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}aBug = [Bug create: self];\endPar{}\endNode{}\Node%
{\def\Element%
{589}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In code written for older versions of Swarm, one will often
      see a slightly different syntax in
      \Node%
{\def\Element%
{590}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm.m\endSeq{}\endNode{}:\endPar{}\endNode{}\Node%
{\def\Element%
{591}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}aBug = [Bug create: [self getZone]];\endPar{}\endNode{}\Node%
{\def\Element%
{592}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In Objective C, this usage is still valid, although it is
        deprecated.  Since now the objects of type
        \Node%
{\def\Element%
{593}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Swarm\endSeq{}\endNode{}, like the model swarm itself, are
        memory zones, there is no need to get a zone in which to put
        the bug.  Rather, the bug can be put in the zone that is
        provided by the model swarm itself.
      \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.03-INST-JAVA.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}3.4.2. \Node%
{\def\Element%
{602}\def\ProcessingMode%
{xref-title-mode}}Instantiation: Java Style\endNode{}\def\HeadingText{%
3.4.2. Instantiation: Java Style}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{595}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{598}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{602}}\endNode{}\Node%
{\def\Element%
{603}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}For most stock objects created in application Java code
        (including user-created Java classes), the entire
        \Node%
{\def\Element%
{604}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin/createEnd\endSeq{}\endNode{} apparatus can be
        dispensed with.  Java uses the term
        \Node%
{\def\Element%
{605}}\Seq%
{\def\fPosture%
{italic}}constructor\endSeq{}\endNode{} for the method that creates
        an instance of a class.  The Java interface to the Swarm
        libraries have "convenience" constructors which essentially
        bracket the entire set of create-time messages in a single
        call to the constructor (or call the constructor with no
        arguments as in the present case).  The simplest method to
        create a Java \Node%
{\def\Element%
{606}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Bug\endSeq{}\endNode{} object is to invoke
        the following:\endPar{}\endNode{}\Node%
{\def\Element%
{607}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}aBug = Bug (this.getZone());\endPar{}\endNode{}\Node%
{\def\Element%
{608}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This is equivalent to the final Objective C example given
        in the last section.  In summary here is the comparison:\endPar{}\endNode{}\Node%
{\def\Element%
{609}}\Node%
{\def\Element%
{610}\def\ProcessingMode%
{proglist-objc-java-mode}}\Table%
{\def\DisplayAlignment%
{start}\def\TableWidth%
{full}}\TablePart%
{}\insertTableColumn%
{\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{1}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\TeXTable%
{420\p@}{2}{L{210\p@}L{210\p@}}%
\TablePartHeader%
{}\Node%
{\def\Element%
{611}\def\ProcessingMode%
{proglist-objc-java-mode}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Objective C example\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Java example\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}%
\endTablePartHeader{}\Hline%
\Node%
{\def\Element%
{615}\def\ProcessingMode%
{proglist-objc-java-mode}}\Node%
{\def\Element%
{615}\def\ProcessingMode%
{proglist-objc-java-mode}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{618}\def\ProcessingMode%
{proglist-objc-java-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}aBug = [Bug create: [self getZone]];\endPar{}\endNode{}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{620}\def\ProcessingMode%
{proglist-objc-java-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}aBug = Bug (this.getZone());\endPar{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}\endNode{}%
\TablePartFooter%
{}\endTablePartFooter{}\endTeXTable{}%
\endTablePart{}\endNode{}%
\endTable{}%
\endNode{}\endNode{}\Node%
{\def\Element%
{621}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Note that the explicit \Node%
{\def\Element%
{622}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}create:\endSeq{}\endNode{} method
        in the Objective C case, is made implicit in the Java case.
        \Node%
{\def\Element%
{623}}\DisplayGroup%
{\def\StartIndent%
{69.6\p@}\def\StartIndentFactor%
{0}\def\fFamName{Arial}\def\fSize%
{9\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\DisplayGroup%
{}\Par%
{\def\FirstLineStartIndent%
{-21.6\p@}\def\FirstLineStartIndentFactor%
{0}}\LineField%
{\def\FieldWidth%
{21.6\p@}\def\FieldWidthFactor%
{0}}\insertExternalGraphic%
{\def\EntitySystemId%
{figs/caution.eps}\def\NotationSystemId%
{}\def\EscapementDirection%
{false}\def\PositionPointX%
{0\p@}\def\PositionPointXFactor%
{0}\def\PositionPointY%
{0\p@}\def\PositionPointYFactor%
{0}}\endLineField{}It is still possible to use the
            \Node%
{\def\Element%
{625}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}create\endSeq{}\endNode{} and
            \Node%
{\def\Element%
{626}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin/createEnd\endSeq{}\endNode{} apparatus in
            Java, but due to Java's strongly-typed nature, it can
            require considerably more coding overhead than in
            Objective C, and will be left to later version of the
            Guide.\endPar{}\endDisplayGroup{}\endDisplayGroup{}\endNode{}
      \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.03-CLASSES.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}3.5. \Node%
{\def\Element%
{628}\def\ProcessingMode%
{xref-title-mode}}A Brief Clarification: Classes and Protocols in Objective
      C\endNode{}\def\HeadingText{%
3.5. A Brief Clarification: Classes and Protocols in Objective
      C}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{628}}\endNode{}\Node%
{\def\Element%
{629}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{632}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{636}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}There is one additional complication that readers should be
      aware of.  Objective C allows the creation of entities called
      protocols.  A protocol, as readers will recall from their study
      of Objective C, is a list of methods that an object is able to
      execute.  Swarm is structured by protocols, which means that
      there are lists of methods assigned to various names and classes
      inside the library "adopt" those protocols and then implement
      the methods listed in the protocols.  Hence, in the Swarm
      Reference materials present the libraries as a collection of
      classes, each of which adheres to a given set of
      protocols.\endPar{}\endNode{}\Node%
{\def\Element%
{637}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}To the Swarm user, the distinction between class and
      protocol is not vital most of the time.  The most important
      Swarm protocols, such as the type \Node%
{\def\Element%
{638}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Swarm\endSeq{}\endNode{}
      (from \Node%
{\def\Element%
{639}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}objectbase/Swarm.h\endSeq{}\endNode{}) or
      \Node%
{\def\Element%
{640}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}SwarmObject\endSeq{}\endNode{} (from
      \Node%
{\def\Element%
{641}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}objectbase/SwarmObject.h\endSeq{}\endNode{}), can be used as
      if they were classes.  In the Swarm Reference Guide, there is a
      list of all protocols.  The protocols that adopt the
      \Node%
{\def\Element%
{642}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}CREATABLE\endSeq{}\endNode{} protcol are the ones that users
      can use as if they were factory objects.  For example, the
      \Node%
{\def\Element%
{643}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}EZGraph\endSeq{}\endNode{} protocol adopts the
      CREATABLE protocol, so when the user needs to create an
      instance, so the observer swarm file can use the EZGraph to
      create graphs.\endPar{}\endNode{}\Node%
{\def\Element%
{644}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{647}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} Almost all of the Swarm protocols adopt the CREATABLE
      protocol, so they can be used as if they were classes from
      which users subclass to make model swarms or individual
      agents.  It should not matter to the user that these are
      abstract defined types that have
      adopted protocols (taken on the obligation to implement methods
      listed in protocols).  The class
      \Node%
{\def\Element%
{648}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}SwarmObject\endSeq{}\endNode{}, for example, adopts
      protocols \Node%
{\def\Element%
{649}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Create\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{650}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Drop\endSeq{}\endNode{} as well as CREATABLE. This means
      that the user can act as if there is a class called
      \Node%
{\def\Element%
{651}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}SwarmObject\endSeq{}\endNode{}, and that the SwarmObject
      will be able to respond to class methods like
      \Node%
{\def\Element%
{652}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{}, and that instances created by
      SwarmObject will be able to respond to 
      \Node%
{\def\Element%
{653}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{}, \Node%
{\def\Element%
{654}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drop\endSeq{}\endNode{}, or
      any other method that is listed in a protocol listed by SwarmObject.\endPar{}\endNode{}\Node%
{\def\Element%
{655}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} One of the principal advantages of protocol usage is that
      there will be compile-time warnings if the user's code tries to
      send a "bad message" to an object.  If a message tells an object
      to \Node%
{\def\Element%
{656}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}goOutside\endSeq{}\endNode{}, and none of the protocols
      adopted by that agent have a method called
      \Node%
{\def\Element%
{657}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}goOutside\endSeq{}\endNode{}, then the compiler will warn the
      user about it.  In a crude way, adopting a protocol is like
      advertising that a class can do certain things, and the compiler
      enforces a `truth in advertising' policy. If the compiler flags
      include -WERROR, causing all warnings to be treated as errors,
      then these warnings will stop the compilation.\endPar{}\endNode{}\Node%
{\def\Element%
{658}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{661}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The fact that many of the important components of the Swarm
      library are organized as protocols can, however, be important in
      some notation. Early versions of Swarm had less emphasis on
      protocols than the current version.  As a result of the
      introduction of protocols, usage conventions have changed.  In
      Swarm, there is a class \Node%
{\def\Element%
{662}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} that can be
      used to create collections.  In the "old days" of Swarm, one
      would create a statically typed object of class
      \Node%
{\def\Element%
{663}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{}, as this code indicates:\endPar{}\endNode{}\Node%
{\def\Element%
{664}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}List * listOfPuppies;
listOfPuppies=[List create: [self getZone]];\endPar{}\endNode{}\Node%
{\def\Element%
{665}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Swarm no longer allows users to statically allocate objects
    in this way.  This code will make the compiler crash, because
    there is no class inside Swarm called List, there is only a
    protocol. The compiler will fail, and the user will get a vague
    warning about a parse error in the vicinity of the List usage. \endPar{}\endNode{}\Node%
{\def\Element%
{666}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}We know from the Swarm Reference Guide that the \Node%
{\def\Element%
{667}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} protocol
      advertises that it adopts the \Node%
{\def\Element%
{668}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}CREATABLE\endSeq{}\endNode{}
      protocol, so the mistake is not in the usage of List to
      create the listOfPuppies.  Rather, the mistake is in the
      declaration of the listOfPuppies itself.  If one
      needs to define a variable \Node%
{\def\Element%
{669}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}listOfPuppies\endSeq{}\endNode{} that
      has the properties of a \Node%
{\def\Element%
{670}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} class item,
      the recommended approach is to create a variable of type
      \Node%
{\def\Element%
{671}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}id\endSeq{}\endNode{} and indicate the protocols adopted by that
      object in brackets:\endPar{}\endNode{}\Node%
{\def\Element%
{672}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}id \Entity{lt} List \Entity{gt}  listOfPuppies;
listOfPuppies=[List create: [self getZone]];
      \endPar{}\endNode{}\Node%
{\def\Element%
{673}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}It is also legal to define listOfPuppies as a generic
    object, as in \endPar{}\endNode{}\Node%
{\def\Element%
{674}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}id listOfPuppies;
listOfPuppies=[List create: [self getZone]];\endPar{}\endNode{}\Node%
{\def\Element%
{675}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This usage is legal, and the program should compile without
    difficulty.  The only shortcoming is that the user will not be
    warned if the listOfPuppies object is sent any inappropriate
    messages within the program.  When these inappropriate messages
    are sent during the run, then the program will crash, possibly
    with a message that the object listOfPuppies does not respond to
    the message it was sent. \endPar{}\endNode{}\Node%
{\def\Element%
{676}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Since almost all of the important pieces of functionality in
      the Swarm library are now written in the protocol format and are
      CREATABLE, these details may be important. However, these
      details do not significantly change the way applications are
      designed.  Swarm entities can still be treated as classes.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.04.CHAPTER}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{678}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 4. The notion of a Swarm\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{678}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 4. The notion of a Swarm\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Chapter 4. \Seq%
{}\Node%
{\def\Element%
{678}\def\ProcessingMode%
{component-title-mode}}The notion of a Swarm\endNode{}\endSeq{}\def\HeadingText{%
Chapter 4. The notion of a Swarm}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{678}}\endNode{}\Node%
{\def\Element%
{679}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{681}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}As explained in an earlier section, Swarm is designed for
    hierarchical creation of computer objects.  The observer swarm
    object is created first, and it creates a user interface and it
    also instantiates the model swarm, and the model swarm then
    creates levels below and schedules their activities.\endPar{}\endNode{}\Node%
{\def\Element%
{682}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}One of the original intentions of the Swarm project was to
    give users the ability to create high quality code with a minimum
    of fuss. The Swarm library creates a sequence of classes that
    accumulate and refine the ability to create simulation objects,
    manage memory for them, and schedule their activities.\endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.04-AGENTS.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}4.1. \Node%
{\def\Element%
{684}\def\ProcessingMode%
{xref-title-mode}}Primary and Auxiliary Agents\endNode{}\def\HeadingText{%
4.1. Primary and Auxiliary Agents}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{684}}\endNode{}\Node%
{\def\Element%
{685}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{689}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Terminology can cause confusion because computer
      programmers may use the term "agent" in a way that befuddles
      scientists. To the scientist, the term agent refers to a
      theoretically important entity that is modeled by a simulation.
      To a programmer, the term agent is usually broader, something
      like object.  As a result, there is sometimes slippage in a
      discussion of "agent-based modeling" because an understanding of
      the term agent is not shared.\endPar{}\endNode{}\Node%
{\def\Element%
{690}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}We intend to finesse this (big surprise!) by creating
      terminology for two kinds of agents.  This separation of agents
      into primary and auxiliary groups is created solely for
      discussion in this manual.  The idea is that primary agents
      \Node%
{\def\Element%
{691}}\Seq%
{}\endSeq{}\endNode{} are the ones that the research
      sets out to model in the first place. They are described in a
      theory, they have substantive importance.  Usually in this sense
      we have representations of important "actors" and one or more
      objects to represent the world in which they interact.\endPar{}\endNode{}\Node%
{\def\Element%
{694}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}To the surprise of most new users, it is often also
      necessary to create auxiliary agents
      \Node%
{\def\Element%
{695}}\Seq%
{}\endSeq{}\endNode{} that facilitate the work of the primary
      agents. For example, in a model of majority rule voting, one can
      have primary agents like voters and candidates. There may be a
      need for an auxiliary class called
      \Node%
{\def\Element%
{698}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Counter\endSeq{}\endNode{}, a class that can spawn objects
      that can be used to tally the votes that are cast.\endPar{}\endNode{}\Node%
{\def\Element%
{699}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In most cases, when we talk about multi-agent systems, we
      are referring to the primary agents.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.04-SWARM.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}4.2. \Node%
{\def\Element%
{701}\def\ProcessingMode%
{xref-title-mode}}The (Swarm) OOP way\endNode{}\def\HeadingText{%
4.2. The (Swarm) OOP way}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{701}}\endNode{}\Node%
{\def\Element%
{702}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{705}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Swarm models follow a common syntax that helps users to
      understand the way their parts interact. The observer swarm and
      the model swarm are typically designed in a similar way.  Methods
      that will appear in many classes, for example, include:\endPar{}\endNode{}\Node%
{\def\Element%
{706}}\Node%
{\def\Element%
{707}\def\ProcessingMode%
{proglist-objc-java-mode}}\Table%
{\def\DisplayAlignment%
{start}\def\TableWidth%
{full}}\TablePart%
{}\insertTableColumn%
{\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{1}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\TeXTable%
{420\p@}{2}{L{210\p@}L{210\p@}}%
\TablePartHeader%
{}\Node%
{\def\Element%
{708}\def\ProcessingMode%
{proglist-objc-java-mode}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Objective C example\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Java example\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}%
\endTablePartHeader{}\Hline%
\Node%
{\def\Element%
{712}\def\ProcessingMode%
{proglist-objc-java-mode}}\Node%
{\def\Element%
{712}\def\ProcessingMode%
{proglist-objc-java-mode}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{715}\def\ProcessingMode%
{proglist-objc-java-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}+ createBegin;
- createEnd;
- buildObjects;
- buildActions;
- activateIn;\endPar{}\endNode{}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{717}\def\ProcessingMode%
{proglist-objc-java-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}createBegin ();
createEnd ()
buildObjects ();
buildActions ();
activateIn ();\endPar{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}\endNode{}%
\TablePartFooter%
{}\endTablePartFooter{}\endTeXTable{}%
\endTablePart{}\endNode{}%
\endTable{}%
\endNode{}\endNode{}\Node%
{\def\Element%
{718}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}There are also methods that allow the input and output of
      information from the object. By custom, these are usually
      prefaced by the words \Node%
{\def\Element%
{719}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}get\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{720}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}set\endSeq{}\endNode{}. For example:\endPar{}\endNode{}\Node%
{\def\Element%
{721}}\Node%
{\def\Element%
{722}\def\ProcessingMode%
{proglist-objc-java-mode}}\Table%
{\def\DisplayAlignment%
{start}\def\TableWidth%
{full}}\TablePart%
{}\insertTableColumn%
{\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{1}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\TeXTable%
{420\p@}{2}{L{210\p@}L{210\p@}}%
\TablePartHeader%
{}\Node%
{\def\Element%
{723}\def\ProcessingMode%
{proglist-objc-java-mode}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Objective C example\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Java example\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}%
\endTablePartHeader{}\Hline%
\Node%
{\def\Element%
{727}\def\ProcessingMode%
{proglist-objc-java-mode}}\Node%
{\def\Element%
{727}\def\ProcessingMode%
{proglist-objc-java-mode}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{730}\def\ProcessingMode%
{proglist-objc-java-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}-setParameterValue: (int) value;
-(int) getParameterValue;\endPar{}\endNode{}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{732}\def\ProcessingMode%
{proglist-objc-java-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}Object setParameterValue (int value);
int getParameterValue ();\endPar{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}\endNode{}%
\TablePartFooter%
{}\endTablePartFooter{}\endTeXTable{}%
\endTablePart{}\endNode{}%
\endTable{}%
\endNode{}\endNode{}\Node%
{\def\Element%
{733}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}These methods can be written to so that
      \Node%
{\def\Element%
{734}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}setParameterValue\endSeq{}\endNode{} causes an object to set
      some internal parameter equal to a value, and
      \Node%
{\def\Element%
{735}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getParameterValue\endSeq{}\endNode{} will cause the agent to
      report back the value. \endPar{}\endNode{}\Node%
{\def\Element%
{736}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In addition,there will be methods that carry out the
      specialized actions dictated by the substance of the research
      problem.\endPar{}\endNode{}\Node%
{\def\Element%
{737}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The model swarm object is usually subclassed from Swarm and
     it is the primary object that is responsible for telling
     subclasses to build their agents. The model swarm also give those
     agents a place in memory, and schedules their activities.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.04-MEMORY.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}4.3. \Node%
{\def\Element%
{739}\def\ProcessingMode%
{xref-title-mode}}Managing Memory in Swarms\endNode{}\def\HeadingText{%
4.3. Managing Memory in Swarms}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{739}}\endNode{}\Node%
{\def\Element%
{740}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{743}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The allocation and deallocation of memory is a necessary
      feature in any simulation project. Allocating and deallocating
      memory is one of the most troublesome elements of designing
      software and Swarm is well equipt to deal with that problem.
      Swarm provides libraries for this purpose which make the process
      transparent to user.\endPar{}\endNode{}\Node%
{\def\Element%
{744}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In Swarm, objects are created and dropped using a notion of
      memory zones, and the "dirty work" of allocating memory is handled
      inside the libraries. In the next sections, we discuss the way
      objects are created and given a place in memory.  When those
      objects are no longer needed, the program can send that object the
      \Node%
{\def\Element%
{745}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drop\endSeq{}\endNode{} message, which removes it from
      memory.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.04-BUILDOBJ.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}4.4. \Node%
{\def\Element%
{747}\def\ProcessingMode%
{xref-title-mode}}What goes on in the \Node%
{\def\Element%
{748}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildObjects\endSeq{}\endNode{} method?\endNode{}\def\HeadingText{%
4.4. What goes on in the buildObjects method?}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{747}}\endNode{}\Node%
{\def\Element%
{749}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{752}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{755}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If the reader inspects just a few of the sample Swarm
      programs, the importance of the building objects should become
      apparent.  Objects are named and memory is set aside for them in
      this stage. In the \Node%
{\def\Element%
{756}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildObjects\endSeq{}\endNode{} method, one
      typically finds commands that not only create the objects being
      used in the current class, but there will also be a command
      which instructs the next-lower level of agent to create its
      objects.\endPar{}\endNode{}\Node%
{\def\Element%
{757}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Consider the rich example provided by the code from the
      \Node%
{\def\Element%
{758}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Arborgames\endSeq{}\endNode{} model. In the
      \Node%
{\def\Element%
{759}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildObjects\endSeq{}\endNode{} method of the observer swarm,
      one finds a large number of commands that create graphical
      display objects (objects subclassed from the graph library).
      One also finds commands that create the simulation control
      panel, which will appear on the screen and offer the user the
      ability to start and stop the simulation.\endPar{}\endNode{}\Node%
{\def\Element%
{760}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}It is vital to note also that the
      \Node%
{\def\Element%
{761}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildObjects\endSeq{}\endNode{} method in the observer swarm
      file triggers the creation of the next lower level of agents.
      It creates a memory zone and creates a model swarm in that
      memory zone. Using the current style, the code would look like
      so:\endPar{}\endNode{}\Node%
{\def\Element%
{762}}\Node%
{\def\Element%
{763}\def\ProcessingMode%
{proglist-objc-java-mode}}\Table%
{\def\DisplayAlignment%
{start}\def\TableWidth%
{full}}\TablePart%
{}\insertTableColumn%
{\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{1}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\TeXTable%
{420\p@}{2}{L{210\p@}L{210\p@}}%
\TablePartHeader%
{}\Node%
{\def\Element%
{764}\def\ProcessingMode%
{proglist-objc-java-mode}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Objective C example\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Java example\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}%
\endTablePartHeader{}\Hline%
\Node%
{\def\Element%
{768}\def\ProcessingMode%
{proglist-objc-java-mode}}\Node%
{\def\Element%
{768}\def\ProcessingMode%
{proglist-objc-java-mode}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{771}\def\ProcessingMode%
{proglist-objc-java-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}forestModelSwarm = [ForestModelSwarm create: self];  
[forestModelSwarm buildObjects];\endPar{}\endNode{}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{773}\def\ProcessingMode%
{proglist-objc-java-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}forestModelSwarm = ForestModelSwarm (this.getZone());  
forestModelSwarm.buildObjects ();\endPar{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}\endNode{}%
\TablePartFooter%
{}\endTablePartFooter{}\endTeXTable{}%
\endTablePart{}\endNode{}%
\endTable{}%
\endNode{}\endNode{}\Node%
{\def\Element%
{774}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{775}}\Seq%
{\def\fPosture%
{italic}}In the Objective C case only\endSeq{}\endNode{}, users may
      find older versions of this code which accomplish the same
      purpose, but are slightly more verbose and do not take into
      account the fact that the observer swarm object is itself a
      memory zone.\endPar{}\endNode{}\Node%
{\def\Element%
{776}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}modelZone = [Zone create: [self getZone]];
forestModelSwarm = [ForestModelSwarm create: modelZone];  
[forestModelSwarm buildObjects];\endPar{}\endNode{}\Node%
{\def\Element%
{777}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Note the importance of the last line in either of these
      excerpts. The first line of the code creates the model swarm
      object (in this case, it is called
      \Node%
{\def\Element%
{778}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}forestModelSwarm\endSeq{}\endNode{}), but the last line tells
      that object to create its own objects by telling the
      \Node%
{\def\Element%
{779}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}forestModelSwarm\endSeq{}\endNode{} to execute its own
      \Node%
{\def\Element%
{780}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildObjects\endSeq{}\endNode{} method.  To find out what that
      implies, one must go look in the implementation file (or
      \Node%
{\def\Element%
{781}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}.java\endSeq{}\endNode{} file in the Java case) for the
      \Node%
{\def\Element%
{782}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ForestModelSwarm\endSeq{}\endNode{} to see what objects it
      creates.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.04-BUILDACTION.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}4.5. \Node%
{\def\Element%
{784}\def\ProcessingMode%
{xref-title-mode}}What goes on in the \Node%
{\def\Element%
{785}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildActions\endSeq{}\endNode{} method?\endNode{}\def\HeadingText{%
4.5. What goes on in the buildActions method?}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{784}}\endNode{}\Node%
{\def\Element%
{786}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{789}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{792}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} In the standard case, the \Node%
{\def\Element%
{793}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildActions\endSeq{}\endNode{}
      method has two important components.  It creates objects of
      these two classes.

      \Node%
{\def\Element%
{794}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{795}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{796}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{797}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ActionGroup\endSeq{}\endNode{}: an ordered
            set of "simultaneous" events and \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{798}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{799}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{800}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{}: controls how
          often the elements in the action group are
          executed\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}

    \endPar{}\endNode{}\Node%
{\def\Element%
{801}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{803}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In the \Node%
{\def\Element%
{804}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildActions\endSeq{}\endNode{} methods of the
      Arborgames model, there are plenty of interesting examples.  In
      the observer swarm, for example, there are commands that
      schedule the updating of the graphical display and also there
      are commands that instruct the lower level classes to execute
      their own \Node%
{\def\Element%
{805}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildActions\endSeq{}\endNode{} methods.\endPar{}\endNode{}\Node%
{\def\Element%
{806}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} In the \Node%
{\def\Element%
{807}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm\endSeq{}\endNode{}'s
      \Node%
{\def\Element%
{808}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildActions\endSeq{}\endNode{} method, one typically finds
      the heart of the substantive action of the simulation.  Commands
      tell agents, or lists of agents, that they should carry out
      their methods.  These commands are placed into instances of the
      \Node%
{\def\Element%
{809}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ActionGroup\endSeq{}\endNode{} class, which means that they
      will all be repeated whenever the group is repeated. The
      repetition is controlled by commands that create schedules and
      indicate how often those schedules will be repeated.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.04-SCHEDULE.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}4.6. \Node%
{\def\Element%
{811}\def\ProcessingMode%
{xref-title-mode}}Merging Schedules in Swarms\endNode{}\def\HeadingText{%
4.6. Merging Schedules in Swarms}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{811}}\endNode{}\Node%
{\def\Element%
{812}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}As mentioned above, there can be
      \Node%
{\def\Element%
{813}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildActions\endSeq{}\endNode{} methods in many different
      classes.  Since each one can create action groups and schedules,
      it is important that all of these activities are coordinated in
      a logical way.  One of the strengths of the Swarm toolkit is
      that it maintains a coherent, master schedule. The schedules of
      each sub Swarm are merged into the schedule of next higher
      level. Finally all schedules are merged in the top level Swarm.
      This synchronization is managed by the Swarm Activity library
      when the \Node%
{\def\Element%
{814}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}activateIn:\endSeq{}\endNode{}method is called in
      each successive element of the hierarchy. \endPar{}\endNode{}\Node%
{\def\Element%
{815}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{817}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This multi-level integration of swarm schedules means that
      the model can indeed be thought of as a nested hierarchy of
    models.\endPar{}\endNode{}\Node%
{\def\Element%
{818}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Node%
{\def\Element%
{819}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Figure 4-1. \endSeq{}Nested hierarchy of Swarms\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{819}}\endNode{}\Node%
{\def\Element%
{820}}\Par%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertExternalGraphic%
{\def\DisplayAlignment%
{start}\def\IsDisplay%
{1}\def\ScaleType%
{false}\def\ScaleX%
{0.8}\def\ScaleY%
{0.8}\def\EntitySystemId%
{<OSFILE>/swarm/alex/src/Swarm/swarmguide/figs/recursive-swarm.eps}\def\NotationSystemId%
{EPS}}\endPar{}\endNode{}\endPar{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{821}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}A Swarm as a Virtual Computer\endPar{}\endNode{}\Node%
{\def\Label%
{SYSTEM-DIAGRAM.FIGURE}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Node%
{\def\Element%
{823}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Figure 4-2. \endSeq{}Swarm virtual computer\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{823}}\endNode{}\Node%
{\def\Element%
{824}}\Par%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertExternalGraphic%
{\def\DisplayAlignment%
{start}\def\IsDisplay%
{1}\def\ScaleType%
{false}\def\ScaleX%
{0.8}\def\ScaleY%
{0.8}\def\EntitySystemId%
{<OSFILE>/swarm/alex/src/Swarm/swarmguide/figs/system-diagram.eps}\def\NotationSystemId%
{EPS}}\endPar{}\endNode{}\endPar{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{825}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}At an even more abstract level, the Swarm libraries can be
      thought of as a layer on top of the operating system's
      kernel. This notion is especially relevant when the user can
      pause a simulation and individually interact with agents,
      reviewing and changing their internal values.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.05.CHAPTER}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{827}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 5. The Graphical User Interface\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{827}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 5. The Graphical User Interface\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Chapter 5. \Seq%
{}\Node%
{\def\Element%
{827}\def\ProcessingMode%
{component-title-mode}}The Graphical User Interface\endNode{}\endSeq{}\def\HeadingText{%
Chapter 5. The Graphical User Interface}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{827}}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.05-GUI-ELEM.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}5.1. \Node%
{\def\Element%
{829}\def\ProcessingMode%
{xref-title-mode}}Elements of the Swarm GUI\endNode{}\def\HeadingText{%
5.1. Elements of the Swarm GUI}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{829}}\endNode{}\Node%
{\def\Element%
{830}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{833}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{836}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Swarm provides a number of classes and protocols which
      generate a graphical user interface (GUI) to the user running a
      Swarm simulation, including:

      \Node%
{\def\Label%
{GUI-GRAPH.FIGURE}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Node%
{\def\Element%
{838}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Figure 5-1. \endSeq{}Line graphs (in this case, a time series)\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{838}}\endNode{}\Node%
{\def\Element%
{839}}\Par%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertExternalGraphic%
{\def\DisplayAlignment%
{center}\def\IsDisplay%
{1}\def\ScaleType%
{false}\def\ScaleX%
{0.8}\def\ScaleY%
{0.8}\def\EntitySystemId%
{<OSFILE>/swarm/alex/src/Swarm/swarmguide/figs/gui-graph.eps}\def\NotationSystemId%
{EPS}}\endPar{}\endNode{}\endPar{}\endSeq{}\endDisplayGroup{}\endNode{}
      
      \Node%
{\def\Label%
{GUI-HISTOGRAM.FIGURE}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Node%
{\def\Element%
{841}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Figure 5-2. \endSeq{}Histograms\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{841}}\endNode{}\Node%
{\def\Element%
{842}}\Par%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertExternalGraphic%
{\def\DisplayAlignment%
{center}\def\IsDisplay%
{1}\def\ScaleType%
{false}\def\ScaleX%
{0.8}\def\ScaleY%
{0.8}\def\EntitySystemId%
{<OSFILE>/swarm/alex/src/Swarm/swarmguide/figs/gui-histogram.eps}\def\NotationSystemId%
{EPS}}\endPar{}\endNode{}\endPar{}\endSeq{}\endDisplayGroup{}\endNode{}
      
      \Node%
{\def\Label%
{GUI-RASTER.FIGURE}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Node%
{\def\Element%
{844}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Figure 5-3. \endSeq{}Rasters of discrete two-dimensional data\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{844}}\endNode{}\Node%
{\def\Element%
{845}}\Par%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertExternalGraphic%
{\def\DisplayAlignment%
{center}\def\IsDisplay%
{1}\def\ScaleType%
{false}\def\ScaleX%
{0.8}\def\ScaleY%
{0.8}\def\EntitySystemId%
{<OSFILE>/swarm/alex/src/Swarm/swarmguide/figs/gui-raster.eps}\def\NotationSystemId%
{EPS}}\endPar{}\endNode{}\endPar{}\endSeq{}\endDisplayGroup{}\endNode{}
      
      \Node%
{\def\Label%
{SIMPLEBUG-PROBES1}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Node%
{\def\Element%
{847}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Figure 5-4. \endSeq{}Example \Node%
{\def\Element%
{848}\def\ProcessingMode%
{formal-object-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeMaps\endSeq{}\endNode{} for the
          \Node%
{\def\Element%
{849}\def\ProcessingMode%
{formal-object-title-mode}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}tutorial\endSeq{}\endNode{}
          \Node%
{\def\Element%
{850}\def\ProcessingMode%
{formal-object-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm\endSeq{}\endNode{} and \Node%
{\def\Element%
{851}\def\ProcessingMode%
{formal-object-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ObserverSwarm
          \endSeq{}\endNode{}\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{847}}\endNode{}\Node%
{\def\Element%
{852}}\Par%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertExternalGraphic%
{\def\DisplayAlignment%
{start}\def\IsDisplay%
{1}\def\ScaleType%
{false}\def\ScaleX%
{0.8}\def\ScaleY%
{0.8}\def\EntitySystemId%
{<OSFILE>/swarm/alex/src/Swarm/swarmguide/figs/simplebug-probes1.eps}\def\NotationSystemId%
{EPS}}\endPar{}\endNode{}\endPar{}\endSeq{}\endDisplayGroup{}\endNode{}
      
      All except the last (probes) are fairly self-explanatory and
      will be dealt with in subsequent chapters.  This section
      describes how probes appear to the user running a Swarm
      simulation, and how the user can manipulate them.  Probes also
      serve purposes \Node%
{\def\Element%
{853}}\Seq%
{\def\fPosture%
{italic}}other\endSeq{}\endNode{} than assisting
      graphical widgets that the user can manipulate.  However, in
      this section we will focus only on their role in the context of
      the GUI of a running simulation.  The construction of the probes
      using the Swarm libraries is also left to a subsequent chapter.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.05-GUI-PROBE.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}5.2. \Node%
{\def\Element%
{855}\def\ProcessingMode%
{xref-title-mode}}GUI Probe Displays\endNode{}\def\HeadingText{%
5.2. GUI Probe Displays}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{855}}\endNode{}\Node%
{\def\Element%
{856}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{858}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Graphical \Node%
{\def\Element%
{859}}\Seq%
{\def\fPosture%
{italic}}probes\endSeq{}\endNode{} allow a user to view
      a snapshot of any object in a Swarm simulation in a graphical
      form.  There are two distinct kinds of displays the user might
      see:\endPar{}\endNode{}\Node%
{\def\Element%
{860}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{861}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{862}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{863}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}DefaultProbeMaps. \endSeq{}\endNode{}\Node%
{\def\Element%
{864}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}If
          an object to be probed is specified
          \Node%
{\def\Element%
{865}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fPosture%
{italic}}without\endSeq{}\endNode{} any particular
          \Node%
{\def\Element%
{866}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeMap\endSeq{}\endNode{} being specified, then the
          \Node%
{\def\Element%
{867}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeDisplay\endSeq{}\endNode{} generated will provide a
          window of class \Node%
{\def\Element%
{868}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}DefaultProbeDisplay\endSeq{}\endNode{},
          which displays all the variables resident in that class
          structure.

            \Node%
{\def\Label%
{GUI-PROBEMAP-COMPLETE.FIGURE}\def\ProcessingMode%
{listitem-content-mode}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Node%
{\def\Element%
{870}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Figure 5-5. \endSeq{}Default ProbeMap (also showing the superclass)\endPar{}\endNode{}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{870}\def\ProcessingMode%
{listitem-content-mode}}\endNode{}\Node%
{\def\Element%
{871}\def\ProcessingMode%
{listitem-content-mode}}\Par%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertExternalGraphic%
{\def\DisplayAlignment%
{start}\def\IsDisplay%
{1}\def\ScaleType%
{false}\def\ScaleX%
{0.8}\def\ScaleY%
{0.8}\def\EntitySystemId%
{<OSFILE>/swarm/alex/src/Swarm/swarmguide/figs/gui-probemap-complete.eps}\def\NotationSystemId%
{EPS}}\endPar{}\endNode{}\endPar{}\endSeq{}\endDisplayGroup{}\endNode{}

          \endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{872}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{873}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{874}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}CustomProbeMaps. \endSeq{}\endNode{}\Node%
{\def\Element%
{875}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}If a
          \Node%
{\def\Element%
{876}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeMap\endSeq{}\endNode{} \Node%
{\def\Element%
{877}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fPosture%
{italic}}is\endSeq{}\endNode{}
          specified then the \Node%
{\def\Element%
{878}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeDisplay\endSeq{}\endNode{}
          follows exactly the specification as represented by the
          contents of a \Node%
{\def\Element%
{879}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeMap\endSeq{}\endNode{}. When used in
          this manner, \Node%
{\def\Element%
{880}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeDisplays\endSeq{}\endNode{} can
          generate tailored interfaces to objects (so for example, we
          have purposefully hidden certain instance variables in the
          \Node%
{\def\Element%
{881}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MousetrapModelSwarm\endSeq{}\endNode{} class, and have
          shown only one of the methods which the class understands).
            \Node%
{\def\Label%
{GUI-PROBEMAP-CUSTOMIZED.FIGURE}\def\ProcessingMode%
{listitem-content-mode}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Node%
{\def\Element%
{883}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Figure 5-6. \endSeq{}Custom ProbeMap\endPar{}\endNode{}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{883}\def\ProcessingMode%
{listitem-content-mode}}\endNode{}\Node%
{\def\Element%
{884}\def\ProcessingMode%
{listitem-content-mode}}\Par%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertExternalGraphic%
{\def\DisplayAlignment%
{start}\def\IsDisplay%
{1}\def\ScaleType%
{false}\def\ScaleX%
{1}\def\ScaleY%
{1}\def\EntitySystemId%
{<OSFILE>/swarm/alex/src/Swarm/swarmguide/figs/gui-probemap-customized.eps}\def\NotationSystemId%
{EPS}}\endPar{}\endNode{}\endPar{}\endSeq{}\endDisplayGroup{}\endNode{}
          \endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER1.05-PROBE-USE.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}5.3. \Node%
{\def\Element%
{886}\def\ProcessingMode%
{xref-title-mode}}Using the GUI Probe Display\endNode{}\def\HeadingText{%
5.3. Using the GUI Probe Display}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{886}}\endNode{}\Node%
{\def\Element%
{887}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Common to both the standard
      \Node%
{\def\Element%
{888}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeDisplay\endSeq{}\endNode{} and the
      \Node%
{\def\Element%
{889}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}CompleteProbeDisplay\endSeq{}\endNode{}:\endPar{}\endNode{}\Node%
{\def\Element%
{890}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{891}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{892}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}The different fields in the
          \Node%
{\def\Element%
{893}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeDisplay\endSeq{}\endNode{} can be updated by typing
          in new values and pressing \Node%
{\def\Element%
{894}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Return\endSeq{}\endNode{}.
          However, certain fields (containing pointers or
          \Node%
{\def\Element%
{895}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}id\endSeq{}\endNode{}s, for example) cannot be modified and will
          generate a beep if such a modification is
          attempted.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{896}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{897}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{} If an instance variable/argument slot is
          defined to hold an object, then that object can be
          drag\Entity{amp}dropped into another variable/argument slot by
          clicking on it with the \Node%
{\def\Element%
{898}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}first mouse
            button\endSeq{}\endNode{} (a small rectangle with the name of the
          object will appear - simply drag it to another
          object-typed variable/argument slot and release the mouse
          button).\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{899}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{900}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{} Also, if an instance variable/argument slot is
          defined to hold an object, then that object can be inspected
          by clicking the entry for that variable/argument slot with
          the \Node%
{\def\Element%
{901}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}third mouse button \endSeq{}\endNode{}(a
          \Node%
{\def\Element%
{902}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeDisplay\endSeq{}\endNode{} for that object will be
          generated).\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{903}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Available Only on the Customized
    \Node%
{\def\Element%
{904}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeDisplay\endSeq{}\endNode{}:\endPar{}\endNode{}\Node%
{\def\Element%
{905}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{906}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{907}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{} Note that the sunken label at the top of the
          \Node%
{\def\Element%
{908}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeDisplay\endSeq{}\endNode{} is also active.  By
          clicking on it with the \Node%
{\def\Element%
{909}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}first mouse
          button\endSeq{}\endNode{} you get a drag\Entity{amp}drop'able
          representation of \Node%
{\def\Element%
{910}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}self\endSeq{}\endNode{}. By clicking on it
          with the \Node%
{\def\Element%
{911}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}third mouse button\endSeq{}\endNode{} you
          get a \Node%
{\def\Element%
{912}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}CompleteProbeDisplay\endSeq{}\endNode{} to
          \Node%
{\def\Element%
{913}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}self\endSeq{}\endNode{}.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{914}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Available only on the
    \Node%
{\def\Element%
{915}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}CompleteProbeDisplay\endSeq{}\endNode{}:\endPar{}\endNode{}\Node%
{\def\Element%
{916}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{917}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{918}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{} The green \Node%
{\def\Element%
{919}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Arial}}superclass\endSeq{}\endNode{}
          button can be used to display the succesive superclasses of
          the object being probed.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{920}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{921}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{} The red \Node%
{\def\Element%
{922}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Arial}}hide\endSeq{}\endNode{} button can
          be used to hide classes which are irrelevant thus reducing
          clutter.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{923}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{924}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{} The \Node%
{\def\Element%
{925}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Arial}}hide\endSeq{}\endNode{} button on the
          lowest class in the hierarchy has a special meaning since
          clicking on it dismisses the entire
          \Node%
{\def\Element%
{926}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeDisplay\endSeq{}\endNode{}.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\endSeq{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.PART}}\Seq%
{}\Seq%
{}\SpS%
{\def\PageNColumns%
{1}\def\InputWhitespaceTreatment%
{collapse}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{}
\SpSOtherBackRightHeader%
{}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{}
\SpSOtherFrontRightHeader%
{}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{}
\SpSFirstFrontRightHeader%
{}\Par%
{\def\LineSpacing%
{1\p@}\def\LineSpacingFactor%
{0}}\endPar{}\Seq%
{}\Node%
{\def\Element%
{928}\def\ProcessingMode%
{part-titlepage-recto-mode}}\Par%
{\def\fSize%
{24.883\p@}\def\LineSpacing%
{32.348\p@}\def\LineSpacingFactor%
{0}\def\Quadding%
{center}\def\fFamName{Arial}\def\fWeight%
{bold}\def\sbNom%
{18.662\p@}\def\sbMin%
{18.662\p@}\def\sbMax%
{18.662\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Part II. Swarm Applications: Examples and Illustrations\endPar{}\endNode{}\endSeq{}\endSpS{}\endSeq{}\Node%
{\def\Element%
{928}}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.01.CHAPTER}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{930}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 6. The Swarm Tutorial: Reprise\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{930}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 6. The Swarm Tutorial: Reprise\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Chapter 6. \Seq%
{}\Node%
{\def\Element%
{930}\def\ProcessingMode%
{component-title-mode}}The Swarm Tutorial: Reprise\endNode{}\endSeq{}\def\HeadingText{%
Chapter 6. The Swarm Tutorial: Reprise}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{930}}\endNode{}\Node%
{\def\Element%
{931}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Most Swarm users share terminology and perspective that allows
    them to communicate with each other about modeling projects.
    These shared elements are first introduced to most users in the
    Swarm Tutorial, a series of exercises prepared by Christopher
    Langton.  The Tutorial exercises are distributed on the SDG web
    site in the \Node%
{\def\Element%
{932}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}swarmapps\endSeq{}\endNode{} package.\endPar{}\endNode{}\Node%
{\def\Element%
{933}}\DisplayGroup%
{\def\StartIndent%
{69.6\p@}\def\StartIndentFactor%
{0}\def\fFamName{Arial}\def\fSize%
{9\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\DisplayGroup%
{}\Par%
{\def\FirstLineStartIndent%
{-21.6\p@}\def\FirstLineStartIndentFactor%
{0}}\LineField%
{\def\FieldWidth%
{21.6\p@}\def\FieldWidthFactor%
{0}}\insertExternalGraphic%
{\def\EntitySystemId%
{figs/important.eps}\def\NotationSystemId%
{}\def\EscapementDirection%
{false}\def\PositionPointX%
{0\p@}\def\PositionPointXFactor%
{0}\def\PositionPointY%
{0\p@}\def\PositionPointYFactor%
{0}}\endLineField{}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}\Node%
{\def\Element%
{934}\def\ProcessingMode%
{xref-title-mode}}Do Your Homework!\endNode{}\endSeq{}\endPar{}\Node%
{\def\Element%
{934}}\endNode{}\Node%
{\def\Element%
{935}}\Par%
{\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}There is no way to get anywhere with Swarm unless you are
      willing to get your hands dirty.  The
      \Node%
{\def\Element%
{936}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Swarmapps\endSeq{}\endNode{} package provides some
      examples of swarm programs that deserve study.  That package
      also provides the bug tutorial, a series of exercises that all
      Swarm users must read, edit, compile, study, test, explore, and
      investigate.\endPar{}\endNode{}\Node%
{\def\Element%
{937}}\Par%
{\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If you are new to Swarm, and don't know much about programming
      in general, and possibly less about Objective-C in particular, the
      tutorial series is a perfect place to start. Even if you are an
      expert programmer, a study of the tutorial is the right place to
      start. Many of key terms in Swarm model building are introduced in
      the tutorial and there is simply no substitute for a careful
      analysis of the material.\endPar{}\endNode{}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{938}}\DisplayGroup%
{\def\StartIndent%
{69.6\p@}\def\StartIndentFactor%
{0}\def\fFamName{Arial}\def\fSize%
{9\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\DisplayGroup%
{}\Par%
{\def\FirstLineStartIndent%
{-21.6\p@}\def\FirstLineStartIndentFactor%
{0}}\LineField%
{\def\FieldWidth%
{21.6\p@}\def\FieldWidthFactor%
{0}}\insertExternalGraphic%
{\def\EntitySystemId%
{figs/warning.eps}\def\NotationSystemId%
{}\def\EscapementDirection%
{false}\def\PositionPointX%
{0\p@}\def\PositionPointXFactor%
{0}\def\PositionPointY%
{0\p@}\def\PositionPointYFactor%
{0}}\endLineField{}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}\Node%
{\def\Element%
{939}\def\ProcessingMode%
{xref-title-mode}}Java Stops Here!\endNode{}\endSeq{}\endPar{}\Node%
{\def\Element%
{939}}\endNode{}\Node%
{\def\Element%
{940}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}From hereon in, the \Node%
{\def\Element%
{941}}\Seq%
{\def\fPosture%
{italic}}Guide\endSeq{}\endNode{} will only
      refer to examples in Objective C.  The
      \Node%
{\def\Element%
{942}}\Seq%
{\def\fPosture%
{italic}}Guide\endSeq{}\endNode{} is in the process of being updated
      to include Java examples of the basic Swarm concepts covered in
      the following chapters.  That said, although many of the
      concepts described are described in Objective C terms, most of
      the concepts carry over intact into the Java context, and
      (mostly!)  only differ in fairly trivial syntactical ways, so it
      possible that Java users can benefit from the following sections
      \endPar{}\endNode{}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.01-TUTORIAL.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}6.1. \Node%
{\def\Element%
{944}\def\ProcessingMode%
{xref-title-mode}}Tutorial Progression\endNode{}\def\HeadingText{%
6.1. Tutorial Progression}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{944}}\endNode{}\Node%
{\def\Element%
{945}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The tutorial gameplan is as follows: Begin with a program
      written in C that is little more than a basic "hello world"
      program about a "bug" creature that wanders.  Through a series
      of steps which first introduce Objective-C and then the Swarm
      hierarchical modeling approach, one can gain a good grounding in
      Swarm modeling.
    \endPar{}\endNode{}\Node%
{\def\Element%
{946}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The tutorial outline is as follows:\endPar{}\endNode{}\Node%
{\def\Element%
{947}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{948}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}1. \endLineField{}\endSeq{}\Node%
{\def\Element%
{949}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{950}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}simpleCBug. \endSeq{}\endNode{}\Node%
{\def\Element%
{951}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Simple C code about a bug\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{952}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}2. \endLineField{}\endSeq{}\Node%
{\def\Element%
{953}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{954}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}simpleObjCBug. \endSeq{}\endNode{}\Node%
{\def\Element%
{955}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Bug is now Objective-C class\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{956}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}3. \endLineField{}\endSeq{}\Node%
{\def\Element%
{957}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{958}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}simpleObjCBug2. \endSeq{}\endNode{}\Node%
{\def\Element%
{959}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Adds FoodSpace object\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{960}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}4. \endLineField{}\endSeq{}\Node%
{\def\Element%
{961}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{962}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}simpleSwarmBug. \endSeq{}\endNode{}\Node%
{\def\Element%
{963}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Introduces the \Node%
{\def\Element%
{964}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm\endSeq{}\endNode{} as the
        central organizing element.  From the class
        \Node%
{\def\Element%
{965}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Swarm\endSeq{}\endNode{} in the Swarm library, this code
        creates subclass \Node%
{\def\Element%
{966}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm\endSeq{}\endNode{}, and the
        instance of \Node%
{\def\Element%
{967}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm\endSeq{}\endNode{} is created and
        called \Node%
{\def\Element%
{968}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}modelSwarm\endSeq{}\endNode{} (in
        \Node%
{\def\Element%
{969}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}main.m\endSeq{}\endNode{}). In the class
        \Node%
{\def\Element%
{970}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm\endSeq{}\endNode{}, one finds an implementation
        of the \Node%
{\def\Element%
{971}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{} class, the workhorse
        that keeps the Swarm train moving on time.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{972}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}5. \endLineField{}\endSeq{}\Node%
{\def\Element%
{973}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{974}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}simpleSwarmBug2. \endSeq{}\endNode{}\Node%
{\def\Element%
{975}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Introduces the \Node%
{\def\Element%
{976}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}bugList\endSeq{}\endNode{}, an instance of
        the \Node%
{\def\Element%
{977}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} class, and illustrates some
        ways in which simulations with many agents can be
        organized.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{978}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}6. \endLineField{}\endSeq{}\Node%
{\def\Element%
{979}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{980}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}simpleSwarmBug3. \endSeq{}\endNode{}\Node%
{\def\Element%
{981}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Introduces the Swarm class
      \Node%
{\def\Element%
{982}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ObjectLoader\endSeq{}\endNode{} that the can grab data from
      a file and read it into an object (in this case, the
      \Node%
{\def\Element%
{983}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}modelSwarm\endSeq{}\endNode{}).\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{984}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}7. \endLineField{}\endSeq{}\Node%
{\def\Element%
{985}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{986}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}simpleObserverBug. \endSeq{}\endNode{}\Node%
{\def\Element%
{987}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Subclasses from the Swarm class
        \Node%
{\def\Element%
{988}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}SwarmGUI\endSeq{}\endNode{} to create a new class
        \Node%
{\def\Element%
{989}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ObserverSwarm\endSeq{}\endNode{}, an instance of which is
        created and called \Node%
{\def\Element%
{990}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}observerSwarm\endSeq{}\endNode{}.  This is
        the first example with a complete Swarm hierarchy which begins
        with main.m and translates actions from
        \Node%
{\def\Element%
{991}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ObserverSwarm\endSeq{}\endNode{} to
        \Node%
{\def\Element%
{992}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm\endSeq{}\endNode{} to individual
        agents.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{993}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}8. \endLineField{}\endSeq{}\Node%
{\def\Element%
{994}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{995}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}simpleObserverBug2. \endSeq{}\endNode{}\Node%
{\def\Element%
{996}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}This example adds probes that allow users to click on
        graphics to reveal information inside them.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{997}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}9. \endLineField{}\endSeq{}\Node%
{\def\Element%
{998}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{999}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}simpleExperBug. \endSeq{}\endNode{}\Node%
{\def\Element%
{1000}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Introduces the possibility that a simulation might be run
        over and over in "batch" mode while the graphical interface
        reports summaries of the runs to the
        user. \endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.01-LEARN.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}6.2. \Node%
{\def\Element%
{1002}\def\ProcessingMode%
{xref-title-mode}}What Are You Supposed to Learn from the Tutorial?\endNode{}\def\HeadingText{%
6.2. What Are You Supposed to Learn from the Tutorial?}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1002}}\endNode{}\Node%
{\def\Element%
{1003}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1006}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}So, after you worked on the tutorial for 20 hours or so,
      what then?  You should know all kinds of details about how Swarm
      can be used, of course, but there are some bigger themes.\endPar{}\endNode{}\Node%
{\def\Element%
{1007}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}It is not vital to know how to model bugs (although, perhaps
      for an entomologist...), rather, it is vital to understand that
      Swarm is a toolkit that provides a housing for a modeling
      exercise.  Swarm imposes no inherent limitations on the nature
      of agents that can be represented within its framework.\endPar{}\endNode{}\Node%
{\def\Element%
{1008}}\DisplayGroup%
{\def\StartIndent%
{69.6\p@}\def\StartIndentFactor%
{0}\def\fFamName{Arial}\def\fSize%
{9\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\DisplayGroup%
{}\Par%
{\def\FirstLineStartIndent%
{-21.6\p@}\def\FirstLineStartIndentFactor%
{0}}\LineField%
{\def\FieldWidth%
{21.6\p@}\def\FieldWidthFactor%
{0}}\insertExternalGraphic%
{\def\EntitySystemId%
{figs/tip.eps}\def\NotationSystemId%
{}\def\EscapementDirection%
{false}\def\PositionPointX%
{0\p@}\def\PositionPointXFactor%
{0}\def\PositionPointY%
{0\p@}\def\PositionPointYFactor%
{0}}\endLineField{}Don't read much further in this user guide until you work on
        the tutorial.  You will know if you have worked on it long
        enough when you understand clearly each of the following
        points.\endPar{}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1010}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{1011}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1012}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{1013}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Swarm has many classes to make the modeling
            job easier. \endSeq{}\endNode{}\Node%
{\def\Element%
{1014}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}There are workhorse classes like
            \Node%
{\def\Element%
{1015}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Swarm\endSeq{}\endNode{},
            \Node%
{\def\Element%
{1016}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}SwarmGUI\endSeq{}\endNode{}, and
            \Node%
{\def\Element%
{1017}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}SwarmObject\endSeq{}\endNode{}, but also there are
            many "little helpers" like
            \Node%
{\def\Element%
{1018}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{}. Getting to know the
            ins-and-outs of these little helpers is extremely
            important.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1019}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1020}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{1021}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Swarm handles memory details. \endSeq{}\endNode{}\Node%
{\def\Element%
{1022}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Did you note that there are no
            \Node%
{\def\Element%
{1023}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}malloc\endSeq{}\endNode{} and free\Node%
{\def\Element%
{1024}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}\endSeq{}\endNode{}
            and other standard C memory-managing commands in Swarm
            code?  Those commands exist, but they exist inside the
            Swarm library, and they are accessed on behalf of users
            who use \Node%
{\def\Element%
{1025}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}create\endSeq{}\endNode{} or
            \Node%
{\def\Element%
{1026}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{} and
            \Node%
{\def\Element%
{1027}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drop\endSeq{}\endNode{} to access memory for objects and
            get rid of them.  To create objects (instances of classes)
            in Swarm, there must either be a
            \Node%
{\def\Element%
{1028}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}create\endSeq{}\endNode{}message sent to a class or
            there must be a
            \Node%
{\def\Element%
{1029}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{}/\Node%
{\def\Element%
{1030}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{}
            pair that serves as bookends for commands that create an
            instance, set its internal state, and complete the
            instantiation.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1031}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1032}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{1033}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Case is important. \endSeq{}\endNode{}\Node%
{\def\Element%
{1034}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Including the right header files may give you access
            to "factory objects" like \Node%
{\def\Element%
{1035}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} or
            \Node%
{\def\Element%
{1036}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{}.  You can use any name you
            like for the objects that are created as instances. By
            custom, an instance of a class--an object--is named in
            small letters, such as \Node%
{\def\Element%
{1037}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}bugList\endSeq{}\endNode{} as an
            instance of \Node%
{\def\Element%
{1038}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} or
            \Node%
{\def\Element%
{1039}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}modelSchedule\endSeq{}\endNode{} as an instance of
            \Node%
{\def\Element%
{1040}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{}.  In the tutorial, when
            there is a single instance of a class to be created, by
            convention, it is typically named the lowercase version of
            the class name, such as the \Node%
{\def\Element%
{1041}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}foodSpace\endSeq{}\endNode{}
            object which is an instantiation of
            \Node%
{\def\Element%
{1042}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}FoodSpace\endSeq{}\endNode{}.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1043}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1044}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{1045}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Neatness counts. \endSeq{}\endNode{}\Node%
{\def\Element%
{1046}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}As in any kind of programming task, neatness counts.
            Classes in Swarm are created with methods that group
            together their jobs by functions.  One will often find, in
            \Node%
{\def\Element%
{1047}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ObserverSwarm\endSeq{}\endNode{} for example, commands
            that create a \Node%
{\def\Element%
{1048}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}modelSwarm\endSeq{}\endNode{} instance and
            then issue it these commands:

\Node%
{\def\Element%
{1049}\def\ProcessingMode%
{listitem-content-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}[modelSwarm buildObjects];
[modelSwarm buildActions];\endPar{}\endNode{}

            The \Node%
{\def\Element%
{1050}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildObjects\endSeq{}\endNode{} method creates
            objects and \Node%
{\def\Element%
{1051}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildActions\endSeq{}\endNode{} creates
            schedules. If one wanted to, one could build a gigantic
            method in the \Node%
{\def\Element%
{1052}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm\endSeq{}\endNode{} class
            called \Node%
{\def\Element%
{1053}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}doStuff\endSeq{}\endNode{} and then call that
            method with:

\Node%
{\def\Element%
{1054}\def\ProcessingMode%
{listitem-content-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}[modelSwarm doStuff];\endPar{}\endNode{} 

            Programs written with this approach are hard to proofread
            and manage.  It is much better to write small methods,
            each of which accomplishes a relatively specific
            task. \endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1055}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1056}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{1057}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}There is often a need for "record keeping" classes. \endSeq{}\endNode{}\Node%
{\def\Element%
{1058}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}            In order for data to be displayed meaningfully in a graph,
            for example, it must be provided to the graph object in a
            format that the graph object can handle. The class
            \Node%
{\def\Element%
{1059}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}World\endSeq{}\endNode{} in simpleObserverBug is
            subclassed from Swarm's \Node%
{\def\Element%
{1060}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Grid2d\endSeq{}\endNode{}
            class.
          \endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1061}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1062}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{1063}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Graphics are optional, but nice. \endSeq{}\endNode{}\Node%
{\def\Element%
{1064}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{} Commands in the Observer Swarm control the graphical
            display. There are many kinds of graphs and ways to alter
            their appearance. It is not necessary to design a Swarm
            program to make pretty pictures, however.  One might just
            as well run in a "batch" mode that prints numbers into
            files for later inspection.  There is a useful example of
            the batch mode in the Heatbugs code.
          \endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1065}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1066}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{1067}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Open Source means open the source. \endSeq{}\endNode{}\Node%
{\def\Element%
{1068}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}To find out what messages an instance of a class will
            respond to, you should first consult the
            \Node%
{\def\Element%
{1069}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{1070}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}API\endSeq{}\endNode{}\endSeq{}\endNode{} \Node%
{\def\Element%
{1071}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}1\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{1072}\def\ProcessingMode%
{listitem-content-mode}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}1. \endLineField{}Application Programmers Interface\endPar{}\endNode{}}\endSeq{}\endNode{}: the \Node%
{\def\Element%
{1073}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fPosture%
{italic}}Swarm Reference
            Guide\endSeq{}\endNode{}.  In most cases the average user will
            encounter, consulting the API is sufficient, but when you
            really need to know how something is implemented (either
            to understand the efficiency implications of using a
            certain method in your program or if a particular method
            appears to not behave as documented), you can go look in
            the Swarm source code itself.  That's what the members of
            the Swarm team do when users ask questions.
          \endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.01-APPS.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}6.3. \Node%
{\def\Element%
{1075}\def\ProcessingMode%
{xref-title-mode}}After the Tutorial: What now?\endNode{}\def\HeadingText{%
6.3. After the Tutorial: What now?}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1075}}\endNode{}\Node%
{\def\Element%
{1076}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} After the tutorial exercises are finished, one can then
      proceed to study the example applications in
      \Node%
{\def\Element%
{1077}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}swarmapps\endSeq{}\endNode{} and others that are
      available (for free!) on the web. The application called
      \Node%
{\def\Element%
{1078}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Heatbugs\endSeq{}\endNode{} in the
      \Node%
{\def\Element%
{1079}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}swarmapps\endSeq{}\endNode{} package gives a rich and
      workable example of a simulation that builds on the ideas in the
      tutorial. \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.02.CHAPTER}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{1081}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 7. Creating Objects In Swarm\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{1081}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 7. Creating Objects In Swarm\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Chapter 7. \Seq%
{}\Node%
{\def\Element%
{1081}\def\ProcessingMode%
{component-title-mode}}Creating Objects In Swarm\endNode{}\endSeq{}\def\HeadingText{%
Chapter 7. Creating Objects In Swarm}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{1081}}\endNode{}\Node%
{\def\Element%
{1082}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The way in which objects are created depends on a computer's
    compiler and the software libraries available to the user. The
    implementation of Objective C on a system using the GNU compiler
    will not be exactly the same as the implementation on a Next
    system.  While most of the points made in the literature on
    Objective C easily carry over to Swarm modeling, the commands
    needed to create objects are an exception.  In the Objective C
    manual for Next systems, for example, one finds a syntax methods
    \Node%
{\def\Element%
{1083}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}init\endSeq{}\endNode{} and \Node%
{\def\Element%
{1084}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}alloc\endSeq{}\endNode{} that are
    not used in Swarm.  That's why a brief study of object creation is
    important.
  \endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.02-START.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}7.1. \Node%
{\def\Element%
{1086}\def\ProcessingMode%
{xref-title-mode}}Begin at the Beginning\endNode{}\def\HeadingText{%
7.1. Begin at the Beginning}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1086}}\endNode{}\Node%
{\def\Element%
{1087}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1091}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      Pick any Swarm application you like, such as Heatbugs.  Look in
      \Node%
{\def\Element%
{1092}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}main.m\endSeq{}\endNode{}. What do you find?  There's a check
      to see if the GUI mode or batch mode is to be run, and depending
      on that choice, either the \Node%
{\def\Element%
{1093}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ObserverSwarm\endSeq{}\endNode{}
      or the \Node%
{\def\Element%
{1094}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}BatchSwarm\endSeq{}\endNode{} is designated as
      \Node%
{\def\Element%
{1095}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}theTopLevelSwarm\endSeq{}\endNode{}.\endPar{}\endNode{}\Node%
{\def\Element%
{1096}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} Suppose we have do not do anything special when compiling
      and running the \Node%
{\def\Element%
{1097}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}heatbugs\endSeq{}\endNode{} executable,
      so the GUI mode is used.  In that case, the relevant code in
      \Node%
{\def\Element%
{1098}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}main.m\endSeq{}\endNode{} is this:\endPar{}\endNode{}\Node%
{\def\Element%
{1099}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1102}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1105}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}if (swarmGUIMode == 1)
  \{
  theTopLevelSwarm = [HeatbugObserverSwarm createBegin: globalZone];
  SET\char95{}WINDOW\char95{}GEOMETRY\char95{}RECORD\char95{}NAME (theTopLevelSwarm);
  theTopLevelSwarm = [theTopLevelSwarm createEnd];
\}\endPar{}\endNode{}\Node%
{\def\Element%
{1106}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The first command inside the brackets tells the class
      \Node%
{\def\Element%
{1107}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugObserverSwarm\endSeq{}\endNode{} to execute its
      \Node%
{\def\Element%
{1108}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{} method and return an object
      which is to be named \Node%
{\def\Element%
{1109}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}theTopLevelSwarm\endSeq{}\endNode{}.  In
      this example, the \Node%
{\def\Element%
{1110}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugObserverSwarm\endSeq{}\endNode{} is
      the class and also serves as a "factory object", an object that
      can build instances of its class.  The second command is a macro
      that saves window positions on subsequent runs of the program.
      It is set between the \Node%
{\def\Element%
{1111}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{1112}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{} methods because it is setting
      permanent features of the object
      \Node%
{\def\Element%
{1113}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}theTopLevelSwarm\endSeq{}\endNode{}.  The last command "seals"
      off the creation phase by telling the recently created object
      \Node%
{\def\Element%
{1114}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}theTopLevelSwarm\endSeq{}\endNode{} to run its
      \Node%
{\def\Element%
{1115}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{} method.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1116}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1118}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1121}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1124}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1127}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      In the Swarm Reference guide, many of the protocols have methods
      that are divided between three phases. The phases are
      "Creating", "Setting", and "Using".  It is important to pay
      attention to the phase in which a method is listed.  Methods or macros
      listed in the Creating phase must only be used between the
      \Node%
{\def\Element%
{1128}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{1129}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{} messages.  If such a method is
      used after the createEnd, it will cause the program to fail.
      Similarly, a method in the Using phase must be used only after
      the createEnd method has finished.  Methods in the Setting phase
      can be used at any time in an object's life cycle. \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.02-DETAIL.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}7.2. \Node%
{\def\Element%
{1131}\def\ProcessingMode%
{xref-title-mode}}Detailed Look at
    \Node%
{\def\Element%
{1132}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{}/\Node%
{\def\Element%
{1133}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{}\endNode{}\def\HeadingText{%
7.2. Detailed Look at
    createBegin/createEnd}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1131}}\endNode{}\Node%
{\def\Element%
{1134}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      Now take the next step and look at the
      \Node%
{\def\Element%
{1135}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{1136}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{} methods that are called by the
      code in \Node%
{\def\Element%
{1137}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}main.m\endSeq{}\endNode{}.  Follow the steps into
      \Node%
{\def\Element%
{1138}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugObserverSwarm.m\endSeq{}\endNode{}.  Here you find the
      methods \Node%
{\def\Element%
{1139}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}+createBegin\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{1140}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}-createEnd\endSeq{}\endNode{}.  The plus sign on
      \Node%
{\def\Element%
{1141}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{} indicates that this method
      cannot be executed by an instance of the class
      \Node%
{\def\Element%
{1142}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm\endSeq{}\endNode{}, but rather only by the
      factory object.  Here is a portion of the method
      \Node%
{\def\Element%
{1143}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{}:\endPar{}\endNode{}\Node%
{\def\Element%
{1144}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}+ createBegin: aZone
\{
  HeatbugObserverSwarm *obj;
  id \Entity{lt}ProbeMap\Entity{gt} probeMap;
  obj = [super createBegin: aZone];
  obj->displayFrequency = 1;

  // [Code that creates "probemaps" omitted here]
  return obj;
\}\endPar{}\endNode{}\Node%
{\def\Element%
{1145}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This a good example of how the Swarm toolkit handles the
      creation of objects.  The pointer to the class
      \Node%
{\def\Element%
{1146}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugObserverSwarm\endSeq{}\endNode{} named
      \Node%
{\def\Element%
{1147}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}obj\endSeq{}\endNode{} is defined.  Since
      \Node%
{\def\Element%
{1148}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugObserverSwarm\endSeq{}\endNode{} is subclassed from
      \Node%
{\def\Element%
{1149}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}GUISwarm\endSeq{}\endNode{}, it is important to be sure that
      all of the important variables of a
      \Node%
{\def\Element%
{1150}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}GUISwarm\endSeq{}\endNode{} object are initialized and
      inherited by \Node%
{\def\Element%
{1151}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugObserverSwarm\endSeq{}\endNode{}.  This
      is done in one step by telling the superclass to execute its
      \Node%
{\def\Element%
{1152}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{} method.  Since the classes are
      linked together in a hierarchy, each higher level class in turn
      executes its \Node%
{\def\Element%
{1153}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{} statement. That is
      how the instance of the class ends up setting values for all the
      variables that it inherits.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1154}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1157}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      The \Node%
{\def\Element%
{1158}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{} method of its superclass is
      called to put the created objects in \Node%
{\def\Element%
{1159}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}aZone\endSeq{}\endNode{},
      which is the name of the space passed in from
      \Node%
{\def\Element%
{1160}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}main.m\endSeq{}\endNode{}.  The memory zone that is created is
      returned and set equal to \Node%
{\def\Element%
{1161}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}obj\endSeq{}\endNode{}. Then the
      \Node%
{\def\Element%
{1162}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}return obj\endSeq{}\endNode{} command gives back the created
      object to the calling code, in this case
      \Node%
{\def\Element%
{1163}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}main.m\endSeq{}\endNode{}, which then treats it as
      \Node%
{\def\Element%
{1164}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}theTopLevelSwarm\endSeq{}\endNode{}.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1165}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1167}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The reader can investigate in the Swarm source code to see
      that \Node%
{\def\Element%
{1168}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}GUISwarm\endSeq{}\endNode{} inherits through a
      hierarchical chain the ability to create memory zones and
      objects.  \Node%
{\def\Element%
{1169}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}GUISwarm\endSeq{}\endNode{} is subclassed from
      Swarm, which in turn inherits from
      \Node%
{\def\Element%
{1170}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}CSwarmProcess\endSeq{}\endNode{}.  That class is defined in
      the activity directory of the source code in a file called
      \Node%
{\def\Element%
{1171}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}SwarmProcess.m\endSeq{}\endNode{}.  This is the first place
      where you will find \Node%
{\def\Element%
{1172}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{1173}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{} methods as you move up the
      inheritance tree, so it must be that these are the methods that
      are executed when \Node%
{\def\Element%
{1174}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}super\endSeq{}\endNode{} is told to do
      something in this code.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1175}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      The \Node%
{\def\Element%
{1176}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{} method in
      \Node%
{\def\Element%
{1177}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugObserverSwarm.m\endSeq{}\endNode{} is quite simple:\endPar{}\endNode{}\Node%
{\def\Element%
{1178}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- createEnd
\{
  return [super createEnd];
\}\endPar{}\endNode{}\Node%
{\def\Element%
{1179}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1182}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In a case like this, when the super class is inside the
      Swarm library, it may be hard to figure out exactly why this
      command is needed. As a matter of fact, it is not necessary in
      this case at all, but it does not do any harm.  If it were
      omitted from this class, then this class would just inherit
      \Node%
{\def\Element%
{1183}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{} method from the somewhere above
      in the family tree.  By using it in this way, we make sure that
      the commands of the super class's createEnd method are executed,
      and this may be important because those steps might initialize
      some variables that this class inherits.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1184}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      There are cases in which the \Node%
{\def\Element%
{1185}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{}
      statement may be more substantial.  In the
      \Node%
{\def\Element%
{1186}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{} phase, we typically find
      commands that set permanent features of objects.  Some methods
      that initialize instance variables can also be included. In the
      example above, the variable \Node%
{\def\Element%
{1187}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}display frequency\endSeq{}\endNode{}
      inside *\Node%
{\def\Element%
{1188}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}obj\endSeq{}\endNode{} is set equal to 1.  These
      variables are set at the first possible opportunity because
      other variables may depend on them.  After
      \Node%
{\def\Element%
{1189}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}main.m\endSeq{}\endNode{} calls the
      \Node%
{\def\Element%
{1190}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{} method,
      \Node%
{\def\Element%
{1191}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}main.m\endSeq{}\endNode{} may include statements that further
      tailor the state of the object and those commands may depend on
      values set in \Node%
{\def\Element%
{1192}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{}.  Finally, when
      \Node%
{\def\Element%
{1193}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}main.m\endSeq{}\endNode{} calls
      \Node%
{\def\Element%
{1194}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{}, a new slew of commands may be
      executed that define further elements of the object.  \endPar{}\endNode{}\Node%
{\def\Element%
{1195}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      The \Node%
{\def\Element%
{1196}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{} statement may be a convenient
      place to put any code that completes the initialization of an
      object. For example, suppose inside there is a variable called
      \Node%
{\def\Element%
{1197}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}age\endSeq{}\endNode{}. In \Node%
{\def\Element%
{1198}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{},
      one might find this:\endPar{}\endNode{}\Node%
{\def\Element%
{1199}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- createEnd
\{
  [super createEnd];      
  age=0;
  return self;
\}      \endPar{}\endNode{}\Node%
{\def\Element%
{1200}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The super class's \Node%
{\def\Element%
{1201}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{} method is
      executed, which will assure that any variables initialized there
      are set properly. Then the instance variable age is set equal to
      0.  (Sometimes you will find examples in which
      \Node%
{\def\Element%
{1202}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{} is a "garbage can" that collects
      a large number of commands that set initial values for variables
      inside the object.  These commands might as well be regrouped
      and put into a new method inside the object that might be called
      \Node%
{\def\Element%
{1203}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}setInitialValues\endSeq{}\endNode{} that would be executed
      after the \Node%
{\def\Element%
{1204}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{}.  The readability of
      the code is enhanced that way.)
    \endPar{}\endNode{}\Node%
{\def\Element%
{1205}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1208}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      The \Node%
{\def\Element%
{1209}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}create\endSeq{}\endNode{} message causes the receiver to
      carry out both its \Node%
{\def\Element%
{1210}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{1211}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{} methods.  Why didn't we always
      use \Node%
{\def\Element%
{1212}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}create\endSeq{}\endNode{}? Well, sometimes we need to
      define variables between the \Node%
{\def\Element%
{1213}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{}
      and \Node%
{\def\Element%
{1214}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{} steps, as seen in
      \Node%
{\def\Element%
{1215}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}main.m\endSeq{}\endNode{}. If there is no need to set values
      in that way (no methods are listed in the Creating phase in the Swarm
      Reference Guide are used), then \Node%
{\def\Element%
{1216}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}create\endSeq{}\endNode{} is
      enough.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.02-ZONES.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}7.3. \Node%
{\def\Element%
{1218}\def\ProcessingMode%
{xref-title-mode}}Swarm Zones and Recursive Objects Creation\endNode{}\def\HeadingText{%
7.3. Swarm Zones and Recursive Objects Creation}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1218}}\endNode{}\Node%
{\def\Element%
{1219}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      One of the most troublesome exercises in computer programming is
      the management of dynamically allocated memory. The correct
      usage of dynamic memory requires a great deal of care, and when
      a portion of memory is no longer needed, is must be "freed,"
      made available to the central processor.  If memory is allocated
      and then forgotten, a "memory leak" is said to exist because the
      program does not tell the operating system to reclaim unused
      memory addresses.  \endPar{}\endNode{}\Node%
{\def\Element%
{1220}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1223}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1225}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      The Swarm libraries are designed to handle memory allocation
      with a minimum of user intervention. The
      \Node%
{\def\Element%
{1226}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{} and create commands allocate
      memory and the user is not expected to think about where the RAM
      comes from to store an object.  Similarly, when a program is
      finished with an object, that object can be sent the
      \Node%
{\def\Element%
{1227}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drop\endSeq{}\endNode{} message and that should take care of
      freeing the memory that the object used.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1228}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      The create statements used in Swarm typically have this
      flavor:\endPar{}\endNode{}\Node%
{\def\Element%
{1229}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}someUserCreatedObject = [SomeSwarmLibraryObject  create: someMemoryZoneHere];\endPar{}\endNode{}\Node%
{\def\Element%
{1230}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} (The method \Node%
{\def\Element%
{1231}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}create\endSeq{}\endNode{} can be replaced by
      a
      \Node%
{\def\Element%
{1232}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{}/\Node%
{\def\Element%
{1233}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{}
      pair as described above.)  More specific examples are discussed
      below and are of course scattered throughout the Swarm examples.
      The important thing is that an object in the Swarm library is
      able to respond to a method that creates an instance of itself
      and that instance lives in a memory zone that is managed by the
      Swarm library.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1234}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In the \Node%
{\def\Element%
{1235}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}main.m\endSeq{}\endNode{} file, the top level Swarm
      is created and it is allocated into an instance of
      \Node%
{\def\Element%
{1236}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Zone\endSeq{}\endNode{} called
      \Node%
{\def\Element%
{1237}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}globalZone\endSeq{}\endNode{}.\endPar{}\endNode{}\Node%
{\def\Element%
{1238}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}theTopLevelSwarm = [HeatbugObserverSwarm createBegin: globalZone];\endPar{}\endNode{}\Node%
{\def\Element%
{1239}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This \Node%
{\def\Element%
{1240}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}globalZone\endSeq{}\endNode{} is created when the
      initSwarm function is called at the beginning of a swarm
      program. 
      The top level Swarm is told to create itself
      in that space. Any Swarm objects of type
      \Node%
{\def\Element%
{1241}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Swarm\endSeq{}\endNode{} or \Node%
{\def\Element%
{1242}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}GUISwarm\endSeq{}\endNode{}
      are able to serve as memory zones. Inside the
      \Node%
{\def\Element%
{1243}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm\endSeq{}\endNode{} one sees a command such
      as:\endPar{}\endNode{}\Node%
{\def\Element%
{1244}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}probeMap = [EmptyProbeMap createBegin: self];\endPar{}\endNode{}\Node%
{\def\Element%
{1245}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This tells the \Node%
{\def\Element%
{1246}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}EmptyProbeMap\endSeq{}\endNode{} class in
      the Swarm library to create an instance of itself in the memory
      zone allocated by the \Node%
{\def\Element%
{1247}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm\endSeq{}\endNode{}, and
      that allocated object is to be named
      \Node%
{\def\Element%
{1248}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeMap.\endSeq{}\endNode{}
    \endPar{}\endNode{}\Node%
{\def\Element%
{1249}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The objects at the top level of the swarm hierarchy (whether
      Swarm or GUISwarm) have the power to "create space" for objects
      that live inside them.  As the code in
      \Node%
{\def\Element%
{1250}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}main.m\endSeq{}\endNode{} proceeds through the creation of
      \Node%
{\def\Element%
{1251}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}theTopLevelSwarm\endSeq{}\endNode{}, it is allocating memory and
      setting other important creation-state variables.  Then, that
      newly created object is told to go through its paces:\endPar{}\endNode{}\Node%
{\def\Element%
{1252}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[theTopLevelSwarm buildObjects];
[theTopLevelSwarm buildActions];
[theTopLevelSwarm activateIn: nil];
[theTopLevelSwarm go];\endPar{}\endNode{}\Node%
{\def\Element%
{1253}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}When you go look at the \Node%
{\def\Element%
{1254}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildObjects\endSeq{}\endNode{} method
      executed by the \Node%
{\def\Element%
{1255}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}theTopLevelSwarm\endSeq{}\endNode{}, what do you
      find? Depending on what edition of the Heatbugs source you have,
      you will find something like this:\endPar{}\endNode{}\Node%
{\def\Element%
{1256}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}} 
heatbugModelSwarm = [HeatbugModelSwarm create: self];\endPar{}\endNode{}\Node%
{\def\Element%
{1257}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In this code, the \Node%
{\def\Element%
{1258}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}self\endSeq{}\endNode{} is the observer
      level, meaning that the \Node%
{\def\Element%
{1259}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm\endSeq{}\endNode{}
      class is told to create an instance of itself in the memory zone
      provided by the observer, and that allocated object is named
      \Node%
{\def\Element%
{1260}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}heatbugModelSwarm\endSeq{}\endNode{}.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1261}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      If you then follow the code into the
      \Node%
{\def\Element%
{1262}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm.m\endSeq{}\endNode{} file, you find it has
      \Node%
{\def\Element%
{1263}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{} commands that initialize a
      number of instance variables and objects. Unless you have a
      pretty old piece of code, those objects will be created in the
      memory zone \Node%
{\def\Element%
{1264}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}self\endSeq{}\endNode{}, the space provided by the
      model swarm itself.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1265}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      Objects that are of type \Node%
{\def\Element%
{1266}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}SwarmObject\endSeq{}\endNode{} are
      not memory zones, and so when objects are created inside classes
      that inherit from \Node%
{\def\Element%
{1267}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}SwarmObject\endSeq{}\endNode{}, a command
      to allocate memory must be used.\endPar{}\endNode{}\Node%
{\def\Element%
{1268}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}bugPixmap = [Pixmap createBegin: [self getZone]];\endPar{}\endNode{}\Node%
{\def\Element%
{1269}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The \Node%
{\def\Element%
{1270}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}bugPixmap\endSeq{}\endNode{} object is created inside
      \Node%
{\def\Element%
{1271}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Heatbug.m\endSeq{}\endNode{}, but the name of the memory zone
      where that object "lives" has to be
      retrieved with the \Node%
{\def\Element%
{1272}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}[self getZone]\endSeq{}\endNode{}
      command. The [self getZone] method returns the name of the zone
      in which the bug exists, which in this case is heatbugModelSwarm.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1273}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.02-OBJECTS.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}7.4. \Node%
{\def\Element%
{1277}\def\ProcessingMode%
{xref-title-mode}}Using Swarm Library Objects and Header Files\endNode{}\def\HeadingText{%
7.4. Using Swarm Library Objects and Header Files}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1277}}\endNode{}\Node%
{\def\Element%
{1278}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}It often seems as if objects appear by "magic." It is more
      reasonable to say they are provided by the Swarm library in a
      way that is not entirely obvious.  For example, suppose you want
      to create a list of objects. One can declare an object
      \Node%
{\def\Element%
{1279}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}listOfFriends\endSeq{}\endNode{} and then create it, like so:\endPar{}\endNode{}\Node%
{\def\Element%
{1280}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}id listOfFriends;
listOfFriends = [List create: self]; \endPar{}\endNode{}\Node%
{\def\Element%
{1281}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}You see little bits like this all over example code from
      Swarm projects.  Where does this \Node%
{\def\Element%
{1282}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{}
      class object come from?  Why are you able to use it
      even though there is no import statement for List.h at the top of the
      program?  It seems as though, if you want to make a call on the
      List class, you ought to include \Node%
{\def\Element%
{1283}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List.h\endSeq{}\endNode{} at
      the top of your file, right?\endPar{}\endNode{}\Node%
{\def\Element%
{1284}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}To use many of the Swarm classes, it is not necessary to use
      such an explicit import statement since you are not subclassing.
      Instead, it is necessary to include one of the "general purpose"
      header files that corresponds to the major sections of the Swarm
      library.  To  create List instances,  for example, one  needs to
      import the  "general purpose" collections.h,  which declares not
      only List, but other collections classes as well.\endPar{}\endNode{}\Node%
{\def\Element%
{1285}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The general purpose header files can be found in the include
    directory of your swarm installation.  They are:\endPar{}\endNode{}\Node%
{\def\Element%
{1286}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{1287}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1288}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}activity.h\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1289}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1290}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}analysis.h\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1291}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1292}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}collections.h\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1293}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1294}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}collections.h\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1295}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1296}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}gui.h\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1297}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1298}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}objectbase.h\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1299}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1300}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}random.h\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1301}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1302}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}simtools.h\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1303}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1304}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}simtoolsgui.h\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1305}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1306}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}space.h\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1307}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1309}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} As you browse the Swarm Reference Guide, you will find many
     protocols that adopt the CREATABLE protcol, which means that you
     can use them to create objects in your code.  When you use them,
     import one of these library headers.   For example, to create List
     objects, import \Node%
{\def\Element%
{1310}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}collections.h\endSeq{}\endNode{}.  That header
     file should be included in any file that refers to a List, Map,
     Set, or any of the other creatable collections objects. \endPar{}\endNode{}\Node%
{\def\Element%
{1311}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Should the general purpose header file be included in the .h
     (header) file or the .m (implementation) file of your class?
     Generally speaking, it is only necessary in the .m file, since
     that is where you are doing the work of creating the object.  The
     only exception to this rule arises if you refer to the protocol
     protocol in your header file.  It is necessary to include the
     collections.h in your header file if you want to declare an
     object that will adopt a protocol, as in
     \endPar{}\endNode{}\Node%
{\def\Element%
{1312}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}id \Entity{lt}List\Entity{gt} aList;\endPar{}\endNode{}\Node%
{\def\Element%
{1313}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If you forget to import collections.h, the compiler will
    fail and say there was a parse error. This happens because it does
    not have a class or protocol List in its purview, and so it
    assumes you have made a typographical error.\endPar{}\endNode{}\Node%
{\def\Element%
{1314}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}On the other hand, if your header file uses a general
            declaration, as in

\Node%
{\def\Element%
{1315}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}id aList;\endPar{}\endNode{}

     then there is no need to include collections.h in the header
     file.  It should only be included in the implementation file for
     your class.\endPar{}\endNode{}\Node%
{\def\Element%
{1316}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Explicit importing of a class-specific header file is only
      required when you need to subclass from that file.  Since your
      header file declares that you are creating a class, and it
      defines the superclass, then the import statement must be
      included in your header file.  SwarmObject is the most
      frequently used superclass, so consider it for example.  Your
      class's header file should import \Node%
{\def\Element%
{1317}}\Seq%
{\def\fPosture%
{italic}}both\endSeq{}\endNode{} the
      general purpose library header objectbase.h as well as
      \Node%
{\def\Element%
{1318}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}objectbase/SwarmObject.h\endSeq{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{1319}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}We will summarize this by offering two rules of thumb:

      \Node%
{\def\Element%
{1320}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{1321}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1322}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}if you use a class that conforms to a protocol
            (such as \Node%
{\def\Element%
{1323}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{}) to create objects in
            your own program, you need to include one of the general
            Swarm library headers. \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1324}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1325}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}if, however, you are
            \Node%
{\def\Element%
{1326}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fPosture%
{italic}}subclassing\endSeq{}\endNode{} from a class that
            adheres to a protocol, you need to import the header file
            for that class.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}

      We hasten to point out that not all of the Swarm protocols will
      allow you to subclass from them.  To avoid some serious
      complications, the List type cannot be used to create
      user-specific classes.  One can create Lists and use them as
      intended, but one cannot create variants of the Swarm List class
      to customize their behavior for a specific project.\endPar{}\endNode{}\Node%
{\def\Element%
{1327}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}As good coding practice, you should try to keep your files
      clean.  Each file should only include imports for header
      files that you actually reference in that particular
      interface/implementation file pair.  Don't adopt a "include
      everything" mentality when importing files.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.02-VARIATIONS.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}7.5. \Node%
{\def\Element%
{1329}\def\ProcessingMode%
{xref-title-mode}}Variations on a Theme\endNode{}\def\HeadingText{%
7.5. Variations on a Theme}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1329}}\endNode{}\Node%
{\def\Element%
{1330}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      Once you have seen how an object can be created, you should
      start thinking about how your simulation will be organized.
      Within the standard Swarm approach, you begin with
      \Node%
{\def\Element%
{1331}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}main.m\endSeq{}\endNode{} allocating space for the top level
      swarm, which may be either a gui or batch swarm.  Then the model
      swarm object is created in that top level, and the model swarm
      in turn creates the substantively important objects that embody
      the model you seek to investigate.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1332}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}There are a number of different ways in which the creation
      of objects can be managed.  Some are more intuitive than others,
      some are more "reusable" than others. Since the first Swarm
      exercise for most people involves bugs, it is not surprising
      that many examples of Swarm code follow the convention of the
      bugs project.  As found in SimpleSwarmBug3, for example, the
      \Node%
{\def\Element%
{1333}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm.m\endSeq{}\endNode{} file creates the bug objects
      in this way:\endPar{}\endNode{}\Node%
{\def\Element%
{1334}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- buildObjects
\{
  Bug *aBug;
  int x, y;
  [some lines omitted here]
  bugList = [List create: self];

  for (y = 0; y < worldYSize; y++)
    for (x = 0; x < worldXSize; x++) 
     if ([uniformDblRand getDoubleWithMin: 0.0 withMax: 1.0] < bugDensity)
      \{
      aBug = [Bug createBegin: self];
      [aBug setWorld: world Food: food];
      aBug = [aBug createEnd];
      [aBug setX: x Y: y];
  
      [bugList addLast: aBug];
      \}
  
  reportBug = [bugList removeFirst];
  [bugList addFirst: reportBug];  
  return self;
\}\endPar{}\endNode{}\Node%
{\def\Element%
{1335}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This code cycles over the spaces in a lattice, and if the
      conditions are right, it causes the \Node%
{\def\Element%
{1336}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Bug\endSeq{}\endNode{}
      class to create an instance of itself, called
      \Node%
{\def\Element%
{1337}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}aBug\endSeq{}\endNode{}, and then that instance is added to the
      \Node%
{\def\Element%
{1338}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}bugList\endSeq{}\endNode{}.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1339}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      Some changes can be made to make this code a little more
      versatile. For example, create a new method called
      \Node%
{\def\Element%
{1340}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}spawnOneBug\endSeq{}\endNode{} that moves out the bug creation
      steps.\endPar{}\endNode{}\Node%
{\def\Element%
{1341}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- buildObjects
\{
  Bug *aBug;
  int x, y;
  [some lines omitted here]  
  bugList = [List create: self];

  for (y = 0; y < worldYSize; y++)
  for (x = 0; x < worldXSize; x++) 
  if ([uniformDblRand getDoubleWithMin: 0.0 withMax: 1.0] < bugDensity)
   \{
    [self spawnOneBug];
   \}
  
  reportBug = [bugList removeFirst];
  [bugList addFirst: reportBug];  
  return self;
\}

- spawnOneBug
\{

  aBug = [Bug createBegin: self];
  [aBug setWorld: world Food: food];
  aBug = [aBug createEnd];
  [aBug setX: x Y: y];
  [bugList addLast: aBug];

  return self;
\}\endPar{}\endNode{}\Node%
{\def\Element%
{1342}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Why is this more versatile?  By isolating the steps
      necessary to create a bug and add it to the
      \Node%
{\def\Element%
{1343}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}bugList\endSeq{}\endNode{} in the
      \Node%
{\def\Element%
{1344}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}spawnOneBug\endSeq{}\endNode{} method, we make it much easier
      to add new bugs to the simulation as time goes by.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.02-DROP.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}7.6. \Node%
{\def\Element%
{1346}\def\ProcessingMode%
{xref-title-mode}}How Do You Kill Off Those Poor Little Devils?\endNode{}\def\HeadingText{%
7.6. How Do You Kill Off Those Poor Little Devils?}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1346}}\endNode{}\Node%
{\def\Element%
{1347}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If you look at Swarm examples for any amount of time, you
      can't help but run into objects that get dropped. Little "helper
      objects" like indexes for lists are created and just as readily
      discarded with the command:\endPar{}\endNode{}\Node%
{\def\Element%
{1348}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}  [someIndexName drop];\endPar{}\endNode{}\Node%
{\def\Element%
{1349}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If everything goes the way it is supposed to, this should
      take the object out of memory and free that memory for the
      program to reuse.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1350}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1352}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1355}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}What if the objects inside your simulation are supposed to
      be born and killed through time? The Swarm bug tutorial mainly
      focuses on models in which a population of actors is created at
      the outset and those individuals remain in existence throughout
      the length of the program.  What if we wanted code to model a
      world in which the happy HeatBugs could reproduce themselves, or
      what if the unhappy ones could die and be freed from their never
      ending search for a place neither too cool or too hot?
    \endPar{}\endNode{}\Node%
{\def\Element%
{1356}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The Swarm \Node%
{\def\Element%
{1357}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}SugarScape\endSeq{}\endNode{} model
      provides an excellent example of a way to manage the birth and
      death of agents in an on-going model.  The
      \Node%
{\def\Element%
{1358}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}sss\endSeq{}\endNode{} model's
      \Node%
{\def\Element%
{1359}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm.m\endSeq{}\endNode{} file contains the critical
      ingredients.  It has a method
      \Node%
{\def\Element%
{1360}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}addNewRandomAgent\endSeq{}\endNode{} which does what
      \Node%
{\def\Element%
{1361}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}spawnOneBug\endSeq{}\endNode{} does--it includes all the
      commands that create an instance of a
      \Node%
{\def\Element%
{1362}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}SwarmObject\endSeq{}\endNode{} and initializes
      it. \Node%
{\def\Element%
{1363}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}sss\endSeq{}\endNode{} also provides a handy
      structure to kill off agents and replace them with new ones.
      This is managed in a three stage process.  The model swarm
      creates a Swarm list object called
      \Node%
{\def\Element%
{1364}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}reaperQueue\endSeq{}\endNode{}.  When an event occurs that
      forces an object below the survival threshold, then that object
      is added to the \Node%
{\def\Element%
{1365}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}reaperQueue\endSeq{}\endNode{} by the
      \Node%
{\def\Element%
{1366}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}agentDeath\endSeq{}\endNode{} method.  Then the model Swarm's
      schedule includes a command that removes the dead agents from
      the \Node%
{\def\Element%
{1367}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}reaperQueue\endSeq{}\endNode{}.  The
      \Node%
{\def\Element%
{1368}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}reapAgents\endSeq{}\endNode{} method transverses the list of
      agents who are to die, it removes them from the list of active
      agents and then tells them to drop themselves from memory.\endPar{}\endNode{}\Node%
{\def\Element%
{1369}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- agentDeath: (SugarAgent *)agent 
\{
  [reaperQueue addLast: agent];
  if (replacement)				  // Replacement rule R (p.32)
    [self addNewRandomAgent];
  return self;
\}

// remove all the agents on the reaperQueue from the agentList
// This allows us to defer the death of an agent until it's safe to
// remove it from the list.
- reapAgents 
\{
  id index, agent;

  index = [reaperQueue begin: [self getZone]] ;
  while ((agent = [index next])) \{
    [agentList remove: agent];
    [agent drop];
  \}
  [reaperQueue removeAll];
  [index drop];
  return self;
\}\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.03.CHAPTER}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{1371}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 8. Doing the Chores: \Node%
{\def\Element%
{1372}\def\ProcessingMode%
{hf-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}set\endSeq{}\endNode{} and
  \Node%
{\def\Element%
{1373}\def\ProcessingMode%
{hf-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}get\endSeq{}\endNode{}\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{1371}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 8. Doing the Chores: \Node%
{\def\Element%
{1372}\def\ProcessingMode%
{hf-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}set\endSeq{}\endNode{} and
  \Node%
{\def\Element%
{1373}\def\ProcessingMode%
{hf-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}get\endSeq{}\endNode{}\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Chapter 8. \Seq%
{}\Node%
{\def\Element%
{1371}\def\ProcessingMode%
{component-title-mode}}Doing the Chores: \Node%
{\def\Element%
{1372}\def\ProcessingMode%
{component-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}set\endSeq{}\endNode{} and
  \Node%
{\def\Element%
{1373}\def\ProcessingMode%
{component-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}get\endSeq{}\endNode{}\endNode{}\endSeq{}\def\HeadingText{%
Chapter 8. Doing the Chores: set and
  get}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{1371}}\endNode{}\Node%
{\def\Element%
{1374}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1377}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} Object-oriented programming organizes the way programmers
    think about information in a new way.  The objects maintain their
    variables (the "instance variables", or IVARs for short) and the
    information contained in those variables is private,
    self-contained within the object. This has benefits in the design
    of code and it also captures some intuitions the autonomy of
    individual agents in a simulation exercise.
  \endPar{}\endNode{}\Node%
{\def\Element%
{1378}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Objects are thus insulated, more or less, and although this
    makes some things easier to code, it also makes some things more
    difficult.  For example, in C a variable can be set and its value
    can be changed anywhere in the program. In object-oriented
    languages like Objective-C, an object can hold several variables
    and those values can only be changed by the object itself if we
    remain within the recommended limits of good programming habits.
    Some ways to go outside those bounds will be discussed below, but
    generally speaking it is a good idea to respect the fact that
    objects maintain their own data.\endPar{}\endNode{}\Node%
{\def\Element%
{1379}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If objects are maintaining their own data, how do we manage
    information in a Swarm project.  Early on in the development of
    Swarm, the coders adopted a convention (common to Objective C,
    Java, Smalltalk and numerous other object-oriented languages) that
    the term \Node%
{\def\Element%
{1380}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}set\endSeq{}\endNode{} starts a method name that sets a
    value inside an object, such as
    \Node%
{\def\Element%
{1381}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}setIdealTemperature\endSeq{}\endNode{} or
    \Node%
{\def\Element%
{1382}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}setAge\endSeq{}\endNode{}.  The term \Node%
{\def\Element%
{1383}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}get\endSeq{}\endNode{} is
    used as the beginning of a method that causes the agent to return
    some value, such as \Node%
{\def\Element%
{1384}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getIdealTemperature\endSeq{}\endNode{} or
    \Node%
{\def\Element%
{1385}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getAge\endSeq{}\endNode{}.
  \endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.03-GETSET.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}8.1. \Node%
{\def\Element%
{1387}\def\ProcessingMode%
{xref-title-mode}}Get and Set Methods\endNode{}\def\HeadingText{%
8.1. Get and Set Methods}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1387}}\endNode{}\Node%
{\def\Element%
{1388}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1390}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1392}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Get and set methods are needed to pass information among
      objects.  For example, consider
      \Node%
{\def\Element%
{1393}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Heatbugs\endSeq{}\endNode{}.  In the
      \Node%
{\def\Element%
{1394}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Heatbug.m\endSeq{}\endNode{} code, one finds a methods that
      set information inside the bug and also methods that retrieve
      information from it.  Consider the method
      \Node%
{\def\Element%
{1395}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}setIdealTemperature\endSeq{}\endNode{} \endPar{}\endNode{}\Node%
{\def\Element%
{1396}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}} 
- setIdealTemperature: (HeatValue)i
\{
  idealTemperature = i;
  return self;
\}\endPar{}\endNode{}\Node%
{\def\Element%
{1397}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The \Node%
{\def\Element%
{1398}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Heatbug\endSeq{}\endNode{} object has an instance
      variable called \Node%
{\def\Element%
{1399}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}idealTemperature\endSeq{}\endNode{}, and this
      sets the value of that variable.\endPar{}\endNode{}\Node%
{\def\Element%
{1400}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If some other object needs to know the heatbug's ideal
      temperature, what has to be done?  We would have to add a method
      to the \Node%
{\def\Element%
{1401}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Heatbug.m\endSeq{}\endNode{} that returns the value of
      \Node%
{\def\Element%
{1402}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}idealTemperature\endSeq{}\endNode{}.  Something like this might
      suffice:\endPar{}\endNode{}\Node%
{\def\Element%
{1403}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- (double) getIdealTemperature
\{
  return idealTemperature;
\}\endPar{}\endNode{}\Node%
{\def\Element%
{1404}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}As much as possible, it is recommended that information be
      exchanged in this way.  Hence, when the observer swarm needs a
      list of all the agents in a simulation in order to create a
      graph, the model swarm should have a method, such as
      \Node%
{\def\Element%
{1405}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getAgentList\endSeq{}\endNode{}, that returns a list of agents
      that the observer swarm can use.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.03-SET.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}8.2. \Node%
{\def\Element%
{1407}\def\ProcessingMode%
{xref-title-mode}}Using Set Methods During Object Creation\endNode{}\def\HeadingText{%
8.2. Using Set Methods During Object Creation}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1407}}\endNode{}\Node%
{\def\Element%
{1408}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Consider the way the model swarm level of a simulation can
      be designed.  If the values of many variables are set inside the
      \Node%
{\def\Element%
{1409}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm.m\endSeq{}\endNode{} file, and those values are to
      be passed to the individual agents at the time of creation, then
      the code that creates individual objects might be designed like
      this:\endPar{}\endNode{}\Node%
{\def\Element%
{1410}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}aBug = [Bug createBegin: globalZone];
aBug = [aBug createEnd];
[aBug setWorldSizeX: xsize Y: ysize];
[aBug setFoodSpace: foodSpace];
[aBug setX: xPos Y: yPos];
[aBug setIdealTemp: [uniformDblRand getDoubleSample]];\endPar{}\endNode{}\Node%
{\def\Element%
{1411}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This code presupposes that the
      \Node%
{\def\Element%
{1412}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm.m\endSeq{}\endNode{} file has pre-existing
      variables (probably integers) \Node%
{\def\Element%
{1413}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}xsize\endSeq{}\endNode{},
      \Node%
{\def\Element%
{1414}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}size\endSeq{}\endNode{}, \Node%
{\def\Element%
{1415}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}xPos\endSeq{}\endNode{}, and
      \Node%
{\def\Element%
{1416}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}yPos\endSeq{}\endNode{}, as well as an object
      \Node%
{\def\Element%
{1417}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}foodSpace\endSeq{}\endNode{} and an object
      \Node%
{\def\Element%
{1418}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}uniformDblRand\endSeq{}\endNode{} that can give back a random
      number.  This code also presupposes that set methods exist for
      the \Node%
{\def\Element%
{1419}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Bug\endSeq{}\endNode{} class that can get these jobs
      done.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1420}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}There are some matters of "taste" and "judgment" that affect
      model design.  One might ask, for example: \Node%
{\def\Element%
{1421}}\Seq%
{}\Character{8220}why does this
      code set the ideal temperature in this way?\Character{8221}\endSeq{}\endNode{} Why not
      create a method inside the \Node%
{\def\Element%
{1422}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Bug.m\endSeq{}\endNode{} file, such
      as \Node%
{\def\Element%
{1423}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}initializeValues\endSeq{}\endNode{} like so:\endPar{}\endNode{}\Node%
{\def\Element%
{1424}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- initializeValues
\{
  idealTemperature= [uniformDblRand getDoubleSample] 
  return self;
\}\endPar{}\endNode{}\Node%
{\def\Element%
{1425}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} If this method existed, then the code that creates the bug
      and sets values in it could have the command\endPar{}\endNode{}\Node%
{\def\Element%
{1426}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}} [aBug setIdealTemp: [uniformDblRand getDoubleSample]];\endPar{}\endNode{}\Node%
{\def\Element%
{1427}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}replaced with this:\endPar{}\endNode{}\Node%
{\def\Element%
{1428}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}} [aBug initializeValues];\endPar{}\endNode{}\Node%
{\def\Element%
{1429}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This would achieve the purpose of setting the
      \Node%
{\def\Element%
{1430}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}idealTemperature\endSeq{}\endNode{} variable inside the object
      called \Node%
{\def\Element%
{1431}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}aBug\endSeq{}\endNode{}.  And, from the
      information-hiding perspective of object-oriented programming,
      it seems better because the value drawn for the variable
      \Node%
{\def\Element%
{1432}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}idealTemperature\endSeq{}\endNode{} is never exposed to any
      other object.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1433}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}There are a few practical reasons why the first way of
      setting the ideal temperature might be preferred. First, for the
      programmer's convenience, it is nice to have as many of the
      "parametric" changes in a single file as possible.  The Bug
      class can be written and never edited again if all of the
      changes needed are kept in the \Node%
{\def\Element%
{1434}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm.m\endSeq{}\endNode{}
      file.  Second, you might save memory dealing with these things
      in the \Node%
{\def\Element%
{1435}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm.m\endSeq{}\endNode{} file. Suppose that the
      object \Node%
{\def\Element%
{1436}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}uniformDblRand\endSeq{}\endNode{} has to be created in
      order to draw a random number.  If you insist on writing a
      method like \Node%
{\def\Element%
{1437}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}initializeValues\endSeq{}\endNode{} inside the
      \Node%
{\def\Element%
{1438}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Bug.m\endSeq{}\endNode{}, then you need to worry about how
      that random number generator object is created inside each bug
      object. It certainly saves memory to create just one random
      generator in the \Node%
{\def\Element%
{1439}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm.m\endSeq{}\endNode{} file and then
      draw numbers from it inside the model swarm itself.  There are
      some good arguments for this approach in the literature on
      random number generation.  The issue seems somewhat esoteric,
      but the argument is that one is better off making repeated draws
      from the same random number generator than making one call
      against each of the many random number generators. For reasons
      like this, Swarm examples tend to have information translated
      into objects from the model swarm level, even though it is
      technically allowable to have that information-creation process
      completely isolated within the object.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.03-IMPORT.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}8.3. \Node%
{\def\Element%
{1441}\def\ProcessingMode%
{xref-title-mode}}Passing Information Around\endNode{}\def\HeadingText{%
8.3. Passing Information Around}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1441}}\endNode{}\Node%
{\def\Element%
{1442}}\endNode{}\Node%
{\def\Element%
{1443}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1446}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In order to send messages to objects from another class, it
      is necessary not only to use the correct message, but also to
      import that class's header file into the code.  The
      \Node%
{\def\Element%
{1447}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ObserverSwarm.m\endSeq{}\endNode{} file can only tell the
      \Node%
{\def\Element%
{1448}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm\endSeq{}\endNode{} to run its
      \Node%
{\def\Element%
{1449}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{} method if
      \Node%
{\def\Element%
{1450}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ObserverSwarm.m\endSeq{}\endNode{} includes the header file
      for the \Node%
{\def\Element%
{1451}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm\endSeq{}\endNode{}. In
      \Node%
{\def\Element%
{1452}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugObserverSwarm.m\endSeq{}\endNode{}, we find
      this:\endPar{}\endNode{}\Node%
{\def\Element%
{1453}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\#import "HeatbugModelSwarm.h"\endPar{}\endNode{}\Node%
{\def\Element%
{1454}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      The inclusion in the "m" file is sufficient if no reference to
      the \Node%
{\def\Element%
{1455}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm\endSeq{}\endNode{} is necessary in the
      \Node%
{\def\Element%
{1456}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugObserverSwarm.h\endSeq{}\endNode{} file.  It may be
      necessary to move the import statement into the header file (the
      "h" file), however, if any references to a class are contained
      in the "h" file. In \Node%
{\def\Element%
{1457}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm.h\endSeq{}\endNode{},
      for example, one finds these import statements:\endPar{}\endNode{}\Node%
{\def\Element%
{1458}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\#import "Heatbug.h"
\#import "HeatSpace.h"\endPar{}\endNode{}\Node%
{\def\Element%
{1459}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Since these are included, the variable and method
      definitions can refer to elements of these classes. The variable
      list declares a pointer to an object of type
      \Node%
{\def\Element%
{1460}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatSpace\endSeq{}\endNode{}:\endPar{}\endNode{}\Node%
{\def\Element%
{1461}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}HeatSpace *heat\endPar{}\endNode{}\Node%
{\def\Element%
{1462}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}and there is a method that has an object of type
    \Node%
{\def\Element%
{1463}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Heatbug\endSeq{}\endNode{} as an argument:\endPar{}\endNode{}\Node%
{\def\Element%
{1464}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}-addHeatbug: (Heatbug *)bug;\endPar{}\endNode{}\Node%
{\def\Element%
{1465}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Many Swarm programmers have run into the following problem.
      As we have seen, It is not difficult to have the model swarm
      level create an object.  Through the set methods, various values
      can be set inside the object by commands in the model swarm.
      However, the programmer wants the agent to be able to access
      variables inside the model swarm as the simulation progresses.
      Suppose the \Node%
{\def\Element%
{1466}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm\endSeq{}\endNode{} has an
      instance variable called \Node%
{\def\Element%
{1467}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}numberOfBugsAlive\endSeq{}\endNode{},
      and inside HeatbugModelSwarm\Node%
{\def\Element%
{1468}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}\endSeq{}\endNode{} we define a
      method \Node%
{\def\Element%
{1469}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getNumberOfBugsAlive\endSeq{}\endNode{} that returns
      that number.  Suppose further we want any heatbug to be able to
      find out how many bugs are alive at any instant.  It is tempting
      to write inside \Node%
{\def\Element%
{1470}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Heatbugs.m\endSeq{}\endNode{} something
      like:\endPar{}\endNode{}\Node%
{\def\Element%
{1471}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[heatbugModelSwarm getNumberOfBugsAlive];\endPar{}\endNode{}\Node%
{\def\Element%
{1472}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}to access that information.  That construction will not
      work, however, unless we take some special precautions.  First,
      each \Node%
{\def\Element%
{1473}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Heatbug\endSeq{}\endNode{} has to be made "aware" of
      what model swarm it belongs to. Inside
      \Node%
{\def\Element%
{1474}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Heatbug.h\endSeq{}\endNode{}, a variable would have to be
      defined:\endPar{}\endNode{}\Node%
{\def\Element%
{1475}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}id heatbugModelSwarm;\endPar{}\endNode{}\Node%
{\def\Element%
{1476}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}To set the value of this variable, the
      \Node%
{\def\Element%
{1477}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Heatbug.m\endSeq{}\endNode{} file needs to have a method like
      this:\endPar{}\endNode{}\Node%
{\def\Element%
{1478}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- setModelSwarm: (id) nameOfSwarm
\{
heatbugModelSwarm = nameOfSwarm;
return self;
\}\endPar{}\endNode{}\Node%
{\def\Element%
{1479}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The value of the instance variable
      \Node%
{\def\Element%
{1480}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}heatbugModelSwarm\endSeq{}\endNode{} has to be set in the model
      swarm when other values are set.  When the
      \Node%
{\def\Element%
{1481}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm\endSeq{}\endNode{} is creating bugs, it
      sets the other values like the ideal temperature and the
      position, but further it would set itself as the model swarm to
      which that bug belongs, like so:\endPar{}\endNode{}\Node%
{\def\Element%
{1482}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}aBug = [Bug createBegin: globalZone];
aBug = [aBug createEnd];
[aBug setWorldSizeX: xsize Y: ysize];
[aBug setFoodSpace: foodSpace];
[aBug setX: xPos Y: yPos];
[aBug setIdealTemp: [uniformDblRand getDoubleSample]];
[aBug setModelSwarm: self];\endPar{}\endNode{}\Node%
{\def\Element%
{1483}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This assures that, inside aBug\Node%
{\def\Element%
{1484}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}\endSeq{}\endNode{}, the value
      of the instance variable \Node%
{\def\Element%
{1485}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}heatbugModelSwarm\endSeq{}\endNode{} is
      defined.\endPar{}\endNode{}\Node%
{\def\Element%
{1486}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      The final precaution is that the header file
      \Node%
{\def\Element%
{1487}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm.h\endSeq{}\endNode{} must be imported into
      \Node%
{\def\Element%
{1488}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Heatbug.m\endSeq{}\endNode{}.  It is very important that the
      import statement is added to \Node%
{\def\Element%
{1489}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Heatbug.m\endSeq{}\endNode{}, not
      \Node%
{\def\Element%
{1490}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Heatbug.h\endSeq{}\endNode{}.  If it is added to
      \Node%
{\def\Element%
{1491}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Heatbug.h\endSeq{}\endNode{}, then the program will not
      compile because the inclusion causes a circularity:
      \Node%
{\def\Element%
{1492}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Heatbug.h\endSeq{}\endNode{} is included in
      \Node%
{\def\Element%
{1493}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm.h\endSeq{}\endNode{}, but
      \Node%
{\def\Element%
{1494}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm.h\endSeq{}\endNode{} is also included in
      \Node%
{\def\Element%
{1495}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Heatbug.h\endSeq{}\endNode{}.  Putting the import statement in
      the "m" file avoids that ciruclarity.  And, since the import has
      to be in the "m" file, the definition of the variable
      \Node%
{\def\Element%
{1496}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}heatbugModelSwarm\endSeq{}\endNode{} in
      \Node%
{\def\Element%
{1497}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Heatbug.h\endSeq{}\endNode{} uses the generic type
      \Node%
{\def\Element%
{1498}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}id\endSeq{}\endNode{}, rather than a specific type, such as
      \Node%
{\def\Element%
{1499}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm\endSeq{}\endNode{}.\endPar{}\endNode{}\Node%
{\def\Element%
{1500}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Many swarm examples are designed to avoid the need to allow
      objects created by model swarm to also access information
      directly from it. This is usually done by creating a "space"
      object that keeps records on the model swarm.  Individual agents
      report their positions to the space and the space calculates any
      necessary statistics about the swarm.  The code for the space
      object can include get methods that the individual agents can
      execute when they need information about their environment. This
      approach has the added advantage that additional methods can be
      inherited from the general space objects in the Swarm library.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.03-AVOID.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}8.4. \Node%
{\def\Element%
{1502}\def\ProcessingMode%
{xref-title-mode}}Circumventing the Object-Oriented Guidelines\endNode{}\def\HeadingText{%
8.4. Circumventing the Object-Oriented Guidelines}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1502}}\endNode{}\Node%
{\def\Element%
{1503}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If one wants to avoid treating objects as containers that
      hold both data and methods, one can do so.  The C language
      allows the creation of global variables, ones that can be
      accessed in any part of the code. These
      \Node%
{\def\Element%
{1504}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}external\endSeq{}\endNode{} variables exist outside a particular
      class and are thus available to it.  The names used for external
      variables must be unique.  One cannot have a global variable
      called \Node%
{\def\Element%
{1505}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}temperature\endSeq{}\endNode{} as well as a temperature
      variable defined as an instance variable for each object.  There
      are some occasions in which a program can be made to run more
      quickly if the whole
      \Node%
{\def\Element%
{1506}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}get\endSeq{}\endNode{}/\Node%
{\def\Element%
{1507}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}set\endSeq{}\endNode{} exercise is
      circumvented by creating a global variable.\endPar{}\endNode{}\Node%
{\def\Element%
{1508}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Another way in which the object-oriented guidelines can be
      circumvented is the use of the \Node%
{\def\Element%
{1509}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}->\endSeq{}\endNode{} operator.
      Suppose we have an object called \Node%
{\def\Element%
{1510}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}dog\endSeq{}\endNode{} and it
      has instance variables \Node%
{\def\Element%
{1511}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}numberOfBones\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{1512}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}timeSpentSleeping\endSeq{}\endNode{}.  Ordinarily, within the
      object-oriented paradigm, the \Node%
{\def\Element%
{1513}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}numberOfBones\endSeq{}\endNode{}
      would have to be set by a method such as
      \Node%
{\def\Element%
{1514}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}setNumberOfBones\endSeq{}\endNode{}.  However, the language does
      allow a shortcut of the following sort. The syntax
      \Node%
{\def\Element%
{1515}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}dog->numberOfBones\endSeq{}\endNode{} refers to the value of the
      instance variable \Node%
{\def\Element%
{1516}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}numberOfBones\endSeq{}\endNode{} inside the
      object named \Node%
{\def\Element%
{1517}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}dog\endSeq{}\endNode{}.  Hence, one could have a
      statement:\endPar{}\endNode{}\Node%
{\def\Element%
{1518}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}dog->numberOfBones = 3;\endPar{}\endNode{}\Node%
{\def\Element%
{1519}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}that sets the \Node%
{\def\Element%
{1520}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}numberOfBones\endSeq{}\endNode{} to 3 inside
      the dog.  This kind of code is considered to be heavy-handed and
      brutish because it does not use the methods written for the dog
      class with which it can set that value and update it.  A mistake
      made with the \Node%
{\def\Element%
{1521}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}->\endSeq{}\endNode{} operator can corrupt the
      values inside an object.  \endPar{}\endNode{}\Node%
{\def\Element%
{1522}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Even though the usage of \Node%
{\def\Element%
{1523}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}->\endSeq{}\endNode{} is
      discouraged, one does find examples of this syntax in Swarm
      code.  Almost all Swarm examples use this kind of shortcut in
      the \Node%
{\def\Element%
{1524}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{} phase of the model swarm
      file, for example. This is done, however, because there is no
      alternative.  We want the GUI probe display to allow the user to
      adjust parameter values before the simulation commences.  It is
      thus necessary to set values inside some objects even before
      those objects have finished their createBegin/createEnd routine.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.04.CHAPTER}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{1526}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 9. Building Schedules\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{1526}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 9. Building Schedules\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Chapter 9. \Seq%
{}\Node%
{\def\Element%
{1526}\def\ProcessingMode%
{component-title-mode}}Building Schedules\endNode{}\endSeq{}\def\HeadingText{%
Chapter 9. Building Schedules}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{1526}}\endNode{}\Node%
{\def\Element%
{1527}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The core of the Swarm system is the set of features that
    enhance the design process of simulation projects. The scheduling
    apparatus is one of the truly important elements of the Swarm
    system because it offers a way to integrate the actions (and
    responses) many different agents in many different levels of a
    simulation.\endPar{}\endNode{}\Node%
{\def\Element%
{1528}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The actions that go on in a simulation are orchestrated by a
    objects that respond to the \Node%
{\def\Element%
{1529}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{}
    protocol. \Node%
{\def\Element%
{1530}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{}s are generally built in
    the \Node%
{\def\Element%
{1531}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildActions\endSeq{}\endNode{} method of an object. A
    \Node%
{\def\Element%
{1532}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{} is something like a calendar in
    which one might put a red letter X when an important event is
    supposed to occur.  The user then defines what the important
    events are and integrates them into the
    \Node%
{\def\Element%
{1533}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{}. Then the
    \Node%
{\def\Element%
{1534}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{} must be activated within the
    larger Swarm hierarchy of the object.
  \endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.04-SCHEDULE.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}9.1. \Node%
{\def\Element%
{1536}\def\ProcessingMode%
{xref-title-mode}}Building \Node%
{\def\Element%
{1537}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{12.96\p@}}Schedule\endSeq{}\endNode{}s\endNode{}\def\HeadingText{%
9.1. Building Schedules}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1536}}\endNode{}\Node%
{\def\Element%
{1538}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1541}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} Here is an example of some code that makes a simple
      \Node%
{\def\Element%
{1542}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{}.  This sort of
      \Node%
{\def\Element%
{1543}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{} might appear in the
      \Node%
{\def\Element%
{1544}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}ModelSwarm\endSeq{}\endNode{} level of the bug tutorial, for
      example.\endPar{}\endNode{}\Node%
{\def\Element%
{1545}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1548}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- buildActions 
\{
  modelSchedule=[Schedule createBegin: self];
  [modelSchedule setRepeatInterval: 1];
  modelSchedule = [modelSchedule createEnd];

  [modelSchedule at: 0 createActionTo: aBug message: M(step)];

  return self;
\}\endPar{}\endNode{}\Node%
{\def\Element%
{1549}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The first three lines in the method create the
      \Node%
{\def\Element%
{1550}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{} named
      \Node%
{\def\Element%
{1551}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}modelSchedule\endSeq{}\endNode{}.  It might as well be
      \Node%
{\def\Element%
{1552}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}aBugsLife\endSeq{}\endNode{} or any other name the user chooses.
      Between the \Node%
{\def\Element%
{1553}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{1554}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{} methods, the only detail that
      this \Node%
{\def\Element%
{1555}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{} sets is the repeat
      interval, which is one.  That means that all of the actions
      assigned to the \Node%
{\def\Element%
{1556}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}modelSchedule\endSeq{}\endNode{} will be
      executed at each time step.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1557}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      Once the code has created a \Node%
{\def\Element%
{1558}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{}
      object and set the repeat interval, then that object can be told
      to insert actions into its \Node%
{\def\Element%
{1559}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{}.
      These actions cause the \Node%
{\def\Element%
{1560}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}modelSchedule\endSeq{}\endNode{} to
      build commands that make the desired actions happen.  No two
      simultions are exactly the same, of course, and so there are no
      hard-and-fast rules. Generally, however, the
      \Node%
{\def\Element%
{1561}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}modelSchedule\endSeq{}\endNode{} is usually told to do either of
      two methods, \Node%
{\def\Element%
{1562}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}at:createActionTo:message\endSeq{}\endNode{} or
      \Node%
{\def\Element%
{1563}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}at:createActionForEach:message\endSeq{}\endNode{}.  The first
      is used when the action of a single object must be
      \Node%
{\def\Element%
{1564}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{}d, while the second is used to
      \Node%
{\def\Element%
{1565}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{} activities for whole lists.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1566}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      In this simple example, the \Node%
{\def\Element%
{1567}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}modelSchedule\endSeq{}\endNode{} has
      only a single action, which instructs the one bug in the
      simulation, whose name is \Node%
{\def\Element%
{1568}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}aBug\endSeq{}\endNode{}, to carry out
      its method called \Node%
{\def\Element%
{1569}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}step\endSeq{}\endNode{}.  It might be that
      there is a whole list of bugs, \Node%
{\def\Element%
{1570}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}bugList\endSeq{}\endNode{}, and
      each bug has to be instructed to carry out its
      \Node%
{\def\Element%
{1571}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}step\endSeq{}\endNode{} action.  In such a case, the command
      would be:\endPar{}\endNode{}\Node%
{\def\Element%
{1572}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1575}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[modelSchedule at: 0 createActionForEach: bugList message: M(step)];
      \endPar{}\endNode{}\Node%
{\def\Element%
{1576}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      Some additional scheduling topics are discussed, but first the
      abstract question of selectors and the M\Node%
{\def\Element%
{1577}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}\endSeq{}\endNode{}
      operator must be addressed.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.04-MACRO.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}9.2. \Node%
{\def\Element%
{1579}\def\ProcessingMode%
{xref-title-mode}}What's that \Node%
{\def\Element%
{1580}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}M()\endSeq{}\endNode{} Thing?\endNode{}\def\HeadingText{%
9.2. What's that M() Thing?}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1579}}\endNode{}\Node%
{\def\Element%
{1581}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1584}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1587}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      The commands that tell a \Node%
{\def\Element%
{1588}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{} to add
      actions usually have notation like like
      \Node%
{\def\Element%
{1589}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}M(someMethodName)\endSeq{}\endNode{} at the end.
      \Node%
{\def\Element%
{1590}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}M()\endSeq{}\endNode{} is a macro used in Swarm to mean that
      the selector for the message "step" is returned.  Selector, or
      \Node%
{\def\Element%
{1591}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}SEL\endSeq{}\endNode{}, is a variable type in Objective C which
      refers to the abstract name used in the compiler to refer to a
      method, in this case \Node%
{\def\Element%
{1592}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}step\endSeq{}\endNode{}.
      \Node%
{\def\Element%
{1593}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}M\endSeq{}\endNode{} is short for message (or method) and was
      "created to save the time of typing
      \Node%
{\def\Element%
{1594}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}@selector(myMethod)\endSeq{}\endNode{}," in the words of
      Nelson Minar.  Many of the methods available in the Swarm
      library want input in the form of a selector, an symbolic
      reference to a method name, and the \Node%
{\def\Element%
{1595}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}M()\endSeq{}\endNode{}
      notation is one shorthand way of giving it what it wants.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1596}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1599}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Some of the methods in the Swarm library will also want a
      list of parameters that go with the selector.  Suppose, for
      example, you have a psychologist agent that has this method:\endPar{}\endNode{}\Node%
{\def\Element%
{1600}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- dealWithProblemBetween:anObject And: (id) anotherObject;\endPar{}\endNode{}\Node%
{\def\Element%
{1601}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Presumably, you have some code in which there are objects,
      perhaps named \Node%
{\def\Element%
{1602}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}bill\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{1603}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}susan\endSeq{}\endNode{}, and when you are not needing the Swarm
      libraries for anything, you just tell your psychologist agent to
      carry out that method with a command such as:\endPar{}\endNode{}\Node%
{\def\Element%
{1604}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[yourShrinksName dealWithProblemBetween: bill And: susan];\endPar{}\endNode{}\Node%
{\def\Element%
{1605}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The name of this method is
      \Node%
{\def\Element%
{1606}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}dealWithProblemBetween:And:\endSeq{}\endNode{} and its input
      variables are two objects.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1607}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Now suppose you have a whole list of psychologists, and that you
      want each one of them to deal with the problem between bill and
      susan. Furthermore, you want them to do it over and over
      again. To do that, you need Swarm to schedule the job, so you
      run into that selector problem again.  Notice in the Swarm
      documentation that the \Node%
{\def\Element%
{1608}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{} protocol
      can respond to a method called
      \Node%
{\def\Element%
{1609}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createActionForEach\endSeq{}\endNode{}, which has a prototype
      like this:\endPar{}\endNode{}\Node%
{\def\Element%
{1610}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1613}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- at: (timeval\char95{}t)tVal createActionForEach: target message: (SEL)aSel : arg1 : arg2\endPar{}\endNode{}\Node%
{\def\Element%
{1614}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}At the end of this definition, we see this method wants to
      be given a selector, and then the two arguments that go with
      it. We know we can grab the selector of the command we want with
      \Node%
{\def\Element%
{1615}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}M(dealWithProblemBetween:And:)\endSeq{}\endNode{}, so when we
      tell the schedule object to make each psychologist look into the
      \Node%
{\def\Element%
{1616}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}bill\endSeq{}\endNode{} and \Node%
{\def\Element%
{1617}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}susan\endSeq{}\endNode{} problem, we
      need a command like this:\endPar{}\endNode{}\Node%
{\def\Element%
{1618}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[modelSchedule at: 0 createActionForEach: listOfShrinks message: M(dealWithProblemBetween:And:):bill:susan];\endPar{}\endNode{}\Node%
{\def\Element%
{1619}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Admittedly, this notation seems ungainly, but it works.\endPar{}\endNode{}\Node%
{\def\Element%
{1620}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1623}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}It is a difficult understand the reason why the selector is
      needed in the first place.  If one is not well versed in
      Objective C, it may be best just to follow the form of the
      examples provided with Swarm and not worry about the
      \Node%
{\def\Element%
{1624}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}M()\endSeq{}\endNode{} until it is absolutely necessary.

      \Node%
{\def\Element%
{1625}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}1\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{1626}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}1. \endLineField{}On the off chance that you have reached a point of
          necessity, and that is why you are reading this guide,
          consider this explanation of the problem. Many jobs happen
          inside the swarm library.  If you want each member of a
          certain list to receive a message every time period, you
          need to give Swarm a way to keep track of the members and
          the message. Since the objects at which you want the
          messages aimed already exist and are objects, it is quite
          straightford to pass a Swarm object that object's name.
          Passing a Swarm object a method name is, however, more
          difficult.  You need to give the Swarm object something
          symbolic if it is to receive and remember it.  You wouldn't
          want the Swarm library to be built around the passing of
          character strings, right?  (Well, maybe you would, but
          pretend your answer is no!) If you pass the selector, you
          are passing a variable type that the Swarm libraries can
          remember and use when they need it.\endPar{}\endNode{}}\endSeq{}\endNode{}
    \endPar{}\endNode{}\Node%
{\def\Element%
{1627}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}You can go look in the Swarm libraries to see many examples
      to show why selectors are so vital. Just by coincidence, we
      happened to be looking at the
      \Node%
{\def\Element%
{1628}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Object2dDisplay.m\endSeq{}\endNode{} file, where there is a
      particularly clear example of how these selectors come into
      play. The \Node%
{\def\Element%
{1629}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Object2dDisplay\endSeq{}\endNode{}'s
      \Node%
{\def\Element%
{1630}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}display\endSeq{}\endNode{} method is often scheduled in the
      observer swarm level of projects that draw on
      \Node%
{\def\Element%
{1631}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRaster\endSeq{}\endNode{} grids.  In order to make this
      possible, the selector is required.\endPar{}\endNode{}\Node%
{\def\Element%
{1632}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}When an instance of \Node%
{\def\Element%
{1633}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Object2dDisplay\endSeq{}\endNode{}
      is created, one of the first thing the user does it tell that
      object what the display message for its members is. The
      \Node%
{\def\Element%
{1634}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Object2dDisplay\endSeq{}\endNode{} is passed a selector by
      the "setDisplayMessage" method.. This bit of code is from
      SwarmSugarScape's \Node%
{\def\Element%
{1635}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ObserverSwarm.m\endSeq{}\endNode{} file.\endPar{}\endNode{}\Node%
{\def\Element%
{1636}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1639}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1642}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}agentDisplay = [Object2dDisplay createBegin: [self getZone]];
[agentDisplay setDisplayWidget: worldRaster];
[agentDisplay setDiscrete2dToDisplay: [sugarSpace getAgentGrid]];
[agentDisplay setObjectCollection: [modelSwarm getAgentList]];
[agentDisplay setDisplayMessage: M(drawSelfOn:)];   // note the draw method passed as selector
agentDisplay = [agentDisplay createEnd];\endPar{}\endNode{}\Node%
{\def\Element%
{1643}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The \Node%
{\def\Element%
{1644}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Object2dDisplay\endSeq{}\endNode{} is told which
      widget it is addressed to \Node%
{\def\Element%
{1645}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}setDisplayWidget\endSeq{}\endNode{}
      and which agent list (\Node%
{\def\Element%
{1646}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}[modelSwarm
      getAgentList]\endSeq{}\endNode{}).  Note how the object
      \Node%
{\def\Element%
{1647}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}agentDisplay\endSeq{}\endNode{} is told to set inside it the
      value of the selector \Node%
{\def\Element%
{1648}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}M(drawSelfOn:)\endSeq{}\endNode{}.  It
      does not ask for the additional information of the input
      variables that would ordinarly follow
      \Node%
{\def\Element%
{1649}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drawSelfOn:\endSeq{}\endNode{}. It only wants the selector.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1650}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      Each item in the list of agents, which is retrieved by the
      command \Node%
{\def\Element%
{1651}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}[modelSwarm getAgentList]\endSeq{}\endNode{}, has the
      method \Node%
{\def\Element%
{1652}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drawSelfOn:\endSeq{}\endNode{}. Here is the method
      \Node%
{\def\Element%
{1653}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drawSelfOn:\endSeq{}\endNode{}, which can be found in
      \Node%
{\def\Element%
{1654}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}SugarAgent.m\endSeq{}\endNode{}:\endPar{}\endNode{}\Node%
{\def\Element%
{1655}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- drawSelfOn: (id \Entity{lt} Raster \Entity{gt} )r
\{
  [r drawPointX: x Y: y Color: 100];
  return;
\}\endPar{}\endNode{}\Node%
{\def\Element%
{1656}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If the agent gets the message
      \Node%
{\def\Element%
{1657}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drawSelfOn:r\endSeq{}\endNode{}, then the agent in turn tells
      the object \Node%
{\def\Element%
{1658}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}r\endSeq{}\endNode{} to use its
      \Node%
{\def\Element%
{1659}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drawPointX:Y:Color:\endSeq{}\endNode{} method to put the agent
      on the picture.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1660}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The importance of the selector becomes apparent after a
      study of the file \Node%
{\def\Element%
{1661}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Object2dDisplay\endSeq{}\endNode{}.m in
      the Swarm space library. In
      \Node%
{\def\Element%
{1662}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Object2dDisplay.m\endSeq{}\endNode{}, we find this
      method:\endPar{}\endNode{}\Node%
{\def\Element%
{1663}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- setDisplayMessage: (SEL)s
\{
  displayMessage = s;
  return self;
\}\endPar{}\endNode{}\Node%
{\def\Element%
{1664}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This takes the selector and puts its value into an instance
      variable called \Node%
{\def\Element%
{1665}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}displayMessage\endSeq{}\endNode{}. The other set
      methods in \Node%
{\def\Element%
{1666}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Object2dDisplay\endSeq{}\endNode{} have already
      set the variable \Node%
{\def\Element%
{1667}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}objectCollection\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{1668}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}displayWidget\endSeq{}\endNode{}.  So, floating around inside
      the \Node%
{\def\Element%
{1669}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Object2dDisplay\endSeq{}\endNode{} instance, are
      instance variables that can be put to use in scheduling the
      actions.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1670}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      When the \Node%
{\def\Element%
{1671}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}display\endSeq{}\endNode{} method of
      \Node%
{\def\Element%
{1672}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Object2dDisplay\endSeq{}\endNode{} gets scheduled by the
      ObserverSwarm, this method from
      \Node%
{\def\Element%
{1673}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Object2dDisplay.m\endSeq{}\endNode{} is called:\endPar{}\endNode{}\Node%
{\def\Element%
{1674}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- display
\{
  [...some irrelevant lines omitted...]
  // if we have a collection to display, just use that. 

  [objectCollection forEach: displayMessage: displayWidget];
\}\endPar{}\endNode{}\Node%
{\def\Element%
{1675}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The \Node%
{\def\Element%
{1676}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}forEach:\endSeq{}\endNode{} method in the Swarm
      library takes a selector as its first argument, and any
      parameters needed by the selector follow, separated by
      semicolons. So, in this example, the
      \Node%
{\def\Element%
{1677}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}displayMessage\endSeq{}\endNode{} variable has been set as
      \Node%
{\def\Element%
{1678}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drawSelfOn\endSeq{}\endNode{} and the
      \Node%
{\def\Element%
{1679}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}displayWidget\endSeq{}\endNode{} has been set as the
      \Node%
{\def\Element%
{1680}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}worldRaster\endSeq{}\endNode{}. So when the
      \Node%
{\def\Element%
{1681}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}display\endSeq{}\endNode{} method executes, it passes to each
      object in the list a message that tells it to draw itself on the
      \Node%
{\def\Element%
{1682}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}worldRaster\endSeq{}\endNode{}.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1683}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Almost all uses of the selector type in Swarm allow a
      variable number of arguments.  It is important to note, however,
      that these arguments are generally required to be objects.  We
      would have some trouble if the arguments were floating point
      values, for example. When such a case arises, one if usually
      forced to write "wrapper" objects around floats in order to pass
      them to the Swarm library.  For example, consider a change in
      the problem faced by the hypothetical psychologists discussed
      above.  Suppose instead of dealing with \Node%
{\def\Element%
{1684}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}bill\endSeq{}\endNode{}
      and \Node%
{\def\Element%
{1685}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}susan\endSeq{}\endNode{}, they are instructed instead to set
      some variables inside themselves, such as
      \Node%
{\def\Element%
{1686}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}idealTemperature\endSeq{}\endNode{} or
      \Node%
{\def\Element%
{1687}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}setLengthOfFeelers\endSeq{}\endNode{} (these are buggish
      psychologists, say).  The method in the psychologist class might
      have this interface:\endPar{}\endNode{}\Node%
{\def\Element%
{1688}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- setTemperature: (float)temp And: (float)feeler;\endPar{}\endNode{}\Node%
{\def\Element%
{1689}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Now, if you wanted the Swarm to schedule this
      \Node%
{\def\Element%
{1690}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}setTemperature:And:\endSeq{}\endNode{} method to happen every
      time step, perhaps to "reinitialize" the objects to a "fresh"
      state, then you would be in a world of hurt.  If you need the
      temperature to be set at 37.3 and the feeler to be 54.1, you
      would be tempted to write this, but you would be making a big
      mistake:\endPar{}\endNode{}\Node%
{\def\Element%
{1691}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[modelSchedule at: 0 createActionForEach: listOfShrinks message: M(setTemperature:And):37.3:54.1];\endPar{}\endNode{}\Node%
{\def\Element%
{1692}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The \Node%
{\def\Element%
{1693}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createActionForEach:\endSeq{}\endNode{} method is
      looking for something like \Node%
{\def\Element%
{1694}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}SELECTOR:id:id\endSeq{}\endNode{}
      at the end, but this command instead gives it
      \Node%
{\def\Element%
{1695}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}SELECTOR:float:float\endSeq{}\endNode{}.\endPar{}\endNode{}\Node%
{\def\Element%
{1696}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1699}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1701}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}When you need to pass float values in this way, you may have
      to redesign your methods so that they can take objects.  For
      example, you might make a new kind of object to hold the values
      of those floating point numbers.  This new class is often called
      a "wrapper" class.  If that new class, call it the
      \Node%
{\def\Element%
{1702}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ParameterHolder\endSeq{}\endNode{} for discussion, is able
      to respond to methods like \Node%
{\def\Element%
{1703}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getTemp\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{1704}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getFeelr\endSeq{}\endNode{}, then this problem could be
      tackled by rewriting the
      \Node%
{\def\Element%
{1705}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}setTemperature:And:\endSeq{}\endNode{} method into something
      like:\endPar{}\endNode{}\Node%
{\def\Element%
{1706}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- setParameters: holdingObject;\endPar{}\endNode{}\Node%
{\def\Element%
{1707}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If you have an instance of
      \Node%
{\def\Element%
{1708}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ParameterHolder\endSeq{}\endNode{}, called
      \Node%
{\def\Element%
{1709}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}aHolder\endSeq{}\endNode{} for short, then the psychologist can
      be told to \Node%
{\def\Element%
{1710}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}setParameters\endSeq{}\endNode{} by a command like
      this:\endPar{}\endNode{}\Node%
{\def\Element%
{1711}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[aShrink setParameters: aHolder];\endPar{}\endNode{}\Node%
{\def\Element%
{1712}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Presumably, inside the \Node%
{\def\Element%
{1713}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}setParameters\endSeq{}\endNode{}
      method there are actions that get the values from the
      \Node%
{\def\Element%
{1714}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}aHolder\endSeq{}\endNode{} which is passed in, as necessary.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1715}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If you need to schedule a whole list of psychologists to
      reset themselves, the schedule command could be written as:\endPar{}\endNode{}\Node%
{\def\Element%
{1716}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[modelSchedule at: 0 createActionForEach: listOfShrinks message: M(setParameters):aHolder];\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.04-ACTIONGROUP.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}9.3. \Node%
{\def\Element%
{1718}\def\ProcessingMode%
{xref-title-mode}}\Node%
{\def\Element%
{1719}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{12.96\p@}}ActionGroup\endSeq{}\endNode{}s\endNode{}\def\HeadingText{%
9.3. ActionGroups}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1718}}\endNode{}\Node%
{\def\Element%
{1720}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1722}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}An \Node%
{\def\Element%
{1723}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ActionGroup\endSeq{}\endNode{} is a set of actions
      that are supposed to happen in sequence.  The
      \Node%
{\def\Element%
{1724}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildActions\endSeq{}\endNode{} method is often designed to
      first create an \Node%
{\def\Element%
{1725}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ActionGroup\endSeq{}\endNode{} and then to
      schedule that is be repeated every now and then.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1726}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Consider the Swarm \Node%
{\def\Element%
{1727}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}SugarScape\endSeq{}\endNode{}
      again.  Its model swarm has this
      \Node%
{\def\Element%
{1728}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildActions\endSeq{}\endNode{} method
      \Node%
{\def\Element%
{1729}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}2\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{1730}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}2. \endLineField{}Note: the use of shuffler to mix the agents in the list has
      been integrated into the Swarm libraries and by the time you
      read this there may be some new syntax involved.\endPar{}\endNode{}}\endSeq{}\endNode{}:\endPar{}\endNode{}\Node%
{\def\Element%
{1731}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- buildActions 
\{
  [super buildActions];

  // One time tick, a set of several actions:
  //   randomize the order of agent updates (to be fair)
  //   update all the agents
  //   kill off the agents who just died
  //   update the sugar on the world
  modelActions = [ActionGroup create: [self getZone]];
  [modelActions createActionTo: sugarSpace message: M(updateSugar)];
  [modelActions createActionTo: shuffler message: M(shuffleList:) : agentList];
  [modelActions createActionForEach: agentList message: M(step)];
  [modelActions createActionTo: self message: M(reapAgents)];

  // The schedule is just running our actions over and over again
  modelSchedule = [Schedule createBegin: [self getZone]];
  [modelSchedule setRepeatInterval: 1];
  modelSchedule = [modelSchedule createEnd];
  [modelSchedule at: 0 createAction: modelActions];

  return self;
\}\endPar{}\endNode{}\Node%
{\def\Element%
{1732}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{1733}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ActionGroup\endSeq{}\endNode{}s group together events
      at same timestep. \Node%
{\def\Element%
{1734}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{} then executes
      the actions.  If there is only one
      \Node%
{\def\Element%
{1735}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ActionGroup\endSeq{}\endNode{} in a schedule, then one might
      as well not create a group and just add the actions to a
      schedule one at a time. The use of
      \Node%
{\def\Element%
{1736}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ActionGroup\endSeq{}\endNode{}s is most valuable when
      several sets of separate actions are considered and they need to
      be scheduled to start at different times or repeat at different
      intervals.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.04-ACTIVATING.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}9.4. \Node%
{\def\Element%
{1738}\def\ProcessingMode%
{xref-title-mode}}Activating Swarms\endNode{}\def\HeadingText{%
9.4. Activating Swarms}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1738}}\endNode{}\Node%
{\def\Element%
{1739}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1741}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The \Node%
{\def\Element%
{1742}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildActions\endSeq{}\endNode{} method is intended to
      be the place in which one creates Swarm schedules, but that does
      not make the simulation carry out the scheduled actions.  In
      order to put the object's schedule into the "grander scheme of
      things" in Swarm, it is necessary to activate it.  Through the
      activation mechanism, the Swarm library integrates the many
      diverse actions of the different objects that exist in the
      simulation.  It is done through a hierarchical series of
      \Node%
{\def\Element%
{1743}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}activateIn\endSeq{}\endNode{} methods. The
      \Node%
{\def\Element%
{1744}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}main.m\endSeq{}\endNode{} tells the top level swarm to
      activate itself (after it has been told to create its objects
      and schedules, of course).  Then the top level swarm activates
      any schedules it might have created and (here's where the
      hierarchy comes into play) it tells the next lower level to
      activate itself.  That next level activates its schedules and
      tells the level below to activate itself.  This is how the
      activities of many different levels are synchronized.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1745}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Virtually any Swarm program will offer a sufficient example
      of the progression of \Node%
{\def\Element%
{1746}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}activateIn\endSeq{}\endNode{} methods
      from top to bottom. The \Node%
{\def\Element%
{1747}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}main.m\endSeq{}\endNode{} in
      \Node%
{\def\Element%
{1748}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Heatbugs\endSeq{}\endNode{} has this: \endPar{}\endNode{}\Node%
{\def\Element%
{1749}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[theTopLevelSwarm activateIn: nil];\endPar{}\endNode{}\Node%
{\def\Element%
{1750}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The top level swarm is told to activate itself in
      \Node%
{\def\Element%
{1751}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}nil\endSeq{}\endNode{}, which is a way of telling the top level
      that it is in fact at the top of the hierarchy.  It is not told
      to activate itself within the zone of any other swarm, in other
      words.  When the time comes, the lower levels are told to
      activate themselves in the zone of the swarm that is one step
      above it (as we shall see).\endPar{}\endNode{}\Node%
{\def\Element%
{1752}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Assuming we are doing a graphical model, the
    \Node%
{\def\Element%
{1753}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}activateIn:\endSeq{}\endNode{} method of the top level is found
    in \Node%
{\def\Element%
{1754}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugObserverSwarm.m\endSeq{}\endNode{}.  In the
      \Node%
{\def\Element%
{1755}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugObserverSwarm.m\endSeq{}\endNode{}'s
      \Node%
{\def\Element%
{1756}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}activateIn:\endSeq{}\endNode{} method, we find commands that
      both activate schedules within the observer swarm and also
      activate schedules in the next lower level of the simulation:
    \endPar{}\endNode{}\Node%
{\def\Element%
{1757}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- activateIn:  swarmContext
\{
  [super activateIn: swarmContext];

  [heatbugModelSwarm activateIn: self];

  [displaySchedule activateIn: self];
  
  return [self getActivity];
\}
 \endPar{}\endNode{}\Node%
{\def\Element%
{1758}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      It is important to recognize that the
      \Node%
{\def\Element%
{1759}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}activateIn\endSeq{}\endNode{} methods of each class within the
      hierarchy fulfill a vital role in synchronizing the schedules of
      the levels.  These are typically written so that, first, the
      activateIn method of the superclass is executed.  Then the
      schedules of the current class are told to activate themselves
      in the current context, and then the
      \Node%
{\def\Element%
{1760}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}activateIn\endSeq{}\endNode{} method of the next lower level
      Swarm is told to activate itself.\endPar{}\endNode{}\Node%
{\def\Element%
{1761}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      The \Node%
{\def\Element%
{1762}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}activateIn:\endSeq{}\endNode{} method returns an object of
      class Activity, which is a sufficiently important concept that
      it is treated on its own in the next section.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.04-ACTIVITY.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}9.5. \Node%
{\def\Element%
{1764}\def\ProcessingMode%
{xref-title-mode}}What is an \Node%
{\def\Element%
{1765}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{12.96\p@}}Activity\endSeq{}\endNode{}?\endNode{}\def\HeadingText{%
9.5. What is an Activity?}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1764}}\endNode{}\Node%
{\def\Element%
{1766}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1768}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      The \Node%
{\def\Element%
{1769}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Activity\endSeq{}\endNode{} class is a vital element of
      the Swarm approach.  It's fundamental purpose is to merge all
      the subjective points of view of agents at different levels into
      a single objective time sequence.  Somehow, the name
      \Node%
{\def\Element%
{1770}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Activity\endSeq{}\endNode{} does not seem powerful enough.
      Perhaps perhaps it would be better called an
      \Node%
{\def\Element%
{1771}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ActivityManagerAndIntegrator\endSeq{}\endNode{}, or
      something grand. Of course, on a practical level, it responds to
      messages like \Node%
{\def\Element%
{1772}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}run\endSeq{}\endNode{},
      \Node%
{\def\Element%
{1773}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}stop\endSeq{}\endNode{}, \Node%
{\def\Element%
{1774}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}next\endSeq{}\endNode{},
      \Node%
{\def\Element%
{1775}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}terminate\endSeq{}\endNode{}, and so forth.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1776}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If you have an object subclassed from
      \Node%
{\def\Element%
{1777}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Activity\endSeq{}\endNode{}, you can tell it to make the
      simulation run, stop, terminate, or respond to a number of other
      commands.  Swarm programs are designed hierarchically, so that
      if you tell an activity from one level to stop, you stop all
      lower levels of the simulation as well.  Many Swarm programmers
      do not come face-to-face with the Activity class because it sits
      behind the scenes. The control panel, in particular, allows
      users to start and stop their simulations, and all the while the
      \Node%
{\def\Element%
{1778}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Activity\endSeq{}\endNode{} class objects are behind the
      scenes, doing the actual work.\endPar{}\endNode{}\Node%
{\def\Element%
{1779}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1782}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1785}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1788}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}It is easy to "grab" the activity object of a given Swarm. The
      method which returns the activity of a Swarm is
      \Node%
{\def\Element%
{1789}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getActivity\endSeq{}\endNode{}.  If one needs to tell the object
      modelSwarm to stop, for example, then the command:\endPar{}\endNode{}\Node%
{\def\Element%
{1790}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[[modelSwarm getActivity] stop];\endPar{}\endNode{}\Node%
{\def\Element%
{1791}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}will get the job done. This first grabs that object's
    activity, and tells that activity to stop. To make that object
    start up again, it can be sent the \Node%
{\def\Element%
{1792}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}run\endSeq{}\endNode{}
    message.\endPar{}\endNode{}\Node%
{\def\Element%
{1793}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The ability to start, stop, and terminate an activity is
      particularly handy when designing a program that repeats a Swarm
      experiment.  These methods are used in the Swarm tutorial's
      "SimpleExperBug2" model as well as the "RepeatingHeatbugs"
      application that is available at the Swarm ftp site.
  \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.04-DYNAMIC.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}9.6. \Node%
{\def\Element%
{1795}\def\ProcessingMode%
{xref-title-mode}}Dynamic Scheduling\endNode{}\def\HeadingText{%
9.6. Dynamic Scheduling}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1795}}\endNode{}\Node%
{\def\Element%
{1796}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1799}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1802}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      The schedules described so far are of a particular static sort.
      Each agent, or each agent in a list, is told to execute some
      action at some particular time.  What if the simulation is
      designed so that the activation of a certain agent is
      conditional on events within the model?  The need to create a
      flexible schedule gives rise to an important feature of Swarm
      that is referred to as a \Node%
{\def\Element%
{1803}}\Seq%
{\def\fPosture%
{italic}}dynamic
      schedule\endSeq{}\endNode{}. The \Node%
{\def\Element%
{1804}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Mousetrap\endSeq{}\endNode{}
      application is a fully worked out example that shows the power
      of dynamic scheduling.\endPar{}\endNode{}\Node%
{\def\Element%
{1805}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The idea behind dynamic scheduling is so simple that one can
      be in danger of confusing it by explaining it too much.  Simply
      put, the strategy is as follows.  First, create an object from
      the Swarm \Node%
{\def\Element%
{1806}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{} class.  Don't put any
      actions in the schedule, just let it sit there in the
      \Node%
{\def\Element%
{1807}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildActions\endSeq{}\endNode{} method, doing nothing (yet).
      Second, write a method that tells that schedule to add things
      that are to be executed at particular times.  It is as simple as
      that.\endPar{}\endNode{}\Node%
{\def\Element%
{1808}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The concept is quite simple, but, as the
      \Node%
{\def\Element%
{1809}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Mousetrap\endSeq{}\endNode{} application illustrates, it
      can be quite complicated in the implementation.  The simplest
      possible dynamic scheduling project of which we are aware was
      made available in the package
      \Node%
{\def\Element%
{1810}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Swarmfest99-demos\endSeq{}\endNode{} (in the swarm ftp
      site, it should be available in the
      \Node%
{\def\Element%
{1811}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}users-contrib/anarchy\endSeq{}\endNode{} section).  The
      application is called
      \Node%
{\def\Element%
{1812}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}simpleObserverBug-growth\endSeq{}\endNode{}.  It begins
      with the familiar exercise from the Swarm tutorial and then
      models the regeneration of the food supply.\endPar{}\endNode{}\Node%
{\def\Element%
{1813}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In the \Node%
{\def\Element%
{1814}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}simpleObserverBug-growth\endSeq{}\endNode{}
      example, the \Node%
{\def\Element%
{1815}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm.m\endSeq{}\endNode{} file has all of
      the usual ingredients. The dynamic schedule is created in the
      \Node%
{\def\Element%
{1816}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildActions\endSeq{}\endNode{} method, like so:\endPar{}\endNode{}\Node%
{\def\Element%
{1817}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}  growthSchedule = [Schedule createBegin: self];
  [growthSchedule setAutoDrop: 1];
  growthSchedule = [growthSchedule createEnd];\endPar{}\endNode{}\Node%
{\def\Element%
{1818}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The \Node%
{\def\Element%
{1819}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}growthSchedule\endSeq{}\endNode{} is created and the
      \Node%
{\def\Element%
{1820}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}setAutoDrop\endSeq{}\endNode{} feature is set, so that actions
      are executed one time and then dropped from the
      \Node%
{\def\Element%
{1821}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}growthSchedule\endSeq{}\endNode{}.  Otherwise, once we add an
      action into the schedule, it will repeat itself forever.\endPar{}\endNode{}\Node%
{\def\Element%
{1822}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In the \Node%
{\def\Element%
{1823}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ModelSwarm.m\endSeq{}\endNode{}, one also finds the
      method that has the power to add items to the schedule.  It is
      called \Node%
{\def\Element%
{1824}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}scheduleGrowthAtX:Y:\endSeq{}\endNode{}.  When this
      method is called, it grows more food at a particular spot.
    \endPar{}\endNode{}\Node%
{\def\Element%
{1825}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- scheduleGrowthAtX: (int)x Y: (int)y 
\{
  long time;
  time=[[self getActivity] getCurrentTime];
  [growthSchedule at: time+growthInterval
      createActionTo: foodSpace
             message: M(putValue:atX:Y:):1:x:y];
  return self;
\}\endPar{}\endNode{}\Node%
{\def\Element%
{1826}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}As you can see, this method retrieves the current time, and
      then it tells the growth schedule to create an action to the
      foodspace at a time in the future.  And the ungainly
      \Node%
{\def\Element%
{1827}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}M()\endSeq{}\endNode{} notation appears, which we described in
      greater detail in \Node%
{\def\Element%
{1828}}\Link%
{\def\Label%
{SWARM.USER.USER2.04-MACRO.SECT1}}\Seq%
{}Section \Seq%
{}9.2\endSeq{}\endSeq{}\endLink{}\endNode{}.  Note that the
      putValue:atX:Y: method requires 3 integer parameters, which
      represent the value being put in the space and the two coordinates. \endPar{}\endNode{}\Node%
{\def\Element%
{1829}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The preceeding steps are the essence of creating the dynamic
      schedule. The empty schedule is created, and a method is created
      that can tell that schedule to add an item.  The only remaining
      step is to design the simulation so that this method actually
      gets executed during the course of the program.  That means that
      some class has to have a method that can tell the
      \Node%
{\def\Element%
{1830}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}modelSwarm\endSeq{}\endNode{} to execute its
      \Node%
{\def\Element%
{1831}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}scheduleGrowthAtX:Y:\endSeq{}\endNode{} method.  In this
      example, it is done by making the \Node%
{\def\Element%
{1832}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}foodSpace\endSeq{}\endNode{}
      object aware of the \Node%
{\def\Element%
{1833}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}modelSwarm\endSeq{}\endNode{} and the, when
      a piece of food is consumed, the dynamic scheduling process is
      put to use.  From the \Node%
{\def\Element%
{1834}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}FoodSpace.m\endSeq{}\endNode{} class,
      here is the relevant method:\endPar{}\endNode{}\Node%
{\def\Element%
{1835}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- eatX: (int)x Y: (int)y 
\{
  [self putValue: 0 atX: x Y: y];
  [model scheduleGrowthAtX: x Y: y];
  return self;
\}\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.05.CHAPTER}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{1837}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 10. Working with Lists\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{1837}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 10. Working with Lists\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Chapter 10. \Seq%
{}\Node%
{\def\Element%
{1837}\def\ProcessingMode%
{component-title-mode}}Working with Lists\endNode{}\endSeq{}\def\HeadingText{%
Chapter 10. Working with Lists}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{1837}}\endNode{}\Node%
{\def\Element%
{1838}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} Programmers who have worked primarily in non-object-oriented
    languages like Fortran, Pascal, or C, are sometimes perplexed at
    the way Swarm programs manage repetitive tasks.  While there is no
    hard rule that iterative chores have to be managed in a certain
    way, one will find a fairly common approach that uses a Swarm
    object called \Node%
{\def\Element%
{1839}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{}.  Since this usage is
    both widespread in Swarm and different from the usual strategy in
    other languages, it deserves some discussion.  \endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.05-LIST-CLASS.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}10.1. \Node%
{\def\Element%
{1841}\def\ProcessingMode%
{xref-title-mode}}The \Node%
{\def\Element%
{1842}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{12.96\p@}}List\endSeq{}\endNode{} Class\endNode{}\def\HeadingText{%
10.1. The List Class}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1841}}\endNode{}\Node%
{\def\Element%
{1843}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1846}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1849}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} This section is not intended as a comprehensive review of
      Swarm's Collections library.  That job is left to a later
      chapter.  Instead, the purpose of this section is to introduce
      some popular usages of the \Node%
{\def\Element%
{1850}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} class and
      discuss the implications for simulation modeling. \endPar{}\endNode{}\Node%
{\def\Element%
{1851}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The concept of a "linked list" may be familiar to C
      programmers. The motivating idea of a linked list is that one can
      develop a collection of entities by defining a series of structures
      that refer to each other. The first structure contains not only the
      information needed to describe a single entity a pointer to the next
      entity in the series. A linked list has a major advantage that it is
      flexible. Unlike an array that is allocated to allow N members, a
      linked list can grow indefinitely as members are added and it can
      shrink as members are deleted. The complicated problem is to make sure
      that the structures always correctly refer to each other as entities
      are added and removed.\endPar{}\endNode{}\Node%
{\def\Element%
{1852}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The Swarm Collections library provides a protocol called
      \Node%
{\def\Element%
{1853}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} that provides the swarm program with
      all of the benefits of a linked list and none of the
      hassles. The usage of \Node%
{\def\Element%
{1854}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} objects seems
      rather informal. A list can be told to add an object at the end
      or the beginning, or to retrieve an object that is in a certain
      position in a list. Working together with another Swarm
      protocol, the \Node%
{\def\Element%
{1855}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} protocol, the
      \Node%
{\def\Element%
{1856}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} object has a great deal of power and
      many uses.  It should be noted that Swarm provides other, more
      structured "container" classes as well
      (\Node%
{\def\Element%
{1857}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{},
      \Node%
{\def\Element%
{1858}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}OrderedSet\endSeq{}\endNode{}, \Node%
{\def\Element%
{1859}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{},
      and so forth), but a treatment of them is left to a later
      chapter.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-SYNTAX.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}10.2. \Node%
{\def\Element%
{1861}\def\ProcessingMode%
{xref-title-mode}}Basic \Node%
{\def\Element%
{1862}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{12.96\p@}}List\endSeq{}\endNode{} Syntax\endNode{}\def\HeadingText{%
10.2. Basic List Syntax}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1861}}\endNode{}\Node%
{\def\Element%
{1863}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}A list is created by making a call to the
      \Node%
{\def\Element%
{1864}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} class object.  Since there are
      probably not going to be any creation-time variables to set, the
      method used is typically create, rather than a
      \Node%
{\def\Element%
{1865}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{}/\Node%
{\def\Element%
{1866}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{}
      pair. In order to use method calls against the
      \Node%
{\def\Element%
{1867}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} object, one can import the header
      file \Node%
{\def\Element%
{1868}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}collections.h\endSeq{}\endNode{} from the Swarm library,
      and then this command will create a \Node%
{\def\Element%
{1869}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{}
      object:\endPar{}\endNode{}\Node%
{\def\Element%
{1870}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}id nameOfSomeList;
nameOfSomeList = [List create: self];
      \endPar{}\endNode{}\Node%
{\def\Element%
{1871}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Recall from the discussion of object creation that
      \Node%
{\def\Element%
{1872}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}self\endSeq{}\endNode{} refers to the memory zone in which the
      list is created. This is appropriate in a
      \Node%
{\def\Element%
{1873}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Swarm\endSeq{}\endNode{} or \Node%
{\def\Element%
{1874}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}GUISwarm\endSeq{}\endNode{}
      instance, while other classes would use \Node%
{\def\Element%
{1875}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}[self
      getZone]\endSeq{}\endNode{} in place of \Node%
{\def\Element%
{1876}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}self\endSeq{}\endNode{}.\endPar{}\endNode{}\Node%
{\def\Element%
{1877}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1881}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Once a list object exists, it can carry out many
      instructions. In the \Node%
{\def\Element%
{1882}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} protocol,
      methods that can add and remove either the first or last object
      in a list are defined.  For example, to add an object called
      \Node%
{\def\Element%
{1883}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}fred\endSeq{}\endNode{} at the end of a list called
      \Node%
{\def\Element%
{1884}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}listOfDogs\endSeq{}\endNode{}, one could write:\endPar{}\endNode{}\Node%
{\def\Element%
{1885}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[listOfDogs addLast: fred];
      \endPar{}\endNode{}\Node%
{\def\Element%
{1886}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}and, if it were necessary to remove the last object in the
      list, one could write:\endPar{}\endNode{}\Node%
{\def\Element%
{1887}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[listOfDogs removeLast];
      \endPar{}\endNode{}\Node%
{\def\Element%
{1888}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The object of type \Node%
{\def\Element%
{1889}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} is able not
      only to carry out the \Node%
{\def\Element%
{1890}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}addFirst:\endSeq{}\endNode{},
      \Node%
{\def\Element%
{1891}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}addLast:\endSeq{}\endNode{},
      \Node%
{\def\Element%
{1892}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}removeFirst:\endSeq{}\endNode{}, and
      \Node%
{\def\Element%
{1893}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}removeLast:\endSeq{}\endNode{} methods, it can also inherits
      methods from the \Node%
{\def\Element%
{1894}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Collections\endSeq{}\endNode{}
      protocol. Some of the useful methods in the
      \Node%
{\def\Element%
{1895}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Collections\endSeq{}\endNode{} protocol are:

      \Node%
{\def\Element%
{1896}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{1897}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1898}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{1899}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getCount\endSeq{}\endNode{}: Use this to
            find out how many items are already in the list \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1900}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1901}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{1902}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}begin: aZone\endSeq{}\endNode{}: This
            creates an \Node%
{\def\Element%
{1903}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} object that can be
            used to traverse this list. \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1904}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1905}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{1906}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}remove: aMember\endSeq{}\endNode{}. This
            will search through a list to find aMember and it will
            remove that object (and return it).\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1907}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1908}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{1909}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}removeAll\endSeq{}\endNode{}: This take all
            elements out of the list, but it will not destroy the list
            or the elements in the list.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{1910}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{1911}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{1912}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}deleteAll\endSeq{}\endNode{}: Be careful:
            this removes the elements from memory as it clears the
            list \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}
    \endPar{}\endNode{}\Node%
{\def\Element%
{1913}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Lists have many uses in Swarm projects. The following
      sections discuss them, in turn.  First, lists are used to manage
      collections of objects and schedule their activities in the
      model swarm layer of a simulation.  Second, lists are used to
      pass information back and forth between levels of a simulation.
      Third, lists can be used by individual agents to keep track of
      their experiences and manage their information \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-MODEL.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}10.3. \Node%
{\def\Element%
{1915}\def\ProcessingMode%
{xref-title-mode}}Lists: Managing Objects in the Model Swarm\endNode{}\def\HeadingText{%
10.3. Lists: Managing Objects in the Model Swarm}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1915}}\endNode{}\Node%
{\def\Element%
{1916}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In the \Node%
{\def\Element%
{1917}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}swarmapps\endSeq{}\endNode{} package, one can
      find the \Node%
{\def\Element%
{1918}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Hello World\endSeq{}\endNode{} example
      exercises. This exercise provides a good example of the way in
      which lists are used to organize the agents in a model swarm.
      In section three of the \Node%
{\def\Element%
{1919}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Hello World\endSeq{}\endNode{}
      package, a list of people called \Node%
{\def\Element%
{1920}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplList\endSeq{}\endNode{} is
      created.  Here is a skeleton showing the important commands that
      create and use the \Node%
{\def\Element%
{1921}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} protocol in the
      model swarm level. The file is called
      \Node%
{\def\Element%
{1922}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}PplModelSwarm.m\endSeq{}\endNode{}.\endPar{}\endNode{}\Node%
{\def\Element%
{1923}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}@implementation PplModelSwarm

- buildObjects
\{ 
  //...
  // build the list to keep track of the ppl
  pplList = [List create: [self getZone]];
  for (inci = 0; inci < numPpl; inci++)
   \{
    Person * person;
    id name;
    // allocate memory for a temporary person
    person = [Person createBegin: [self getZone]];
    //... 
    [person setWorld: pplList Room: room Party: self];
    //...
    person = [person createEnd];

    // add the person to the list of people
    [pplList addLast: person];
  \}
\}
- buildActions
\{
  //...
  modelActions createActionForEach: pplList message: M(step)];
  //...
\}
      \endPar{}\endNode{}\Node%
{\def\Element%
{1924}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}As in most Swarm examples, the list is created in the
      \Node%
{\def\Element%
{1925}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildObjects\endSeq{}\endNode{} method.  The
      \Node%
{\def\Element%
{1926}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} class object is a "factory object,"
      it can create instances that can answer to the
      \Node%
{\def\Element%
{1927}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} protocol. In this case, the list is
      called \Node%
{\def\Element%
{1928}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplList\endSeq{}\endNode{}.\endPar{}\endNode{}\Node%
{\def\Element%
{1929}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In order to instruct the factory object
      \Node%
{\def\Element%
{1930}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} to manufacture an object that acts
      like a \Node%
{\def\Element%
{1931}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{}, one would ordinarily have to
      import the \Node%
{\def\Element%
{1932}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}collections.h\endSeq{}\endNode{} header
      file. However, as in many Swarm examples, the
      \Node%
{\def\Element%
{1933}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}collections.h\endSeq{}\endNode{} file has already been
      included in a file that has been included in this file, and so
      an explicit import statement is not needed. \endPar{}\endNode{}\Node%
{\def\Element%
{1934}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}After an object that responds to the
      \Node%
{\def\Element%
{1935}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} protocol is created, then objects
      can be added onto that list. In this example, after
      \Node%
{\def\Element%
{1936}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplList\endSeq{}\endNode{} is created, then the
      \Node%
{\def\Element%
{1937}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildObjects\endSeq{}\endNode{} method proceeds into a for
      loop that creates the people objects.  At the end of that loop,
      each person is added to the \Node%
{\def\Element%
{1938}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplList\endSeq{}\endNode{} by the
      command:\endPar{}\endNode{}\Node%
{\def\Element%
{1939}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[pplList addLast: person];
      \endPar{}\endNode{}\Node%
{\def\Element%
{1940}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The Swarm libraries take care of allocating memory and all
      the other details.\endPar{}\endNode{}\Node%
{\def\Element%
{1941}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Once this list of people is created, what happens?  In this
      case, the list of people becomes the central organizing element
      of actions that are to be scheduled. The object
      \Node%
{\def\Element%
{1942}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}modelActions\endSeq{}\endNode{} is told to go through the people
      list, one at a time, and cause each person to carry out its
      \Node%
{\def\Element%
{1943}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}step\endSeq{}\endNode{} method.  The ins-and-outs of activity
      and schedule design are discussed elsewhere.  This
      \Node%
{\def\Element%
{1944}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createActionForEach\endSeq{}\endNode{} method works because
      the target is a Swarm collection item, the
      \Node%
{\def\Element%
{1945}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplList\endSeq{}\endNode{}, and the Swarm library knows how to
      traverse through the list of people. \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-PASSING.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}10.4. \Node%
{\def\Element%
{1947}\def\ProcessingMode%
{xref-title-mode}}Lists: Passing Information Among Levels in a Swarm Model\endNode{}\def\HeadingText{%
10.4. Lists: Passing Information Among Levels in a Swarm Model}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1947}}\endNode{}\Node%
{\def\Element%
{1948}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Simplified scheduling is not the only usage for lists. It is
      equally important that list objects can be used to quickly communicate
      a great deal of information between objects. This is done by creating 
      methods that can get a list and pass it to another object. \endPar{}\endNode{}\Node%
{\def\Element%
{1949}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In the \Node%
{\def\Element%
{1950}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}PplModelSwarm.m\endSeq{}\endNode{} file, for example,
      one finds this method:\endPar{}\endNode{}\Node%
{\def\Element%
{1951}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- getPplList
\{
  return pplList;
\}
      \endPar{}\endNode{}\Node%
{\def\Element%
{1952}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} When another object needs a list of people, the
      \Node%
{\def\Element%
{1953}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}PplModelSwarm\endSeq{}\endNode{} is able to supply
      it.\endPar{}\endNode{}\Node%
{\def\Element%
{1954}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      This design is extremely convenient when it comes time to
      consider the observer swarm level of the simulation. The
      \Node%
{\def\Element%
{1955}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}PplObserverSwarm.m\endSeq{}\endNode{} file gets the list of
      people from the \Node%
{\def\Element%
{1956}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}PplModelSwarm\endSeq{}\endNode{} and uses
      that list to collect data in order to construct graphs.
      Consider the \Node%
{\def\Element%
{1957}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}avgFriendGraph\endSeq{}\endNode{} object, for
      example, which charts the average number of friends per person.
      The \Node%
{\def\Element%
{1958}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildObjects\endSeq{}\endNode{} section of
      \Node%
{\def\Element%
{1959}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}PplObserverSwarm.m\endSeq{}\endNode{} has this command:\endPar{}\endNode{}\Node%
{\def\Element%
{1960}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[avgFriendGraph createAverageSequence: "avgNumFriends"
        withFeedFrom: [pplModelSwarm getPplList]
         andSelector: M(getNumFriends)];
      \endPar{}\endNode{}\Node%
{\def\Element%
{1961}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The method
      \Node%
{\def\Element%
{1962}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createAverageSequence:withFeedFrom:andSelector\endSeq{}\endNode{}
      is equipped to take a list of objects, ask each one to supply a
      piece of data (the \Node%
{\def\Element%
{1963}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getNumFriends\endSeq{}\endNode{} returns an
      integer from the person object), and builds an average that is
      plotted.  This powerful, easy method of passing information for
      presentation is possible because the various Swarm libraries are
      designed to work together.  While the user could certainly
      ignore the \Node%
{\def\Element%
{1964}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} protocol and design her
      own setup for managing collections, doing so would indeed be
      costly because one would be forced to forfeit the convenient
      features of the other libraries that can handle Swarm
      \Node%
{\def\Element%
{1965}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} objects.  \endPar{}\endNode{}\Node%
{\def\Element%
{1966}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1968}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1971}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} The ability to pass a list to the observer swarm in order
      to create a graph is just one benefit of Swarm
      \Node%
{\def\Element%
{1972}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} protocol.  Note in the
      \Node%
{\def\Element%
{1973}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}PplModelSwarm\endSeq{}\endNode{} example that when people
      are created, one of the set messages
      (\Node%
{\def\Element%
{1974}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}setWorld:Room:Party:\endSeq{}\endNode{}) tells the individual
      person in which list it is currently residing. When that method
      executes, it sets the value of an instance variable called
      \Node%
{\def\Element%
{1975}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplPresent\endSeq{}\endNode{} inside the person. (Look at the
      code in \Node%
{\def\Element%
{1976}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Person.m\endSeq{}\endNode{} to verify it!)  Since each
      individual person has that list available, it can ask the list
      for information. For example, to find out how many other people
      are still in the list, the \Node%
{\def\Element%
{1977}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Person\endSeq{}\endNode{} object
      can do this:\endPar{}\endNode{}\Node%
{\def\Element%
{1978}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[pplPresent getCount]-1\endPar{}\endNode{}\Node%
{\def\Element%
{1979}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}which returns an integer equal to the number of objects in
      the \Node%
{\def\Element%
{1980}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplList\endSeq{}\endNode{} minus 1. The
      \Node%
{\def\Element%
{1981}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Person\endSeq{}\endNode{} object does not have to do
      anything to update the \Node%
{\def\Element%
{1982}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplPresent\endSeq{}\endNode{} variable to
      reflect current conditions.  Since the
      \Node%
{\def\Element%
{1983}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplPresent\endSeq{}\endNode{} variable is actually a pointer to
      the \Node%
{\def\Element%
{1984}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplList\endSeq{}\endNode{} as it currently exists in the
      \Node%
{\def\Element%
{1985}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}PplModelSwarm\endSeq{}\endNode{}, this is always "up to
      date".  Some additional usages that the
      \Node%
{\def\Element%
{1986}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Person\endSeq{}\endNode{} class might include require the
      creation of \Node%
{\def\Element%
{1987}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} objects, which are
      introduced in the next section.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.05-LISTS-CHORES.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}10.5. \Node%
{\def\Element%
{1989}\def\ProcessingMode%
{xref-title-mode}}Lists: Organizing Repetitive Chores inside Objects\endNode{}\def\HeadingText{%
10.5. Lists: Organizing Repetitive Chores inside Objects}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{1989}}\endNode{}\Node%
{\def\Element%
{1990}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1994}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{1997}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2000}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} In the \Node%
{\def\Element%
{2001}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Hello World\endSeq{}\endNode{} example, each
      instance of the \Node%
{\def\Element%
{2002}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Person\endSeq{}\endNode{} class is aware of
      the \Node%
{\def\Element%
{2003}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplList\endSeq{}\endNode{} that exists in the
      \Node%
{\def\Element%
{2004}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}PplModelSwarm\endSeq{}\endNode{}.  Inside the individual
      person, the name used to refer to that list is
      \Node%
{\def\Element%
{2005}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplPresent\endSeq{}\endNode{}. Because
      \Node%
{\def\Element%
{2006}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplPresent\endSeq{}\endNode{} refers to an object that conforms
      to the \Node%
{\def\Element%
{2007}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} protocol, and all
      \Node%
{\def\Element%
{2008}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} objects follow the
      \Node%
{\def\Element%
{2009}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Collections\endSeq{}\endNode{} protocol, then a number of
      interesting features can be put to use.\endPar{}\endNode{}\Node%
{\def\Element%
{2010}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Suppose the we want to have the person go through the list of
      people in the list and make a new list that includes all of the
      people in that list who have a lot of friends, say more than 3.
      In order to carry this out, code has to be designed to traverse
      through the \Node%
{\def\Element%
{2011}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplPresent\endSeq{}\endNode{} list, ask each one how
      many friend it has, and then if that person has more than 3,
      then add that person to another list.\endPar{}\endNode{}\Node%
{\def\Element%
{2012}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} One of the most interesting protocols in Swarm is the
      \Node%
{\def\Element%
{2013}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} protocol. In mathematics, one might
      have seen a variable X\Node%
{\def\Element%
{2014}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{-4\p@}\def\PositionPointShiftFactor%
{0}}i\endSeq{}\endNode{}, and the index
      variable i can range from 1 through the number of possible
      values. In Swarm, \Node%
{\def\Element%
{2015}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} means much more
      than that.  A Swarm \Node%
{\def\Element%
{2016}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} is a "living,
      breathing" object that can be moved around in a list, and the
      \Node%
{\def\Element%
{2017}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} can also respond to requests for
      information.\endPar{}\endNode{}\Node%
{\def\Element%
{2018}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}For new Swarm users, the most puzzling thing about the usage
      of \Node%
{\def\Element%
{2019}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} is the creation process.
      \Node%
{\def\Element%
{2020}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} objects are not created with the
      standard swarm
      \Node%
{\def\Element%
{2021}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{}/\Node%
{\def\Element%
{2022}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{}
      pair. Instead, any object from the
      \Node%
{\def\Element%
{2023}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Collections\endSeq{}\endNode{} class, such as a
      \Node%
{\def\Element%
{2024}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{}, can spawn an index by using the
      \Node%
{\def\Element%
{2025}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}begin:\endSeq{}\endNode{} method. In one step, the
      \Node%
{\def\Element%
{2026}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}begin:\endSeq{}\endNode{} method will create an object that
      conforms to the \Node%
{\def\Element%
{2027}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} protocol and
      positions that index object before the first element of the
      collection.  Here is an example of how the
      \Node%
{\def\Element%
{2028}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplPresent\endSeq{}\endNode{} list might create an index called
      \Node%
{\def\Element%
{2029}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplIndex\endSeq{}\endNode{}:\endPar{}\endNode{}\Node%
{\def\Element%
{2030}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}id <Index> pplIndex;
pplIndex = [ pplPresent begin: [self getZone]];
      \endPar{}\endNode{}\Node%
{\def\Element%
{2031}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The first line declares the instance variable that will be
      the index.  It is not necessary to include the protocol name
      \Entity{lt}\Node%
{\def\Element%
{2032}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{}\Entity{gt} in the declaration, so it
      might as well have been just \Node%
{\def\Element%
{2033}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}id pplIndex\endSeq{}\endNode{}.
      Some programmers prefer to include the extra information in the
      declaration because it clarifies the code and also may help to
      catch programming mistakes.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2034}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} After it is created, the \Node%
{\def\Element%
{2035}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplIndex\endSeq{}\endNode{} can
      respond to messages. Many of the methods that
      \Node%
{\def\Element%
{2036}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} objects can carry out will do two
      things at the same time: the \Node%
{\def\Element%
{2037}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} will
      be positioned and the identity of the object at which the index
      currently resides will be returned.  For example, consider this
      code that sets a variable called
      \Node%
{\def\Element%
{2038}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}elementFromList\endSeq{}\endNode{} equal to the next one, as
      provided by the index:\endPar{}\endNode{}\Node%
{\def\Element%
{2039}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}elementFromList = [pplIndex next];
      \endPar{}\endNode{}\Node%
{\def\Element%
{2040}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}When it is first created, the \Node%
{\def\Element%
{2041}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplIndex\endSeq{}\endNode{}
      is positioned at the edge of the collection, just before the
      first object in the collection. If we want the index to move to
      the next object, and give us a pointer to the next object in the
      list, it is done with that command. (As in C, collections are
      numbered beginning with the number zero).
    \endPar{}\endNode{}\Node%
{\def\Element%
{2042}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}It is common in Swarm examples to use the
      \Node%
{\def\Element%
{2043}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}next\endSeq{}\endNode{} method of the
      \Node%
{\def\Element%
{2044}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} object in a while statement that
      cycles through the elements of a list.  Here is a bit of code
      that would go through the list of people in \Node%
{\def\Element%
{2045}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Hello
      World\endSeq{}\endNode{} and ask each one how many friends it
      has. And, if the number is larger than 3, then that object is
      added to a list \Node%
{\def\Element%
{2046}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}popularPeople\endSeq{}\endNode{} (which we
      assume is created somewhere else in the code).\endPar{}\endNode{}\Node%
{\def\Element%
{2047}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}id <Index> pplIndex = nil;
id         element  = nil;
int numberOfFriends;

pplIndex = [pplPresent begin: [self getZone]];
while ((element = [pplIndex next]) != nil) 
\{
  numberOfFriends = [element getNumFriends];
  if (numberOfFriends > 3) 
    [popularPeople addLast: element];
\}
[index drop];
      \endPar{}\endNode{}\Node%
{\def\Element%
{2048}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This example uses a number of convenient features from the C
      language.  One is that the conditions evaluated in logical
      statements are actually calculated.  Hence, the conditional in
      the while statement causes the \Node%
{\def\Element%
{2049}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplIndex\endSeq{}\endNode{} to
      move to the next element, in the process setting the variable
      element equal to that object.  As a result, inside the curly
      braces, the variable element can be used to refer to that
      particular element from the list. In this case, that object is
      asked to give us its number of friends.\endPar{}\endNode{}\Node%
{\def\Element%
{2050}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The index object, \Node%
{\def\Element%
{2051}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplIndex\endSeq{}\endNode{} plays a vital
      role in this example.  The index index is accessed inside the
      \Node%
{\def\Element%
{2052}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}while\endSeq{}\endNode{} statement so that we can cycle
      through the elements in a list. The while statement in the
      previous example will begin with the first element of the list,
      and one-by-one it will move through the
      \Node%
{\def\Element%
{2053}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplList\endSeq{}\endNode{}. What happens when it gets to the
      end?  When it is positioned at the last element of the list,
      then the \Node%
{\def\Element%
{2054}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}[pplIndex next]\endSeq{}\endNode{} command will return
      \Node%
{\def\Element%
{2055}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}nil\endSeq{}\endNode{}.  The logical condition is set so that
      the program exits the while loop at that point.\endPar{}\endNode{}\Node%
{\def\Element%
{2056}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If one inspects a number of Swarm examples, one will find
      the while loop is constructed in slightly different ways, but
      the effect is the same. For example, the logical condition is
      sometimes written simply as (\Node%
{\def\Element%
{2057}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}[pplIndex
      next]\endSeq{}\endNode{}).  This is allowed because of the convention
      that, as long as this does not return \Node%
{\def\Element%
{2058}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}nil\endSeq{}\endNode{},
      then the while loop will continue.  If that approach is used,
      instead of using element in the while loop, we replace all
      occurrences of element with \Node%
{\def\Element%
{2059}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}[index get]\endSeq{}\endNode{}, like
      so:\endPar{}\endNode{}\Node%
{\def\Element%
{2060}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}id <Index> pplIndex    = nil;
int numberOfFriends;

pplIndex = [pplPresent begin: [self getZone]];
while (([pplIndex next])) 
\{
  numberOfFriends = [[pplIndex get] getNumFriends];
  if (numberOfFriends > 3) 
    [popularPeople addLast: [pplIndex get]];
\}
[pplIndex drop];
      \endPar{}\endNode{}\Node%
{\def\Element%
{2061}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This last change would cause a performance penalty because
      the \Node%
{\def\Element%
{2062}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}pplIndex\endSeq{}\endNode{} object is asked to evaluate and
      return on object three times.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2063}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}It is hard to overstate the value of the
     \Node%
{\def\Element%
{2064}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} protocol in working with Swarm
     lists. One especially important feature of
     \Node%
{\def\Element%
{2065}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} is that it can be used to manage
     items in the list itself. That is, the index can do more than
     just point to objects. If an index is positioned at an object,
     and one wants to cut that object from the list, then the command
     \Node%
{\def\Element%
{2066}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}[pplIndex remove]\endSeq{}\endNode{} will get the job done. The
     index will automatically reorient itself, so that the next time
     the index receives the \Node%
{\def\Element%
{2067}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}next\endSeq{}\endNode{} instruction, it
     will point to the next valid member of the list.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2068}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2071}}\DisplayGroup%
{\def\StartIndent%
{69.6\p@}\def\StartIndentFactor%
{0}\def\fFamName{Arial}\def\fSize%
{9\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\DisplayGroup%
{}\Par%
{\def\FirstLineStartIndent%
{-21.6\p@}\def\FirstLineStartIndentFactor%
{0}}\LineField%
{\def\FieldWidth%
{21.6\p@}\def\FieldWidthFactor%
{0}}\insertExternalGraphic%
{\def\EntitySystemId%
{figs/caution.eps}\def\NotationSystemId%
{}\def\EscapementDirection%
{false}\def\PositionPointX%
{0\p@}\def\PositionPointXFactor%
{0}\def\PositionPointY%
{0\p@}\def\PositionPointYFactor%
{0}}\endLineField{}Watch out for nil objects when using "while" loops\endPar{}\Node%
{\def\Element%
{2073}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If you loop through a list, checking only that the index
      is not positioned over a nil object, your loop might end before
      you expect if there is a nil object in your list.\endPar{}\endNode{}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2074}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      A variable of type id might be unintialized, or nil.  Suppose
       that, through intention or error, an object \Node%
{\def\Element%
{2075}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}person1\endSeq{}\endNode{} has been set to
       nil, as in \endPar{}\endNode{}\Node%
{\def\Element%
{2076}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   
      person1=nil;\endPar{}\endNode{}\Node%
{\def\Element%
{2077}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This could happen if, for example, the object referred to by
    the name person1 has been dropped, and the user is careful to set
    the name equal to nil in order to be safe.\endPar{}\endNode{}\Node%
{\def\Element%
{2078}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Now suppose the program adds person1 to a list, and other
    (nonnil) objects are added as well. If the program creates an
    index and tries to loop through this list with the while
    construction described above, there will be a major problem. The
    loop will be executed, until the index object arrives at person1.
    Since person1 is equal to nil, then [pplIndex next] will return
    nil, \Node%
{\def\Element%
{2079}}\Seq%
{\def\fPosture%
{italic}}and the program will exit the while list\endSeq{}\endNode{}
    and continue with the next commands.  If there is a danger that
    some of the objects in a list might be nil, and the programmer
    wants the loop to continue after "skipping over" the nil objects,
    then the best approach is a for loop that takes advantage of some
    symbols defined in the Swarm libraries. For each object in a list,
    the Index protocol's method \Node%
{\def\Element%
{2080}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getLoc\endSeq{}\endNode{} will tell
    us whether the index is positioned in the list on a "Member."  If
    the [index next] message causes the index to "step off the last"
    object in a list, then the return from that message is "End."
    \endPar{}\endNode{}\Node%
{\def\Element%
{2081}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\{
id <Index> pplIndex = [pplPresent begin: aZone];
id member;

for (member = [pplIndex next]; [pplIndex getLoc] == Member; member = [pplIndex next])
   \{
    // do something with member ...
    \}
        [index drop];   
\}\endPar{}\endNode{}\Node%
{\def\Element%
{2082}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}When it is created, the index is automatically positioned
     at the Start. The first argument in the for statement positions
     the index on the first member of the collection.  The second
     argument says that the for loop continues as long as the returned
     value from \Node%
{\def\Element%
{2083}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getLoc\endSeq{}\endNode{} is equal to the symbol
     Member.  And after the loop is complete, the third argument says
     that the index is supposed to step to the next object in the list.\endPar{}\endNode{}\Node%
{\def\Element%
{2084}}\DisplayGroup%
{\def\StartIndent%
{69.6\p@}\def\StartIndentFactor%
{0}\def\fFamName{Arial}\def\fSize%
{9\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\DisplayGroup%
{}\Par%
{\def\FirstLineStartIndent%
{-21.6\p@}\def\FirstLineStartIndentFactor%
{0}}\LineField%
{\def\FieldWidth%
{21.6\p@}\def\FieldWidthFactor%
{0}}\insertExternalGraphic%
{\def\EntitySystemId%
{figs/caution.eps}\def\NotationSystemId%
{}\def\EscapementDirection%
{false}\def\PositionPointX%
{0\p@}\def\PositionPointXFactor%
{0}\def\PositionPointY%
{0\p@}\def\PositionPointYFactor%
{0}}\endLineField{}Be sure to drop index objects when you are finished with
    them \endPar{}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2086}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}It is important to \Node%
{\def\Element%
{2087}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drop\endSeq{}\endNode{}
      the instance of \Node%
{\def\Element%
{2088}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} when its use is
      completed.  That's accomplished by the \Node%
{\def\Element%
{2089}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}[pplIndex
      drop];\endSeq{}\endNode{} command in the last example.  If this is
      forgotten, the index will continue to occupy memory and waste
      resources.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.06.CHAPTER}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{2091}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 11. Checking on a Swarm's progress: The Observer\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{2091}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 11. Checking on a Swarm's progress: The Observer\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Chapter 11. \Seq%
{}\Node%
{\def\Element%
{2091}\def\ProcessingMode%
{component-title-mode}}Checking on a Swarm's progress: The Observer\endNode{}\endSeq{}\def\HeadingText{%
Chapter 11. Checking on a Swarm's progress: The Observer}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{2091}}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.06-MONITOR.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}11.1. \Node%
{\def\Element%
{2093}\def\ProcessingMode%
{xref-title-mode}}Monitoring a Swarm\endNode{}\def\HeadingText{%
11.1. Monitoring a Swarm}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{2093}}\endNode{}\Node%
{\def\Element%
{2094}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2096}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} When a Swarm program is running in the GUI mode, what the
      user sees is controlled by the top level Swarm that we often
      call the observer swarm.  The observer swarm adopts the
      \Node%
{\def\Element%
{2097}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}GUISwarm\endSeq{}\endNode{} protocol, which means that it
      has all of the features of a Swarm plus some "optional added
      extras."  The file that contains the source that controls the
      user interface for a specific project may be called simply
      \Node%
{\def\Element%
{2098}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ObserverSwarm.m\endSeq{}\endNode{}.  In many examples, authors
      have customized the name of the file to include the name of
      their project, as in \Node%
{\def\Element%
{2099}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugObserverSwarm.m\endSeq{}\endNode{}
      or \Node%
{\def\Element%
{2100}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ForestModelSwarm.m\endSeq{}\endNode{}
    \endPar{}\endNode{}\Node%
{\def\Element%
{2101}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2103}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      The most prominent of the extra features of the observer swarm
      is the control panel.  The control panel is the familiar set of
      buttons that can \Node%
{\def\Element%
{2104}}\Seq%
{\def\fFamName{Arial}}Start\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{2105}}\Seq%
{\def\fFamName{Arial}}Stop\endSeq{}\endNode{} a swarm model.  The control panel
      also can "step" the simulation through its paces one time-unit
      at-at-time using the \Node%
{\def\Element%
{2106}}\Seq%
{\def\fFamName{Arial}}Next\endSeq{}\endNode{} button.  The
      \Node%
{\def\Element%
{2107}}\Seq%
{\def\fFamName{Arial}}Save\endSeq{}\endNode{} button on the control panel is
      intended to save the window positions of objects that are able
      to do so.\endPar{}\endNode{}\Node%
{\def\Element%
{2108}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Apart from the control panel, what the user sees at run-time
      is completely dependent on the particular example that is being
      considered.  It is probably safe to say, however, that if one
      stays within the Swarm library, without adding external support
      from the Graph library or other toolkits, then there two
      especially important kinds of display objects that can be
      created in \Node%
{\def\Element%
{2109}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ObserverSwarm.m\endSeq{}\endNode{}. These two
      are:\endPar{}\endNode{}\Node%
{\def\Element%
{2110}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2112}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{2113}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{2114}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2115}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}The \Node%
{\def\Element%
{2116}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRaster\endSeq{}\endNode{}. \endSeq{}\endNode{}\Node%
{\def\Element%
{2117}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}In just about any of the common swarm applications,
              there is some sense of geometry or spatial position. The
              \Node%
{\def\Element%
{2118}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRaster\endSeq{}\endNode{} graph is the tool that
              is used to represent the positioning of agents and other
              objects in that space.
            \endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2119}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2121}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2123}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{2124}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2125}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}The Data Display Graphs. \endSeq{}\endNode{}\Node%
{\def\Element%
{2126}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}For the visual presentation of summary information,
            Swarm provides a set of tools for presenting information
            in graphic format.  Two of the most common sorts are the
            histogram, which shows the relative frequency of various
            values occurring in a stream of data, and a line graph
            which displays the changes over time in one or more
            variables as a simulation progresses.  These
            capabilities are provided by the Swarm protocols
            \Node%
{\def\Element%
{2127}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}EZDistribution\endSeq{}\endNode{} and
            \Node%
{\def\Element%
{2128}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}EZGraph\endSeq{}\endNode{}, respectively.
          \endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2129}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The following sections discuss the achitecture of these two
      classes of displays in greater depth. Most of the examples for
      discussion are taken from the
      \Node%
{\def\Element%
{2130}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Arborgames\endSeq{}\endNode{} code provided by Melissa
      Savage.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.06-ZOOMRASTER.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}11.2. \Node%
{\def\Element%
{2132}\def\ProcessingMode%
{xref-title-mode}}Making a clickable
    \Node%
{\def\Element%
{2133}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{12.96\p@}}ZoomRaster\endSeq{}\endNode{}\endNode{}\def\HeadingText{%
11.2. Making a clickable
    ZoomRaster}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{2132}}\endNode{}\Node%
{\def\Element%
{2134}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2136}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}There is no doubt that one of the most impressive aspects of
      a Swarm presentation is the visually intriguing movement of
      agents on a landscape.  The ability to stop a simulation from
      the control panel and then click on objects, open up displays
      that reveal their internal variables and allow them to be
      changed, is one of the main strengths of the Swarm library.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2137}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In order to introduce the way in which these
      \Node%
{\def\Element%
{2138}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRaster\endSeq{}\endNode{} displays are created, we have
      to introduce a number of inter-linked Swarm toolkit items.
      Before we are done, we have to talk about objects created using
      the \Node%
{\def\Element%
{2139}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}space\endSeq{}\endNode{} library, as well as objects
      from the \Node%
{\def\Element%
{2140}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}gui\endSeq{}\endNode{} library.  In the
      \Node%
{\def\Element%
{2141}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Arborgames\endSeq{}\endNode{} simulation, there is a set
      of standard examples that quite nicely illustrate the vital
      steps.  For emphasis, we now consider these elements
      individually.

      \Node%
{\def\Element%
{2142}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{2143}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}1. \endLineField{}\endSeq{}\Node%
{\def\Element%
{2144}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2145}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Create a \Node%
{\def\Element%
{2146}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ColorMap\endSeq{}\endNode{}. \endSeq{}\endNode{}\Node%
{\def\Element%
{2147}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Swarm was first developed for the Unix operating
              system. Programmers who have worked in X will probably
              already know that the X server offers a long list of
              possible colors.  If we want to access those colors, we
              can build a \Node%
{\def\Element%
{2148}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ColorMap\endSeq{}\endNode{} object in
              Swarm.  After it is defined, and commands are executed
              which draw on the screen, then the
              \Node%
{\def\Element%
{2149}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ColorMap\endSeq{}\endNode{} object will control
              which colors are displayed.
            \endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\Node%
{\def\Element%
{2150}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Here is an excerpt from the file
            \Node%
{\def\Element%
{2151}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ForestObserverSwarm.m\endSeq{}\endNode{} in which an
            object, called \Node%
{\def\Element%
{2152}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}colormap\endSeq{}\endNode{}, is created and
            then told to remember that the numbers 25, 26,and 27 refer
            to the colors "white","LightCyan1" and "PaleTurquoise"
            which is defined deep in the bowels of the video
            display.\endPar{}\endNode{}\Node%
{\def\Element%
{2153}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}colormap = [Colormap create: [self getZone]];

[colormap setColor: 25 ToName: "white"];
[colormap setColor: 26 ToName: "LightCyan1"];
[colormap setColor: 27 ToName: "PaleTurquoise"];\endPar{}\endNode{}\Node%
{\def\Element%
{2154}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{2155}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ColorMap\endSeq{}\endNode{}s can have fancier
            items. For example, colors need not be referred to by
            simple names. Rather, each color can be referred to in a
            numerical format. All colors can be referred to by the
            intensity of their red, blue, and green components, for
            example.  If one needs to assign the many available shades
            of red to the numbers between 100 and 150, it can easily
            be done with commands that use the RGB format.  There is
            an example of such a use of the
            \Node%
{\def\Element%
{2156}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ColorMap\endSeq{}\endNode{} protocol in the
            \Node%
{\def\Element%
{2157}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}heatbugs\endSeq{}\endNode{} source code.
          \endPar{}\endNode{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2158}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}2. \endLineField{}\endSeq{}\Node%
{\def\Element%
{2159}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2160}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Create a \Node%
{\def\Element%
{2161}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRaster\endSeq{}\endNode{}. \endSeq{}\endNode{}\Node%
{\def\Element%
{2162}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}A \Node%
{\def\Element%
{2163}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRaster\endSeq{}\endNode{} is a visual
              placeholder, a rectangular entity of a certain size.
              After trimming out some of the detail, the steps that
              create the \Node%
{\def\Element%
{2164}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRaster\endSeq{}\endNode{} called
              \Node%
{\def\Element%
{2165}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}forestRaster\endSeq{}\endNode{} in
              \Node%
{\def\Element%
{2166}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Arborgames\endSeq{}\endNode{} look like this:\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\Node%
{\def\Element%
{2167}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}forestRaster = [ZoomRaster createBegin: [self getZone]];
SET\char95{}WINDOW\char95{}GEOMETRY\char95{}RECORD\char95{}NAME (forestRaster);
forestRaster = [forestRaster createEnd];

[forestRaster setColormap: colormap];
[forestRaster setZoomFactor: 4];
[forestRaster setWidth: [forestModelSwarm getWorldSize] 
   Height: [forestModelSwarm getWorldSize]];
[forestRaster setWindowTitle: "The Forest"];
[forestRaster pack];\endPar{}\endNode{}\Node%
{\def\Element%
{2168}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This code should be viewed as foundation-building.  The
            \Node%
{\def\Element%
{2169}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRaster\endSeq{}\endNode{} object is created, and
            the macro
            \Node%
{\def\Element%
{2170}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}SET\char95{}WINDOW\char95{}GEOMETRY\char95{}RECORD\char95{}NAME\endSeq{}\endNode{} is
            executed.  This means that, when the user clicks
            \Node%
{\def\Element%
{2171}}\Seq%
{\def\fFamName{Arial}}save\endSeq{}\endNode{} on the control panel, the
            window position of the \Node%
{\def\Element%
{2172}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}forestRaster\endSeq{}\endNode{}
            object will be saved in a file in the user's account.
          \endPar{}\endNode{}\Node%
{\def\Element%
{2173}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}To briefly summarize the effect of the other commands, we
            note the following.  The fourth line tells the new raster
            object to use the colormap we just created.  The fifth
            line controls the magnification of the display, which in
            this case is 4.  The sixth line asks the
            \Node%
{\def\Element%
{2174}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}forestModelSwarm\endSeq{}\endNode{} object to report back
            the horizontal and vertical dimensions of the grid on
            which trees exist and then uses those to set the width and
            height of the \Node%
{\def\Element%
{2175}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRaster\endSeq{}\endNode{} object's
            display.  The eighth line gives the display window a name
            and the last line, which tells the
            \Node%
{\def\Element%
{2176}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}forestRaster\endSeq{}\endNode{} to
            \Node%
{\def\Element%
{2177}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}pack\endSeq{}\endNode{} itself, causes the display to be
            initialized according to the settings we just provided.
          \endPar{}\endNode{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2178}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}3. \endLineField{}\endSeq{}\Node%
{\def\Element%
{2179}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2180}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Map a Swarm Space object onto the 
              \Node%
{\def\Element%
{2181}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRaster\endSeq{}\endNode{}. \endSeq{}\endNode{}\Node%
{\def\Element%
{2182}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}By itself, a \Node%
{\def\Element%
{2183}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRaster\endSeq{}\endNode{} is just a
              nice looking set of edges around a blank background.  In
              order to display things inside that window, we need to
              create a connection between the agents who live in the
              model swarm (and lower level swarms) and then display
              them in the observer swarm.  This is done most commonly
              by telling each agent that it lives in a Swarm object
              known as a \Node%
{\def\Element%
{2184}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Grid2d\endSeq{}\endNode{}.  As the agent
              goes through its lifetime, one of its activities is to
              put itself at a position in the grid and then (possibly)
              erase itself from the old spot and put itself in the new
              spot.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\Node%
{\def\Element%
{2185}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The Swarm protocol \Node%
{\def\Element%
{2186}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Object2dDisplay\endSeq{}\endNode{}
            can handle the work of drawing the positions of agents in
            a \Node%
{\def\Element%
{2187}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Grid2d\endSeq{}\endNode{} object on a
            \Node%
{\def\Element%
{2188}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRaster\endSeq{}\endNode{}.  In the
            \Node%
{\def\Element%
{2189}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Arborgames\endSeq{}\endNode{} example, the
            \Node%
{\def\Element%
{2190}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}forestRaster\endSeq{}\endNode{} is used by an object
            called \Node%
{\def\Element%
{2191}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}treeDisplay\endSeq{}\endNode{} which connects the
            agents in the \Node%
{\def\Element%
{2192}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Grid2d\endSeq{}\endNode{} to the graphical 
            display.\endPar{}\endNode{}\Node%
{\def\Element%
{2193}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}treeDisplay = [Object2dDisplay createBegin: [self getZone]];
[treeDisplay setDisplayWidget: forestRaster];
[treeDisplay setDiscrete2dToDisplay: 
[[forestModelSwarm getTheForest] getTreeGrid]]; 
[treeDisplay setObjectCollection:
[[forestModelSwarm getTheForest] getTreeList]]; 
[treeDisplay setDisplayMessage: M(drawSelfOn:)];
treeDisplay = [treeDisplay createEnd];\endPar{}\endNode{}\Node%
{\def\Element%
{2194}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This example is slightly more complicated than most,
            because the \Node%
{\def\Element%
{2195}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Grid2d\endSeq{}\endNode{} object is not
            retrieved directly from
            \Node%
{\def\Element%
{2196}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}forestModelSwarm\endSeq{}\endNode{} , but rather from
            another object that is defined in the
            \Node%
{\def\Element%
{2197}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}forestModelSwarm\endSeq{}\endNode{} .  Except for that
            wrinkle, this is a standard example.  The
            \Node%
{\def\Element%
{2198}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Object2dDisplay\endSeq{}\endNode{} protocol is told to
            use the \Node%
{\def\Element%
{2199}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}forestRaster\endSeq{}\endNode{} as its "display
            widget."  It is necessary to tell the
            \Node%
{\def\Element%
{2200}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}treeDisplay\endSeq{}\endNode{} which
            \Node%
{\def\Element%
{2201}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Grid2d\endSeq{}\endNode{} to use, and this chore is
            accomplished by the setDiscrete2dDisplay command.
          \endPar{}\endNode{}\Node%
{\def\Element%
{2202}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Why the \Node%
{\def\Element%
{2203}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}setObjectCollection\endSeq{}\endNode{}
            message and the \Node%
{\def\Element%
{2204}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}setDisplayMessage\endSeq{}\endNode{} are
            used is interesting and important.  The
            \Node%
{\def\Element%
{2205}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Object2dDisplay\endSeq{}\endNode{} protocol has a
            method called \Node%
{\def\Element%
{2206}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}display\endSeq{}\endNode{}, which can be
            put in a schedule by the user.  When the display method is
            executed, the \Node%
{\def\Element%
{2207}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}treeDisplay\endSeq{}\endNode{} (since it
            follows the \Node%
{\def\Element%
{2208}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Object2dDisplay\endSeq{}\endNode{}
            protocol) will send each of the agent-objects in the
            \Node%
{\def\Element%
{2209}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Grid2d\endSeq{}\endNode{} a message telling it to draw
            itself in the \Node%
{\def\Element%
{2210}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}forestRaster\endSeq{}\endNode{}. How does it
            tell the object to draw itself? We tell it how by passing
            it the selector for the agent-object's
            \Node%
{\def\Element%
{2211}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drawSelfOn:\endSeq{}\endNode{} method.  Each agent must
            be able to respond to a message of this sort:\endPar{}\endNode{}\Node%
{\def\Element%
{2212}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}[anAgent drawSelfOn: aRaster];\endPar{}\endNode{}\Node%
{\def\Element%
{2213}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The program will crash if each agent that is
            positioned in the \Node%
{\def\Element%
{2214}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Grid2d\endSeq{}\endNode{} is not
            able to respond to \Node%
{\def\Element%
{2215}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drawSelfOn:\endSeq{}\endNode{}.
          \endPar{}\endNode{}\Node%
{\def\Element%
{2216}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The message \Node%
{\def\Element%
{2217}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}setObjectCollection:
              [[forestModelSwarm getTheForest] getTreeList]]\endSeq{}\endNode{}
              is not strictly necessary and the program will run
              without it.  It may not run so quickly, however.
              Without this command, the \Node%
{\def\Element%
{2218}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}treeDisplay\endSeq{}\endNode{}
              will respond to the \Node%
{\def\Element%
{2219}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}display\endSeq{}\endNode{} message
              by searching in each possible position of the
              \Node%
{\def\Element%
{2220}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Grid2d\endSeq{}\endNode{} and sending each object it
              finds the \Node%
{\def\Element%
{2221}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drawSelfOn:\endSeq{}\endNode{} message.  If
              the grid is large relative to the number of agents, then
              this might be a very slow process. The
              \Node%
{\def\Element%
{2222}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}setObjectCollection\endSeq{}\endNode{} method
              eliminates the need for \Node%
{\def\Element%
{2223}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}treeDisplay\endSeq{}\endNode{}
              to search through the whole grid.  When the object
              collection is set, then the
              \Node%
{\def\Element%
{2224}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}treeDisplay\endSeq{}\endNode{} will simply go through
              the list of objects and tell each one to display
              itself.\endPar{}\endNode{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2225}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}4. \endLineField{}\endSeq{}\Node%
{\def\Element%
{2226}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2227}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Tell the \Node%
{\def\Element%
{2228}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRaster\endSeq{}\endNode{} 
             Where to Send Mouse Clicks. \endSeq{}\endNode{}\Node%
{\def\Element%
{2229}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}A \Node%
{\def\Element%
{2230}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRaster\endSeq{}\endNode{} object is highly
              self-aware.  If you stop a simulation and right-click on
              an object, you may see a probe display pop up.  That
              does not happen by magic, of course.  It is necessary to
              tell the raster that, when there is a certain kind of
              click, that it is supposed to pass that click to some
              other object that knows what to do with it.  That's why
              there is a command like this in the
              \Node%
{\def\Element%
{2231}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildObjects\endSeq{}\endNode{} phase:\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\Node%
{\def\Element%
{2232}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}[forestRaster setButton: ButtonRight 
                 Client: treeDisplay 
                Message: M(makeProbeAtX:Y:)];\endPar{}\endNode{}\Node%
{\def\Element%
{2233}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The \Node%
{\def\Element%
{2234}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}treeDisplay\endSeq{}\endNode{} is told to make a
            probe for the object that exists at a particular point
            in the grid.
          \endPar{}\endNode{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2235}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}5. \endLineField{}\endSeq{}\Node%
{\def\Element%
{2236}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2237}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Schedule the Display. \endSeq{}\endNode{}\Node%
{\def\Element%
{2238}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}This is one of the aspects of Swarm that could use
              some standardization. In the schedule, one generally
              includes steps that erase the raster, then the
              \Node%
{\def\Element%
{2239}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Object2dDisplay\endSeq{}\endNode{} is told to update
              itself by the \Node%
{\def\Element%
{2240}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}display\endSeq{}\endNode{} command, and
              then that display is drawn to the screen by telling the
              \Node%
{\def\Element%
{2241}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRaster\endSeq{}\endNode{} to
              \Node%
{\def\Element%
{2242}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drawSelf\endSeq{}\endNode{}.
            \endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\Node%
{\def\Element%
{2243}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In a simple model, one in which we only have one
            \Node%
{\def\Element%
{2244}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRaster\endSeq{}\endNode{} to update, then the
            schedule could be as simple. In the
            \Node%
{\def\Element%
{2245}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildActions\endSeq{}\endNode{} part of the code, one
            could create an \Node%
{\def\Element%
{2246}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ActionGroup\endSeq{}\endNode{} like
            this:\endPar{}\endNode{}\Node%
{\def\Element%
{2247}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}displayActions = [ActionGroup create: self];
[displayActions createActionTo: forestRaster message: M(erase)];
[displayActions createActionTo: treeDisplay message:M(display)];
[displayActions createActionTo: forestRaster message: M(drawSelf)];\endPar{}\endNode{}\Node%
{\def\Element%
{2248}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}(Of course, that action group has to be put into a
            schedule, which will probably execute it at each time
            point.) The \Node%
{\def\Element%
{2249}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildActions\endSeq{}\endNode{} method in
            \Node%
{\def\Element%
{2250}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}arborgames\endSeq{}\endNode{} is a bit more
            complicated than that since a large number of displays are
            managed.
          \endPar{}\endNode{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2251}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}6. \endLineField{}\endSeq{}\Node%
{\def\Element%
{2252}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2253}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Make sure the Agents Put Themselves in the Grid! \endSeq{}\endNode{}\Node%
{\def\Element%
{2254}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}              Inside the code that creates the individual agents who
              are to be drawn on the grid, one must be careful to
              accomplish two things.  First, the
              \Node%
{\def\Element%
{2255}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drawSelfOn:\endSeq{}\endNode{} method must be created.
              Second, if one wants to have a clickable
              \Node%
{\def\Element%
{2256}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRaster\endSeq{}\endNode{} that allows agents to
              be probed, it is also vital to have the agents report
              their positions.
            \endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\Node%
{\def\Element%
{2257}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}It is fairly standard in Swarm models to manage this
            by creating a \Node%
{\def\Element%
{2258}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Grid2d\endSeq{}\endNode{} object in the
            model swarm level and then, when an agent is created, use
            a \Node%
{\def\Element%
{2259}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}setWorld\endSeq{}\endNode{} method to notify the agent
            where it lives. In \Node%
{\def\Element%
{2260}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}heatbugs\endSeq{}\endNode{},
            for example, each heatbug has a \Node%
{\def\Element%
{2261}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}step\endSeq{}\endNode{}
            method that controls how it searches for heat and moves to
            find a better spot.  When it has decided where to go, the
            heatbug puts "nil" at it spot in the grid where it used to
            be and then it puts itself at the new coordinates.  Here
            is the relevant code from
            \Node%
{\def\Element%
{2262}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Heatbug.m\endSeq{}\endNode{}:\endPar{}\endNode{}\Node%
{\def\Element%
{2263}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} [world putObject: nil atX: x Y: y];
[world putObject: self atX: newX Y: newY];\endPar{}\endNode{}\Node%
{\def\Element%
{2264}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In the \Node%
{\def\Element%
{2265}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Arborgames\endSeq{}\endNode{} example,
            the trees don't consciously move themselves. Rather, they
            are created and destroyed according to a set of rules that
            put them in a spot for a while.  When a tree is created,
            it is added to the grid with this command that is in the
            \Node%
{\def\Element%
{2266}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Forest.m\endSeq{}\endNode{} file:\endPar{}\endNode{}\Node%
{\def\Element%
{2267}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}- addTree: aTree atX: (int) xVal Y: (int) yVal
\{
  [treeList addFirst: aTree];
  [treeGrid putObject: aTree atX: xVal Y: yVal];
  return self; 
\}\endPar{}\endNode{}\Node%
{\def\Element%
{2268}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Trees don't move (so far as we know), so we only need
            to update this tree's position arises when the tree
            dies. The \Node%
{\def\Element%
{2269}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Forest.m\endSeq{}\endNode{} file creates a
            class of methods common to the different kinds of forests,
            and then the subclasses like
            \Node%
{\def\Element%
{2270}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MatureForest\endSeq{}\endNode{} are created to provide
            additional detail.  There are methods that remove a tree
            from the simulation and take it off the grid.  The trees
            that are supposed to die are added to a Swarm list called
            the \Node%
{\def\Element%
{2271}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}exitQ\endSeq{}\endNode{}. For each timestep, the
            forest tells each kind of tree to do its
            \Node%
{\def\Element%
{2272}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}step\endSeq{}\endNode{} method, which adds trees to the
            \Node%
{\def\Element%
{2273}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}exitQ\endSeq{}\endNode{} list, and then the forest's
            \Node%
{\def\Element%
{2274}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}step\endSeq{}\endNode{} method removes those trees from
            the grid. In the \Node%
{\def\Element%
{2275}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MatureForest.m\endSeq{}\endNode{}
            file,\endPar{}\endNode{}\Node%
{\def\Element%
{2276}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}- step 
\{
  id aTree, index;

  [treeList forEach: M(step)];

  index = [exitQ begin: [self getZone]];
  while( (aTree = [index next]) )
   \{
    [treeList remove: aTree];
    [treeGrid putObject: nil atX: [aTree getX] Y: [aTree getY]];
    [index remove];
    [aTree drop];
  \}
  [index drop];
  return self;
\}\endPar{}\endNode{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.06-GRAPHS.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}11.3. \Node%
{\def\Element%
{2278}\def\ProcessingMode%
{xref-title-mode}}Displaying Results in Graphs\endNode{}\def\HeadingText{%
11.3. Displaying Results in Graphs}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{2278}}\endNode{}\Node%
{\def\Element%
{2279}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2282}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2284}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The most commonly used graphs in Swarm are histograms, which
      display the frequency distribution of a variable, and line
      plots, which show changes over time in real-valued numbers.
      There are some little details that arise in some applications,
      but for the most part creating graphs is easy. \endPar{}\endNode{}\Node%
{\def\Element%
{2285}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The Swarm protocol that can create line plots is called
      \Node%
{\def\Element%
{2286}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}EZGraph\endSeq{}\endNode{}.  The essential steps require the
      user to create a graph object, and optionally to assign labels
      for various display attributes.  For example, returning to the
      \Node%
{\def\Element%
{2287}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Arborgames\endSeq{}\endNode{} simulation, one can create
      a graph showing the numbers of trees of various sorts.  The
      first step is to create the graph object, in this case called
      \Node%
{\def\Element%
{2288}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}popGraph\endSeq{}\endNode{}.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2289}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}popGraph = [EZGraph createBegin: [self getZone]];
SET\char95{}WINDOW\char95{}GEOMETRY\char95{}RECORD\char95{}NAME (popGraph); 
[popGraph setTitle: "population"]; 
[popGraph setAxisLabelsX: "time" Y: "population"];
popGraph = [popGraph createEnd];
    \endPar{}\endNode{}\Node%
{\def\Element%
{2290}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}After the \Node%
{\def\Element%
{2291}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}EZGraph\endSeq{}\endNode{} object is in existence,
      then it can be instructed to prepare itself to plot some lines.
      A stream of numbers is thought of as a sequence, and internal to
      the Swarm library there is an object type called sequence that
      is used by the graph tools to keep track of the numbers they are
      to present. \endPar{}\endNode{}\Node%
{\def\Element%
{2292}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}When the graph object is told to create the sequence, it can
      be told to formulate a summary statistic and plot it. In the
      \Node%
{\def\Element%
{2293}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Heatbugs\endSeq{}\endNode{} simulation, the aim is to
      plot a summary of the unhappiness of all bugs.  The average
      level of unhappiness of all bugs is the chosen indicator.  Here
      is a code excerpt that shows how an object called
      \Node%
{\def\Element%
{2294}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}unhappyGraph\endSeq{}\endNode{} is told to create a sequence for
      plotting:
    \endPar{}\endNode{}\Node%
{\def\Element%
{2295}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[unhappyGraph createAverageSequence: "unhappiness"
             withFeedFrom: [heatbugModelSwarm getHeatbugList]
              andSelector: M(getUnhappiness)];\endPar{}\endNode{}\Node%
{\def\Element%
{2296}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This uses the
      \Node%
{\def\Element%
{2297}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createAverageSequence:withFeedFrom:andSelector\endSeq{}\endNode{}
      method.  Note that the sequence is assigned the name
      "unhappiness".  The quotation marks are needed because the name
      of the sequence is a character string.  The
      \Node%
{\def\Element%
{2298}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}unhappyGraph\endSeq{}\endNode{} is told to take data from the
      list of bugs, which is found by asking the
      \Node%
{\def\Element%
{2299}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}heatbugModelSwarm\endSeq{}\endNode{} to get the list.  Each bug
      in the list responds to a method
      \Node%
{\def\Element%
{2300}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getUnhappiness\endSeq{}\endNode{}.  The combined effect of
      these elements is to create the sequence which will collect the
      average values.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2301}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      We hasten to point out that not all sequences need be averages.
      Output from individual objects can be plotted as well.  For an
      example, we return to the \Node%
{\def\Element%
{2302}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Arborgames\endSeq{}\endNode{}
      \Node%
{\def\Element%
{2303}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}EZGraph\endSeq{}\endNode{} object called
      \Node%
{\def\Element%
{2304}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}popGraph\endSeq{}\endNode{}.  The population graph is intended
      to show how numbers for each sort of tree. There is a Swarm list
      of all species called \Node%
{\def\Element%
{2305}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}speciesList\endSeq{}\endNode{}.  The
      following code iterates through the list of all species and
      tells the \Node%
{\def\Element%
{2306}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}popGraph\endSeq{}\endNode{} to create a sequence for
      each one.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2307}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}for (i = 0; i < speciesNumber; i++)
\{
  id aSpecies;
  aSpecies = [speciesList atOffset: i];
  [popGraph createSequence: [aSpecies getSpeciesName]
              withFeedFrom: aSpecies  andSelector: M(getCount)];
\}\endPar{}\endNode{}\Node%
{\def\Element%
{2308}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Each species is able to give its name (respond to
      \Node%
{\def\Element%
{2309}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getSpeciesName\endSeq{}\endNode{}) and provide a count of the
      number of trees (respond to \Node%
{\def\Element%
{2310}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getCount\endSeq{}\endNode{}). If
      some kind of mistake occurs, say a different kind of object is
      added into the \Node%
{\def\Element%
{2311}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}speciesList\endSeq{}\endNode{}, then the program
      will crash during the run (and there probably will also be a
      compiler warning).
    \endPar{}\endNode{}\Node%
{\def\Element%
{2312}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The work to this point has created the graph object, and
      told it what to graph, but it does not cause the graph to be
      presented as the simulation runs.  In order to see the plots,
      the commands have to be part of the observerSwarm's scheduled
      activity.  As it turns out, an \Node%
{\def\Element%
{2313}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}EZGraph\endSeq{}\endNode{}
      has a very simple method called \Node%
{\def\Element%
{2314}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}step\endSeq{}\endNode{} that
      can do the necessary work, so somewhere in the
      \Node%
{\def\Element%
{2315}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildActions\endSeq{}\endNode{} method, a command such as this
      is required:
    \endPar{}\endNode{}\Node%
{\def\Element%
{2316}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[displayActions createActionTo: popGraph message: M(step)];\endPar{}\endNode{}\Node%
{\def\Element%
{2317}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      This is often part of an \Node%
{\def\Element%
{2318}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ActionGroup\endSeq{}\endNode{} that
      is scheduled to update all graphs and
      \Node%
{\def\Element%
{2319}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRasters\endSeq{}\endNode{}.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.07.CHAPTER}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{2321}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 12. Probing and Displaying the Contents of Swarm Objects\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{2321}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 12. Probing and Displaying the Contents of Swarm Objects\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Chapter 12. \Seq%
{}\Node%
{\def\Element%
{2321}\def\ProcessingMode%
{component-title-mode}}Probing and Displaying the Contents of Swarm Objects\endNode{}\endSeq{}\def\HeadingText{%
Chapter 12. Probing and Displaying the Contents of Swarm Objects}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{2321}}\endNode{}\Node%
{\def\Element%
{2322}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Probes allow the user to dynamically interact with the objects
      in their simulation. As the simulation progresses, the user can
      observe and adjust the values of the instance variables.
      Furthermore, the user can cause objects to execute their
      methods, taking parameter values or input specified by the user
      during the simulation.  generating method calls. The main appeal
      of this approach is that these interactions are not hardwired
      into the program code, but occur due to user-generated requests.
      This interactive process is managed by objects and methods that
      are, for the most part, hidden from the user.  Still, the
      interaction can be customized easily.
    \endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.07-PROBES.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}12.1. \Node%
{\def\Element%
{2324}\def\ProcessingMode%
{xref-title-mode}}What's a Probe?\endNode{}\def\HeadingText{%
12.1. What's a Probe?}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{2324}}\endNode{}\Node%
{\def\Element%
{2325}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Anyone who has run \Node%
{\def\Element%
{2326}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Heatbugs\endSeq{}\endNode{} (or
      any of the demo programs, for that matter) has seen a probe
      display.  It is a rectangular window that has rows which list
      attributes of the object being displayed.  The data being
      displayed may be gathered from a high level object, such as the
      observer swarm or the model swarm, or it may be collected from
      an individual agent.  Almost all Swarm projects have a probe
      display for the observer and model swarms because starting
      values for the parameters can be set with those displays.  Probe
      displays for individual agents are typically created during a
      run by user interaction with the Swarm program (for example, by
      clicking on a "clickable \Node%
{\def\Element%
{2327}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ZoomRaster\endSeq{}\endNode{}", as
      discussed in the previous section).\endPar{}\endNode{}\Node%
{\def\Element%
{2328}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The key to this capability is the probe. A probe is an
      object that can gather information from one object and relay it
      to other objects, including displays on the screen.  Swarm
      provides two kinds of probes. The Swarm class
      \Node%
{\def\Element%
{2329}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}VarProbe\endSeq{}\endNode{} extracts the value of a specific
      instance variable from an object. The second kind of probe is
      provided by the \Node%
{\def\Element%
{2330}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MessageProbe\endSeq{}\endNode{} class.  The
      \Node%
{\def\Element%
{2331}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MessageProbe\endSeq{}\endNode{}.  A message probe gives the
      user the ability to access methods inside an object--to send
      messages to it, in other words:
    \endPar{}\endNode{}\Node%
{\def\Element%
{2332}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{2333}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{2334}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2335}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}\Node%
{\def\Element%
{2336}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}VarProbe\endSeq{}\endNode{}. \endSeq{}\endNode{}\Node%
{\def\Element%
{2337}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Probes an instance variable. A variable probe appears
          to the user in a window with the name of the instance
          variable and a space that may display the value of the
          variable (or show a blank or "nil").  Variable probes can
          display the values of integers and floating point numbers,
          as well as information about the identity of object
          variables.  Variable probes do not display the contents of C
          arrays or structs.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2338}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{2339}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2340}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}\Node%
{\def\Element%
{2341}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MessageProbe\endSeq{}\endNode{}
            . \endSeq{}\endNode{}\Node%
{\def\Element%
{2342}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Probes a method. In the same window where
            the Variable Probe is shown, there may be "buttons" that
            have the names of methods on them.  These buttons will be
            executed when they are depressed.  If a method takes
            arguments, there will be spaces in which the user can
            enter them.  This can cause agents to change their course
            of action during a simulation run.
            \endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SIMPLEBUG-PROBES2}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Node%
{\def\Element%
{2344}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Figure 12-1. \endSeq{}Combining two \Node%
{\def\Element%
{2345}\def\ProcessingMode%
{formal-object-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}VarProbe\endSeq{}\endNode{} and one
      \Node%
{\def\Element%
{2346}\def\ProcessingMode%
{formal-object-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MessageProbe\endSeq{}\endNode{}s on a
        \Node%
{\def\Element%
{2347}\def\ProcessingMode%
{formal-object-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeDisplay\endSeq{}\endNode{}
      \endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{2344}}\endNode{}\Node%
{\def\Element%
{2348}}\Par%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertExternalGraphic%
{\def\DisplayAlignment%
{start}\def\IsDisplay%
{1}\def\ScaleType%
{false}\def\ScaleX%
{1}\def\ScaleY%
{1}\def\EntitySystemId%
{<OSFILE>/swarm/alex/src/Swarm/swarmguide/figs/simplebug-probes2.eps}\def\NotationSystemId%
{EPS}}\endPar{}\endNode{}\endPar{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2349}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}There are two main uses for probes: they can be fed into
      data-collection objects and serve as interfaces to the objects
      about which data is being collected (thus keeping the
      data-collection objects as general as possible) - the
      \Node%
{\def\Element%
{2350}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Averager\endSeq{}\endNode{} class, for example, directly
      subclasses \Node%
{\def\Element%
{2351}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MessageProbe\endSeq{}\endNode{}. Or, they can be
      used in order to generate a GUI to the individual objects in the
      simulation (the more common usage).
    \endPar{}\endNode{}\Node%
{\def\Element%
{2352}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}There is a middle-level object between the probe display
      that appears on the screen and the individual probes. It is the
      \Node%
{\def\Element%
{2353}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeMap\endSeq{}\endNode{}.  A probe map is a set that
      collects up all of the probes for a given object.  The probe
      display does not manage individual probes, but rather it manages
      probe maps.  As we shall see, then, most of the detail in
      tailoring probe displays ends up in steps that add or remove
      probes from the probe map.
     \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.07-PROBEDISPLAY.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}12.2. \Node%
{\def\Element%
{2355}\def\ProcessingMode%
{xref-title-mode}}Managing Probe Displays\endNode{}\def\HeadingText{%
12.2. Managing Probe Displays}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{2355}}\endNode{}\Node%
{\def\Element%
{2356}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} The appearance of the probe display can be custom-tailored
      by the programmer.  In order to understand the effect of
      customization, it is probably best to begin with an
      understanding of the "default" appearance.\endPar{}\endNode{}\Node%
{\def\Element%
{2357}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} The default probe displays for a simulation can be created
      quite easily.  In the
      \Node%
{\def\Element%
{2358}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugObserverSwarm.m\endSeq{}\endNode{} file, for example,
      one finds these lines:\endPar{}\endNode{}\Node%
{\def\Element%
{2359}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}CREATE\char95{}ARCHIVED\char95{}PROBE\char95{}DISPLAY (heatbugModelSwarm);
CREATE\char95{}ARCHIVED\char95{}PROBE\char95{}DISPLAY (self);\endPar{}\endNode{}\Node%
{\def\Element%
{2360}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} These are macro commands that cause actions inside the
      Swarm kernel to create the default probe displays for the model
      swarm and observer swarm, respectively.  That is all that is
      required to create the default probe displays.  \endPar{}\endNode{}\Node%
{\def\Element%
{2361}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} It might be a good exercise for the user to check this for
      herself. Leave those macro lines in
      \Node%
{\def\Element%
{2362}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugObserverSwarm.m\endSeq{}\endNode{}, and comment out
      everything else to do with probes in that file and also in
      \Node%
{\def\Element%
{2363}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm.m\endSeq{}\endNode{}.  When heatbugs is
      executed, the user will see that the default probe display
      presents a list of the instance variables of the object and, if
      their values are set at start time, those values will be
      displayed as well. \Node%
{\def\Element%
{2364}}\endNode{}
     \endPar{}\endNode{}\Node%
{\def\Element%
{2365}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This bare-bones setup will not automatically update the
      display as the simulation proceeds.  It presents only a snapshot
      of the creation-time settings.  Many variables that have no
      value set before time 0 will show blanks or the word
      \Node%
{\def\Element%
{2366}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}nil\endSeq{}\endNode{} and that will never change.\endPar{}\endNode{}\Node%
{\def\Element%
{2367}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} If one wants the probe pisplay to be updated, then an
      update command has to be included in the schedule.  In the
      \Node%
{\def\Element%
{2368}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildActions\endSeq{}\endNode{} method of
      \Node%
{\def\Element%
{2369}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugObserverSwarm.m\endSeq{}\endNode{}, this is the command
      that will cause the updating to occur (presumably, it was
      commented out in the bare-bones test described above):\endPar{}\endNode{}\Node%
{\def\Element%
{2370}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[displayActions createActionTo: probeDisplayManager message:
M(update)];\endPar{}\endNode{}\Node%
{\def\Element%
{2371}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The \Node%
{\def\Element%
{2372}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeDisplayManager\endSeq{}\endNode{} is a global
      object and when it is told to update in the observer swarm's
      schedule, it will update the probes of objects in all other levels
      of the simulation.\endPar{}\endNode{}\Node%
{\def\Element%
{2373}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}All of this works because the Swarm kernel provides a great
      deal of functionality that the user may never need to inspect or
      worry about.  Most importantly, the object
      \Node%
{\def\Element%
{2374}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeDisplayManager\endSeq{}\endNode{} is not explicitly created
      by the user.  Rather, it appears automatically in any Swarm
      program that has the GUI mode turned on in its
      \Node%
{\def\Element%
{2375}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}main.m\endSeq{}\endNode{}. The
      \Node%
{\def\Element%
{2376}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeDisplayManger\endSeq{}\endNode{} is the object that
      receives messages to create displays for various objects, such
      as the macro statements above.\endPar{}\endNode{}\Node%
{\def\Element%
{2377}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The default probe display for an object includes only the
      probes for the instance variables of the object.  It has no
      buttons to click and execute methods inside the object (i.e., it
      has no message probes).  If one wants the message probes, there
      are two alternatives.  While the program is running, a right-click
      on the object's name button in the top-left part of the display
      will cause the message probes to be displayed.  A second
      alternative is to change the macro used to create the probe
      displays.  Use these macro commands instead:
    \endPar{}\endNode{}\Node%
{\def\Element%
{2378}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}CREATE\char95{}ARCHIVED\char95{}COMPLETE\char95{}PROBE\char95{}DISPLAY (heatbugModelSwarm);
CREATE\char95{}ARCHIVED\char95{}COMPLETE\char95{}PROBE\char95{}DISPLAY (self);\endPar{}\endNode{}\Node%
{\def\Element%
{2379}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This will cause the probe display to include all instance
      variables and methods.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.07-CUSTOMIZE.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}12.3. \Node%
{\def\Element%
{2381}\def\ProcessingMode%
{xref-title-mode}}How to Customize Probe Displays\endNode{}\def\HeadingText{%
12.3. How to Customize Probe Displays}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{2381}}\endNode{}\Node%
{\def\Element%
{2382}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Why might one want to customize the display?  Well, frankly,
      the default probe display may look ugly.  It may include lots of
      variables the user does not want to see. There are some instance
      variables, such as C arrays, that cannot be probed, and so their
      inclusion in a probe display is uninformative.  Swarm is
      designed to allow the user to pick and choose which variables
      ought to be included in the display.  There are a number of
      strategies for customizing, one of the standard strategiew uses
      an object called \Node%
{\def\Element%
{2383}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeLibrary\endSeq{}\endNode{}. \endPar{}\endNode{}\Node%
{\def\Element%
{2384}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} Like \Node%
{\def\Element%
{2385}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeDisplayManager\endSeq{}\endNode{}, the
      \Node%
{\def\Element%
{2386}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeLibrary\endSeq{}\endNode{} is a global object provided by the Swarm
      kernel. Customization is achieved by writing code that
      communicates back and forth from objects to the
      \Node%
{\def\Element%
{2387}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeLibrary\endSeq{}\endNode{}. In short,
      the programmer "checks out" a unique, shared copy of a
      \Node%
{\def\Element%
{2388}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Probe\endSeq{}\endNode{}/\Node%
{\def\Element%
{2389}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeMap\endSeq{}\endNode{}
      from the \Node%
{\def\Element%
{2390}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeLibrary\endSeq{}\endNode{} object (of
      class \Node%
{\def\Element%
{2391}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeLibrary\endSeq{}\endNode{}) provided by
      the kernel. By shared we mean that a similar request
      made at a different point in the code, will return a
      reference to the very same probe instance. \endPar{}\endNode{}\Node%
{\def\Element%
{2392}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} Here is a skeleton example of the commands that can create a
      customized probe display using this approach.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2393}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}\def\Orientation%
{horizontal}}\Seq%
{}\Node%
{\def\Element%
{2394}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Example 12-1. \endSeq{}Generating a \Node%
{\def\Element%
{2395}\def\ProcessingMode%
{formal-object-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeMap\endSeq{}\endNode{}\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{2394}}\endNode{}\Node%
{\def\Element%
{2396}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}To generate a \Node%
{\def\Element%
{2397}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeMap\endSeq{}\endNode{} for an instance of the
        class \Node%
{\def\Element%
{2398}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Agent\endSeq{}\endNode{} called \Node%
{\def\Element%
{2399}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}agent\endSeq{}\endNode{},
        which consists of two fields: one \Node%
{\def\Element%
{2400}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}VarProbe\endSeq{}\endNode{} for
        the instance variable \Node%
{\def\Element%
{2401}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}someIVar\endSeq{}\endNode{} and one
        \Node%
{\def\Element%
{2402}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MessageProbe\endSeq{}\endNode{} for the message
        \Node%
{\def\Element%
{2403}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}someMessage\endSeq{}\endNode{}, use the following: \endPar{}\endNode{}\Node%
{\def\Element%
{2404}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}probeMap = [EmptyProbeMap createBegin: self];
[probeMap setProbedClass: [self class]];
probeMap = [probeMap createEnd];

[probeMap addProbe: [probeLibrary getProbeForVariable: "someIVar"
inClass: [agent class]]];
[probeMap addProbe: [probeLibrary getProbeForMessage: "someMessage" 
inClass: [agent class] setHideResult: 1]];

[probeLibrary setProbeMap: probeMap For: [agent class]];\endPar{}\endNode{}\Node%
{\def\Element%
{2405}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Don't forget to execute the
      \Node%
{\def\Element%
{2406}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}CREATE\char95{}PROBE\char95{}DISPLAY\endSeq{}\endNode{} for this object in the
      observer swarm. \endPar{}\endNode{}\endPar{}\endSeq{}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\KeepWithPrevious%
{1}\def\Orientation%
{horizontal}}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2407}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In the file \Node%
{\def\Element%
{2408}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm.m\endSeq{}\endNode{}, one
      can find a fully fleshed out example of these steps.\endPar{}\endNode{}\Node%
{\def\Element%
{2409}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}probeMap = [EmptyProbeMap createBegin: aZone];
[probeMap setProbedClass: [self class]];
probeMap = [probeMap createEnd];

[probeMap addProbe: [probeLibrary getProbeForVariable: "numBugs"
      			    inClass: [self class]]];
[probeMap addProbe: [probeLibrary getProbeForVariable: "diffuseConstant"
      			    inClass: [self class]]];
[probeMap addProbe: [probeLibrary getProbeForVariable: "worldXSize"
      			    inClass: [self class]]];
[probeMap addProbe: [probeLibrary getProbeForVariable: "worldYSize"
      			    inClass: [self class]]];
[probeMap addProbe: [probeLibrary getProbeForVariable: "minIdealTemp"
      			    inClass: [self class]]];
[probeMap addProbe: [probeLibrary getProbeForVariable: "maxIdealTemp"
      			    inClass: [self class]]];
[probeMap addProbe: [probeLibrary getProbeForVariable: "minOutputHeat"
      			    inClass: [self class]]];
[probeMap addProbe: [probeLibrary getProbeForVariable: "maxOutputHeat"
      			    inClass: [self class]]]; 
[probeMap addProbe: [probeLibrary getProbeForVariable: "evaporationRate"
      			    inClass: [self class]]];
[probeMap addProbe: [probeLibrary getProbeForMessage: 
                                    "toggleRandomizedOrder" 
                                  inClass: [self class]]];
[probeMap addProbe: [probeLibrary getProbeForVariable: "randomMoveProbability"
      			    inClass: [self class]]];
[probeMap addProbe: [[probeLibrary getProbeForMessage: "addHeatbug:"
      		     inClass: [self class]]
      		setHideResult: 1]];

[probeLibrary setProbeMap: probeMap For: [self class]];\endPar{}\endNode{}\Node%
{\def\Element%
{2410}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} As in the generic example, in the
      \Node%
{\def\Element%
{2411}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}heatbugs\endSeq{}\endNode{} case the user follows a three
      step procedure that puts a customized probe map in place of the
      standard "variable probes only" default.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2412}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{2413}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}1. \endLineField{}\endSeq{}\Node%
{\def\Element%
{2414}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}A new object called
          \Node%
{\def\Element%
{2415}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeMap\endSeq{}\endNode{} is created.  The
          \Node%
{\def\Element%
{2416}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeMap\endSeq{}\endNode{} is an instance of the the Swarm class
          \Node%
{\def\Element%
{2417}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}EmptyProbeMap\endSeq{}\endNode{}. Next we customize the probe
          map and pass it to the display mechanism.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2418}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}2. \endLineField{}\endSeq{}\Node%
{\def\Element%
{2419}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}One-by-one, tell \Node%
{\def\Element%
{2420}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeMap\endSeq{}\endNode{} to
          add probes for individual variables and messages, and those probes
          are retrieved from the
          \Node%
{\def\Element%
{2421}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeLibrary\endSeq{}\endNode{}.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2422}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}3. \endLineField{}\endSeq{}\Node%
{\def\Element%
{2423}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Tell the \Node%
{\def\Element%
{2424}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeLibrary\endSeq{}\endNode{} that,
          when it creates a probe display for this object, to use this special
          object\Node%
{\def\Element%
{2425}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeMap\endSeq{}\endNode{} rather than the
          default.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2426}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}It is important to understand how this customization fits in
      with the default probe map.  The \Node%
{\def\Element%
{2427}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}      probeDisplayManager\endSeq{}\endNode{} creates a widget for every object
      that you tell it to.  Unless you tell it otherwise, it assumes
      that the widget for every object is be based on the "default
      probemap" which includes probes for all instance variables, no
      message probes.  If you alter the probeMap by the methods we
      have been discussing, you are replacing the generic "has it all"
      probeMap with a customized probeMap.  If you right-click on the
      object name button in a customized probeMap, what pops up is a
      probe display based on the complete probeMap specification, a
      map in which all variables and methods are listed.\endPar{}\endNode{}\Node%
{\def\Element%
{2428}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The procedure outlined above is clear and methodical. It is
      also open to different kinds of customization.  If there is no
      need for customization of individual probes, there is a "shortcut"
      that can be used to get most of this work done. Swarm has a class
      called \Node%
{\def\Element%
{2429}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}CustomProbeMap\endSeq{}\endNode{}.  The
      \Node%
{\def\Element%
{2430}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}CustomProbeMap\endSeq{}\endNode{} can create the probeMap and
      fill it with the desired probes.  Here is an example as it would
      appear in the \Node%
{\def\Element%
{2431}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}heatbugs\endSeq{}\endNode{} model.\endPar{}\endNode{}\Node%
{\def\Element%
{2432}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}\def\Orientation%
{horizontal}}\Seq%
{}\Node%
{\def\Element%
{2433}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Example 12-2. \endSeq{}Non-verbose \Node%
{\def\Element%
{2434}\def\ProcessingMode%
{formal-object-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeMap\endSeq{}\endNode{} creation\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{2433}}\endNode{}\Node%
{\def\Element%
{2435}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}probeMap = [CustomProbeMap create: aZone forClass: [self class]
                              withIdentifiers: "numbugs",
                              "diffuseConstant", "worldXSize",
                              "worldYSize","minIdealTemp",
                              "maxIdealTemp","minOutputHeat",
                              "maxOutputHeat", "evaporationRate",
                              "toggleRandomizedOrder" 
                              "randomMoveProbability",":",
                              "addHeatbug:", NULL];

  [probeLibrary setProbeMap: probeMap For: [self class]];

   \endPar{}\endNode{}\Node%
{\def\Element%
{2436}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The last argument to the method
      \Node%
{\def\Element%
{2437}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}create:forClass:withIdentifiers:\endSeq{}\endNode{} is
      basically a set of character strings that are strung together
      and used inside the Swarm library to do the work of creating the
      individual probes. The colon separates the variable probes from
      the message probes.  Notice the inclusion of
      \Node%
{\def\Element%
{2438}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}NULL\endSeq{}\endNode{} at the end of the input, which signals
      the end of the input to the
      \Node%
{\def\Element%
{2439}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}CustomProbeMap\endSeq{}\endNode{}. \endPar{}\endNode{}\Node%
{\def\Element%
{2440}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This method will not allow customization of individual
      probes, so the \Node%
{\def\Element%
{2441}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}setHideResult:1\endSeq{}\endNode{} command that
      appears in the \Node%
{\def\Element%
{2442}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}heatbugs\endSeq{}\endNode{} example
      cannot be included.  In order to get specialized probes of that
      sort, we could break this into two steps, one that creates the
      \Node%
{\def\Element%
{2443}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeMap\endSeq{}\endNode{} with the default probes and then
      another which adds the special probes.  Consider this:
    \endPar{}\endNode{}\Node%
{\def\Element%
{2444}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}probeMap = [CustomProbeMap create: aZone forClass: [self class]
                              withIdentifiers: "numbugs",
                              "diffuseConstant", "worldXSize",
                              "worldYSize","minIdealTemp",
                              "maxIdealTemp","minOutputHeat",
                              "maxOutputHeat", "evaporationRate",
                              "toggleRandomizedOrder" 
                              "randomMoveProbability",
                               NULL];
   [probeMap addProbe: [[probeLibrary getProbeForMessage: "addHeatbug:"
			     inClass: [self class]]
		        	setHideResult: 1]];

   [probeLibrary setProbeMap: probeMap For: [self class]]; \endPar{}\endNode{}\endPar{}\endSeq{}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\KeepWithPrevious%
{1}\def\Orientation%
{horizontal}}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.07-PRECISION.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}12.4. \Node%
{\def\Element%
{2446}\def\ProcessingMode%
{xref-title-mode}}Controlling Precision of Display\endNode{}\def\HeadingText{%
12.4. Controlling Precision of Display}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{2446}}\endNode{}\Node%
{\def\Element%
{2447}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This section deals with the control of the precision of
      display of floating point number on
    \Node%
{\def\Element%
{2448}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ProbeDisplay\endSeq{}\endNode{}s.\endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.07-PRECISION-GLOBAL.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}12.4.1. \Node%
{\def\Element%
{2450}\def\ProcessingMode%
{xref-title-mode}}Global setting of precision\endNode{}\def\HeadingText{%
12.4.1. Global setting of precision}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{2450}}\endNode{}\Node%
{\def\Element%
{2451}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}There are two types of  global precision setting via
        :
      \endPar{}\endNode{}\Node%
{\def\Element%
{2452}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{2453}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{2454}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2455}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}-setDisplayPrecision:\endSeq{}\endNode{}
            \Node%
{\def\Element%
{2456}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}(int)\endSeq{}\endNode{} \Node%
{\def\Element%
{2457}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}nSigFigsSaved\endSeq{}\endNode{}

            Sets the number of significant figures for floating
            point (and double-floating) numbers diplayed on a GUI
            widget. Currently this is only implemented for
            VarProbes. The display uses the \%*g sprintf-style
            formatting, which can vary slightly from
            implementation to implementation. If you set the
            number of significant figures to 3, then a float of
            value of 0.6344346 is displayed as 0.634 on the GUI
            widget.Note that this in no way affects the underlying
            stored value of the floating point number.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2458}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{2459}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{} \Node%
{\def\Element%
{2460}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}-setSavedPrecision:\endSeq{}\endNode{}
            \Node%
{\def\Element%
{2461}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}(int)\endSeq{}\endNode{} \Node%
{\def\Element%
{2462}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}nSigFigsSaved\endSeq{}\endNode{}

            Sets the global default for the saving of floats through
            \Node%
{\def\Element%
{2463}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}ObjectSaver\endSeq{}\endNode{}. All objects with
            floats and doubles as instance variables are saved
            with the precision specified by this method. This is
            \Node%
{\def\Element%
{2464}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fPosture%
{italic}}independent\endSeq{}\endNode{} of the displayed
            precision of the same instance variable on a GUI
            widget.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2465}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}To actually initialise these defaults: in the top level
        swarm, you should add the calls to the global
        \Node%
{\def\Element%
{2466}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probelibrary\endSeq{}\endNode{} instance (which is actually
        created by the \Node%
{\def\Element%
{2467}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}initSwarm\endSeq{}\endNode{} call in main)
        during the - createBegin method (this sets the precision in
        the global instance, \Node%
{\def\Element%
{2468}}\Seq%
{\def\fPosture%
{italic}}before\endSeq{}\endNode{} any probes
        are checked out of the instance. If neither method is called
        on \Node%
{\def\Element%
{2469}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeLibrary\endSeq{}\endNode{}, then the precision
        defaults to six significant figures in both cases.
      \endPar{}\endNode{}\Node%
{\def\Element%
{2470}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}\def\Orientation%
{horizontal}}\Seq%
{}\Node%
{\def\Element%
{2471}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Example 12-3. \endSeq{}Global setting precision in
          \Node%
{\def\Element%
{2472}\def\ProcessingMode%
{formal-object-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugObserverSwarm.m\endSeq{}\endNode{}\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{2471}}\endNode{}\Node%
{\def\Element%
{2473}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}+ createBegin: aZone
\{
   HeatbugObserverSwarm * obj;
   id \Entity{lt}ProbeMap\Entity{gt} probeMap;

   [...]
   
   probeMap = [EmptyProbeMap createBegin: aZone];
   [probeMap setProbedClass: [self class]];
   probeMap = [probeMap createEnd];
   \Node%
{\def\Element%
{2474}}\Seq%
{\def\fPosture%
{italic}}     // set the display defaults\endSeq{}\endNode{}
   [probeLibrary setDisplayPrecision: 3];
   \Node%
{\def\Element%
{2475}}\Seq%
{\def\fPosture%
{italic}}     // typically saved precision would be higher than displayed precision
     // for statistical and data analysis purposes\endSeq{}\endNode{}
   [probeLibrary setSavedPrecision: 10]; 

   // Add in a bunch of variables, one per simulation parameters
   [probeMap addProbe: [probeLibrary getProbeForVariable: "displayFrequency"
   inClass: [self class]]];
   [...]

   // Now install our custom probeMap into the probeLibrary.
   [probeLibrary setProbeMap: probeMap For: [self class]];
   return obj;
\}\endPar{}\endNode{}\endPar{}\endSeq{}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\KeepWithPrevious%
{1}\def\Orientation%
{horizontal}}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER2.07-PRECISION-INDIV.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}12.4.2. \Node%
{\def\Element%
{2477}\def\ProcessingMode%
{xref-title-mode}}Setting Precision for Individual Probes\endNode{}\def\HeadingText{%
12.4.2. Setting Precision for Individual Probes}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{2477}}\endNode{}\Node%
{\def\Element%
{2478}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} The formatting for an individual probe can be set
        directly, using a sprintf-style formatting
        string. Typically, \Node%
{\def\Element%
{2479}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}customProbeMaps\endSeq{}\endNode{}
        are created in the \Node%
{\def\Element%
{2480}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}+createBegin\endSeq{}\endNode{} factory
        method for a \Node%
{\def\Element%
{2481}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Swarm\endSeq{}\endNode{} or a
        \Node%
{\def\Element%
{2482}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}SwarmObject\endSeq{}\endNode{}. To set the formatting
        for a floating point probe, the method from
        \Node%
{\def\Element%
{2483}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}VarProbe\endSeq{}\endNode{} is used:
      \endPar{}\endNode{}\Node%
{\def\Element%
{2484}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{2485}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{2486}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}            \Node%
{\def\Element%
{2487}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}-setFormatFloat:\endSeq{}\endNode{} \Node%
{\def\Element%
{2488}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}(const char
              *)\endSeq{}\endNode{}\Node%
{\def\Element%
{2489}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}floatFormat\endSeq{}\endNode{}
            
            is applied to the instance of the
            \Node%
{\def\Element%
{2490}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}VarProbe\endSeq{}\endNode{} "checked-out" of the
            global \Node%
{\def\Element%
{2491}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeLibrary\endSeq{}\endNode{} instance. The
            sprintf-formatting string can "over-ride" the "\%g"
            format set by the global precision (as above) (Typically
            "\%g" chooses between the "\%f" and "\%e", depending on the
            size of the exponent - which is implementation-dependent
            - this method allows you to explicitly set the type of
            display).\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2492}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In the following example, it is desired that the number
        of significant figures for the floating point variable
        \Node%
{\def\Element%
{2493}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}randomMoveProbability\endSeq{}\endNode{} is three (3).
        Currently (Swarm 2.0.1) this is only works for
        \Node%
{\def\Element%
{2494}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}VarProbes\endSeq{}\endNode{} and not
        \Node%
{\def\Element%
{2495}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MessageProbes\endSeq{}\endNode{}, as yet.
      \endPar{}\endNode{}\Node%
{\def\Element%
{2496}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}\def\Orientation%
{horizontal}}\Seq%
{}\Node%
{\def\Element%
{2497}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Example 12-4. \endSeq{}Setting precision for individual probes in
          \Node%
{\def\Element%
{2498}\def\ProcessingMode%
{formal-object-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm.m\endSeq{}\endNode{}:\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{2497}}\endNode{}\Node%
{\def\Element%
{2499}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}+ createBegin: aZone
\{
   HeatbugModelSwarm * obj;
   id \Entity{lt}ProbeMap\Entity{gt} probeMap;
   id floatProbe;

   [...]
   \Node%
{\def\Element%
{2500}}\Seq%
{\def\fPosture%
{italic}}     // the -setFloatFormat is applied to the probe which is 
     // "returned" from the call to probeLibrary\endSeq{}\endNode{}
   floatProbe = [[probeLibrary getProbeForVariable: "randomMoveProbability"
   inClass: [self class]]
   setFloatFormat: ".3f"];
   
   // now we have the probe - put it back into the customMap
   [probeMap addProbe: floatProbe];

   [...]
   return obj;
\}\endPar{}\endNode{}\Node%
{\def\Element%
{2501}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Or, more compactly:\endPar{}\endNode{}\Node%
{\def\Element%
{2502}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}+ createBegin: aZone
\{
  HeatbugModelSwarm *obj;
  id \Entity{lt}ProbeMap\Entity{gt} probeMap;

  [...]
  
  [probeMap addProbe: [[probeLibrary getProbeForVariable: "randomMoveProbability"
  inClass: [self class]]
  setFloatFormat: "\%.3f"]];
  [...]
  return obj;
\}\endPar{}\endNode{}\endPar{}\endSeq{}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\KeepWithPrevious%
{1}\def\Orientation%
{horizontal}}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\endSeq{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.PART}}\Seq%
{}\Seq%
{}\SpS%
{\def\PageNColumns%
{1}\def\InputWhitespaceTreatment%
{collapse}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{}
\SpSOtherBackRightHeader%
{}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{}
\SpSOtherFrontRightHeader%
{}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{}
\SpSFirstFrontRightHeader%
{}\Par%
{\def\LineSpacing%
{1\p@}\def\LineSpacingFactor%
{0}}\endPar{}\Seq%
{}\Node%
{\def\Element%
{2504}\def\ProcessingMode%
{part-titlepage-recto-mode}}\Par%
{\def\fSize%
{24.883\p@}\def\LineSpacing%
{32.348\p@}\def\LineSpacingFactor%
{0}\def\Quadding%
{center}\def\fFamName{Arial}\def\fWeight%
{bold}\def\sbNom%
{18.662\p@}\def\sbMin%
{18.662\p@}\def\sbMax%
{18.662\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Part III. Advanced Topics\endPar{}\endNode{}\endSeq{}\endSpS{}\endSeq{}\Node%
{\def\Element%
{2504}}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.01.CHAPTER}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{2506}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 13. Anything C can do, Swarm Can Do Better\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{2506}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 13. Anything C can do, Swarm Can Do Better\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Chapter 13. \Seq%
{}\Node%
{\def\Element%
{2506}\def\ProcessingMode%
{component-title-mode}}Anything C can do, Swarm Can Do Better\endNode{}\endSeq{}\def\HeadingText{%
Chapter 13. Anything C can do, Swarm Can Do Better}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{2506}}\endNode{}\Node%
{\def\Element%
{2507}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}    Any programming statements that will work in C can also be used in
    a Swarm program.  Hence, if one needs access to a programming
    library that can be used in C, one can also access that library in
    Swarm.  Furthermore, functions written for C programs can be
    integrated into Swarm code.
  \endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.01-CMDLINE.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}13.1. \Node%
{\def\Element%
{2512}\def\ProcessingMode%
{xref-title-mode}}Managing command line parameters\endNode{}\def\HeadingText{%
13.1. Managing command line parameters}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{2509}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2512}}\endNode{}\Node%
{\def\Element%
{2513}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      One of the obscure and difficult parts of C programming is
      designing a program to handle command line arguments.  The
      \Node%
{\def\Element%
{2514}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}argc\endSeq{}\endNode{} and \Node%
{\def\Element%
{2515}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}argv[]\endSeq{}\endNode{} approach
      is difficult to manage.  Swarm has built-in tools to handle this
      problem.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2516}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      \Node%
{\def\Element%
{2517}}\Seq%
{}\endSeq{}\endNode{}
      If you compile a Swarm program, you "automatically" get some
      built-in command line parameters.  You can see what they are
      when you type the program's name, followed by
      \Node%
{\def\Element%
{2521}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}--help\endSeq{}\endNode{}.  Here is some output from the heatbugs
      program:
    \endPar{}\endNode{}\Node%
{\def\Element%
{2522}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{2523}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{5.625\p@}}\$\endSeq{}\endNode{} \Node%
{\def\Element%
{2524}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}./heatbugs --help\endSeq{}\endNode{}
Usage: lt-heatbugs [OPTION...]

-s, --varyseed             Run with a random seed
-b, --batch                Run in batch mode
-m, --mode=MODE            Specify mode of use (for archiving)
-t, --show-current-time    Show current time in control panel
--no-init-file         Inhibit loading of \char126{}/.swarmArchiver
-?, --help                 Give this help list
--usage                Give a short usage message
-V, --version              Print program version

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.\endPar{}\endNode{}\Node%
{\def\Element%
{2525}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      If you type a command line like

\Node%
{\def\Element%
{2526}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{2527}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{5.625\p@}}\$\endSeq{}\endNode{} \Node%
{\def\Element%
{2528}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}./heatbugs -s -t\endSeq{}\endNode{}\endPar{}\endNode{}

      then Swarm will use a random number seed that is based on the
      system's clock and the display of the control panel will show
      the time. As a result, the random number stream used in the
      program will be different each time you run the program.

    \endPar{}\endNode{}\Node%
{\def\Element%
{2529}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}A person might want to add command line parameters to their
      Swarm code if they want to automate the processing of many
      simulation runs.  For example, if one wanted to make a
      simulation run 50 times for each setting of a particular
      parameter value, then one would need to design a way to pass
      that particular parameter value from the command line.  The
      repetition of the program can be managed by a user-created
      script (written in some language like Perl, for example), or
      with a simulation tool like \Node%
{\def\Element%
{2530}}\Seq%
{}\Seq%
{}Drone\endSeq{}\Seq%
{} (http://drone.sourceforge.net)\endSeq{}\endSeq{}\endNode{}, developed by
      Ted Belding of the Center for the Study of Complex Systems at
      the University of Michigan.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2531}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2533}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2535}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If the user wants to pass additional parameters in the
      command line, Swarm has built in procedures that make argument
      processing a bit easier than using the command line processing
      available in C.  This functionality is found in Swarm's
      \Node%
{\def\Element%
{2536}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Arguments\endSeq{}\endNode{} protocol.  The details of the
      usage of \Node%
{\def\Element%
{2537}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Arguments\endSeq{}\endNode{} are explained quite
      well in the \Node%
{\def\Element%
{2538}}\Seq%
{\def\fPosture%
{italic}}Reference Guide to Swarm\endSeq{}\endNode{}.
      Rather than explain every detail, we choose here to explain one
      worked example\Node%
{\def\Element%
{2539}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}1\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{2540}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}1. \endLineField{}This example is available in full
      in the package \Node%
{\def\Element%
{2541}}\Seq%
{}\Seq%
{}ParameterHeatbugs.tar.gz\endSeq{}\Seq%
{} (http://lark.cc.ukans.edu/\char126{}pauljohn/Swarm/MySwarmCode/ParameterHeatbugs.tar.gz)\endSeq{}\endSeq{}\endNode{}. All
      of the changes described here begin with the
      \Node%
{\def\Element%
{2542}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Heatbugs\endSeq{}\endNode{} application distributed in
      the package \Node%
{\def\Element%
{2543}}\Seq%
{}\Seq%
{}swarmapps-2.1.tar.gz\endSeq{}\Seq%
{} (ftp://ftp.swarm.org/pub/swarm/swarmapps-2.1.tar.gz)\endSeq{}\endSeq{}\endNode{}.\endPar{}\endNode{}}\endSeq{}\endNode{}.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2544}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      The first step is to edit the \Node%
{\def\Element%
{2545}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}main.m\endSeq{}\endNode{}.  Add
      an import command for our object that will manage the
      parameters:\endPar{}\endNode{}\Node%
{\def\Element%
{2546}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\#import "MyParameters.h"\endPar{}\endNode{}\Node%
{\def\Element%
{2547}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}and then change the \Node%
{\def\Element%
{2548}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}initSwarm\endSeq{}\endNode{} command
      to this:\endPar{}\endNode{}\Node%
{\def\Element%
{2549}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}} 
initSwarmArguments (argc, argv, [MyParameters class]);\endPar{}\endNode{}\Node%
{\def\Element%
{2550}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This change tells the swarm kernel to look in your class
      called \Node%
{\def\Element%
{2551}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MyParameters\endSeq{}\endNode{} for information about
      how to process the command line arguments.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2552}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      Next, write the files \Node%
{\def\Element%
{2553}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MyParameters.h\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{2554}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MyParameters.m\endSeq{}\endNode{}.  Here they are:
    \endPar{}\endNode{}\Node%
{\def\Element%
{2555}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}//Parameters.h
\#import \Entity{lt}defobj/Arguments.h\Entity{gt}

@interface MyParameters: Arguments\char95{}c
\{
  int numBugs;
\}

- (int)getBugArg;
@end

//Parameters.m

\#import "MyParameters.h"
\#import \Entity{lt}stdlib.h\Entity{gt}

@implementation MyParameters

+ createBegin: aZone
\{
 static struct argp\char95{}option options[] = \{
     \{"numBugs",'n',"N", 0, "Set numBugs", 5\},
     \{ 0 \}
 \};

 MyParameters *obj = [super createBegin: aZone];

 [obj addOptions: options];

 return obj;
\}


- (int)parseKey: (int)key arg: (const char*)arg
\{
  if (key == 'n')
  \{
    numBugs = atoi(arg);
    return 0;
  \}
  else
  return [super parseKey: key arg: arg];
\}

- (int) getBugArg
\{
 if (numBugs)
  return numBugs;
 else 
  return -1;
\}

@end\endPar{}\endNode{}\Node%
{\def\Element%
{2556}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The \Node%
{\def\Element%
{2557}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}parseKey:arg:\endSeq{}\endNode{} method indicates that
      when the key is \Node%
{\def\Element%
{2558}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}n\endSeq{}\endNode{}, meaning the command line
      passed \Node%
{\def\Element%
{2559}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}-n\endSeq{}\endNode{} after the program name, then it the
      corresponding argument is taken and converted to an integer (by
      the \Node%
{\def\Element%
{2560}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}atoi\endSeq{}\endNode{} function, the reason for which the
      include of \Node%
{\def\Element%
{2561}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}stdlib.h\endSeq{}\endNode{} is needed).  When
      another class tells our parameter manager class to
      \Node%
{\def\Element%
{2562}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getBugArg\endSeq{}\endNode{}, then the command line argument
      will be returned if there was one, otherwise it will return -1.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2563}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The only interesting wrinkle arises when it is necessary to
      retrieve the value of \Node%
{\def\Element%
{2564}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}numBugs\endSeq{}\endNode{} from the
      parameter class.  When the Swarm kernel is initialized, it
      creates an object called \Node%
{\def\Element%
{2565}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}arguments\endSeq{}\endNode{}.  Any
      commands that one wants to address to the
      \Node%
{\def\Element%
{2566}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MyParameters\endSeq{}\endNode{} class are instead addressed
      to \Node%
{\def\Element%
{2567}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}arguments\endSeq{}\endNode{}.  For example, when we want the
      \Node%
{\def\Element%
{2568}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm.m\endSeq{}\endNode{} class to set the
      initial values, we add an import statement for
      \Node%
{\def\Element%
{2569}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MyParameters.h\endSeq{}\endNode{} and then we make calls
      against the arguments class.  The syntax is like this:
    \endPar{}\endNode{}\Node%
{\def\Element%
{2570}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}+ createBegin: aZone 
\{ 
  HeatbugModelSwarm *obj; id
  \Entity{lt}CustomProbeMap\Entity{gt} probeMap; obj = [super createBegin: aZone];

  // Now fill in various simulation parameters with default values or
  // grab values from MyParameters.

  obj->numBugs = 10;
  if (([arguments getBugArg] != -1))obj->numBugs=[arguments getBugArg];
     [and so forth]\endPar{}\endNode{}\Node%
{\def\Element%
{2571}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This example sets the number of bugs equal to 10, but if the
      value is included in a command line option, then that value is
      incorporated.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2572}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Once the \Node%
{\def\Element%
{2573}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Makefile\endSeq{}\endNode{} is touched up to
      include references to \Node%
{\def\Element%
{2574}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MyParameters\endSeq{}\endNode{}, then
      the program compiles and hthe output from the help command
      indicates the new parameter is recognized:
    \endPar{}\endNode{}\Node%
{\def\Element%
{2575}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{2576}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{5.625\p@}}\$\endSeq{}\endNode{} \Node%
{\def\Element%
{2577}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}./heatbugs --help\endSeq{}\endNode{}
Usage: lt-heatbugs [OPTION...]

-s, --varyseed             Run with a random seed
-b, --batch                Run in batch mode
-m, --mode=MODE            Specify mode of use (for archiving)
-t, --show-current-time    Show current time in control panel
--no-init-file             Inhibit loading of \char126{}/.swarmArchiver
-n, --numBugs=N            Set numBugs
-?, --help                 Give this help list
--usage                    Give a short usage message
-V, --version              Print program version

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

Report bugs to bug-swarm@swarm.org.\endPar{}\endNode{}\Node%
{\def\Element%
{2578}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      It does not make any difference whether the user starts the
      program with the command:
    \endPar{}\endNode{}\Node%
{\def\Element%
{2579}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{2580}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{5.625\p@}}\$\endSeq{}\endNode{} \Node%
{\def\Element%
{2581}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}./heatbugs -n 444\endSeq{}\endNode{}
or
\Node%
{\def\Element%
{2582}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{5.625\p@}}\$\endSeq{}\endNode{} \Node%
{\def\Element%
{2583}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}./heatbugs --numBugs=444.\endSeq{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{2584}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      In either case, the probe map will indicate the initial number
      of bugs is 444.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.01-CFUNCS.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}13.2. \Node%
{\def\Element%
{2589}\def\ProcessingMode%
{xref-title-mode}}Using C Functions in Swarm\endNode{}\def\HeadingText{%
13.2. Using C Functions in Swarm}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{2586}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2589}}\endNode{}\Node%
{\def\Element%
{2590}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      The fundamental rules of C programming apply in Swarm. Perhaps
      most importantly:

      \Node%
{\def\Element%
{2591}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{2592}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{2593}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2594}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Use prototypes for functions used in many
          files. \endSeq{}\endNode{}\Node%
{\def\Element%
{2595}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}              If a function is defined in one file, and it is to be used in
              another, then there must be a prototype in the header file and
              that header must be included in each file that makes calls on
              the function.
            \endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2596}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{2597}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2598}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Type functions as "static" if they are
              used only in one file. \endSeq{}\endNode{}\Node%
{\def\Element%
{2599}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}When a function's
              use is confined to the file in which it is called, use
              static to type it in order to reduce the danger of
              confusion that might result if other files use functions
              of the same name.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}
    \endPar{}\endNode{}\Node%
{\def\Element%
{2600}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      If a function is defined at the top of a source code file--after the
      includes and imports but before the implemenation line, then that
      function can be called anywhere in that file. If the function is not
      used in any other files, then there is no need to put a prototype for
      it in the header file and the declaration of the function should start
      with "static".
    \endPar{}\endNode{}\Node%
{\def\Element%
{2601}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}A function can also be defined \Node%
{\def\Element%
{2602}}\Seq%
{\def\fPosture%
{italic}}inside a
        method!\endSeq{}\endNode{}.  It looks a bit peculiar when functions
        crop up inside Objective C methods, but there is nothing wrong
        with doing so.  Of course, when a function is defined inside a
        method, then its scope is sharply restricted. That function
        can be called only inside that method.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2603}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}There are some occasions in which is is extremely handy to
      define functions inside methods.  Two particulary useful aspects
      of this practice are as follows. First, Objective C calls to
      \Node%
{\def\Element%
{2604}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}self\endSeq{}\endNode{} can be made in such functions. If a
      function needs some value, and it intends to get it by calling a
      get method such as \Node%
{\def\Element%
{2605}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}[self getThatNumber]\endSeq{}\endNode{} it
      will work as long as the function is defined inside a legitimate
      Objective C method.  If the function is located at the top of
      the file, before the implementation statement, then the term
      \Node%
{\def\Element%
{2606}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}self\endSeq{}\endNode{} will have no meaning and the program
      will not compile.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2607}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The second useful aspect is of this practice is that one can
      have several different functions with the same name if those
      functions are set inside Objective C methods. It may seem hard
      to imagine situations in which this would be useful, but they do
      arise.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2608}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      Suppose inside a class there are two methods and each makes use
      of a function from the standard C libraries.  If the function
      expects to have some other user-defined function available when
      it is run, then the user can customize that user-defined
      function inside each method.  To be a bit more concrete,
      consider the GNU C library's binary search tree defined in the
      header file \Node%
{\def\Element%
{2609}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}search.h\endSeq{}\endNode{}. The function
      \Node%
{\def\Element%
{2610}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}tsearch\endSeq{}\endNode{} (version 2.1) has this
      prototype:\endPar{}\endNode{}\Node%
{\def\Element%
{2611}}\Par%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{2612}}\Seq%
{}\Par%
{\def\fFamName{Courier-New}}\Node%
{\def\Element%
{2613}}void * \Node%
{\def\Element%
{2614}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}tsearch\endSeq{}\endNode{}\endNode{}\Node%
{\def\Element%
{2615}}\Seq%
{}(const void *\Node%
{\def\Element%
{2616}}\Seq%
{}\Seq%
{\def\fPosture%
{italic}}key\endSeq{}\endSeq{}\endNode{}, \endSeq{}\endNode{}\Node%
{\def\Element%
{2617}}\Seq%
{}void ** \Node%
{\def\Element%
{2618}}\Seq%
{}\Seq%
{\def\fPosture%
{italic}}rootp\endSeq{}\endSeq{}\endNode{}, \endSeq{}\endNode{}\Node%
{\def\Element%
{2619}}\Seq%
{}int
          \Node%
{\def\Element%
{2620}}\Seq%
{}\Seq%
{\def\fPosture%
{italic}}(*compar)\endSeq{}\endSeq{}\endNode{}
          \Node%
{\def\Element%
{2621}}\Seq%
{}(const void *, const void *)\endSeq{}\endNode{}
        );\endSeq{}\endNode{}\endPar{}\endSeq{}\endNode{}\endDisplayGroup{}\endPar{}\endNode{}\Node%
{\def\Element%
{2622}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The \Node%
{\def\Element%
{2623}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}tsearch\endSeq{}\endNode{} function checks to see if a
      node already exists by using a comparison function. If an equal
      node exists, then tsearch returns that node. If no such node
      exists, \Node%
{\def\Element%
{2624}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}tsearch\endSeq{}\endNode{} adds the node to the
      tree. Note that the comparision function used in the tsearch
      must be included as the last argument.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2625}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      The problem may arise that one wants to use different comparison
      functions when working with a single tree. Once a tree is
      created with a comparison function called
      \Node%
{\def\Element%
{2626}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}compare\char95{}node\endSeq{}\endNode{}, then all calls on the tree
      must use a comparison function with the same name.  Perhaps
      there is some slight wrinkle to be introduced when deciding
      whether one node is equal to another when they are being
      inserted and when they are being printed out or removed.  By
      defining several compare functions, one inside each method that
      makes use of the tree, one can acheive the desired level of
      specialization.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.01-EXAMPLES.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}13.3. \Node%
{\def\Element%
{2628}\def\ProcessingMode%
{xref-title-mode}}Examples of Useful Functions: \Node%
{\def\Element%
{2629}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getInt\endSeq{}\endNode{}
      and \Node%
{\def\Element%
{2630}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getDouble\endSeq{}\endNode{}\endNode{}\def\HeadingText{%
13.3. Examples of Useful Functions: getInt
      and getDouble}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{2628}}\endNode{}\Node%
{\def\Element%
{2631}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} Functions can come in handy in many cases, but let's begin
      with a particularly useful example that continues with the
      project of managing parameters.  Suppose you have a Swarm file
      \Node%
{\def\Element%
{2632}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MyParameters.m\endSeq{}\endNode{} that sets the values of many
      parameters.  Suppose there are 50 ints and 40 doubles.  You may
      go insane writing methods to get each parameter specifically by
      name.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2633}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} There is no need to write specific get methods for each
      variable because a combination of methods from Swarm and C can
      be used to create "generic" get functions that will retrieve the
      values.  In the top part of the
      \Node%
{\def\Element%
{2634}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MyParameters.m\endSeq{}\endNode{} file, between the include
      statements and the implementation statement, the functions are
      defined thus:\endPar{}\endNode{}\Node%
{\def\Element%
{2635}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}//MyParameters.m
[import statements here]

id
makeProbe (id obj, const char *ivarName)
\{
  id probe = [VarProbe createBegin: [obj getZone]];

  [probe setProbedClass: [obj getClass]];
  [probe setProbedVariable: ivarName];
  return [probe createEnd];
\}

double
getDouble (id obj, const char *ivarName)
\{
  id probe = makeProbe (obj, ivarName);
  double ret = [probe probeAsDouble: obj];
  [probe drop];
  return ret;
\}

int
getInt (id obj, const char *ivarName)
\{
  id probe = makeProbe (obj, ivarName);
  int ret = [probe probeAsInt: obj];
  [probe drop];
  return ret;
\}

@implementation MyParameters
[and so forth...]\endPar{}\endNode{}\Node%
{\def\Element%
{2636}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}These functions are made available to calls in other files
      by declaring them in the header file,
      \Node%
{\def\Element%
{2637}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MyParameters.h\endSeq{}\endNode{}.  The declarations are
      inserted between the import statements and before the interface
      declaration.\endPar{}\endNode{}\Node%
{\def\Element%
{2638}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}//MyParameters.h
[import statements here]
id
makeProbe (id obj, const char *ivarName);

double
getDouble (id obj, const char *ivarName);

int
getInt (id obj, const char *ivarName);

@interface MyArguments: Arguments\char95{}c
[And so forth...]\endPar{}\endNode{}\Node%
{\def\Element%
{2639}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In any file that includes
      \Node%
{\def\Element%
{2640}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MyParameters.h\endSeq{}\endNode{}, one can retrieve the value
      of a parameter by using the \Node%
{\def\Element%
{2641}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getInt\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{2642}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getDouble\endSeq{}\endNode{} functions.  For example, if there
      is an instance variable defined in
      \Node%
{\def\Element%
{2643}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MyParameters\endSeq{}\endNode{} called
      \Node%
{\def\Element%
{2644}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}maxHeat\endSeq{}\endNode{}, it can be retrieved by the following
      call to the function:\endPar{}\endNode{}\Node%
{\def\Element%
{2645}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}getInt(arguments, "maxHeat");\endPar{}\endNode{}\Node%
{\def\Element%
{2646}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This call is made against the object called
      \Node%
{\def\Element%
{2647}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}arguments\endSeq{}\endNode{} because, as mentioned in the
      previous section, the instantiation of
      \Node%
{\def\Element%
{2648}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MyParameters\endSeq{}\endNode{} is named
      \Node%
{\def\Element%
{2649}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}arguments\endSeq{}\endNode{} inside the Swarm kernel.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.01-DYNAMIC.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}13.4. \Node%
{\def\Element%
{2654}\def\ProcessingMode%
{xref-title-mode}}Dynamic Memory Allocation and Swarm Zones\endNode{}\def\HeadingText{%
13.4. Dynamic Memory Allocation and Swarm Zones}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{2651}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2654}}\endNode{}\Node%
{\def\Element%
{2655}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Veteran C programmers have no doubt tangled with the problem
      of dynamic memory allocation using \Node%
{\def\Element%
{2656}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}malloc\endSeq{}\endNode{}
      or \Node%
{\def\Element%
{2657}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}calloc\endSeq{}\endNode{}.  In its
      \Node%
{\def\Element%
{2658}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Zone\endSeq{}\endNode{} protocol, Swarm has methods that can
      be used in place of these functions.  While there is nothing
      inherently wrong with using the built-in C functions to allocate
      memory, there are some advantages in the Swarm methods that may
      reduce the danger of memory leaks.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2659}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Swarm users who are not familiar with dynamic memory
      allocation may wish to consult a C manual.  In a nutshell, the
      problem is this.  If one wants to create an array, the
      elementary way to do so is to declare the array like so:\endPar{}\endNode{}\Node%
{\def\Element%
{2660}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}int array[5]; \endPar{}\endNode{}\Node%
{\def\Element%
{2661}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This creates an array of 5 integers.  When the program runs,
      memory is set aside where values can be placed into and
      retrieved from the array.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2662}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      This standard approach only works when the user knows that there
      will be exactly 5 elements in the array.  What if some
      calculations are done during the run of the program and then it
      is necessary to create an array that depends on that calculated
      number?  This is the kind of case for which dynamic memory
      allocation is needed.  If, during a run, some number N is
      calculated, and then one needs to have an array of length N,
      then the program can grab some of the system's physical memory
      and use it.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2663}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Dynamic memory in Swarm can be accessed by the methods
      \Node%
{\def\Element%
{2664}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}alloc:\endSeq{}\endNode{} and \Node%
{\def\Element%
{2665}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}allocBlock:\endSeq{}\endNode{}
      in Swarm's \Node%
{\def\Element%
{2666}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Zone\endSeq{}\endNode{} protocol.  First, it is
      necessary to declare a pointer that will serve as the address of
      the dynamically allocated memory.  Second, the memory is
      allocated to that pointer. Here is an example from a class
      called Point, which is used to dynamically allocate space for
      arrays of real numbers.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2667}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}//Point.h
@interface Point: SwarmObject \{
        double * position;
        int spaceSize;
 \}

-buildObjects;
-(void) drop;
-setSpaceSize:(int) size;


//Point.m
\#import Point.h

@implementation Point

- buildObjects
\{
  //position = xmalloc(spaceSize * sizeof(double));
  //Test to make sure the memory was allocated. If not, exit immediately
  //if(position==NULL) exit(8);
   position = [[self getZone] allocBlock: spaceSize * sizeof(double)];
   return self;
\}
- (void)drop
\{
  //free(position);
  [[self getZone] freeBlock: position blockSize: spaceSize * sizeof(double)];
  [super drop];
\}

- setSpaceSize: (int)size
\{
  spaceSize=size;
  return self;
\}\endPar{}\endNode{}\Node%
{\def\Element%
{2668}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Note that for the C programmer's information there are
      commented-out versions of \Node%
{\def\Element%
{2669}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}malloc\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{2670}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}free\endSeq{}\endNode{} calls.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2671}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}When a user wants to use the \Node%
{\def\Element%
{2672}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Point\endSeq{}\endNode{}
      class to create a new \Node%
{\def\Element%
{2673}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Point\endSeq{}\endNode{}, which has an
      array of doubles inside it, then an instance of the
      \Node%
{\def\Element%
{2674}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Point\endSeq{}\endNode{} class is created in the usual Swarm
      way.  Then the size is set, and then the
      \Node%
{\def\Element%
{2675}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Point\endSeq{}\endNode{} is told to build its objects, which
      allocates the dynamic memory.  For example:
    \endPar{}\endNode{}\Node%
{\def\Element%
{2676}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}	id  newPoint;

	newPoint=[Point createBegin: [self getZone];
	newPoint= [newPoint createEnd:];
	[newPoint setSize: N];
	[newPoint buildObjects];
      \endPar{}\endNode{}\Node%
{\def\Element%
{2677}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}After that space is allocated, then it can be used by methods in
      the \Node%
{\def\Element%
{2678}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Point\endSeq{}\endNode{} class as if it were an
      array. The reason that one can treat the pointer to the
      dynamically allocated memory as if it were an array is found in
      the fundamental similarity of pointers and arrays in C.
      Interested research should consult the C manuals for a
      comparision of pointers and arrays.  To consider a usage
      example, a method could be written to fill the array with random
      numbers between 1 and 5.\endPar{}\endNode{}\Node%
{\def\Element%
{2679}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- fillRandomly
\{
  int i;

  for(i = 0, i \Entity{lt} spaceSize; i++)
  \{
    position[i]=[uniformDblRand getDoubleWithMin: 1 withMax: 5];
    return self;
  \}
\}\endPar{}\endNode{}\Node%
{\def\Element%
{2680}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}A memory leak is a flaw in a program which causes it to
      access dynamic memory and then "waste" it by dropping all
      references to it without letting the operating system know that
      the memory is no longer needed.  In C, the
      \Node%
{\def\Element%
{2681}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}free()\endSeq{}\endNode{} function tells the operating system
      that the memory can be reallocated to other purposes.  If the
      programmer forgets to free memory that is no longer needed, then
      the memory demands of the program will expand with each new
      allocation, taking memory that might be used by other
      applications and eventually causing the program to crash.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2682}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In Swarm, memory allocated with
      \Node%
{\def\Element%
{2683}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}allocBlock:\endSeq{}\endNode{} can be freed explicitly with
      the \Node%
{\def\Element%
{2684}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}freeBlock:\endSeq{}\endNode{} method.  The usage of
      \Node%
{\def\Element%
{2685}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}freeBlock:\endSeq{}\endNode{} is illustrated in the
      \Node%
{\def\Element%
{2686}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drop\endSeq{}\endNode{} method of the
      \Node%
{\def\Element%
{2687}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Point\endSeq{}\endNode{} class.  This
      \Node%
{\def\Element%
{2688}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drop\endSeq{}\endNode{} method is used only to free the
      dynamic memory, but it would also explicitly drop any Swarm
      objects that were created inside the object.  The topic of
      designing programs to avoid memory leaks is discussed further in
      the next section.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.01-DROP.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}13.5. \Node%
{\def\Element%
{2695}\def\ProcessingMode%
{xref-title-mode}}Dropping Unused Objects\endNode{}\def\HeadingText{%
13.5. Dropping Unused Objects}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{2690}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2692}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2695}}\endNode{}\Node%
{\def\Element%
{2696}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Most Swarm objects will respond to the \Node%
{\def\Element%
{2697}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drop\endSeq{}\endNode{}
      message. This message causes them to execute whatever commands
      are necessary to remove themselves from memory. When objects
      created by user-created classes are no longer needed, they
      should be dropped as well.  It is vital, therefore, to customize
      the drop method of a user-defined class so that all objects
      created within the object are explictly dropped.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2698}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In the \Node%
{\def\Element%
{2699}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Point\endSeq{}\endNode{} class, the super class's
      \Node%
{\def\Element%
{2700}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drop\endSeq{}\endNode{} method is inherited from
      \Node%
{\def\Element%
{2701}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}SwarmObject\endSeq{}\endNode{}. However, if we were to tell
      a \Node%
{\def\Element%
{2702}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Point\endSeq{}\endNode{} object to drop, it would not
      automatically drop the dynamically allocated memory referred to
      by the pointer \Node%
{\def\Element%
{2703}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}position\endSeq{}\endNode{}.  Similarly, any
      other Swarm objects allocated in the
      \Node%
{\def\Element%
{2704}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Point\endSeq{}\endNode{} object would not be dropped.  In
      order to be sure these are dropped, the drop method should be
      overridden and customized.  When that method is overridden, it
      is vital to make sure the super class's drop method is executed.
      That is the reason that the \Node%
{\def\Element%
{2705}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Point\endSeq{}\endNode{} class's
      drop method begins with [super drop].  Any objects that have
      been allocated in \Node%
{\def\Element%
{2706}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Point\endSeq{}\endNode{}, such as the
      memory devoted to the variable \Node%
{\def\Element%
{2707}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}position\endSeq{}\endNode{},
      should be taken care of at that stage.  Any Swarm objects that
      have been created, such as lists, list indexes, or other objects
      should be dropped in the drop command.\endPar{}\endNode{}\Node%
{\def\Element%
{2708}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Many users think that there ought to be an "automatic" way
      to drop all objects that exist inside an object.  This would
      certainly be convenient, since rewriting a drop method to make
      sure all objects are correctly disposed of can be tedious and
      possibly error-prone.  While there is no such automatic
      object-dropping facility, there is a way to design Swarm code
      that comes close.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2709}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      To make sure that all objects inside another object are dropped,
      users might consider a strategy that uses
      \Node%
{\def\Element%
{2710}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Zone\endSeq{}\endNode{}s more carefully.  Instead of
      following the \Node%
{\def\Element%
{2711}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Zone\endSeq{}\endNode{} usage examples
      provided by most Swarm applications, consider instead creating
      agents inside separate memory zones.  When a zone gets the drop
      method, \Node%
{\def\Element%
{2712}}\Seq%
{\def\fPosture%
{italic}}it does drop all objects inside it!\endSeq{}\endNode{}
    \endPar{}\endNode{}\Node%
{\def\Element%
{2713}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Here is how such a program might be designed. Suppose that
      agents are to be created in the model swarm by a for loop.  The
      usual approach would create the objects in the model swarm
      itself, using the \Node%
{\def\Element%
{2714}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Zone\endSeq{}\endNode{} of the model
      swarm.\endPar{}\endNode{}\Node%
{\def\Element%
{2715}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}//in the buildObjects method of ModelSwarm.m
for(i=0;i \Entity{lt} numAgents;i++)
 \{
   id agent;
   agent=[Agent createBegin: self];
   agent=[agent createEnd];
   [agentList addLast: agent];
 \}\endPar{}\endNode{}\Node%
{\def\Element%
{2716}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Suppose that instead of creating the instances of the class
      \Node%
{\def\Element%
{2717}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Agent\endSeq{}\endNode{} inside the model swarm itself, we
      create a \Node%
{\def\Element%
{2718}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Zone\endSeq{}\endNode{} object each time through
      the loop, and then create the agent inside that zone.  For
      example,
    \endPar{}\endNode{}\Node%
{\def\Element%
{2719}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}//in the buildObjects method of ModelSwarm.m
for(i = 0;i \Entity{lt} numAgents; i++)
\{
  id agent, newZone;
  newZone=[Zone create: self];
  agent=[Agent createBegin: newZone];
  agent=[agent createEnd];
  [agentList addLast: agent];
\}\endPar{}\endNode{}\Node%
{\def\Element%
{2720}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      The \Node%
{\def\Element%
{2721}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Agent\endSeq{}\endNode{} class might create all kinds of
      objects, and we could use the method described above to write a
      drop method for the \Node%
{\def\Element%
{2722}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Agent\endSeq{}\endNode{} class.
      However, this second approach has simplicity on its side.  If it
      is necessary to drop an agent, instead of using the command
      \Node%
{\def\Element%
{2723}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}[agent drop]\endSeq{}\endNode{}, we instead find out what the
      agent's zone is, and drop that:
    \endPar{}\endNode{}\Node%
{\def\Element%
{2724}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{2725}}\Seq%
{\def\fFamName{Times-New-Roman}\def\fPosture%
{italic}}//first, suppose you want to remove an agent named "agent".  
//Remove references to agent from the list\endSeq{}\endNode{}
[agentList remove: agent];
\Node%
{\def\Element%
{2726}}\Seq%
{\def\fFamName{Times-New-Roman}\def\fPosture%
{italic}}//Then drop that agent's zone\endSeq{}\endNode{}
\{
  id agentZone;
  agentZone=[agent getZone];
  [agentZone drop];
\}
\Node%
{\def\Element%
{2727}}\Seq%
{\def\fFamName{Times-New-Roman}\def\fPosture%
{italic}}//This could be achieved with a single line: [[agent getZone] drop];\endSeq{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{2728}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This \Node%
{\def\Element%
{2729}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Zone\endSeq{}\endNode{}-oriented approach might
      bring a bit of peace of mind because it eliminates the danger of
      a memory leak that may result when an agent is dropped but the
      objects inside it are not.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.02.SECT1}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{2731}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 14. The Swarm Collections Library\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{2731}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 14. The Swarm Collections Library\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Chapter 14. \Seq%
{}\Node%
{\def\Element%
{2731}\def\ProcessingMode%
{component-title-mode}}The Swarm Collections Library\endNode{}\endSeq{}\def\HeadingText{%
Chapter 14. The Swarm Collections Library}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{2731}}\endNode{}\Node%
{\def\Element%
{2732}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}14.1. \Node%
{\def\Element%
{2733}\def\ProcessingMode%
{xref-title-mode}}Overview: the \Node%
{\def\Element%
{2734}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{12.96\p@}}List\endSeq{}\endNode{},
      \Node%
{\def\Element%
{2735}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{12.96\p@}}Map\endSeq{}\endNode{} and \Node%
{\def\Element%
{2736}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{12.96\p@}}Array\endSeq{}\endNode{}
      Protocols\endNode{}\def\HeadingText{%
14.1. Overview: the List,
      Map and Array
      Protocols}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{2733}}\endNode{}\Node%
{\def\Element%
{2737}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2740}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2743}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The most frequently used kinds of collections are the
      \Node%
{\def\Element%
{2744}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{}, \Node%
{\def\Element%
{2745}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{2746}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} protocols.  They have some elements
      in common. They all comply with the
      \Node%
{\def\Element%
{2747}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Collection\endSeq{}\endNode{} protocol, most importantly,
      which means they have methods with which items can be added,
      retrieved, and removed.  Also, each can be used to create an
      index object, which can make management of lists an easier
      chore.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2748}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}It is very important to note that these collections are
      primarily intended to manage objects, not integers or floating
      point values.
      \Node%
{\def\Element%
{2749}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}1\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{2750}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}1. \endLineField{}Type casting for both storage of variables in collections as
          well as usage of non-object values for keys was discussed in
          the original Swarm design.  Roger Burkhart defined a
          protocol \Node%
{\def\Element%
{2751}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{6.75\p@}}MemberType\endSeq{}\endNode{} which would have
          been adopted by the \Node%
{\def\Element%
{2752}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{6.75\p@}}Collection\endSeq{}\endNode{}
          protocol: \Node%
{\def\Element%
{2753}}\Seq%
{}\Character{8220}The MemberType option may be used to
          declare the type of member which a collection contains.  Its
          value must be an object having one of the ValueType types
          defined in defobj.  (..Currently no ValueType objects are
          implemented, so MemberType is not supported.)\Character{8221}\endSeq{}\endNode{} This
          protocol was to have two methods: \Node%
{\def\Element%
{2754}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}-setMemberType:
          aDataType\endSeq{}\endNode{} and
          \Node%
{\def\Element%
{2755}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}-getMemberType\endSeq{}\endNode{}.\endPar{}\endNode{}}\endSeq{}\endNode{}

      If you need an array of integers (or floats or chars or whatever
      else), just use an ordinary C array.  When it is necessary to
      use strings, integers, or floating point values in a Swarm
      collection, there are two workarounds.  One is to use
      typecasting to put those other values inside the space allocated
      for a pointer to an object.  For various reasons, that approach
      is not as desirable as the alternative of creating "wrapper
      objects" that can contain those other types of variables. In
      short, while typecasting will often work, it is generally a
      better strategy is to design more carefully the objects you want
      to keep in Swarm collections and use recommended procedures for
      retrieving them.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2756}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2759}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2761}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      Some commands that work in Swarm collections are: 

      \Node%
{\def\Element%
{2762}}\Seq%
{}\endSeq{}\endNode{}
      \Node%
{\def\Element%
{2764}}\Seq%
{}\endSeq{}\endNode{}
      \Node%
{\def\Element%
{2766}}\Seq%
{}\endSeq{}\endNode{}
      \Node%
{\def\Element%
{2769}}\Seq%
{}\endSeq{}\endNode{}
      \Node%
{\def\Element%
{2771}}\Seq%
{}\endSeq{}\endNode{}      
      \Node%
{\def\Element%
{2773}}\Seq%
{}\endSeq{}\endNode{}

      \Node%
{\def\Element%
{2775}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{2776}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{2777}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2778}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getCount\endSeq{}\endNode{}: 
              Returns the number of members in the collection\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2779}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{2780}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2781}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}atOffset: i\endSeq{}\endNode{}: 
              Retrieves the \Node%
{\def\Element%
{2782}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}i\endSeq{}\endNode{}th member of the collection
            \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2783}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{2784}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2785}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}atOffset:i put: obj\endSeq{}\endNode{}: 
              Inserts obj at location i
            \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2786}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{2787}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2788}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}contains: obj\endSeq{}\endNode{}
            Returns 1 if obj is member\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2789}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{2790}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2791}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}remove: obj\endSeq{}\endNode{}: 
              Removes object obj
            \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2792}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{2793}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2794}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}removeAll\endSeq{}\endNode{}: 
              Removes all objects from collection, but leaves the objects in memory\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2795}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{2796}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2797}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}deleteAll\endSeq{}\endNode{}: 
              Removes all objects from collection and deletes them from memory\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2798}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{2799}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{2800}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}forEach:M(message)\endSeq{}\endNode{}: 
              Sends message to all members\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}

    \endPar{}\endNode{}\Node%
{\def\Element%
{2801}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This chapter does not discuss the Swarm
      \Node%
{\def\Element%
{2802}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Set\endSeq{}\endNode{} protocol because, at the current
      time, it has no functionality beyond the regular Swarm
      \Node%
{\def\Element%
{2803}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} protocol.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.02-CHOOSE.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}14.2. \Node%
{\def\Element%
{2805}\def\ProcessingMode%
{xref-title-mode}}Choosing between \Node%
{\def\Element%
{2806}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{12.96\p@}}List\endSeq{}\endNode{}s,
      \Node%
{\def\Element%
{2807}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{12.96\p@}}Map\endSeq{}\endNode{}s, and
      \Node%
{\def\Element%
{2808}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{12.96\p@}}Array\endSeq{}\endNode{}s\endNode{}\def\HeadingText{%
14.2. Choosing between Lists,
      Maps, and
      Arrays}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{2805}}\endNode{}\Node%
{\def\Element%
{2809}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2813}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2817}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The different kinds of collections objects are useful for
      different purposes.  The \Node%
{\def\Element%
{2818}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} class can
      be used to create easy-to-use containers that make it relatively
      simple to manage iterative chores.  Use a Swarm
      \Node%
{\def\Element%
{2819}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} when you intend to have all objects
      processed in order, for example. (\Node%
{\def\Element%
{2820}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{}s
      can also be processed in a randomized order).  The
      \Node%
{\def\Element%
{2821}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} and \Node%
{\def\Element%
{2822}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{}
      classes are intended for more structured maintenance of
      collections.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2823}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Because they serve these specialized objectives, there are
      some commands uniquely available to each of the Swarm container
      classes.  For example, as we saw in an earlier chapter, the
      \Node%
{\def\Element%
{2824}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} class can respond to methods like
      \Node%
{\def\Element%
{2825}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}addFirst:\endSeq{}\endNode{}, \Node%
{\def\Element%
{2826}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}addLast:\endSeq{}\endNode{},
      removeFirst, and removeLast. A \Node%
{\def\Element%
{2827}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{}
      object can be used in a flexible way, objects can be thrown onto
      the end or the beginning of the list with these methods.  These
      are not available in \Node%
{\def\Element%
{2828}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} or
      \Node%
{\def\Element%
{2829}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{}, because \Node%
{\def\Element%
{2830}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{}
      and \Node%
{\def\Element%
{2831}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} objects have more intricate
      internal structure.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2832}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}A Swarm \Node%
{\def\Element%
{2833}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} object is used when it
      is necessary to store objects in a specific order.  The Swarm
      \Node%
{\def\Element%
{2834}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} is somewhat similar to a C array,
      in the sense that objects can be inserted at a particular
      position and their values can be retrieved from that position.
      A Swarm \Node%
{\def\Element%
{2835}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} can be processed
      iteratively, as a \Node%
{\def\Element%
{2836}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} can.\endPar{}\endNode{}\Node%
{\def\Element%
{2837}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}A Swarm \Node%
{\def\Element%
{2838}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} is used when objects are
      not stored according to their numerical position in a list, but
      rather according to the value of some object.  For example, a
      \Node%
{\def\Element%
{2839}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} can store objects that have rankings
      of favorite foods for each of several people. If each person is
      an object, then the person's identity works as a "key" that
      controls the insertion and removal of the object from the
      \Node%
{\def\Element%
{2840}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{}.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2841}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Enhancement and streamlining of the Swarm Collections
      library is an ongoing chore, but at the current time the user's
      choice of \Node%
{\def\Element%
{2842}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{},
      \Node%
{\def\Element%
{2843}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{}, or \Node%
{\def\Element%
{2844}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} is
      partly driven by the way these classes are implented in Swarm.
      The \Node%
{\def\Element%
{2845}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} and \Node%
{\def\Element%
{2846}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{}
      classes are comparatively slow.  If one needs to make repeated
      accesses to a \Node%
{\def\Element%
{2847}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} or
      \Node%
{\def\Element%
{2848}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} from randomly selected positions, the
      program will run comparatively slowly.  Here's why:

      \Node%
{\def\Element%
{2849}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{2850}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}1. \endLineField{}\endSeq{}\Node%
{\def\Element%
{2851}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}          Suppose you have a \Node%
{\def\Element%
{2852}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} and you have
          entered objects that represent food tastes for each of 500
          people.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2853}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}2. \endLineField{}\endSeq{}\Node%
{\def\Element%
{2854}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}          If you then
          tell your \Node%
{\def\Element%
{2855}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} object to retrieve the food
          preference of the person "Bart", for example, then the
          \Node%
{\def\Element%
{2856}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} will be processed from the beginning
          (the first inserted object) and each will be checked to see if
          its key (its "owner," as it were) is "Bart."\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2857}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}3. \endLineField{}\endSeq{}\Node%
{\def\Element%
{2858}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}          If Bart's object happens to be at the end of the
          \Node%
{\def\Element%
{2859}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{}, then a lot of objects will be
          checked.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2860}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}4. \endLineField{}\endSeq{}\Node%
{\def\Element%
{2861}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}          Then, when you ask for the object of person "Fred", it
          begins at the start of the \Node%
{\def\Element%
{2862}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} and
          checks, one-by-one, until it finds the object whose key is
          Fred.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}

      At the time of writing, the \Node%
{\def\Element%
{2863}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} object,
      has no way to go straight to the one you want\Node%
{\def\Element%
{2864}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}2\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{2865}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}2. \endLineField{}a
      potential enhancement to the collections library is an option
      that would allow the user to select a hash-table implementation
      of the \Node%
{\def\Element%
{2866}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{6.75\p@}}Map\endSeq{}\endNode{} protocol, which would
      effectively allow this kind of random-access\endPar{}\endNode{}}\endSeq{}\endNode{},
      so it goes through this repetitive checking process.  The same
      is true of the \Node%
{\def\Element%
{2867}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} class.  As a result,
      if there are many objects, programs will run slowly when they
      try to insert and retrieve data for specific objects when using
      Swarm \Node%
{\def\Element%
{2868}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{}s or
      \Node%
{\def\Element%
{2869}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{}s.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2870}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In contrast, the processing of a Swarm
      \Node%
{\def\Element%
{2871}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} can be quite fast because the
      elements are entered with integer keys.  A Swarm
      \Node%
{\def\Element%
{2872}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} can quickly retrieve item number
      ten. Unlike a \Node%
{\def\Element%
{2873}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{}, it does not start at
      the beginning and go through a sequence of checks until it comes
      to the tenth item.  Because of the internal structuring of the
      Swarm \Node%
{\def\Element%
{2874}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{}, the tenth item is retrieved
      without checking the first nine.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2875}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}As a result of the aforementioned issue about the speed of
      the program, there is going to be a judgment call.  A
      \Node%
{\def\Element%
{2876}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} will work fine and quickly if there
      are just a few items stored, but the time wasted looking for a
      specific item increases with the length of the list.  An
      \Node%
{\def\Element%
{2877}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} might be a good choice, except
      allocating space for an array may waste memory.  For example,
      suppose we are preparing to survey 20 people out of a population
      of 100,000.  If each person is assigned a number, and then
      numbers are chosen at random, we might end up with people in our
      sample that are numbered \{44, 63, 555, 4432, 6689, 21001, 44934,
      78343, 99921\}.  If we use a \Node%
{\def\Element%
{2878}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{}, we could
      just add the 10 objects. On the other hand, if we wanted to use
      an \Node%
{\def\Element%
{2879}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} with the person's number serving
      as the \Node%
{\def\Element%
{2880}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} index, we would have to
      allocate an \Node%
{\def\Element%
{2881}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} with 100,000 elements
      in order to store these ten items.  This wastes memory, but
      objects can indeed be retrieved quickly.  Most people would
      prefer a \Node%
{\def\Element%
{2882}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} for this purpose.  If there
      were 10,000 people being sampled, however, the
      \Node%
{\def\Element%
{2883}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} might work best.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.02-ARRAY.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}14.3. \Node%
{\def\Element%
{2885}\def\ProcessingMode%
{xref-title-mode}}Using Swarm \Node%
{\def\Element%
{2886}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{12.96\p@}}Array\endSeq{}\endNode{}s\endNode{}\def\HeadingText{%
14.3. Using Swarm Arrays}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{2885}}\endNode{}\Node%
{\def\Element%
{2887}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2891}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The Swarm \Node%
{\def\Element%
{2892}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} is the easiest to use
      of the Swarm collections. At create-time, the size of the
      \Node%
{\def\Element%
{2893}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} is set.  For example, to create an
      \Node%
{\def\Element%
{2894}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} called \Node%
{\def\Element%
{2895}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}foods\endSeq{}\endNode{}
      that has 15 elements, this code will get the job done:\endPar{}\endNode{}\Node%
{\def\Element%
{2896}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}} 
id \Entity{lt}Arraya\Entity{gt} foods; 
food=[Array create: [self getZone] setCount: 15];\endPar{}\endNode{}\Node%
{\def\Element%
{2897}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If it is necessary to add elements to the
      \Node%
{\def\Element%
{2898}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{}, then the
      \Node%
{\def\Element%
{2899}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}setCount:\endSeq{}\endNode{}method of the
      \Node%
{\def\Element%
{2900}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} class can be used to increase the
      size ofthe \Node%
{\def\Element%
{2901}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{}.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2902}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Entries are inserted, accessed, and removed from the
      \Node%
{\def\Element%
{2903}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} in a rather obvious way.  As in C,
      the numbering of the \Node%
{\def\Element%
{2904}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} elements
      begins with 0, so the last element in the
      \Node%
{\def\Element%
{2905}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} has the index value 14. To insert
      an object called \Node%
{\def\Element%
{2906}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}steak\endSeq{}\endNode{} into the foods
      \Node%
{\def\Element%
{2907}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} at index value 6, the appropriate
      command is:
    \endPar{}\endNode{}\Node%
{\def\Element%
{2908}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}} 
[foods atOffset: 6 put: steak];\endPar{}\endNode{}\Node%
{\def\Element%
{2909}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      When it is necessary to retrieve the \Node%
{\def\Element%
{2910}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}steak\endSeq{}\endNode{}
      object, this will do:
    \endPar{}\endNode{}\Node%
{\def\Element%
{2911}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}retrievedObject=[foods atOffset: 6];\endPar{}\endNode{}\Node%
{\def\Element%
{2912}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      A Swarm \Node%
{\def\Element%
{2913}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} object will allow quick
      access of any particular object because the objects are indexed
      by an integer.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2914}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      An \Node%
{\def\Element%
{2915}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} will work like a Swarm
      \Node%
{\def\Element%
{2916}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} for the purposes of repetitive
      processing. Since an \Node%
{\def\Element%
{2917}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} includes a
      fixed number of objects, they can easily be accessed with for
      loops, but while loops will work just as well.  An
      \Node%
{\def\Element%
{2918}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} object can be told to create an
      index object for itself, and that index can be used in the way
      that we described in the chapter on
      \Node%
{\def\Element%
{2919}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{}s.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2920}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} There is only one surprise awaiting users of the
      \Node%
{\def\Element%
{2921}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} protocol: objects cannot be removed
      from \Node%
{\def\Element%
{2922}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{}s.  Since the
      \Node%
{\def\Element%
{2923}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{} protocol's major strength is its
      speed, and the speed depends on maintaining a fixed list of
      items, the remove method of the Collections protocol is disabled
      in \Node%
{\def\Element%
{2924}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{}.  Rather than remove an item
      from an \Node%
{\def\Element%
{2925}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{}, one must put
      \Node%
{\def\Element%
{2926}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}nil\endSeq{}\endNode{} at a position in the
      \Node%
{\def\Element%
{2927}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{}.  This achieves the same effect as
      remove, but it preserves the \Node%
{\def\Element%
{2928}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{}
      "placeholder" so that future objects can be inserted at that
      spot.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.02-MAP.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}14.4. \Node%
{\def\Element%
{2930}\def\ProcessingMode%
{xref-title-mode}}Swarm \Node%
{\def\Element%
{2931}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{12.96\p@}}Map\endSeq{}\endNode{}s\endNode{}\def\HeadingText{%
14.4. Swarm Maps}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{2930}}\endNode{}\Node%
{\def\Element%
{2932}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2936}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Experienced programmers are familiar with the term "key" as
      it refers to management of collections.  People who are new to
      programming and Swarm often find this idea quite confusing.
      Hence, we will explain.\endPar{}\endNode{}\Node%
{\def\Element%
{2937}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Think of a \Node%
{\def\Element%
{2938}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} as two rows of
      objects.  The bottom row contains the objects you want to store
      and retrieve.  The top row contains the names of the objects.
      If you put an object into a \Node%
{\def\Element%
{2939}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{}, you tell
      the \Node%
{\def\Element%
{2940}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} its name and the
      \Node%
{\def\Element%
{2941}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} handles the problem of inserting the
      object into the bottom row and putting the name in the top row.
      When an object is removed from a \Node%
{\def\Element%
{2942}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{}, its
      name is also removed from the top row.  If you need to get an
      object, you tell the \Node%
{\def\Element%
{2943}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} its name and the
      \Node%
{\def\Element%
{2944}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} then goes to the right position in
      the top row and then it gives back the corresponding object in
      the bottom row.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2945}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The names of the objects are called "keys" in Swarm (and
      other programming languages). The usage of keys is somewhat
      confusing and difficult for newcomers because the keys should be
      Swarm objects. \endPar{}\endNode{}\Node%
{\def\Element%
{2946}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}\def\Orientation%
{horizontal}}\Seq%
{}\Node%
{\def\Element%
{2947}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Example 14-1. \endSeq{}Maps and keys\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{2947}}\endNode{}\Node%
{\def\Element%
{2948}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2952}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Here is a simple example.  Suppose we are creating a
        series of objects in a for loop.  In each step, we tell the
        class Person, which is subclassed from
        \Node%
{\def\Element%
{2953}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}SwarmObject\endSeq{}\endNode{} to create an instance
        \Node%
{\def\Element%
{2954}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}aFriend\endSeq{}\endNode{} and we add that Person to a
        \Node%
{\def\Element%
{2955}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}listOfPeople\endSeq{}\endNode{}.  Then we tell the class
        Preferences to create an instance and we insert the instance
        into a \Node%
{\def\Element%
{2956}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{}, using the Person object as
        the key. Note that the \Node%
{\def\Element%
{2957}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} and
        \Node%
{\def\Element%
{2958}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} are declared before the loop.
        \endPar{}\endNode{}\Node%
{\def\Element%
{2959}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}
id \Entity{lt}List\Entity{gt} listOfPeople;
id \Entity{lt}Map\Entity{gt} mapOfPreferences;
listOfPeople=[List create: [self getZone]];
mapOfPreferences=[Map create: [self getZone]];

for(i=0; i \Entity{lt} 50; i++)
\{
id aFriend, aPreference;
aFriend = [Person createBegin: [self getZone]];
aFriend = [aFriend createEnd];

[listOfPeople addLast: aFriend];

aPreference = [Preferences createBegin: [self getZone]];
aPreference = [aPreference createEnd];

[mapOfPreferences at: aFriend insert: aPreference];
\}\endPar{}\endNode{}\Node%
{\def\Element%
{2960}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}        To retrieve a preference object, it is first necessary to
        figure out which person you want and then tell the
        \Node%
{\def\Element%
{2961}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} to return that person's preference.
        For example, suppose you decide to grab the 6th person and
        find out what their preferences are.  Then try this:
      \endPar{}\endNode{}\Node%
{\def\Element%
{2962}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}id aParticularPerson, thePreference;
aParticularFriend=[listOfPeople atOffset: 6];
thePreference=[mapOfPreferences at: aParticularFriend];
// here you can do anything you want to with thePreference you get back.\endPar{}\endNode{}\Node%
{\def\Element%
{2963}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Similarly, you could cycle through the
        \Node%
{\def\Element%
{2964}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}listOfPeople\endSeq{}\endNode{} by creating a Swarm index for
        the \Node%
{\def\Element%
{2965}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}listOfPeople\endSeq{}\endNode{} and then use the returned
        value from \Node%
{\def\Element%
{2966}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}[index next]\endSeq{}\endNode{} as the key:
      \endPar{}\endNode{}\Node%
{\def\Element%
{2967}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}id index, aPerson;
index= [listOfPeople begin: [self getZone]];
while( (aPerson=[index next])!=nil )
\{
  id thePreference;
thePreference = [mapOfPreferences at: aPerson];
// here you insert some code that does something with the retrieved preference!
\}\endPar{}\endNode{}\endPar{}\endSeq{}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\KeepWithPrevious%
{1}\def\Orientation%
{horizontal}}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{2968}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This example works because the \Node%
{\def\Element%
{2969}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{}
      object automatically compares the objects acting as keys to see
      if they are identical. This is the default compare: method of
      the class \Node%
{\def\Element%
{2970}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}SwarmObject\endSeq{}\endNode{}. If one wishes to
      compare the objects by another criterion, then a comparison
      function can be declared when the \Node%
{\def\Element%
{2971}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} is
      created.  Lacking a user-defined comparison function, the
      \Node%
{\def\Element%
{2972}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} will always use the
      \Node%
{\def\Element%
{2973}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}compare:\endSeq{}\endNode{} that is defined in the key object.
      Lacking such a function, the program should not run.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2974}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}When an object that is being used as a key has a
      \Node%
{\def\Element%
{2975}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}compare:\endSeq{}\endNode{} function, then the
      \Node%
{\def\Element%
{2976}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} will use that function to decide if
      the two objects are equal.  If a comparison function is declared
      when the \Node%
{\def\Element%
{2977}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} is created, then that
      comparison function will be used instead.  Swarm includes some
      built-in comparison functions, but, as we will see, the usage of
      customized functions is quite easy and convenient. If no
      comparison function is declared, then the fall-back approach
      checks for a \Node%
{\def\Element%
{2978}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}compare:\endSeq{}\endNode{} method in the key
      object itself. Since all objects that are based on Swarm inherit
      from the defined object class, all such objects have (at least)
      access to the bare minimum \Node%
{\def\Element%
{2979}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}compare:\endSeq{}\endNode{} that
      checks to see if two objects are identical.  Classes from which
      key objects are created can, of course, create more informative
      comparison methods.\endPar{}\endNode{}\Node%
{\def\Element%
{2980}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Lets begin with the problem of using integers as keys.
      There are two possible approaches, typecasting and the creation
      of "integer wrappers."  The typecasting approach is used in many
      Swarm applications. The essence of this approach is to use type
      casting to trick the Swarm library to make it treat an integer
      \Node%
{\def\Element%
{2981}}\Seq%
{\def\fPosture%
{italic}}as if\endSeq{}\endNode{} it were an object.  Without going too
      deeply into the computer science of the issue, it may not be
      possible to explain this, but we will take a stab at it.  On
      many computer systems, a pointer uses the same amount of space
      as an integer. Hence, it is possible to cast an integer as a
      pointer to "fool" the compiler, and then to retrieve the value
      of the integer from the place in memory where the pointer was
      supposed to be. (Confusing? Many users say, yes!)  Instead of
      inserting objects into a \Node%
{\def\Element%
{2982}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} with objects
      as keys, using this casting trick, one can insert objects at
      integer values that are cast as objects of type \Node%
{\def\Element%
{2983}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}id\endSeq{}\endNode{}.
      For example:
    \endPar{}\endNode{}\Node%
{\def\Element%
{2984}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[mapOfPreferences at: (id) 13 insert: aFriend]\endPar{}\endNode{}\Node%
{\def\Element%
{2985}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      In order for this to work, the
      \Node%
{\def\Element%
{2986}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}mapOfPreferences\endSeq{}\endNode{} has to be created so that it
      knows integers are going to be passed through in this way. At
      create time, the \Node%
{\def\Element%
{2987}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} must be told to use
      the built-in comparison function that will uncast the pointers
      and compare them.\endPar{}\endNode{}\Node%
{\def\Element%
{2988}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}mapOfPreferences  = [Map createBegin: aZone];
[mapOfPreferences  setCompareFunction: compareIntegers];
mapOfPreferences = [mapOfPreferences createEnd];\endPar{}\endNode{}\Node%
{\def\Element%
{2989}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The GridTurtle code example \Node%
{\def\Element%
{2990}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}grid3b.m\endSeq{}\endNode{}
      uses this appoach.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2991}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This "casting" approach to creating a keys has some serious
      shortcomings.  Most importantly, it is severely nonportable.
      Code written in this way on a Linux system might not work on a
      DEC Unix system. Why?  On DEC Unix, an integer and a pointer do
      not have the same size.\endPar{}\endNode{}\Node%
{\def\Element%
{2992}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}What is the alternative if one wants to enter objects into a
      \Node%
{\def\Element%
{2993}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} using integers as keys? The answer
      is: create an "integer wrapper" class.  This integer wrapper can
      store and retrieve the values of integers, and these objects can
      be used as keys in Swarm \Node%
{\def\Element%
{2994}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{}s.
    \endPar{}\endNode{}\Node%
{\def\Element%
{2995}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{2998}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Here is the integer wrapper class \Node%
{\def\Element%
{2999}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}3\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{3000}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}3. \endLineField{}There is
        an example of a program by Marcus Daniels that uses integer
        wrappers at \Node%
{\def\Element%
{3001}}\Seq%
{}\Seq%
{}MapIntegerIndex.txt\endSeq{}\Seq%
{} (http://lark.cc.ukans.edu/\char126{}pauljohn/SwarmFaq/WorkingExampleCode/MapIntegerIndex.txt)\endSeq{}\endSeq{}\endNode{}.\endPar{}\endNode{}}\endSeq{}\endNode{}, which is called \Node%
{\def\Element%
{3002}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Integer\endSeq{}\endNode{}:
    \endPar{}\endNode{}\Node%
{\def\Element%
{3003}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}//Integer.h
\#import \Entity{lt}defobj/Create.h\Entity{gt}

@interface Integer: CreateDrop
\{
 int value;
 member\char95{}t link;
\}
- setValue: (int)value;
- (int)getValue;
@end

//Integer.m
@implementation Integer
- setValue: (int)theValue
\{
 value = theValue;
 return self;
\}

- (int)getValue
\{
 return value;
\}

@end\endPar{}\endNode{}\Node%
{\def\Element%
{3004}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In order to use the \Node%
{\def\Element%
{3005}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Integer\endSeq{}\endNode{} class
      keys, the \Node%
{\def\Element%
{3006}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{} has to be told how to
      compare them, so it knows when it has found a key that matches
      what it is searching for.  In the example, the comparison
      function is called \Node%
{\def\Element%
{3007}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}compareIntegerObjects (
      )\endSeq{}\endNode{} and it takes two objects, and it then retrieves the
      value from each object, and returns the difference of the two. When 0
      is returned, it is treated as a "match". The following code snip
      creates 50 \Node%
{\def\Element%
{3008}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Preference\endSeq{}\endNode{} objects and it
      creates an \Node%
{\def\Element%
{3009}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Integer\endSeq{}\endNode{} object for each one.
      Each time the user wants to insert an object into a
      \Node%
{\def\Element%
{3010}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{}, an \Node%
{\def\Element%
{3011}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Integer\endSeq{}\endNode{}
      wrapper is created.\endPar{}\endNode{}\Node%
{\def\Element%
{3012}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\#include Integer.h
\#include Preference.h

// Here is a "comparison function"
int
compareIntegerObjects (id obj1, id obj2)
\{
return ((Integer *) obj1)->value - ((Integer *) obj2)->value;
\}

id \Entity{lt}List\Entity{gt} listOfPeople;
id \Entity{lt}Array\Entity{gt} arrayOfIntegers;
id \Entity{lt}Map\Entity{gt} mapOfPreferences;

mapOfPreferences = [[[Map createBegin: [self getZone]]
    setCompareFunction: compareIntegerObjects]
   createEnd];

for (i = 0; i \Entity{lt} 50; i++)
\{
  id aPreference;

  aPreference = [Preference createBegin: [self getZone]];
  aPreference = [aPreference createEnd];

  anInteger = [[Integer createBegin: [self getZone] setValue: i] createEnd];

  [mapOfPreferences at: anInteger insert: aPreference];
\}\endPar{}\endNode{}\Node%
{\def\Element%
{3013}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} After the \Node%
{\def\Element%
{3014}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}mapOfPreferences\endSeq{}\endNode{} is filled
      with objects, then they can be retrieved by their key
      values. One can create a single \Node%
{\def\Element%
{3015}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Integer\endSeq{}\endNode{}
      object, and then insert a value into it, and then use it as the
      key. The following will work to retrieve the
      \Node%
{\def\Element%
{3016}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Preference\endSeq{}\endNode{} object corresponding to the
      \Node%
{\def\Element%
{3017}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Integer\endSeq{}\endNode{} key with value 23.  Supposing the
      \Node%
{\def\Element%
{3018}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Preference\endSeq{}\endNode{} class has a method
      \Node%
{\def\Element%
{3019}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}outputVitalInfo\endSeq{}\endNode{}, this will retrieve those
      objects and tell them to execute that method.
    \endPar{}\endNode{}\Node%
{\def\Element%
{3020}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}id desiredPreferenceObject;

Integer * key = INTEGER(0);
key-\Entity{gt}value =23;   //same as [key setValue: 23];
desiredPreferenceObject= [mapOfPreferences at: key];
printf("The preference Object gives this output \char92{}n");
[desiredPreferenceObject outputVitalInfo];\endPar{}\endNode{}\Node%
{\def\Element%
{3021}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This is written out this way to make the code as clear as
      possible.  The example program cited above includes a number of
      macro definitions that can be used to make working with the
      \Node%
{\def\Element%
{3022}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Integer\endSeq{}\endNode{} class more elegant (and less
      tedious).
    \endPar{}\endNode{}\Node%
{\def\Element%
{3023}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The same kind of approaches can be used if one wants to use
      strings as keys in a \Node%
{\def\Element%
{3024}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{}.  The easiest
      way to use strings as the keys is to use the Swarm
      \Node%
{\def\Element%
{3025}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}String\endSeq{}\endNode{} protocol to create objects that
      act as "wrappers" for the string names. In the Swarm
      Documentation, one can find the GridTurtle test programs for the
      Collections library.  The file \Node%
{\def\Element%
{3026}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}grid3.m\endSeq{}\endNode{}
      contains an example that does exactly this.  The code in
      \Node%
{\def\Element%
{3027}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}grid3.m\endSeq{}\endNode{} creates a string, equal to the
      index variable i, and then sets that string into a
      \Node%
{\def\Element%
{3028}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}String\endSeq{}\endNode{} object, which is in turn used as
      the key. Of course, there is no reason that the chosen character
      string had to be a simple number. If you want to, you can create
      strings for all your friends and wrap them inside
      \Node%
{\def\Element%
{3029}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}String\endSeq{}\endNode{} objects.
    \endPar{}\endNode{}\Node%
{\def\Element%
{3030}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Unless you define a comparison function, the String objects
      are compared according to the \Node%
{\def\Element%
{3031}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}compare:\endSeq{}\endNode{}
      method that is defined for Swarm \Node%
{\def\Element%
{3032}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}String\endSeq{}\endNode{}s.
      This function is defined in the Swarm library in the file
      \Node%
{\def\Element%
{3033}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}StringObject.m\endSeq{}\endNode{}.  The comparison uses the C
      function strcmp to find out if the object's own string is the
      same as the string retrieved from the other object (which is
      called \Node%
{\def\Element%
{3034}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}aString\endSeq{}\endNode{}):
    \endPar{}\endNode{}\Node%
{\def\Element%
{3035}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- (int)compare: aString
\{
  return strcmp (string, ((String\char95{}c *) aString)->string);
\}\endPar{}\endNode{}\Node%
{\def\Element%
{3036}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      As in the case of integers, the built-in compare: method can be
      over-ridden by a customized comparison function declared by the
      user.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.02-INDEX.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}14.5. \Node%
{\def\Element%
{3038}\def\ProcessingMode%
{xref-title-mode}}Accessing Collections with Indices\endNode{}\def\HeadingText{%
14.5. Accessing Collections with Indices}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3038}}\endNode{}\Node%
{\def\Element%
{3039}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Any collection can generate an \Node%
{\def\Element%
{3040}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{}
      that can be used to access its members.  The command to create
      an \Node%
{\def\Element%
{3041}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} for a given collection is
      \Node%
{\def\Element%
{3042}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}begin:\endSeq{}\endNode{}.  The type of
      \Node%
{\def\Element%
{3043}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} created by a collection depends on
      the type of collection being indexed. If one desires an index of
      randomly shuffled members of a collection, then
      \Node%
{\def\Element%
{3044}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}beginPermuted:\endSeq{}\endNode{} is the necessary command.
    \endPar{}\endNode{}\Node%
{\def\Element%
{3045}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{3048}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} An \Node%
{\def\Element%
{3049}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} object will understand
      messages like \Node%
{\def\Element%
{3050}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}get\endSeq{}\endNode{}, which will return the
      object at which the \Node%
{\def\Element%
{3051}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} is currently
      positioned, \Node%
{\def\Element%
{3052}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}next\endSeq{}\endNode{}, which will move the
      \Node%
{\def\Element%
{3053}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} object to the next object in the
      collection and return that object, and
      \Node%
{\def\Element%
{3054}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}findNext:\endSeq{}\endNode{} objectName, which will cause the
      \Node%
{\def\Element%
{3055}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} object to search forward into the
      collection until it finds an object that is the same as
      objectName.\endPar{}\endNode{}\Node%
{\def\Element%
{3056}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} The usage of indexes can make some code work more smoothly.
      For example, as we noted in our discussion of
      \Node%
{\def\Element%
{3057}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{}s, the \Node%
{\def\Element%
{3058}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{}
      can be used to orchestrate the repetitive processing of a
      \Node%
{\def\Element%
{3059}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} object in the following way:\endPar{}\endNode{}\Node%
{\def\Element%
{3060}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}id aCollection;
id \Entity{lt}Index\Entity{gt} index;
aCollection = [List create: [self getZone]];
index =  [aCollection begin: [self getZone]];5

while( (anObject=[index next]) != nil )
\{
  //write code that does something to anObject
\}\endPar{}\endNode{}\Node%
{\def\Element%
{3061}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} This code will cycle through the
      \Node%
{\def\Element%
{3062}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{}. Because the
      \Node%
{\def\Element%
{3063}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} object remembers its position in
      the \Node%
{\def\Element%
{3064}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{}, the processing is efficient in
      the sense that the \Node%
{\def\Element%
{3065}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}next\endSeq{}\endNode{} command causes just
      one step to be taken. This is a sharp contrast with the usage of
      collections methods like \Node%
{\def\Element%
{3066}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}[aCollection atOffset:
      i]\endSeq{}\endNode{}, which cause the \Node%
{\def\Element%
{3067}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} to
      begin at the beginning and count up to the
      \Node%
{\def\Element%
{3068}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}i\endSeq{}\endNode{}th object.
    \endPar{}\endNode{}\Node%
{\def\Element%
{3069}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Perhaps the most significant advantage of indices is that
      they can be used manage collections.  If items are removed from
      a collection by its \Node%
{\def\Element%
{3070}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} object, then
      the \Node%
{\def\Element%
{3071}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} object is automatically kept up
      to date. On the other hand, if items are removed directly by
      collections methods, such as \Node%
{\def\Element%
{3072}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}[aCollection remove:
      thisObject]\endSeq{}\endNode{}, then the indexes that had been previously
      created for that \Node%
{\def\Element%
{3073}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} will be damaged and
      they must be dropped and recreated.  On the other hand, if an
      \Node%
{\def\Element%
{3074}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} is positioned on the desired
      member, and then the index is told to remove that object, then
      the change will be made in the collection and the index will
      automatically be adjusted.\endPar{}\endNode{}\Node%
{\def\Element%
{3075}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In order to make an index remove objects correctly, the
      fundamental problem is to correctly position the index within
      the collection. To make an index object reposition itself at the
      beginning of the collection, the command \Node%
{\def\Element%
{3076}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}[index setLoc:
      Start]\endSeq{}\endNode{} can be used. \Node%
{\def\Element%
{3077}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{}
      objects can be manually positioned with methods like
      \Node%
{\def\Element%
{3078}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}[index findNext: targetObject]\endSeq{}\endNode{} or
      \Node%
{\def\Element%
{3079}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}[setOffset: i]\endSeq{}\endNode{}. These will, respectively,
      move to the next object which, according to the comparison
      function, matches the target object, or move the index to the
      \Node%
{\def\Element%
{3080}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}i\endSeq{}\endNode{}th object in the collection. Once the index
      is positioned, then the object can be removed with
      \Node%
{\def\Element%
{3081}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}[index remove]\endSeq{}\endNode{}.
    \endPar{}\endNode{}\Node%
{\def\Element%
{3082}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The Swarm \Node%
{\def\Element%
{3083}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{} class creates
      \Node%
{\def\Element%
{3084}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} objects that have more
      functionality than the other classes.  The
      \Node%
{\def\Element%
{3085}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Index\endSeq{}\endNode{} of a \Node%
{\def\Element%
{3086}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}List\endSeq{}\endNode{}
      class collection can be used to insert objects as well as delete
      them.  For example, \Node%
{\def\Element%
{3087}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}[index addAfter:
      newObject]\endSeq{}\endNode{} can set a new object into a collection
      after the object currently under the index.  The addition of
      objects by the index is not allowed in Swarm
      \Node%
{\def\Element%
{3088}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Array\endSeq{}\endNode{}s or \Node%
{\def\Element%
{3089}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Map\endSeq{}\endNode{}s
      because of the internal structure of those classes.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.04.CHAPTER}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{3091}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 15. Using the Random Library\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{3091}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 15. Using the Random Library\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Chapter 15. \Seq%
{}\Node%
{\def\Element%
{3091}\def\ProcessingMode%
{component-title-mode}}Using the Random Library\endNode{}\endSeq{}\def\HeadingText{%
Chapter 15. Using the Random Library}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{3091}}\endNode{}\Node%
{\def\Element%
{3092}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The creation of random numbers is a surprisingly complicated
    affair.  It is also vital to the success of a simulation
    exercise. Sooner or later you will want to simulate some real-life
    stochastic phenomenon which occurs in a manner resembling an
    identifiable statistical distribution, for example (to take the
    canonical simulation example) the time intervals between customers
    arriving to join a queue in front of a bank teller. Or perhaps you
    just want to add some controlled unpredictability to the behavior
    of your agents.  One of the strengths of Swarm, as a simulation
    framework, is that it includes a number of methods for the
    creation of streams of random numbers that meet exacting
    standards.
  \endPar{}\endNode{}\Node%
{\def\Element%
{3093}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Before we step in to the details of the Swarm random library,
    there is one point that needs to be made.  There is no such thing
    as a random number, at least as far as a computer is concerned.
    Every number a computer creates comes from a formula.  The
    challenge is to find a formula that makes the numbers sufficiently
    unpredictable that we can proceed as if they are random numbers
    that satisfy statistical requirements, like statistical
    independence of successive draws.  This means that the device puts
    out numbers so that, even knowing all previous values, one is not
    able to predict the next number to come out without looking inside
    the program to steal the algorithm that is generating the
    numbers. The procedures we describe here might are more correctly
    be called pseudo-random number generators.  With that point being
    clear, we often refer to them as random number generators.
    \endPar{}\endNode{}\Node%
{\def\Element%
{3094}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In his section of the Swarm User Guide, we provide a survey of
    the basics of using the Swarm Random Library. A detailed technical
    manual has been prepared and it is included as an appendix to this
    guide. It goes into considerably greater depth on the technical
    issues that arise in generating random numbers.\endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-BUILT.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}15.1. \Node%
{\def\Element%
{3096}\def\ProcessingMode%
{xref-title-mode}}Built-in Random Number Distributions\endNode{}\def\HeadingText{%
15.1. Built-in Random Number Distributions}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3096}}\endNode{}\Node%
{\def\Element%
{3097}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{3100}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{3103}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Since not all users want to become experts in random (well,
      pseudo-random) numbers, we will start with the easy alternative.
      In the Swarm kernel--the code that executes at the beginning of
      any swarm program--there are three objects that can give useful
      random number streams.  These objects are initialized and
      structured according to built-in assumptions that reflect the
      state-of-the-art in the creation of random number streams.  The
      first two supply integers at random, the last one supplies
      numbers on a continuum.\endPar{}\endNode{}\Node%
{\def\Element%
{3104}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The three built-in random number distributions are:

      \Node%
{\def\Element%
{3105}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3106}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3107}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{3108}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}uniformUnsRand\endSeq{}\endNode{} This object will
	    draw a positive integer at random within a user specified
	    interval.  To get a random integer between 3 and 47, this
	    command will work:
	    \Node%
{\def\Element%
{3109}\def\ProcessingMode%
{listitem-content-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}	      myUnsigned = [uniformUnsRand getUnsignedWithMin: 3 withMax: 47];
	    \endPar{}\endNode{}
	    The object \Node%
{\def\Element%
{3110}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}uniformUnsRand\endSeq{}\endNode{} is an
	    instance of the Swarm class
	    \Node%
{\def\Element%
{3111}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}UniformUnsignedDist\endSeq{}\endNode{}.  Readers can
	    consult the documentation for a full explanation of all
	    available options.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3112}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3113}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{3114}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}uniformIntRand\endSeq{}\endNode{} This object will
	    draw an ingeger at random from an interval that may
	    include negative or positive numbers.  A usage example
	    would be:\endSeq{}\endNode{}\endPar{}\Node%
{\def\Element%
{3115}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}	    myInteger = [uniformIntRand getUnsignedWithMin: -44 withMax: 47];
	  \endPar{}\endNode{}\Node%
{\def\Element%
{3116}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}	    This object is an instance of the Swarm
	    \Node%
{\def\Element%
{3117}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}UniformIntegerDist\endSeq{}\endNode{}, which is fully
	    documented in the Swarm documentation.\endPar{}\endNode{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3118}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3119}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{3120}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}uniformDblRand\endSeq{}\endNode{} This object will
	    draw a real number from a user-specified interval. Unlike
	    the previous two, this distribution is not restricted to
	    integers.  If a random number from the interval [1,5] is
	    needed, this command will work:\endSeq{}\endNode{}\endPar{}\Node%
{\def\Element%
{3121}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}	    myDouble   = [uniformDblRand getDoubleWithMin: 1 withMax: 5];
	  \endPar{}\endNode{}\Node%
{\def\Element%
{3122}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}	    This object is an instance of the Swarm
	    \Node%
{\def\Element%
{3123}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}UniformDoubleDist\endSeq{}\endNode{}.
	  \endPar{}\endNode{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}

      These are global objects that can be used in any file that is
      part of a Swarm program.\endPar{}\endNode{}\Node%
{\def\Element%
{3124}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      When a Swarm program starts, it initializes these random number
      creators.  \Node%
{\def\Element%
{3125}}\Seq%
{\def\fPosture%
{italic}}They will deliver the same stream of
	numbers every time the program is run\endSeq{}\endNode{} unless the user
      adds the "vary seed" parameter when the program is run.  This
      parameter is \Node%
{\def\Element%
{3126}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}-s\endSeq{}\endNode{} and is added on the command
      line.  For a full list of possible options, type the name of the
      application followed by \Node%
{\def\Element%
{3127}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}--help\endSeq{}\endNode{}.
    \endPar{}\endNode{}\Node%
{\def\Element%
{3128}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      These built-in random distribution objects use another built-in
      Swarm object that is called "randomGenerator".  The object
      "randomGenerator" feeds input into each distribution.  The
      meaning of the term "random generator" is explored in the next
      sections.
    \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.04-OVERVIEW.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}15.2. \Node%
{\def\Element%
{3130}\def\ProcessingMode%
{xref-title-mode}}Overview of the Random Library\endNode{}\def\HeadingText{%
15.2. Overview of the Random Library}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3130}}\endNode{}\Node%
{\def\Element%
{3131}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Suppose you want to draw random numbers from a Normal
      Distribution with a mean of 33 and variance of 10.  There is no
      "normal distribution object" created automatically in the Swarm
      kernel, you have to create that in your code.  In order to
      explain how this is done, it is important to understand the
      two-step nature of the process of creating random numbers from a
      distribution.
    \endPar{}\endNode{}\Node%
{\def\Element%
{3132}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Mathematically speaking, numbers are created as draws from a
      particular distribution through a two-step process.  First, one
      or more numbers on a given interval are drawn.  If one is
      creating a continuous distribution, the interval is usually
      [0,1).  Then using various formulae from the field of
      statistics, a draw from a particular distribution is created
      that depends on the draw(s) in the first step. This two-step
      process is documented in the literature on simulation. (A very
      readable and complete treatment is found in Averill
      M. Law and W.David Kelton, Simulation Modeling and Analysis, New
      York: McGraw Hill.)
    \endPar{}\endNode{}\Node%
{\def\Element%
{3133}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The first stage in the process uses an object called a
      \Node%
{\def\Element%
{3134}}\Seq%
{\def\fPosture%
{italic}}random number generator\endSeq{}\endNode{}.  A random number
      generator is a component that can generate unpredictable numbers
      within some interval that are "equally likely" to occur.  There
      have been many kinds of procedures proposed for creating numbers
      that appear to be random.  Swarm includes a great many of these.
      The default random generator, the one that Swarm uses to
      generate its built-in random number objects, is MT19337.  The
      generator has a period close to 219937 (1 x 106001), so there is
      no danger of running a simulation long enough for the generator
      to repeat itself. At one microsecond per call, it would take
      about 3.2 x 105987 years to exhaust this generator. For
      comparison, the age of the Universe is `only' 2 x 1010 years!
      This generator can be asked either for a real number (a variable
      of type double) between [0,1) or for an integer, which will be
      uniformly distributed on the range [0,4294967295] = [0,232-1].
    \endPar{}\endNode{}\Node%
{\def\Element%
{3135}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In the second stage, the output from the random number
      generator is used to create a random variate that meets the
      specificiations of a particular distribution.  Of course, some
      are done more easily than others.  If one needs a draw from a
      Uniform distribution, then the output of the random number
      generator itself can be used.  On the other hand, some
      distributions require complicated transformations in order to
      create numbers that appear as if they were generated from the
      distribution.  For many common statistical distributions, the
      code to transform the uniformly distributed random numbers into
      other distributions are provided in the Swarm library.  While
      there are some distributions that are not currently supported,
      they can typically be constructed by users with the existing
      distributions as building blocks.
    \endPar{}\endNode{}\Node%
{\def\Element%
{3136}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The Swarm Random library can be divided into two parts,
      which parallel the two-stage process we have described.  There
      are\endPar{}\endNode{}\Node%
{\def\Element%
{3137}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      \Node%
{\def\Element%
{3138}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3139}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3140}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Generators\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3141}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3142}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Distributions\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}
    \endPar{}\endNode{}\Node%
{\def\Element%
{3143}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The following sections will dig into the details of these
      libraries, but first we will offer a couple of simple usage
      examples.\endPar{}\endNode{}\Node%
{\def\Element%
{3144}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Suppose one wants to draw numbers from a normal
      distribution.  The normal is a well known distribution and it
      has known statistical properties.  The object "randomGenerator"
      is created when the Swarm kernel is initialized, so it can be
      used in any distribution as the random number generator.  To
      create a \Node%
{\def\Element%
{3145}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}NormalDist\endSeq{}\endNode{} distribution object
      and connect it to the predefined \Node%
{\def\Element%
{3146}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MT19937\endSeq{}\endNode{}
      generator, this code will suffice:\endPar{}\endNode{}\Node%
{\def\Element%
{3147}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\#import \Entity{lt}random.h\Entity{gt}   //This includes the Swarm random library
      id \Entity{lt}NormalDist\Entity{gt} myNormalDist;  //This names your object and adopts the NormalDist protocol
      myNormalDist = [NormalDist create: [self getZone]
      setRandomGenerator: randomGenerator];\endPar{}\endNode{}\Node%
{\def\Element%
{3148}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      If for some reason, one does not want to use
      \Node%
{\def\Element%
{3149}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MT19937\endSeq{}\endNode{} as the generator, then one of the
      other Swarm generators can be selected and explicitly created.
      The next code example uses a generator called
      \Node%
{\def\Element%
{3150}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}RWC8gen\endSeq{}\endNode{}. This code will first create an
      instance of that generator, then it will create an object to
      draw normally distributed observations.\endPar{}\endNode{}\Node%
{\def\Element%
{3151}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   
      int mySeed = 123776;
      id myGenerator;  
      id \Entity{lt}NormalDist\Entity{gt} myNormalDist;  
      myGenerator = [RWC8gen create: [self getZone]
      setStateFromSeed: mySeed];
      
      myNormalDist = [NormalDist create: [self getZone]
      setRandomGenerator: myGenerator];
    \endPar{}\endNode{}\Node%
{\def\Element%
{3152}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The random library is designed in a highly versatile way.
      Each generator must have a "seed" value, a starting place from
      which to spin out the random numbers.  As long as one leaves the
      seed at the same value, then the stream of random numbers will
      be replicated each time the program is run.  If one does not
      want to specify a seed, then that chore can be left up to Swarm,
      which will insert a seed on behalf of the user.  The way to
      create a generator that uses the system default value for the
      seed is shown here:\endPar{}\endNode{}\Node%
{\def\Element%
{3153}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}myGenerator = [RWC8gen createWithDefaults: [self getZone]];\endPar{}\endNode{}\Node%
{\def\Element%
{3154}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Another example of the versatility of the Swarm random
      library is in the design of the distribution classes themselves.
      We have already seen examples in which random numbers are drawn
      according to user specified requirements.  In the case of the
      Normal distribution, one can draw from a distribution with a
      mean of 0 and variance of 1.3 with this command:\endPar{}\endNode{}\Node%
{\def\Element%
{3155}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}      double sample;
      sample = [myNormalDist getSampleWithMean: 0.0 withVariance: 1.3];
    \endPar{}\endNode{}\Node%
{\def\Element%
{3156}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If one expects to want many draws from a distribution with
      that same set of parameters, then the distribution object can be
      told to set those values as the defaults. After the default
      values of the mean and variance are set, then values retrieved
      from that distribution object can be retrieved with the simpler
      method \Node%
{\def\Element%
{3157}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getDoubleSample\endSeq{}\endNode{}.  For
      example:\endPar{}\endNode{}\Node%
{\def\Element%
{3158}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}      [myNormalDist setMean: 0.0 setVariance: 1.3];
      sample = [myNormalDist getDoubleSample];
    \endPar{}\endNode{}\Node%
{\def\Element%
{3159}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Of course, each distribution will have its own parameters
      and particular methods for setting them.  These parameters can
      be reset at any time.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}15.3. \Node%
{\def\Element%
{3161}\def\ProcessingMode%
{xref-title-mode}}The Random Number Generators\endNode{}\def\HeadingText{%
15.3. The Random Number Generators}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3161}}\endNode{}\Node%
{\def\Element%
{3162}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{3165}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Recall that computers can't create real random numbers, just
      streams of numbers that appear random to the outside observer.
      As a rule of thumb, users are well advised to choose a well
      tested generator which has a long period, which is the number of
      draws that can be made before the sequence repeats.  We also
      want a generator that runs fast and uses little memory. (These
      wishes are of course in conflict with each other, so choice
      involves compromise.) And the generator should perform
      `acceptably' in a statistical sense. Readers who wish to pursue
      what this might mean are referred to the \Node%
{\def\Element%
{3166}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.BIBLIOGRAPHY}}bibliography\endLink{}\endNode{}. \endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN-USE.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}15.3.1. \Node%
{\def\Element%
{3168}\def\ProcessingMode%
{xref-title-mode}}How to use the default random generator\endNode{}\def\HeadingText{%
15.3.1. How to use the default random generator}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3168}}\endNode{}\Node%
{\def\Element%
{3169}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}    Suppose you want to draw some random numbers with the default
    random generator.  When a swarm program runs, it creates a
    globally available object called randomGenerator that can be used
    in any part of the program to draw random numbers.\endPar{}\endNode{}\Node%
{\def\Element%
{3170}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}	If you want to draw unsigned integers, try this:\endPar{}\endNode{}\Node%
{\def\Element%
{3171}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}unsigned int myUnsigned;
myUnsigned = [randomGenerator getUnsignedSample];\endPar{}\endNode{}\Node%
{\def\Element%
{3172}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      The values returned will be uniformly distributed in the range 
      [0,4294967295] = [0,2\Node%
{\def\Element%
{3173}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}-1].\endPar{}\endNode{}\Node%
{\def\Element%
{3174}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      Or, if you need floating-point values instead, you can say\endPar{}\endNode{}\Node%
{\def\Element%
{3175}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}      
      double myDouble;
      myDouble = [randomGenerator getDoubleSample];
      
    \endPar{}\endNode{}\Node%
{\def\Element%
{3176}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      The returned values will be uniformly distributed in the range [0.0,1.0), 
      i.e. they may be equal to 0.0 but never 1.0.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN-LIST.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}15.3.2. \Node%
{\def\Element%
{3178}\def\ProcessingMode%
{xref-title-mode}}A list of generators in Swarm\endNode{}\def\HeadingText{%
15.3.2. A list of generators in Swarm}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3178}}\endNode{}\Node%
{\def\Element%
{3179}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The default generator used in Swarm is
      \Node%
{\def\Element%
{3180}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MT19337\endSeq{}\endNode{}, but there are a number of others
      that are provided to suit the needs of experimentation and
      replication of previous studies.  These generators have been
      subjected to various statistical tests, and the results of these
      tests are described in \Node%
{\def\Element%
{3181}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE.SECT1}}Advanced
      Usage Guide\endLink{}\endNode{}.\endPar{}\endNode{}\Node%
{\def\Element%
{3182}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The current generators in
    Swarm are:

    \Node%
{\def\Element%
{3183}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3184}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3185}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}ACGgen: Additive Congruential Generator\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3186}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3187}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}C2LCGXgen: A short component based generator. This is considered a high quality generator\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3188}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3189}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}C2MRG3gen:  Combined Multiple Recursive Generator\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3190}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3191}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}C2TAUSUS\Node%
{\def\Element%
{3192}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fPosture%
{italic}}x\endSeq{}\endNode{}gen: A Family of Combined Trausworthe generators\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3193}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3194}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}C3MWCgen: Combined Multiply With Carry Generator\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3195}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3196}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}C4LCGXgen: Combined random generator using 4 (PMM)LGC generators\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3197}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3198}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}LCG\Node%
{\def\Element%
{3199}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fPosture%
{italic}}x\endSeq{}\endNode{}gen: Family of Linear Congruential Generators\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3200}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3201}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}MRG\Node%
{\def\Element%
{3202}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fPosture%
{italic}}x\endSeq{}\endNode{}gen: Family of Multiple Recrusive (LCG) Generators\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3203}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3204}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}MT19937gen: 'Mersenne Twister' Twisted GFSR generator. The Swarm default\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3205}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3206}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}MWC\Node%
{\def\Element%
{3207}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fPosture%
{italic}}x\endSeq{}\endNode{}gen: Family of Multiply-With Carry generators  \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3208}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3209}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}PMMLCG\Node%
{\def\Element%
{3210}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fPosture%
{italic}}x\endSeq{}\endNode{}gen: Family of Prime Modulus Multiplicative Linear Congruential Generators\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3211}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3212}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}PSWBgen: Subract-With-Borrow Congruential Generator with prime modulus\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3213}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3214}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}RWC2gen: 2-lag Recursion With Carry generator  \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3215}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3216}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}RWC8gen: Multiply With Carry generator\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3217}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3218}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}SCG: Subtractive Congruential Generator \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3219}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3220}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}SWB\Node%
{\def\Element%
{3221}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fPosture%
{italic}}x\endSeq{}\endNode{}gen: Family of Subtract-With-Borrow Congruential Generators   \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3222}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3223}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}TGFSRgen: Twisted GFSR generator\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3224}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3225}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}TT403gen: A single long generator recommended for use\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3226}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3227}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}TT775gen: A single long generator recommended for use\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3228}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3229}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}TT800gen: A single long generator recommended for use\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}

    \endPar{}\endNode{}\Node%
{\def\Element%
{3230}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}	All the Swarm generators except two conform to the `SimpleRandomGenerator'
	protocol. The two `split' generators that do not, C2LCGX and C4LCGX,
	are described in the Generator Usage Guide.
      \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-GEN-SEED.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}15.3.3. \Node%
{\def\Element%
{3232}\def\ProcessingMode%
{xref-title-mode}}A note on starting seeds\endNode{}\def\HeadingText{%
15.3.3. A note on starting seeds}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3232}}\endNode{}\Node%
{\def\Element%
{3233}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}	Whenever a random generator is created, its state has to be
	initialized.  It uses a "seed", a positive integer, as its
	starting place. To make life easy for the user, the Swarm
	generators can be initialized to a predictable and repeatable
	state. Every time you initialize a given generator with a
	particular seed, you should get the same sequence of numbers
	from it.\endPar{}\endNode{}\Node%
{\def\Element%
{3234}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}	You create and initialize a generator with a specific seed this way:\endPar{}\endNode{}\Node%
{\def\Element%
{3235}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}	

	\#import <random.h>
	id <SimpleRandomGenerator> myGenerator;
	unsigned int mySeed;
	mySeed = 123776;
	myGenerator = [RWC8gen create: [self getZone]
			setStateFromSeed: mySeed];
	
      \endPar{}\endNode{}\Node%
{\def\Element%
{3236}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If it is necessary to set or reset the seed after the
	generator has bene created, it can be done with the
	\Node%
{\def\Element%
{3237}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}setStateFromSeed:\endSeq{}\endNode{} method:\endPar{}\endNode{}\Node%
{\def\Element%
{3238}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}	
	  mySeed = 4532657;
	[randomGenerator setStateFromSeed: mySeed];
	
      \endPar{}\endNode{}\Node%
{\def\Element%
{3239}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}	You may do this any time during a simulation, not just at the
	start.\endPar{}\endNode{}\Node%
{\def\Element%
{3240}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}	If you start your simulation with the command line option -s,
	which is short for --varyseed, then the seed will be chosen at
	random on the basis of the system clock.  If you do not add
	that command line option, your simultion \Node%
{\def\Element%
{3241}}\Seq%
{\def\fPosture%
{italic}}will use
	the exact same stream of random numbers\endSeq{}\endNode{} every time
	you run it.  This makes replication easy. \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}15.4. \Node%
{\def\Element%
{3243}\def\ProcessingMode%
{xref-title-mode}}The Distributions in Swarm\endNode{}\def\HeadingText{%
15.4. The Distributions in Swarm}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3243}}\endNode{}\Node%
{\def\Element%
{3244}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{3247}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}All distributions are created through the two-step process
      outlined above.  First one needs a random number generator.  Then
      one initializes the distribution, optionally setting its parameters
      at the time of creation. \endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST-CLASS.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}15.4.1. \Node%
{\def\Element%
{3249}\def\ProcessingMode%
{xref-title-mode}}Classes that adopt the ProbabilityDistribution Protocol\endNode{}\def\HeadingText{%
15.4.1. Classes that adopt the ProbabilityDistribution Protocol}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3249}}\endNode{}\Node%
{\def\Element%
{3250}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The distributions currently offered in the Swarm library are \endPar{}\endNode{}\Node%
{\def\Element%
{3251}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3252}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3253}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}BernoulliDist: Bernoulli distributions describes the number of "successes" in a fixed number of trials \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3254}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3255}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}ExponentialDist: Exponential distribution    \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3256}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3257}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}GammaDist: Gamma distribution          \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3258}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3259}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}LogNormalDist: log-Normal distibution      \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3260}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3261}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}NormalDist:  Normal distribution         \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3262}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3263}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}RandomBitDist:  Random Bit Distribution: returns YES or NO with equal likelihood      \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3264}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3265}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}UniformDoubleDist:  Uniform continuous distribution on a range  \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3266}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3267}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}UniformIntegerDist:  Equally likely integers in a range \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3268}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3269}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}UniformUnsignedDist: Equally likely integers in a positive range\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST-MATCH.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}15.4.2. \Node%
{\def\Element%
{3271}\def\ProcessingMode%
{xref-title-mode}}Matching generator and distribution objects\endNode{}\def\HeadingText{%
15.4.2. Matching generator and distribution objects}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3271}}\endNode{}\Node%
{\def\Element%
{3272}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      Each distribution object must have a generator associated with
      it.  You may create a new generator for each distribution.  Or, you
      may connect multiple distribution objects to one generator, so that
      they end up drawing output from the generator in an interleaved
      fashion.  (This is what has been done with the predefined
      distributions.)\endPar{}\endNode{}\Node%
{\def\Element%
{3273}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}There is a method called createWithDefaults that can be uses
      to streamline the creation process.  Here is a usage
      example:\endPar{}\endNode{}\Node%
{\def\Element%
{3274}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}	myNormalDist = [NormalDist createWithDefaults: [self getZone]];\endPar{}\endNode{}\Node%
{\def\Element%
{3275}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If you create distribution objects using the
      \Node%
{\def\Element%
{3276}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createWithDefaults\endSeq{}\endNode{} method \Node%
{\def\Element%
{3277}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT2.DISTRIB-USAGE}}Distribution
      Usage Guide\endLink{}\endNode{}, each distribution object is assigned its
      own, newly created, private random generator. Each distribution
      class uses a different class of default random generator, just
      to keep things as statistically independent as possible.\endPar{}\endNode{}\Node%
{\def\Element%
{3278}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}      You can assign a seed for the private generator with code like
      this:\endPar{}\endNode{}\Node%
{\def\Element%
{3279}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}      
      [[myNormalDist getGenerator] setStateFromSeed: 9874321];
      
    \endPar{}\endNode{}\Node%
{\def\Element%
{3280}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The usage of createWithDefaults is not without its dangers,
      however.  If createWithDefaults is used to create two
      distributions of the same type, say two NormalDistributions,
      then (obviously) then each will have the same kind of private
      generator created for it.  And, unless the simulation is
      started with the --varyseed option, then both private generators
      will start with the same seed and the two distributions will
      generate identical numbers.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-DIST-SETTING.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}15.4.3. \Node%
{\def\Element%
{3282}\def\ProcessingMode%
{xref-title-mode}}Setting numerical parameters of distribution objects\endNode{}\def\HeadingText{%
15.4.3. Setting numerical parameters of distribution objects}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3282}}\endNode{}\Node%
{\def\Element%
{3283}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} 
      Each distribution has its own set of key parameters. You may deal with 
      these parameters in three different ways: \endPar{}\endNode{}\Node%
{\def\Element%
{3284}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3285}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}1. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3286}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Assign "default parameter values" when the distribution object is created
	  For example:
	  \Node%
{\def\Element%
{3287}\def\ProcessingMode%
{listitem-content-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}	    
	    \#import <random.h>
	    id <NormalDist> myNormalDist;
	    double sample;

	    myNormalDist = [NormalDist create: [self getZone]
	    setGenerator: randomGenerator];
	    [myNormalDist setMean: 0.0 setVariance: 2.1];
	    sample = [myNormalDist getDoubleSample];
	    
	  \endPar{}\endNode{}
	\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3288}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}2. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3289}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Specify parameters when random numbers are
      drawn. These values do not override or change the defaults that were
      set when the distribution was created.
	  \Node%
{\def\Element%
{3290}\def\ProcessingMode%
{listitem-content-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}	    
	    \#import <random.h>
	    id <NormalDist> myNormalDist;
	    double sample;

	    myNormalDist = [NormalDist create: [self getZone]
	    setGenerator: randomGenerator];
	    sample = [myNormalDist getSampleWithMean: 0.0 withVariance: 1.3];
	    
	  \endPar{}\endNode{}
	\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3291}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}3. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3292}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Re-set the parameters anytime.  For example,
	  \Node%
{\def\Element%
{3293}\def\ProcessingMode%
{listitem-content-mode}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}	    
	    [myNormalDist setMean: 0.0 setVariance: 2.1];
	    sample = [myNormalDist getDoubleSample];	// from N[0.0,2.1]
	    
	  \endPar{}\endNode{}
	  \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3294}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}For a more detailed description of the methods available from
      distribution objects, see the \Node%
{\def\Element%
{3295}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT2.DISTRIB-USAGE}}Distribution
	Usage Guide\endLink{}\endNode{}.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.04-RAND-OTHER.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}15.5. \Node%
{\def\Element%
{3297}\def\ProcessingMode%
{xref-title-mode}}How to Create Other Random Number Distributions\endNode{}\def\HeadingText{%
15.5. How to Create Other Random Number Distributions}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3297}}\endNode{}\Node%
{\def\Element%
{3298}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Suppose one wants to draw numbers according to a
      distribution that is not offered in Swarm.  For example, the
      Beta distribution is a distribution that has two parameters.
      The Beta distribution can take on almost any unimodal shape,
      ranging from uniform, to highly skewed to the left or right (see
      Law and Kelton, p. 166).  The Beta distribution can be produced
      by taking two draws from a particular Gamma distribution and
      transforming them.  For example, one can first create the
      \Node%
{\def\Element%
{3299}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}gammaDist1\endSeq{}\endNode{} and then put it to use:\endPar{}\endNode{}\Node%
{\def\Element%
{3300}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}- initializeRNGs
\{
  [randomGenerator setStateFromSeed: 34733];
  gammaDist1= [GammaDist  create: self  setGenerator: randomGenerator setAlpha: 2 setBeta: 1];
  return self;
\}

-(double) getBetaVariateAlpha1: (double) alpha1 Alpha2: (double) alpha2
\{
   double y1, y2;
   y1=[gammaDist1 getSampleWithAlpha: alpha1  withBeta: 1];
   y2=[gammaDist1 getSampleWithAlpha: alpha2 withBeta: 1];
   return y1/(y1+y2);
\}\endPar{}\endNode{}\Node%
{\def\Element%
{3301}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}With these methods defined, then the code must simply
      execute the \Node%
{\def\Element%
{3302}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}initializeRNGs\endSeq{}\endNode{} and then grab a
      Beta variate by specifying the two parameters, alpha1 and
      alpha2:
    \endPar{}\endNode{}\Node%
{\def\Element%
{3303}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}id gammaDist1;
double aDrawFromBeta;
[self initializeRNGs];
aDrawFromBeta = [self getBetaVariateAlpha1: .8  Alpha2: 2 ];\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.05.CHAPTER}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{3305}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 16. Serialization\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{3305}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Chapter 16. Serialization\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Chapter 16. \Seq%
{}\Node%
{\def\Element%
{3305}\def\ProcessingMode%
{component-title-mode}}Serialization\endNode{}\endSeq{}\def\HeadingText{%
Chapter 16. Serialization}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{3305}}\endNode{}\Node%
{\def\Element%
{3306}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{3308}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The term \Node%
{\def\Element%
{3309}}\Seq%
{\def\fPosture%
{italic}}serialization\endSeq{}\endNode{} refers to the
    ability to save more than one related object to either persistent data
    storage (such as a file) or to send an object over a network stream,
    such as TCP/IP.  When an object is saved to disk (or sent over a
    `wire') we record a reference to the saved object, so that the
    original object can be restored at a later date.  This reference is
    referred to as a `serial number', hence the term `serialization'.
  \endPar{}\endNode{}\Node%
{\def\Element%
{3310}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Swarm has two forms of support for serialization:

    \Node%
{\def\Label%
{SWARM.SGML.INDEXTERM.LISP}}\Seq%
{}\endSeq{}\endNode{}

    \Node%
{\def\Element%
{3313}}\Seq%
{}\endSeq{}\endNode{}

    \Node%
{\def\Element%
{3315}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3316}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3317}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{3318}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Lisp. \endSeq{}\endNode{}\Node%
{\def\Element%
{3319}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}          
            Lisp serialization reads and generates human readable
            text-file in Lisp format.  This form of serialization is
            well-suited to applications that require either a human
            generated text file to create object parameters (such as
            simulation parameter files), or require a human-readable
            output.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3320}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3321}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{3322}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}HDF5. \endSeq{}\endNode{}\Node%
{\def\Element%
{3323}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{3324}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}HDF5\endSeq{}\Seq%
{} (http://hdf.ncsa.uiuc.edu/HDF5/)\endSeq{}\endSeq{}\endNode{} is high
            density binary data storage format created by \Node%
{\def\Element%
{3325}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}NSCA\endSeq{}\Seq%
{} (http://www.ncsa.uiuc.edu/)\endSeq{}\endSeq{}\endNode{}.  HDF5
            serialization is well-suited to applications that involve
            reading and/or saving large data sets.  It is a
            database-oriented format which a number of third-party
            tools (such as the \Node%
{\def\Element%
{3326}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}\Node%
{\def\Element%
{3327}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}R\endSeq{}\Seq%
{} (http://www.ci.tuwien.ac.at/R/)\endSeq{}\endSeq{}\endNode{}\endSeq{}\endNode{}
            statistical package which is a freely-available clone of
            \Node%
{\def\Element%
{3328}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}\Node%
{\def\Element%
{3329}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}SPlus\endSeq{}\Seq%
{} (http://www.mathsoft.com/splus/)\endSeq{}\endSeq{}\endNode{}\endSeq{}\endNode{})
            can read.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.05-SIM-PARAMS.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}16.1. \Node%
{\def\Element%
{3331}\def\ProcessingMode%
{xref-title-mode}}Using the \Node%
{\def\Element%
{3332}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{12.96\p@}}LispArchiver\endSeq{}\endNode{} to manage
      simulation parameters\endNode{}\def\HeadingText{%
16.1. Using the LispArchiver to manage
      simulation parameters}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3331}}\endNode{}\Node%
{\def\Element%
{3333}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{3336}}\DisplayGroup%
{\def\StartIndent%
{69.6\p@}\def\StartIndentFactor%
{0}\def\fFamName{Arial}\def\fSize%
{9\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\DisplayGroup%
{}\Par%
{\def\FirstLineStartIndent%
{-21.6\p@}\def\FirstLineStartIndentFactor%
{0}}\LineField%
{\def\FieldWidth%
{21.6\p@}\def\FieldWidthFactor%
{0}}\insertExternalGraphic%
{\def\EntitySystemId%
{figs/caution.eps}\def\NotationSystemId%
{}\def\EscapementDirection%
{false}\def\PositionPointX%
{0\p@}\def\PositionPointXFactor%
{0}\def\PositionPointY%
{0\p@}\def\PositionPointYFactor%
{0}}\endLineField{}Earlier versions of Swarm used the protocols
        \Node%
{\def\Element%
{3338}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{6.75\p@}}ObjectSaver\endSeq{}\endNode{} and
        \Node%
{\def\Element%
{3339}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{6.75\p@}}ObjectLoader\endSeq{}\endNode{} to read/write object state to disk
        using an ad-hoc file format.  These protocols only partially
        implemented the saving of certain types and the continued use of these
        protocols is now officially deprecated and may go away in future
        releases.\endPar{}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.05-SIM-PARAMS-STD.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}16.1.1. \Node%
{\def\Element%
{3341}\def\ProcessingMode%
{xref-title-mode}}Using the Standard \Node%
{\def\Element%
{3342}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}lispAppArchiver\endSeq{}\endNode{}\endNode{}\def\HeadingText{%
16.1.1. Using the Standard lispAppArchiver}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3341}}\endNode{}\Node%
{\def\Element%
{3343}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{3348}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Every Swarm application comes with a singleton
        \Node%
{\def\Element%
{3349}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}1\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{3350}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}1. \endLineField{}A singleton class is a class that is designed to have
            only one global instance per application\endPar{}\endNode{}}\endSeq{}\endNode{}
        instance variable for reading object data formatted in Lisp.
        This instance is called \Node%
{\def\Element%
{3351}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}lispAppArchiver\endSeq{}\endNode{}.
        Like the \Node%
{\def\Element%
{3352}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}probeLibrary\endSeq{}\endNode{} and
        \Node%
{\def\Element%
{3353}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}arguments\endSeq{}\endNode{} instances, it is global to your
        entire application.  This instance expects to find a file
        called
        \Node%
{\def\Element%
{3354}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}\Node%
{\def\Element%
{3355}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}appName\endSeq{}\endNode{}.scm\endSeq{}\endNode{}
        \Node%
{\def\Element%
{3356}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}2\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{3357}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}2. \endLineField{}\Node%
{\def\Element%
{3358}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{6.75\p@}}.scm\endSeq{}\endNode{} is the standard
        suffix for Scheme (a dialect of Lisp) files\endPar{}\endNode{}}\endSeq{}\endNode{}:
        , in either the current datapath for the application
        (\Node%
{\def\Element%
{3359}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}          \Node%
{\def\Element%
{3360}}\Seq%
{}            SWARMHOME\endSeq{}\endNode{}/share/swarm/\Node%
{\def\Element%
{3361}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}appName\endSeq{}\endNode{}
        \endSeq{}\endNode{}) or in the local directory.  Using this variable
        obviates the need for hand creation of
        \Node%
{\def\Element%
{3362}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}LispArchiver\endSeq{}\endNode{} instances.  It permits one
        datafile (which can contain as many keys to objects as is
        required), and imposes a naming convention for that datafile.
     \endPar{}\endNode{}\Node%
{\def\Element%
{3363}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}\def\Orientation%
{horizontal}}\Seq%
{}\Node%
{\def\Element%
{3364}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Example 16-1. \endSeq{}Using a standard \Node%
{\def\Element%
{3365}\def\ProcessingMode%
{formal-object-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}lispAppName\endSeq{}\endNode{} 
          instance\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{3364}}\endNode{}\Node%
{\def\Element%
{3366}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{3370}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The \Node%
{\def\Element%
{3371}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}heatbugs\endSeq{}\endNode{} application uses
          this global singleton class.  The datafile
          \Node%
{\def\Element%
{3372}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}heatbug.scm\endSeq{}\endNode{} looks like this:\endPar{}\endNode{}\Node%
{\def\Element%
{3373}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}(list
 (cons 'batchSwarm
       (make-instance 'HeatbugBatchSwarm
                      \#:loggingFrequency 1
                      \#:experimentDuration 200))
 (cons 'modelSwarm
       (make-instance 'HeatbugModelSwarm
                      \#:numBugs 200
                      \#:minIdealTemp 10000
                      \#:maxIdealTemp 20000
                      \#:minOutputHeat 10000
                      \#:maxOutputHeat 20000 
                      \#:randomMoveProbability 0.0)))\endPar{}\endNode{}\Node%
{\def\Element%
{3374}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The Lisp file consists of two `keys' or `serial' numbers
          \Node%
{\def\Element%
{3375}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}batchSwarm\endSeq{}\endNode{} and
          \Node%
{\def\Element%
{3376}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}modelSwarm\endSeq{}\endNode{} for the parameters for two
          different objects.  These keys are completely at the
          discretion of the user to choose.  (Note also that the file
          syntax allows Lisp-style comments: a `;' colon followed by
          any text).\endPar{}\endNode{}\Node%
{\def\Element%
{3377}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This input file would correspond with the following
          interface files, for the
          \Node%
{\def\Element%
{3378}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugBatchSwarm\endSeq{}\endNode{} class we
          have \Node%
{\def\Element%
{3379}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugBatchSwarm.h\endSeq{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3380}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}@interface HeatbugBatchSwarm: Swarm
\{
  int loggingFrequency;	       		  // Frequency of fileI/O

  int experimentDuration;                 // When to Stop the Sim

  id displayActions;			  // schedule data structs
  id displaySchedule;
  id stopSchedule;

  HeatbugModelSwarm *heatbugModelSwarm;	  // the Swarm we're observing

                                          // The EZGraph will be used 
  id unhappyGraph;                        // in FileI/O mode rather 
                                          // than the usual Graphics 
                                          // mode...
\}
// omitting methods\endPar{}\endNode{}\Node%
{\def\Element%
{3381}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}For the \Node%
{\def\Element%
{3382}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm\endSeq{}\endNode{} class,
        \Node%
{\def\Element%
{3383}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm.h\endSeq{}\endNode{}:\endPar{}\endNode{}\Node%
{\def\Element%
{3384}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}@interface HeatbugModelSwarm: Swarm
\{
  int numBugs;					  // simulation parameters
  double evaporationRate;
  double diffuseConstant;
  int worldXSize, worldYSize;
  int minIdealTemp, maxIdealTemp;
  int minOutputHeat, maxOutputHeat;
  double randomMoveProbability;

  BOOL randomizeHeatbugUpdateOrder;
  id modelActions;				  // scheduling data structures
  id modelSchedule;

  id heatbugList;				  // list of all the heatbugs
  id <Grid2d> world;				  // objects representing
  HeatSpace *heat;				  // the world
\}
// omitting methods\endPar{}\endNode{}\Node%
{\def\Element%
{3385}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Note that for each instance variable name of the form
        \Node%
{\def\Element%
{3386}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}\#:ivarname somevalue\endSeq{}\endNode{} in the Lisp parameter
        file there exists a corresponding instance variable in the
        class header file. \Node%
{\def\Element%
{3387}}\Seq%
{\def\fPosture%
{italic}}However, not\endSeq{}\endNode{} all
        instance variables in the header file have corresponding
        entries in the Lisp parameter file.  This is because the other
        instance variables are either unimportant as parameters
        (i.e. they can be regenerated by other parameters), or they
        are instance variables that pertain to the running model
        itself (such as \Node%
{\def\Element%
{3388}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}modelSchedule\endSeq{}\endNode{}, which is a
        \Node%
{\def\Element%
{3389}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Schedule\endSeq{}\endNode{} instance).\endPar{}\endNode{}\Node%
{\def\Element%
{3390}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}To generate the objects with these corresponding
          parameters set in each object, you need the request the
          global \Node%
{\def\Element%
{3391}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}lispAppArchiver\endSeq{}\endNode{} archiver to
          `generate' an instance of the object using the appropriate
          `key'.  So here's an excerpt from
          \Node%
{\def\Element%
{3392}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}main.m\endSeq{}\endNode{}:\endPar{}\endNode{}\Node%
{\def\Element%
{3393}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}if (swarmGUIMode == 1)
  \{
      // Do GUI mode creation (omitted)
  \}
else
  // No graphics - make a batchmode swarm (using the key
  // `batchSwarm' from the default lispAppArchiver) and run it.
  if ((theTopLevelSwarm = [lispAppArchiver getWithZone: globalZone 
                                           key: "batchSwarm"]) == nil) 
    raiseEvent(InvalidOperation, 
               "Can't find the parameters to create batchSwarm");

[theTopLevelSwarm buildObjects];\endPar{}\endNode{}\Node%
{\def\Element%
{3394}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Note that you still pass the
          \Node%
{\def\Element%
{3395}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}globalZone\endSeq{}\endNode{} \Node%
{\def\Element%
{3396}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}Zone\endSeq{}\endNode{}
          instance to the \Node%
{\def\Element%
{3397}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getWithZone:key:\endSeq{}\endNode{}, as
          you would if you were using the standard
          \Node%
{\def\Element%
{3398}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}create:\endSeq{}\endNode{} functions.
          \endPar{}\endNode{}\Node%
{\def\Element%
{3399}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The key thing to realize here is that the
          \Node%
{\def\Element%
{3400}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}getWithZone:key:\endSeq{}\endNode{} call actually
          \Node%
{\def\Element%
{3401}}\Seq%
{\def\fPosture%
{italic}}instantiates\endSeq{}\endNode{} the object
          (i.e. automatically runs the
          \Node%
{\def\Element%
{3402}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createBegin\endSeq{}\endNode{}/\Node%
{\def\Element%
{3403}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createEnd\endSeq{}\endNode{}
          apparatus internally\Node%
{\def\Element%
{3404}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}3\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{3405}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}3. \endLineField{}Note that this is in
          contrast to the obsolete \Node%
{\def\Element%
{3406}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{6.75\p@}}ObjectLoader\endSeq{}\endNode{}
          method, which required the user to create the object and
          then make a call to an \Node%
{\def\Element%
{3407}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{6.75\p@}}ObjectLoader\endSeq{}\endNode{}
          instance with the appropriate
          filename.\endPar{}\endNode{}}\endSeq{}\endNode{}). This has implications for the
          design of parameter files, since it means, for one thing,
          that all the appropriate instance variables necessary for a
          complete creation of an object \Node%
{\def\Element%
{3408}}\Seq%
{\def\fPosture%
{italic}}must\endSeq{}\endNode{} be
          present in the input Lisp file.  It is possible to have a
          subset of ivars, but that subset should be sufficient to
          completely specify the object, i.e. no CREATE time messages
          can be sent to the object once it has been created.  (Of
          course you can still send SETTING or USING messages to
          instance once it has been created).
      \endPar{}\endNode{}\Node%
{\def\Element%
{3409}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The \Node%
{\def\Element%
{3410}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugModelSwarm\endSeq{}\endNode{} is created
        in a similar way, from the \Node%
{\def\Element%
{3411}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildObjects\endSeq{}\endNode{}
        method in \Node%
{\def\Element%
{3412}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}HeatbugBatchSwarm.m\endSeq{}\endNode{}:\endPar{}\endNode{}\Node%
{\def\Element%
{3413}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}} 
// Create the model inside us - no longer create `Zone's explicitly.
// The Zone is now created implicitly through the call to create the
// `Swarm' inside `self'.

// But since we don't have any graphics, we load the object from the
// global `lispAppArchiver' instance which is created automatically
// from the file called `heatbugs.scm'

// `modelSwarm' is the key in `heatbugs.scm' which contains the
// instance variables for the HeatbugModelSwarm class, such as
// numBugs etc.

if ((heatbugModelSwarm = [lispAppArchiver getWithZone: self 
                                          key: "modelSwarm"]) == nil)
  raiseEvent(InvalidOperation, 
             "Can't find the parameters to create modelSwarm");

// Now, let the model swarm build its objects.
[heatbugModelSwarm buildObjects];\endPar{}\endNode{}\Node%
{\def\Element%
{3414}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Note that \Node%
{\def\Element%
{3415}}\Seq%
{\def\fPosture%
{italic}}after\endSeq{}\endNode{} the creation of the
        \Node%
{\def\Element%
{3416}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}heatbugModelSwarm\endSeq{}\endNode{} instance, it responds
        in the normal way to valid methods, such as
        \Node%
{\def\Element%
{3417}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildObjects\endSeq{}\endNode{}.\endPar{}\endNode{}\endPar{}\endSeq{}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\KeepWithPrevious%
{1}\def\Orientation%
{horizontal}}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.USER3.05-SIM-PARAMS-CUSTOM.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}16.1.2. \Node%
{\def\Element%
{3419}\def\ProcessingMode%
{xref-title-mode}}Using Custom \Node%
{\def\Element%
{3420}\def\ProcessingMode%
{xref-title-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{10.8\p@}}LispArchiver\endSeq{}\endNode{} Instances\endNode{}\def\HeadingText{%
16.1.2. Using Custom LispArchiver Instances}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3419}}\endNode{}\Node%
{\def\Element%
{3421}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{3426}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This section addreses those situations that require
      custom creation of multiple data files or alternate data
      filenames.\endPar{}\endNode{}\Node%
{\def\Element%
{3427}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}\def\Orientation%
{horizontal}}\Seq%
{}\Node%
{\def\Element%
{3432}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Example 16-2. \endSeq{}Creating a Lisp parameter file with an alternate name\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{3428}}\Seq%
{}\endSeq{}\endNode{}\Node%
{\def\Element%
{3432}}\endNode{}\Node%
{\def\Element%
{3433}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Here is a sample Lisp input parameter for the
          \Node%
{\def\Element%
{3434}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Mousetrap\endSeq{}\endNode{} simulation,
          \Node%
{\def\Element%
{3435}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}batch.scm\endSeq{}\endNode{}. 
        \endPar{}\endNode{}\Node%
{\def\Element%
{3436}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}(list
 (cons 'batchSwarm
       (make-instance 'MousetrapBatchSwarm  ; parameters for the batchSwarm
                      \#:loggingFrequency 1))
 (cons 'modelSwarm
       (make-instance 'MousetrapModelSwarm  ; parameters for the modelSwarm
                      \#:gridSize 40
                      \#:triggerLikelihood 1.0
                      \#:numberOutputTriggers 4
                      \#:maxTriggerDistance 4
                      \#:maxTriggerTime 16
                      \#:trapDensity 1.0)))\endPar{}\endNode{}\Node%
{\def\Element%
{3437}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The Lisp file consists of `keys' or `serial' numbers
          \Node%
{\def\Element%
{3438}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}batchSwarm\endSeq{}\endNode{} and
          \Node%
{\def\Element%
{3439}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}modelSwarm\endSeq{}\endNode{} identical to
          \Node%
{\def\Element%
{3440}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}heatbugs\endSeq{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3441}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This Lisp input file has variables listed the following
          interface files (not shown)
          \Node%
{\def\Element%
{3442}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MousetrapBatchSwarm.h\endSeq{}\endNode{} and
          \Node%
{\def\Element%
{3443}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MousetrapModelSwarm.h\endSeq{}\endNode{}, for the
          \Node%
{\def\Element%
{3444}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MousetrapBatchSwarm\endSeq{}\endNode{} and
          \Node%
{\def\Element%
{3445}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MousetrapModelSwarm\endSeq{}\endNode{} classes.\endPar{}\endNode{}\Node%
{\def\Element%
{3446}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The only difference with the previous example, is that we
          \Node%
{\def\Element%
{3447}}\Seq%
{\def\fPosture%
{italic}}explicitly\endSeq{}\endNode{} create an instance of the
          \Node%
{\def\Element%
{3448}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}LispArchiver\endSeq{}\endNode{} with the named file, and
          then ask the archiver to `generate' an instance of the
          object using the appropriate `key' as per the previous
          example.  So here's the relevant excerpt from
          \Node%
{\def\Element%
{3449}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}main.m\endSeq{}\endNode{}:\endPar{}\endNode{}\Node%
{\def\Element%
{3450}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}// create an instance of the LispArchiver to retrieve the file
// set the path to `batch.scm'
id archiver =  [LispArchiver create: globalZone setPath: "batch.scm"];

// retrieve the object from the archiver, if it can't be found
// just raise an event; note that the call to the
// archiver will actually *instantiate* the object if the
// parameters are found in the Lisp file
if ((theTopLevelSwarm = 
      [archiver getWithZone: globalZone key: "batchSwarm"]) == nil) 
  raiseEvent(InvalidOperation, 
              "Can't find archiver file or appropriate key");
[archiver drop];\endPar{}\endNode{}\Node%
{\def\Element%
{3451}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The \Node%
{\def\Element%
{3452}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MousetrapModelSwarm\endSeq{}\endNode{} is created
        in a similar way, from the \Node%
{\def\Element%
{3453}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}buildObjects\endSeq{}\endNode{}
        method in \Node%
{\def\Element%
{3454}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}MousetrapBatchSwarm.m\endSeq{}\endNode{}:\endPar{}\endNode{}\Node%
{\def\Element%
{3455}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}}  // create the instance to read the file
  archiver =  [LispArchiver create: self setPath: "batch.scm"];

  // * `modelSwarm' is the key for the instance of the MousetrapModelSwarm
  //   with parameter values for the model instance variables: gridSize
  //   triggerLikelihood, numberOutputTriggers, maxTriggerDistance, 
  //   maxTriggerTime, trapDensity  

  // if we can't find the right key from the LispArchiver, raise an event
  if ((mousetrapModelSwarm = 
       [archiver getWithZone: self key: "modelSwarm"]) == nil)
    raiseEvent(InvalidOperation, 
               "Can't find archiver file or appropriate key");

  // don't need the archiver instance anymore
  [archiver drop];\endPar{}\endNode{}\Node%
{\def\Element%
{3456}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Note that when you have called the archiver
        instance to instantiate all the objects of interest, you have
        no need of the archiver instance and you can safely
        \Node%
{\def\Element%
{3457}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}drop\endSeq{}\endNode{} it.
        \endPar{}\endNode{}\Node%
{\def\Element%
{3458}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Note also that, although the only difference from the
        previous example, is the name of the file does not conform to
        the
        \Node%
{\def\Element%
{3459}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}\Node%
{\def\Element%
{3460}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}appName\endSeq{}\endNode{}.scm\endSeq{}\endNode{}
        convention, but in principle the two keys could have been in
        different files, in which case in would have not been possible
        to use the global \Node%
{\def\Element%
{3461}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}lispAppArchiver\endSeq{}\endNode{} instance.
        \endPar{}\endNode{}\endPar{}\endSeq{}\insertRule%
{\def\LineThickness%
{2\p@}\def\DisplayAlignment%
{center}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\KeepWithPrevious%
{1}\def\Orientation%
{horizontal}}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\endSeq{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.TECH.APPENDIX}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{3463}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Appendix A. Swarm Tools\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{3463}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Appendix A. Swarm Tools\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Appendix A. \Seq%
{}\Node%
{\def\Element%
{3463}\def\ProcessingMode%
{component-title-mode}}Swarm Tools\endNode{}\endSeq{}\def\HeadingText{%
Appendix A. Swarm Tools}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{3463}}\endNode{}\Node%
{\def\Label%
{SWARM.USER.TECH-RESOURCES.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}A.1. \Node%
{\def\Element%
{3465}\def\ProcessingMode%
{xref-title-mode}}Web Resources for Object-Oriented Languages\endNode{}\def\HeadingText{%
A.1. Web Resources for Object-Oriented Languages}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3465}}\endNode{}\Node%
{\def\Element%
{3466}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The main technical skill currently \Node%
{\def\Element%
{3467}}\Seq%
{}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}1\endSeq{}\PageFootnote%
{}{\Node%
{\def\Element%
{3468}}\Par%
{\def\fSize%
{9\p@}\def\LineSpacing%
{11.7\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{16\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-16\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\LineField%
{\def\FieldWidth%
{16\p@}\def\FieldWidthFactor%
{0}}1. \endLineField{}As we
        continue extend Swarm's multilanguage features, further
        language bindings may become available.\endPar{}\endNode{}}\endSeq{}\endNode{}
      
      required of a Swarm user is the ability to write in at least one
      of following object oriented languages: Java or Objective
      C. Other recommended skills include the ability to use tools
      such as \Node%
{\def\Element%
{3469}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}gdb\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{3470}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}emacs\endSeq{}\endNode{}.  For the record, if you know C
      and have some form of experience in either C++ or Smalltalk,
      then learning Objective C should take no more than a day or
      so.\endPar{}\endNode{}\Node%
{\def\Element%
{3471}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Here are some Objective C resources:\endPar{}\endNode{}\Node%
{\def\Element%
{3472}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3473}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3474}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}          
        \Node%
{\def\Element%
{3475}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}Objective
               C references\endSeq{}\Seq%
{} (http://www.swarm.org/resources-objc.html)\endSeq{}\endSeq{}\endNode{} List of Objective C references on
               the Web. Includes a 10 minute overview to Objective C
               that is most of what you need to know about Objective
               C.  Originally contributed by Nelson Minar\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3476}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3477}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}
        \Node%
{\def\Element%
{3478}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}          \Node%
{\def\Element%
{3479}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fPosture%
{italic}}Object-Oriented Programming and the Objective-C
          Language\endSeq{}\endNode{}\endSeq{}\Seq%
{} (http://developer.apple.com/techpubs/macosxserver/ObjectiveC/index.html)\endSeq{}\endSeq{}\endNode{} An excellent (online!) book on
          Objective C. This is for generic NeXT Objective C: Swarm
          uses GNU Objective C in addition to our defobj extensions
          (see defobj library in : \Node%
{\def\Element%
{3480}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}\Node%
{\def\Element%
{3481}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fPosture%
{italic}}Reference Guide to Swarm\endSeq{}\endNode{}\endSeq{}\Seq%
{} (http://www.santafe.edu/projects/swarm/swarmdocs/refbook/refbook.html)\endSeq{}\endSeq{}\endNode{})
        \endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3482}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Unlike Objective C, the market is literally bursting at the
    seams with books on Java, so we merely point out a few relevant
    sites:
    \endPar{}\endNode{}\Node%
{\def\Element%
{3483}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3484}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3485}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{3486}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}GNU and the
        Java language\endSeq{}\Seq%
{} (http://www.gnu.org/software/java/java.html)\endSeq{}\endSeq{}\endNode{} is a page run by the \Node%
{\def\Element%
{3487}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}Free Software Foundation\endSeq{}\Seq%
{} (http://www.gnu.org)\endSeq{}\endSeq{}\endNode{} that
        details many free/open source Java tools, most notably the
        reimplementation of Sun's JDK: \Node%
{\def\Element%
{3488}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}\Node%
{\def\Element%
{3489}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}Kaffe\endSeq{}\endNode{}\endSeq{}\Seq%
{} (http://www.kaffe.org)\endSeq{}\endSeq{}\endNode{}.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3490}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3491}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{3492}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}JavaSoft\endSeq{}\Seq%
{} (http://java.sun.com)\endSeq{}\endSeq{}\endNode{}, Sun
        Microsystems main Java page, and a new users section: \Node%
{\def\Element%
{3493}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}New-to-Java Programming Center\endSeq{}\Seq%
{} (http://developer.java.sun.com/developer/onlineTraining/new2java/)\endSeq{}\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.TECH.SGML.SECT1.DEBUG}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}A.2. \Node%
{\def\Element%
{3495}\def\ProcessingMode%
{xref-title-mode}}Debugging Tips for Swarm\endNode{}\def\HeadingText{%
A.2. Debugging Tips for Swarm}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3495}}\endNode{}\Node%
{\def\Element%
{3496}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Debugging software is an art, perhaps even more so than
    writing the software itself. All software we write will have
    bugs: it is important to know how to diagnose a bug when it
    happens and how to write code defensively so you have less bugs
    in the first place.\endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.TECH-RESOURCES-BUGS-FINDING.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{12\p@}\def\LineSpacing%
{15.6\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{4}\def\sbNom%
{9\p@}\def\sbMin%
{9\p@}\def\sbMax%
{9\p@}\def\sbConditional%
{1}\def\saNom%
{6\p@}\def\saMin%
{6\p@}\def\saMax%
{6\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}A.2.1. \Node%
{\def\Element%
{3498}\def\ProcessingMode%
{xref-title-mode}}Finding bugs\endNode{}\def\HeadingText{%
A.2.1. Finding bugs}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3498}}\endNode{}\Node%
{\def\Element%
{3499}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Bugs come in two categories: those that crash your program
    and those that don't. Bugs that crash your program are friendlier
    because they're obvious.  Bugs that you don't notice are much more
    dangerous: one nagging question in every programmer's mind should
    be "is the program doing what I think it is doing?"\endPar{}\endNode{}\Node%
{\def\Element%
{3500}}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3501}}\Seq%
{\def\fWeight%
{bold}}gdb. \endSeq{}\endNode{}\Node%
{\def\Element%
{3502}}\Seq%
{}By far the most useful tool for finding bugs is a good
        debugger, a shell you can run a program under and set
        breakpoints, inspect the values of variables, etc. The best
        free debugger for Unix is probably gdb, available from the
        \Node%
{\def\Element%
{3503}}\Seq%
{}\Seq%
{}GNU ftp
        site\endSeq{}\Seq%
{} (ftp://prep.ai.mit.edu/pub/gnu/)\endSeq{}\endSeq{}\endNode{}. gdb seems unfriendly and confusing at first, but
        it is definitely worth your time to learn it.\endSeq{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3504}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The most important gdb commands are
      \Node%
{\def\Element%
{3505}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}help\endSeq{}\endNode{}: browse online help,
      \Node%
{\def\Element%
{3506}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}where\endSeq{}\endNode{}: show me a stack trace, where did we
      crash?, \Node%
{\def\Element%
{3507}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}list\endSeq{}\endNode{}: show me the source code where
      we are, \Node%
{\def\Element%
{3508}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}break\endSeq{}\endNode{}, set a breakpoint, and
      \Node%
{\def\Element%
{3509}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}print\endSeq{}\endNode{}: show me the value of of some
      expression. If your program is crashing on you, run it under
      gdb and look at the stack trace. If it looks to be buggy but
        you don't know where, start setting breakpoints and see when
      things go awry.\endPar{}\endNode{}\Node%
{\def\Element%
{3510}}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3511}}\Seq%
{\def\fWeight%
{bold}}gdb and Objective C. \endSeq{}\endNode{}\Node%
{\def\Element%
{3512}}\Seq%
{}Unfortunately, at this time gdb does not directly support
        Objective C.  There are \Node%
{\def\Element%
{3513}}\Seq%
{}\Seq%
{}some
          workarounds\endSeq{}\Seq%
{} (http://www.cons.org/cracauer/objc-hint-gdb.html)\endSeq{}\endSeq{}\endNode{} that make debugging Objective C programs
        possible. They are based on the knowledge that Objective C is
        little more than a glorified syntax for structs (objects) and
        strange function names (methods).\endSeq{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3514}}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3515}}\Seq%
{\def\fWeight%
{bold}}defobj: xprint(), xprintid(), xfprint(), xfprintid(),
        xexec(), and xfexec(). \endSeq{}\endNode{}\Node%
{\def\Element%
{3516}}\Seq%
{}Swarm also has a few functions defined that can be used to
        make debugging easier. In particular, the function
        xprint(object) prints out the class of an object, and
        xexec(object, "message") calls the message specified on the
        object. These can be invoked under gdb as \Node%
{\def\Element%
{3517}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}call
        xprint(aHeatbug)\endSeq{}\endNode{}.  Note that you can't pass
        arguments to a message, nor can you see the return
        value. There are also methods xfprint(collection) and
        xfexec(collection, "message") that print or exec foreach
        member of a collection.\endSeq{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3518}}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3519}}\Seq%
{\def\fWeight%
{bold}}gdb and Java. \endSeq{}\endNode{}\Node%
{\def\Element%
{3520}}\Seq%
{}Swarm models written in Java will ultimately use the
          Swarm libraries which are still written in Objective C.  The
          Java Native Interface (JNI) is the magic glue that binds
          these languages together.  Thus if the crash occurs is the
          user (Java) portion of the code then the user is advised to
          use the standard Java debugging tools
          \Node%
{\def\Element%
{3521}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}jdb\endSeq{}\endNode{} and the like.  (If a crash
          happens in the Java virtual machine (JVM), it should
          generally be clear from the error message that it is a
          Java-related problem).  gdb is only useful when the crash
          occurs inside the Swarm libraries (i.e. outside the user's
          Java code).  In this case you can invoke gdb in the
          following way:\endSeq{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3522}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}        \Node%
{\def\Element%
{3523}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3524}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{5.625\p@}}\$\endSeq{}\endNode{}\Node%
{\def\Element%
{3525}}\Seq%
{}JAVASWARMGDB=\endSeq{}\endNode{}\Node%
{\def\Element%
{3526}}\Seq%
{\def\fWeight%
{bold}}gdb\endSeq{}\endNode{} \Node%
{\def\Element%
{3527}}\Seq%
{\def\fWeight%
{bold}}javaswarm\endSeq{}\endNode{} Start\Node%
{\def\Element%
{3528}}\Seq%
{\def\fFamName{Courier-New}\def\fPosture%
{italic}}ModelName\endSeq{}\endNode{}\endPar{}\endNode{}
         From then on the preceeding information on the use of gdb in
         the Objective C context, continues to apply.
      \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.TECH-RESOURCES-BUGS-PREVENTING-OBJC.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}A.2.2. \Node%
{\def\Element%
{3530}\def\ProcessingMode%
{xref-title-mode}}Preventing Bugs: Objective C\endNode{}\def\HeadingText{%
A.2.2. Preventing Bugs: Objective C}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3530}}\endNode{}\Node%
{\def\Element%
{3531}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Defensive
      programming can help prevent a good number of bugs. When writing
      code, try to test it incrementally: make small changes whose
      effects you think you can predict and then test them. Don't
      outsmart yourself with cleverness: write code correctly first,
      then go in and hack it up if you need it to be more
      efficient. Put in sanity checks for conditions that shouldn't go
      wrong in normal usage, but might if you make a mistake.\endPar{}\endNode{}\Node%
{\def\Element%
{3532}}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3533}}\Seq%
{\def\fWeight%
{bold}}-Wall. \endSeq{}\endNode{}\Node%
{\def\Element%
{3534}}\Seq%
{}Swarm currently compiles all code with "gcc -Wall",
          which tells gcc to emit warnings for a lot of things that it
          wouldn't normally complain about.  Warnings are not
          (necessarily) errors - warnings will be generated for legal
          code if gcc thinks that what you're doing could easily be a
          mistake.  You might find this frustrating at first, but it
          helps catch a lot of common errors, including forgetting to
          include a prototype or forgetting to return a value from a
          function. Passing -Wall is good discipline.\endSeq{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3535}}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3536}}\Seq%
{\def\fWeight%
{bold}}nil\char95{}method. \endSeq{}\endNode{}\Node%
{\def\Element%
{3537}}\Seq%
{}Objects in Objective C are
          essentially pointers to structs. So what happens if you send
          an object to the pointer 0x0, "nil" in Objective C parlance?
          Unfortunately, most implementations of Objective C, including
          gcc, define methods to nil as having no effect. The code:
        \endSeq{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3538}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}aHeatbug = [Heatbug create: aZone]; 
aHeatbug = 0; // oops! bug.  
[aHeatbug setIdealTemperature: idealTemp];
      \endPar{}\endNode{}\Node%
{\def\Element%
{3539}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}will \Node%
{\def\Element%
{3540}}\Seq%
{\def\fPosture%
{italic}}not\endSeq{}\endNode{} generate any errors.\endPar{}\endNode{}\Node%
{\def\Element%
{3541}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The reason this is unfortunate is that it's a common bug
        to trash a pointer accidentally, set it to 0. It would be
        nice if your program then crashed when you tried to send a
        message to that mangled object: instead, the message send
        will fail silently and the program will continue to execute.
        This can make it hard to find bugs.\endPar{}\endNode{}\Node%
{\def\Element%
{3542}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}There are two ways to make messages sent to nil crash
        your program.  The simplest is to put a breakpoint on
        \Node%
{\def\Element%
{3543}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}nil\char95{}method\endSeq{}\endNode{} under gdb: nil\char95{}method is
        invoked every time a message is sent to nil. Alternately,
        you can make a copy of the libobjc runtime source and edit
        nil\char95{}method to do whatever you want. The source code in
        \Node%
{\def\Element%
{3544}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}src/defobj\endSeq{}\endNode{} contains a file
        \Node%
{\def\Element%
{3545}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}objc.patch\endSeq{}\endNode{} that patches the runtime from
        gcc 2.7.2.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.TECH-RESOURCES-BUGS-PREVENTING-JAVA.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}A.2.3. \Node%
{\def\Element%
{3547}\def\ProcessingMode%
{xref-title-mode}}Preventing Bugs: Java\endNode{}\def\HeadingText{%
A.2.3. Preventing Bugs: Java}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3547}}\endNode{}\Node%
{\def\Element%
{3548}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The good news for Java programmers is that since Java is a
        strongly typed language, many of the pitfalls that beset
        Objective C programmers, never materialize in the Java
        context.  Nevertheless the reader is cautioned to use as many
        of the standard defensive programming techniques as
        possible.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.TECH-EMACS.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}A.3. \Node%
{\def\Element%
{3550}\def\ProcessingMode%
{xref-title-mode}}Emacs and Swarm\endNode{}\def\HeadingText{%
A.3. Emacs and Swarm}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3550}}\endNode{}\Node%
{\def\Element%
{3551}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Emacs is the world's best editor, infinitely configurable
      and powerful and free. If you're not used to a Unix text editor
      and want to write programs, emacs is probably best to learn. The
      information here will show you how to set up emacs to use an
      Objective C or Java specific mode for editing source code and
      how to get emacs to colour your source code for you nicely.
      Emacs can also help you find compilation errors, run a debugger,
      and even act like a class browser. Documentation for those
      things are not here, see the Emacs documentation itself.\endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.TECH-EMACS-OBJC.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}A.3.1. \Node%
{\def\Element%
{3553}\def\ProcessingMode%
{xref-title-mode}}Objective C\endNode{}\def\HeadingText{%
A.3.1. Objective C}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3553}}\endNode{}\Node%
{\def\Element%
{3554}}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3555}}\Seq%
{\def\fWeight%
{bold}}objc-mode. \endSeq{}\endNode{}\Node%
{\def\Element%
{3556}}\Seq%
{}One of the best things about emacs is that one can load
        different "major modes" to edit types of files. Major modes making
        editing files easier by providing structure to your editing. In
        particular, there are programming language modes that do nice things
        like indentation for you.\endSeq{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3557}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Starting with emacs-19.30, the default C mode is
      \Node%
{\def\Element%
{3558}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}cc-mode.el\endSeq{}\endNode{}, a nice rewrite of the original
      c-mode.el. Luckily for us, \Node%
{\def\Element%
{3559}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}cc-mode.el\endSeq{}\endNode{}
      supports Objective C directly. The basic function to invoke it
      is \Node%
{\def\Element%
{3560}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}objc-mode\endSeq{}\endNode{}. The following bit of code in
      your .emacs will cause emacs to automatically enter objc-mode on
      all files that end in \Node%
{\def\Element%
{3561}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}.m\endSeq{}\endNode{} or
      \Node%
{\def\Element%
{3562}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}.h\endSeq{}\endNode{}:\endPar{}\endNode{}\Node%
{\def\Element%
{3563}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}(setq auto-mode-alist
(append '(("\char92{}\char92{}.h\$" . objc-mode)
("\char92{}\char92{}.m\$" . objc-mode))))\endPar{}\endNode{}\Node%
{\def\Element%
{3564}}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3565}}\Seq%
{\def\fWeight%
{bold}}Highlighting code. \endSeq{}\endNode{}\Node%
{\def\Element%
{3566}}\Seq%
{}Emacs running
      under X has the ability to colour your source code according to
      syntax. There are two packages to do this:
      \Node%
{\def\Element%
{3567}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}font-lock\endSeq{}\endNode{} and
      \Node%
{\def\Element%
{3568}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}hilit19\endSeq{}\endNode{}.\endSeq{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3569}}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3570}}\Seq%
{\def\fWeight%
{bold}}font-lock. \endSeq{}\endNode{}\Node%
{\def\Element%
{3571}}\Seq%
{}emacs-20 and later also has a font-lock mode for
          Objective-C that supports the method syntax unique to
          Objective-C.  We recommend the use of font-lock, over
          hilit19, now that the identification of Objective C syntax
          in emacs is better supported, as font-lock supports
          'lazy-fontification' (i.e. as you type fontification), a
          feature that hilit19 never offered.  See the manual provided
          with emacs for how to turn on this feature to highlight .h
          and .m files in 'objc-mode' automatically.\endSeq{}\endNode{}\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.TECH-EMACS-JAVA.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}A.3.2. \Node%
{\def\Element%
{3573}\def\ProcessingMode%
{xref-title-mode}}Java\endNode{}\def\HeadingText{%
A.3.2. Java}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3573}}\endNode{}\Node%
{\def\Element%
{3574}}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3575}}\Seq%
{\def\fWeight%
{bold}}\Node%
{\def\Element%
{3576}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}jde\endSeq{}\endNode{}. \endSeq{}\endNode{}\Node%
{\def\Element%
{3577}}\Seq%
{} The
          aforementioned \Node%
{\def\Element%
{3578}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}cc-mode.el\endSeq{}\endNode{} also supports
          Java directly. But in the Java case we can go one better,
          with the complete free/open source Integrated Development
          Environment (IDE) known as the Java Development Environment
          (\Node%
{\def\Element%
{3579}}\Seq%
{\def\fFamName{Arial}\def\fWeight%
{bold}}jde\endSeq{}\endNode{}).  It's available from the
          \Node%
{\def\Element%
{3580}}\Seq%
{}\Seq%
{}Sunsite\endSeq{}\Seq%
{} (http://sunsite.auc.dk/jde/)\endSeq{}\endSeq{}\endNode{} in
          Denmark\endSeq{}\endNode{}\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.SWARMOBJC.APPENDIX}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{3582}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Appendix B. Objective C - Swarm Style\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{3582}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Appendix B. Objective C - Swarm Style\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Appendix B. \Seq%
{}\Node%
{\def\Element%
{3582}\def\ProcessingMode%
{component-title-mode}}Objective C - Swarm Style\endNode{}\endSeq{}\def\HeadingText{%
Appendix B. Objective C - Swarm Style}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{3582}}\endNode{}\Node%
{\def\Element%
{3583}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The Swarm system provides a few extensions to the syntax/style
    of Objective-C.  This note describes those features which are
    important to know as a beginner and those which can be ignored.
    This is also peripherally relevant for Java programmers.\endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.SWARMOBJC-NONCONV.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}B.1. \Node%
{\def\Element%
{3585}\def\ProcessingMode%
{xref-title-mode}}Non-Conventional Techniques, And The Libraries In Which They're
      Used\endNode{}\def\HeadingText{%
B.1. Non-Conventional Techniques, And The Libraries In Which They're
      Used}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3585}}\endNode{}\Node%
{\def\Element%
{3586}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}When building some of the internals of the Swarm system, we
      found that there was a need to add a certain amount of machinery
      to the conventional Objective C language. In particular, we
      found that the system used for object creation needed to be
      expanded. The main goal of this document is to explain very
      briefly what those changes are, and why the user need never know
      about them...\endPar{}\endNode{}\Node%
{\def\Element%
{3587}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Even within the Swarm libraries, only the most fundamental
      ones require the usage of some of the magic described
      below. Essentially, only Defobj, Collections and Activity use
      the features described below. Nevertheless, there are some minor
      conventions, which as a consequence, must be used throughout the
      code.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.SWARMOBJC-ZONES.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}B.2. \Node%
{\def\Element%
{3589}\def\ProcessingMode%
{xref-title-mode}}Zones\endNode{}\def\HeadingText{%
B.2. Zones}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3589}}\endNode{}\Node%
{\def\Label%
{SWARM.USER.SWARMOBJC-ZONES-PRINCIPLE.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}B.2.1. \Node%
{\def\Element%
{3591}\def\ProcessingMode%
{xref-title-mode}}Zones in Principle\endNode{}\def\HeadingText{%
B.2.1. Zones in Principle}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3591}}\endNode{}\Node%
{\def\Element%
{3592}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Perhaps the most visible change from normal Objective C is
        the use of Zones within which objects are allocated. We have
        requiered that objects be allocated within specific Zones for
        two main reasons:
        
    \Node%
{\def\Element%
{3593}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3594}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3595}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{3596}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Probing. \endSeq{}\endNode{}\Node%
{\def\Element%
{3597}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Zones will be
              used to facilitate the process of
              Probing.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3598}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3599}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{3600}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Garbage Collection. \endSeq{}\endNode{}\Node%
{\def\Element%
{3601}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}In later versions of Swarm, the Zones will be used
            to coordinate garbage collection.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3602}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3603}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{3604}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}Parallelism. \endSeq{}\endNode{}\Node%
{\def\Element%
{3605}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}In Swarm
                2.0 we hope to use the Zone system to facilitate the
                management of distributed memory.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}

      \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.SWARMOBJC-ZONES-PRACTICE.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}B.2.2. \Node%
{\def\Element%
{3607}\def\ProcessingMode%
{xref-title-mode}}Zones in Practice\endNode{}\def\HeadingText{%
B.2.2. Zones in Practice}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3607}}\endNode{}\Node%
{\def\Element%
{3608}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}As a beginning user, when required to provide a Zone, you
        can simply use the globalZone variable which is global and is
        already initialised to a valid zone. But, this is discouraged
        because the things in that Zone are expected to be resident
        throughout the entire execution of the program and can lead to
        inefficient use of memory. Also, you should always attempt to
        allocate memory from Zones rather than using malloc. And when
        allocating a temporary object that won't be needed past the
        current scope, a scratchZone is provided.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.SWARMOBJC-PHASES.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}B.3. \Node%
{\def\Element%
{3610}\def\ProcessingMode%
{xref-title-mode}}Create Phase\endNode{}\def\HeadingText{%
B.3. Create Phase}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3610}}\endNode{}\Node%
{\def\Label%
{SWARM.USER.SWARMOBJC-PHASES-PRINCIPLE.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{12\p@}\def\LineSpacing%
{15.6\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{4}\def\sbNom%
{9\p@}\def\sbMin%
{9\p@}\def\sbMax%
{9\p@}\def\sbConditional%
{1}\def\saNom%
{6\p@}\def\saMin%
{6\p@}\def\saMax%
{6\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}B.3.1. \Node%
{\def\Element%
{3612}\def\ProcessingMode%
{xref-title-mode}}The Create Phase in Principle\endNode{}\def\HeadingText{%
B.3.1. The Create Phase in Principle}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3612}}\endNode{}\Node%
{\def\Element%
{3613}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}One of the more surprising mechanisms used in Swarm is the
        Create Phase protocol. The idea behind the protocol is that
        when you create an object, you are not really getting the
        final object - only a "proto-object". This "proto-object" is
        then sent a sequence of "create phase" messages which are
        meant to provide hints to the system about the way in which
        the object is going to be used.\endPar{}\endNode{}\Node%
{\def\Element%
{3614}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}So, for example, when creating a List object you may declare
        that you will only access the list from either end, never from
        an arbitrary location.  By doing so you allow the "proto-object"
        to provide you with a tailored implementation which attempts to
        meet your specific usage patterns. This sort of approach is
        crucial for the performance-critical libraries in Swarm (such as
        the Activity library). Here is a schematic of what sometimes
        occurs in these libraries:\endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.PROBING.SWITCHEROO.FIGURE}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Node%
{\def\Element%
{3616}\def\ProcessingMode%
{formal-object-title-mode}}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}Figure B-1. \endSeq{}Schematic of proto-object creation\endPar{}\endNode{}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{3616}}\endNode{}\Node%
{\def\Element%
{3617}}\Par%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\insertExternalGraphic%
{\def\DisplayAlignment%
{center}\def\IsDisplay%
{1}\def\ScaleType%
{false}\def\ScaleX%
{0.6}\def\ScaleY%
{0.6}\def\EntitySystemId%
{<OSFILE>./figs/switcheroo.eps}\def\NotationSystemId%
{TIFF}}\endPar{}\endNode{}\endPar{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.SWARMOBJC-PHASES-PRACTICE.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}B.3.2. \Node%
{\def\Element%
{3619}\def\ProcessingMode%
{xref-title-mode}}The Create Phase in Practice\endNode{}\def\HeadingText{%
B.3.2. The Create Phase in Practice}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3619}}\endNode{}\Node%
{\def\Element%
{3620}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Since this form of object creation is still quite rare in
        the object oriented community, we do not expect the users to
        write code which actually implements this sort of
        technique. However, we do advise the users to try and split
        those messages which are supposed to be sent only once in the
        lifetime of an object (just after the object is created) from
        the ones that are sent multiple times.\endPar{}\endNode{}\Node%
{\def\Element%
{3621}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}For example, if your object has a variable which will never
        change and furthermore should be set at the very early stages of
        its lifetime (say, Color), then you should declare the message
        which sets this variable before the createEnd message: \endPar{}\endNode{}\Node%
{\def\Element%
{3622}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}-setColor: (int) aColor ; // createPhase message -createEnd ;
-(int) getColor ; // normal message
    \endPar{}\endNode{}\Node%
{\def\Element%
{3623}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The only other requirement is that whenever you create any
        object in Swarm, you should always
        \Node%
{\def\Element%
{3624}}\Seq%
{\def\fPosture%
{italic}}re-assign\endSeq{}\endNode{} the object, when createEnd is
        called.\endPar{}\endNode{}\Node%
{\def\Element%
{3625}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}anObject = [anObject createEnd] ;
    \endPar{}\endNode{}\Node%
{\def\Element%
{3626}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This is because certain proto-objects in the swarm library will
        not return themselves at createEnd time. In fact, they may
        return a completely different class of object, which happens to
        satisfy the needs of the user. We therefore suggest that even
        when createEnding your own classes you should stick to this
        standard creation format.\endPar{}\endNode{}\Node%
{\def\Element%
{3627}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In some classes, you will see that some "convenience
        methods" for object creation have been provided. These are
        basically parametrized constructors that the author of the
        class felt would be handy. However, the objects that result
        from the use of these "convenience methods" should not differ
        in any way from an object created via a sequential set of
        separate methods called during the create phase (as long as
        each of the appropriate parameters are set). It is important
        to retain the "null constructor" for a couple of reasons: 1)
        it allows the interface for a class to *grow* without breaking
        legacy code and 2) it facilitates the use of development and
        design tools in handling objects. JavaBeans is one example
        where this particular constraint (the requirement of a null
        constructor) is in use and necessary, today.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.SWARMOBJC-LIBRARIES.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}B.4. \Node%
{\def\Element%
{3629}\def\ProcessingMode%
{xref-title-mode}}Collections and Defobj\endNode{}\def\HeadingText{%
B.4. Collections and Defobj}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3629}}\endNode{}\Node%
{\def\Element%
{3630}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Two last pieces of advice:
      
      \Node%
{\def\Element%
{3631}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3632}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}1. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3633}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}When using the Collections library, if you
          want to create your own versions of the collections, don't
          do it by subclassing the collections themselves.  Instead,
          create a different class of object which contains inside it,
          an instance of the appropriate class (this is called
          delegation in the OOP community). You should do this because
          the actual subclassing of objects which actively use the
          createPhase stuff (by actively I mean ones that don't return
          self on a createEnd), is not well
          supported.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3634}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}2. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3635}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Defobj is the most basic library in Swarm. It
          provides the foundation on which the system builds
          schedules, collections and swarmObjects. It is therefore
          quite involved and you should not feel disheartened if the
          concepts embodied within it seem unfamiliar, or if the code
          seems a bit cryptic.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}
      
    \endPar{}\endNode{}\Node%
{\def\Element%
{3636}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}You should now be ready to use Objective C in a more
      or less Swarm compliant way. Theoretically, all you need to do
      is follow these standards.  In particular, you should be able to
      code your simulations without needing to know anything else
      about the language extensions (you still need to learn about the
      libraries and tools provided by Swarm, but their interface is
      written in straight Objective C, so there should be no language
      barrier).\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{3638}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Appendix C. Random Library Appendix\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{3638}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Appendix C. Random Library Appendix\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Appendix C. \Seq%
{}\Node%
{\def\Element%
{3638}\def\ProcessingMode%
{component-title-mode}}Random Library Appendix\endNode{}\endSeq{}\def\HeadingText{%
Appendix C. Random Library Appendix}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{3638}}\endNode{}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT1.USAGE-BEGINNERS}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.1. \Node%
{\def\Element%
{3640}\def\ProcessingMode%
{xref-title-mode}}Supplemental comments on random number generators\endNode{}\def\HeadingText{%
C.1. Supplemental comments on random number generators}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3640}}\endNode{}\Node%
{\def\Element%
{3641}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Please consider some additional warnings about the usage of random number generators\endPar{}\endNode{}\Node%
{\def\Element%
{3642}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3643}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}1. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3644}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}          DO NOT use generators with bad statistical properties. See
           \Node%
{\def\Element%
{3645}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE.SECT1}}Advanced
          Usage Guide\endLink{}\endNode{} for a discussion of the generators
          implemented in this library.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3646}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}2. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3647}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}DO NOT use generators whose maximum cycle length is too
          short for the intended application; you don't want your
          generators to start repeating themselves. Be especially
          aware of this if you use the PMMLCGgen class of generator;
          these have good properties but a fairly short cycle. See
          \Node%
{\def\Element%
{3648}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE.SECT1}}Advanced
          Usage Guide\endLink{}\endNode{} to read more about how to select a
          generator.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3649}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}3. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3650}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}AVOID having generators in your simulation run
          in `lock-step', producing output that is statistically
          correlated. This may happen if you have several generators
          of the same class, all started with the same default
          seed.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3651}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}4. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3652}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Be aware that even the best generators can have
          unexpected correlations with particular implementations of
          some models. As a result, in some cases using a "better"
          random number generator can result in worse (less correct)
          model behavior than one could obtain when using a "bad"
          generator. If you suspect your model may have this kind of
          problem, you probably should re-run some experiments using a
          different underlying generator, to make sure the results are
          (statistically at least) the same. (For examples of this,
          see the references \Node%
{\def\Element%
{3653}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5099}}[\Seq%
{}Ferrenberg et al 1992\endSeq{}]\endLink{}\endNode{} and
          \Node%
{\def\Element%
{3654}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5309}}[\Seq%
{}Nature 1994\endSeq{}]\endLink{}\endNode{}.)\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT1.USAGE}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2. \Node%
{\def\Element%
{3656}\def\ProcessingMode%
{xref-title-mode}}Usage Guide\endNode{}\def\HeadingText{%
C.2. Usage Guide}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3656}}\endNode{}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT2.GENERATOR-USAGE}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.1. \Node%
{\def\Element%
{3658}\def\ProcessingMode%
{xref-title-mode}}Usage Guide for Generators\endNode{}\def\HeadingText{%
C.2.1. Usage Guide for Generators}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3658}}\endNode{}\Node%
{\def\Element%
{3659}}\BOX%
{\def\BoxType%
{border}\def\LineThickness%
{1\p@}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{0\p@}\def\EndIndentFactor%
{0}\def\IsDisplay%
{1}}\DisplayGroup%
{\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Par%
{\def\fWeight%
{bold}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}A note on `simple' vs. `split' generators\endPar{}\Node%
{\def\Element%
{3660}}\endNode{}\Node%
{\def\Element%
{3661}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Most of the generators supplied are of the 'simple'
variety. Think of these as supplying a single, long stream of
pseudorandom numbers. The description in the introduction of how to
obtain generator output assumed a simple generator. \endPar{}\endNode{}\Node%
{\def\Element%
{3662}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}There are also two generators, C2LCGXgen and C4LCGXgen, which
are of the `split' variety. Think of them as consisting of a number of
virtual generators, each supplying an independent stream of numbers
which we can divide up into a number of segments of a given length. To
obtain output from such a generator, we need to specify what virtual
generator to draw from:

\Node%
{\def\Element%
{3663}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}  myUnsigned = [mySplitGenerator getUnsignedSample: virtualgen];\endPar{}\endNode{}

Read more about how to manage split generators below.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endBOX{}\endNode{}\Node%
{\def\Element%
{3664}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}I shall first discuss `simple' generators, and then discuss how
`split' generators differ from `simple' ones.  In the following text,
wherever I use \Node%
{\def\Element%
{3665}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}PSWBgen\endSeq{}\endNode{} as an example you may
substitute any other generator.\endPar{}\endNode{}\Node%
{\def\Element%
{3666}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Note: any name that starts with \Node%
{\def\Element%
{3667}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}my\endSeq{}\endNode{} is
meant to designate a variable of the appropriate type which you have 
defined in your own
program.\endPar{}\endNode{}\Node%
{\def\Element%
{3668}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Note: on defining variables that hold (pointers to) generators:
it is now a convention in the rest of Swarm that if you want to
specify what type of object a pointer should point to, you say:

\Node%
{\def\Element%
{3669}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}	id <protocolname> varname;
	varname = [classname create: aZone];\endPar{}\endNode{}

instead of 

\Node%
{\def\Element%
{3670}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}	classname *varname;
	varname = [classname create: aZone];\endPar{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3671}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Although it is usually the case that the \Node%
{\def\Element%
{3672}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}protocolname =
the classname\endSeq{}\endNode{}, in some cases it is not. And publishing the
protocols allows the programmers to keep unpublished what should
remain internal private class methods.\endPar{}\endNode{}\Node%
{\def\Element%
{3673}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The generators are different from other Swarm objects, in that
they all perform the same function; they are drop-in replacements for
each other.  The 'split' generators (\Node%
{\def\Element%
{3674}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}C2LCGXgen\endSeq{}\endNode{},
\Node%
{\def\Element%
{3675}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}C4LCGXgen\endSeq{}\endNode{}) all conform to the same protocol,
\Node%
{\def\Element%
{3676}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}\Entity{lt}SplitRandomGenerator\Entity{gt}\endSeq{}\endNode{}. The 'simple'
(non-split) generators all conform to the same protocol,
\Node%
{\def\Element%
{3677}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}\Entity{lt}SimpleRandomGenerator\Entity{gt}\endSeq{}\endNode{}.\endPar{}\endNode{}\Node%
{\def\Element%
{3678}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Thus, when defining generators in your own program, you should say

\Node%
{\def\Element%
{3679}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}	id <SimpleRandomGenerator> varname;
	varname = [classname create: aZone];\endPar{}\endNode{}

(Though see below for the different create methods available.)\endPar{}\endNode{}\Node%
{\def\Element%
{3680}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}For backward compatibility, protocols
\Node%
{\def\Element%
{3681}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}\Entity{lt}LCG1gen\Entity{gt}\endSeq{}\endNode{},
\Node%
{\def\Element%
{3682}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}\Entity{lt}TT800gen\Entity{gt}\endSeq{}\endNode{} etc. are still defined, \Node%
{\def\Element%
{3683}}\Seq%
{\def\fPosture%
{italic}}but
their use is deprecated and they may disappear later.\endSeq{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3684}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{12\p@}\def\LineSpacing%
{15.6\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{4}\def\sbNom%
{9\p@}\def\sbMin%
{9\p@}\def\sbMax%
{9\p@}\def\sbConditional%
{1}\def\saNom%
{6\p@}\def\saMin%
{6\p@}\def\saMax%
{6\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.1.1. \Node%
{\def\Element%
{3685}\def\ProcessingMode%
{xref-title-mode}}Simple generators\endNode{}\def\HeadingText{%
C.2.1.1. Simple generators}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3685}}\endNode{}\Node%
{\def\Element%
{3686}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}You create a generator in one of 3 ways:\endPar{}\endNode{}\Node%
{\def\Element%
{3687}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{10\p@}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{5}\def\sbNom%
{7.5\p@}\def\sbMin%
{7.5\p@}\def\sbMax%
{7.5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.1.1.1. \Node%
{\def\Element%
{3688}\def\ProcessingMode%
{xref-title-mode}}the lazy way\endNode{}\def\HeadingText{%
C.2.1.1.1. the lazy way}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3688}}\endNode{}\Node%
{\def\Element%
{3689}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3690}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   id <SimpleRandomGenerator> myGenerator;
   myGenerator = [ PSWBgen createWithDefaults: [self getZone] ];\endPar{}\endNode{}

This allocates the object and initializes it with STARTSEED, which
equals NEXTSEED if \Node%
{\def\Element%
{3691}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}--varyseed\endSeq{}\endNode{} was not specified, or
RANDOMSEED if it was. (These macros are defined in the file 
'randomdefs.h' in the source directory.)\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3692}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{10\p@}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{5}\def\sbNom%
{7.5\p@}\def\sbMin%
{7.5\p@}\def\sbMax%
{7.5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.1.1.2. \Node%
{\def\Element%
{3693}\def\ProcessingMode%
{xref-title-mode}}using a single seed value\endNode{}\def\HeadingText{%
C.2.1.1.2. using a single seed value}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3693}}\endNode{}\Node%
{\def\Element%
{3694}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3695}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   id <SimpleRandomGenerator> myGenerator;
   myGenerator = [ PSWBgen create: [self getZone] 
			setStateFromSeed: mySeed ];\endPar{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3696}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This allocates the object and initializes it with your seed value. If the 
object actually requires a vector of seed values to fill the state, this 
method generates the rest of the values needed using an inline PMMLCG 
generator.\endPar{}\endNode{}\Node%
{\def\Element%
{3697}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}You can find out later what seed value was used to initialize
the generator:

\Node%
{\def\Element%
{3698}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   myUnsigned = [ myGenerator getInitialSeed ];\endPar{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3699}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}And you can find out what the largest valid seed value is by
calling

\Node%
{\def\Element%
{3700}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   myUnsigned = [ myGenerator getMaxSeedValue ];\endPar{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3701}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}(In the current version of the library, the largest valid seed value
is 2\Node%
{\def\Element%
{3702}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}-1 for all the generators. The seed may not be 0.) \endPar{}\endNode{}\Node%
{\def\Element%
{3703}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}You may reset the generator's state at any time using this
method:

\Node%
{\def\Element%
{3704}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   [ myGenerator setStateFromSeed: mySeedValue ];\endPar{}\endNode{}

This will also reset to 0 the \Node%
{\def\Element%
{3705}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}currentCount\endSeq{}\endNode{} variable.\endPar{}\endNode{}\Node%
{\def\Element%
{3706}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Alternatively, you may use the new -reset method [myGenerator
reset], which resets the generator its state at startup, or its state
at the point when -setStateFromSeed(s) was last used. Counters are
zeroed.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3707}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{10\p@}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{5}\def\sbNom%
{7.5\p@}\def\sbMin%
{7.5\p@}\def\sbMax%
{7.5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.1.1.3. \Node%
{\def\Element%
{3708}\def\ProcessingMode%
{xref-title-mode}}using a vector of seed values\endNode{}\def\HeadingText{%
C.2.1.1.3. using a vector of seed values}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3708}}\endNode{}\Node%
{\def\Element%
{3709}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Assume we have defined a fixed array at compile time: 

\Node%
{\def\Element%
{3710}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}} unsigned  int mySeedVector [vectorLength];\endPar{}\endNode{}

Then we can do this:

\Node%
{\def\Element%
{3711}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   id <SimpleRandomGenerator> myGenerator;
   myGenerator = [ PSWBgen create: [self getZone]
			setStateFromSeeds: mySeedVector ];\endPar{}\endNode{}

You can find out how many seed values are required by asking

\Node%
{\def\Element%
{3712}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   myUnsigned = [ myGenerator lengthOfSeedVector ];\endPar{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3713}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}(Obviously, you must first successfully have created the object
to do this, for example using createWithDefaults! Or, see data in
\Node%
{\def\Element%
{3714}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.DATA}}Generator
Data Table\endLink{}\endNode{})\endPar{}\endNode{}\Node%
{\def\Element%
{3715}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}And we allocate the seed vector dynamically this way:

\Node%
{\def\Element%
{3716}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   unsigned int *mySeedVector;
   mySeedVector = [[self getZone] alloc: [ myGenerator lengthOfSeedVector]];\endPar{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3717}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}You can find out what vector of seed values was used to
initialize the object:

\Node%
{\def\Element%
{3718}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   unsigned int *myVector;
   myVector = [ myGenerator getInitialSeeds ];\endPar{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3719}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}And you can find out the largest seed values that are allowed
for the particular generator:

\Node%
{\def\Element%
{3720}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   unsigned int *myVectorToo;
   myVectorToo = [ myGenerator getMaxSeedValues ];\endPar{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3721}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}(These values vary from generator to generator, and they may not
be the same for all elements of the vector for a given
generator. Valid seeds never take the value 0.)\endPar{}\endNode{}\Node%
{\def\Element%
{3722}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}NOTE: in the above two calls, the variable myVector is set to
point to an array internal to the generator. If you want to preserve
the array's values outside the generator, you need to allocate space
in your program either statically or dynamically, and use a for-loop
to copy data from myVector[i] to myAllocatedVector[i].\endPar{}\endNode{}\Node%
{\def\Element%
{3723}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}You may reset the generator's state at any time by using the
method

\Node%
{\def\Element%
{3724}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   [ myGenerator setStateFromSeeds: (unsigned *) mySeedVector ];\endPar{}\endNode{}

This will also reset to 0 the currentCount variable.\endPar{}\endNode{}\Node%
{\def\Element%
{3725}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}NOTE: if you set a generator's state from a vector of seeds, the
call:

\Node%
{\def\Element%
{3726}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   myUnsignedValue = [ myGenerator getInitialSeed ];\endPar{}\endNode{}

will return a value of 0 (an invalid seed). On the other hand, if you
initialize the generator with a single seed value, the call

\Node%
{\def\Element%
{3727}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   mySeedVector = [ myGenerator getInitialSeeds ];\endPar{}\endNode{}

will return the seed vector that would produce identical output to what
you obtained using the single seed.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3728}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{10\p@}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{5}\def\sbNom%
{7.5\p@}\def\sbMin%
{7.5\p@}\def\sbMax%
{7.5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.1.1.4. \Node%
{\def\Element%
{3729}\def\ProcessingMode%
{xref-title-mode}}antithetic values\endNode{}\def\HeadingText{%
C.2.1.1.4. antithetic values}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3729}}\endNode{}\Node%
{\def\Element%
{3730}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}You can make the generator serve up antithetic values by
setting:

\Node%
{\def\Element%
{3731}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   [ myGenerator setAntithetic: YES ];\endPar{}\endNode{}

If thus set, this makes -getUnsignedSample return (unsignedMax-x) instead
of x, and the floating point methods return (1.0 - y) instead of y. The 
default for this parameter is that it is not set.\endPar{}\endNode{}\Node%
{\def\Element%
{3732}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}You can ascertain if this flag is set by calling

\Node%
{\def\Element%
{3733}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   myBooleanValue = [ myGenerator getAntithetic ];\endPar{}\endNode{}\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3734}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{10\p@}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{5}\def\sbNom%
{7.5\p@}\def\sbMin%
{7.5\p@}\def\sbMax%
{7.5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.1.1.5. \Node%
{\def\Element%
{3735}\def\ProcessingMode%
{xref-title-mode}}generator output\endNode{}\def\HeadingText{%
C.2.1.1.5. generator output}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3735}}\endNode{}\Node%
{\def\Element%
{3736}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}You obtain successive pseudorandom numbers from a generator by calling:

\Node%
{\def\Element%
{3737}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   myUnsignedValue = [ myGenerator getUnsignedSample ];\endPar{}\endNode{}

The largest value that may be returned can be found by asking

\Node%
{\def\Element%
{3738}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   myUnsignedValue = [ myGenerator getUnsignedMax ];\endPar{}\endNode{}

(The smallest value returned is always 0.)\endPar{}\endNode{}\Node%
{\def\Element%
{3739}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}If you would rather have floating point output in the range
[0.0,1.0), you call one of these:

\Node%
{\def\Element%
{3740}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   // Using 1 unsigned value to fill the mantissa:
   myFloatValue  = [ myGenerator getFloatSample ];
   myDoubleValue = [ myGenerator getThinDoubleSample ];\endPar{}\endNode{}

\Node%
{\def\Element%
{3741}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   // Using 2 unsigned values to fill the mantissa:
   myDoubleValue     = [ myGenerator getDoubleSample ];
   myLongDoubleValue = [ myGenerator getLongDoubleSample ];\endPar{}\endNode{}

NOTE that the last method is not portable, because the size of a long double
varies and hence the precision varies between architectures.\endPar{}\endNode{}\Node%
{\def\Element%
{3742}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Finally, you can obtain a count of how many variates have been
generated:

\Node%
{\def\Element%
{3743}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   myLongLongInt = [ myGenerator getCurrentCount ];\endPar{}\endNode{}

(currentCount is an unsigned long long int, which counts up to 2\Node%
{\def\Element%
{3744}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}64\endSeq{}\endNode{}.)\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3745}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{12\p@}\def\LineSpacing%
{15.6\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{4}\def\sbNom%
{9\p@}\def\sbMin%
{9\p@}\def\sbMax%
{9\p@}\def\sbConditional%
{1}\def\saNom%
{6\p@}\def\saMin%
{6\p@}\def\saMax%
{6\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.1.2. \Node%
{\def\Element%
{3746}\def\ProcessingMode%
{xref-title-mode}}Split generators\endNode{}\def\HeadingText{%
C.2.1.2. Split generators}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3746}}\endNode{}\Node%
{\def\Element%
{3747}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}A split generator is a generator for which we are able to split the
output stream into arbitrary non-overlapping segments, which we can 
access directly and easily. Such segments are statistically independent
streams of (pseudo)random numbers.\endPar{}\endNode{}\Node%
{\def\Element%
{3748}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}We configure a split generator as consisting of a number (A) of
"virtual generators", each of which has access to a number (2\Node%
{\def\Element%
{3749}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}v\endSeq{}\endNode{}) of
segments of length 2\Node%
{\def\Element%
{3750}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}w\endSeq{}\endNode{}. The parameters A,v,w are specified when the
generator is created. For example, for the C4LCGXgen generator, the
default creation values are A=128, v=31, w=41. The only limitation is
that A*(2\Node%
{\def\Element%
{3751}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}v\endSeq{}\endNode{})*(2\Node%
{\def\Element%
{3752}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}w\endSeq{}\endNode{}) must not exceed the generator's cycle length, which
is 2\Node%
{\def\Element%
{3753}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}60\endSeq{}\endNode{} for C2LCGXgen and 2\Node%
{\def\Element%
{3754}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}120\endSeq{}\endNode{} for C4LCGXgen.\endPar{}\endNode{}\Node%
{\def\Element%
{3755}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}We specify the configuration (A,v,w) at create time this way:

\Node%
{\def\Element%
{3756}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   id <SplitRandomGenerator> myGenerator;
   myGenerator = [ C4LCGXgen create: [self getZone]
			setA: 64 setv: 20 setw: 76 
			setStateFromSeed: mySeedValue ];\endPar{}\endNode{}

\Node%
{\def\Element%
{3757}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   id <SplitRandomGenerator> myGenerator;
   myGenerator = [ C4LCGXgen create: [self getZone]
			setA: 32 setv: 25 setw: 60
			setStateFromSeeds: (unsigned *) mySeedVector ];\endPar{}\endNode{}

(In both cases, the only limitation is that A *
2\Node%
{\def\Element%
{3758}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}v\endSeq{}\endNode{} * 2\Node%
{\def\Element%
{3759}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}w\endSeq{}\endNode{} must be
less than the generator's period, 2\Node%
{\def\Element%
{3760}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}60\endSeq{}\endNode{} for
C2LCGX and 2\Node%
{\def\Element%
{3761}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}120\endSeq{}\endNode{} for C4LCGX.)\endPar{}\endNode{}\Node%
{\def\Element%
{3762}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}For obtaining output, we need to specify which of the A
'virtual' generators we want to draw from:

\Node%
{\def\Element%
{3763}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   myUnsignedValue   = [ myGenerator getUnsignedSample: 12 ];
   myFloatValue      = [ myGenerator getFloatSample: myVirtualGenerator ];
   myDoubleValue     = [ myGenerator getThinDoubleSample: someUnsignedValue ];
   myDoubleValue     = [ myGenerator getDoubleSample: 32 ];
   myLongDoubleValue = [ myGenerator getLongDoubleSample: 0 ];\endPar{}\endNode{}

Virtual generators are numbered from 0 to (A-1).\endPar{}\endNode{}\Node%
{\def\Element%
{3764}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Obtaining the current count of variates generated likewise:

\Node%
{\def\Element%
{3765}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   myLongLongInt = [ myGenerator getCurrentCount:   myVirtualGenerator ];
   myLongLongInt = [ myGenerator getCurrentSegment: myVirtualGenerator ];\endPar{}\endNode{}

The latter call indicates what segment number the specified virtual
generator is currently drawing numbers from.\endPar{}\endNode{}\Node%
{\def\Element%
{3766}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Other than these methods, the methods discussed above
under 'simple' generators are the same for 'split' generators.\endPar{}\endNode{}\Node%
{\def\Element%
{3767}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In *addition* to this, 'split' generators have the following
methods to manage the virtual generators:

\Node%
{\def\Element%
{3768}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   // Place all virtual generators at the start of the first segment:
   [ myGenerator initAll ];	// done automatically at creation\endPar{}\endNode{}

\Node%
{\def\Element%
{3769}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   // Place all virtual generators back to the start of the current segment:
   [ myGenerator restartAll ];\endPar{}\endNode{}

\Node%
{\def\Element%
{3770}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   // Place all virtual generators at the start of the next segment:
   [ myGenerator advanceAll ];\endPar{}\endNode{}

\Node%
{\def\Element%
{3771}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   // Place all virtual generators at the start of the indicated segment:
   [ myGenerator jumpAllToSegment: myLongLongIntValue ];\endPar{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3772}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}You may also address individual virtual generators:

\Node%
{\def\Element%
{3773}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   [ myGenerator initGenerator:    myVgen ];
   [ myGenerator restartGenerator: myVgen ];
   [ myGenerator advanceGenerator: myVgen ];
   [ myGenerator jumpGenerator:    myVgen    toSegment: myLongLongIntValue ];\endPar{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3774}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}InternalState methods common to simple and split generators:

\Node%
{\def\Element%
{3775}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   // Print (most of) the object's state data to a stream:
   [ myNormalDist describe: myStream ];\endPar{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3776}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The stream myStream may be created thus:
\Node%
{\def\Element%
{3777}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}id myStream = [ OutStream create: [self getZone] setFileStream: stdout ]; or
id myStream = [ OutStream create: [self getZone] setFileStream: stderr ];

   // Get the (class) name of the object:
   myString = [ myNormalDist getName ];

   // Get the object's 'magic number', used by putStateInto / setStateFrom:
   myUnsigned = [ myNormalDist getMagic ];\endPar{}\endNode{}\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3778}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{12\p@}\def\LineSpacing%
{15.6\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{4}\def\sbNom%
{9\p@}\def\sbMin%
{9\p@}\def\sbMax%
{9\p@}\def\sbConditional%
{1}\def\saNom%
{6\p@}\def\saMin%
{6\p@}\def\saMax%
{6\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.1.3. \Node%
{\def\Element%
{3779}\def\ProcessingMode%
{xref-title-mode}}Saving and Resetting State\endNode{}\def\HeadingText{%
C.2.1.3. Saving and Resetting State}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3779}}\endNode{}\Node%
{\def\Element%
{3780}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}You may save, and later restore, the internal state of a
generator using these methods:

\Node%
{\def\Element%
{3781}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   // Get the size of the memory buffer needed by putStateInto / setStateFrom:
   myUnsigned = [ myGenerator getStateSize ];

   // Extract the generator's state data into your memory buffer:
   [ myGenerator putStateInto: myBuffer ];

   // Set the generator's state from data in a memory buffer:
   [ myGenerator setStateFrom: myBuffer ];\endPar{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3782}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}To illustrate, assume the following data definitions:

\Node%
{\def\Element%
{3783}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   FILE * myFile;
   const char * myFileName = "MyGenFile.bin"; // or whatever
   int stateSizeG;
   id stateBufG;
   int status;\endPar{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3784}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The following code shows how to save an object's state to disk:
(You should add your own code to deal with disk file errors, either
aborting or printing out error messages.)

\Node%
{\def\Element%
{3785}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   // Ask how big a buffer we need:
   stateSizeG = [ myGenerator getStateSize ];

   // Allocate memory for the buffer:
   stateBufG  = [[self getZone] alloc: stateSizeG];

   // Ask the generator to put state data into the buffer:
   [ myGenerator putStateInto: (void *) stateBufG ];

   // Open a disk file for output:
   myFile = fopen(myFileName, "w");
   if (myFile == NULL) \{ \};	// error on open: disk full, or no permissions

   // Write the state buffer to disk in binary form:
   status = fwrite(stateBufG, stateSizeG, 1, myFile);
   if (status < 1) \{ \};		// error on write: disk full?

   // Close the file
   status = fclose(myFile);
   if (status) \{ \};		// error on close ?

   // Free the memory allocated to the buffer:
   [[self getZone] free: stateBufG];

   // Or, for test purposes, just zero the buffer data instead:
   // memset(stateBufG, 0, stateSizeG);\endPar{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3786}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This code shows how to set an object's state from a disk file:

\Node%
{\def\Element%
{3787}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   // Ask how big a buffer we need:
   stateSizeG = [ myGenerator getStateSize ];

   // Allocate memory for the buffer:
   stateBufG  = [[self getZone] alloc: stateSizeG];

   // Open a disk file for input:
   myFile = fopen(myFileName, "r");
   if (myFile == NULL) \{ \};	// error on open: file not found

   // Read state data into the memory buffer:
   status = fread(stateBufG, stateSizeG, 1, myFile);
   if (status < 1) \{ \};		// error on read

   // Close the file:
   status = fclose(myFile);
   if (status) \{ \};		// error on close

   // Ask the generator set its state from the buffer data:
   [ myGenerator setStateFrom: (void *) stateBufG ];

   // Free the memory allocated to the buffer:
   [[self getZone] free: stateBufG];\endPar{}\endNode{}\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.SECT2.DISTRIB-USAGE}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.2. \Node%
{\def\Element%
{3789}\def\ProcessingMode%
{xref-title-mode}}Usage Guide for Distributions\endNode{}\def\HeadingText{%
C.2.2. Usage Guide for Distributions}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3789}}\endNode{}\Node%
{\def\Element%
{3790}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Where I use \Node%
{\def\Element%
{3791}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}NormalDist\endSeq{}\endNode{} in
examples below, substitute any other distribution and its parameters
as needed.\endPar{}\endNode{}\Node%
{\def\Element%
{3792}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}NOTE: any name that starts with \Node%
{\def\Element%
{3793}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}my\endSeq{}\endNode{} is
meant to designate a variable of the appropriate type which you have 
defined in your own program.\endPar{}\endNode{}\Node%
{\def\Element%
{3794}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{12\p@}\def\LineSpacing%
{15.6\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{4}\def\sbNom%
{9\p@}\def\sbMin%
{9\p@}\def\sbMax%
{9\p@}\def\sbConditional%
{1}\def\saNom%
{6\p@}\def\saMin%
{6\p@}\def\saMax%
{6\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.2.1. \Node%
{\def\Element%
{3795}\def\ProcessingMode%
{xref-title-mode}}Creating distributions\endNode{}\def\HeadingText{%
C.2.2.1. Creating distributions}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3795}}\endNode{}\Node%
{\def\Element%
{3796}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}You create a distribution in one of several ways:\endPar{}\endNode{}\Node%
{\def\Element%
{3797}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{10\p@}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{5}\def\sbNom%
{7.5\p@}\def\sbMin%
{7.5\p@}\def\sbMax%
{7.5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.2.1.1. \Node%
{\def\Element%
{3798}\def\ProcessingMode%
{xref-title-mode}}the lazy way:\endNode{}\def\HeadingText{%
C.2.2.1.1. the lazy way:}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3798}}\endNode{}\Node%
{\def\Element%
{3799}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3800}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   id <NormalDist> myNormalDist;
   myNormalDist = [ NormalDist createWithDefaults: [self getZone]];\endPar{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3801}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This method will create a distribution object with no default
statistical parameters set, as well as a fresh generator object connected to
it. The generator object is initialized with STARTSEED (see the
discussion above).  Different distribution classes use different
generators for this purpose.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3802}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{10\p@}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{5}\def\sbNom%
{7.5\p@}\def\sbMin%
{7.5\p@}\def\sbMax%
{7.5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.2.1.2. \Node%
{\def\Element%
{3803}\def\ProcessingMode%
{xref-title-mode}}Without default parameters, using a simple generator\endNode{}\def\HeadingText{%
C.2.2.1.2. Without default parameters, using a simple generator}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3803}}\endNode{}\Node%
{\def\Element%
{3804}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   id <NormalDist> myNormalDist;
   myNormalDist = [ NormalDist create: [self getZone]
			setGenerator: mySimpleGenerator ];\endPar{}\endNode{}\Node%
{\def\Element%
{3805}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3806}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}myGenerator\endSeq{}\endNode{} must of course first have
been set to point to a random generator of the `simple' type. Note
that you cannot assign a different generator to a distribution after
it has been created.\endPar{}\endNode{}\Node%
{\def\Element%
{3807}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}You can create the generator at the same time as the
distribution:

\Node%
{\def\Element%
{3808}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   id <NormalDist> myNormalDist;
   myNormalDist = [ NormalDist create: [self getZone]
		setGenerator: [TT800gen create: [self getZone] 
				setStateFromSeed: 34453]         ];\endPar{}\endNode{}\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3809}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{10\p@}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{5}\def\sbNom%
{7.5\p@}\def\sbMin%
{7.5\p@}\def\sbMax%
{7.5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.2.1.3. \Node%
{\def\Element%
{3810}\def\ProcessingMode%
{xref-title-mode}}Without default parameters, using a split generator\endNode{}\def\HeadingText{%
C.2.2.1.3. Without default parameters, using a split generator}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3810}}\endNode{}\Node%
{\def\Element%
{3811}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3812}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   id <NormalDist> myNormalDist;
   myNormalDist = [ NormalDist create: [self getZone]
			setGenerator: mySplitGenerator
			setVirtualGenerator: 7 ];\endPar{}\endNode{}

or perhaps

\Node%
{\def\Element%
{3813}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   id <NormalDist> myNormalDist;
   myNormalDist = [ NormalDist create: [self getZone]
		setGenerator: [C4LCGXgen createWithDefaults: [self getZone]]
			setVirtualGenerator: 99 ];\endPar{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3814}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}A split generator can be thought of as comprising a set of
virtual generators (streams of random numbers), and a distribution
object must be `connected' to one of these streams. You cannot
re-assign the generator or the virtual generator after a distribution
object has been created.\endPar{}\endNode{}\Node%
{\def\Element%
{3815}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In all these cases, when we want to obtain a random
variate from this distribution object we need to specify the
statistical parameters:

\Node%
{\def\Element%
{3816}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   myDouble = [ myNormalDist getSampleWithMean: 3.3 withVariance: 1.7];\endPar{}\endNode{}

You can use different parameters for every call. (And you can use this
call even if default parameters have been set.)\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3817}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{10\p@}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{5}\def\sbNom%
{7.5\p@}\def\sbMin%
{7.5\p@}\def\sbMax%
{7.5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.2.1.4. \Node%
{\def\Element%
{3818}\def\ProcessingMode%
{xref-title-mode}}With default parameters, using a simple generator\endNode{}\def\HeadingText{%
C.2.2.1.4. With default parameters, using a simple generator}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3818}}\endNode{}\Node%
{\def\Element%
{3819}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3820}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   id <NormalDist> myNormalDist;
   myNormalDist = [ NormalDist create: [self getZone]
			setGenerator: mySimpleGenerator
			setMean: 7.6 setVariance: 1.2 ];\endPar{}\endNode{}\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3821}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{10\p@}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{5}\def\sbNom%
{7.5\p@}\def\sbMin%
{7.5\p@}\def\sbMax%
{7.5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.2.1.5. \Node%
{\def\Element%
{3822}\def\ProcessingMode%
{xref-title-mode}}With default parameters, using a split generator\endNode{}\def\HeadingText{%
C.2.2.1.5. With default parameters, using a split generator}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3822}}\endNode{}\Node%
{\def\Element%
{3823}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3824}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   id <NormalDist> myNormalDist;
   myNormalDist = [ NormalDist create: [self getZone]
			setGenerator: mySplitGenerator
			setVirtualGenerator: 33
			setMean: 3.2 setVariance: 2.1 ];\endPar{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3825}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In these cases, we do not need to specify parameters to get a
random number:

\Node%
{\def\Element%
{3826}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   myDouble = [ myNormalDist getDoubleSample ];\endPar{}\endNode{}

However, you \Node%
{\def\Element%
{3827}}\Seq%
{\def\fPosture%
{italic}}are\endSeq{}\endNode{} allowed to specify parameters even if 
default parameters have been set.\endPar{}\endNode{}\Node%
{\def\Element%
{3828}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}(Of course, different distributions have different parameters:
RandomBitDist has none, the Uniform objects have minimum and maximum
limit values, NormalDist and LogNormalDist use Mean and Variance,
ExponentialDist only Mean, and GammaDist used alpha and beta. See the
individual distribution protocols or the file 
\Node%
{\def\Element%
{3829}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}random/distributions.h\endSeq{}\endNode{} for the specific
methods available. ) \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3830}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{10\p@}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{5}\def\sbNom%
{7.5\p@}\def\sbMin%
{7.5\p@}\def\sbMax%
{7.5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.2.1.6. \Node%
{\def\Element%
{3831}\def\ProcessingMode%
{xref-title-mode}}You may reset the default parameters this way, as often
as you like\endNode{}\def\HeadingText{%
C.2.2.1.6. You may reset the default parameters this way, as often
as you like}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3831}}\endNode{}\Node%
{\def\Element%
{3832}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3833}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   [ myNormalDist setMean: 3.3 setVariance: 2.2 ];\endPar{}\endNode{}\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3834}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{10\p@}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{5}\def\sbNom%
{7.5\p@}\def\sbMin%
{7.5\p@}\def\sbMax%
{7.5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.2.1.7. \Node%
{\def\Element%
{3835}\def\ProcessingMode%
{xref-title-mode}}You can obtain the current values of parameters\endNode{}\def\HeadingText{%
C.2.2.1.7. You can obtain the current values of parameters}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3835}}\endNode{}\Node%
{\def\Element%
{3836}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3837}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   // Default parameters:
   myDouble1 = [ myNormalDist getMean ];
   myDouble2 = [ myNormalDist getVariance ];
   myDouble3 = [ myNormalDist getStdDev ];

   // Get a pointer to the generator object:
   myOtherGenerator = [ myNormalDist getGenerator ];

   // Get the number of the virtual generator (if a split generator is used):
   myUnsignedValue  = [ myNormalDist getVirtualGenerator];

   // Find out if default parameters have been set:
   myBoolean        = [ myNormalDist getOptionsInitialized ];

   // Find out how many variates the object has delivered so far:
   // (The counter is an unsigned long long int, which goes up to 2\char94{}64.)
   myLongLongInt    = [ myNormalDist getCurrentCount ];\endPar{}\endNode{}\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3838}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{10\p@}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{5}\def\sbNom%
{7.5\p@}\def\sbMin%
{7.5\p@}\def\sbMax%
{7.5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.2.1.8. \Node%
{\def\Element%
{3839}\def\ProcessingMode%
{xref-title-mode}}You can reset the variate counter and other state variables this way\endNode{}\def\HeadingText{%
C.2.2.1.8. You can reset the variate counter and other state variables this way}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3839}}\endNode{}\Node%
{\def\Element%
{3840}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3841}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   [ myNormalDist reset ];\endPar{}\endNode{}

This is most likely done in conjunction with resetting the connected
generator, using 
\Node%
{\def\Element%
{3842}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[ myGenerator setStateFromSeed: mySeedValue ]\endPar{}\endNode{} 
or simply \Node%
{\def\Element%
{3843}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}[ myGenerator reset ];\endPar{}\endNode{}\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3844}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{10\p@}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{5}\def\sbNom%
{7.5\p@}\def\sbMin%
{7.5\p@}\def\sbMax%
{7.5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.2.1.9. \Node%
{\def\Element%
{3845}\def\ProcessingMode%
{xref-title-mode}}Finally, we have the InternalState protocol methods\endNode{}\def\HeadingText{%
C.2.2.1.9. Finally, we have the InternalState protocol methods}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3845}}\endNode{}\Node%
{\def\Element%
{3846}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3847}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}   // Print (most of) the object's state data to a stream:
   [ myNormalDist describe: myStream ];\endPar{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3848}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}} The stream myStream may be created thus:

\Node%
{\def\Element%
{3849}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}id myStream = [ OutStream create: [self getZone] setFileStream: stdout ]; or
id myStream = [ OutStream create: [self getZone] setFileStream: stderr ];

   // Get the (class) name of the object:
   myString = [ myNormalDist getName ];

   // Get the object's `magic number', used by putStateInto / setStateFrom:
   myUnsigned = [ myNormalDist getMagic ];\endPar{}\endNode{}\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3850}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{12\p@}\def\LineSpacing%
{15.6\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{4}\def\sbNom%
{9\p@}\def\sbMin%
{9\p@}\def\sbMax%
{9\p@}\def\sbConditional%
{1}\def\saNom%
{6\p@}\def\saMin%
{6\p@}\def\saMax%
{6\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.2.2.2. \Node%
{\def\Element%
{3851}\def\ProcessingMode%
{xref-title-mode}}Saving And Restoring State\endNode{}\def\HeadingText{%
C.2.2.2. Saving And Restoring State}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3851}}\endNode{}\Node%
{\def\Element%
{3852}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}You may save, and later restore, the internal state of a
distribution object using InternalState methods.\endPar{}\endNode{}\Node%
{\def\Element%
{3853}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3854}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3855}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}See the Generator Usage Guide, which describes how to
do this. The code for saving/restoring distributions would be
similar.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3856}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{3857}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Note that saving the state of a distribution object will NOT
automatically save the state of the attached generator; you are
responsible for doing so. (Since it is possible, even encouraged, to
use a single generator to feed several distribution objects, this is
the only sane way of doing it.)\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.3. \Node%
{\def\Element%
{3859}\def\ProcessingMode%
{xref-title-mode}}Advanced Usage Guide\endNode{}\def\HeadingText{%
C.3. Advanced Usage Guide}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3859}}\endNode{}\Node%
{\def\Element%
{3860}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This section amplifies the Usage Guide with material on how to 
      choose a random generator for your simulation, what default generators
      have been implemented for the distribution objects, and information
      on the set of test programs used.
    \endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE-CHOOSE.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.3.1. \Node%
{\def\Element%
{3862}\def\ProcessingMode%
{xref-title-mode}}Choosing a Generator\endNode{}\def\HeadingText{%
C.3.1. Choosing a Generator}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3862}}\endNode{}\Node%
{\def\Element%
{3863}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{12\p@}\def\LineSpacing%
{15.6\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{4}\def\sbNom%
{9\p@}\def\sbMin%
{9\p@}\def\sbMax%
{9\p@}\def\sbConditional%
{1}\def\saNom%
{6\p@}\def\saMin%
{6\p@}\def\saMax%
{6\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.3.1.1. \Node%
{\def\Element%
{3864}\def\ProcessingMode%
{xref-title-mode}}Choosing A Generator\endNode{}\def\HeadingText{%
C.3.1.1. Choosing A Generator}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3864}}\endNode{}\Node%
{\def\Element%
{3865}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}In this version of Random for Swarm there are a total of 36
different generators implemented. If you are a serious simulationist
you need to select which one(s) to use for your model.\endPar{}\endNode{}\Node%
{\def\Element%
{3866}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}Here are some factors to consider:

\Node%
{\def\Element%
{3867}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3868}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}a. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3869}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}We want a generator to have as good statistical
properties as possible. We measure this by subjecting the generators
to various tests. I have subjected the implemented generators to two
sets of tests, Diehard and ENT. (Look in directory /testR6 of the test
package.) (The \Node%
{\def\Element%
{3870}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.QUALITY}}Generators quality table\endLink{}\endNode{} summarizes the test results. The
highlights are:

\Node%
{\def\Element%
{3871}\def\ProcessingMode%
{listitem-content-mode}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3872}\def\ProcessingMode%
{listitem-content-mode}}\DisplayGroup%
{\def\StartIndent%
{84\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}i. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3873}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}The LCG and SCG generators are of
\Node%
{\def\Element%
{3874}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fPosture%
{italic}}very\endSeq{}\endNode{} poor quality (they fail many of the tests),
and should never be used.  [They are likely to disappear in the next
release.]\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3875}\def\ProcessingMode%
{listitem-content-mode}}\DisplayGroup%
{\def\StartIndent%
{84\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}ii. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3876}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}The lagged-Fibonacci generators (ACG, SWBi, PSWB) all
fail the Diehard `Birthday Spacings Test', and are therefore only
conditionally recommended for use.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3877}\def\ProcessingMode%
{listitem-content-mode}}\DisplayGroup%
{\def\StartIndent%
{84\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}iii. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3878}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}The other 32-bit generators pass all tests, and I
therefore have no reason not to recommend them all for use.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3879}\def\ProcessingMode%
{listitem-content-mode}}\DisplayGroup%
{\def\StartIndent%
{84\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}iv. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3880}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}The 31-bit generators all fail certain tests because
one bit has a constant value. Beyond that they all seem to be
ok.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}
\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3881}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}b. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3882}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}We want a generator to have a long enough period for
our purpose, and in general the longer the period the
better. (However, note that to generate 2\Node%
{\def\Element%
{3883}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}64\endSeq{}\endNode{} random numbers from a
fast generator like MT19937 would take 2.1 million years on a 486/66,
so in practice any generator with a period close to 2\Node%
{\def\Element%
{3884}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}60\endSeq{}\endNode{} or larger
will be acceptable.)  The PMMLCG generators, although they are of
acceptable quality otherwise, have a period less than 2\Node%
{\def\Element%
{3885}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{} which we
can exhaust in under 3 hours. So use those only for quick `toy'
applications.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3886}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}c. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3887}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}We want a generator to execute efficiently, the faster
the better.  The \Node%
{\def\Element%
{3888}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.DATA}}Generators data
table\endLink{}\endNode{} indicates the execution times for the generators as
implemented.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3889}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}d. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3890}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}We want a generator to take as little resources
(memory) as possible.  The \Node%
{\def\Element%
{3891}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.DATA}}Generators data
table\endLink{}\endNode{} indicates the size of each generator's state in
bits.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3892}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}e. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3893}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Other things being equal, we want our generator to
have a single full period rather than a number of shorter
periods, since we may not know whether a particular starting seed will
put us into a long or a short subcycle. This disqualifies SWB, and possibly 
the new MWC and RWC generators (Marsaglia does not say how many periods these 
generators have, but only gives the period length.)\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3894}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{12\p@}\def\LineSpacing%
{15.6\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{4}\def\sbNom%
{9\p@}\def\sbMin%
{9\p@}\def\sbMax%
{9\p@}\def\sbConditional%
{1}\def\saNom%
{6\p@}\def\saMin%
{6\p@}\def\saMax%
{6\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.3.1.2. \Node%
{\def\Element%
{3895}\def\ProcessingMode%
{xref-title-mode}}Strategy For Using Random Generators\endNode{}\def\HeadingText{%
C.3.1.2. Strategy For Using Random Generators}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3895}}\endNode{}\Node%
{\def\Element%
{3896}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}There are 3 possible strategies for using random generators:

\Node%
{\def\Element%
{3897}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{3898}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}a. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3899}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Use one single generator for your whole simulation,
and have all `users' of randomness (distributions and other objects)
call this single generator in an interleaved fashion. For this
purpose, generators such as MT19937, TT800, TT775, TT443 (and possibly
PSWB and SWB) seem particularly well suited since they have immense
periods.  The code in \Node%
{\def\Element%
{3900}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}random/random.m\endSeq{}\endNode{} shows how
to connect several distribution objects to a single random
generator. The generator \Node%
{\def\Element%
{3901}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}randomGenerator\endSeq{}\endNode{}
supplied there is of class MT19937.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3902}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}b. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3903}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Use a single generator of long period, but divide this
long period up into a number of non-overlapping (hence statistically
independent) segments, and let each `user' of randomness draw their
random numbers from separate segments. Doing this requires that we be
able to quickly access these separate segments. The `split' generators
C2LCGX and C4LCGX implement such a scheme. You can specify at creation
how you want the period of these generators subdivided. (See the
source code for details.)\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3904}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}c. \endLineField{}\endSeq{}\Node%
{\def\Element%
{3905}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Use a separate random generator for each `user' of
randomness.  In this case, you need to make sure that two or more
generators of the same type are not started with the same seed, since
in this case their output will be highly correlated. Provide your own
seeds, or use RANDOMSEED or NEXTSEED.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{3906}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The distribution objects, if created with the
`createWithDefault: aZone' method, will create for themselves a fresh
generator, with each class of distribution using a different class of
generator. All the generators in this case are initialized with
NEXTSEED (or RANDOMSEED, if you start the program with
\Node%
{\def\Element%
{3907}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}--varyseed\endSeq{}\endNode{}).  \endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{3908}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{12\p@}\def\LineSpacing%
{15.6\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{4}\def\sbNom%
{9\p@}\def\sbMin%
{9\p@}\def\sbMax%
{9\p@}\def\sbConditional%
{1}\def\saNom%
{6\p@}\def\saMin%
{6\p@}\def\saMax%
{6\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.3.1.3. \Node%
{\def\Element%
{3909}\def\ProcessingMode%
{xref-title-mode}}Generator Quality\endNode{}\def\HeadingText{%
C.3.1.3. Generator Quality}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{3909}}\endNode{}\Node%
{\def\Element%
{3910}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}These tables shows the results of testing the generator objects
statistically:\endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.QUALITY}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}Table C-1. \Node%
{\def\Element%
{3912}\def\ProcessingMode%
{xref-title-mode}}Random Library: Generator Statistical Tests\endNode{}\endPar{}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{3912}}\endNode{}\Node%
{\def\Element%
{3913}}\Table%
{\def\DisplayAlignment%
{start}\def\TableWidth%
{full}}\TablePart%
{}\insertTableColumn%
{\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{1}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{2}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{3}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{4}\def\Width%
{141.732\p@}\def\WidthFactor%
{0}}\TeXTable%
{420\p@}{5}{|L{69.567\p@}|L{69.567\p@}|L{69.567\p@}|L{69.567\p@}|L{141.732\p@}|}%
\TablePartHeader%
{}\Hline%
\Node%
{\def\Element%
{3921}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Generator\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}timing uS (unsigned)\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}bits state\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}period (s) \# length\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}tests failed (x)\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}%
\endTablePartHeader{}\Hline%
\Node%
{\def\Element%
{3928}}\Node%
{\def\Element%
{3928}}\TableRow%
{}\TableCell%
{\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\endTableCell{}%
&\TableCell%
{\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\endTableCell{}%
&\TableCell%
{\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\endTableCell{}%
&\TableCell%
{\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{3931}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}abcdefghijklmnopqrstuvwx\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\multicolumn%
{5}{|l|}{\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\NColumnsSpanned%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{center}}30-bit output\endPar{}\endTableCell{}%
}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}SCG\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}3.328\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1650\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{3939}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}55\endSeq{}\endNode{}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{3941}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}x.xx2xxxxxxx..x..xx.xx..\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\multicolumn%
{5}{|l|}{\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\NColumnsSpanned%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{center}}32-bit output\endPar{}\endTableCell{}%
}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}LCG1    \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 2.564\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   32\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   1	2\Node%
{\def\Element%
{3949}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}   \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{3951}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}x...xxxxxxx.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}LCG2    \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 2.564\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   32\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   1	2\Node%
{\def\Element%
{3957}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}   \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{3959}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}x...xxxxxxx.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}LCG3    \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 2.564\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   32\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   1	2\Node%
{\def\Element%
{3965}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}   \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{3967}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}x...xxxxxxx.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}ACG	    \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 2.702\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 1760\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   1	2\Node%
{\def\Element%
{3973}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}55\endSeq{}\endNode{}   \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{3975}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}x.......................\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}SWB1    \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 3.285\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 1185\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}  64	2\Node%
{\def\Element%
{3981}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}1178\endSeq{}\endNode{} \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{3983}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}x.......................\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}SWB2    \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 3.285\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}  769\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1536	2\Node%
{\def\Element%
{3989}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}757\endSeq{}\endNode{}  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{3991}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}x.......................\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}SWB3    \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 3.285\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}  673\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 192	2\Node%
{\def\Element%
{3997}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}664\endSeq{}\endNode{}  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{3999}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}x.......................\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PSWB    \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 3.452\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 1377\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   1	2\Node%
{\def\Element%
{4005}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}1376\endSeq{}\endNode{} \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4007}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}x.......................\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}MWCA    \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 3.399\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   64\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}  ??	2\Node%
{\def\Element%
{4013}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}59\endSeq{}\endNode{}   \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4015}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}........................\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}MWCB    \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 3.420\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   64\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}  ??	2\Node%
{\def\Element%
{4021}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}59\endSeq{}\endNode{}   \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4023}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}........................\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}MT19937 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 3.698\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}19968\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   1	2\Node%
{\def\Element%
{4029}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}19937\endSeq{}\endNode{}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4031}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}........................\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}TT800   \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 4.654\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}  800\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   1	2\Node%
{\def\Element%
{4037}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}800\endSeq{}\endNode{}  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4039}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}........................\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C3MWC   \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 6.387\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}  192\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}  ??	2\Node%
{\def\Element%
{4045}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}118\endSeq{}\endNode{}  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4047}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}........................\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}RWC2    \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 7.445\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   96\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}  ??	2\Node%
{\def\Element%
{4053}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}92\endSeq{}\endNode{}   \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4055}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}........................\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}RWC8    \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}14.649\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}  288\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}  ??	2\Node%
{\def\Element%
{4061}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}250\endSeq{}\endNode{}  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4063}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}........................\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\multicolumn%
{5}{|l|}{\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\NColumnsSpanned%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{center}}31-bit output\endPar{}\endTableCell{}%
}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C2TAUS1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 4.078\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 62\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4071}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}60\endSeq{}\endNode{}	 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4073}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C2TAUS2\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 4.078\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 62\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4079}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}60\endSeq{}\endNode{}	 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4081}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C2TAUS3\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 4.078\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 62\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4087}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}60\endSeq{}\endNode{}	 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4089}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}TT775  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 4.654\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}775\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4095}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}775\endSeq{}\endNode{}	 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4097}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}TT403  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 4.670\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}403\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4103}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}403\endSeq{}\endNode{}	 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4105}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PMMLCG1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 4.715\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4111}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}	 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4113}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PMMLCG2\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 4.715\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4119}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}	 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4121}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PMMLCG3\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 4.715\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4127}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}	 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4129}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PMMLCG4\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 4.715\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4135}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}	 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4137}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PMMLCG5\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 4.715\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4143}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}	 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4145}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PMMLCG6\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 4.715\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4151}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}	 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4153}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PMMLCG7\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 4.715\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4159}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}	 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4161}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PMMLCG8\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 4.715\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4167}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}	 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4169}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PMMLCG9\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 4.715\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4175}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}	 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4177}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C2LCGX \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 7.029\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 62\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4183}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}60\endSeq{}\endNode{}  (Split)\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4185}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}MRG5   \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 9.674\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}155\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4191}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}155\endSeq{}\endNode{}	 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4193}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}MRG6   \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}10.449\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}186\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4199}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}186\endSeq{}\endNode{}	 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4201}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}MRG7   \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}10.913\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}217\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4207}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}217\endSeq{}\endNode{}	 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4209}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C4LCGX \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}11.688\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}124\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4215}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}210\endSeq{}\endNode{} (Split)\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4217}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C2MRG3 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}13.459\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}186\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1	2\Node%
{\def\Element%
{4223}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}185\endSeq{}\endNode{}	 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}\Node%
{\def\Element%
{4225}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}1..-1x111x1.........x...\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}\endNode{}%
\TablePartFooter%
{}\endTablePartFooter{}\Hline%
\endTeXTable{}%
\endTablePart{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}%
\endTable{}%
\endNode{}\Node%
{\def\Element%
{4226}}\Table%
{\def\DisplayAlignment%
{start}\def\TableWidth%
{full}}\TablePart%
{}\insertTableColumn%
{\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{1}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{2}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\TeXTable%
{420\p@}{3}{|L{140\p@}|L{140\p@}|L{140\p@}|}%
\TablePartHeader%
{}\Hline%
\Node%
{\def\Element%
{4231}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Test code\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Test suite\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Explanation of test codes\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}%
\endTablePartHeader{}\Hline%
\Node%
{\def\Element%
{4236}}\Node%
{\def\Element%
{4236}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}a\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Diehard\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Birthday Spacings Test\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}b\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Diehard\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Overlapping 5-permutation Test\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}c\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Diehard\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Binary Rank Test (31x31)\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}d\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Diehard\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Binary Rank Test (32x32)\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}e\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Diehard\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Binary Rank Test (6x8)\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}f\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Diehard\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Bitstream Test (overlapping 20-tuples)\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}g\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Diehard\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}OPSO (Overlapping Pairs, Sparse Occupancy)\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}h\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Diehard\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}OQSO (Overlapping Quadruples, Sparse Occupancy)\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}i\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Diehard\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}DNA Test\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}j\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Diehard\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Count-the-1's Test (integers)\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}k\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Diehard\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Count-the-1's Test (specific bytes)\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}l\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Diehard\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Parking Lot Test\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}m\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Diehard\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Minimum Distance Test\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}n\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Diehard\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}3D Spheres Test\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}o\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Diehard\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Squeeze Test\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}p\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Diehard\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Overlapping Sums Test\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}q\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Diehard\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Runs Test\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}r\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Diehard\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Craps Test\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}s\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}ENT\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Entropy Test\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}t\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}ENT\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Compression test\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}u\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}ENT\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Chi-Square Test\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}v\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}ENT\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Arithmetic Mean\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}w\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}ENT\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Monte Carlo value for Pi\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}x\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}ENT\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}Serial Correlation Coefficient\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}\endNode{}%
\TablePartFooter%
{}\endTablePartFooter{}\Hline%
\endTeXTable{}%
\endTablePart{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}%
\endTable{}%
\endNode{}\Node%
{\def\Element%
{4333}}\Table%
{\def\DisplayAlignment%
{start}\def\TableWidth%
{full}}\TablePart%
{}\insertTableColumn%
{\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{1}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\TeXTable%
{420\p@}{2}{|L{210\p@}|L{210\p@}|}%
\TablePartHeader%
{}\Hline%
\Node%
{\def\Element%
{4337}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Indication\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Explanation of indications\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}%
\endTablePartHeader{}\Hline%
\Node%
{\def\Element%
{4341}}\Node%
{\def\Element%
{4341}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}.\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}The generator passed this test\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}The generator passed this test, except for the lowest bit\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}The generator passed this test, except for the 2 lowest bits\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}x\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}The generator failed this test completely\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}-\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}This test cannot be passed by this generator (too few bits)\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}\endNode{}%
\TablePartFooter%
{}\endTablePartFooter{}\Hline%
\endTeXTable{}%
\endTablePart{}\endNode{}\endNode{}\endNode{}\endNode{}%
\endTable{}%
\endNode{}\endPar{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4357}}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{4358}}\Seq%
{\def\fWeight%
{bold}}Notes. \endSeq{}\endNode{}\Node%
{\def\Element%
{4359}}\Seq%
{}\Node%
{\def\Element%
{4360}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{4361}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4362}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}For 31-bit generators, it is normal to fail 1 part of
these tests:a,e,g,h,i,k. This is because we left-shift the output of
these generators by 1 bit, so that the lowest bit is always 0.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4363}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4364}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}For 31-bit generators, it is normal to fail test d
(32x32 rank test).\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4365}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4366}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}All 31-bit generators also fail tests f, j, and u (and
most others don't.)  This is *likely* due to the constant low
bit.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{4367}}\Par%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{4368}}\Seq%
{\def\fWeight%
{bold}}Choosing A Generator. \endSeq{}\endNode{}\Node%
{\def\Element%
{4369}}\Seq%
{}
\Node%
{\def\Element%
{4370}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{4371}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4372}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Clearly unacceptable generators: LCG1, LCG2, LCG3,
SCG.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4373}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4374}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Conditionally recommended generators: ACG, SWB1, SWB2,
SWB3, PSWB.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4375}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4376}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Use with caution: the PMMLCGx generators (due to their 
very short period 2\Node%
{\def\Element%
{4377}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}).\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4378}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4379}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}All other generators are recommended at this
time.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endNode{}\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4380}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{12\p@}\def\LineSpacing%
{15.6\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{4}\def\sbNom%
{9\p@}\def\sbMin%
{9\p@}\def\sbMax%
{9\p@}\def\sbConditional%
{1}\def\saNom%
{6\p@}\def\saMin%
{6\p@}\def\saMax%
{6\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.3.1.4. \Node%
{\def\Element%
{4381}\def\ProcessingMode%
{xref-title-mode}}More generator data\endNode{}\def\HeadingText{%
C.3.1.4. More generator data}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{4381}}\endNode{}\Node%
{\def\Element%
{4382}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}And this table gives further data about the generators:\endPar{}\endNode{}\Node%
{\def\Element%
{4383}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}        

\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.DATA}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}Table C-2. \Node%
{\def\Element%
{4385}\def\ProcessingMode%
{xref-title-mode}}Random Library: Generator Data\endNode{}\endPar{}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{4385}}\endNode{}\Node%
{\def\Element%
{4386}}\Table%
{\def\DisplayAlignment%
{start}\def\TableWidth%
{full}}\TablePart%
{}\insertTableColumn%
{\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{1}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{2}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{3}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{4}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{5}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{6}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\TeXTable%
{420\p@}{7}{|L{60\p@}|L{60\p@}|L{60\p@}|L{60\p@}|L{60\p@}|L{60\p@}|L{60\p@}|}%
\TablePartHeader%
{}\Hline%
\Node%
{\def\Element%
{4395}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Generator\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Seeds\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Modulus\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Cycles (length)\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Bits\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Speed\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}State\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}%
\endTablePartHeader{}\Hline%
\Node%
{\def\Element%
{4404}}\Node%
{\def\Element%
{4404}}\TableRow%
{}\multicolumn%
{7}{|l|}{\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\NColumnsSpanned%
{7}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{center}}\endPar{}\endTableCell{}%
}%
\endTableRow{}%
\Hline%
\TableRow%
{}\multicolumn%
{7}{|l|}{\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\NColumnsSpanned%
{7}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{center}}(a) Simple Short Generators\endPar{}\endTableCell{}%
}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}LCG1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4413}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1 m\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}32\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1.442\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}32\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}LCG2\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4422}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1 m\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}32\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1.442\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}32\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}LCG3\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4431}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1 m\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}32\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1.442\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}32\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PMMLCG1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4440}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1 m-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.784\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PMMLCG2\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4449}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1 m-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.784\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PMMLCG3\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4458}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1 m-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.784\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PMMLCG4\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4467}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1 m-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.784\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PMMLCG5\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4476}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}-105\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1 m-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.784\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PMMLCG6\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4485}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}-225\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1 m-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.784\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PMMLCG7\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4494}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}-325\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1 m-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.784\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PMMLCG8\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4503}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}-85\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1 m-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.784\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PMMLCG9\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4512}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}-249\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1 m-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.784\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\multicolumn%
{7}{|l|}{\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\NColumnsSpanned%
{7}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{center}}(b) Simple Long Generators\endPar{}\endTableCell{}%
}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}ACG	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}55  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4523}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   1 2\Node%
{\def\Element%
{4525}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}55\endSeq{}\endNode{}  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}32\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1.369\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}760\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}SCG	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}55  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}10\Node%
{\def\Element%
{4533}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}9\endSeq{}\endNode{}	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   1 2\Node%
{\def\Element%
{4535}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}55\endSeq{}\endNode{}  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}30\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1.111\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}650\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}SWB1	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}37+c\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4543}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}  64 2\Node%
{\def\Element%
{4545}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}1178\endSeq{}\endNode{}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}32\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1.126\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}185\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}SWB2	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}24+c\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4553}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1536 2\Node%
{\def\Element%
{4555}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}757\endSeq{}\endNode{} \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}32\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1.126\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}769\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}SWB3	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}21+c\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4563}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 192 2\Node%
{\def\Element%
{4565}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}664\endSeq{}\endNode{} \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}32\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1.126\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}673\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PSWB	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}43+c\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4573}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}-5\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1 2\Node%
{\def\Element%
{4575}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}1376\endSeq{}\endNode{}   \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}32\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1.070 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1377\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}TT403	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}13  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4583}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   1 2\Node%
{\def\Element%
{4585}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}403\endSeq{}\endNode{} \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.792\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}403\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}TT775	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}25  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4593}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   1 2\Node%
{\def\Element%
{4595}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}775\endSeq{}\endNode{} \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.795\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}775\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}TT800	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}25  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4603}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   1 2\Node%
{\def\Element%
{4605}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}800\endSeq{}\endNode{} \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}32\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.795\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}800\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}MT19937	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}624 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4613}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   1 2\Node%
{\def\Element%
{4615}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}19937\endSeq{}\endNode{}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}32\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1.000\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}19937\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}MRG5	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 5  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4623}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   1 2\Node%
{\def\Element%
{4625}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}155\endSeq{}\endNode{} \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.382\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}155\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}MRG6	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 6  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4633}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   1 2\Node%
{\def\Element%
{4635}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}186\endSeq{}\endNode{}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.354 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}186\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}MRG7	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 7  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4643}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   1 2\Node%
{\def\Element%
{4645}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}217\endSeq{}\endNode{}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.339\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}217\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}MWCA	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 2  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4653}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   ? 2\Node%
{\def\Element%
{4655}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}59\endSeq{}\endNode{}  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}32\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1.088\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 64\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}MWCB	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 2  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4663}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   ? 2\Node%
{\def\Element%
{4665}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}59\endSeq{}\endNode{}  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}32\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1.088\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 64\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}RWC2	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 3  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4673}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   ? 2\Node%
{\def\Element%
{4675}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}92\endSeq{}\endNode{}  \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}32\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.497\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 96\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}RWC8	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}18s \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4683}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}   ? 2\Node%
{\def\Element%
{4685}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}250\endSeq{}\endNode{} \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}32\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.252\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}288\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\multicolumn%
{7}{|l|}{\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\NColumnsSpanned%
{7}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{center}}(c) Long Generators with Splitting Facilities: (none)\endPar{}\endTableCell{}%
}%
\endTableRow{}%
\Hline%
\TableRow%
{}\multicolumn%
{7}{|l|}{\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\NColumnsSpanned%
{7}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{center}}(d) Combined Generators\endPar{}\endTableCell{}%
}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C2TAUS1 (M)\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4697}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1 2\Node%
{\def\Element%
{4699}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}60\endSeq{}\endNode{} \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.907\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 62\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C2TAUS2 (M)\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4707}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1 2\Node%
{\def\Element%
{4709}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}60\endSeq{}\endNode{} \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.907\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 62\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C2TAUS3 (M)\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4717}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1 2\Node%
{\def\Element%
{4719}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}60\endSeq{}\endNode{} \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.907\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 62\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C2MRG3  (M)\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}6\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4727}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}-1\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1 2\Node%
{\def\Element%
{4729}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}185\endSeq{}\endNode{}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.275\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}186\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C3MWC	(M)\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}6\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4737}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}	\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}? 2\Node%
{\def\Element%
{4739}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}118\endSeq{}\endNode{}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}32\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.570\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}192\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\multicolumn%
{7}{|l|}{\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\NColumnsSpanned%
{7}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{center}}(e) Combined Generators with Splitting Facilities\endPar{}\endTableCell{}%
}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C2LCG   (M,S)\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4749}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}-85\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1 2\Node%
{\def\Element%
{4751}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}60\endSeq{}\endNode{} \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.526\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}} 62\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C4LCG   (M,S)\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}4\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}2\Node%
{\def\Element%
{4759}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}-1 \endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{3}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}1 2\Node%
{\def\Element%
{4761}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}120\endSeq{}\endNode{}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{4}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}31\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{5}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}0.316\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{6}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}124\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}\endNode{}%
\TablePartFooter%
{}\endTablePartFooter{}\Hline%
\endTeXTable{}%
\endTablePart{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}%
\endTable{}%
\endNode{}\Node%
{\def\Element%
{4765}}\Table%
{\def\DisplayAlignment%
{start}\def\TableWidth%
{full}}\TablePart%
{}\insertTableColumn%
{\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{1}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\TeXTable%
{420\p@}{2}{|L{210\p@}|L{210\p@}|}%
\TablePartHeader%
{}\Hline%
\Node%
{\def\Element%
{4769}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Generator\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Calculating cycle lengths\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}%
\endTablePartHeader{}\Hline%
\Node%
{\def\Element%
{4773}}\Node%
{\def\Element%
{4773}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}LCGi\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}cycle = m = 2\Node%
{\def\Element%
{4777}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PMMLCGi\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}cycle = m-1 < 2\Node%
{\def\Element%
{4781}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}31\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}ACG\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}cycle = 2\Node%
{\def\Element%
{4785}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}r\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}SCG\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}cycle = 2\Node%
{\def\Element%
{4789}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}r\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}SWBi\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}cycle = ( 2\Node%
{\def\Element%
{4793}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32r\endSeq{}\endNode{} - 2\Node%
{\def\Element%
{4794}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}32s\endSeq{}\endNode{} ) / \#cycles\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PSWB\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}cycle = m\Node%
{\def\Element%
{4798}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}r\endSeq{}\endNode{} - m\Node%
{\def\Element%
{4799}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}s\endSeq{}\endNode{}\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}TGFSRi\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}cycle = 2\Node%
{\def\Element%
{4803}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}w*N\endSeq{}\endNode{} - 1 \endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}MRGi\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}cycle = m\Node%
{\def\Element%
{4807}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}i\endSeq{}\endNode{} - 1\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C2MRG3\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}cycle = (m1\Node%
{\def\Element%
{4811}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}3\endSeq{}\endNode{} - 1)*(m2\Node%
{\def\Element%
{4812}}\Seq%
{\def\fSize%
{6\p@}\def\PositionPointShift%
{4\p@}\def\PositionPointShiftFactor%
{0}}3\endSeq{}\endNode{} - 1)/2\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C2TAUSi\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}cycle = Mask1 * Mask2\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C2LCG\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}cycle = (m1 * m2) / 2\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C4LCG\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}cycle = (m1 * m2 * m3 * m4) / 8\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}MWCA, MWCB\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}cycle = ? (not specified by Marsaglia)\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C3MWC\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}cycle = ?	"		"\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}RWC2\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}cycle = ?	"		"\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}RWC8\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}cycle = ?	"		"\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}\endNode{}%
\TablePartFooter%
{}\endTablePartFooter{}\Hline%
\endTeXTable{}%
\endTablePart{}\endNode{}\endNode{}\endNode{}\endNode{}%
\endTable{}%
\endNode{}\endPar{}\endSeq{}\endDisplayGroup{}\endNode{}
\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE-DEFAULT.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.3.2. \Node%
{\def\Element%
{4835}\def\ProcessingMode%
{xref-title-mode}}Default Generators for the Distributions\endNode{}\def\HeadingText{%
C.3.2. Default Generators for the Distributions}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{4835}}\endNode{}\Node%
{\def\Element%
{4836}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{12\p@}\def\LineSpacing%
{15.6\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{4}\def\sbNom%
{9\p@}\def\sbMin%
{9\p@}\def\sbMax%
{9\p@}\def\sbConditional%
{1}\def\saNom%
{6\p@}\def\saMin%
{6\p@}\def\saMax%
{6\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.3.2.1. \Node%
{\def\Element%
{4837}\def\ProcessingMode%
{xref-title-mode}}Random Library: Default Generators\endNode{}\def\HeadingText{%
C.3.2.1. Random Library: Default Generators}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{4837}}\endNode{}\Node%
{\def\Element%
{4838}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}When distributions are created using the
\Node%
{\def\Element%
{4839}}\Seq%
{\def\fFamName{Courier-New}\def\fWeight%
{bold}}createWithDefaults: aZone\endSeq{}\endNode{} method, they create
their own generator and initialize it with NEXTSEED (or with
RANDOMSEED, if you started the program with the
\Node%
{\def\Element%
{4840}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}--varyseed\endSeq{}\endNode{} switch).\endPar{}\endNode{}\Node%
{\def\Element%
{4841}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The generators used are as follows:\endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.DEFAULT}}\DisplayGroup%
{\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}Table C-3. \Node%
{\def\Element%
{4843}\def\ProcessingMode%
{xref-title-mode}}Random Library: Default Generators\endNode{}\endPar{}\Par%
{\def\fWeight%
{bold}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}}\Node%
{\def\Element%
{4843}}\endNode{}\Node%
{\def\Element%
{4844}}\Table%
{\def\DisplayAlignment%
{start}\def\TableWidth%
{full}}\TablePart%
{}\insertTableColumn%
{\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{1}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\insertTableColumn%
{\def\ColumnIndex%
{2}\def\Width%
{0\p@}\def\WidthFactor%
{0}}\TeXTable%
{420\p@}{3}{|L{140\p@}|L{140\p@}|L{140\p@}|}%
\TablePartHeader%
{}\Hline%
\Node%
{\def\Element%
{4845}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Distribution\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\Quadding%
{start}}Generator\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}%
\endTablePartHeader{}\Hline%
\Node%
{\def\Element%
{4850}}\Node%
{\def\Element%
{4850}}\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}RandomBitDist\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}uses\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C2TAUS1gen\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}BernoulliDist\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}uses\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C2TAUS2gen\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}UniformIntegerDist\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}uses\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}TT403gen\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}UniformUnsignedDist\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}uses\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}TT775gen\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}UniformDoubleDist\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}uses\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}TT800gen\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}NormalDist\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}uses\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}MWCAgen\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}LogNormalDist\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}uses\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}MWCBgen\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}ExponentialDist\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}uses\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}C2TAUS3gen\endPar{}\endTableCell{}%
\endTableRow{}%
\Hline%
\TableRow%
{}\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}GammaDist\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{1}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}uses\endPar{}\endTableCell{}%
&\TableCell%
{\def\CellRowAlignment%
{start}\def\CellBeforeRowMargin%
{3\p@}\def\CellAfterRowMargin%
{3\p@}\def\CellBeforeColumnMargin%
{3\p@}\def\CellAfterColumnMargin%
{3\p@}\def\StartIndent%
{2\p@}\def\StartIndentFactor%
{0}\def\EndIndent%
{2\p@}\def\EndIndentFactor%
{0}\def\ColumnIndex%
{2}}\Par%
{\def\fFamName{Times-New-Roman}\def\fWeight%
{medium}\def\Quadding%
{start}}PSWBgen\endPar{}\endTableCell{}%
\endTableRow{}\endNode{}\endNode{}%
\TablePartFooter%
{}\endTablePartFooter{}\Hline%
\endTeXTable{}%
\endTablePart{}\endNode{}%
\endTable{}%
\endNode{}\endPar{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4887}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}These generators were chosen on the basis of quality and
execution speed.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4888}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{12\p@}\def\LineSpacing%
{15.6\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{4}\def\sbNom%
{9\p@}\def\sbMin%
{9\p@}\def\sbMax%
{9\p@}\def\sbConditional%
{1}\def\saNom%
{6\p@}\def\saMin%
{6\p@}\def\saMax%
{6\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.3.2.2. \Node%
{\def\Element%
{4889}\def\ProcessingMode%
{xref-title-mode}}Utility Generator And Distributions\endNode{}\def\HeadingText{%
C.3.2.2. Utility Generator And Distributions}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{4889}}\endNode{}\Node%
{\def\Element%
{4890}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}There are 4 default random objects defined in
\Node%
{\def\Element%
{4891}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}random/random.m\endSeq{}\endNode{}. These are:

\Node%
{\def\Element%
{4892}}\Par%
{\def\fSize%
{7.5\p@}\def\LineSpacing%
{9.75\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\fFamName{Courier-New}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Lines%
{asis}\def\InputWhitespaceTreatment%
{preserve}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}id <MT19937gen>          randomGenerator;
id <UniformIntegerDist>   uniformIntRand;
id <UniformUnsignedDist>  uniformUnsRand;
id <UniformDoubleDist>    uniformDblRand;\endPar{}\endNode{}\endPar{}\endNode{}\Node%
{\def\Element%
{4893}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}These objects may be called from anywhere in your program.  Note
(a): the generator is initialized with NEXTSEED or RANDOMSEED
depending on the use of the \Node%
{\def\Element%
{4894}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}--varyseed\endSeq{}\endNode{} command line
option.  Note (b): the distribution objects are created
\Node%
{\def\Element%
{4895}}\Seq%
{\def\fPosture%
{italic}}without\endSeq{}\endNode{} default statistical parameters.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE-TEST.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.3.3. \Node%
{\def\Element%
{4897}\def\ProcessingMode%
{xref-title-mode}}Random Library Test Programs\endNode{}\def\HeadingText{%
C.3.3. Random Library Test Programs}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{4897}}\endNode{}\Node%
{\def\Element%
{4898}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{4899}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}1. \endLineField{}\endSeq{}\Node%
{\def\Element%
{4900}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}In a separate \Node%
{\def\Element%
{4901}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}tar
file\endSeq{}\Seq%
{} (ftp://ftp.swarm.org/pub/swarm/RandomTests-0.81.tgz)\endSeq{}\endSeq{}\endNode{}, available at the SFI ftp site, there are a set of
programs which exercise aspects of the generator objects'
functionality.  The following (very utilitarian) programs are
available:

\Node%
{\def\Element%
{4902}\def\ProcessingMode%
{listitem-content-mode}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{4903}\def\ProcessingMode%
{listitem-content-mode}}\DisplayGroup%
{\def\StartIndent%
{76\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4904}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{4905}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}testR0. \endSeq{}\endNode{}\Node%
{\def\Element%
{4906}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}a program which
        exercises every generator and distribution, verifying correct
        operation and comparing output to that obtained on the
        author's system.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4907}\def\ProcessingMode%
{listitem-content-mode}}\DisplayGroup%
{\def\StartIndent%
{76\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4908}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{4909}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}testR1. \endSeq{}\endNode{}\Node%
{\def\Element%
{4910}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}a program which
    		prints out diagnostic output for code in
    		random.m.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4911}\def\ProcessingMode%
{listitem-content-mode}}\DisplayGroup%
{\def\StartIndent%
{76\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4912}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{4913}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}testR2. \endSeq{}\endNode{}\Node%
{\def\Element%
{4914}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}a program which
		asks each distribution and generator to describe
		itself using the Swarm xprint
		method.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4915}\def\ProcessingMode%
{listitem-content-mode}}\DisplayGroup%
{\def\StartIndent%
{76\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4916}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{4917}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}testR3. \endSeq{}\endNode{}\Node%
{\def\Element%
{4918}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}a program which
		asks each distribution and generator to describe
		itself using the objects' 'describe'
		method.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4919}\def\ProcessingMode%
{listitem-content-mode}}\DisplayGroup%
{\def\StartIndent%
{76\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4920}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{4921}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}testR4. \endSeq{}\endNode{}\Node%
{\def\Element%
{4922}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}a program that
		performs timing tests on each generator and
		distribution, computing the time it takes to call each
		object 10,000,000
		times.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4923}\def\ProcessingMode%
{listitem-content-mode}}\DisplayGroup%
{\def\StartIndent%
{76\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4924}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{4925}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}testR6. \endSeq{}\endNode{}\Node%
{\def\Element%
{4926}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}a program that
		generates a binary file containing 2.5M variates from
		a specified generator, for purposes of statistical
		testing (e.g. with ENT or Diehard.)\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4927}\def\ProcessingMode%
{listitem-content-mode}}\DisplayGroup%
{\def\StartIndent%
{76\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4928}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{4929}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}testR7. \endSeq{}\endNode{}\Node%
{\def\Element%
{4930}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}a program which
		records, for each generator, the value of unsignedMax,
		the number of output bits, and the value of
		lengthOfSeedVector.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4931}\def\ProcessingMode%
{listitem-content-mode}}\DisplayGroup%
{\def\StartIndent%
{76\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4932}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{4933}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}testR9. \endSeq{}\endNode{}\Node%
{\def\Element%
{4934}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}a program which
		records, for each generator and distribution, the
		object's 'magic number' and the buffer size needed for
		getState/setState.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4935}}\DisplayGroup%
{\def\StartIndent%
{66\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-18\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\FieldWidth%
{18\p@}\def\FieldWidthFactor%
{0}\def\FieldAlign%
{end}}2. \endLineField{}\endSeq{}\Node%
{\def\Element%
{4936}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Statistical testing: the generators have been put
through the tests in the \Node%
{\def\Element%
{4937}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}/testR6/ENT\endSeq{}\endNode{} and
\Node%
{\def\Element%
{4938}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fFamName{Courier-New}\def\fSize%
{7.5\p@}}/testR6/Diehard\endSeq{}\endNode{} directories. The raw data can be
found there.  The results are summarized in the test log files found
in the same test distribution. The distribution objects have not been
tested statistically yet.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4939}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The code here represents an effort to implement several
     efficient, reasonably safe generators. The algorithms come from
     reading the literature (\Node%
{\def\Element%
{4940}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.BIBLIOGRAPHY}}Bibliography\endLink{}\endNode{}).
     These algorithms have been implemented as accurately as possible
     and run through some simple tests. Some generators, included here
     for historical reasons only, are known to have bad statistical
     properties, and their use is deprecated. See \Node%
{\def\Element%
{4941}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-ADV-USAGE.SECT1}}Advanced
     Usage Guide\endLink{}\endNode{}for information on the quality of the included
     generators.\endPar{}\endNode{}\Node%
{\def\Element%
{4942}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}While the objects in this library are believed to function
  correctly, the prudent and paranoid modeller would do well testing
  them in some domain-specific way. One easy way to do this is to run
  an experiment twice: once with one class of generator (say, PMMLCG),
  and once with another (say, SWB). If the results differ radically,
  then you can suspect one of the generators. If they don't, well, the
  generators still might be faulty!\endPar{}\endNode{}\Node%
{\def\Element%
{4943}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The generators supplied with this release have been subjected to
  statistical testing using George Marsaglia's
  \Node%
{\def\Element%
{4944}}\Seq%
{\def\fPosture%
{italic}}Diehard\endSeq{}\endNode{} tests as well as John Walker's entropy
  tests (ENT). The results of these tests are summarized in \Node%
{\def\Element%
{4945}}\Link%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX.TABLE.GENERATOR.QUALITY}}Generator
  quality table\endLink{}\endNode{}. Other data on the properties of the generators
  are found there as well. These data support a discussion of how to
  choose one or more generators for your simulation.\endPar{}\endNode{}\Node%
{\def\Element%
{4946}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The ENT test is included in the tarball of test programs
  mentioned above. The Diehard tests are copyright and hence are not,
  but they can be downloaded from the web at:

  \Node%
{\def\Element%
{4947}}\Seq%
{}\Seq%
{}    ftp://ftp.csis.hku.hk/pub/random
  \endSeq{}\Seq%
{} (ftp://ftp.csis.hku.hk/pub/random)\endSeq{}\endSeq{}\endNode{}.
\endPar{}\endNode{}\Node%
{\def\Element%
{4948}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}The distribution objects have not been statistically tested.\endPar{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE.SECT1}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.4. \Node%
{\def\Element%
{4950}\def\ProcessingMode%
{xref-title-mode}}Resources for random number generation\endNode{}\def\HeadingText{%
C.4. Resources for random number generation}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{4950}}\endNode{}\Node%
{\def\Element%
{4951}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This section lists some of the source reference material
    used in programming the random generators and distributions.
    The following is a list of source articles or books from which
    the generator and distribution objects were implemented\endPar{}\endNode{}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE-GEN.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.4.1. \Node%
{\def\Element%
{4953}\def\ProcessingMode%
{xref-title-mode}}Generators\endNode{}\def\HeadingText{%
C.4.1. Generators}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{4953}}\endNode{}\Node%
{\def\Element%
{4954}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{4955}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4956}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{4957}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}LCG. \endSeq{}\endNode{}\Node%
{\def\Element%
{4958}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}a golden oldie; see
            \Node%
{\def\Element%
{4959}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5117}}[\Seq%
{}Knuth 1981\endSeq{}]\endLink{}\endNode{} or 
            \Node%
{\def\Element%
{4960}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5316}}[\Seq%
{}Numerical Recipes\endSeq{}]\endLink{}\endNode{}.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4961}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4962}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{4963}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}PMMLCG. \endSeq{}\endNode{}\Node%
{\def\Element%
{4964}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}see 
            \Node%
{\def\Element%
{4965}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5337}}[\Seq%
{}Park \& Miller 1988\endSeq{}]\endLink{}\endNode{}, \Node%
{\def\Element%
{4966}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5214}}[\Seq%
{}L'Ecuyer \& Cote 1991\endSeq{}]\endLink{}\endNode{} and \Node%
{\def\Element%
{4967}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5199}}[\Seq%
{}L'Ecuyer \& Andres 1997\endSeq{}]\endLink{}\endNode{}.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4968}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4969}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{4970}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}ACG. \endSeq{}\endNode{}\Node%
{\def\Element%
{4971}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{} a golden oldie;
            see \Node%
{\def\Element%
{4972}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5117}}[\Seq%
{}Knuth 1981\endSeq{}]\endLink{}\endNode{} or 
            \Node%
{\def\Element%
{4973}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5316}}[\Seq%
{}Numerical Recipes\endSeq{}]\endLink{}\endNode{}.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4974}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4975}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{4976}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}SCG. \endSeq{}\endNode{}\Node%
{\def\Element%
{4977}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{} a golden oldie;
            see \Node%
{\def\Element%
{4978}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5117}}[\Seq%
{}Knuth 1981\endSeq{}]\endLink{}\endNode{} or
            \Node%
{\def\Element%
{4979}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5316}}[\Seq%
{}Numerical Recipes\endSeq{}]\endLink{}\endNode{}.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4980}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4981}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{4982}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}SWB. \endSeq{}\endNode{}\Node%
{\def\Element%
{4983}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}see
            \Node%
{\def\Element%
{4984}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5248}}[\Seq%
{}Marsaglia \& Zaman 1991\endSeq{}]\endLink{}\endNode{}\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4985}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4986}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{4987}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}PSWB. \endSeq{}\endNode{}\Node%
{\def\Element%
{4988}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}see
            \Node%
{\def\Element%
{4989}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5248}}[\Seq%
{}Marsaglia \& Zaman 1991\endSeq{}]\endLink{}\endNode{}\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4990}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4991}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{4992}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}MRG. \endSeq{}\endNode{}\Node%
{\def\Element%
{4993}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}see
            \Node%
{\def\Element%
{4994}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5133}}[\Seq%
{}L'Ecuyer et al 1993\endSeq{}]\endLink{}\endNode{}\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{4995}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{4996}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{4997}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}C2MRG3. \endSeq{}\endNode{}\Node%
{\def\Element%
{4998}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}see
            \Node%
{\def\Element%
{4999}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5151}}[\Seq%
{}L'Ecuyer 1996(a)\endSeq{}]\endLink{}\endNode{} and \Node%
{\def\Element%
{5000}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5175}}[\Seq%
{}L'Ecuyer 1999(a)\endSeq{}]\endLink{}\endNode{}\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5001}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{5002}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{5003}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}C2TAUS. \endSeq{}\endNode{}\Node%
{\def\Element%
{5004}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}see
            \Node%
{\def\Element%
{5005}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5364}}[\Seq%
{}Tezuka \& L'Ecuyer 1991\endSeq{}]\endLink{}\endNode{}, \Node%
{\def\Element%
{5006}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5163}}[\Seq%
{}L'Ecuyer 1996(b)\endSeq{}]\endLink{}\endNode{} and \Node%
{\def\Element%
{5007}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5187}}[\Seq%
{}L'Ecuyer 1999(b)\endSeq{}]\endLink{}\endNode{}. Also \Node%
{\def\Element%
{5008}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5353}}[\Seq%
{}Tausworthe 1965\endSeq{}]\endLink{}\endNode{}.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5009}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{5010}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{5011}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}TGFSR (TT800, TT775, TT403). \endSeq{}\endNode{}\Node%
{\def\Element%
{5012}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}see
            \Node%
{\def\Element%
{5013}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5263}}[\Seq%
{}Matsumoto \& Kurita 1992\endSeq{}]\endLink{}\endNode{} and \Node%
{\def\Element%
{5014}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5278}}[\Seq%
{}Matsumoto \& Kurita 1994\endSeq{}]\endLink{}\endNode{}.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5015}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{5016}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{5017}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}MT19937. \endSeq{}\endNode{}\Node%
{\def\Element%
{5018}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}see 
            \Node%
{\def\Element%
{5019}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5293}}[\Seq%
{}Matsumoto \& Nishimura 1998\endSeq{}]\endLink{}\endNode{}.
          \endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5020}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{5021}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{5022}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}MWCA, MWCB, C3MWC, RWC2, RWC8 ("Mother"). \endSeq{}\endNode{}\Node%
{\def\Element%
{5023}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}See \Node%
{\def\Element%
{5024}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5230}}[\Seq%
{}Marsaglia 1994(a)\endSeq{}]\endLink{}\endNode{} and \Node%
{\def\Element%
{5025}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5240}}[\Seq%
{}Marsaglia 1994(b)\endSeq{}]\endLink{}\endNode{}.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5026}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{5027}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{5028}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}C2LCGX. \endSeq{}\endNode{}\Node%
{\def\Element%
{5029}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}See \Node%
{\def\Element%
{5030}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5214}}[\Seq%
{}L'Ecuyer \& Cote 1991\endSeq{}]\endLink{}\endNode{}\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5031}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{5032}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{5033}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}C4LCGX. \endSeq{}\endNode{}\Node%
{\def\Element%
{5034}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}See \Node%
{\def\Element%
{5035}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5199}}[\Seq%
{}L'Ecuyer \& Andres 1997\endSeq{}]\endLink{}\endNode{}\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE-DIST.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.4.2. \Node%
{\def\Element%
{5037}\def\ProcessingMode%
{xref-title-mode}}Distributions\endNode{}\def\HeadingText{%
C.4.2. Distributions}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5037}}\endNode{}\Node%
{\def\Element%
{5038}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{5039}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{5040}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{5041}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}RandomBitDist. \endSeq{}\endNode{}\Node%
{\def\Element%
{5042}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Code
              contributed by \Node%
{\def\Element%
{5043}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}Nelson Minar.\endSeq{}\Seq%
{} (mailto://nelson@media.mit.edu)\endSeq{}\endSeq{}\endNode{}\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5044}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{5045}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{5046}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}BernoulliDist. \endSeq{}\endNode{}\Node%
{\def\Element%
{5047}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Code contributed by \Node%
{\def\Element%
{5048}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}Barry McMullin\endSeq{}\Seq%
{} (mailto://mcmullin@santafe.edu)\endSeq{}\endSeq{}\endNode{}.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5049}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{5050}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{5051}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}UniformIntegerDist. \endSeq{}\endNode{}\Node%
{\def\Element%
{5052}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Code contributed by \Node%
{\def\Element%
{5053}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}Nelson Minar\endSeq{}\Seq%
{} (mailto://nelson@media.mit.edu)\endSeq{}\endSeq{}\endNode{}.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5054}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{5055}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{5056}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}UniformUnsignedDist. \endSeq{}\endNode{}\Node%
{\def\Element%
{5057}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Code contributed by \Node%
{\def\Element%
{5058}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}Nelson Minar\endSeq{}\Seq%
{} (mailto://nelson@media.mit.edu)\endSeq{}\endSeq{}\endNode{}.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5059}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{5060}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{5061}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}UniformDoubleDist. \endSeq{}\endNode{}\Node%
{\def\Element%
{5062}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Code contributed by \Node%
{\def\Element%
{5063}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}Nelson Minar\endSeq{}\Seq%
{} (mailto://nelson@media.mit.edu)\endSeq{}\endSeq{}\endNode{}.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5064}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{5065}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{5066}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}NormalDist. \endSeq{}\endNode{}\Node%
{\def\Element%
{5067}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}See \Node%
{\def\Element%
{5068}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5316}}[\Seq%
{}Numerical Recipes\endSeq{}]\endLink{}\endNode{}.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5069}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{5070}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{5071}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}LogNormalDist. \endSeq{}\endNode{}\Node%
{\def\Element%
{5072}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}See \Node%
{\def\Element%
{5073}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5316}}[\Seq%
{}Numerical Recipes\endSeq{}]\endLink{}\endNode{}.
          \endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5074}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{5075}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{5076}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}ExponentialDist. \endSeq{}\endNode{}\Node%
{\def\Element%
{5077}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}See \Node%
{\def\Element%
{5078}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5379}}[\Seq%
{}Russell 1992\endSeq{}]\endLink{}\endNode{}.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5079}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{5080}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Node%
{\def\Element%
{5081}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{\def\fWeight%
{bold}}GammaDist. \endSeq{}\endNode{}\Node%
{\def\Element%
{5082}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}See \Node%
{\def\Element%
{5083}\def\ProcessingMode%
{listitem-content-mode}}\Link%
{\def\Element%
{5393}}[\Seq%
{}Watkins 1994\endSeq{}]\endLink{}\endNode{}.\endSeq{}\endNode{}\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.APPENDIX-REFERENCE-WEB.SECT2}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}C.4.3. \Node%
{\def\Element%
{5085}\def\ProcessingMode%
{xref-title-mode}}Useful Web Sites\endNode{}\def\HeadingText{%
C.4.3. Useful Web Sites}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5085}}\endNode{}\Node%
{\def\Element%
{5086}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{5087}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{5088}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}Pierre L'Ecuyer maintains a \Node%
{\def\Element%
{5089}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}personal web
            site \endSeq{}\Seq%
{} (http://www.iro.umontreal.ca/\char126{}lecuyer)\endSeq{}\endSeq{}\endNode{}. He has many of his own papers there, as
          well as further links. He has papers both on generating
          random numbers and on testing random number
          generators.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5090}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{5091}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}George Marsaglia has a \Node%
{\def\Element%
{5092}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}personal web
            site\endSeq{}\Seq%
{} (http://stat.fsu.edu/\char126{}geo)\endSeq{}\endSeq{}\endNode{}. His battery of tests for random
          generators, called Diehard, is not available there, but
          rather from \Node%
{\def\Element%
{5093}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}Hong
            Kong\endSeq{}\Seq%
{} (ftp://ftp.csis.hku.hk/pub/random)\endSeq{}\endSeq{}\endNode{}. A GUI version of Diehard has been under
          development for some time, but is not yet
          ready.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5094}}\DisplayGroup%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}\Par%
{\def\FirstLineStartIndent%
{-10\p@}\def\FirstLineStartIndentFactor%
{0}\def\fSize%
{10\p@}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}}\Seq%
{}\LineField%
{\def\fSize%
{8\p@}\def\PositionPointShift%
{0\p@}\def\PositionPointShiftFactor%
{0}\def\FieldWidth%
{10\p@}\def\FieldWidthFactor%
{0}}\Character{8226}\endLineField{}\endSeq{}\Node%
{\def\Element%
{5095}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}The \Node%
{\def\Element%
{5096}\def\ProcessingMode%
{listitem-content-mode}}\Seq%
{}\Seq%
{}pLab\endSeq{}\Seq%
{} (http://random.mat.sbg.ac.at)\endSeq{}\endSeq{}\endNode{}
          project in Salzburg, Austria, also has much useful
          information.\endSeq{}\endNode{}\endPar{}\endDisplayGroup{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Label%
{SWARM.RANDOM.SGML.BIBLIOGRAPHY}}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{14.4\p@}\def\LineSpacing%
{18.72\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{3}\def\sbNom%
{10.8\p@}\def\sbMin%
{10.8\p@}\def\sbMax%
{10.8\p@}\def\sbConditional%
{1}\def\saNom%
{7.2\p@}\def\saMin%
{7.2\p@}\def\saMax%
{7.2\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5098}\def\ProcessingMode%
{xref-title-mode}}Bibliography\endNode{}\def\HeadingText{%
Bibliography}%
\endHeadPar{}\Seq%
{}\Node%
{\def\Element%
{5098}}\endNode{}\Node%
{\def\Element%
{5099}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5100}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Ferrenberg et al 1992\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5102}\def\ProcessingMode%
{biblioentry-inline-mode}}\Node%
{\def\Element%
{5103}\def\ProcessingMode%
{biblioentry-inline-mode}}Alan M. Ferrenberg, \endNode{}\Node%
{\def\Element%
{5106}\def\ProcessingMode%
{biblioentry-inline-mode}}D. P. Landau, \endNode{}\Node%
{\def\Element%
{5109}\def\ProcessingMode%
{biblioentry-inline-mode}}and Y. Joanna Wong\endNode{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5112}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}"Monte Carlo Simulations: Hidden Errors from "Good" Random Number 
Generators"\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5113}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Physical Review Letters\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5114}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}no. 23\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5115}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}vol. 69\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5116}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}December, 1992\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5117}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5118}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Knuth 1981\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5120}\def\ProcessingMode%
{biblioentry-inline-mode}}Donald Knuth\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5123}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}The Art of Computer Programming\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5124}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}2nd ed.\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5125}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}vol. II\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5126}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Seminumerical Algorithms\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5127}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}\Node%
{\def\Element%
{5128}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Addison-Wesley\endSeq{}\endNode{}, \Node%
{\def\Element%
{5130}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Reading\endSeq{}\endNode{}\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5132}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}1981\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5133}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5134}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}L'Ecuyer et al 1993\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5136}\def\ProcessingMode%
{biblioentry-inline-mode}}\Node%
{\def\Element%
{5137}\def\ProcessingMode%
{biblioentry-inline-mode}}Pierre L'Ecuyer, \endNode{}\Node%
{\def\Element%
{5140}\def\ProcessingMode%
{biblioentry-inline-mode}}F. Blouin, \endNode{}\Node%
{\def\Element%
{5143}\def\ProcessingMode%
{biblioentry-inline-mode}}and R. Couture\endNode{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5146}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}"A Search for Good Multiple Recursive Random Generators."\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5147}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}ACM TOMACS\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5148}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}vol. 3\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5149}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}pp. 87-98\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5150}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}1993\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5151}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5152}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}L'Ecuyer 1996(a)\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5154}\def\ProcessingMode%
{biblioentry-inline-mode}}Pierre L'Ecuyer\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5157}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}"Combined Multiple Recursive Generators."\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5158}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Operations Research\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5159}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}no. 5\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5160}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}vol. 44\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5161}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}pp. 816-822\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5162}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}1997\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5163}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5164}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}L'Ecuyer 1996(b)\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5166}\def\ProcessingMode%
{biblioentry-inline-mode}}Pierre L'Ecuyer\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5169}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}"Maximally Equidistributed Combined Tausworthe Generators"\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5170}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Mathematics and Computation\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5171}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}no. 65\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5172}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}vol. 213\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5173}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}pp. 203-213\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5174}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}1996\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5175}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5176}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}L'Ecuyer 1999(a)\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5178}\def\ProcessingMode%
{biblioentry-inline-mode}}Pierre L'Ecuyer\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5181}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}"Good Parameter Sets for Combined Multiple Recursive Random Number Generators"\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5182}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Operations Research\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5183}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}no. 1\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5184}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}vol. 47\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5185}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}pp. 159-164\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5186}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}1999\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5187}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5188}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}L'Ecuyer 1999(b)\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5190}\def\ProcessingMode%
{biblioentry-inline-mode}}Pierre L'Ecuyer\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5193}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}"Tables of Maximally-Equidistributed Combined LFSR Generators"\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5194}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Mathematics and Computation\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5195}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}no. 225\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5196}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}vol. 68\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5197}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}pp. 261-269\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5198}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}1999\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5199}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5200}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}L'Ecuyer \& Andres 1997\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5202}\def\ProcessingMode%
{biblioentry-inline-mode}}\Node%
{\def\Element%
{5203}\def\ProcessingMode%
{biblioentry-inline-mode}}Pierre L'Ecuyer \endNode{}\Node%
{\def\Element%
{5206}\def\ProcessingMode%
{biblioentry-inline-mode}}and Terry H. Andres\endNode{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5209}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}"A Random Number Generator Based on the Combination of Four LCGs."\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5210}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Mathematics and Computers in Simulation\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5211}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}vol. 44\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5212}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}pp. 99-107\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5213}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}1997\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5214}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5215}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}L'Ecuyer \& Cote 1991\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5217}\def\ProcessingMode%
{biblioentry-inline-mode}}\Node%
{\def\Element%
{5218}\def\ProcessingMode%
{biblioentry-inline-mode}}Pierre L'Ecuyer \endNode{}\Node%
{\def\Element%
{5221}\def\ProcessingMode%
{biblioentry-inline-mode}}and Serge Cote\endNode{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5224}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}"Implementing a Random Number Package with Splitting Facilities"\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5225}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}ACM TOMACS\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5226}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}no. 1\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5227}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}vol. 17\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5228}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}pp. 98-111\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5229}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}March, 1991\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5230}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5231}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Marsaglia 1994(a)\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5232}\def\ProcessingMode%
{biblioentry-inline-mode}}George Marsaglia\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5235}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}"The Mother of All Random Generators"\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5236}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Posted by Bob Wheeler to \Node%
{\def\Element%
{5237}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}\Seq%
{}sci.stat.consult\endSeq{}\Seq%
{} (news://sci.stat.consult)\endSeq{}\endSeq{}\endNode{} and \Node%
{\def\Element%
{5238}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}\Seq%
{}sci.math.num-analysis\endSeq{}\Seq%
{} (news://sci.math.num-analysis)\endSeq{}\endSeq{}\endNode{} on behalf of George Marsaglia on October 28, 1994. The code is available at \Node%
{\def\Element%
{5239}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}\Seq%
{}ftp.taygeta.com\endSeq{}\Seq%
{} (ftp://ftp.taygeta.com/pub/c/mother.c)\endSeq{}\endSeq{}\endNode{} \endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5240}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5241}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Marsaglia 1994(b)\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5242}\def\ProcessingMode%
{biblioentry-inline-mode}}George Marsaglia\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5245}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}"Multiply-With-Carry Generators"\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5246}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}File "mwc1.ps" on Marsaglia's Diehard CD-ROM, available online at \Node%
{\def\Element%
{5247}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}\Seq%
{}ftp.csis.hku.hk\endSeq{}\Seq%
{} (ftp://ftp.csis.hku.hk/pub/random)\endSeq{}\endSeq{}\endNode{}\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5248}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5249}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Marsaglia \& Zaman 1991\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5251}\def\ProcessingMode%
{biblioentry-inline-mode}}\Node%
{\def\Element%
{5252}\def\ProcessingMode%
{biblioentry-inline-mode}}George Marsaglia \endNode{}\Node%
{\def\Element%
{5255}\def\ProcessingMode%
{biblioentry-inline-mode}}and Arif Zaman\endNode{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5258}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}"A New Class of Random Number Generators."\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5259}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Annals of Applied Probability\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5260}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}no. 3\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5261}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}vol. 3\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5262}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}pp. 462-480\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5263}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5264}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Matsumoto \& Kurita 1992\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5266}\def\ProcessingMode%
{biblioentry-inline-mode}}\Node%
{\def\Element%
{5267}\def\ProcessingMode%
{biblioentry-inline-mode}}M. Matsumoto \endNode{}\Node%
{\def\Element%
{5270}\def\ProcessingMode%
{biblioentry-inline-mode}}and Y. Kurita\endNode{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5273}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}"Twisted GFSR generators"\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5274}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}ACM TOMACS\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5275}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}vol. 2\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5276}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}1992\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5277}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}pp. 179-194\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5278}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5279}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Matsumoto \& Kurita 1994\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5281}\def\ProcessingMode%
{biblioentry-inline-mode}}\Node%
{\def\Element%
{5282}\def\ProcessingMode%
{biblioentry-inline-mode}}Makoto Matsumoto \endNode{}\Node%
{\def\Element%
{5285}\def\ProcessingMode%
{biblioentry-inline-mode}}and Yoshiharu Kurita\endNode{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5288}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}"Twisted GFSR Generators II"\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5289}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}ACM TOMACS
(Amended by K. Matsumoto, 8 July 1996).\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5290}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}no. 3\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5291}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}vol. 4\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5292}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}pp. 254-266\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5293}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5294}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Matsumoto \& Nishimura 1998\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5296}\def\ProcessingMode%
{biblioentry-inline-mode}}\Node%
{\def\Element%
{5297}\def\ProcessingMode%
{biblioentry-inline-mode}}M. Matsumoto \endNode{}\Node%
{\def\Element%
{5300}\def\ProcessingMode%
{biblioentry-inline-mode}}and T. Nishimura\endNode{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5303}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}"Mersenne Twister: A 623-dimensionally Equidistributed Uniform Pseudorandomnumber Generator"\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5304}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}ACM TOMACS\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5305}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}no. 1\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5306}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}vol. 8\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5307}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}pp. 3-30\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5308}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}17 December 1998\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5309}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5310}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Nature 1994\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5312}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}"News and Views"\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5313}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Nature\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5314}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}vol. 372\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5315}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}December, 1994\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5316}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5317}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Numerical Recipes\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5319}\def\ProcessingMode%
{biblioentry-inline-mode}}\Node%
{\def\Element%
{5320}\def\ProcessingMode%
{biblioentry-inline-mode}}W. H. Press, \endNode{}\Node%
{\def\Element%
{5323}\def\ProcessingMode%
{biblioentry-inline-mode}}S. A Teukolsky, \endNode{}\Node%
{\def\Element%
{5326}\def\ProcessingMode%
{biblioentry-inline-mode}}W. T. Vetterling, \endNode{}\Node%
{\def\Element%
{5329}\def\ProcessingMode%
{biblioentry-inline-mode}}and B. P. Flannery\endNode{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5332}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Numerical Recipes in C\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5333}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}2nd ed.\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5334}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}\Node%
{\def\Element%
{5335}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Cambridge University Press\endSeq{}\endNode{}\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5336}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}1992\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5337}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5338}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Park \& Miller 1988\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5340}\def\ProcessingMode%
{biblioentry-inline-mode}}\Node%
{\def\Element%
{5341}\def\ProcessingMode%
{biblioentry-inline-mode}}Stephen K. Park \endNode{}\Node%
{\def\Element%
{5344}\def\ProcessingMode%
{biblioentry-inline-mode}}and Keith W. Miller\endNode{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5347}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}"Random Number Generators: Good Ones Are Hard to Find."\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5348}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}CACM\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5349}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}no. 10\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5350}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}vol. 31\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5351}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}pp. 1192-1201\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5352}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}October 1988\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5353}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5354}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Tausworthe 1965\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5356}\def\ProcessingMode%
{biblioentry-inline-mode}}R.C. Tausworthe\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5359}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}"Random Numbers Generated by Linear Recurrence modulo 2"\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5360}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Math. Comput.\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5361}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}vol. 19\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5362}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}pp. 201-209\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5363}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}1965\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5364}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5365}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Tezuka \& L'Ecuyer 1991\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5367}\def\ProcessingMode%
{biblioentry-inline-mode}}\Node%
{\def\Element%
{5368}\def\ProcessingMode%
{biblioentry-inline-mode}}Shu Tezuka \endNode{}\Node%
{\def\Element%
{5371}\def\ProcessingMode%
{biblioentry-inline-mode}}and Pierre L'Ecuyer\endNode{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5374}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}"Efficient and Portable Combined Tausworthe Random Number Generators."\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5375}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}ACM TOMACS\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5376}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}no. 2\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5377}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}vol. 1\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5378}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}pp. 99-112\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5379}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5380}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Russell 1992\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5381}\def\ProcessingMode%
{biblioentry-inline-mode}}Edward C. Russell\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5384}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}"Building Simulation Models With SIMSCRIPT II.5"\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5385}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}\Node%
{\def\Element%
{5386}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}CACI Products Company\endSeq{}\endNode{}, \Node%
{\def\Element%
{5388}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}La Jolla\endSeq{}\endNode{}\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5390}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}1992\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5391}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}The company's web site is: \Node%
{\def\Element%
{5392}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}\Seq%
{}http://www.caciasl.com\endSeq{}\endSeq{}\endNode{}\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5393}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5394}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Watkins 1994\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5396}\def\ProcessingMode%
{biblioentry-inline-mode}}Kevin Watkins\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5399}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Discrete Event Simulation in C\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5400}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}McGraw-Hill\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5401}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}1994\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\endSeq{}\endSeq{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.SGML.BIBLIOGRAPY}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{5403}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Bibliography\endSeq{}\endNode{}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\Node%
{\def\Element%
{5403}\def\ProcessingMode%
{hf-mode}}\Seq%
{}Bibliography\endSeq{}\endNode{}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\Node%
{\def\Element%
{5403}\def\ProcessingMode%
{component-title-mode}}Bibliography\endNode{}\endSeq{}\def\HeadingText{%
Bibliography}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Seq%
{}\Node%
{\def\Element%
{5403}}\endNode{}\Node%
{\def\Element%
{5404}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}A short bibliography of books, articles, papers useful for learning 
    to program with the Swarm libraries.\endPar{}\endNode{}\Node%
{\def\Element%
{5405}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5406}\def\ProcessingMode%
{xref-title-mode}}Books\endNode{}\def\HeadingText{%
Books}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5407}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5408}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Goldberg \& Robson, 1989\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5410}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Smalltalk 80 : The Language\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5411}\def\ProcessingMode%
{biblioentry-inline-mode}}\Node%
{\def\Element%
{5412}\def\ProcessingMode%
{biblioentry-inline-mode}}Adele Goldberg \endNode{}\Node%
{\def\Element%
{5415}\def\ProcessingMode%
{biblioentry-inline-mode}}and David Robson\endNode{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5418}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}0201136880\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5419}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}June 1989\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5420}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}\Node%
{\def\Element%
{5421}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Addions-Wesley\endSeq{}\endNode{}\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\Seq%
{}\Node%
{\def\Element%
{5422}\def\ProcessingMode%
{biblioentry-block-mode}}\DisplayGroup%
{}\Node%
{\def\Element%
{5423}\def\ProcessingMode%
{biblioentry-block-mode}}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{5424}\def\ProcessingMode%
{biblioentry-block-mode}}\Seq%
{\def\fWeight%
{bold}}Abstract. \endSeq{}\endNode{}\Node%
{\def\Element%
{5425}\def\ProcessingMode%
{biblioentry-block-mode}}\Seq%
{}Classic Smalltalk
            reference.\endSeq{}\endNode{}\endPar{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5426}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5427}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Kernighan \& Ritchie, 1988\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5430}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}The C Programming Language\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5431}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}K \& R\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5432}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5433}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}2\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5434}\def\ProcessingMode%
{biblioentry-inline-mode}}\Node%
{\def\Element%
{5435}\def\ProcessingMode%
{biblioentry-inline-mode}}Brian Kernighan \endNode{}\Node%
{\def\Element%
{5438}\def\ProcessingMode%
{biblioentry-inline-mode}}and Dennis Ritchie\endNode{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5441}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}0-13-110370-9\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5442}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Revised\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5443}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}1988\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5444}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}\Node%
{\def\Element%
{5445}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Prentice Hall\endSeq{}\endNode{}\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5446}\def\ProcessingMode%
{biblioentry-inline-mode}}\Node%
{\def\Element%
{5447}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}1988\endSeq{}\endNode{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\Seq%
{}\Node%
{\def\Element%
{5449}\def\ProcessingMode%
{biblioentry-block-mode}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}\Node%
{\def\Element%
{5450}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Prentice Hall Software Series\endSeq{}\endNode{}.\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{96\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Seq%
{}\Node%
{\def\Element%
{5451}\def\ProcessingMode%
{biblioentry-block-mode}}\DisplayGroup%
{}\Node%
{\def\Element%
{5452}\def\ProcessingMode%
{biblioentry-block-mode}}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{5453}\def\ProcessingMode%
{biblioentry-block-mode}}\Seq%
{\def\fWeight%
{bold}}Abstract. \endSeq{}\endNode{}\Node%
{\def\Element%
{5454}\def\ProcessingMode%
{biblioentry-block-mode}}\Seq%
{}The definitive reference on
          the C programming language by its
          inventors.\endSeq{}\endNode{}\endPar{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endSeq{}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5455}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5456}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}NeXT, 1993\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5458}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Object Oriented Programming and the Objective C Language\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5459}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}NeXT Computer\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5460}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}0-201-63251-9\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5461}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}1993\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5462}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}\Node%
{\def\Element%
{5463}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Addison-Wesley\endSeq{}\endNode{}\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\Seq%
{}\Node%
{\def\Element%
{5464}\def\ProcessingMode%
{biblioentry-block-mode}}\DisplayGroup%
{}\Node%
{\def\Element%
{5465}\def\ProcessingMode%
{biblioentry-block-mode}}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{5466}\def\ProcessingMode%
{biblioentry-block-mode}}\Seq%
{\def\fWeight%
{bold}}Abstract. \endSeq{}\endNode{}\Node%
{\def\Element%
{5467}\def\ProcessingMode%
{biblioentry-block-mode}}\Seq%
{}This book describes the
            Objective-C language as it is implemented for NeXTSTEP.
            While clearly targeted at NeXTSTEP, it is a good
            first-read to get to learn Objective-C\endSeq{}\endNode{}\endPar{}\endNode{}\endDisplayGroup{}\endNode{}\Seq%
{}\Node%
{\def\Element%
{5468}\def\ProcessingMode%
{biblioentry-block-mode}}\DisplayGroup%
{}\Node%
{\def\Element%
{5469}\def\ProcessingMode%
{biblioentry-block-mode}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This book is out of print, but availble at the : \Node%
{\def\Element%
{5470}\def\ProcessingMode%
{biblioentry-block-mode}}\Seq%
{}\Seq%
{}Apple website\endSeq{}\Seq%
{} (http://developer.apple.com/techpubs/macosxserver/ObjectiveC/index.html)\endSeq{}\endSeq{}\endNode{}\endPar{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endSeq{}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5471}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5472}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Van der Linden, 1994\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5474}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Expert C Programming\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5475}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Deep C Secrets\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5476}\def\ProcessingMode%
{biblioentry-inline-mode}}Peter van der Linden\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5479}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}0-13-177429-8\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5480}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}1994\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5481}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}\Node%
{\def\Element%
{5482}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}SunSoft Press: Prentice Hall\endSeq{}\endNode{}\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\Seq%
{}\Node%
{\def\Element%
{5483}\def\ProcessingMode%
{biblioentry-block-mode}}\DisplayGroup%
{}\Node%
{\def\Element%
{5484}\def\ProcessingMode%
{biblioentry-block-mode}}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Node%
{\def\Element%
{5485}\def\ProcessingMode%
{biblioentry-block-mode}}\Seq%
{\def\fWeight%
{bold}}Abstract. \endSeq{}\endNode{}\Node%
{\def\Element%
{5486}\def\ProcessingMode%
{biblioentry-block-mode}}\Seq%
{}A book for more advanced
            Swarm users: excellent for information on more abstruse
            matters of memory-management, linker issues and pointers.
            Covers much UNIX and C arcana which is difficult to find
            documented anywhere else (obscure man pages
            notwithstanding) in an engaging and humourous style.\endSeq{}\endNode{}\endPar{}\endNode{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5487}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5488}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}DiBona et. al. 1999\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5489}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Open Sources\endSeq{}\endNode{}\Seq%
{\def\fPosture%
{italic}}: \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5490}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{\def\fPosture%
{italic}}Voices from the Open Source Revolution\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5491}\def\ProcessingMode%
{biblioentry-inline-mode}}\Node%
{\def\Element%
{5492}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Edited by Chris DiBona, \endSeq{}\endNode{}\Node%
{\def\Element%
{5495}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Edited by Sam Ockman, \endSeq{}\endNode{}\Node%
{\def\Element%
{5498}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Edited by and Mark Stone\endSeq{}\endNode{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5501}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}1-56592-582-3\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5502}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}1999\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5503}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}\Node%
{\def\Element%
{5504}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}O'Reilly \& Associates Inc.\endSeq{}\endNode{}, \Node%
{\def\Element%
{5506}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Sebastopol\endSeq{}\endNode{}\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5508}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5509}\def\ProcessingMode%
{xref-title-mode}}Papers\endNode{}\def\HeadingText{%
Papers}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5510}}\DisplayGroup%
{}\Par%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{-24\p@}\def\FirstLineStartIndentFactor%
{0}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}\Seq%
{}[\Node%
{\def\Element%
{5511}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Daniels, 1999\endSeq{}\endNode{}] \endSeq{}\Seq%
{}\Node%
{\def\Element%
{5512}\def\ProcessingMode%
{biblioentry-inline-mode}}Marcus Daniels\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5517}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}\Node%
{\def\Element%
{5518}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Agent Simulation: Applications, Models and
      Tools\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5519}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}October 1999\endSeq{}\endNode{}, \Seq%
{}\Node%
{\def\Element%
{5520}\def\ProcessingMode%
{biblioentry-inline-mode}}\Seq%
{}Argonne National Laboratory, University of
          Chicago\endSeq{}\endNode{}\endSeq{}\endSeq{}\endSeq{}\endNode{}.\endSeq{}\endSeq{}\endPar{}\DisplayGroup%
{\def\StartIndent%
{72\p@}\def\StartIndentFactor%
{0}}\endDisplayGroup{}\endDisplayGroup{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSeq{}\endSpS{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.GENERATED.INDEX}}\SpS%
{\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\PageNColumns%
{2}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Index\def\HeadingText{%
Index}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{5522}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5523}\def\ProcessingMode%
{xref-title-mode}}A\endNode{}\def\HeadingText{%
A}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5523}}\endNode{}\Node%
{\def\Element%
{5524}}\Node%
{\def\Element%
{5525}}\Par%
{}ActionGroup,
    \Node%
{\def\Element%
{5526}}\Link%
{\def\Element%
{1720}}\Node%
{\def\Element%
{1720}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1720}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5527}}\Node%
{\def\Element%
{5528}}\Par%
{}activateIn,
    \Node%
{\def\Element%
{5529}}\Link%
{\def\Element%
{815}}\Node%
{\def\Element%
{815}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{815}}\endNode{}\endLink{}\endNode{},
    \Node%
{\def\Element%
{5530}}\Link%
{\def\Element%
{1739}}\Node%
{\def\Element%
{1739}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1739}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5531}}\Node%
{\def\Element%
{5532}}\Par%
{}Activity,
    \Node%
{\def\Element%
{5533}}\Link%
{\def\Element%
{1766}}\Node%
{\def\Element%
{1766}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1766}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5534}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}starting and stopping,
    \Node%
{\def\Element%
{5535}}\Link%
{\def\Element%
{1785}}\Node%
{\def\Element%
{1785}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1785}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5536}}\Node%
{\def\Element%
{5537}}\Par%
{}agent-based,
    \Node%
{\def\Element%
{5538}}\Link%
{\def\Element%
{183}}\Node%
{\def\Element%
{183}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{183}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5539}}\Node%
{\def\Element%
{5540}}\Par%
{}agents
  \endPar{}\endNode{}\Node%
{\def\Element%
{5541}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}auxiliary      ,
    \Node%
{\def\Element%
{5542}}\Link%
{\def\Element%
{695}}\Node%
{\def\Element%
{695}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{695}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5543}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}primary         ,
    \Node%
{\def\Element%
{5544}}\Link%
{\def\Element%
{691}}\Node%
{\def\Element%
{691}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{691}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5545}}\Node%
{\def\Element%
{5546}}\Par%
{}arborgames,
    \Node%
{\def\Element%
{5547}}\Link%
{\def\Element%
{801}}\Node%
{\def\Element%
{801}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{801}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5548}}\Node%
{\def\Element%
{5549}}\Par%
{}Archiver
  \endPar{}\endNode{}\Node%
{\def\Element%
{5550}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}application
  \endPar{}\endNode{}\Node%
{\def\Element%
{5551}}\Par%
{\def\StartIndent%
{68\p@}\def\StartIndentFactor%
{0}}global,
    \Node%
{\def\Element%
{5552}}\Seq%
{\def\fWeight%
{bold}}\Link%
{\def\Element%
{3343}}\Node%
{\def\Element%
{3343}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3343}}\endNode{}\endLink{}\endSeq{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5554}}\Node%
{\def\Element%
{5555}}\Par%
{}Arguments protocol,
    \Node%
{\def\Element%
{5556}}\Link%
{\def\Element%
{2533}}\Node%
{\def\Element%
{2533}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2533}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5557}}\Node%
{\def\Element%
{5558}}\Par%
{}Array
  \endPar{}\endNode{}\Node%
{\def\Element%
{5559}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}(See collections)\endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5560}}\Node%
{\def\Element%
{5561}}\Par%
{}atOffset:,
    \Node%
{\def\Element%
{5562}}\Link%
{\def\Element%
{2764}}\Node%
{\def\Element%
{2764}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2764}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5563}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5564}\def\ProcessingMode%
{xref-title-mode}}B\endNode{}\def\HeadingText{%
B}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5564}}\endNode{}\Node%
{\def\Element%
{5565}}\Node%
{\def\Element%
{5566}}\Par%
{}buildActions
  \endPar{}\endNode{}\Node%
{\def\Element%
{5567}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}(See Schedule)\endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5568}}\Node%
{\def\Element%
{5569}}\Par%
{}buildObjects
  \endPar{}\endNode{}\Node%
{\def\Element%
{5570}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}(See object creation)\endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5571}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5572}\def\ProcessingMode%
{xref-title-mode}}C\endNode{}\def\HeadingText{%
C}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5572}}\endNode{}\Node%
{\def\Element%
{5573}}\Node%
{\def\Element%
{5574}}\Par%
{}collections
  \endPar{}\endNode{}\Node%
{\def\Element%
{5575}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}arrays
  \endPar{}\endNode{}\Node%
{\def\Element%
{5576}}\Par%
{\def\StartIndent%
{68\p@}\def\StartIndentFactor%
{0}}contrast with maps,
    \Node%
{\def\Element%
{5577}}\Link%
{\def\Element%
{2813}}\Node%
{\def\Element%
{2813}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2813}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5578}}\Par%
{\def\StartIndent%
{68\p@}\def\StartIndentFactor%
{0}}usage,
    \Node%
{\def\Element%
{5579}}\Link%
{\def\Element%
{2887}}\Node%
{\def\Element%
{2887}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2887}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5580}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}index usage,
    \Node%
{\def\Element%
{5581}}\Link%
{\def\Element%
{1997}}\Node%
{\def\Element%
{1997}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1997}}\endNode{}\endLink{}\endNode{},
    \Node%
{\def\Element%
{5582}}\Link%
{\def\Element%
{3045}}\Node%
{\def\Element%
{3045}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3045}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5583}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}lists,
    \Node%
{\def\Element%
{5584}}\Link%
{\def\Element%
{1846}}\Node%
{\def\Element%
{1846}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1846}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5585}}\Par%
{\def\StartIndent%
{68\p@}\def\StartIndentFactor%
{0}}adding and removing objects,
    \Node%
{\def\Element%
{5586}}\Link%
{\def\Element%
{1877}}\Node%
{\def\Element%
{1877}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1877}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5587}}\Par%
{\def\StartIndent%
{68\p@}\def\StartIndentFactor%
{0}}looping through members,
    \Node%
{\def\Element%
{5588}}\Link%
{\def\Element%
{1990}}\Node%
{\def\Element%
{1990}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1990}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5589}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}maps
  \endPar{}\endNode{}\Node%
{\def\Element%
{5590}}\Par%
{\def\StartIndent%
{68\p@}\def\StartIndentFactor%
{0}}contrast with arrays,
    \Node%
{\def\Element%
{5591}}\Link%
{\def\Element%
{2809}}\Node%
{\def\Element%
{2809}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2809}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5592}}\Par%
{\def\StartIndent%
{68\p@}\def\StartIndentFactor%
{0}}keys,
    \Node%
{\def\Element%
{5593}}\Link%
{\def\Element%
{2948}}\Node%
{\def\Element%
{2948}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2948}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5594}}\Par%
{\def\StartIndent%
{68\p@}\def\StartIndentFactor%
{0}}usage,
    \Node%
{\def\Element%
{5595}}\Link%
{\def\Element%
{2932}}\Node%
{\def\Element%
{2932}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2932}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5596}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}nil objects in,
    \Node%
{\def\Element%
{5597}}\Link%
{\def\Element%
{2068}}\Node%
{\def\Element%
{2068}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2068}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5598}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}wrapper usage in,
    \Node%
{\def\Element%
{5599}}\Link%
{\def\Element%
{2756}}\Node%
{\def\Element%
{2756}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2756}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5600}}\Node%
{\def\Element%
{5601}}\Par%
{}complex systems,
    \Node%
{\def\Element%
{5602}}\Link%
{\def\Element%
{174}}\Node%
{\def\Element%
{174}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{174}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5603}}\Node%
{\def\Element%
{5604}}\Par%
{}control panel,
    \Node%
{\def\Element%
{5605}}\Link%
{\def\Element%
{2101}}\Node%
{\def\Element%
{2101}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2101}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5606}}\Node%
{\def\Element%
{5607}}\Par%
{}CREATABLE,
    \Node%
{\def\Element%
{5608}}\Link%
{\def\Element%
{1307}}\Node%
{\def\Element%
{1307}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1307}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5609}}\Node%
{\def\Element%
{5610}}\Par%
{}createActionForEach:
  \endPar{}\endNode{}\Node%
{\def\Element%
{5611}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}usage     in schedules,
    \Node%
{\def\Element%
{5612}}\Link%
{\def\Element%
{1572}}\Node%
{\def\Element%
{1572}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1572}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5613}}\Node%
{\def\Element%
{5614}}\Par%
{}createActionTo:
  \endPar{}\endNode{}\Node%
{\def\Element%
{5615}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}usage in schedules,
    \Node%
{\def\Element%
{5616}}\Link%
{\def\Element%
{1545}}\Node%
{\def\Element%
{1545}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1545}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5617}}\Node%
{\def\Element%
{5618}}\Par%
{}createBegin
  \endPar{}\endNode{}\Node%
{\def\Element%
{5619}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}(See object creation)\endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5620}}\Node%
{\def\Element%
{5621}}\Par%
{}Creating
  \endPar{}\endNode{}\Node%
{\def\Element%
{5622}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}(See phases)\endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5623}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5624}\def\ProcessingMode%
{xref-title-mode}}D\endNode{}\def\HeadingText{%
D}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5624}}\endNode{}\Node%
{\def\Element%
{5625}}\Node%
{\def\Element%
{5626}}\Par%
{}deleteAll,
    \Node%
{\def\Element%
{5627}}\Link%
{\def\Element%
{2771}}\Node%
{\def\Element%
{2771}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2771}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5628}}\Node%
{\def\Element%
{5629}}\Par%
{}Drone,
    \Node%
{\def\Element%
{5630}}\Link%
{\def\Element%
{2531}}\Node%
{\def\Element%
{2531}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2531}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5631}}\Node%
{\def\Element%
{5632}}\Par%
{}drop,
    \Node%
{\def\Element%
{5633}}\Link%
{\def\Element%
{1223}}\Node%
{\def\Element%
{1223}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1223}}\endNode{}\endLink{}\endNode{},
    \Node%
{\def\Element%
{5634}}\Link%
{\def\Element%
{1350}}\Node%
{\def\Element%
{1350}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1350}}\endNode{}\endLink{}\endNode{},
    \Node%
{\def\Element%
{5635}}\Seq%
{\def\fWeight%
{bold}}\Link%
{\def\Element%
{2690}}\Node%
{\def\Element%
{2690}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2690}}\endNode{}\endLink{}\endSeq{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5637}}\Node%
{\def\Element%
{5638}}\Par%
{}dynamic scheduling
  \endPar{}\endNode{}\Node%
{\def\Element%
{5639}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}(See Schedule)\endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5640}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5641}\def\ProcessingMode%
{xref-title-mode}}E\endNode{}\def\HeadingText{%
E}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5641}}\endNode{}\Node%
{\def\Element%
{5642}}\Node%
{\def\Element%
{5643}}\Par%
{}EZDistribution,
    \Node%
{\def\Element%
{5644}}\Link%
{\def\Element%
{2121}}\Node%
{\def\Element%
{2121}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2121}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5645}}\Node%
{\def\Element%
{5646}}\Par%
{}EZGraph,
    \Node%
{\def\Element%
{5647}}\Link%
{\def\Element%
{2119}}\Node%
{\def\Element%
{2119}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2119}}\endNode{}\endLink{}\endNode{},
    \Node%
{\def\Element%
{5648}}\Link%
{\def\Element%
{2282}}\Node%
{\def\Element%
{2282}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2282}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5649}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5650}\def\ProcessingMode%
{xref-title-mode}}F\endNode{}\def\HeadingText{%
F}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5650}}\endNode{}\Node%
{\def\Element%
{5651}}\Node%
{\def\Element%
{5652}}\Par%
{}forEach:,
    \Node%
{\def\Element%
{5653}}\Link%
{\def\Element%
{2773}}\Node%
{\def\Element%
{2773}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2773}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5654}}\Node%
{\def\Element%
{5655}}\Par%
{}function
  \endPar{}\endNode{}\Node%
{\def\Element%
{5656}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}C,
    \Node%
{\def\Element%
{5657}}\Link%
{\def\Element%
{2586}}\Node%
{\def\Element%
{2586}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2586}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5658}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5659}\def\ProcessingMode%
{xref-title-mode}}G\endNode{}\def\HeadingText{%
G}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5659}}\endNode{}\Node%
{\def\Element%
{5660}}\Node%
{\def\Element%
{5661}}\Par%
{}get methods,
    \Node%
{\def\Element%
{5662}}\Link%
{\def\Element%
{1388}}\Node%
{\def\Element%
{1388}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1388}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5663}}\Node%
{\def\Element%
{5664}}\Par%
{}getActivity
  \endPar{}\endNode{}\Node%
{\def\Element%
{5665}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}(See Activity)\endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5666}}\Node%
{\def\Element%
{5667}}\Par%
{}getCount,
    \Node%
{\def\Element%
{5668}}\Link%
{\def\Element%
{1966}}\Node%
{\def\Element%
{1966}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1966}}\endNode{}\endLink{}\endNode{},
    \Node%
{\def\Element%
{5669}}\Link%
{\def\Element%
{2762}}\Node%
{\def\Element%
{2762}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2762}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5670}}\Node%
{\def\Element%
{5671}}\Par%
{}graphical interface
  \endPar{}\endNode{}\Node%
{\def\Element%
{5672}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}(See GUISwarm)\endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5673}}\Node%
{\def\Element%
{5674}}\Par%
{}GUISwarm,
    \Node%
{\def\Element%
{5675}}\Link%
{\def\Element%
{1165}}\Node%
{\def\Element%
{1165}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1165}}\endNode{}\endLink{}\endNode{},
    \Node%
{\def\Element%
{5676}}\Link%
{\def\Element%
{2094}}\Node%
{\def\Element%
{2094}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2094}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5677}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}data display graphs,
    \Node%
{\def\Element%
{5678}}\Link%
{\def\Element%
{2279}}\Node%
{\def\Element%
{2279}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2279}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5679}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}graph types,
    \Node%
{\def\Element%
{5680}}\Link%
{\def\Element%
{830}}\Node%
{\def\Element%
{830}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{830}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5681}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5682}\def\ProcessingMode%
{xref-title-mode}}H\endNode{}\def\HeadingText{%
H}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5682}}\endNode{}\Node%
{\def\Element%
{5683}}\Node%
{\def\Element%
{5684}}\Par%
{}HDF5,
    \Node%
{\def\Element%
{5685}}\Seq%
{\def\fWeight%
{bold}}\Link%
{\def\Element%
{3313}}\Node%
{\def\Element%
{3313}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3313}}\endNode{}\endLink{}\endSeq{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5687}}\Node%
{\def\Element%
{5688}}\Par%
{}heatbugs
  \endPar{}\endNode{}\Node%
{\def\Element%
{5689}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}command-line parameters,
    \Node%
{\def\Element%
{5690}}\Link%
{\def\Element%
{2517}}\Node%
{\def\Element%
{2517}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2517}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5691}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}creating objects in,
    \Node%
{\def\Element%
{5692}}\Link%
{\def\Element%
{1087}}\Node%
{\def\Element%
{1087}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1087}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5693}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}parameter files,
    \Node%
{\def\Element%
{5694}}\Link%
{\def\Element%
{3366}}\Node%
{\def\Element%
{3366}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3366}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5695}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5696}\def\ProcessingMode%
{xref-title-mode}}I\endNode{}\def\HeadingText{%
I}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5696}}\endNode{}\Node%
{\def\Element%
{5697}}\Node%
{\def\Element%
{5698}}\Par%
{}Index Protocol
  \endPar{}\endNode{}\Node%
{\def\Element%
{5699}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}(See collections)\endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5700}}\Node%
{\def\Element%
{5701}}\Par%
{}instance variables
  \endPar{}\endNode{}\Node%
{\def\Element%
{5702}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}intitialization,
    \Node%
{\def\Element%
{5703}}\Link%
{\def\Element%
{1374}}\Node%
{\def\Element%
{1374}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1374}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5704}}\Node%
{\def\Element%
{5705}}\Par%
{}instantiation
  \endPar{}\endNode{}\Node%
{\def\Element%
{5706}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}(See object creation)\endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5707}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5708}\def\ProcessingMode%
{xref-title-mode}}J\endNode{}\def\HeadingText{%
J}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5708}}\endNode{}\Node%
{\def\Element%
{5709}}\Node%
{\def\Element%
{5710}}\Par%
{}Java,
    \Node%
{\def\Element%
{5711}}\Seq%
{\def\fWeight%
{bold}}\Link%
{\def\Element%
{349}}\Node%
{\def\Element%
{349}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{349}}\endNode{}\endLink{}\endSeq{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5713}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}constructor
  \endPar{}\endNode{}\Node%
{\def\Element%
{5714}}\Par%
{\def\StartIndent%
{68\p@}\def\StartIndentFactor%
{0}}(See object creation)\endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5715}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5716}\def\ProcessingMode%
{xref-title-mode}}L\endNode{}\def\HeadingText{%
L}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5716}}\endNode{}\Node%
{\def\Element%
{5717}}\Node%
{\def\Element%
{5718}}\Par%
{}Lisp,
    \Node%
{\def\Element%
{5719}}\Seq%
{\def\fWeight%
{bold}}\Link%
{\def\Label%
{SWARM.SGML.INDEXTERM.LISP}}\Node%
{\def\Label%
{SWARM.SGML.INDEXTERM.LISP}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Label%
{SWARM.SGML.INDEXTERM.LISP}}\endNode{}\endLink{}\endSeq{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5721}}\Node%
{\def\Element%
{5722}}\Par%
{}LispArchiver
  \endPar{}\endNode{}\Node%
{\def\Element%
{5723}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}application
  \endPar{}\endNode{}\Node%
{\def\Element%
{5724}}\Par%
{\def\StartIndent%
{68\p@}\def\StartIndentFactor%
{0}}custom,
    \Node%
{\def\Element%
{5725}}\Link%
{\def\Element%
{3421}}\Node%
{\def\Element%
{3421}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3421}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5726}}\Node%
{\def\Element%
{5727}}\Par%
{}List Protocol
  \endPar{}\endNode{}\Node%
{\def\Element%
{5728}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}(See collections)\endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5729}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5730}\def\ProcessingMode%
{xref-title-mode}}M\endNode{}\def\HeadingText{%
M}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5730}}\endNode{}\Node%
{\def\Element%
{5731}}\Node%
{\def\Element%
{5732}}\Par%
{}M()
  \endPar{}\endNode{}\Node%
{\def\Element%
{5733}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}(See selector)\endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5734}}\Node%
{\def\Element%
{5735}}\Par%
{}Map
  \endPar{}\endNode{}\Node%
{\def\Element%
{5736}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}(See collections)\endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5737}}\Node%
{\def\Element%
{5738}}\Par%
{}memory allocation
  \endPar{}\endNode{}\Node%
{\def\Element%
{5739}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}dynamic,
    \Node%
{\def\Element%
{5740}}\Link%
{\def\Element%
{2651}}\Node%
{\def\Element%
{2651}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2651}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5741}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}Swarm Zones,
    \Node%
{\def\Element%
{5742}}\Link%
{\def\Element%
{740}}\Node%
{\def\Element%
{740}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{740}}\endNode{}\endLink{}\endNode{},
    \Node%
{\def\Element%
{5743}}\Link%
{\def\Element%
{1220}}\Node%
{\def\Element%
{1220}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1220}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5744}}\Node%
{\def\Element%
{5745}}\Par%
{}mousetrap
  \endPar{}\endNode{}\Node%
{\def\Element%
{5746}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}parameter files,
    \Node%
{\def\Element%
{5747}}\Link%
{\def\Element%
{3428}}\Node%
{\def\Element%
{3428}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3428}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5748}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5749}\def\ProcessingMode%
{xref-title-mode}}O\endNode{}\def\HeadingText{%
O}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5749}}\endNode{}\Node%
{\def\Element%
{5750}}\Node%
{\def\Element%
{5751}}\Par%
{}object creation,
    \Node%
{\def\Element%
{5752}}\Seq%
{\def\fWeight%
{bold}}\Link%
{\def\Element%
{546}}\Node%
{\def\Element%
{546}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{546}}\endNode{}\endLink{}\endSeq{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5754}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}buildObjects method,
    \Node%
{\def\Element%
{5755}}\Link%
{\def\Element%
{749}}\Node%
{\def\Element%
{749}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{749}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5756}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}CREATABLE protocol,
    \Node%
{\def\Element%
{5757}}\Link%
{\def\Element%
{644}}\Node%
{\def\Element%
{644}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{644}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5758}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}create,
    \Node%
{\def\Element%
{5759}}\Link%
{\def\Element%
{1205}}\Node%
{\def\Element%
{1205}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1205}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5760}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}createBegin,
    \Node%
{\def\Element%
{5761}}\Link%
{\def\Element%
{1154}}\Node%
{\def\Element%
{1154}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1154}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5762}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}createBegin/createEnd,
    \Node%
{\def\Element%
{5763}}\Link%
{\def\Element%
{571}}\Node%
{\def\Element%
{571}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{571}}\endNode{}\endLink{}\endNode{},
    \Node%
{\def\Element%
{5764}}\Link%
{\def\Element%
{1099}}\Node%
{\def\Element%
{1099}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1099}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5765}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}createEnd,
    \Node%
{\def\Element%
{5766}}\Link%
{\def\Element%
{1179}}\Node%
{\def\Element%
{1179}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1179}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5767}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}in Java,
    \Node%
{\def\Element%
{5768}}\Link%
{\def\Element%
{595}}\Node%
{\def\Element%
{595}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{595}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5769}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}in Objective C,
    \Node%
{\def\Element%
{5770}}\Link%
{\def\Element%
{558}}\Node%
{\def\Element%
{558}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{558}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5771}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}object recycling,
    \Node%
{\def\Element%
{5772}}\Link%
{\def\Element%
{1352}}\Node%
{\def\Element%
{1352}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1352}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5773}}\Node%
{\def\Element%
{5774}}\Par%
{}object-oriented programming,
    \Node%
{\def\Element%
{5775}}\Seq%
{\def\fWeight%
{bold}}\Link%
{\def\Element%
{333}}\Node%
{\def\Element%
{333}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{333}}\endNode{}\endLink{}\endSeq{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5777}}\Node%
{\def\Element%
{5778}}\Par%
{}Object2dDisplay
  \endPar{}\endNode{}\Node%
{\def\Element%
{5779}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}usage example,
    \Node%
{\def\Element%
{5780}}\Link%
{\def\Element%
{1639}}\Node%
{\def\Element%
{1639}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1639}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5781}}\Node%
{\def\Element%
{5782}}\Par%
{}Objective C,
    \Node%
{\def\Element%
{5783}}\Seq%
{\def\fWeight%
{bold}}\Link%
{\def\Element%
{340}}\Node%
{\def\Element%
{340}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{340}}\endNode{}\endLink{}\endSeq{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5785}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}protocols
  \endPar{}\endNode{}\Node%
{\def\Element%
{5786}}\Par%
{\def\StartIndent%
{68\p@}\def\StartIndentFactor%
{0}}usage inSwarm,
    \Node%
{\def\Element%
{5787}}\Link%
{\def\Element%
{632}}\Node%
{\def\Element%
{632}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{632}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5788}}\Node%
{\def\Element%
{5789}}\Par%
{}objects
  \endPar{}\endNode{}\Node%
{\def\Element%
{5790}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}getting     information from,
    \Node%
{\def\Element%
{5791}}\Link%
{\def\Element%
{1443}}\Node%
{\def\Element%
{1443}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1443}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5792}}\Node%
{\def\Element%
{5793}}\Par%
{}OO
  \endPar{}\endNode{}\Node%
{\def\Element%
{5794}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}(See object-oriented programming)\endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5795}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5796}\def\ProcessingMode%
{xref-title-mode}}P\endNode{}\def\HeadingText{%
P}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5796}}\endNode{}\Node%
{\def\Element%
{5797}}\Node%
{\def\Element%
{5798}}\Par%
{}parameter
  \endPar{}\endNode{}\Node%
{\def\Element%
{5799}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}command-line,
    \Node%
{\def\Element%
{5800}}\Link%
{\def\Element%
{2509}}\Node%
{\def\Element%
{2509}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2509}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5801}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}files,
    \Node%
{\def\Element%
{5802}}\Link%
{\def\Element%
{3333}}\Node%
{\def\Element%
{3333}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3333}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5803}}\Node%
{\def\Element%
{5804}}\Par%
{}phases,
    \Node%
{\def\Element%
{5805}}\Link%
{\def\Element%
{1116}}\Node%
{\def\Element%
{1116}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1116}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5806}}\Node%
{\def\Element%
{5807}}\Par%
{}ProbabilityDistribution Protocol
  \endPar{}\endNode{}\Node%
{\def\Element%
{5808}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}(See random numbers)\endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5809}}\Node%
{\def\Element%
{5810}}\Par%
{}probe displays,
    \Node%
{\def\Element%
{5811}}\Link%
{\def\Element%
{856}}\Node%
{\def\Element%
{856}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{856}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5812}}\Node%
{\def\Element%
{5813}}\Par%
{}programming
  \endPar{}\endNode{}\Node%
{\def\Element%
{5814}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}object-oriented programming,
    \Node%
{\def\Element%
{5815}}\Link%
{\def\Element%
{188}}\Node%
{\def\Element%
{188}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{188}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5816}}\Par%
{\def\StartIndent%
{68\p@}\def\StartIndentFactor%
{0}}encapsulation,
    \Node%
{\def\Element%
{5817}}\Link%
{\def\Element%
{259}}\Node%
{\def\Element%
{259}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{259}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5818}}\Par%
{\def\StartIndent%
{68\p@}\def\StartIndentFactor%
{0}}inheritance,
    \Node%
{\def\Element%
{5819}}\Link%
{\def\Element%
{275}}\Node%
{\def\Element%
{275}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{275}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5820}}\Node%
{\def\Element%
{5821}}\Par%
{}protocols
  \endPar{}\endNode{}\Node%
{\def\Element%
{5822}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}(See Objective C)\endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5823}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5824}\def\ProcessingMode%
{xref-title-mode}}R\endNode{}\def\HeadingText{%
R}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5824}}\endNode{}\Node%
{\def\Element%
{5825}}\Node%
{\def\Element%
{5826}}\Par%
{}random numbers
  \endPar{}\endNode{}\Node%
{\def\Element%
{5827}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}built-in distributions,
    \Node%
{\def\Element%
{5828}}\Link%
{\def\Element%
{3100}}\Node%
{\def\Element%
{3100}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3100}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5829}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}creatable distributions,
    \Node%
{\def\Element%
{5830}}\Link%
{\def\Element%
{3244}}\Node%
{\def\Element%
{3244}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3244}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5831}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}generators,
    \Node%
{\def\Element%
{5832}}\Link%
{\def\Element%
{3162}}\Node%
{\def\Element%
{3162}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3162}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5833}}\Node%
{\def\Element%
{5834}}\Par%
{}removeAll,
    \Node%
{\def\Element%
{5835}}\Link%
{\def\Element%
{2769}}\Node%
{\def\Element%
{2769}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2769}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5836}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5837}\def\ProcessingMode%
{xref-title-mode}}S\endNode{}\def\HeadingText{%
S}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5837}}\endNode{}\Node%
{\def\Element%
{5838}}\Node%
{\def\Element%
{5839}}\Par%
{}Schedule
  \endPar{}\endNode{}\Node%
{\def\Element%
{5840}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}buildActions method,
    \Node%
{\def\Element%
{5841}}\Link%
{\def\Element%
{786}}\Node%
{\def\Element%
{786}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{786}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5842}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}creating,
    \Node%
{\def\Element%
{5843}}\Link%
{\def\Element%
{1538}}\Node%
{\def\Element%
{1538}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1538}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5844}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}dynamic,
    \Node%
{\def\Element%
{5845}}\Link%
{\def\Element%
{1796}}\Node%
{\def\Element%
{1796}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1796}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5846}}\Node%
{\def\Element%
{5847}}\Par%
{}selector
  \endPar{}\endNode{}\Node%
{\def\Element%
{5848}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}adding arguments to,
    \Node%
{\def\Element%
{5849}}\Link%
{\def\Element%
{1610}}\Node%
{\def\Element%
{1610}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1610}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5850}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}defined,
    \Node%
{\def\Element%
{5851}}\Link%
{\def\Element%
{1584}}\Node%
{\def\Element%
{1584}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1584}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5852}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}in schedules,
    \Node%
{\def\Element%
{5853}}\Link%
{\def\Element%
{1596}}\Node%
{\def\Element%
{1596}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1596}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5854}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}justification for usage,
    \Node%
{\def\Element%
{5855}}\Link%
{\def\Element%
{1620}}\Node%
{\def\Element%
{1620}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1620}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5856}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}nonobject     arguments to,
    \Node%
{\def\Element%
{5857}}\Link%
{\def\Element%
{1696}}\Node%
{\def\Element%
{1696}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1696}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5858}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}usage in display objects,
    \Node%
{\def\Element%
{5859}}\Link%
{\def\Element%
{1636}}\Node%
{\def\Element%
{1636}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1636}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5860}}\Node%
{\def\Element%
{5861}}\Par%
{}serialization,
    \Node%
{\def\Element%
{5862}}\Seq%
{\def\fWeight%
{bold}}\Link%
{\def\Element%
{3306}}\Node%
{\def\Element%
{3306}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{3306}}\endNode{}\endLink{}\endSeq{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5864}}\Node%
{\def\Element%
{5865}}\Par%
{}set methods,
    \Node%
{\def\Element%
{5866}}\Link%
{\def\Element%
{1390}}\Node%
{\def\Element%
{1390}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1390}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5867}}\Node%
{\def\Element%
{5868}}\Par%
{}Setting
  \endPar{}\endNode{}\Node%
{\def\Element%
{5869}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}(See phases)\endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5870}}\Node%
{\def\Element%
{5871}}\Par%
{}simulation
  \endPar{}\endNode{}\Node%
{\def\Element%
{5872}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}agent-based,
    \Node%
{\def\Element%
{5873}}\Link%
{\def\Element%
{176}}\Node%
{\def\Element%
{176}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{176}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5874}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}discrete event,
    \Node%
{\def\Element%
{5875}}\Link%
{\def\Element%
{296}}\Node%
{\def\Element%
{296}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{296}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5876}}\Node%
{\def\Element%
{5877}}\Par%
{}stopping a simulation
  \endPar{}\endNode{}\Node%
{\def\Element%
{5878}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}(See Activity)\endPar{}\endNode{}\endNode{}\Node%
{\def\Element%
{5879}}\Node%
{\def\Element%
{5880}}\Par%
{}Swarm,
    \Node%
{\def\Element%
{5881}}\Seq%
{\def\fWeight%
{bold}}\Link%
{\def\Element%
{679}}\Node%
{\def\Element%
{679}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{679}}\endNode{}\endLink{}\endSeq{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5883}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}agents
  \endPar{}\endNode{}\Node%
{\def\Element%
{5884}}\Par%
{\def\StartIndent%
{68\p@}\def\StartIndentFactor%
{0}}(See agents)\endPar{}\endNode{}\Node%
{\def\Element%
{5885}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}common syntax,
    \Node%
{\def\Element%
{5886}}\Link%
{\def\Element%
{702}}\Node%
{\def\Element%
{702}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{702}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5887}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}described,
    \Node%
{\def\Element%
{5888}}\Link%
{\def\Element%
{99}}\Node%
{\def\Element%
{99}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{99}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5889}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}tutorial,
    \Node%
{\def\Element%
{5890}}\Link%
{\def\Element%
{1003}}\Node%
{\def\Element%
{1003}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1003}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5891}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}using Swarm library objects ,
    \Node%
{\def\Element%
{5892}}\Link%
{\def\Element%
{1273}}\Node%
{\def\Element%
{1273}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1273}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5893}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5894}\def\ProcessingMode%
{xref-title-mode}}U\endNode{}\def\HeadingText{%
U}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5894}}\endNode{}\Node%
{\def\Element%
{5895}}\Node%
{\def\Element%
{5896}}\Par%
{}Using
  \endPar{}\endNode{}\Node%
{\def\Element%
{5897}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}(See phases)\endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5898}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5899}\def\ProcessingMode%
{xref-title-mode}}V\endNode{}\def\HeadingText{%
V}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5899}}\endNode{}\Node%
{\def\Element%
{5900}}\Node%
{\def\Element%
{5901}}\Par%
{}variable declarations
  \endPar{}\endNode{}\Node%
{\def\Element%
{5902}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}protocol usage in,
    \Node%
{\def\Element%
{5903}}\Link%
{\def\Element%
{658}}\Node%
{\def\Element%
{658}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{658}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5904}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5905}\def\ProcessingMode%
{xref-title-mode}}W\endNode{}\def\HeadingText{%
W}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5905}}\endNode{}\Node%
{\def\Element%
{5906}}\Node%
{\def\Element%
{5907}}\Par%
{}wrapper,
    \Node%
{\def\Element%
{5908}}\Link%
{\def\Element%
{1699}}\Node%
{\def\Element%
{1699}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{1699}}\endNode{}\endLink{}\endNode{},
    \Node%
{\def\Element%
{5909}}\Link%
{\def\Element%
{2759}}\Node%
{\def\Element%
{2759}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2759}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\Node%
{\def\Element%
{5910}}\Par%
{\def\StartIndent%
{58\p@}\def\StartIndentFactor%
{0}}integer wrapper as map key,
    \Node%
{\def\Element%
{5911}}\Link%
{\def\Element%
{2995}}\Node%
{\def\Element%
{2995}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2995}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\Node%
{\def\Element%
{5912}}\DisplayGroup%
{\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\sbNom%
{10\p@}\def\sbMin%
{10\p@}\def\sbMax%
{10\p@}\def\sbConditional%
{1}\def\saNom%
{10\p@}\def\saMin%
{10\p@}\def\saMax%
{10\p@}\def\saConditional%
{1}}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{upright}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{2}\def\sbNom%
{12.96\p@}\def\sbMin%
{12.96\p@}\def\sbMax%
{12.96\p@}\def\sbConditional%
{1}\def\saNom%
{8.64\p@}\def\saMin%
{8.64\p@}\def\saMax%
{8.64\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Node%
{\def\Element%
{5913}\def\ProcessingMode%
{xref-title-mode}}Z\endNode{}\def\HeadingText{%
Z}%
\endHeadPar{}\endSeq{}\Node%
{\def\Element%
{5913}}\endNode{}\Node%
{\def\Element%
{5914}}\Node%
{\def\Element%
{5915}}\Par%
{}ZoomRaster,
    \Node%
{\def\Element%
{5916}}\Link%
{\def\Element%
{2110}}\Node%
{\def\Element%
{2110}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2110}}\endNode{}\endLink{}\endNode{},
    \Node%
{\def\Element%
{5917}}\Link%
{\def\Element%
{2134}}\Node%
{\def\Element%
{2134}\def\ProcessingMode%
{toc-page-number-mode}}\insertCurrentNodePageNumber%
{\def\Element%
{2134}}\endNode{}\endLink{}\endNode{}
  \endPar{}\endNode{}\endNode{}\endSeq{}\endDisplayGroup{}\endNode{}\endSeq{}\endSpS{}\endNode{}\Node%
{\def\Label%
{SWARM.USER.COLOPHON}}\SpS%
{\def\PageNColumns%
{1}\def\PageNumberRestart%
{0}\def\PageNumberFormat%
{1}\def\StartIndent%
{48\p@}\def\StartIndentFactor%
{0}\def\InputWhitespaceTreatment%
{collapse}\def\Quadding%
{start}\def\fSize%
{10\p@}\def\fWeight%
{medium}\def\fPosture%
{upright}\def\fFamName{Times-New-Roman}\def\LineSpacing%
{13\p@}\def\LineSpacingFactor%
{0}}
\SpSOtherBackLeftFooter%
{}
\SpSOtherBackLeftHeader%
{}
\SpSOtherBackCenterFooter%
{}
\SpSOtherBackCenterHeader%
{}
\SpSOtherBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherBackRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\endSeq{}}
\SpSFirstBackLeftFooter%
{}
\SpSFirstBackLeftHeader%
{}
\SpSFirstBackCenterFooter%
{}
\SpSFirstBackCenterHeader%
{}
\SpSFirstBackRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstBackRightHeader%
{}
\SpSOtherFrontLeftFooter%
{}
\SpSOtherFrontLeftHeader%
{}
\SpSOtherFrontCenterFooter%
{}
\SpSOtherFrontCenterHeader%
{}
\SpSOtherFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSOtherFrontRightHeader%
{\Seq%
{\def\fPosture%
{italic}}\endSeq{}}
\SpSFirstFrontLeftFooter%
{}
\SpSFirstFrontLeftHeader%
{}
\SpSFirstFrontCenterFooter%
{}
\SpSFirstFrontCenterHeader%
{}
\SpSFirstFrontRightFooter%
{\Seq%
{\def\fPosture%
{italic}}\insertPageNumber%
{}\endSeq{}}
\SpSFirstFrontRightHeader%
{}\Seq%
{}\Seq%
{}\HeadPar%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fSize%
{20.736\p@}\def\LineSpacing%
{26.957\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\HeadingLevel%
{1}\def\sbNom%
{15.552\p@}\def\sbMin%
{15.552\p@}\def\sbMax%
{15.552\p@}\def\sbConditional%
{1}\def\KeepWithNext%
{1}}Colophon\def\HeadingText{%
Colophon}%
\endHeadPar{}\Par%
{\def\fFamName{Arial}\def\fWeight%
{bold}\def\fPosture%
{italic}\def\fSize%
{17.28\p@}\def\LineSpacing%
{22.464\p@}\def\LineSpacingFactor%
{0}\def\StartIndent%
{0\p@}\def\StartIndentFactor%
{0}\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\sbNom%
{6.48\p@}\def\sbMin%
{6.48\p@}\def\sbMax%
{6.48\p@}\def\sbConditional%
{1}\def\saNom%
{10.368\p@}\def\saMin%
{10.368\p@}\def\saMax%
{10.368\p@}\def\saConditional%
{1}\def\KeepWithNext%
{1}}\Seq%
{}\endSeq{}\endPar{}\endSeq{}\Node%
{\def\Element%
{5919}}\Par%
{\def\FirstLineStartIndent%
{0\p@}\def\FirstLineStartIndentFactor%
{0}\def\Quadding%
{start}\def\Hyphenate%
{0}\def\Language%
{EN}\def\sbNom%
{5\p@}\def\sbMin%
{5\p@}\def\sbMax%
{5\p@}\def\sbConditional%
{1}\def\saNom%
{5\p@}\def\saMin%
{5\p@}\def\saMax%
{5\p@}\def\saConditional%
{1}}This book is generated entirely from a single SGML source
      document marked up in the \Node%
{\def\Element%
{5920}}\Seq%
{}\Seq%
{}DocBook 3.1
        DTD\endSeq{}\Seq%
{} (http://www.oasis-open.org/docbook/)\endSeq{}\endSeq{}\endNode{}.  To generate the resultant output, we use the
      \Node%
{\def\Element%
{5921}}\Seq%
{}\Seq%
{}Modular
        DocBook stylesheets\endSeq{}\Seq%
{} (http://www.nwalsh.com/docbook/dsssl/index.html)\endSeq{}\endSeq{}\endNode{} provided by \Node%
{\def\Element%
{5922}}\Seq%
{}\Seq%
{}Norman Walsh\endSeq{}\Seq%
{} (http://www.nwalsh.com)\endSeq{}\endSeq{}\endNode{}.\endPar{}\endNode{}\endSeq{}\endSpS{}\endNode{}\endSeq{}\endNode{}\endNode{}\endSeq{}\endFOT{}