1. Pypy
  2. Untitled project
  3. lang-smalltalk

Commits

timfel  committed b9e530a

add image that uses no BitBlt, MiscPrim, or LargInteger primitives

  • Participants
  • Parent commits 740e1ac
  • Branches default

Comments (0)

Files changed (2)

File images/Squeak4.5-noBitBlt.changes

View file
  • Ignore whitespace
+'From Squeak4.1 of 17 April 2010 [latest update: #9957] on 17 April 2010 at 5:22:05 pm'!
----STARTUP----{17 April 2010 . 5:21:54 pm} as C:\Squeak\4.0\4.1-final\Squeak4.1.image!
----QUIT----{17 April 2010 . 5:22:11 pm} Squeak4.1.image priorSource: 89!
----STARTUP----{24 May 2010 . 8:07:26 pm} as C:\Squeak\4.2\Squeak4.1.image!
----SNAPSHOT----{24 May 2010 . 8:08:14 pm} Squeak4.2.image priorSource: 229!
 [ :prime |
        unsigned long s1 = adler & 0xffff;
        unsigned long s2 = (adler >> 16) & 0xffff;
        int n;
        for (n = 0; n < len; n++) {
          s1 = (s1 + buf[n]) % BASE;
          s2 = (s2 + s1)     % BASE;
        }
        return (s2 << 16) + s1;
   	| morphOrList proj trusted localDir projStream archive mgr
    then treat text as a method, if false as an
    expression with no message pattern"
            	self parseUnary]
    | keyword rangeIndices |
    self parseBinary.
    		[self isKeyword]
        		whileTrue: [
    [self isName]
        whileTrue: [
- here the CustomHelpHelpBuilder. Note that you can provide an own custom builder by overriding the #builder method
  #bookName - should return the name of the help book
  #icon - should return the icon of the help book
  #key - should return a unique key to identify the book
  #pages - should return an array of method selectors to call to get the books pages
   | image stream |
 	item hasSubtopics ifFalse: [^#()].	
   HelpBrowser open
   HelpBrowser openOn: Integer
   HelpBrowser openOn: (SystemReference forClass: Integer)
   HelpBrowser openOn: (SystemReference hierarchyFor: Integer)
   HelpBrowser openOn: (SystemReference hierarchyWithMethodsFor: Integer)
    HelpBrowser openOn: SystemReference
 
 
      HelpBrowser openOn: myObject
  CustomHelp subclass: #MyAppHelp
    	instanceVariableNames: ''''
   bookName
     firstPage
     	    ^HelpTopic
                 contents: ''Hello world''
     secondPage
     	    ^HelpTopic
    	           icon: (HelpIcons iconNamed: #packageIcon)
                 contents: ''More to come''
     pages
     	    ^#(firstPage secondPage)
      
       HelpBrowser open
 
 
 ! !
 ! !
 	"Open the receivers window" 
 
 	"Returns the receivers icon"
 
 ! !
 
 ! !
      HelpBrowser isPharo11 ifTrue: [^self].
  http://www.apache.org/licenses/LICENSE-2.0
---------
  ^ SystemOrganization.
 
 
- Workspace
- Transcript
- Browser
- Inspector
- File List
- Change Sorter
- Debugger
- Method Finder		
   Transcript open
- Using a keyboard while pointing at an empty part of the Squeak wind, alt-k (in Windows, cmd-k in Mac)
- Open up a World Menu, select "open..." action. From the open menu, select "workspace (k)
- Click on the Tools Flap. When it comes out, click on the Workspace icon and drag it out. (Click on the Tools Flap to close it back up.).'! !
----SNAPSHOT----{24 May 2010 . 8:51:58 pm} Squeak4.2-10160-alpha.image priorSource: 382!
----SNAPSHOT----{24 May 2010 . 8:52:41 pm} Squeak4.2-10160-alpha.image priorSource: 326247!
----QUIT/NOSAVE----{24 May 2010 . 8:52:46 pm} Squeak4.2-10160-alpha.image priorSource: 326363!
----STARTUP----{19 August 2010 . 7:05:44 pm} as /Users/casey/Desktop/Squeak4.2-10160-alpha/Squeak4.2-10160-alpha.image!
     self assert: (aDateAndTime offset: '0:12:00:00') =  '1901-01-01T00:00:00+12:00' asDateAndTime! !
     self assert: (aDateAndTime utcOffset: '0:12:00:00') =  '1901-01-01T12:00:00+12:00' asDateAndTime! !
     self assert: (aDateAndTime offset: '0:12:00:00') =  '2004-02-29T13:33:00+12:00' asDateAndTime! !
     self assert: (aDateAndTime utcOffset: '0:02:00:00') =  '2004-02-29T13:33:00+02:00' asDateAndTime! !
 | list |
        "If this platform supports deferred updates, then make my canvas be the Display (or a rectangular portion of it), set the Display to deferred update mode, and answer true. Otherwise, do nothing and answer false. One can set the class variable DisableDeferredUpdates to true to completely disable the deferred updating feature."
        "Build the changes menu for the world."
        | menu |
        menu := self menu: 'changes...'.
        self fillIn: menu from: {
                { 'file out current change set' . { ChangeSet current . #verboseFileOut}.
                                'Write the current change set out to a file whose name reflects the change set name and the current date & time.'}.
                { 'create new change set...' . { ChangeSet . #newChangeSet}. 'Create a new change set and make it the current one.'}.
                { 'browse changed methods' . { ChangeSet  . #browseChangedMessages}.  'Open a message-list browser showing all methods in the current change set'}.
                { 'check change set for slips' . { self  . #lookForSlips}.
                                'Check the current change set for halts, references to the Transcript, etc., and if any such thing is found, open up a message-list browser detailing all possible slips.'}.
                nil.
                { 'simple change sorter' . {self. #openChangeSorter1}.  'Open a 3-paned changed-set viewing tool'}.
                { 'dual change sorter' . {self. #openChangeSorter2}.
                                'Open a change sorter that shows you two change sets at a time, making it easy to copy and move methods and classes between them.'}.
               { 'find a change sorter (C)' . { #myWorld . #findAChangeSorter: }. 'Brings an open change sorter to the front, creating one if necessary, and makes it the active window'}.
                nil.
                { 'browse recent submissions (R)' . { Utilities . #browseRecentSubmissions}.
                                'Open a new recent-submissions browser.  A recent-submissions browser is a message-list browser that shows the most recent methods that have been submitted.  If you submit changes within that browser, it will keep up-to-date, always showing the most recent submissions.'}.
                { 'recently logged changes...' . { self . #browseRecentLog}.'Open a change-list browser on the latter part of the changes log.  You can use this browser to recover logged changes which were not saved in your image, in the event of a crash or other interruption.'}.
                { 'recent log file...' . { Smalltalk . #writeRecentToFile}.
                                'Create a file holding the logged changes (going as far back as you wish), and open a window on that file.'}.
                nil.
                { 'save world as morph file' . {self. #saveWorldInFile}. 'Save a file that, when reloaded, reconstitutes the current World.'}.
                nil.
        }.
        ^ menu! !
 	self selectCategoryForClass: foundClass.
      	ifNotNil: [:file| [anotherBlock value: file] ensure: [file close]]! !
 { {0@-1 . -1@0 . 0@1 . 1@0} 
 . {1@-1 . -1@-1 . -1@1 . 1@1}  
 . {1@0 . 0@-1 . -1@0 . 0@1}  
 . {1@1 . 1@-1 . -1@-1 . -1@1}  
 . {0@1 . 1@0 . 0@-1 . -1@0}  
 . {-1@1 . 1@1 . 1@-1 . -1@-1}  
 . {-1@0 . 0@1 . 1@0 . 0@-1}  
 . {-1@-1 . -1@1 . 1@1 . 1@-1} } .
 { 0.0@1.0 
 
 { 0.0@1.0 
 
  
  		"Paste it before the second vertical bar"
 		{ 0.0 @ 1.0 .
      | result dir tan x y |
      result :=  360.0 degreesToRadians + dir.
      self assert: ((x @ y) theta - result) abs < 1e-15.
      result :=  180.0 degreesToRadians + dir.
      self assert: ((x @ y) theta - result) abs < 1e-15.
       method fileIndex > 1 "only look at changes file"
               and: [ method timeStamp beginsWith: Utilities authorInitials ]]! !
 
----SNAPSHOT----{19 August 2010 . 7:11:15 pm} Squeak4.2-10160-alpha.image priorSource: 326363!
----STARTUP----{19 August 2010 . 7:36:35 pm} as /Users/casey/Desktop/Squeak4.2-10160-alpha/Squeak4.2-10160-alpha.image!
----SNAPSHOT----{19 August 2010 . 7:37:29 pm} Squeak4.2-10382-alpha.image priorSource: 763601!
----QUIT/NOSAVE----{19 August 2010 . 7:37:44 pm} Squeak4.2-10382-alpha.image priorSource: 763819!
----STARTUP----{21 September 2010 . 7:02:20 pm} as /Users/casey/Desktop/Squeak4.2-10382-alpha/Squeak4.2-10382-alpha.image!
    | anArray heap1 heap2 |
    anArray := #(1 2 3).
    heap1 := Heap withAll: (1 to: 3) sortBlock: [:a :b | a < b].
    heap2 := Heap withAll: (1 to: 3) sortBlock: [:a :b | b > a].
    self
    "Answer the action to be evaluated when <anEventSelector> has been triggered."
    "Answer the action to be evaluated when <anEventSelector> has been triggered."
    {'foo' -> 1. 'bar' -> 8} as: Dictionary.
    Dictionary withAll: {'foo' -> 1. 'bar' -> 8}.
    Dictionary new addAll: {'foo' -> 1. 'bar' -> 8}; yourself.
    ({'foo' -> 1. 'bar' -> 8} as: Dictionary) do: [:each | Transcript cr; show: each printString].
    ({'foo' -> 1. 'bar' -> 8} as: Dictionary) collect: [:each | each squared].
  array	An array whose non-nil elements are the elements of the set,
  tally	The number of elements in the set.  The array size is always greater than this.
       method fileIndex > 1 "only look at changes file"
       and: [ method timeStamp beginsWith: 'your-initials-here' ] ].
  		' 2002-05-16T17:20:45.00005' asDateAndTime
 		' 2002-05-16T17:20' asDateAndTime
 		' 2002-05-16T17:20:45-02:34' asDateAndTime
 		' 2002-05-16T17:20:45+00:00' asDateAndTime
 	"! !
 ! !
       FatBitsPaint new openWith: (self selectionAsForm ifNil: [^ nil])! !
- Keyboard Shortcut: while pointing at an empty part of the Squeak window, press alt-k (in Windows) or cmd-k (on a Mac)
- World Menu: select "Workspace"
- Tools Flap: click on the Tools Flap. When it comes out, drag the Workspace icon out.
- Doit: select inside the following quote and doit: "Workspace open"'! !
       "Write nothing. Directories have no contents to write."! !
 		self containingDirectory
 
 
        "Open the receiver on the given help topic or any other object that can be transformed into
         a help topic by sending #asHelpTopic."
        
        ^(self defaultHelpBrowser new)
                rootTopic: aHelpTopic;
                open;
                yourself! !
        |helpTopic items|
        helpTopic := rootTopic asHelpTopic.
        window setLabel: helpTopic title.
        items := helpTopic subtopics collect: [:each | HelpTopicListItemWrapper with: each ].
        treeMorph list: items.
        contentMorph setText: helpTopic contents
----QUIT----{21 September 2010 . 7:52:48 pm} Squeak4.2-10382-alpha.image priorSource: 763819!
----STARTUP----{21 September 2010 . 7:53:40 pm} as /Users/casey/Desktop/Squeak4.2-10382-alpha/Squeak4.2-10382-alpha.image!
----QUIT----{21 September 2010 . 7:56:51 pm} Squeak4.2-10382-alpha.image priorSource: 1011940!
----STARTUP----{21 September 2010 . 7:57:45 pm} as /Users/casey/Desktop/Squeak4.2-10548-alpha/Squeak4.2-10382-alpha.image!
----SNAPSHOT----{21 September 2010 . 7:58:12 pm} Squeak4.2-10548-alpha.image priorSource: 1012187!
----QUIT----{21 September 2010 . 7:58:43 pm} Squeak4.2-10548-alpha.image priorSource: 1012408!
  also having an instance of me held by first non-weak fixed slot (instance variable).
 - point to particular list (an instance of WeakFinalizationList),
 - next should be nil
 - executor or multiple executors initialized
 - weak reference slot should point to some object of interest
 - use multiple different lists and manage them differently in order to react differently when some objects became garbage
 - you are not obliged to handle/clear the list(s) immediately after GC. You can clean up them periodically.
 - you can implement own kind of weak referencing object(s), which could use same finalization, provided by newer VMs.
----STARTUP----{13 December 2010 . 5:51:37 pm} as /Users/casey/Desktop/Zips/Squeak4.2-10548-alpha/Squeak4.2-10548-alpha.image!
 
    	instanceVariableNames: ''''
          If you implement the #pages method you can also 
          use the name of a custom help class that should be 
          integrated between the specific pages:
 
              #pages
                   ^(firstPage MyAppTutorial secondPage)
          You can easily edit the help contents of a page by 
          using the #edit: message. For our example just evaluate:
 | n rawBytes myBytes b |
 and a Duration:
   identifier/method selection message.
   sends a METHOD selection message."
  
 ! !
 ! !
 	itsName size = 0 ifTrue: [^ self].	
    | w |
    
    (aText isNil or: [aText size = 0 ])
        ifTrue:[^0].
       
    w := self
        widthOfString: aText asString.
     "If the text has no emphasis, just return the string size.  If it is empasized, 
    just approximate the width by adding about 20% to the width"   
    (((aText runLengthFor: 1) = aText size)
        and: [(aText emphasisAt: 1) = 0 ])
            ifTrue:[^w]
            ifFalse:[ ^w * 6 // 5 ]. ! !
 		changeList add: (ChangeRecord new file: file position: position type: #method
  
        super color: aColor.
        (image depth = 1 and: [aColor isColor]) ifTrue: [
                image colors: {Color transparent. aColor}.
                self changed]! !
     keyEvent = 31 ifTrue:["down"
     keyEvent = 30 ifTrue:["up"
     keyEvent = 1  ifTrue: ["home"
     keyEvent = 4  ifTrue: ["end"
      keyEvent = 11 ifTrue: ["page up"
     keyEvent = 12  ifTrue: ["page down"
  
     | keyEvent oldSelection nextSelection max min howMany |
     keyEvent := sensor keyboard asciiValue.
     oldSelection := view selection.
     nextSelection := oldSelection.
     max := view maximumSelection.
     min := view minimumSelection.
     howMany := view clippingBox height // view list lineGrid.
     keyEvent = 31 ifTrue:
     keyEvent = 30 ifTrue:
     keyEvent = 1  ifTrue: [nextSelection := 1].  "home"
     keyEvent = 4  ifTrue: [nextSelection := max].   "end"
     keyEvent = 11 ifTrue: [nextSelection := min max: (oldSelection -
     keyEvent = 12  ifTrue: [nextSelection := (oldSelection + howMany)
     nextSelection = oldSelection  ifFalse:
     | oldSelection nextSelection max min howMany |
     oldSelection := self getCurrentSelectionIndex.
     nextSelection := oldSelection.
     max := self maximumSelection.
     min := self minimumSelection.
     howMany := self numSelectionsInView.	"get this exactly??"
     keyEvent = 31 ifTrue:
     keyEvent = 30 ifTrue:
     keyEvent = 1  ifTrue: [nextSelection := 1].  "home"
     keyEvent = 4  ifTrue: [nextSelection := max].   "end"
     keyEvent = 11 ifTrue: [nextSelection := min max: (oldSelection - howMany)].  "page up"
     keyEvent = 12  ifTrue: [nextSelection := (oldSelection + howMany) min: max].  "page down"
     nextSelection = oldSelection  ifFalse:
 	self systemCategoryListIndex: (self systemCategoryList indexOf: foundPackage packageName asSymbol).
 		self addItem:
 * Arithmetic expressions:															*
 ************************************************************************"
 * Array:         Fixed length collection												*
 * ByteArray:     Array limited to byte elements (0-255)								*
 * WordArray:     Array limited to word elements (0-2^32)							*
 ************************************************************************"
   at: 1 put: 5;
   at: 2 put: 4;
   at: 3 put: 3;
   at: 4 put: 2.
   ifTrue: [a]
   ifFalse: [c]].
 * Assignment:																		*
 ************************************************************************"
 * Associations:																		*
 ************************************************************************"
 * Bag:        like OrderedCollection except elements are in no						*
 *                particular order														*
 ************************************************************************"
   ifTrue: [a]
   ifFalse: [c]].
 * Bitwise Manipulation:																*
 ************************************************************************"
 * Blocks:																			*
 *    - blocks are objects and may be assigned to a variable						*
 *    - value is last expression evaluated unless explicit return						*
 *    - blocks may be nested														*
 *    - specification [ arguments | | localvars | expressions ]							*
 *    - ^expression terminates block & method (exits all nested blocks)			*
 *    - blocks intended for long term storage should not contain ^					*
 ************************************************************************"
 * Booleans:																		*
 ************************************************************************"
 * Character:																		*
 ************************************************************************"
 * Conditional Statements:															*
 ************************************************************************"
   ifTrue: [Transcript show: ''ifTrue''; cr]
   ifFalse: [Transcript show: ''ifFalse''; cr].
   ifFalse: [Transcript show: ''ifFalse''; cr]
   ifTrue: [Transcript show: ''ifTrue''; cr].
   show:
      (x > 10
         ifTrue: [''ifTrue'']
         ifFalse: [''ifFalse'']);
   cr.
   show:
      (x > 10
         ifTrue: [x > 5
            ifTrue: [''A'']
            ifFalse: [''B'']]
         ifFalse: [''C'']);
   cr.
 * Constants:																		*
 ************************************************************************"
 * Conversion:																		*
 ************************************************************************"
 * Date:																				*
 ************************************************************************"
 * debugging:																		*
 ************************************************************************"
 * Dictionary:																		*
 * IdentityDictionary:   uses identity test (== rather than =)							*
 ************************************************************************"
   show: aKey printString; space;
   show: aValue printString; cr].
   ifTrue: [a]
   ifFalse: [c]].
   ((Smalltalk at: k) isKindOf: Class)
      ifFalse: [Transcript show: k printString; cr]].
   Transcript show: k printString; cr].
   Transcript show: k printString; cr].
   Transcript
      show: aKey printString;
      space;
      show: aValue printString;
      cr].
   Transcript show: aKeyValue printString; cr].
 * Dynamic Message Calling/Compiling:												*
 ************************************************************************"
   perform: (keyword1, keyword2) asSymbol
   withArguments: (Array with: argument1 with: argument2).
   ((receiver storeString), '' '', keyword1, (argument1 storeString) , '' '', keyword2, (argument2 storeString)).
   new
      setSelector: (keyword1, keyword2) asSymbol
      arguments: (Array with: argument1 with: argument2))
   sentTo: receiver.
 * FileStream:																		*
 ************************************************************************"
   whileTrue: [Transcript show: x; cr].
 * Internal Stream:																	*
 ************************************************************************"
   whileTrue: [Transcript show: x; cr].
   whileTrue: [Transcript show: x; cr].
 * Interval:																			*
 ************************************************************************"
   ifTrue: [a]
   ifFalse: [c]].
 * Allowable characters:															*
 *    - a-z																			*
 *    - A-Z																			*
 *    - 0-9																			*
 *    - .+/\*~<>@%|&?																*
 *    - blank, tab, cr, ff, lf																*
 *																					*
 * Variables:																		*
 *    - variables must be declared before use										*
 *    - shared vars must begin with uppercase										*
 *    - local vars must begin with lowercase											*
 *    - reserved names: nil, true, false, self, super, and Smalltalk						*
 *																					*
 * Variable scope:																	*
 *    - Global: defined in Dictionary Smalltalk and accessible by all					*
 *         objects in system															*
 *    - Special: (reserved) Smalltalk, super, self, true, false, & nil						*
 *    - Method Temporary: local to a method										*
 *    - Block Temporary: local to a block												*
 *    - Pool: variables in a Dictionary object											*
 *    - Method Parameters: automatic local vars created as a result of 				*
 *         message call with params													*
 *    - Block Parameters: automatic local vars created as a result of					*
 *         value: message call															*
 *    - Class: shared with all instances of one class & its subclasses				*
 *    - Class Instance: unique to each instance of a class							*
 *    - Instance Variables: unique to each instance									*
 ************************************************************************"
 * Iteration statements:																*
 ************************************************************************"
 * class/meta-class:																	*
 ************************************************************************"
 * Method calls:																		*
 *    - unary methods are messages with no arguments								*
 *    - binary methods																*
 *    - keyword methods are messages with selectors including colons				*
 *																					*
 * standard categories/protocols:													*
 *    - initialize-release    (methods called for new instance)							*
 *    - accessing             (get/set methods)											*
 *    - testing               (boolean tests - is)											*
 *    - comparing             (boolean tests with parameter							*
 *    - displaying            (gui related methods)										*
 *    - printing              (methods for printing)										*
 *    - updating              (receive notification of changes)							*
 *    - private               (methods private to class)									*
 *    - instance-creation     (class methods for creating instance)					*
 ************************************************************************"
   show: ''hello '';
   show: ''world'';
   cr.
 * Misc.																				*
 ************************************************************************"
 * OrderedCollection: acts like an expandable array								*
 ************************************************************************"
   ifTrue: [a]
   ifFalse: [c]].
 * Pen:																				*
 ************************************************************************"
   Display fillWhite.
 * Point:																				*
 ************************************************************************"
 * Rectangle:																		*
 ************************************************************************"
 * Set:           like Bag except duplicates not allowed								*
 * IdentitySet:   uses identity test (== rather than =)								*
 ************************************************************************"
   ifTrue: [a]
   ifFalse: [c]].
 * SortedCollection:    like OrderedCollection except order of elements			*
 *                         determined by sorting criteria									*
 ************************************************************************"
   ifTrue: [a]
   ifFalse: [c]].
 * String:																			*
 ************************************************************************"
   at: 1 put: $a;
   at: 2 put: $b;
   at: 3 put: $c;
   at: 4 put: $e.
 * Symbol:																			*
 ************************************************************************"
 * Time:																				*
 ************************************************************************"
   1 to: 1000 do: [:index | y := 3.14 * index]].
 * Transcript:																		*
 ************************************************************************"
 
 	"separators and non-separators"
 	strm print: Date today; space; print: Time now; cr.
 	self selectCategoryForClass: foundClass.
----SNAPSHOT----{13 December 2010 . 6:00:39 pm} Squeak4.2-10548-alpha.1.image priorSource: 1012535!
----SNAPSHOT----{13 December 2010 . 6:01:45 pm} Squeak4.2-10779-alpha.image priorSource: 1621735!
----QUIT/NOSAVE----{13 December 2010 . 6:01:50 pm} Squeak4.2-10779-alpha.image priorSource: 1621863!
----STARTUP----{31 January 2011 . 10:49:26 am} as /home/cmm/4dst/dev/src/squeak-4.1/basic/Squeak4.2-10779-alpha.image!
 	 Div-by-Zero raised if len 0."
                    - 0x0 and 0xFF reserved for Float zero (mantissa is ignored)
                    - 16r7F reserved for Float underflow/overflow (mantissa is ignored)
 	hue: h saturation: s brightness: b		Create a color with the given hue, saturation, and brightness.
 	blue
    stdColorsForDepth: d        An Array of colors available at this depth.  For 16 bit and 32 bits, returns a ColorGenerator.  It responds to at: with a Color for that index, simulating a very big Array. 
   colorFromPixelValue: value depth: d    Returns a Color whose bit pattern (inside a Bitmap) at this depth is the number specified.  Normal users do not need to use this.
 		16r57EDF4A22BE3C955AC49DA2E2107B67A.! !
                    - 0x0 and 0xFF reserved for Float zero (mantissa is ignored)
                    - 16r7F reserved for Float underflow/overflow (mantissa is ignored)
          0)
       ResizeLeftCursor :=
               (Cursor extent: 16 @ 16 fromArray: #(
               2r0000000000000000
               2r0000000000000000
               2r0000000000000000
               2r0000000000000000
               2r0000100000010000
               2r0001100000011000
               2r0011100000011100
               2r0111111111111110
               2r0011100000011100
               2r0001100000011000
               2r0000100000010000
               2r0000000000000000
               2r0000000000000000
               2r0000000000000000
               2r0000000000000000
               2r0000000000000000 )
       offset: -7 @ -7 ) withMask! !
    "Cursor initResizeTop"
       ResizeTopCursor :=
               (Cursor extent: 16 @ 16 fromArray: #(
               2r000000100000000
               2r000001110000000
               2r000011111000000
               2r000111111100000
               2r000000100000000
               2r000000100000000
               2r000000100000000
               2r000000100000000
               2r000000100000000
               2r000000100000000
               2r000111111100000
               2r000011111000000
               2r000001110000000
               2r000000100000000
               2r000000000000000)
       offset: -7 @ -7) withMask! !
       ResizeTopLeftCursor :=
               (Cursor extent: 16 @ 16 fromArray: #(
               2r0000000000000000
               2r0111110000000000
               2r0111100000000000
               2r0111000000000000
               2r0110100000000000
               2r0100010000000000
               2r0000001000000000
               2r0000000100000000
               2r0000000010000000
               2r0000000001000100
               2r0000000000101100
               2r0000000000011100
               2r0000000000111100
               2r0000000001111100
               2r0000000000000000
               2r0000000000000000)
       offset: -7 @ -7) withMask! !
       ResizeTopRightCursor :=
               (Cursor extent: 16 @ 16 fromArray: #(
               2r0000000000000000
               2r0000000001111100
               2r0000000000111100
               2r0000000000011100
               2r0000000000101100
               2r0000000001000100
               2r0000000010000000
               2r0000000100000000
               2r0000001000000000
               2r0100010000000000
               2r0110100000000000
               2r0111000000000000
               2r0111100000000000
               2r0111110000000000
               2r0000000000000000
               2r0000000000000000)
       offset: -7 @ -7) withMask! !
  http://www.apache.org/licenses/LICENSE-2.0
 "all sides" 
 
  http://www.apache.org/licenses/LICENSE-2.0
 		global isBehavior ifTrue:
----SNAPSHOT----{31 January 2011 . 10:54:26 am} Squeak4.2-10950.image priorSource: 1621863!
----STARTUP----{4 February 2011 . 10:51:53 am} as /home/cmm/4dst/dev/src/squeak-4.1/basic/Squeak4.2-10950.image!
----SNAPSHOT----{4 February 2011 . 10:53:13 am} Squeak4.2-10966.image priorSource: 2110117!
----QUIT/NOSAVE----{4 February 2011 . 10:53:18 am} Squeak4.2-10966.image priorSource: 2132091!
----STARTUP----{4 February 2011 . 1:06:34 pm} as /home/cmm/4dst/dev/src/squeak-4.1/basic/Squeak4.2-10966.image!
----QUIT----{4 February 2011 . 1:07 pm} Squeak4.2-10966.image priorSource: 2132091!
----STARTUP----{4 February 2011 . 3:39:46 pm} as /home/cmm/Chris/development/Squeak/Squeak4.2-10966.image!
----End fileIn of a stream----!
----QUIT/NOSAVE----{4 February 2011 . 3:40:02 pm} Squeak4.2-10966.image priorSource: 2132394!
----STARTUP----{10 February 2011 . 4:32:10 pm} as /home/cmm/Chris/development/Squeak/Squeak4.2-10966.image!
----QUIT/NOSAVE----{10 February 2011 . 4:35:57 pm} Squeak4.2-10966.image priorSource: 2132394!
----STARTUP----{10 February 2011 . 5:50 pm} as /home/cmm/Chris/development/Squeak/Squeak4.2-10966.image!
----QUIT/NOSAVE----{10 February 2011 . 6:10:54 pm} Squeak4.2-10966.image priorSource: 2132394!
----STARTUP----{16 February 2011 . 4:34:24 pm} as /home/cmm/Chris/development/Squeak/Squeak4.2-10966.image!
----End fileIn of a stream----!
----STARTUP----{16 February 2011 . 5:00:31 pm} as /home/cmm/Chris/development/Squeak/Squeak4.2-10966.image!
----STARTUP----{17 February 2011 . 2:08:06 pm} as /home/cmm/Chris/development/Squeak/Squeak4.2-10966.image!
----SNAPSHOT----{17 February 2011 . 2:08:19 pm} Squeak4.2-10976.image priorSource: 2132394!
----STARTUP----{16 March 2011 . 10:21:32 am} as /home/cmm/Chris/development/Squeak/Squeak4.2-10976.image!
       ^ #(('Refresh' refresh 'refresh the version-list')
               (History history 'Browse the history of this version' hasVersion)
               (Changes changes 'Browse the changes this version would make to the
               (Load load 'Load this version into the image' hasVersion)
               (Merge merge 'Merge this version into the image' hasVersion)
               (Adopt adopt 'Adopt this version as an ancestor of your working copy'
               (Copy save 'Copy this version to another repository' hasVersion)
               (Diff diff 'Create an equivalent version based on an earlier release'
 	"separators and non-separators"
  'Elvis' endsWith: 'vis'
    "Make Japanese String from unicode. see http://www.unicode.org/charts/PDF/U3040.pdf"
     leading := JapaneseEnvironment leadingChar.
     "without percent encoded string"
- Across the top:
- Four lists across the width:
- Load-script paragraph | Release notes paragraph.
- Buttons:
 					 help: 'Your SqueakMap password.' ;
 	result := self resultClass new.
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
 treatedMethods				Dictionary of MethodReferences->#disabled/#enabled
 logStream					WriteStream -- shows info about changed methods ifNotNil
 changeStatusOfFailedCalls	Boolean -- if status of failed calls should be changed, default is false!
 
      
      gradient firstColor: Color green forMorph: nil hand: nil. 
        self assert: (redWhiteRamp ~= greenWhiteRamp).! !
----STARTUP----{16 March 2011 . 10:26:43 pm} as /home/cmm/Chris/development/Squeak/Squeak4.2-10976.image!
----QUIT/NOSAVE----{16 March 2011 . 11:22:06 pm} Squeak4.2-10976.image priorSource: 2136670!
----STARTUP----{23 March 2011 . 4:50:18 pm} as /home/cmm/Chris/development/Squeak/Squeak4.2-10976.image!
 	"separators and non-separators"
    "Make Japanese String from unicode. see http://www.unicode.org/charts/PDF/U3040.pdf"
     leading := JapaneseEnvironment leadingChar.
     "without percent encoded string"
  'Elvis' endsWith: 'vis'
- Across the top:
- Four lists across the width:
- Load-script paragraph | Release notes paragraph.
- Buttons:
 					 help: 'Your SqueakMap password.' ;
 	result := self resultClass new.
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
 treatedMethods				Dictionary of MethodReferences->#disabled/#enabled
 logStream					WriteStream -- shows info about changed methods ifNotNil
 changeStatusOfFailedCalls	Boolean -- if status of failed calls should be changed, default is false!
       ^ #(('Refresh' refresh 'refresh the version-list')
               (History history 'Browse the history of this version' hasVersion)
               (Changes changes 'Browse the changes this version would make to the
               (Load load 'Load this version into the image' hasVersion)
               (Merge merge 'Merge this version into the image' hasVersion)
               (Adopt adopt 'Adopt this version as an ancestor of your working copy'
               (Copy save 'Copy this version to another repository' hasVersion)
               (Diff diff 'Create an equivalent version based on an earlier release'
 
      
      gradient firstColor: Color green forMorph: nil hand: nil. 
        self assert: (redWhiteRamp ~= greenWhiteRamp).! !
 
 ! !
 
 ! !
----SNAPSHOT----{23 March 2011 . 4:55:13 pm} Squeak4.3-11157.image priorSource: 2136670!
----QUIT----{23 March 2011 . 4:55:20 pm} Squeak4.3-11157.image priorSource: 2716401!
----STARTUP----{17 April 2011 . 3:07:59 pm} as /home/cmm/4dst/dev/src/squeak-4.1/basic/Squeak4.3-11157.image!
----QUIT/NOSAVE----{17 April 2011 . 3:08:02 pm} Squeak4.3-11157.image priorSource: 2716491!
----STARTUP----{17 April 2011 . 3:09:30 pm} as /home/cmm/4dst/dev/src/squeak-4.1/basic/Squeak4.3-11157.image!
----SNAPSHOT----{17 April 2011 . 3:09:38 pm} Squeak4.3alpha-11157.image priorSource: 2716491!
-234.567 printShowingDecimalPlaces: 5
-23.4567 printShowingDecimalPlaces: 0
-23.5567 printShowingDecimalPlaces: 0
-0.98 printShowingDecimalPlaces: 2
-2.567 printShowingDecimalPlaces: 2
-- CAUTION --
    "Collect a comment."
    "wod 1/10/98: Allow 'empty' comments by testing the first character
  
 ! !
 	self selectSystemCategory: foundPackage packageName asSymbol.
 	from the system. If so, remove it."
 	from the system. If so, remove it."
 	should be removed from the system. If so, remove it."
----SNAPSHOT----{17 April 2011 . 3:18:15 pm} Squeak4.3alpha-11157.image priorSource: 2716894!
----STARTUP----{17 April 2011 . 3:21:47 pm} as /home/cmm/4dst/dev/src/squeak-4.1/basic/Squeak4.3alpha-11157.image!
----QUIT----{17 April 2011 . 3:22:28 pm} Squeak4.3alpha-11157.image priorSource: 2974047!
----STARTUP----{17 April 2011 . 3:22:33 pm} as /home/cmm/4dst/dev/src/squeak-4.1/basic/Squeak4.3alpha-11157.image!
----SNAPSHOT----{17 April 2011 . 3:22:39 pm} Squeak4.3alpha-11314.image priorSource: 2974831!
----QUIT----{17 April 2011 . 3:23:17 pm} Squeak4.3alpha-11314.image priorSource: 2975039!
----STARTUP----{13 June 2011 . 10:44:55 am} as C:\DS9Squeak\Squeak4.3alpha-11314.image!
    tasks := OrderedCollection new
        
                add: [Smalltalk removeEmptyMessageCategories];
                add: [Workspace
                        allSubInstancesDo: [:each | each initializeBindings]];
                add: [Undeclared removeUnreferencedKeys];
                add: [Categorizer sortAllCategories];
                add: [Symbol compactSymbolTable];
                 add: [HandMorph releaseCachedState;
                add: [Smalltalk forgetDoIts.
                 yourself.
        informUserDuring: [:bar | tasks
                do: [:block |
                    bar value: block printString.
                    [block value]
                        on: Error
                        do: [:error | Transcript show: error;
                                 cr]]].
 SystemNavigation default obsoleteClasses isEmpty
        ifTrue: [SmalltalkImage current saveSession]
        ifFalse: [SystemNavigation default obsoleteClasses
                do: [:each | .self halt.[PointerFinder on: each]
                        on: Error
                        do: [:error | Transcript show: error; cr]]]
 
 "all sides" 
 		self addItem:
 	"Examples:
 	"Examples:
----SNAPSHOT----{13 June 2011 . 10:54:18 am} Squeak4.3alpha-11481.image priorSource: 2975134!
----End fileIn of C:\DS9Squeak\T6.st----!
----End fileIn of C:\DS9Squeak\bitmapStreamTest.extSeg----!
----End fileIn of a stream----!
----End fileIn of C:\DS9Squeak\bitmapStreamTest.ref----!
----End fileIn of C:\DS9Squeak\bitmapStreamTest.extSeg----!
----End fileIn of a stream----!
----End fileIn of a stream----!
----End fileIn of C:\DS9Squeak\bitmapStreamTest.ref----!
----End fileIn of C:\DS9Squeak\bitmapStreamTest.extSeg----!
----End fileIn of a stream----!
----End fileIn of a stream----!
----End fileIn of C:\DS9Squeak\bitmapStreamTest.ref----!
----End fileIn of C:\DS9Squeak\bitmapStreamTest.extSeg----!
----End fileIn of a stream----!
----End fileIn of a stream----!
----End fileIn of C:\DS9Squeak\bitmapStreamTest.ref----!
----End fileIn of C:\DS9Squeak\bitmapStreamTest.extSeg----!
----End fileIn of a stream----!
----End fileIn of C:\DS9Squeak\bitmapStreamTest.ref----!
----End fileIn of a stream----!
----End fileIn of a stream----!
----End fileIn of a stream----!
----End fileIn of a stream----!
----End fileIn of a stream----!
----End fileIn of a stream----!
----End fileIn of a stream----!
----QUIT/NOSAVE----{13 June 2011 . 11:41:13 am} Squeak4.3alpha-11481.image priorSource: 3256581!
----STARTUP----{13 September 2011 . 9:48:02 am} as /Users/edgar/imagesZip/Squeak4.3alpha-11481/Squeak4.3alpha-11481.image!
     the given announcement as the title."
     the given announcement as the title.
 		ifFalse: [Float epsilon timesTwoPower: exponent]! !
               self setStopConditions. " causes an assignment to inst var.  alignment "
  
 ! !
  ^self class runs: runs reversed values: values reversed! !
    SoundService toggleSoundEnabled! !
-- CAUTION --
        "Build the changes menu for the world."
        | menu |
        menu := self menu: 'changes...'.
        self fillIn: menu from: {
                { 'file out current change set' . { ChangeSet current . #verboseFileOut}.
                                'Write the current change set out to a file whose name reflects the change set name and the current date & time.'}.
                { 'create new change set...' . { ChangeSet . #newChangeSet}. 'Create a new change set and make it the current one.'}.
                { 'browse changed methods' . { ChangeSet  . #browseChangedMessages}.  'Open a message-list browser showing all methods in the current change set'}.
                { 'check change set for slips' . { self  . #lookForSlips}.
                                'Check the current change set for halts, references to the Transcript, etc., and if any such thing is found, open up a message-list browser detailing all possible slips.'}.
                nil.
                { 'simple change sorter' . {self. #openChangeSorter1}.  'Open a 3-paned changed-set viewing tool'}.
                { 'dual change sorter' . {self. #openChangeSorter2}.
                                'Open a change sorter that shows you two change sets at a time, making it easy to copy and move methods and classes between them.'}.
               { 'find a change sorter (C)' . { #myWorld . #findAChangeSorter: }. 'Brings an open change sorter to the front, creating one if necessary, and makes it the active window'}.
                nil.
                { 'browse recent submissions (R)' . { Utilities . #browseRecentSubmissions}.
                                'Open a new recent-submissions browser.  A recent-submissions browser is a message-list browser that shows the most recent methods that have been submitted.  If you submit changes within that browser, it will keep up-to-date, always showing the most recent submissions.'}.
                { 'recently logged changes...' . { self . #browseRecentLog}.'Open a change-list browser on the latter part of the changes log.  You can use this browser to recover logged changes which were not saved in your image, in the event of a crash or other interruption.'}.
                { 'recent log file...' . { Smalltalk . #writeRecentToFile}.
                                'Create a file holding the logged changes (going as far back as you wish), and open a window on that file.'}.
                nil.
                { 'save world as morph file' . {self. #saveWorldInFile}. 'Save a file that, when reloaded, reconstitutes the current World.'}.
                nil.
        }.
        ^ menu! !
    tasks := OrderedCollection new
        
                add: [Smalltalk removeEmptyMessageCategories];
                add: [Workspace
                        allSubInstancesDo: [:each | each initializeBindings]];
                add: [Undeclared removeUnreferencedKeys];
                add: [Categorizer sortAllCategories];
                add: [Symbol compactSymbolTable];
                 add: [HandMorph releaseCachedState;
                add: [
                 yourself.
        informUserDuring: [:bar | tasks
                do: [:block |
                    bar value: block printString.
                    [block value]
                        on: Error
                        do: [:error | Transcript show: error;
                                 cr]]].
 SystemNavigation default obsoleteClasses isEmpty
        ifTrue: [SmalltalkImage current saveSession]
        ifFalse: [SystemNavigation default obsoleteClasses
                do: [:each | .self halt.[PointerFinder on: each]
                        on: Error
                        do: [:error | Transcript show: error; cr]]]
  3 * x -> 'but full precision'}
    self
        setActionSequence:
            ((self actionSequenceForEvent: anEventSelector)
                reject: aOneArgBlock)
        forEvent: anEventSelector! !
 	self resetTypeAhead; deselect.
       self storeSelectionInParagraph! !
  
    tasks := OrderedCollection new
        
                add: [Smalltalk removeEmptyMessageCategories];
                add: [Workspace
                        allSubInstancesDo: [:each | each initializeBindings]];
                add: [Undeclared removeUnreferencedKeys];
                add: [Categorizer sortAllCategories];
                add: [Symbol compactSymbolTable];
                 add: [HandMorph releaseCachedState;
                add: [
                 yourself.
        informUserDuring: [:bar | tasks
                do: [:block |
                    bar value: block printString.
                    block
                        on: Error
                        do: [:error | Transcript show: error;
                                 cr]]].
 SystemNavigation default obsoleteClasses isEmpty
        ifTrue: [SmalltalkImage current saveSession]
        ifFalse: [SystemNavigation default obsoleteClasses
                do: [:each | .self halt.[PointerFinder on: each]
                        on: Error
                        do: [:error | Transcript show: error; cr]]]
----SNAPSHOT----{13 September 2011 . 9:58:33 am} Squeak4.3alpha-11662.image priorSource: 3256581!
----End fileIn of a stream----!
----STARTUP----{10 October 2011 . 8:44:58 am} as /Users/edgar/SqueakSL/imagesZip/Squeak4.3alpha-11481/Squeak4.3alpha-11662.image!
----SNAPSHOT----{10 October 2011 . 8:49:26 am} Squeak4.3alpha-11722.image priorSource: 4022940!
----STARTUP----{11 November 2011 . 6:16:52 am} as /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/Squeak4.3alpha-11722.image!
 		self addItem:
----STARTUP----{19 November 2011 . 9:22:58 am} as /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/Squeak4.3alpha-11722.image!
 		self addItem:
----SNAPSHOT----{19 November 2011 . 9:27:41 am} Squeak4.3gamma-11793.image priorSource: 4116638!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/temp.changes----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/temp.changes----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/temp.changes----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/temp.changes----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/temp.changes----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/temp.changes----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/temp.changes----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/temp.changes----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/temp.changes----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/temp.changes----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/temp.changes----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/temp.changes----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/temp.changes----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/temp.changes----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/temp.changes----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/temp.changes----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/temp.changes----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/temp.changes----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/TraitsTests-FileOut.st----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/T6.st----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/bitmapStreamTest.extSeg----!
----End fileIn of a stream----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/bitmapStreamTest.ref----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/bitmapStreamTest.extSeg----!
----End fileIn of a stream----!
----End fileIn of a stream----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/bitmapStreamTest.ref----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/bitmapStreamTest.extSeg----!
----End fileIn of a stream----!
----End fileIn of a stream----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/bitmapStreamTest.ref----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/bitmapStreamTest.extSeg----!
----End fileIn of a stream----!
----End fileIn of a stream----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/bitmapStreamTest.ref----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/bitmapStreamTest.extSeg----!
----End fileIn of a stream----!
----End fileIn of /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/bitmapStreamTest.ref----!
----End fileIn of a stream----!
----End fileIn of a stream----!
----End fileIn of a stream----!
----End fileIn of a stream----!
----End fileIn of a stream----!
----End fileIn of a stream----!
----End fileIn of a stream----!
----End fileIn of a stream----!
----STARTUP----{19 November 2011 . 10:03:35 am} as /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.3alpha-11722 Folder/Squeak4.3gamma-11793.image!
----QUIT----{19 November 2011 . 10:04:14 am} Squeak4.3gamma-11793.image priorSource: 5051591!
----STARTUP----{22 December 2011 . 2:32:32 pm} as /Users/chriscunnington/Desktop/Squeak4.3gamma-11793/Squeak4.3gamma-11793.image!
 
- This image is ~15M. If you execute - Smalltalk unloadAllKnownPackages - it will become ~10M 
- A SqueakCore image is available at http://ftp.squeak.org/4.3
- A reasonable target is the creation of a smaller image, which may be a task before the community
- A place to explore where to make reductions is likely the removal/replacement of GUIs
- Once we have a smaller core image, we can employ Andreas Raab''s memo [1] on how to load code back into the image. This will be based on tests delineating the separate responsibilities of core and application developers
 [1]]http://lists.squeakfoundation.org/pipermail/squeak-dev/2010-May/150658.html
- better control of socket connection timeouts
- added support for threaded VMs
- packages specifiable either with or without a version-number in Installer
- extended support for MCConfigurations to regular MCDirectoryRepositorys
- corrected Complex so arcSin and arcCos let (1 arTanh) return inf
- full-screen toggle option has been moved out from the menu and onto the bar directly just to the right of the clock for one-click access 
- rejection of literals with superfluous # at the beginning like #$a #123 ##foo ##(1 2 3)
- TextEditor is event driven sensor usage is banned from it
- ancient behavior of selecting whole text when clicking twice before first or twice after last character is restored
- drag/drop between inspectors changed to drag a field onto another field to replace the object in it
- updated button for "what to show" on CodeHolder similar to Squeak 3.8 
- changes enabling both Yellow and Blue buttons from a two-button mouse in Cog VM
- Compiler changed to create subclasses of CompiledMethod
- blocks and MessageSends are exchangeable in more situations
- SMxMorphicProject now able to host a SimpleMorphic World
- when present a SMxMorphicProject is made available in the World menu
 	dataStrings := statements collect:
 	dataObjects := Array with: dataObjects allButLast with: dataObjects last. "#( (data1
  data2) result )" 
 	^ resultArray! !
----QUIT----{22 December 2011 . 2:36:20 pm} Squeak4.3gamma-11793.image priorSource: 5494037!
----STARTUP----{22 December 2011 . 3:39:46 pm} as /Users/chriscunnington/Desktop/Squeak4.3gamma-11858/Squeak4.3gamma-11858.image!
----SNAPSHOT----{22 December 2011 . 3:40:18 pm} Squeak4.3gamma-11858.image priorSource: 5544225!
----QUIT----{22 December 2011 . 3:40:21 pm} Squeak4.3gamma-11858.image priorSource: 5545412!
----STARTUP----{22 December 2011 . 4:16:23 pm} as /Users/chriscunnington/Desktop/Squeak4.3gamma-11859/Squeak4.3gamma-11858.image!
----QUIT/NOSAVE----{22 December 2011 . 4:16:42 pm} Squeak4.3gamma-11858.image priorSource: 5545510!
----STARTUP----{22 December 2011 . 4:19:27 pm} as /Users/chriscunnington/Desktop/Squeak4.3gamma-11859/Squeak4.3gamma-11858.image!
----QUIT----{22 December 2011 . 4:20:31 pm} Squeak4.3gamma-11858.image priorSource: 5545510!
----STARTUP----{22 December 2011 . 4:25:01 pm} as /Users/chriscunnington/Desktop/Squeak4.3/Squeak4.3.image!
----SNAPSHOT----{22 December 2011 . 4:26:42 pm} Squeak4.3.image priorSource: 5546810!
----QUIT----{22 December 2011 . 4:27:05 pm} Squeak4.3.image priorSource: 5547165!
----STARTUP----{29 December 2011 . 7:33:08 am} as /Users/chriscunnington/Desktop/Squeak 4.3 All-in-One.app/Contents/Resources/Squeak4.3.image!
----QUIT/NOSAVE----{29 December 2011 . 7:33:17 am} Squeak4.3.image priorSource: 5547267!
----STARTUP----{29 December 2011 . 7:36:21 am} as /Users/chriscunnington/Desktop/Squeak 4.3 All-in-One.app/Contents/Resources/Squeak4.3.image!
----QUIT/NOSAVE----{29 December 2011 . 7:36:25 am} Squeak4.3.image priorSource: 5547267!
----STARTUP----{3 August 2012 . 1:06:05 pm} as /home/frank/Documents/squeak-ci/Squeak4.3.image!
    "Collect a comment."
 	"Return a new form which derives from the portion of the original form delineated by aRect."
 	"Return a new form which derives from the portion of the original form delineated by aRect."
 | f f2 p | [Sensor anyButtonPressed] whileFalse:
 	"Return a new ColorForm containing the portion of the receiver delineated by aRect."
----STARTUP----{3 August 2012 . 1:12:09 pm} as /home/frank/Documents/squeak-ci/Squeak4.3.image!
    "Collect a comment."
 	"Return a new form which derives from the portion of the original form delineated by aRect."
 	"Return a new form which derives from the portion of the original form delineated by aRect."
 | f f2 p | [Sensor anyButtonPressed] whileFalse:
 	"Return a new ColorForm containing the portion of the receiver delineated by aRect."
-----
 
  
 ! !
     currently doesn't support plural forms.
 generics		Dictionary -- msgid -> msgstr
 ClassCategories	IdentityDictionary -- classCategory -> domainName 
 Classes			IdentityDictionary -- class name (a Symbol) -> domainName   (a cache only!!)
 DefaultDomain	String -- the default domain name
 DomainInfos		Dictionary -- domainName -> a TextDomainInfo
 LoneClasses		IdentityDictionary -- class name (a Symbol) -> domainName.  For classes whose entire category are not all in the same domain (BookMorph and QuickGuideMorph)
   	[see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
   	1986, 1987 Bell Telephone Laboratories, Inc.] "
 	self systemDefaultLocaleDirs addFirst: dir! !
   	[see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
   	1986, 1987 Bell Telephone Laboratories, Inc.] "
 generics		Dictionary -- msgid -> msgstr
 	 and return an array containing:
      On Macs and PCs, it is the container of the system volumes.)
 	<primitive: 'primitiveDirectoryEntry' module: 'FilePlugin'>
 ! !
 ! !
  
  		' 2002-05-16T17:20:45.00005' asDateAndTime
 		' 2002-05-16T17:20' asDateAndTime
 		' 2002-05-16T17:20:45-02:34' asDateAndTime
 		' 2002-05-16T17:20:45+00:00' asDateAndTime
 	"! !
-----------
----------
---------
----------------------------------
 	should be removed from the system. If so, remove it."
 		global isBehavior ifTrue:
----STARTUP----{3 August 2012 . 2:28:51 pm} as /home/frank/Documents/squeak-ci/Squeak4.3.image!
----QUIT/NOSAVE----{3 August 2012 . 2:29:04 pm} Squeak4.3.image priorSource: 5547267!
----STARTUP----{3 August 2012 . 2:30:43 pm} as /home/frank/Documents/squeak-ci/Squeak4.3.image!
----SNAPSHOT----{3 August 2012 . 2:30:49 pm} Squeak4.3.image priorSource: 5547267!
----QUIT/NOSAVE----{3 August 2012 . 2:30:53 pm} Squeak4.3.image priorSource: 6450343!
----STARTUP----{14 August 2012 . 9:35:57 pm} as /home/frank/Documents/squeak-ci/target/UpdatedFromLastReleaseImage.image!
    "Collect a comment."
 	"Return a new form which derives from the portion of the original form delineated by aRect."
 	"Return a new form which derives from the portion of the original form delineated by aRect."
 | f f2 p | [Sensor anyButtonPressed] whileFalse:
 	"Return a new ColorForm containing the portion of the receiver delineated by aRect."
-----
 
  
 ! !
     currently doesn't support plural forms.
 generics		Dictionary -- msgid -> msgstr
 ClassCategories	IdentityDictionary -- classCategory -> domainName 
 Classes			IdentityDictionary -- class name (a Symbol) -> domainName   (a cache only!!)
 DefaultDomain	String -- the default domain name
 DomainInfos		Dictionary -- domainName -> a TextDomainInfo
 LoneClasses		IdentityDictionary -- class name (a Symbol) -> domainName.  For classes whose entire category are not all in the same domain (BookMorph and QuickGuideMorph)
   	[see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
   	1986, 1987 Bell Telephone Laboratories, Inc.] "
 	self systemDefaultLocaleDirs addFirst: dir! !
   	[see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
   	1986, 1987 Bell Telephone Laboratories, Inc.] "
 generics		Dictionary -- msgid -> msgstr
 	 and return an array containing:
      On Macs and PCs, it is the container of the system volumes.)
 	<primitive: 'primitiveDirectoryEntry' module: 'FilePlugin'>
 ! !
 ! !
  
  		' 2002-05-16T17:20:45.00005' asDateAndTime
 		' 2002-05-16T17:20' asDateAndTime
 		' 2002-05-16T17:20:45-02:34' asDateAndTime
 		' 2002-05-16T17:20:45+00:00' asDateAndTime
 	"! !
-----------
----------
---------
----------------------------------
 	should be removed from the system. If so, remove it."
 		global isBehavior ifTrue:
 		ifTrue: [ Scanner prefAllowUnderscoreSelectors ]
 		ifFalse: [ self == $: or: [ self isLetter or: [ self isDigit ] ] ]! !
+Utilities setAuthorInitials: 'TestRunner'.
+
+MCMcmUpdater defaultUpdateURL: 'http://source.squeak.org/trunk'.
+
+"This comes from Utilities class >> #updateFromServer, but leaves off the #inform: call, which puts up a modal dialog. When running headless there's still a MorphicUIManager running"
+
+"Update the image by loading all pending updates from the server."
+"Flush all caches. If a previous download failed this is often helpful"
+MCFileBasedRepository flushAllCaches.
+config := MCMcmUpdater updateFromDefaultRepository.
+config ifNil: [^self inform: 'Unable to retrieve updates from remote repository.' translated].
+Utilities setSystemVersionFromConfig: config.
+
+"Save the fully updated trunk image."
+WorldState addDeferredUIMessage: [ SmalltalkImage current snapshot: true andQuit: true ].!
----End fileIn of a stream----!
----QUIT----{14 August 2012 . 9:49:55 pm} UpdatedFromLastReleaseImage.image priorSource: 6450343!
----STARTUP----{31 December 2012 . 4:15:03 pm} as /var/lib/jenkins/workspace/SqueakTrunk/target/TrunkImage.image!
  http://www.apache.org/licenses/LICENSE-2.0
- This image is ~15M. If you execute - Smalltalk unloadAllKnownPackages - it will become ~10M 
- A SqueakCore image is available at http://ftp.squeak.org/4.4
- A reasonable target is the creation of a smaller image, which may be a task before the community
- A place to explore where to make reductions is likely the removal/replacement of GUIs
- Once we have a smaller core image, we can employ Andreas Raab''s memo [1] on how to load code back into the image. This will be based on tests delineating the separate responsibilities of core and application developers
 [1]]http://lists.squeakfoundation.org/pipermail/squeak-dev/2010-May/150469.html
 		[:repo | repo description = 'http://source.squeak.org/trunk'].
+Utilities setAuthorInitials: 'TestRunner'.
+
+MCMcmUpdater defaultUpdateURL: 'http://source.squeak.org/trunk'.
+
+"This comes from Utilities class >> #updateFromServer, but leaves off the #inform: call, which puts up a modal dialog. When running headless there's still a MorphicUIManager running"
+
+"Update the image by loading all pending updates from the server."
+"Flush all caches. If a previous download failed this is often helpful"
+MCFileBasedRepository flushAllCaches.
+config := MCMcmUpdater updateFromDefaultRepository.
+config ifNil: [^self inform: 'Unable to retrieve updates from remote repository.' translated].
+Utilities setSystemVersionFromConfig: config.
+
+FileStream fileNamed: 'TrunkImage.version' do: [:f | f nextPutAll: SystemVersion current highestUpdate printString; close].
+
+"Save the fully updated trunk image."
+WorldState addDeferredUIMessage: [ SmalltalkImage current snapshot: true andQuit: true ].
+!
----End fileIn of a stream----!
----QUIT----{31 December 2012 . 4:16:06 pm} TrunkImage.image priorSource: 7289079!
----STARTUP----{31 December 2012 . 4:16:07 pm} as /var/lib/jenkins/workspace/SqueakTrunk/target/TrunkImage.image!
----QUIT----{31 December 2012 . 4:16:07 pm} TrunkImage.image priorSource: 7428984!
----STARTUP----{31 December 2012 . 4:36:52 pm} as /var/lib/jenkins/workspace/ReleaseSqueakTrunk/target/Squeak4.4-12327.image!
+!
----End fileIn of a stream----!
----QUIT----{31 December 2012 . 4:44:48 pm} Squeak4.4-12327.image priorSource: 7429184!
----STARTUP----{31 March 2013 . 3:27:14 pm} as /home/cmm/Chris/development/Squeak/Squeak4.4-12327.image!
+Workspace allInstances do: [:w | w topView delete].
+ReleaseBuilderFor4dot4 prepareNewBuild.
+Smalltalk snapshot: true andQuit: true.
+!
----End fileIn of a stream----!
----SNAPSHOT----{31 March 2013 . 3:27:34 pm} Squeak4.5-12327.image priorSource: 7430688!
 
  		"Paste it before the second vertical bar"
 
 	root := dir
 ! !
 ! !
 ! !
 ! !
 ! !
    "Write a weak reference to anObject to the receiver stream. Answer anObject.
     If anObject is not a reference type of object, then just put it normally.
     A 'weak' reference means: If anObject gets written this stream via nextPut:,
     then its weak references will become normal references. Otherwise they'll
     read back as nil. -- "
    | typeID referencePosn |
    "Is it a reference type of object? If not, just write it normally."
    typeID := self typeIDFor: anObject.
    (self isAReferenceType: typeID) ifFalse: [^ self nextPut: anObject].
    "Have we heard of and maybe even written anObject before?"
    referencePosn := references at: anObject ifAbsentPut: [OrderedCollection new].
    "If referencePosn is an Integer, it's the stream position of anObject.
     Else it's a collection of hopeful weak-references to anObject."
    referencePosn isInteger ifFalse:
        [referencePosn add: byteStream position - basePos.		"relative"
        referencePosn := self vacantRef].
    self outputReference: referencePosn.		"relative"
    ^ anObject! !
 SoundMorph SubpaneDividerMorph
  		' 2002-05-16T17:20:45.00005' asDateAndTime
 		' 2002-05-16T17:20' asDateAndTime
 		' 2002-05-16T17:20:45-02:34' asDateAndTime
 		' 2002-05-16T17:20:45+00:00' asDateAndTime
 	"! !
 Browse methods whose initials (in the time-stamp, as logged to disk) match the given initials.
 Print out the complete time-stamp table to the Transcript.
 Answer a list of (initials -> count) associations.
+ aNumber 
- aNumber
+ aNumber
- aNumber
- I find latest ten projects in "My Squeak" and image directories (see: EToysLauncher>>directories).
- A thumbnail can be shown if there is "project name.gif" file.
- You can enter a project when you click a thumbnail.
- The list is updated when you go and back project.
   	| morphOrList archive mgr substituteFont numberOfFontSubstitutes resultArray anObject project manifests dict |
 	"Return a new ColorForm containing the portion of the receiver delineated by aRect."
   "Move an image around on the Display. Restore the background continuously without causing flashing. The argument, locationBlock, supplies each new location, and the argument, durationBlock, supplies true to continue or false to stop. This variant takes the bitsBehind as an input argument, and returns the final saved saved bits as method value."
   | location rect1 save1 save1Blt buffer bufferBlt newLoc rect2 bothRects |
   location := loc.
   rect1 := location extent: self extent.
   save1 := initialBitsBehind.
   save1Blt := BitBlt toForm: save1.
   buffer := Form extent: self extent*2 depth: Display depth.  "Holds overlapping region"
   bufferBlt := BitBlt toForm: buffer.
   Display deferUpdates: true.
   self displayOn: Display at: location rule: Form paint.
   Display deferUpdates: false; forceToScreen: (location extent: self extent).
   [durationBlock value] whileTrue: [
        "Paint a border whose rectangular area is defined by rect. The
        | blt |
        blt := (BitBlt toForm: self) combinationRule: rule; fillColor: fillColor.
        blt sourceOrigin: 0@0.
        blt destOrigin: rect origin.
        blt width: rect width; height: borderWidth; copyBits.
        blt destY: rect corner y - borderWidth; copyBits.
        blt destY: rect origin y + borderWidth.
        blt height: rect height - borderWidth - borderWidth; width:
        blt destX: rect corner x - borderWidth; copyBits! !
 | f f2 f3 | f := Form fromUser. f2 := Form fromDisplay: (0@0 extent: f extent). f3 := f2 deepCopy.
 | d |
 | f f2 p | [Sensor anyButtonPressed] whileFalse:
        "Answer a Form created as a scaling of the receiver.
        Scale may be a Float or even a Point, and may be greater or less than 1.0."
        | newForm |
        newForm := self blankCopyOf: aRectangle scaledBy: scale.
        (WarpBlt toForm: newForm)
                sourceForm: self;
                colorMap: (self colormapIfNeededFor: newForm);
                cellSize: cellSize;  "installs a new colormap if cellSize > 1"
                combinationRule: 3;
                copyQuad: aRectangle innerCorners toRect: newForm boundingBox.
        ^ newForm
        [(Display magnify: (Sensor cursorPoint extent: 131@81) by: 0.5 smoothing: 2) display]
        [cp := Sensor cursorPoint.
        (f magnify: f boundingBox by: (cp x asFloat@cp y asFloat)/f extent smoothing: 2) display]]
 | f f2 f3 | f := Form fromUser. f replaceColor: f peripheralColor withColor: Color transparent.
 | f diff | f := Form fromUser.
 | f f2 p | [Sensor anyButtonPressed] whileFalse:
 | a f |  f := Form fromDisplay: (0@0 extent: 200@200).  a := 0.
 | r tallies nonZero |
     correctAlphas := 0.
     0  to: 255 do: [:sourceAlpha |
         sourceForm := Form extent: 1 @ 1 depth: 32.
         sourceForm bits at: 1 put: sourceAlpha << 24 + (33 << 16) + (25 << 8) + 27.
         0 to: 255 do: [:destAlpha |
             destForm := Form extent: 1 @ 1 depth: 32.
             destForm bits at: 1 put: destAlpha << 24 + (255 << 16) + (255 << 8) + 255.
              blt := BitBlt new.
              blt sourceForm: sourceForm.
              blt sourceOrigin: 0 @ 0.
              blt setDestForm: destForm.
              blt destOrigin: 0 @ 0.
              blt combinationRule: 20.	"rgbAdd"
              blt copyBits.
              correctAlphas := correctAlphas
                + (((blt destForm bits at: 1) digitAt: 4) = (destAlpha + sourceAlpha min: 255)
                         ifTrue: [1]
                         ifFalse: [0])
      ]].
     self assert: 65536 equals: correctAlphas! !
     correctAlphas := 0.
     0  to: 255 do: [:sourceAlpha |
         sourceForm := Form extent: 1 @ 1 depth: 32.
         sourceForm bits at: 1 put: sourceAlpha << 24 + (33 << 16) + (25 << 8) + 27.
         0 to: 255 do: [:destAlpha |
             destForm := Form extent: 1 @ 1 depth: 32.
             destForm bits at: 1 put: destAlpha << 24 + (255 << 16) + (255 << 8) + 255.
              blt := BitBlt new.
              blt sourceForm: sourceForm.
              blt sourceOrigin: 0 @ 0.
              blt setDestForm: destForm.
              blt destOrigin: 0 @ 0.
              blt combinationRule: 27.	"rgbMax"
              blt copyBits.
              correctAlphas := correctAlphas
                + (((blt destForm bits at: 1) digitAt: 4) = (destAlpha max: sourceAlpha)
                         ifTrue: [1]
                         ifFalse: [0])
      ]].
     self assert: 65536 equals: correctAlphas! !
     correctAlphas := 0.
     0  to: 255 do: [:sourceAlpha |
         sourceForm := Form extent: 1 @ 1 depth: 32.
         sourceForm bits at: 1 put: sourceAlpha << 24 + (33 << 16) + (25 << 8) + 27.
         0 to: 255 do: [:destAlpha |
             destForm := Form extent: 1 @ 1 depth: 32.
             destForm bits at: 1 put: destAlpha << 24 + (255 << 16) + (255 << 8) + 255.
              blt := BitBlt new.
              blt sourceForm: sourceForm.
              blt sourceOrigin: 0 @ 0.
              blt setDestForm: destForm.
              blt destOrigin: 0 @ 0.
              blt combinationRule: 28.	"rgbMin"
              blt copyBits.
              correctAlphas := correctAlphas
                + (((blt destForm bits at: 1) digitAt: 4) = (destAlpha min: sourceAlpha)
                         ifTrue: [1]
                         ifFalse: [0])
      ]].
     self assert: 65536 equals: correctAlphas! !
     correctAlphas := 0.
     0  to: 255 do: [:sourceAlpha |
         sourceForm := Form extent: 1 @ 1 depth: 32.
         sourceForm bits at: 1 put: sourceAlpha << 24 + (33 << 16) + (25 << 8) + 27.
         0 to: 255 do: [:destAlpha |
             destForm := Form extent: 1 @ 1 depth: 32.
             destForm bits at: 1 put: destAlpha << 24 + (255 << 16) + (255 << 8) + 255.
              blt := BitBlt new.
              blt sourceForm: sourceForm.
              blt sourceOrigin: 0 @ 0.
              blt setDestForm: destForm.
              blt destOrigin: 0 @ 0.
              blt combinationRule: 29.	"rgbMinInvert"
              blt copyBits.
              correctAlphas := correctAlphas
                + (((blt destForm bits at: 1) digitAt: 4) = (destAlpha min: 255-sourceAlpha)
                         ifTrue: [1]
                         ifFalse: [0])
      ]].
     self assert: 65536 equals: correctAlphas! !
     correctAlphas := 0.
     0  to: 255 do: [:sourceAlpha |
         sourceForm := Form extent: 1 @ 1 depth: 32.
         sourceForm bits at: 1 put: sourceAlpha << 24 + (33 << 16) + (25 << 8) + 27.
         0 to: 255 do: [:destAlpha |
             destForm := Form extent: 1 @ 1 depth: 32.
             destForm bits at: 1 put: destAlpha << 24 + (255 << 16) + (255 << 8) + 255.
              blt := BitBlt new.
              blt sourceForm: sourceForm.
              blt sourceOrigin: 0 @ 0.
              blt setDestForm: destForm.
              blt destOrigin: 0 @ 0.
              blt combinationRule: 37.	"rgbMul"
              blt copyBits.
              correctAlphas := correctAlphas
                + (((blt destForm bits at: 1) digitAt: 4) = ((destAlpha+1) * (sourceAlpha+1)- 1 // 256)
                         ifTrue: [1]
                         ifFalse: [0])
      ]].
     self assert: 65536 equals: correctAlphas! !
     correctAlphas := 0.
     0  to: 255 do: [:sourceAlpha |
         sourceForm := Form extent: 1 @ 1 depth: 32.
         sourceForm bits at: 1 put: sourceAlpha << 24 + (33 << 16) + (25 << 8) + 27.
         0 to: 255 do: [:destAlpha |
             destForm := Form extent: 1 @ 1 depth: 32.
             destForm bits at: 1 put: destAlpha << 24 + (255 << 16) + (255 << 8) + 255.
              blt := BitBlt new.
              blt sourceForm: sourceForm.
              blt sourceOrigin: 0 @ 0.
              blt setDestForm: destForm.
              blt destOrigin: 0 @ 0.
              blt combinationRule: 21.	"rgbSub"
              blt copyBits.
              correctAlphas := correctAlphas
                + (((blt destForm bits at: 1) digitAt: 4) = (destAlpha - sourceAlpha) abs
                         ifTrue: [1]
                         ifFalse: [0])
      ]].
     self assert: 65536 equals: correctAlphas! !
     warp := (WarpBlt toForm: port destForm)
                combinationRule: Form paint;
                sourceQuad: sourceQuad destRect: (globalRect origin corner: globalRect corner+(1@1));
                clipRect: port clipRect.
        ^ (WarpBlt toForm: port destForm)
                combinationRule: Form paint;
                sourceQuad: sourceQuad destRect: (destRect translateBy: origin);
                clipRect: clipRect! !
  | drawingWasChanged |
 		combinationRule: Form over;
 ^ aClass organization allMethodSelectors collect: 
  |className|
  className := self class name asText copyFrom: 0 to: self class name size - 4.
  ^ Smalltalk at: (className asString asSymbol).
----QUIT----{31 March 2013 . 3:48:10 pm} Squeak4.5-12327.image priorSource: 7431144!
----STARTUP----{31 March 2013 . 3:49:25 pm} as /home/cmm/Chris/development/Squeak/Squeak4.5-12327.image!
----SNAPSHOT----{31 March 2013 . 3:49:41 pm} Squeak4.5-12568.image priorSource: 7915923!
----QUIT/NOSAVE----{31 March 2013 . 3:49:46 pm} Squeak4.5-12568.image priorSource: 7916116!
----STARTUP----{31 March 2013 . 3:50:44 pm} as /home/cmm/Chris/development/Squeak/Squeak4.5-12568.image!
----QUIT/NOSAVE----{31 March 2013 . 3:50:47 pm} Squeak4.5-12568.image priorSource: 7916116!
----STARTUP----{29 April 2013 . 12:03:57 pm} as /home/lars/Documents/spy/lang-smalltalk/images/Squeak4.5-12568.image!
   	| morphOrList archive mgr substituteFont numberOfFontSubstitutes resultArray anObject project manifests dict |
----SNAPSHOT----{29 April 2013 . 12:47:48 pm} Squeak4.5-12568.image priorSource: 7916116!
    <version: '1.0-baseline'>
    spec
        for: #'common'
        do: [ 
            spec blessing: #'baseline'.
            spec repository: 'http://ss3.gemstone.com/ss/FileTree'.
            spec package: 'MonticelloFileTree-Core'.
            spec group: 'default' with: #('MonticelloFileTree-Core') ].
    spec
        for: #'pharo1.1.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: [ spec file: 'MonticelloFileTree-Core.pharo11' ];
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: [ 
                            spec
                                file: 'MonticelloFileTree-FileDirectory-Utilities.pharo11';
                                requires: 'MonticelloFileTree-Core' ].
            spec group: 'default' with: #('MonticelloFileTree-FileDirectory-Utilities') ].
    spec
        for: #'pharo1.2.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: [ spec file: 'MonticelloFileTree-Core.pharo11' ];
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: [ 
                            spec
                                file: 'MonticelloFileTree-FileDirectory-Utilities.pharo11';
                                requires: 'MonticelloFileTree-Core' ].
            spec group: 'default' with: #('MonticelloFileTree-FileDirectory-Utilities') ].
    spec
        for: #'pharo1.3.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: [ spec file: 'MonticelloFileTree-Core.pharo13' ];
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: [ 
                            spec
                                file: 'MonticelloFileTree-FileDirectory-Utilities.pharo13';
                                requires: 'MonticelloFileTree-Core' ].
            spec group: 'default' with: #('MonticelloFileTree-FileDirectory-Utilities') ].
    spec
        for: #'pharo1.4.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: [ spec file: 'MonticelloFileTree-Core.pharo14' ];
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: [ 
                            spec
                                file: 'MonticelloFileTree-FileDirectory-Utilities.pharo14';
                                requires: 'MonticelloFileTree-Core' ].
            spec group: 'default' with: #('MonticelloFileTree-FileDirectory-Utilities') ].
    spec
        for: #'pharo2.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: [ spec file: 'MonticelloFileTree-Core.pharo20' ];
                package: 'MonticelloFileTree-FileSystem-Utilities'
                    with: [ 
                            spec
                                file: 'MonticelloFileTree-FileSystem-Utilities.pharo20';
                                requires: 'MonticelloFileTree-Core' ].
            spec group: 'default' with: #('MonticelloFileTree-FileSystem-Utilities') ].
    spec
        for: #'squeak'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: [ spec file: 'MonticelloFileTree-Core.squeak43' ];
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: [ 
                            spec
                                file: 'MonticelloFileTree-FileDirectory-Utilities.squeak43';
                                requires: 'MonticelloFileTree-Core' ].
            spec group: 'default' with: #('MonticelloFileTree-FileDirectory-Utilities') ].
    spec
        for: #'gemstone'
        do: [ 
            spec
                project: 'GsCore'
                    with: [ 
                            spec
                                className: 'ConfigurationOfGsCore';
                                repository: 'http://seaside.gemstone.com/ss/MetacelloRepository' ];
                project: 'Monticello'
                    with: [ 
                            spec
                                className: 'ConfigurationOfGsMonticello';
                                repository: 'http://seaside.gemstone.com/ss/MetacelloRepository' ].
            spec
                package: 'MonticelloFileTree-Core'
                    with: [ 
                            spec
                                file: 'MonticelloFileTree-Core.gemstone24';
                                requires: #('GsCore' 'Monticello') ];
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: [ 
                            spec
                                file: 'MonticelloFileTree-FileDirectory-Utilities.gemstone24';
                                requires: 'MonticelloFileTree-Core' ].
            spec group: 'default' with: #('MonticelloFileTree-FileDirectory-Utilities') ]! !
    "Edit to return a collection of any custom attributes e.g. for conditional loading: Array with: #'Condition1' with: #'Condition2.
    ^ #()! !
    ^ project
        ifNil: [ 
            "Bootstrap Metacello if it is not already loaded"
            self class ensureMetacello.
            project := MetacelloMCProject new projectAttributes: self customProjectAttributes.	"Create the Metacello project"
            (Smalltalk at: #'MetacelloVersionConstructor') on: self project: project.	"Construct the project"
            project loadType: #'linear'.	"change to #atomic if desired"
            project ]! !
    <symbolicVersion: #'stable'>
    spec for: #'common' version: '1.0.1'! !
    <version: '1.0' imports: #('1.0-baseline')>
    spec
        for: #'common'
        do: [ 
            spec blessing: #'release'.
            spec description: 'FileTree 1.0'.
            spec author: 'dkh'.
            spec timestamp: '9/15/2012 14:10' ].
    spec
        for: #'pharo1.1.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.pharo11-dkh.92';
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: 'MonticelloFileTree-FileDirectory-Utilities.pharo11-dkh.14'  ].
    spec
        for: #'pharo1.2.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.pharo11-dkh.92';
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: 'MonticelloFileTree-FileDirectory-Utilities.pharo11-dkh.14'  ].
    spec
        for: #'pharo1.3.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.pharo13-dkh.90';
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: 'MonticelloFileTree-FileDirectory-Utilities.pharo13-dkh.12' ].
    spec
        for: #'pharo1.4.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.pharo14-dkh.90';
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: 'MonticelloFileTree-FileDirectory-Utilities.pharo14-dkh.12' ].
    spec
        for: #'pharo2.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.pharo20-dkh.91';
                package: 'MonticelloFileTree-FileSystem-Utilities'
                    with: 'MonticelloFileTree-FileSystem-Utilities.pharo20-dkh.17' ].
    spec
        for: #'squeak'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.squeak43-dkh.90';
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: 'MonticelloFileTree-FileDirectory-Utilities.squeak43-dkh.12' ].
    spec
        for: #'gemstone'
        do: [ 
            spec
                project: 'GsCore' with: '0.246';
                project: 'Monticello' with: '0.243'.
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.gemstone24-dkh.92';
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: 'MonticelloFileTree-FileDirectory-Utilities.gemstone24-dkh.14' ]! !
    <version: '1.0.1' imports: #('1.0-baseline')>
    spec
        for: #'common'
        do: [ 
            spec blessing: #'release'.
            spec description: 'port to GemStone 3.1.x
- write out gemstone class options in class definitions correctly
- fix problems in filename generation in presence of specials
- port to GemStone 3.2
- fix Issue #69:
  https://github.com/dalehenrich/filetree/issues/69
- commit: d861c5d76ecc762d6cb4f11f6ec6c1ba45d6bdc0'.
            spec author: 'dkh'.
            spec timestamp: '3/12/2013 16:30' ].
    spec
        for: #'pharo1.1.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.pharo11-dkh.95';
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: 'MonticelloFileTree-FileDirectory-Utilities.pharo11-dkh.14'  ].
    spec
        for: #'pharo1.2.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.pharo11-dkh.95';
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: 'MonticelloFileTree-FileDirectory-Utilities.pharo11-dkh.14'  ].
    spec
        for: #'pharo1.3.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.pharo13-dkh.93';
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: 'MonticelloFileTree-FileDirectory-Utilities.pharo13-dkh.12' ].
    spec
        for: #'pharo1.4.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.pharo14-dkh.93';
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: 'MonticelloFileTree-FileDirectory-Utilities.pharo14-dkh.12' ].
    spec
        for: #'pharo2.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.pharo20-dkh.91';
                package: 'MonticelloFileTree-FileSystem-Utilities'
                    with: 'MonticelloFileTree-FileSystem-Utilities.pharo20-dkh.17' ].
    spec
        for: #'squeak'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.squeak43-dkh.92';
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: 'MonticelloFileTree-FileDirectory-Utilities.squeak43-dkh.12' ].
    spec
        for: #'gemstone'
        do: [ 
            spec
                project: 'GsCore' with: '0.246';
                project: 'Monticello' with: '0.243'.
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.gemstone24-dkh.99';
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: 'MonticelloFileTree-FileDirectory-Utilities.gemstone24-dkh.14' ].
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.gemstone24-dkh.99' ].
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.gemstone24-dkh.99' ].
    <version: '1.0.2' imports: #('1.0-baseline')>
    spec
        for: #'common'
        do: [ 
            spec blessing: #'development'.
            spec description: ''.
            spec author: 'dkh'.
            spec timestamp: '3/12/2013 16:30' ].
    spec
        for: #'pharo1.1.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.pharo11-dkh.95';
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: 'MonticelloFileTree-FileDirectory-Utilities.pharo11-dkh.14'  ].
    spec
        for: #'pharo1.2.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.pharo11-dkh.95';
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: 'MonticelloFileTree-FileDirectory-Utilities.pharo11-dkh.14'  ].
    spec
        for: #'pharo1.3.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.pharo13-dkh.93';
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: 'MonticelloFileTree-FileDirectory-Utilities.pharo13-dkh.12' ].
    spec
        for: #'pharo1.4.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.pharo14-dkh.93';
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: 'MonticelloFileTree-FileDirectory-Utilities.pharo14-dkh.12' ].
    spec
        for: #'pharo2.x'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.pharo20-dkh.91';
                package: 'MonticelloFileTree-FileSystem-Utilities'
                    with: 'MonticelloFileTree-FileSystem-Utilities.pharo20-dkh.17' ].
    spec
        for: #'squeak'
        do: [ 
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.squeak43-dkh.92';
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: 'MonticelloFileTree-FileDirectory-Utilities.squeak43-dkh.12' ].
    spec
        for: #'gemstone'
        do: [ 
            spec
                project: 'GsCore' with: '0.246';
                project: 'Monticello' with: '0.243'.
            spec
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.gemstone24-dkh.99';
                package: 'MonticelloFileTree-FileDirectory-Utilities'
                    with: 'MonticelloFileTree-FileDirectory-Utilities.gemstone24-dkh.14' ].
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.gemstone24-dkh.99' ].
                package: 'MonticelloFileTree-Core' with: 'MonticelloFileTree-Core.gemstone24-dkh.99' ].
    project: 'FileTree';
    install: 'ConfigurationOfFileTree'.!
- Gofer treats packages from one or more repository in one operation.
- Gofer works with fixed versions or tries to find the "latest" version using a given name prefix.
- Gofer automatically assigns repositories to all packages, so that the other tools are ready to be used on individual packages.
- Gofer makes sure that there is only one repository instance registered for a single physical location.
- Gofer works with Monticello dependencies and uniformly treats them like the primary package.
- Gofer prefers to work with faster repositories if there is a choice.
- Gofer cleans up after Monticello, no empty class categories and no empty method protocols are to be expected.
    "Corresponds to version 1.0-beta.31.1.5"
    | minimumPackages |
    self ensureGoferVersion: 'Gofer-Core-lr.115' repositoryUrl: repositoryUrl.
    minimumPackages := OrderedCollection
        withAll: #('Metacello-Base-DaleHenrichs.19' 'Metacello-Core-dkh.492' 'Metacello-MC-dkh.664').
    self platformPackage ifNotNil: [ :pkg | minimumPackages add: pkg ].
    minimumPackages do: [ :pkg | self bootstrapPackage: pkg from: repositoryUrl ]! !
    "Bootstrap Metacello and load the minimum support"
    self ensureMetacello: #('Metacello-Core')! !
    "Bootstrap Metacello and load the 'default' group"
    self ensureMetacello: #('batch')! !
    "Bootstrap Metacello, retry using alternate repository, if primary repository is not accessible"
    Smalltalk
        at: #'MetacelloProject'
        ifAbsent: [ 
            | retry version error |
            retry := false.
            (Array with: 'http://seaside.gemstone.com/ss/metacello' with: 'http://www.squeaksource.com/metacello')
                do: [ :repositoryUrl | 
                    [ 
                    "bootstrap Metacello"
                    self bootstrapMetacelloFrom: repositoryUrl.	"load latest version of Metacello"
                    version := self project latestVersion.
                    retry
                        ifTrue: [ 
                            "on retry, use #repositoryOverrides:"
                            version
                                repositoryOverrides:
                                    (Array with: (MCHttpRepository location: repositoryUrl user: '' password: '')) ].
                    version load: loadList.
                    ^ self ]
                        on: Error
                        do: [ :ex | 
                            error := ex.
                            Transcript
                                cr;
                                show: 'failed ensureMetacello: ';
                                show: ex description printString;
                                show: '...retrying'.	"try again"
                            retry := true.
                            ex return: nil ] ].	"shouldn't get here unless the load failed ... throw an error"
            self error: 'retry with alternate repository failed: ' , error description printString ]! !
    "self validate"
    self ensureMetacello.
    ^ ((Smalltalk at: #'MetacelloToolBox') validateConfiguration: self debug: #() recurse: false) explore! !
- ''default'' group is just the core ... class-side loaders load ''ALL'' by default
- pull in some old tests that still apply
- combine Metacello-ConfigTests into Metacello-TestsMC
- rename Metacello-ReferenceTests to Metacello-TestsReference
- recast tutorial to new API
- add Samples group (Metacello-Configuration [duh] and Seaside-Metacello-Configuration'.
- Samples group includes Seaside-Metacello-Configuration and GemTools-Configuraton (Metacello-Configuration should not be included ... it is always present)'.
    <version: '1.0-beta.31.1.5-baseline'>
    spec
        for: #'common'
        do: [ 
            spec blessing: #'baseline'.
            spec repository: 'http://seaside.gemstone.com/ss/metacello'.
            spec repository: 'http://www.squeaksource.com/metacello'.
            spec
                project: 'Gofer Core'
                    with: [ 
                            spec
                                className: 'ConfigurationOfGofer';
                                versionString: '1.0-baseline';
                                loads: #('Core');
                                file: 'ConfigurationOfGofer';
                                repository: 'http://www.squeaksource.com/MetacelloRepository';
                                repository: 'http://seaside.gemstone.com/ss/metacello' ];
                project: 'Gofer Tests' copyFrom: 'Gofer Core' with: [ spec loads: #('Tests') ];
                yourself.
            spec
                package: 'Metacello-Base';
                package: 'Metacello-ToolBox' with: [ spec requires: #('Metacello-Base' 'Metacello-Core') ];
                package: 'Metacello-Core'
                    with: [ 
                            spec
                                requires: 'Metacello-Base';
                                includes: #('Metacello-MC' 'Metacello-Platform') ];
                package: 'Metacello-MC' with: [ spec requires: #('Metacello-Core' 'Gofer Core') ];
                package: 'Metacello-Platform' with: [ spec requires: #('Metacello-MC') ];
                package: 'Metacello-Reference' with: [ spec requires: #('Metacello-MC') ];
                package: 'Metacello-Tutorial' with: [ spec requires: #('Metacello-Core') ];
                package: 'Metacello-TestsCore' with: [ spec requires: #('Metacello-Core') ];
                package: 'Metacello-TestsMC'
                    with: [ 
                            spec
                                postLoadDoIt: #'testsMC10beta25PostLoadDoIt';
                                requires: #('Metacello-ToolBox' 'Metacello-MC' 'Gofer Tests') ];
                package: 'Metacello-TestsReference' with: [ spec requires: #('Metacello-Reference') ];
                package: 'Metacello-TestsTutorial' with: [ spec requires: #('Metacello-Tutorial' 'Metacello-TestsMC') ];
                package: 'OB-Metacello'
                    with: [ spec requires: #('Metacello-Platform' 'Metacello-Core' 'Metacello-ToolBox') ];
                yourself.
            spec
                group: 'default' with: #('Metacello-Core' 'Metacello-ToolBox');
                group: 'batch' with: #('Metacello-Core');
                group: 'Base Configuration' with: #('Metacello-Base');
                group: 'Core' with: #('default');
                group: 'Tutorial' with: #('Metacello-Tutorial' 'Metacello-Reference');
                group: 'UI' with: #('OB-Metacello');
                group: 'TravisCI'
                    with:
                        #('Metacello-TestsCore' 'Metacello-TestsTutorial' 'Metacello-TestsMC' 'Metacello-TestsReference');
                group: 'Tests'
                    with:
                        #('default' 'Metacello-TestsCore' 'Metacello-TestsTutorial' 'Metacello-TestsMC' 'Metacello-TestsReference');
                yourself ].
    spec
        for: #'squeakCommon'
        do: [ 
            spec
                project: 'Help System'
                    with: [ 
                            spec
                                className: 'ConfigurationOfHelpSystem';
                                versionString: '1.0-baseline';
                                loads: #('Core');
                                file: 'ConfigurationOfHelpSystem';
                                repository: 'http://www.squeaksource.com/MetacelloRepository' ];
                project: 'OB'
                    with: [ 
                            spec
                                className: 'ConfigurationOfOmniBrowser';
                                versionString: '1.1-baseline';
                                loads: #('Core');
                                file: 'ConfigurationOfOmniBrowser';
                                repository: 'http://www.squeaksource.com/MetacelloRepository' ];
                yourself.
            spec
                package: 'Metacello-TestsPlatform'
                    with: [ 
                            spec
                                requires: #('Metacello-Platform');
                                file: 'Metacello-TestsPlatform.squeakCommon' ];
                package: 'Metacello-Help' with: [ spec requires: 'Help System' ];
                package: 'OB-Metacello' with: [ spec requires: #('OB') ];
                yourself.
            spec
                group: 'default' with: #('Metacello-Help');
                group: 'TravisCI' with: #('Metacello-TestsPlatform');
                group: 'Tests' with: #('Metacello-TestsPlatform');
                yourself ].
    spec
        for: #'pharo'
        do: [ 
            spec
                project: 'ProfStef'
                    with: [ 
                            spec
                                className: 'ConfigurationOfProfStef';
                                versionString: '1.0-baseline';
                                file: 'ConfigurationOfProfStef';
                                repository: 'http://www.squeaksource.com/MetacelloRepository' ];
                yourself.
            spec
                package: 'Metacello-ProfStef'
                    with: [ spec requires: #('Metacello-Core' 'ProfStef' 'Metacello-ToolBox') ];
                package: 'Metacello-TestsProfStef' with: [ spec requires: #('Metacello-ProfStef') ];
                package: 'Metacello-Platform' with: 'Metacello-Platform.pharo';
                yourself.
            spec
                group: 'Tests' with: #('Metacello-TestsProfStef');
                group: 'Tutorial' with: #('Metacello-ProfStef');
                yourself ].
    spec for: #'pharo1.0.x' do: [ spec package: 'Metacello-ProfStef' with: [ spec file: 'Metacello-ProfStef.toolset' ] ].
    spec for: #'pharo1.1.x' do: [ spec package: 'Metacello-ProfStef' with: [ spec file: 'Metacello-ProfStef.toolset' ] ].
    spec
        for: #'pharo1.2.x'
        do: [ 
            spec
                package: 'Metacello-ProfStef' with: [ spec file: 'Metacello-ProfStef.toolset' ];
                package: 'Metacello-TestsMC' with: [ spec includes: #('Metacello-Issue3758') ];
                package: 'Metacello-Issue3758' with: [ spec requires: #('Metacello-TestsMC') ];
                yourself ].
    spec
        for: #'pharo1.3.x'
        do: [ 
            spec
                package: 'Metacello-TestsMC' with: [ spec includes: #('Metacello-Issue3758') ];
                package: 'Metacello-Issue3758' with: [ spec requires: #('Metacello-TestsMC') ];
                yourself ].
    spec
        for: #'pharo2.x'
        do: [ 
            spec
                package: 'Metacello-Platform' with: 'Metacello-Platform.pharo20';
                yourself ].
    spec
        for: #'squeak'
        do: [ 
            spec
                package: 'Metacello-Platform' with: 'Metacello-Platform.squeak';
                yourself ].
    spec
        for: #'gemstone'
        do: [ 
            spec
                project: 'Monticello'
                    with: [ 
                            spec
                                className: 'ConfigurationOfGsMonticello';
                                repository: 'http://seaside.gemstone.com/ss/MetacelloRepository' ];
                project: 'OB'
                    with: [ 
                            spec
                                className: 'ConfigurationOfGsOB';
                                repository: 'http://seaside.gemstone.com/ss/MetacelloRepository' ];
                yourself.
            spec
                package: 'Metacello-Platform'
                    with: [ 
                            spec
                                file: 'Metacello-Platform.gemstone';
                                postLoadDoIt: #'gemstone10beta311PostLoadDoIt';
                                requires: 'Monticello' ];
                package: 'Metacello-TestsPlatform'
                    with: [ 
                            spec
                                requires: #('Metacello-Platform');
                                file: 'Metacello-TestsPlatform.gemstone' ];
                package: 'OB-Metacello' with: [ spec requires: #('OB') ];
                yourself.
            spec
                group: 'Tests' with: #('Metacello-TestsPlatform');
                group: 'TravisCI' with: #('Metacello-TestsPlatform');
                yourself ]! !
    <version: '1.0-beta.32-baseline'>
    spec
        for: #'common'
        do: [ 
            spec blessing: #'baseline'.
            spec repository: 'http://seaside.gemstone.com/ss/metacello'.
            spec repository: 'http://www.squeaksource.com/metacello'.
            spec
                project: 'FileTree'
                    with: [ 
                            spec
                                className: 'ConfigurationOfFileTree';
                                versionString: '1.0-baseline';
                                repository: 'http://ss3.gemstone.com/ss/FileTree' ];
                project: 'Gofer'
                    with: [ 
                            spec
                                className: 'ConfigurationOfGofer';
                                versionString: '1.0-baseline';
                                loads: #('Core');
                                repository: 'http://seaside.gemstone.com/ss/metacello' ];
                project: 'Gofer Tests' copyFrom: 'Gofer' with: [ spec loads: #('Tests') ];
                yourself.
            spec
                package: 'Metacello-Base';
                package: 'Metacello-ToolBox' with: [ spec requires: #('Metacello-Base' 'Metacello-Core') ];
                package: 'Metacello-Core'
                    with: [ 
                            spec
                                requires: 'Metacello-Base';
                                includes: #('Metacello-MC' 'Metacello-Platform') ];
                package: 'Metacello-FileTree' with: [ spec requires: #('Metacello-MC' 'FileTree') ];
                package: 'Metacello-GitHub' with: [ spec requires: #('Metacello-MC' 'Metacello-FileTree') ];
                package: 'Metacello-MC' with: [ spec requires: #('Metacello-Core' 'Gofer') ];
                package: 'Metacello-Platform' with: [ spec requires: #('Metacello-MC') ];
                package: 'Metacello-Reference' with: [ spec requires: #('Metacello-MC') ];
                package: 'Metacello-Tutorial' with: [ spec requires: #('Metacello-Core') ];
                package: 'Metacello-TestsCore' with: [ spec requires: #('Metacello-Core') ];
                package: 'Metacello-TestsMC'
                    with: [ 
                            spec
                                postLoadDoIt: #'testsMC10beta25PostLoadDoIt';
                                requires: #('Metacello-MC' 'Metacello-TestsCore' 'Gofer Tests' 'Metacello-ToolBox') ];
                package: 'Metacello-TestsReference' with: [ spec requires: #('Metacello-Reference') ];
                package: 'Metacello-TestsTutorial' with: [ spec requires: #('Metacello-Tutorial' 'Metacello-TestsMC') ];
                package: 'OB-Metacello'
                    with: [ spec requires: #('Metacello-Platform' 'Metacello-Core' 'Metacello-ToolBox') ];
                yourself.
            spec
                group: 'default' with: #('Metacello-Core' 'Metacello-ToolBox' 'Metacello-GitHub');
                group: 'batch' with: #('Metacello-Core' 'Metacello-GitHub');
                group: 'Base Configuration' with: #('Metacello-Base');
                group: 'Core' with: #('default');
                group: 'Tutorial' with: #('Metacello-Tutorial' 'Metacello-Reference');
                group: 'UI' with: #('OB-Metacello');
                group: 'TravisCI'
                    with:
                        #('Metacello-TestsCore' 'Metacello-TestsTutorial' 'Metacello-TestsMC' 'Metacello-TestsReference');