Merged with /trunk jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Wed, 21 Dec 2011 22:04:49 +0000
branchjv
changeset 17907 998195c96a6d
parent 17906 c666c2087cc5
child 17908 3068afa182df
Merged with /trunk
Annotation.st
ApplicationDefinition.st
Behavior.st
CharacterArray.st
Class.st
ClassBuilder.st
Collection.st
ConfigurableFeatures.st
ExternalFunctionCallback.st
ExternalStream.st
Method.st
Object.st
ProjectDefinition.st
ReadEvalPrintLoop.st
Smalltalk.st
stx_libbasic.st
--- a/Annotation.st	Fri Dec 09 23:15:57 2011 +0000
+++ b/Annotation.st	Wed Dec 21 22:04:49 2011 +0000
@@ -475,12 +475,13 @@
 
     aStream nextPutAll: '(Annotation resource: '.
     type storeOn: aStream.
-    value ifNotNil:
+    value notNil ifTrue:
         [aStream nextPutAll: ' value: '.
         value storeOn: aStream].    
     aStream nextPut:$)
 
     "Modified: / 16-07-2010 / 11:36:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 29-11-2011 / 11:19:06 / cg"
 ! !
 
 !Annotation::Resource methodsFor:'processing'!
@@ -569,18 +570,19 @@
 !Annotation class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Annotation.st,v 1.6 2011/09/09 05:16:45 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Annotation.st,v 1.7 2011/11/29 10:19:47 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Annotation.st,v 1.6 2011/09/09 05:16:45 cg Exp §'
+    ^ 'Header: /cvs/stx/stx/libbasic/Annotation.st,v 1.7 2011/11/29 10:19:47 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: Annotation.st 10729 2011-10-31 22:19:21Z vranyj1 $'
+    ^ '$Id: Annotation.st 10751 2011-12-21 22:04:49Z vranyj1 $'
 ! !
 
 Annotation initialize!
 
 
 
+
--- a/ApplicationDefinition.st	Fri Dec 09 23:15:57 2011 +0000
+++ b/ApplicationDefinition.st	Wed Dec 21 22:04:49 2011 +0000
@@ -2122,7 +2122,7 @@
 all::   prereq exe
 
 LIBNAME=%(LIBRARY_NAME)
-STCLOCALOPT=''-package=$(PACKAGE)'' -I. -H. $(LOCALINCLUDES) $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) %(HEADEROUTPUTARG) %(COMMONSYMFLAG) -varPrefix=$(LIBNAME)
+STCLOCALOPT=''-package=$(PACKAGE)'' -I. --headerDir=. $(LOCALINCLUDES) $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) %(HEADEROUTPUTARG) %(COMMONSYMFLAG) -varPrefix=$(LIBNAME)
 
 
 # ********** OPTIONAL: MODIFY the next line ***
@@ -2212,7 +2212,7 @@
     "Modified: / 09-08-2006 / 16:50:23 / fm"
     "Created: / 29-09-2006 / 23:47:07 / cg"
     "Modified: / 24-06-2009 / 21:40:26 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 27-09-2011 / 19:34:12 / cg"
+    "Modified: / 06-12-2011 / 21:24:50 / cg"
 !
 
 make_dot_proto_app_source_rules
@@ -2836,14 +2836,15 @@
 !ApplicationDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.186 2011/10/31 09:58:33 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.187 2011/12/06 20:28:11 cg Exp $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.186 2011/10/31 09:58:33 cg Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.187 2011/12/06 20:28:11 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: ApplicationDefinition.st 10729 2011-10-31 22:19:21Z vranyj1 $'
+    ^ '$Id: ApplicationDefinition.st 10751 2011-12-21 22:04:49Z vranyj1 $'
 ! !
 
+
--- a/Behavior.st	Fri Dec 09 23:15:57 2011 +0000
+++ b/Behavior.st	Wed Dec 21 22:04:49 2011 +0000
@@ -13,7 +13,7 @@
 
 Object subclass:#Behavior
 	instanceVariableNames:'superclass flags methodDictionary lookupObject instSize'
-	classVariableNames:'SubclassInfo'
+	classVariableNames:''
 	poolDictionaries:''
 	category:'Kernel-Classes'
 !
@@ -1014,7 +1014,6 @@
 ! !
 
 
-
 !Behavior methodsFor:'Compatibility-Dolphin'!
 
 allSubinstances
@@ -4219,18 +4218,18 @@
 
     dict := self methodDictionary.
     dict isNil ifTrue:[
-	('Behavior [warning]: nil methodDictionary in ' , self name printString) errorPrintCR.
-	^ exceptionValue value
+        ('Behavior [warning]: nil methodDictionary in ' , self name printString) errorPrintCR.
+        ^ exceptionValue value
     ].
     "Quick check: look into method dictionary"
     mth := dict at: name asSymbol ifAbsent:nil.
-    mth ifNotNil:[^mth].
+    mth notNil ifTrue:[^mth].
 
     "Slow search..."
-    dict do:
-	[:each|
-	(each isSynthetic not and:[each name = name])
-	    ifTrue:[^each]].
+    dict do: [:each|
+        (each isSynthetic not and:[each name = name])
+            ifTrue:[^each]
+    ].
     ^exceptionValue value
 
 
@@ -4241,6 +4240,7 @@
 
     "Created: / 24-08-2009 / 10:02:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 28-06-2011 / 14:16:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 29-11-2011 / 11:20:08 / cg"
 !
 
 containsMethod:aMethod
@@ -4748,10 +4748,15 @@
 
 !Behavior class methodsFor:'documentation'!
 
+version
+    ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.318 2011/12/06 15:21:49 cg Exp $'
+!
+
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.314 2011/08/20 14:36:35 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.318 2011/12/06 15:21:49 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: Behavior.st 10727 2011-10-28 07:45:38Z vranyj1 $'
+    ^ '$Id: Behavior.st 10751 2011-12-21 22:04:49Z vranyj1 $'
 ! !
+
--- a/CharacterArray.st	Fri Dec 09 23:15:57 2011 +0000
+++ b/CharacterArray.st	Wed Dec 21 22:04:49 2011 +0000
@@ -677,6 +677,7 @@
     ^ self == CharacterArray
 ! !
 
+
 !CharacterArray methodsFor:'Compatibility-ANSI'!
 
 addLineDelimiters
@@ -4194,7 +4195,6 @@
 ! !
 
 
-
 !CharacterArray methodsFor:'padded copying'!
 
 centerPaddedTo:newSize
@@ -4716,7 +4716,6 @@
     "Modified: 17.4.1997 / 12:50:23 / cg"
 ! !
 
-
 !CharacterArray methodsFor:'special string converting'!
 
 expandPlaceholdersWith:argArrayOrDictionary
@@ -5892,17 +5891,18 @@
 !CharacterArray class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.461 2011/11/24 18:24:27 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.462 2011/11/29 10:55:55 cg Exp $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.461 2011/11/24 18:24:27 cg Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.462 2011/11/29 10:55:55 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: CharacterArray.st 10741 2011-11-26 08:36:46Z vranyj1 $'
+    ^ '$Id: CharacterArray.st 10751 2011-12-21 22:04:49Z vranyj1 $'
 ! !
 
 CharacterArray initialize!
 
 
+
--- a/Class.st	Fri Dec 09 23:15:57 2011 +0000
+++ b/Class.st	Wed Dec 21 22:04:49 2011 +0000
@@ -15,11 +15,19 @@
 	instanceVariableNames:'name category classvars comment subclasses classFilename package
 		revision environment signature attributes'
 	classVariableNames:'DefaultCategoryForSTV DefaultCategoryForVAGE
-		DefaultCategoryForDolphin ValidateSourceOnlyOnce ValidatedClasses'
+		DefaultCategoryForDolphin ValidateSourceOnlyOnce ValidatedClasses
+		SubclassCacheSequenceNumber'
 	poolDictionaries:''
 	category:'Kernel-Classes'
 !
 
+Array variableSubclass:#ArrayWithSequenceNumberValidation
+	instanceVariableNames:'sequenceNumber'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:Class
+!
+
 Object subclass:#ClassAttributes
 	instanceVariableNames:'primitiveDefinitions primitiveVariables primitiveFunctions
 		sharedPools traitComposition localSelectors vGuid fGuid'
@@ -393,16 +401,17 @@
      by #subclassInfo.
      This is private protocol"
 
-    SubclassInfo := nil.
-    self allSubInstancesDo:[:cls |
-	cls flushSubclasses
-    ].
+    SubclassCacheSequenceNumber := (SubclassCacheSequenceNumber ? 0) + 1.
+
+"/    self allSubInstancesDo:[:cls |
+"/        cls flushSubclasses
+"/    ].
 
     "
      Class flushSubclassInfo
     "
 
-    "Modified: 22.1.1997 / 18:39:36 / cg"
+    "Modified: / 06-12-2011 / 16:20:13 / cg"
 !
 
 flushSubclassInfoFor:aClass
@@ -411,54 +420,14 @@
      This is private protocol"
 
     aClass notNil ifTrue:[
-	SubclassInfo notNil ifTrue:[
-	    SubclassInfo removeKey:aClass ifAbsent:[]
-	].
-	aClass flushSubclasses
+        aClass flushSubclasses
     ].
 
     "
      Class flushSubclassInfoFor:View
     "
 
-    "Modified: 22.1.1997 / 18:39:36 / cg"
-!
-
-subclassInfo
-    "build & return a dictionary, containing the set of subclass
-     for each class. This information is kept until explicitely flushed
-     by #flushSubclassInfo.
-     This cache is used internally, for enumerators like #allSubclasses
-     or #allSubclassesDo:, to avoid repeated recursive walks over the class
-     hierarchy.
-     This is private protocol."
-
-    |d|
-
-"/    SubclassInfo notNil ifTrue:[^ SubclassInfo].
-"/
-"/    d := IdentityDictionary new.
-"/    Smalltalk allClassesDo:[:aClass |
-"/        |superCls setToAddSubclass|
-"/
-"/        superCls := aClass superclass.
-"/        superCls notNil ifTrue:[
-"/            setToAddSubclass := d at:superCls ifAbsent:nil.
-"/            setToAddSubclass isNil ifTrue:[
-"/                d at:superCls put:(Set with:aClass).
-"/            ] ifFalse:[
-"/                setToAddSubclass add:aClass
-"/            ]
-"/        ]
-"/    ].
-    SubclassInfo := d.
-    ^ d
-
-    "
-     Class subclassInfo
-    "
-
-    "Modified: 22.1.1997 / 18:44:59 / cg"
+    "Modified: / 06-12-2011 / 16:20:49 / cg"
 ! !
 
 !Class class methodsFor:'queries'!
@@ -1780,10 +1749,11 @@
     "return a collection of the direct subclasses of the receiver"
 
     "/ use cached information (avoid class hierarchy search), if possible
-    subclasses isNil ifTrue:[
-	self updateAllCachedSubclasses.
-	"subclasses may still be nil - obsolete classes may not be updated"
-	^ subclasses ? #().
+    (subclasses isNil 
+    or:[ subclasses sequenceNumber ~= SubclassCacheSequenceNumber ]) ifTrue:[
+        self updateAllCachedSubclasses.
+        "subclasses may still be nil - obsolete classes may not be updated"
+        ^ subclasses ? #().
     ].
     ^ subclasses.
 
@@ -1793,7 +1763,7 @@
      SmallInteger subclasses
     "
 
-    "Modified: / 23-05-2011 / 17:33:43 / cg"
+    "Modified: / 06-12-2011 / 16:05:16 / cg"
 !
 
 superclass:aClass
@@ -2233,18 +2203,13 @@
      This will only enumerate globally known classes - for anonymous
      behaviors, you have to walk over all instances of Behavior."
 
-    "/ use cached information (avoid class hierarchy search), if possible
-    subclasses isNil ifTrue:[
-	self updateAllCachedSubclasses.
-	subclasses isNil ifTrue:[subclasses := #()].
-    ].
-    subclasses do:aBlock
+    self subclasses do:aBlock
 
     "
      Collection subclassesDo:[:c | Transcript showCR:(c name)]
     "
 
-    "Modified: / 13-10-2010 / 12:39:13 / cg"
+    "Modified: / 06-12-2011 / 15:59:49 / cg"
 !
 
 withAllPrivateClassesDo:aBlock
@@ -3574,24 +3539,36 @@
 !
 
 updateAllCachedSubclasses
-    |subclassesPerClass|
+    |subclassesPerClass seqNr makeNewSet|
+
+    makeNewSet := [Set new].
 
     subclassesPerClass := Dictionary new.
     Smalltalk allClassesDo:[:each |
-	|cls superclass|
-
-	cls := each theNonMetaclass.
-	(superclass := each superclass) notNil ifTrue:[
-	    (subclassesPerClass at:superclass ifAbsentPut:[Set new]) add:cls
-	].
-	subclassesPerClass at:cls ifAbsentPut:[Set new].
+        |cls superclass|
+
+        cls := each theNonMetaclass.
+        (superclass := each superclass) notNil ifTrue:[
+            (subclassesPerClass at:superclass ifAbsentPut:makeNewSet) add:cls
+        ].
+        subclassesPerClass at:cls ifAbsentPut:makeNewSet.
     ].
+
+    SubclassCacheSequenceNumber isNil ifTrue:[
+        SubclassCacheSequenceNumber := 0.
+    ].
+    seqNr := SubclassCacheSequenceNumber.
     subclassesPerClass keysAndValuesDo:[:cls :subclasses |
-	cls setSubclasses:(subclasses asArray).
+        |coll|
+
+        coll := ArrayWithSequenceNumberValidation withAll:subclasses.
+        coll sequenceNumber:seqNr.
+        cls setSubclasses:coll.
     ].
 
     "
      Class updateAllCachedSubclasses
+     Array subclasses
     "
 
     "Created: / 28-04-2010 / 08:47:20 / cg"
@@ -5265,6 +5242,24 @@
     "Created: / 16-08-2009 / 12:57:53 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+!Class::ArrayWithSequenceNumberValidation methodsFor:'accessing'!
+
+sequenceNumber
+    ^ sequenceNumber
+!
+
+sequenceNumber:something
+    sequenceNumber := something.
+! !
+
+!Class::ArrayWithSequenceNumberValidation methodsFor:'checking'!
+
+checkIfValidFor:aSequenceNumber
+    ^ aSequenceNumber ~= sequenceNumber
+
+    "Created: / 06-12-2011 / 16:01:16 / cg"
+! !
+
 !Class::ClassAttributes class methodsFor:'documentation'!
 
 documentation
@@ -5508,13 +5503,14 @@
 !Class class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Class.st 10748 2011-12-08 18:18:15Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.600 2011/12/06 15:21:38 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Class.st,v 1.598 2011/10/03 08:30:36 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/Class.st,v 1.600 2011/12/06 15:21:38 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: Class.st 10748 2011-12-08 18:18:15Z vranyj1 $'
+    ^ '$Id: Class.st 10751 2011-12-21 22:04:49Z vranyj1 $'
 ! !
+
--- a/ClassBuilder.st	Fri Dec 09 23:15:57 2011 +0000
+++ b/ClassBuilder.st	Wed Dec 21 22:04:49 2011 +0000
@@ -87,13 +87,15 @@
     Smalltalk keysAndValuesDo:[:nm :o |
         o == oldClass ifTrue:[
             nm ~~ oldClass name ifTrue:[
-                (self confirm:('The global/classVar `' , nm , ''' is an alias for ' , oldClass name , '.\\Change it to the new class ?') withCRs)
+                true "/ (self confirm:('The global/classVar `' , nm , ''' is an alias for ' , oldClass name , '.\\Change it to the new class ?') withCRs)
                 ifTrue:[
                     Smalltalk at:nm put:newClass
                 ]
             ]
         ]
     ].
+
+    "Modified: / 20-12-2011 / 12:22:42 / cg"
 !
 
 differentInstanceVariableOffsetsIn:class1 and:class2
@@ -2359,18 +2361,19 @@
 !ClassBuilder class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ClassBuilder.st,v 1.112 2011/10/30 11:39:25 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ClassBuilder.st,v 1.113 2011/12/20 14:33:18 cg Exp $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/ClassBuilder.st,v 1.112 2011/10/30 11:39:25 cg Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/ClassBuilder.st,v 1.113 2011/12/20 14:33:18 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: ClassBuilder.st 10729 2011-10-31 22:19:21Z vranyj1 $'
+    ^ '$Id: ClassBuilder.st 10751 2011-12-21 22:04:49Z vranyj1 $'
 ! !
 
 ClassBuilder initialize!
 
 
 
+
--- a/Collection.st	Fri Dec 09 23:15:57 2011 +0000
+++ b/Collection.st	Wed Dec 21 22:04:49 2011 +0000
@@ -2483,6 +2483,13 @@
             aBlock value:each.
         ]
     ]
+
+    "
+     #(1 nil 3 nil nil 6 7 nil)
+        nonNilElementsDo:[:el | Transcript showCR:el]
+    "
+
+    "Modified (comment): / 21-12-2011 / 15:51:39 / cg"
 !
 
 pairsDo:aTwoArgBlock
@@ -2530,6 +2537,15 @@
     aTwoArgBlock value:selected value:rejected.
     ^ selected
 
+    "
+     #(1 2 3 4 5 6 7 8)
+        partition:[:el | el even]
+        into:[:evenElements :oddElements |
+            Transcript show:'even: '; showCR:evenElements.
+            Transcript show:' odd: '; showCR:oddElements.
+        ].
+    "
+
     "Created: / 20-07-2011 / 00:54:41 / cg"
 !
 
@@ -3879,6 +3895,20 @@
 
 !Collection methodsFor:'testing'!
 
+allElementsHaveTheSameValue
+    "true if all elements of the receiver have the same value"
+
+    ^ self sameValuesComputedBy:[:el | el]
+
+    "
+     #(1 2 3 5 6 7 8 9) allElementsHaveTheSameValue
+     #(1 1 1 1 1 1) allElementsHaveTheSameValue
+     #(1 1 1.0 1.0 1) allElementsHaveTheSameValue
+    "
+
+    "Created: / 21-12-2011 / 15:54:08 / cg"
+!
+
 capacity
     "return the number of elements, that the receiver is
      prepared to take. For most collections, this is the actual
@@ -4104,6 +4134,34 @@
      #(1 4 6 8 4 1) occurrencesOfAny:#(2 5)  
      'hello world' occurrencesOfAny:'hel'     
     "
+!
+
+sameValuesComputedBy:aBlock
+    "true if aBlock answers the same value for all elements of the receiver"
+
+    |first valueForFirstElement|
+
+    first := true.
+    self do:[:each |
+        first ifTrue:[
+            first := false.
+            valueForFirstElement := aBlock value:each.
+        ] ifFalse:[
+            valueForFirstElement = (aBlock value:each) ifFalse:[
+                ^ false.
+            ].
+        ].
+    ].
+    ^ true
+
+    "
+     #(1 2 3 5 6 7 8 9) sameValuesComputedBy:[:el | el even]
+     #(1 1 1 1 1 1) sameValuesComputedBy:[:el | el even]
+     #(1 1 1.0 1.0 1) sameValuesComputedBy:[:el | el even]
+     #(1 3 3 15 1) sameValuesComputedBy:[:el | el even]
+    "
+
+    "Created: / 21-12-2011 / 15:59:19 / cg"
 ! !
 
 !Collection methodsFor:'tracing'!
@@ -4126,16 +4184,17 @@
 !Collection class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.267 2011/10/07 11:14:09 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.270 2011/12/21 14:59:45 cg Exp $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/Collection.st,v 1.267 2011/10/07 11:14:09 cg Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/Collection.st,v 1.270 2011/12/21 14:59:45 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: Collection.st 10729 2011-10-31 22:19:21Z vranyj1 $'
+    ^ '$Id: Collection.st 10751 2011-12-21 22:04:49Z vranyj1 $'
 ! !
 
 Collection initialize!
 
+
--- a/ConfigurableFeatures.st	Fri Dec 09 23:15:57 2011 +0000
+++ b/ConfigurableFeatures.st	Wed Dec 21 22:04:49 2011 +0000
@@ -98,6 +98,32 @@
 
 !ConfigurableFeatures class methodsFor:'queries-features'!
 
+hasFileBasedSourceCodeManagerSupport
+    |mgr|
+
+    "/ use Smalltalk-at to trick the dependency/prerequisite generator
+    ^ (mgr := Smalltalk at: #'FileBasedSourceCodeManager') notNil
+    and:[ mgr enabled ]
+    "
+     ConfigurableFeatures hasFileBasedSourceCodeManagerSupport
+    "
+
+    "Created: / 21-12-2011 / 17:07:21 / cg"
+!
+
+hasFileBasedSourceCodeManagerSupportEnabled
+    |repository|
+
+    "/ use Smalltalk-at to trick the dependency/prerequisite generator
+    repository := Smalltalk at: #'FileBasedSourceCodeManager'.
+
+    ^ repository notNil
+        and:[ repository isLoaded 
+        and:[ repository enabled ]]
+
+    "Created: / 21-12-2011 / 17:07:08 / cg"
+!
+
 hasSubversionSupport
     |subVersionRepository|
 
@@ -129,14 +155,15 @@
 !ConfigurableFeatures class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ConfigurableFeatures.st,v 1.1 2011/09/07 08:54:18 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ConfigurableFeatures.st,v 1.2 2011/12/21 18:19:57 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ConfigurableFeatures.st,v 1.1 2011/09/07 08:54:18 cg Exp §'
+    ^ 'Header: /cvs/stx/stx/libbasic/ConfigurableFeatures.st,v 1.2 2011/12/21 18:19:57 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: ConfigurableFeatures.st 10729 2011-10-31 22:19:21Z vranyj1 $'
+    ^ '$Id: ConfigurableFeatures.st 10751 2011-12-21 22:04:49Z vranyj1 $'
 ! !
 
+
--- a/ExternalFunctionCallback.st	Fri Dec 09 23:15:57 2011 +0000
+++ b/ExternalFunctionCallback.st	Wed Dec 21 22:04:49 2011 +0000
@@ -291,7 +291,7 @@
 "
 ! !
 
-!ExternalFunctionCallback class methodsFor:'common callbacks'!
+!ExternalFunctionCallback class methodsFor:'instance creation'!
 
 callbackFor:aBlock returnType:returnType argumentTypes:argumentTypes
     "generate a callback for the ErrorCallbackProc signature:
@@ -493,7 +493,7 @@
 
 code
     self hasCode ifFalse:[
-	self generate
+        self generateClosure
     ].
     ^ super code
 
@@ -829,14 +829,15 @@
 !ExternalFunctionCallback class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ExternalFunctionCallback.st,v 1.16 2011/08/09 23:20:10 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalFunctionCallback.st,v 1.18 2011/12/12 19:30:09 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ExternalFunctionCallback.st,v 1.16 2011/08/09 23:20:10 cg Exp §'
+    ^ 'Header: /cvs/stx/stx/libbasic/ExternalFunctionCallback.st,v 1.18 2011/12/12 19:30:09 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: ExternalFunctionCallback.st 10729 2011-10-31 22:19:21Z vranyj1 $'
+    ^ '$Id: ExternalFunctionCallback.st 10751 2011-12-21 22:04:49Z vranyj1 $'
 ! !
 
+
--- a/ExternalStream.st	Fri Dec 09 23:15:57 2011 +0000
+++ b/ExternalStream.st	Wed Dec 21 22:04:49 2011 +0000
@@ -5706,16 +5706,17 @@
 !ExternalStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.344 2011/09/15 13:12:35 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.346 2011/11/30 10:48:27 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.344 2011/09/15 13:12:35 cg Exp §'
+    ^ 'Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.346 2011/11/30 10:48:27 stefan Exp '
 !
 
 version_SVN
-    ^ '$Id: ExternalStream.st 10729 2011-10-31 22:19:21Z vranyj1 $'
+    ^ '$Id: ExternalStream.st 10751 2011-12-21 22:04:49Z vranyj1 $'
 ! !
 
 ExternalStream initialize!
 
+
--- a/Method.st	Fri Dec 09 23:15:57 2011 +0000
+++ b/Method.st	Wed Dec 21 22:04:49 2011 +0000
@@ -3354,10 +3354,14 @@
     "only for wrapped methods: return the wrapper.
      Thats the WrapperMethod which contains myself."
 
-    WrappedMethod allInstancesDo:[:m |
-        m originalMethod == self ifTrue:[^ m].
+    WrappedMethod notNil ifTrue:[
+        WrappedMethod allInstancesDo:[:m |
+            m originalMethod == self ifTrue:[^ m].
+        ].
     ].
     ^ nil
+
+    "Modified: / 05-12-2011 / 11:15:26 / cg"
 !
 
 writesField:instVarIndex
@@ -3607,17 +3611,18 @@
 !Method class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.379 2011/11/18 16:05:20 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.380 2011/12/05 10:16:31 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Method.st,v 1.379 2011/11/18 16:05:20 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/Method.st,v 1.380 2011/12/05 10:16:31 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: Method.st 10741 2011-11-26 08:36:46Z vranyj1 $'
+    ^ '$Id: Method.st 10751 2011-12-21 22:04:49Z vranyj1 $'
 ! !
 
 Method initialize!
 
 
+
--- a/Object.st	Fri Dec 09 23:15:57 2011 +0000
+++ b/Object.st	Wed Dec 21 22:04:49 2011 +0000
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 1988 by Claus Gittinger
-	      All Rights Reserved
+              All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -33,7 +33,7 @@
 copyright
 "
  COPYRIGHT (c) 1988 by Claus Gittinger
-	      All Rights Reserved
+              All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -117,52 +117,52 @@
 
    [Class variables:]
 
-	ErrorSignal     <Signal>        Signal raised for error/error: messages
-					also, parent of all other signals.
-
-	HaltSignal      <Signal>        Signal raised for halt/halt: messages
-
-	MessageNotUnderstoodSignal      Signals raised for various error conditions
-	UserInterruptSignal
-	RecursionInterruptSignal
-	ExceptionInterruptSignal
-	SubscriptOutOfBoundsSignal
-	NonIntegerIndexSignal
-	NotFoundSignal
-	KeyNotFoundSignal
-	ElementOutOfBoundsSignal
-	InformationSignal
-	WarningSignal
-	DeepCopyErrorSignal
-	InternalErrorSignal
-
-	AbortSignal      <Signal>       Signal raised by debugger, to abort a computation
-					BUT, the debugger will only raise it if it is handled.
-					By handling the abortSignal, you can control where the
-					debuggers abort-function resumes execution in case of
-					an error.
-
-	ErrorRecursion   <Boolean>      controls behavior when recursive errors occur (i.e.
-					an error while handling an error).
-
-	Dependencies     <WeakDependencyDictionary>
-					keeps track of object dependencies.
-
-	InfoPrinting     <Boolean>      controls weather informational messages
-					are printed.
-
-	ActivityNotificationSignal <QuerySignal>
-					 raised on #activityNotification:
-
-	NonWeakDependencies <Dictionary> keeps track of object dependencies.
-					 Dependents stay alive.
-
-	SynchronizationSemaphores <WeakIdentityDictionary>
-					 Semaphores for per-object-monitor.
+        ErrorSignal     <Signal>        Signal raised for error/error: messages
+                                        also, parent of all other signals.
+
+        HaltSignal      <Signal>        Signal raised for halt/halt: messages
+
+        MessageNotUnderstoodSignal      Signals raised for various error conditions
+        UserInterruptSignal
+        RecursionInterruptSignal
+        ExceptionInterruptSignal
+        SubscriptOutOfBoundsSignal
+        NonIntegerIndexSignal
+        NotFoundSignal
+        KeyNotFoundSignal
+        ElementOutOfBoundsSignal
+        InformationSignal
+        WarningSignal
+        DeepCopyErrorSignal
+        InternalErrorSignal
+
+        AbortSignal      <Signal>       Signal raised by debugger, to abort a computation
+                                        BUT, the debugger will only raise it if it is handled.
+                                        By handling the abortSignal, you can control where the
+                                        debuggers abort-function resumes execution in case of
+                                        an error.
+
+        ErrorRecursion   <Boolean>      controls behavior when recursive errors occur (i.e.
+                                        an error while handling an error).
+
+        Dependencies     <WeakDependencyDictionary>
+                                        keeps track of object dependencies.
+
+        InfoPrinting     <Boolean>      controls weather informational messages
+                                        are printed.
+
+        ActivityNotificationSignal <QuerySignal>
+                                         raised on #activityNotification:
+
+        NonWeakDependencies <Dictionary> keeps track of object dependencies.
+                                         Dependents stay alive.
+
+        SynchronizationSemaphores <WeakIdentityDictionary>
+                                         Semaphores for per-object-monitor.
 
 
     [author:]
-	Claus Gittinger
+        Claus Gittinger
 
 "
 ! !
@@ -236,23 +236,23 @@
     "called only once - initialize signals"
 
     ErrorSignal isNil ifTrue:[
-	self initSignals
+        self initSignals
     ].
 
     ObjectAttributes isNil ifTrue:[
-	ObjectAttributes := WeakIdentityDictionary new.
+        ObjectAttributes := WeakIdentityDictionary new.
     ].
     Dependencies isNil ifTrue:[
-	Dependencies := WeakDependencyDictionary new.
+        Dependencies := WeakDependencyDictionary new.
     ].
     NonWeakDependencies isNil ifTrue:[
-	NonWeakDependencies := IdentityDictionary new.
+        NonWeakDependencies := IdentityDictionary new.
     ].
     SynchronizationSemaphores isNil ifTrue:[
-	SynchronizationSemaphores := WeakIdentityDictionary new.
+        SynchronizationSemaphores := WeakIdentityDictionary new.
     ].
     FinalizationLobby isNil ifTrue:[
-	FinalizationLobby := Registry new.
+        FinalizationLobby := Registry new.
     ].
 
     "/ initialize InfoPrinting to the VM's infoPrint setting
@@ -432,13 +432,13 @@
 
     "
      RecursiveStoreError handle:[:ex |
-	self halt
+        self halt
      ] do:[
-	|a|
-
-	a := Array new:1.
-	a at:1 put:a.
-	a storeOn:Transcript
+        |a|
+
+        a := Array new:1.
+        a at:1 put:a.
+        a storeOn:Transcript
      ]
     "
 
@@ -619,7 +619,7 @@
 explore
     (self confirm:'The Squeak explorer has not yet been ported to ST/X\\Inspect instead ?' withCRs)
     ifTrue:[
-	self inspect
+        self inspect
     ]
 !
 
@@ -636,13 +636,13 @@
 !
 
 stringForReadout
-	^ self stringRepresentation
+        ^ self stringRepresentation
 !
 
 stringRepresentation
-	"Answer a string that represents the receiver.  For most objects this is simply its printString, but for strings themselves, it's themselves.  6/12/96 sw"
-
-	^ self printString
+        "Answer a string that represents the receiver.  For most objects this is simply its printString, but for strings themselves, it's themselves.  6/12/96 sw"
+
+        ^ self printString
 !
 
 valueWithPossibleArguments:argArray
@@ -689,6 +689,7 @@
     "
 ! !
 
+
 !Object methodsFor:'accessing'!
 
 _at:index
@@ -755,239 +756,239 @@
      * and SmallInteger
      */
     if (__isSmallInteger(index)) {
-	myClass = __qClass(self);
-	indx = __intVal(index) - 1;
-	n /* nInstVars */ = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
-	n /* nInstBytes */ = OHDR_SIZE + __OBJS2BYTES__(n /* nInstVars */);
-	nbytes = __qSize(self) - n /* nInstBytes */;
-	pFirst = (char *)(__InstPtr(self)) + n /* nInstBytes */;
-
-	switch ((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
-	    case __MASKSMALLINT(POINTERARRAY):
-	    case __MASKSMALLINT(WKPOINTERARRAY):
-		/*
-		 * pointers
-		 */
-		if ((unsigned)indx < (__BYTES2OBJS__(nbytes))) {
-		    OBJ *op;
-
-		    op = (OBJ *)pFirst + indx;
-		    RETURN ( *op );
-		}
-		break;
-
-	    case __MASKSMALLINT(BYTEARRAY):
-		/*
-		 * (unsigned) bytes
-		 */
-		if ((unsigned)indx < nbytes) {
-		    unsigned char *cp;
-
-		    cp = (unsigned char *)pFirst + indx;
-		    RETURN ( __mkSmallInteger( (*cp & 0xFF)) );
-		}
-		break;
-
-	    case __MASKSMALLINT(FLOATARRAY):
-		/*
-		 * native floats
-		 */
-		if ((unsigned)indx < (nbytes / sizeof(float))) {
-		    float *fp;
-		    float f;
-		    OBJ v;
-
-		    fp = (float *)pFirst + indx;
-		    f = *fp;
-		    if (f == 0.0) {
-			v = __float0;
-		    } else {
-			__qMKSFLOAT(v, f);
-		    }
-		    RETURN (v);
-		}
-		break;
-
-	    case __MASKSMALLINT(DOUBLEARRAY):
-		/*
-		 * native doubles
-		 */
+        myClass = __qClass(self);
+        indx = __intVal(index) - 1;
+        n /* nInstVars */ = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
+        n /* nInstBytes */ = OHDR_SIZE + __OBJS2BYTES__(n /* nInstVars */);
+        nbytes = __qSize(self) - n /* nInstBytes */;
+        pFirst = (char *)(__InstPtr(self)) + n /* nInstBytes */;
+
+        switch ((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
+            case __MASKSMALLINT(POINTERARRAY):
+            case __MASKSMALLINT(WKPOINTERARRAY):
+                /*
+                 * pointers
+                 */
+                if ((unsigned)indx < (__BYTES2OBJS__(nbytes))) {
+                    OBJ *op;
+
+                    op = (OBJ *)pFirst + indx;
+                    RETURN ( *op );
+                }
+                break;
+
+            case __MASKSMALLINT(BYTEARRAY):
+                /*
+                 * (unsigned) bytes
+                 */
+                if ((unsigned)indx < nbytes) {
+                    unsigned char *cp;
+
+                    cp = (unsigned char *)pFirst + indx;
+                    RETURN ( __mkSmallInteger( (*cp & 0xFF)) );
+                }
+                break;
+
+            case __MASKSMALLINT(FLOATARRAY):
+                /*
+                 * native floats
+                 */
+                if ((unsigned)indx < (nbytes / sizeof(float))) {
+                    float *fp;
+                    float f;
+                    OBJ v;
+
+                    fp = (float *)pFirst + indx;
+                    f = *fp;
+                    if (f == 0.0) {
+                        v = __float0;
+                    } else {
+                        __qMKSFLOAT(v, f);
+                    }
+                    RETURN (v);
+                }
+                break;
+
+            case __MASKSMALLINT(DOUBLEARRAY):
+                /*
+                 * native doubles
+                 */
 #ifdef __NEED_DOUBLE_ALIGN
-		if ((INT)pFirst & (__DOUBLE_ALIGN-1)) {
-		    int delta = __DOUBLE_ALIGN - ((INT)pFirst & (__DOUBLE_ALIGN-1));
-
-		    pFirst += delta;
-		    nbytes -= delta;
-		}
+                if ((INT)pFirst & (__DOUBLE_ALIGN-1)) {
+                    int delta = __DOUBLE_ALIGN - ((INT)pFirst & (__DOUBLE_ALIGN-1));
+
+                    pFirst += delta;
+                    nbytes -= delta;
+                }
 #endif
-		if ((unsigned)indx < (nbytes / sizeof(double))) {
-		    double *dp;
-		    double d;
-		    OBJ v;
-
-		    dp = (double *)pFirst + indx;
-		    d = *dp;
-		    if (d == 0.0) {
-			v = __float0;
-		    } else {
-			__qMKFLOAT(v, d);
-		    }
-		    RETURN (v);
-		}
-		break;
-
-	    case __MASKSMALLINT(WORDARRAY):
-		/*
-		 * unsigned 16bit ints
-		 */
-		/* Notice: the hard coded shifts are by purpose;
-		 * it makes us independent of the short-size of the machine
-		 */
-		if ((unsigned)indx < (nbytes>>1)) {
-		    unsigned short *sp;
-
-		    sp = (unsigned short *)(pFirst + (indx<<1));
-		    RETURN ( __mkSmallInteger( (*sp & 0xFFFF)) );
-		}
-		break;
-
-	    case __MASKSMALLINT(SWORDARRAY):
-		/*
-		 * signed 16bit ints
-		 */
-		/* Notice: the hard coded shifts are by purpose;
-		 * it makes us independent of the short-size of the machine
-		 */
-		if ((unsigned)indx < (nbytes>>1)) {
-		    short *ssp;
-
-		    ssp = (short *)(pFirst + (indx<<1));
-		    RETURN ( __mkSmallInteger( (*ssp) ));
-		}
-		break;
-
-	    case __MASKSMALLINT(LONGARRAY):
-		/*
-		 * unsigned 32bit ints
-		 */
-		/* Notice: the hard coded shifts are by purpose;
-		 * it makes us independent of the int-size of the machine
-		 */
-		if ((unsigned)indx < (nbytes>>2)) {
-		    unsigned int32 ul;
-		    unsigned int32 *lp;
-
-		    lp = (unsigned int32 *)(pFirst + (indx<<2));
-		    ul = *lp;
+                if ((unsigned)indx < (nbytes / sizeof(double))) {
+                    double *dp;
+                    double d;
+                    OBJ v;
+
+                    dp = (double *)pFirst + indx;
+                    d = *dp;
+                    if (d == 0.0) {
+                        v = __float0;
+                    } else {
+                        __qMKFLOAT(v, d);
+                    }
+                    RETURN (v);
+                }
+                break;
+
+            case __MASKSMALLINT(WORDARRAY):
+                /*
+                 * unsigned 16bit ints
+                 */
+                /* Notice: the hard coded shifts are by purpose;
+                 * it makes us independent of the short-size of the machine
+                 */
+                if ((unsigned)indx < (nbytes>>1)) {
+                    unsigned short *sp;
+
+                    sp = (unsigned short *)(pFirst + (indx<<1));
+                    RETURN ( __mkSmallInteger( (*sp & 0xFFFF)) );
+                }
+                break;
+
+            case __MASKSMALLINT(SWORDARRAY):
+                /*
+                 * signed 16bit ints
+                 */
+                /* Notice: the hard coded shifts are by purpose;
+                 * it makes us independent of the short-size of the machine
+                 */
+                if ((unsigned)indx < (nbytes>>1)) {
+                    short *ssp;
+
+                    ssp = (short *)(pFirst + (indx<<1));
+                    RETURN ( __mkSmallInteger( (*ssp) ));
+                }
+                break;
+
+            case __MASKSMALLINT(LONGARRAY):
+                /*
+                 * unsigned 32bit ints
+                 */
+                /* Notice: the hard coded shifts are by purpose;
+                 * it makes us independent of the int-size of the machine
+                 */
+                if ((unsigned)indx < (nbytes>>2)) {
+                    unsigned int32 ul;
+                    unsigned int32 *lp;
+
+                    lp = (unsigned int32 *)(pFirst + (indx<<2));
+                    ul = *lp;
 #if __POINTER_SIZE__ == 8
-		    {
-			unsigned  INT ull = (unsigned INT)ul;
-			RETURN ( __mkSmallInteger(ull) );
-		    }
+                    {
+                        unsigned  INT ull = (unsigned INT)ul;
+                        RETURN ( __mkSmallInteger(ull) );
+                    }
 #else
-		    if (ul <= _MAX_INT) {
-			RETURN ( __mkSmallInteger(ul) );
-		    }
-		    RETURN ( __MKULARGEINT(ul) );
+                    if (ul <= _MAX_INT) {
+                        RETURN ( __mkSmallInteger(ul) );
+                    }
+                    RETURN ( __MKULARGEINT(ul) );
 #endif
-		}
-		break;
-
-	    case __MASKSMALLINT(SLONGARRAY):
-		/*
-		 * signed 32bit ints
-		 */
-		/* Notice: the hard coded shifts are by purpose;
-		 * it makes us independent of the int-size of the machine
-		 */
-		if ((unsigned)indx < (nbytes>>2)) {
-		    int32 *slp;
-		    int32 l;
-
-		    slp = (int32 *)(pFirst + (indx<<2));
-		    l = *slp;
+                }
+                break;
+
+            case __MASKSMALLINT(SLONGARRAY):
+                /*
+                 * signed 32bit ints
+                 */
+                /* Notice: the hard coded shifts are by purpose;
+                 * it makes us independent of the int-size of the machine
+                 */
+                if ((unsigned)indx < (nbytes>>2)) {
+                    int32 *slp;
+                    int32 l;
+
+                    slp = (int32 *)(pFirst + (indx<<2));
+                    l = *slp;
 #if __POINTER_SIZE__ == 8
-		    {
-			INT ll = (INT)l;
-			RETURN ( __mkSmallInteger(ll) );
-		    }
+                    {
+                        INT ll = (INT)l;
+                        RETURN ( __mkSmallInteger(ll) );
+                    }
 #else
-		    if (__ISVALIDINTEGER(l)) {
-			RETURN ( __mkSmallInteger(l) );
-		    }
-		    RETURN ( __MKLARGEINT(l) );
+                    if (__ISVALIDINTEGER(l)) {
+                        RETURN ( __mkSmallInteger(l) );
+                    }
+                    RETURN ( __MKLARGEINT(l) );
 #endif
-		}
-		break;
-
-	    case __MASKSMALLINT(SLONGLONGARRAY):
-		/*
-		 * signed 64bit longlongs
-		 */
+                }
+                break;
+
+            case __MASKSMALLINT(SLONGLONGARRAY):
+                /*
+                 * signed 64bit longlongs
+                 */
 #ifdef __NEED_LONGLONG_ALIGN
-		if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
-		    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
-
-		    pFirst += delta;
-		    nbytes -= delta;
-		}
+                if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
+                    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
+
+                    pFirst += delta;
+                    nbytes -= delta;
+                }
 #endif
-		/* Notice: the hard coded shifts are by purpose;
-		 * it makes us independent of the long/longlong-size of the machine
-		 */
-		if ((unsigned)indx < (nbytes>>3)) {
+                /* Notice: the hard coded shifts are by purpose;
+                 * it makes us independent of the long/longlong-size of the machine
+                 */
+                if ((unsigned)indx < (nbytes>>3)) {
 #if __POINTER_SIZE__ == 8
-		    INT *slp, ll;
-
-		    slp = (INT *)(pFirst + (indx<<3));
-		    ll = *slp;
-		    if (__ISVALIDINTEGER(ll)) {
-			RETURN ( __mkSmallInteger(ll) );
-		    }
-		    RETURN ( __MKLARGEINT(ll) );
+                    INT *slp, ll;
+
+                    slp = (INT *)(pFirst + (indx<<3));
+                    ll = *slp;
+                    if (__ISVALIDINTEGER(ll)) {
+                        RETURN ( __mkSmallInteger(ll) );
+                    }
+                    RETURN ( __MKLARGEINT(ll) );
 #else
-		    __int64__ *llp;
-
-		    llp = (__int64__ *)(pFirst + (indx<<3));
-		    RETURN (__MKINT64(llp));
+                    __int64__ *llp;
+
+                    llp = (__int64__ *)(pFirst + (indx<<3));
+                    RETURN (__MKINT64(llp));
 #endif
-		}
-		break;
-
-	    case __MASKSMALLINT(LONGLONGARRAY):
-		/*
-		 * unsigned 64bit longlongs
-		 */
+                }
+                break;
+
+            case __MASKSMALLINT(LONGLONGARRAY):
+                /*
+                 * unsigned 64bit longlongs
+                 */
 #ifdef __NEED_LONGLONG_ALIGN
-		if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
-		    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
-
-		    pFirst += delta;
-		    nbytes -= delta;
-		}
+                if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
+                    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
+
+                    pFirst += delta;
+                    nbytes -= delta;
+                }
 #endif
-		/* Notice: the hard coded shifts are by purpose;
-		 * it makes us independent of the long/longlong-size of the machine
-		 */
-		if ((unsigned)indx < (nbytes>>3)) {
+                /* Notice: the hard coded shifts are by purpose;
+                 * it makes us independent of the long/longlong-size of the machine
+                 */
+                if ((unsigned)indx < (nbytes>>3)) {
 #if __POINTER_SIZE__ == 8
-		    unsigned INT *ulp, ul;
-
-		    ulp = (unsigned INT *)(pFirst + (indx<<3));
-		    ul = *ulp;
-		    if (ul <= _MAX_INT) {
-			RETURN ( __mkSmallInteger(ul) );
-		    }
-		    RETURN ( __MKULARGEINT(ul) );
+                    unsigned INT *ulp, ul;
+
+                    ulp = (unsigned INT *)(pFirst + (indx<<3));
+                    ul = *ulp;
+                    if (ul <= _MAX_INT) {
+                        RETURN ( __mkSmallInteger(ul) );
+                    }
+                    RETURN ( __MKULARGEINT(ul) );
 #else
-		    __uint64__ *llp;
-
-		    llp = (__uint64__ *)(pFirst + (indx<<3));
-		    RETURN (__MKUINT64(llp));
+                    __uint64__ *llp;
+
+                    llp = (__uint64__ *)(pFirst + (indx<<3));
+                    RETURN (__MKUINT64(llp));
 #endif
-		}
-		break;
-	}
+                }
+                break;
+        }
     }
 %}.
     ^ self indexNotIntegerOrOutOfBounds:index
@@ -1015,246 +1016,246 @@
        and SmallInteger */
 
     if (__isSmallInteger(index)) {
-	indx = __intVal(index) - 1;
-	myClass = __qClass(self);
-	n /* ninstvars */ = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
-	n /* nInstBytes */ = OHDR_SIZE + __OBJS2BYTES__(n /* ninstvars */);
-	nbytes = __qSize(self) - n /* nInstBytes */;
-	pFirst = (char *)(__InstPtr(self)) + n /* nInstBytes */;
-
-	switch ((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
-	    case __MASKSMALLINT(POINTERARRAY):
-	    case __MASKSMALLINT(WKPOINTERARRAY):
-		if ((unsigned)indx < (__BYTES2OBJS__(nbytes))) {
-		    OBJ *op;
-
-		    op = (OBJ *)pFirst + indx;
-		    *op = anObject;
-		    __STORE(self, anObject);
-		    RETURN ( anObject );
-		}
-		break;
-
-	    case __MASKSMALLINT(BYTEARRAY):
-		if (__isSmallInteger(anObject)) {
-		    val = __intVal(anObject);
-		    if ((val & ~0xFF) == 0 /* i.e. (val >= 0) && (val <= 255) */) {
-			if ((unsigned)indx < nbytes) {
-			    char *cp;
-
-			    cp = pFirst + indx;
-			    *cp = val;
-			    RETURN ( anObject );
-			}
-		    }
-		}
-		break;
-
-	    case __MASKSMALLINT(FLOATARRAY):
-		if ((unsigned)indx < (nbytes / sizeof(float))) {
-		    float *fp;
-
-		    fp = (float *)pFirst + indx;
-		    if (anObject != nil) {
-			if (! __isSmallInteger(anObject)) {
-			    if (__qIsFloatLike(anObject)) {
-				*fp = (float)(__floatVal(anObject));
-				RETURN ( anObject );
-			    }
-			    if (__qIsShortFloat(anObject)) {
-				*fp = __shortFloatVal(anObject);
-				RETURN ( anObject );
-			    }
-			} else {
-			    *fp = (float) __intVal(anObject);
-			    RETURN ( anObject );
-			}
-		    }
-		}
-		break;
-
-	    case __MASKSMALLINT(DOUBLEARRAY):
+        indx = __intVal(index) - 1;
+        myClass = __qClass(self);
+        n /* ninstvars */ = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
+        n /* nInstBytes */ = OHDR_SIZE + __OBJS2BYTES__(n /* ninstvars */);
+        nbytes = __qSize(self) - n /* nInstBytes */;
+        pFirst = (char *)(__InstPtr(self)) + n /* nInstBytes */;
+
+        switch ((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
+            case __MASKSMALLINT(POINTERARRAY):
+            case __MASKSMALLINT(WKPOINTERARRAY):
+                if ((unsigned)indx < (__BYTES2OBJS__(nbytes))) {
+                    OBJ *op;
+
+                    op = (OBJ *)pFirst + indx;
+                    *op = anObject;
+                    __STORE(self, anObject);
+                    RETURN ( anObject );
+                }
+                break;
+
+            case __MASKSMALLINT(BYTEARRAY):
+                if (__isSmallInteger(anObject)) {
+                    val = __intVal(anObject);
+                    if ((val & ~0xFF) == 0 /* i.e. (val >= 0) && (val <= 255) */) {
+                        if ((unsigned)indx < nbytes) {
+                            char *cp;
+
+                            cp = pFirst + indx;
+                            *cp = val;
+                            RETURN ( anObject );
+                        }
+                    }
+                }
+                break;
+
+            case __MASKSMALLINT(FLOATARRAY):
+                if ((unsigned)indx < (nbytes / sizeof(float))) {
+                    float *fp;
+
+                    fp = (float *)pFirst + indx;
+                    if (anObject != nil) {
+                        if (! __isSmallInteger(anObject)) {
+                            if (__qIsFloatLike(anObject)) {
+                                *fp = (float)(__floatVal(anObject));
+                                RETURN ( anObject );
+                            }
+                            if (__qIsShortFloat(anObject)) {
+                                *fp = __shortFloatVal(anObject);
+                                RETURN ( anObject );
+                            }
+                        } else {
+                            *fp = (float) __intVal(anObject);
+                            RETURN ( anObject );
+                        }
+                    }
+                }
+                break;
+
+            case __MASKSMALLINT(DOUBLEARRAY):
 #ifdef __NEED_DOUBLE_ALIGN
-		if ((INT)pFirst & (__DOUBLE_ALIGN-1)) {
-		    int delta = __DOUBLE_ALIGN - ((INT)pFirst & (__DOUBLE_ALIGN-1));
-
-		    pFirst += delta;
-		    nbytes -= delta;
-		}
+                if ((INT)pFirst & (__DOUBLE_ALIGN-1)) {
+                    int delta = __DOUBLE_ALIGN - ((INT)pFirst & (__DOUBLE_ALIGN-1));
+
+                    pFirst += delta;
+                    nbytes -= delta;
+                }
 #endif
-		if ((unsigned)indx < (nbytes / sizeof(double))) {
-		    double *dp;
-
-		    dp = (double *)pFirst + indx;
-		    if (anObject != nil) {
-			if (! __isSmallInteger(anObject)) {
-			    if (__qIsFloatLike(anObject)) {
-				*dp = __floatVal(anObject);
-				RETURN ( anObject );
-			    }
-			    if (__qIsShortFloat(anObject)) {
-				*dp = (double)__shortFloatVal(anObject);
-				RETURN ( anObject );
-			    }
-			} else {
-			    *dp = (double) __intVal(anObject);
-			    RETURN ( anObject );
-			}
-		    }
-		}
-		break;
-
-	    case __MASKSMALLINT(WORDARRAY):
-		if (__isSmallInteger(anObject)) {
-		    val = __intVal(anObject);
-		    if ((unsigned)val <= 0xFFFF) {
-			if ((unsigned)indx < (nbytes>>1)) {
-			    unsigned short *sp;
-
-			    sp = (unsigned short *)(pFirst + (indx<<1));
-			    *sp = val;
-			    RETURN ( anObject );
-			}
-		    }
-		}
-		break;
-
-	    case __MASKSMALLINT(SWORDARRAY):
-		if (__isSmallInteger(anObject)) {
-		    val = __intVal(anObject);
-		    if ((val >= -32768) && (val < 32768)) {
-			if ((unsigned)indx < (nbytes>>1)) {
-			    short *ssp;
-
-			    ssp = (short *)(pFirst + (indx<<1));
-			    *ssp = val;
-			    RETURN ( anObject );
-			}
-		    }
-		}
-		break;
-
-	    case __MASKSMALLINT(SLONGARRAY):
-		if ((unsigned)indx < (nbytes>>2)) {
-		    int32 *slp;
-
-		    slp = (int32 *)(pFirst + (indx<<2));
-		    if (__isSmallInteger(anObject)) {
-			*slp = __intVal(anObject);
-			RETURN ( anObject );
-		    }
-		    n = __signedLongIntVal(anObject);
-		    /*
-		     * zero means failure for an int larger than 4 bytes
-		     * (would be a smallInteger)
-		     */
-		    if (n) {
-			*slp = n;
-			RETURN ( anObject );
-		    }
-		}
-		break;
-
-	    case __MASKSMALLINT(LONGARRAY):
-		if ((unsigned)indx < (nbytes>>2)) {
-		    unsigned int32 *lp;
-
-		    lp = (unsigned int32 *)(pFirst + (indx<<2));
-		    if (anObject == __mkSmallInteger(0)) {
-			*lp = 0;
-			RETURN ( anObject );
-		    }
-		    u = __longIntVal(anObject);
-		    /*
-		     * zero means failure for an int larger than 4 bytes
-		     * (would be a smallInteger)
-		     */
-		    if (u) {
-			*lp = u;
-			RETURN ( anObject );
-		    }
-		}
-		break;
-
-	    case __MASKSMALLINT(SLONGLONGARRAY):
+                if ((unsigned)indx < (nbytes / sizeof(double))) {
+                    double *dp;
+
+                    dp = (double *)pFirst + indx;
+                    if (anObject != nil) {
+                        if (! __isSmallInteger(anObject)) {
+                            if (__qIsFloatLike(anObject)) {
+                                *dp = __floatVal(anObject);
+                                RETURN ( anObject );
+                            }
+                            if (__qIsShortFloat(anObject)) {
+                                *dp = (double)__shortFloatVal(anObject);
+                                RETURN ( anObject );
+                            }
+                        } else {
+                            *dp = (double) __intVal(anObject);
+                            RETURN ( anObject );
+                        }
+                    }
+                }
+                break;
+
+            case __MASKSMALLINT(WORDARRAY):
+                if (__isSmallInteger(anObject)) {
+                    val = __intVal(anObject);
+                    if ((unsigned)val <= 0xFFFF) {
+                        if ((unsigned)indx < (nbytes>>1)) {
+                            unsigned short *sp;
+
+                            sp = (unsigned short *)(pFirst + (indx<<1));
+                            *sp = val;
+                            RETURN ( anObject );
+                        }
+                    }
+                }
+                break;
+
+            case __MASKSMALLINT(SWORDARRAY):
+                if (__isSmallInteger(anObject)) {
+                    val = __intVal(anObject);
+                    if ((val >= -32768) && (val < 32768)) {
+                        if ((unsigned)indx < (nbytes>>1)) {
+                            short *ssp;
+
+                            ssp = (short *)(pFirst + (indx<<1));
+                            *ssp = val;
+                            RETURN ( anObject );
+                        }
+                    }
+                }
+                break;
+
+            case __MASKSMALLINT(SLONGARRAY):
+                if ((unsigned)indx < (nbytes>>2)) {
+                    int32 *slp;
+
+                    slp = (int32 *)(pFirst + (indx<<2));
+                    if (__isSmallInteger(anObject)) {
+                        *slp = __intVal(anObject);
+                        RETURN ( anObject );
+                    }
+                    n = __signedLongIntVal(anObject);
+                    /*
+                     * zero means failure for an int larger than 4 bytes
+                     * (would be a smallInteger)
+                     */
+                    if (n) {
+                        *slp = n;
+                        RETURN ( anObject );
+                    }
+                }
+                break;
+
+            case __MASKSMALLINT(LONGARRAY):
+                if ((unsigned)indx < (nbytes>>2)) {
+                    unsigned int32 *lp;
+
+                    lp = (unsigned int32 *)(pFirst + (indx<<2));
+                    if (anObject == __mkSmallInteger(0)) {
+                        *lp = 0;
+                        RETURN ( anObject );
+                    }
+                    u = __longIntVal(anObject);
+                    /*
+                     * zero means failure for an int larger than 4 bytes
+                     * (would be a smallInteger)
+                     */
+                    if (u) {
+                        *lp = u;
+                        RETURN ( anObject );
+                    }
+                }
+                break;
+
+            case __MASKSMALLINT(SLONGLONGARRAY):
 #ifdef __NEED_LONGLONG_ALIGN
-		if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
-		    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
-
-		    pFirst += delta;
-		    nbytes -= delta;
-		}
+                if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
+                    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
+
+                    pFirst += delta;
+                    nbytes -= delta;
+                }
 #endif
-		if ((unsigned)indx < (nbytes>>3)) {
-		    __int64__ ll;
-		    __int64__ *sllp;
-
-		    sllp = (__int64__ *)(pFirst + (indx<<3));
-
-		    if (anObject == __mkSmallInteger(0)) {
-			ll.lo = ll.hi = 0;
-			*sllp = ll;
-			RETURN ( anObject );
-		    }
-		    if (__signedLong64IntVal(anObject, &ll)) {
-			*sllp = ll;
-			RETURN ( anObject );
-		    }
-		}
-		break;
-
-	    case __MASKSMALLINT(LONGLONGARRAY):
+                if ((unsigned)indx < (nbytes>>3)) {
+                    __int64__ ll;
+                    __int64__ *sllp;
+
+                    sllp = (__int64__ *)(pFirst + (indx<<3));
+
+                    if (anObject == __mkSmallInteger(0)) {
+                        ll.lo = ll.hi = 0;
+                        *sllp = ll;
+                        RETURN ( anObject );
+                    }
+                    if (__signedLong64IntVal(anObject, &ll)) {
+                        *sllp = ll;
+                        RETURN ( anObject );
+                    }
+                }
+                break;
+
+            case __MASKSMALLINT(LONGLONGARRAY):
 #ifdef __NEED_LONGLONG_ALIGN
-		if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
-		    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
-
-		    pFirst += delta;
-		    nbytes -= delta;
-		}
+                if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
+                    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
+
+                    pFirst += delta;
+                    nbytes -= delta;
+                }
 #endif
-		if ((unsigned)indx < (nbytes>>3)) {
-		    __uint64__ ll;
-		    __uint64__ *llp;
-
-		    llp = (__uint64__ *)(pFirst + (indx<<3));
-		    if (anObject == __mkSmallInteger(0)) {
-			ll.lo = ll.hi = 0;
-			*llp = ll;
-			RETURN ( anObject );
-		    }
-		    if (__unsignedLong64IntVal(anObject, &ll)) {
-			*llp = ll;
-			RETURN ( anObject );
-		    }
-		}
-		break;
-	}
+                if ((unsigned)indx < (nbytes>>3)) {
+                    __uint64__ ll;
+                    __uint64__ *llp;
+
+                    llp = (__uint64__ *)(pFirst + (indx<<3));
+                    if (anObject == __mkSmallInteger(0)) {
+                        ll.lo = ll.hi = 0;
+                        *llp = ll;
+                        RETURN ( anObject );
+                    }
+                    if (__unsignedLong64IntVal(anObject, &ll)) {
+                        *llp = ll;
+                        RETURN ( anObject );
+                    }
+                }
+                break;
+        }
     }
 %}.
     index isInteger ifFalse:[
-	"
-	 the index should be an integer number
-	"
-	^ self indexNotInteger:index
+        "
+         the index should be an integer number
+        "
+        ^ self indexNotInteger:index
     ].
     (index between:1 and:self size) ifFalse:[
-	"
-	 the index is less than 1 or greater than the size of the
-	 receiver collection
-	"
-	^ self subscriptBoundsError:index
+        "
+         the index is less than 1 or greater than the size of the
+         receiver collection
+        "
+        ^ self subscriptBoundsError:index
     ].
     (self class isFloatsOrDoubles) ifTrue:[
-	anObject isNumber ifTrue:[
-	    ^ self basicAt:index put:(anObject asFloat)
-	]
+        anObject isNumber ifTrue:[
+            ^ self basicAt:index put:(anObject asFloat)
+        ]
     ].
     anObject isInteger ifFalse:[
-	"
-	 the object to put into the receiver collection
-	 should be an integer number
-	"
-	^ self elementNotInteger
+        "
+         the object to put into the receiver collection
+         should be an integer number
+        "
+        ^ self elementNotInteger
     ].
     "
      the object to put into the receiver collection
@@ -1282,56 +1283,56 @@
     REGISTER OBJ cls;
 
     if (__isSmallInteger(index)) {
-	slf = self;
-	if (__isNonNilObject(slf)) {
-	    unsigned char *pFirst;
-	    int nIndex;
-
-	    cls = __qClass(slf);
-
-	    pFirst = __byteArrayVal(slf);
-	    pFirst += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-	    nIndex = __byteArraySize(slf);
-	    indx = __intVal(index) - 1;
-
-	    switch ((INT)(__ClassInstPtr(cls)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
-		case __MASKSMALLINT(DOUBLEARRAY):
+        slf = self;
+        if (__isNonNilObject(slf)) {
+            unsigned char *pFirst;
+            int nIndex;
+
+            cls = __qClass(slf);
+
+            pFirst = __byteArrayVal(slf);
+            pFirst += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+            nIndex = __byteArraySize(slf);
+            indx = __intVal(index) - 1;
+
+            switch ((INT)(__ClassInstPtr(cls)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
+                case __MASKSMALLINT(DOUBLEARRAY):
 #ifdef __NEED_DOUBLE_ALIGN
-		    if ((INT)pFirst & (__DOUBLE_ALIGN-1)) {
-			int delta = __DOUBLE_ALIGN - ((INT)pFirst & (__DOUBLE_ALIGN-1));
-
-			pFirst += delta;
-			nIndex -= delta;
-		    }
+                    if ((INT)pFirst & (__DOUBLE_ALIGN-1)) {
+                        int delta = __DOUBLE_ALIGN - ((INT)pFirst & (__DOUBLE_ALIGN-1));
+
+                        pFirst += delta;
+                        nIndex -= delta;
+                    }
 #endif
-		    /* fall into */
-		case __MASKSMALLINT(BYTEARRAY):
-		case __MASKSMALLINT(WORDARRAY):
-		case __MASKSMALLINT(LONGARRAY):
-		case __MASKSMALLINT(SWORDARRAY):
-		case __MASKSMALLINT(SLONGARRAY):
-		case __MASKSMALLINT(FLOATARRAY):
-		    if ((unsigned)indx < (unsigned)nIndex) {
-			RETURN ( __mkSmallInteger( (INT)(pFirst[indx])) );
-		    }
-		    break;
-
-		case __MASKSMALLINT(LONGLONGARRAY):
-		case __MASKSMALLINT(SLONGLONGARRAY):
+                    /* fall into */
+                case __MASKSMALLINT(BYTEARRAY):
+                case __MASKSMALLINT(WORDARRAY):
+                case __MASKSMALLINT(LONGARRAY):
+                case __MASKSMALLINT(SWORDARRAY):
+                case __MASKSMALLINT(SLONGARRAY):
+                case __MASKSMALLINT(FLOATARRAY):
+                    if ((unsigned)indx < (unsigned)nIndex) {
+                        RETURN ( __mkSmallInteger( (INT)(pFirst[indx])) );
+                    }
+                    break;
+
+                case __MASKSMALLINT(LONGLONGARRAY):
+                case __MASKSMALLINT(SLONGLONGARRAY):
 #ifdef __NEED_LONGLONG_ALIGN
-		    if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
-			int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
-
-			pFirst += delta;
-			nIndex -= delta;
-		    }
+                    if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
+                        int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
+
+                        pFirst += delta;
+                        nIndex -= delta;
+                    }
 #endif
-		    if ((unsigned)indx < (unsigned)nIndex) {
-			RETURN ( __mkSmallInteger( (INT)(pFirst[indx])) );
-		    }
-		    break;
-	    }
-	}
+                    if ((unsigned)indx < (unsigned)nIndex) {
+                        RETURN ( __mkSmallInteger( (INT)(pFirst[indx])) );
+                    }
+                    break;
+            }
+        }
     }
 %}.
     "/ index not integer or index out of range
@@ -1364,33 +1365,33 @@
     REGISTER OBJ cls;
 
     if (__bothSmallInteger(index, byteValue)) {
-	val = __intVal(byteValue);
-	if ((unsigned)(val) <= 0xFF /* i.e. (val >= 0) && (val <= 255) */) {
-	    slf = self;
-	    if (__isNonNilObject(slf)) {
-		cls = __qClass(slf);
-
-		indx = __intVal(index) - 1;
-		switch ((INT)(__ClassInstPtr(cls)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
-		    case __MASKSMALLINT(BYTEARRAY):
-		    case __MASKSMALLINT(WORDARRAY):
-		    case __MASKSMALLINT(LONGARRAY):
-		    case __MASKSMALLINT(SWORDARRAY):
-		    case __MASKSMALLINT(SLONGARRAY):
-		    case __MASKSMALLINT(LONGLONGARRAY):
-		    case __MASKSMALLINT(SLONGLONGARRAY):
-		    case __MASKSMALLINT(FLOATARRAY):
-		    case __MASKSMALLINT(DOUBLEARRAY):
-			indx += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-			nIndex = __byteArraySize(slf);
-			if ((unsigned)indx < (unsigned)nIndex) {
-			    __ByteArrayInstPtr(slf)->ba_element[indx] = val;
-			    RETURN ( byteValue );
-			}
-			break;
-		}
-	    }
-	}
+        val = __intVal(byteValue);
+        if ((unsigned)(val) <= 0xFF /* i.e. (val >= 0) && (val <= 255) */) {
+            slf = self;
+            if (__isNonNilObject(slf)) {
+                cls = __qClass(slf);
+
+                indx = __intVal(index) - 1;
+                switch ((INT)(__ClassInstPtr(cls)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
+                    case __MASKSMALLINT(BYTEARRAY):
+                    case __MASKSMALLINT(WORDARRAY):
+                    case __MASKSMALLINT(LONGARRAY):
+                    case __MASKSMALLINT(SWORDARRAY):
+                    case __MASKSMALLINT(SLONGARRAY):
+                    case __MASKSMALLINT(LONGLONGARRAY):
+                    case __MASKSMALLINT(SLONGLONGARRAY):
+                    case __MASKSMALLINT(FLOATARRAY):
+                    case __MASKSMALLINT(DOUBLEARRAY):
+                        indx += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+                        nIndex = __byteArraySize(slf);
+                        if ((unsigned)indx < (unsigned)nIndex) {
+                            __ByteArrayInstPtr(slf)->ba_element[indx] = val;
+                            RETURN ( byteValue );
+                        }
+                        break;
+                }
+            }
+        }
     }
 %}.
     "/ index not integer or index out of range
@@ -1415,22 +1416,22 @@
     int idx, ninstvars;
 
     if (__isSmallInteger(index)) {
-	myClass = __Class(self);
-	idx = __intVal(index) - 1;
-	/*
-	 * do not allow returning of non-object fields.
-	 * if subclass did not make provisions for that,
-	 * we won't do so here ...
-	 */
-	if (((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(NONOBJECT_INSTS))) {
-	    if (idx == 0) {
-		RETURN ( nil )
-	    }
-	}
-	ninstvars = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
-	if ((idx >= 0) && (idx < ninstvars)) {
-	    RETURN ( __InstPtr(self)->i_instvars[idx] );
-	}
+        myClass = __Class(self);
+        idx = __intVal(index) - 1;
+        /*
+         * do not allow returning of non-object fields.
+         * if subclass did not make provisions for that,
+         * we won't do so here ...
+         */
+        if (((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(NONOBJECT_INSTS))) {
+            if (idx == 0) {
+                RETURN ( nil )
+            }
+        }
+        ninstvars = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
+        if ((idx >= 0) && (idx < ninstvars)) {
+            RETURN ( __InstPtr(self)->i_instvars[idx] );
+        }
     }
 %}.
     ^ self indexNotIntegerOrOutOfBounds:index
@@ -1447,24 +1448,24 @@
     int idx, ninstvars;
 
     if (__isSmallInteger(index)) {
-	myClass = __Class(self);
-	idx = __intVal(index) - 1;
-	ninstvars = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
-	/*
-	 * do not allow setting of non-object fields.
-	 * if subclass did not make provisions for that,
-	 * we won't do so here ...
-	 */
-	if (((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(NONOBJECT_INSTS))) {
-	    if (idx == 0) {
-		RETURN ( nil )
-	    }
-	}
-	if ((idx >= 0) && (idx < ninstvars)) {
-	    __InstPtr(self)->i_instvars[idx] = value;
-	    __STORE(self, value);
-	    RETURN ( value );
-	}
+        myClass = __Class(self);
+        idx = __intVal(index) - 1;
+        ninstvars = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
+        /*
+         * do not allow setting of non-object fields.
+         * if subclass did not make provisions for that,
+         * we won't do so here ...
+         */
+        if (((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(NONOBJECT_INSTS))) {
+            if (idx == 0) {
+                RETURN ( nil )
+            }
+        }
+        if ((idx >= 0) && (idx < ninstvars)) {
+            __InstPtr(self)->i_instvars[idx] = value;
+            __STORE(self, value);
+            RETURN ( value );
+        }
     }
 %}.
     ^ self indexNotIntegerOrOutOfBounds:index
@@ -1481,7 +1482,7 @@
 
     idx := self class instVarOffsetOf:name.
     idx isNil ifTrue:[
-	^ self errorKeyNotFound:name.
+        ^ self errorKeyNotFound:name.
     ].
     ^ self instVarAt:idx.
 
@@ -1533,7 +1534,7 @@
 
     idx := self class instVarOffsetOf:name.
     idx isNil ifTrue:[
-	^ self errorKeyNotFound:name.
+        ^ self errorKeyNotFound:name.
     ].
     ^ self instVarAt:idx put:value.
 
@@ -1585,7 +1586,7 @@
 
     attrs := self objectAttributes.
     (attrs notNil and:[attrs size > 0]) ifTrue:[
-	^ attrs at:attributeKey ifAbsent:[]
+        ^ attrs at:attributeKey ifAbsent:[]
     ].
     ^ nil
 
@@ -1599,16 +1600,16 @@
     "/ must do this save from interrupts, since the attributes collection
     "/ is possibly accessed from multiple threads ...
     [
-	| attrs |
-
-	attrs := self objectAttributes.
-	(attrs isNil or:[attrs size == 0]) ifTrue:[
-	    attrs := WeakIdentityDictionary new.
-	    attrs at:attributeKey put:anObject.
-	    self objectAttributes:attrs.
-	] ifFalse:[
-	    attrs at:attributeKey put:anObject.
-	].
+        | attrs |
+
+        attrs := self objectAttributes.
+        (attrs isNil or:[attrs size == 0]) ifTrue:[
+            attrs := WeakIdentityDictionary new.
+            attrs at:attributeKey put:anObject.
+            self objectAttributes:attrs.
+        ] ifFalse:[
+            attrs at:attributeKey put:anObject.
+        ].
     ] valueUninterruptably
 
     "Attaching additional attributes (slots) to an arbitrary object:
@@ -1649,24 +1650,24 @@
     "/ is possibly accessed from multiple threads.
 
     (OperatingSystem blockInterrupts) ifTrue:[
-	"/ the common case - already blocked
-
-	(aCollection isNil or:[aCollection isEmpty]) ifTrue:[
-	    ObjectAttributes removeKey:self ifAbsent:nil
-	] ifFalse:[
-	    ObjectAttributes at:self put:aCollection
-	].
-	^ self
+        "/ the common case - already blocked
+
+        (aCollection isNil or:[aCollection isEmpty]) ifTrue:[
+            ObjectAttributes removeKey:self ifAbsent:nil
+        ] ifFalse:[
+            ObjectAttributes at:self put:aCollection
+        ].
+        ^ self
     ].
 
     [
-	(aCollection isNil or:[aCollection isEmpty]) ifTrue:[
-	    ObjectAttributes removeKey:self ifAbsent:nil
-	] ifFalse:[
-	    ObjectAttributes at:self put:aCollection
-	].
+        (aCollection isNil or:[aCollection isEmpty]) ifTrue:[
+            ObjectAttributes removeKey:self ifAbsent:nil
+        ] ifFalse:[
+            ObjectAttributes at:self put:aCollection
+        ].
     ] ensure:[
-	OperatingSystem unblockInterrupts
+        OperatingSystem unblockInterrupts
     ]
 
     "Created: / 22.1.1998 / 21:29:35 / av"
@@ -1699,13 +1700,14 @@
 ! !
 
 
+
 !Object methodsFor:'change & update'!
 
 broadcast:aSelectorSymbol
     "send a message with selector aSelectorSymbol to all my dependents"
 
     self dependentsDo:[:dependent |
-	dependent perform:aSelectorSymbol
+        dependent perform:aSelectorSymbol
     ]
 !
 
@@ -1714,7 +1716,7 @@
      argument anArgument to all my dependents."
 
     self dependentsDo:[:dependent |
-	dependent perform:aSelectorSymbol with:anArgument
+        dependent perform:aSelectorSymbol with:anArgument
     ]
 !
 
@@ -1723,7 +1725,7 @@
      grant the request, and return true if so"
 
     self dependentsDo:[:dependent |
-	dependent updateRequest ifFalse:[^ false].
+        dependent updateRequest ifFalse:[^ false].
     ].
     ^ true
 !
@@ -1733,7 +1735,7 @@
      grant the request, and return true if so"
 
     self dependentsDo:[:dependent |
-	(dependent updateRequest:aSymbol) ifFalse:[^ false].
+        (dependent updateRequest:aSymbol) ifFalse:[^ false].
     ].
     ^ true
 !
@@ -1761,9 +1763,9 @@
      about to send the change request."
 
     self dependentsDo:[:dependent |
-	dependent == anObject ifFalse:[
-	    (dependent updateRequest:aSymbol with:aParameter from:anObject) ifFalse:[^ false].
-	]
+        dependent == anObject ifFalse:[
+            (dependent updateRequest:aSymbol with:aParameter from:anObject) ifFalse:[^ false].
+        ]
     ].
     ^ true
 !
@@ -1775,9 +1777,9 @@
      about to send the change request."
 
     self dependentsDo:[:dependent |
-	dependent == anObject ifFalse:[
-	    (dependent updateRequest) ifFalse:[^ false].
-	]
+        dependent == anObject ifFalse:[
+            (dependent updateRequest) ifFalse:[^ false].
+        ]
     ].
     ^ true
 !
@@ -1804,7 +1806,7 @@
      and anArgument as arguments."
 
     self dependentsDo:[:dependent |
-	dependent update:aParameter with:anArgument from:self
+        dependent update:aParameter with:anArgument from:self
     ]
 !
 
@@ -1873,7 +1875,7 @@
 
     (self dependents includesIdentical:someone)
     ifFalse:[
-	^ aBlock value.
+        ^ aBlock value.
     ].
     self removeDependent:someone.
     ^ aBlock ensure:[ self addDependent:someone ]
@@ -1893,9 +1895,9 @@
 = anObject
     "return true, if the receiver and the arg have the same structure.
      Notice:
-	This method is partially open coded (inlined) by the compiler(s)
-	identical objects are always considered equal.
-	redefining it may not work as expected."
+        This method is partially open coded (inlined) by the compiler(s)
+        identical objects are always considered equal.
+        redefining it may not work as expected."
 
     ^ self == anObject
 !
@@ -1904,8 +1906,8 @@
     "return true, if the receiver and the arg are the same object.
      Never redefine this in any class.
      Notice:
-	This method is open coded (inlined) by the compiler(s)
-	- redefining it may not work as expected."
+        This method is open coded (inlined) by the compiler(s)
+        - redefining it may not work as expected."
 
 %{  /* NOCONTEXT */
 
@@ -1913,46 +1915,6 @@
 %}
 !
 
-caseOf:aCollection
-    "lookup myself in aCollection.
-     If the key matches, answer the value.
-     aCollection is typically a Collection of Associations
-     or a Dictionary.
-
-     If the key is not present, raise an exception."
-
-    ^ self caseOf:aCollection otherwise:[KeyNotFoundError raiseWith:self].
-
-    "
-        1 caseOf:{ 1 -> 'one'. 2 -> 'two'. }
-
-        2 caseOf: (Dictionary withKeysAndValues:#(1 'one' 2 'two')) 
-        3 caseOf: (Dictionary withKeysAndValues:#(1 'one' 2 'two'))
-    "
-!
-
-caseOf:aCollection otherwise:otherwiseBlock
-    "lookup myself in aCollection.
-     If the key matches, answer the value.
-     aCollection is typically a Collection of Associations
-     or a Dictionary.
-
-     If the key is not present, answer the value of otherwiseBlock."
-
-    aCollection associationsDo:[:each|
-         self = each key ifTrue:[^ each value].
-    ].
-
-    ^ otherwiseBlock value.
-
-    "
-        1 caseOf:{ 1 -> 'one'. 2 -> 'two'. } otherwise:'unknown'
-
-        2 caseOf: (Dictionary withKeysAndValues:#(1 'one' 2 'two')) otherwise:'unknown'
-        3 caseOf: (Dictionary withKeysAndValues:#(1 'one' 2 'two')) otherwise:'unknown'
-    "
-!
-
 deepSameContentsAs:anObject
     "return true, if the receiver and the arg have the same contents
      in both the named instance vars and any indexed instVars.
@@ -1963,28 +1925,28 @@
 
     myClass := self class.
     myClass isVariable ifTrue:[
-	sz := self basicSize.
-
-	"compare the indexed variables"
-	1 to:sz do:[:i |
-	    val := self basicAt:i.
-	    val isLiteral ifTrue:[
-		val = (anObject basicAt:i) ifFalse:[^ false].
-	    ] ifFalse:[
-		(val deepSameContentsAs:(anObject basicAt:i)) ifFalse:[^ false].
-	    ]
-	]
+        sz := self basicSize.
+
+        "compare the indexed variables"
+        1 to:sz do:[:i |
+            val := self basicAt:i.
+            val isLiteral ifTrue:[
+                val = (anObject basicAt:i) ifFalse:[^ false].
+            ] ifFalse:[
+                (val deepSameContentsAs:(anObject basicAt:i)) ifFalse:[^ false].
+            ]
+        ]
     ].
 
     "compare the instance variables"
     sz := myClass instSize.
     1 to:sz do:[:i |
-	val := self instVarAt:i.
-	val isLiteral ifTrue:[
-	    val = (anObject instVarAt:i) ifFalse:[^ false].
-	] ifFalse:[
-	    (val deepSameContentsAs:(anObject instVarAt:i)) ifFalse:[^ false].
-	]
+        val := self instVarAt:i.
+        val isLiteral ifTrue:[
+            val = (anObject instVarAt:i) ifFalse:[^ false].
+        ] ifFalse:[
+            (val deepSameContentsAs:(anObject instVarAt:i)) ifFalse:[^ false].
+        ]
     ].
 
     ^ true
@@ -2023,25 +1985,25 @@
     static unsigned nextHash = 0;
 
     if (__isNonNilObject(self)) {
-	hash = __GET_HASH(self);
-	if (hash == 0) {
-	    /* has no hash yet */
-
-	    if (++nextHash > __MAX_HASH__) {
-		nextHash = 1;
-	    }
-	    hash = nextHash;
-	    __SET_HASH(self, hash);
-	}
-
-	/*
-	 * now, we got 11 bits for hashing;
-	 * make it as large as possible; since most hashers use the returned
-	 * key and take it modulo some prime number, this will allow for
-	 * better distribution (i.e. bigger empty spaces) in hashed collection.
-	 */
-	hash = __MAKE_HASH__(hash);
-	RETURN ( __mkSmallInteger(hash) );
+        hash = __GET_HASH(self);
+        if (hash == 0) {
+            /* has no hash yet */
+
+            if (++nextHash > __MAX_HASH__) {
+                nextHash = 1;
+            }
+            hash = nextHash;
+            __SET_HASH(self, hash);
+        }
+
+        /*
+         * now, we got 11 bits for hashing;
+         * make it as large as possible; since most hashers use the returned
+         * key and take it modulo some prime number, this will allow for
+         * better distribution (i.e. bigger empty spaces) in hashed collection.
+         */
+        hash = __MAKE_HASH__(hash);
+        RETURN ( __mkSmallInteger(hash) );
     }
 %}.
     ^ 0 "never reached, since redefined in UndefinedObject and SmallInteger"
@@ -2061,53 +2023,53 @@
     static unsigned INT nextClassHash = 0;
 
     if (__isNonNilObject(self)) {
-	/*
-	 * my own identityHash
-	 */
-	hash1 = __GET_HASH(self);
-	if (hash1 == 0) {
-	    /* has no hash yet */
-
-	    if (++nextHash > __MAX_HASH__) {
-		nextHash = 1;
-	    }
-	    hash1 = nextHash;
-	    __SET_HASH(self, hash1);
-	}
-	/*
-	 * my classes identityHash
-	 */
-	o = __qClass(self);
-	hash2 = __GET_HASH(o);
-	if (hash2 == 0) {
-	    /* has no hash yet */
-
-	    if (++nextClassHash > __MAX_HASH__) {
-		nextClassHash = 1;
-	    }
-	    hash2 = nextClassHash;
-	    __SET_HASH(o, hash2);
-	}
-
-	/*
-	 * some bits of my size
-	 */
-	sz = __qSize(self);
-
-	/*
-	 * now, we got 11 + 11 + 8 bits for hashing;
-	 * make it as large as possible; since most hashers use the returned
-	 * key and take it modulo some prime number, this will allow for
-	 * better distribution (i.e. bigger empty spaces) in hashed collection.
-	 */
-	hash = (hash1 << 11) | hash2;           /* 22 bits */
-	hash = (hash << 8) | (sz & 0xFC);       /* 30 bits */
-
-	while ((hash & 0x20000000) == 0) {
-	    hash <<= 1;
-	}
-
-	RETURN ( __mkSmallInteger(hash) );
+        /*
+         * my own identityHash
+         */
+        hash1 = __GET_HASH(self);
+        if (hash1 == 0) {
+            /* has no hash yet */
+
+            if (++nextHash > __MAX_HASH__) {
+                nextHash = 1;
+            }
+            hash1 = nextHash;
+            __SET_HASH(self, hash1);
+        }
+        /*
+         * my classes identityHash
+         */
+        o = __qClass(self);
+        hash2 = __GET_HASH(o);
+        if (hash2 == 0) {
+            /* has no hash yet */
+
+            if (++nextClassHash > __MAX_HASH__) {
+                nextClassHash = 1;
+            }
+            hash2 = nextClassHash;
+            __SET_HASH(o, hash2);
+        }
+
+        /*
+         * some bits of my size
+         */
+        sz = __qSize(self);
+
+        /*
+         * now, we got 11 + 11 + 8 bits for hashing;
+         * make it as large as possible; since most hashers use the returned
+         * key and take it modulo some prime number, this will allow for
+         * better distribution (i.e. bigger empty spaces) in hashed collection.
+         */
+        hash = (hash1 << 11) | hash2;           /* 22 bits */
+        hash = (hash << 8) | (sz & 0xFC);       /* 30 bits */
+
+        while ((hash & 0x20000000) == 0) {
+            hash <<= 1;
+        }
+
+        RETURN ( __mkSmallInteger(hash) );
     }
 %}.
     "never reached, since UndefinedObject and SmallInteger are not hashed upon in binary storage"
@@ -2126,13 +2088,13 @@
 
     myClass := self class.
     myClass isVariable ifTrue:[
-	sz := self basicSize.
-	anObject basicSize >= sz ifFalse:[^ false].
-
-	"compare the indexed variables"
-	1 to:sz do:[:i |
-	    (self basicAt:i) == (anObject basicAt:i) ifFalse:[^ false].
-	]
+        sz := self basicSize.
+        anObject basicSize >= sz ifFalse:[^ false].
+
+        "compare the indexed variables"
+        1 to:sz do:[:i |
+            (self basicAt:i) == (anObject basicAt:i) ifFalse:[^ false].
+        ]
     ].
 
     "compare the instance variables"
@@ -2140,7 +2102,7 @@
     anObject class instSize >= sz ifFalse:[^ false].
 
     1 to:sz do:[:i |
-	(self instVarAt:i) == (anObject instVarAt:i) ifFalse:[^ false].
+        (self instVarAt:i) == (anObject instVarAt:i) ifFalse:[^ false].
     ].
 
     ^ true
@@ -2157,9 +2119,9 @@
 ~= anObject
     "return true, if the receiver and the arg do not have the same structure.
      Notice:
-	This method is partially open coded (inlined) by the compiler(s)
-	identical objects are never considered unequal.
-	redefining it may not work as expected."
+        This method is partially open coded (inlined) by the compiler(s)
+        identical objects are never considered unequal.
+        redefining it may not work as expected."
 
     ^ (self = anObject) not
 !
@@ -2168,8 +2130,8 @@
     "return true, if the receiver and the arg are not the same object.
      Never redefine this in any class.
      Notice:
-	This method is open coded (inlined) by the compiler(s)
-	- redefining it may not work as expected."
+        This method is open coded (inlined) by the compiler(s)
+        - redefining it may not work as expected."
 
 %{  /* NOCONTEXT */
     RETURN ( (self == anObject) ? false : true );
@@ -2249,26 +2211,26 @@
 
     myClass := self class.
     myClass isVariable ifTrue:[
-	sz := self basicSize.
-
-	"process the indexed instance variables"
-	1 to:sz do:[:i |
-	    t := anObject basicAt:i.
-	    aSymbol ~~ #yourself ifTrue:[
-		t := t perform:aSymbol.
-	    ].
-	    self basicAt:i put:t.
-	]
+        sz := self basicSize.
+
+        "process the indexed instance variables"
+        1 to:sz do:[:i |
+            t := anObject basicAt:i.
+            aSymbol ~~ #yourself ifTrue:[
+                t := t perform:aSymbol.
+            ].
+            self basicAt:i put:t.
+        ]
     ].
 
     "process the named instance variables"
     sz := myClass instSize.
     1 to:sz do:[:i |
-	t := anObject instVarAt:i.
-	aSymbol ~~ #yourself ifTrue:[
-	    t := t perform:aSymbol
-	].
-	self instVarAt:i put:t
+        t := anObject instVarAt:i.
+        aSymbol ~~ #yourself ifTrue:[
+            t := t perform:aSymbol
+        ].
+        self instVarAt:i put:t
     ].
 
     ^ self
@@ -2286,36 +2248,36 @@
     myInfo := self class instanceVariableOffsets.
     otherInfo := aPrototype class instanceVariableOffsets.
     myInfo keysAndValuesDo:[:name :index | |varIndexAssoc|
-	varIndexAssoc := otherInfo at:name ifAbsent:[].
-	varIndexAssoc notNil ifTrue:[
-	    self instVarAt:index put:(aPrototype instVarAt:(varIndexAssoc value))
-	]
+        varIndexAssoc := otherInfo at:name ifAbsent:[].
+        varIndexAssoc notNil ifTrue:[
+            self instVarAt:index put:(aPrototype instVarAt:(varIndexAssoc value))
+        ]
     ].
     self isVariable ifTrue:[
-	1 to:(self basicSize min:aPrototype basicSize) do:[:index |
-	    self basicAt:index put:(aPrototype basicAt:index)
-	].
+        1 to:(self basicSize min:aPrototype basicSize) do:[:index |
+            self basicAt:index put:(aPrototype basicAt:index)
+        ].
     ].
 
     "
      Class withoutUpdatingChangesDo:[
-	 Point subclass:#Point3D
-	   instanceVariableNames:'z'
-	   classVariableNames:''
-	   poolDictionaries:''
-	   category:'testing'.
-	 (Point3D new cloneInstanceVariablesFrom:1@2) inspect.
+         Point subclass:#Point3D
+           instanceVariableNames:'z'
+           classVariableNames:''
+           poolDictionaries:''
+           category:'testing'.
+         (Point3D new cloneInstanceVariablesFrom:1@2) inspect.
      ]
     "
 
     "
      Class withoutUpdatingChangesDo:[
-	 Point variableSubclass:#Point3D
-	   instanceVariableNames:'z'
-	   classVariableNames:''
-	   poolDictionaries:''
-	   category:'testing'.
-	 ((Point3D new:2) cloneInstanceVariablesFrom:#(1 2 3)) inspect.
+         Point variableSubclass:#Point3D
+           instanceVariableNames:'z'
+           classVariableNames:''
+           poolDictionaries:''
+           category:'testing'.
+         ((Point3D new:2) cloneInstanceVariablesFrom:#(1 2 3)) inspect.
      ]
     "
 
@@ -2323,19 +2285,19 @@
      |someObject|
 
      Class withoutUpdatingChangesDo:[
-	 Object subclass:#TestClass1
-	   instanceVariableNames:'foo bar'
-	   classVariableNames:''
-	   poolDictionaries:''
-	   category:'testing'.
-	 someObject := TestClass1 new.
-	 someObject instVarAt:1 put:'foo'; instVarAt:2 put:'bar'.
-	 Object subclass:#TestClass2
-	   instanceVariableNames:'bar foo'
-	   classVariableNames:''
-	   poolDictionaries:''
-	   category:'testing'.
-	 (TestClass2 new cloneInstanceVariablesFrom:someObject) inspect.
+         Object subclass:#TestClass1
+           instanceVariableNames:'foo bar'
+           classVariableNames:''
+           poolDictionaries:''
+           category:'testing'.
+         someObject := TestClass1 new.
+         someObject instVarAt:1 put:'foo'; instVarAt:2 put:'bar'.
+         Object subclass:#TestClass2
+           instanceVariableNames:'bar foo'
+           classVariableNames:''
+           poolDictionaries:''
+           category:'testing'.
+         (TestClass2 new cloneInstanceVariablesFrom:someObject) inspect.
      ]
     "
 
@@ -2365,8 +2327,8 @@
 copyToLevel:level
     "a controlled deepCopy, where the number of levels can be specified.
      Notice:
-	 This method DOES NOT handle cycles/self-refs and does NOT preserve object identity;
-	 i.e. identical references in the source are copied multiple times into the copy."
+         This method DOES NOT handle cycles/self-refs and does NOT preserve object identity;
+         i.e. identical references in the source are copied multiple times into the copy."
 
     |newObject class index|
 
@@ -2376,16 +2338,16 @@
     newObject := self clone.
     newObject == self ifTrue: [^ self].
     class isVariable ifTrue:[
-	index := self basicSize.
-	[index > 0] whileTrue:[
-	    newObject basicAt: index put: ((self basicAt: index) copyToLevel:(level-1)).
-	    index := index - 1
-	]
+        index := self basicSize.
+        [index > 0] whileTrue:[
+            newObject basicAt: index put: ((self basicAt: index) copyToLevel:(level-1)).
+            index := index - 1
+        ]
     ].
     index := class instSize.
     [index > 0] whileTrue:[
-	newObject instVarAt: index put: ((self instVarAt: index) copyToLevel:(level-1)).
-	index := index - 1
+        newObject instVarAt: index put: ((self instVarAt: index) copyToLevel:(level-1)).
+        index := index - 1
     ].
     ^ newObject
 
@@ -2393,24 +2355,24 @@
      |a b|
 
      a := #(
-	    '1.1'
-	    '1.2'
-	    '1.3'
-	    (
-		'1.41'
-		'1.42'
-		'1.43'
-		    (
-			'1.441'
-			'1.442'
-			'1.443'
-			( '1.4441' '1.4442' '1.4443' )
-			'1.445'
-		    )
-		'1.45'
-	    )
-	    '1.5'
-	   ).
+            '1.1'
+            '1.2'
+            '1.3'
+            (
+                '1.41'
+                '1.42'
+                '1.43'
+                    (
+                        '1.441'
+                        '1.442'
+                        '1.443'
+                        ( '1.4441' '1.4442' '1.4443' )
+                        '1.445'
+                    )
+                '1.45'
+            )
+            '1.5'
+           ).
 
       b := a copyToLevel:1.
       self assert: ( (a at:1) == (b at:1) ).
@@ -2595,9 +2557,9 @@
     REGISTER unsigned h;
 
     if (__isNonNilObject(self) && __isNonNilObject(anObject)) {
-	h = __GET_HASH(anObject);
-	__SET_HASH(self, h);
-	RETURN (self);
+        h = __GET_HASH(anObject);
+        __SET_HASH(self, h);
+        RETURN (self);
     }
 %}.
     self primitiveFailed    "neither receiver not arg may be nil or SmallInteger"
@@ -2622,54 +2584,54 @@
      */
     if (((flags & ~ARRAYMASK) == 0)
      && ((flags & ARRAYMASK) != WKPOINTERARRAY)) {
-	sz = __qSize(self);
-	__PROTECT__(self);
-	__qNew(theCopy, sz);    /* OBJECT ALLOCATION */
-	__UNPROTECT__(self);
-	if (theCopy) {
-	    cls = __qClass(self);
-	    spc = __qSpace(theCopy);
-
-	    theCopy->o_class = cls; __STORE_SPC(theCopy, cls, spc);
-
-	    sz = sz - OHDR_SIZE;
-	    if (sz) {
-		char *src, *dst;
-
-		src = (char *)(__InstPtr(self)->i_instvars);
-		dst = (char *)(__InstPtr(theCopy)->i_instvars);
+        sz = __qSize(self);
+        __PROTECT__(self);
+        __qNew(theCopy, sz);    /* OBJECT ALLOCATION */
+        __UNPROTECT__(self);
+        if (theCopy) {
+            cls = __qClass(self);
+            spc = __qSpace(theCopy);
+
+            theCopy->o_class = cls; __STORE_SPC(theCopy, cls, spc);
+
+            sz = sz - OHDR_SIZE;
+            if (sz) {
+                char *src, *dst;
+
+                src = (char *)(__InstPtr(self)->i_instvars);
+                dst = (char *)(__InstPtr(theCopy)->i_instvars);
 #ifdef bcopy4
-		{
-		    /* care for odd-number of longs */
-		    int nW = sz >> 2;
-
-		    if (sz & 3) {
-			nW++;
-		    }
-
-		    bcopy4(src, dst, nW);
-		}
+                {
+                    /* care for odd-number of longs */
+                    int nW = sz >> 2;
+
+                    if (sz & 3) {
+                        nW++;
+                    }
+
+                    bcopy4(src, dst, nW);
+                }
 #else
-		bcopy(src, dst, sz);
+                bcopy(src, dst, sz);
 #endif
 
-		flags &= ARRAYMASK;
-		if (flags == POINTERARRAY) {
-		    ninsts = __BYTES2OBJS__(sz);
-		} else {
-		    ninsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
-		}
-		if (ninsts) {
-		    do {
-			OBJ el;
-
-			el = __InstPtr(theCopy)->i_instvars[ninsts-1];
-			__STORE_SPC(theCopy, el, spc);
-		    } while (--ninsts);
-		}
-	    }
-	    RETURN (theCopy);
-	}
+                flags &= ARRAYMASK;
+                if (flags == POINTERARRAY) {
+                    ninsts = __BYTES2OBJS__(sz);
+                } else {
+                    ninsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
+                }
+                if (ninsts) {
+                    do {
+                        OBJ el;
+
+                        el = __InstPtr(theCopy)->i_instvars[ninsts-1];
+                        __STORE_SPC(theCopy, el, spc);
+                    } while (--ninsts);
+                }
+            }
+            RETURN (theCopy);
+        }
     }
 %}.
     "/ fallBack for special objects & memoryAllocation failure case
@@ -2689,9 +2651,9 @@
     |myClass aCopy|
 
     (myClass := self class) isVariable ifTrue:[
-	aCopy := myClass basicNew:(self basicSize).
+        aCopy := myClass basicNew:(self basicSize).
     ] ifFalse:[
-	aCopy := myClass basicNew
+        aCopy := myClass basicNew
     ].
 
     "copy the instance variables"
@@ -2724,9 +2686,9 @@
     |myClass aCopy|
 
     (myClass := self class) isVariable ifTrue:[
-	aCopy := myClass basicNew:(self basicSize).
+        aCopy := myClass basicNew:(self basicSize).
     ] ifFalse:[
-	aCopy := myClass basicNew
+        aCopy := myClass basicNew
     ].
 
     "copy the instance variables"
@@ -2773,9 +2735,9 @@
     (Smalltalk at:#IgnoreAssertion ifAbsent:false) == true ifTrue:[^ self].
 
     (aBooleanOrBlock value) ifFalse:[
-	AssertionFailedError
-	    raiseRequestWith:self
-	    errorString:(messageIfFailing, ' {',thisContext sender printString,' }')
+        AssertionFailedError
+            raiseRequestWith:self
+            errorString:(messageIfFailing, ' {',thisContext sender printString,' }')
     ].
 
     "
@@ -2790,12 +2752,12 @@
      this method should NOT be redefined in subclasses."
 
     Inspector isNil ifTrue:[
-	"
-	 for systems without GUI
-	"
-	self warn:'No Inspector defined (Inspector is nil).'
+        "
+         for systems without GUI
+        "
+        self warn:'No Inspector defined (Inspector is nil).'
     ] ifFalse:[
-	Inspector openOn:self
+        Inspector openOn:self
     ]
 
     "Modified: 18.5.1996 / 15:43:25 / cg"
@@ -2815,9 +2777,9 @@
 
     "/ dont send #breakPoint:info: here - ask cg why.
     (self isBreakPointEnabled:someKey) ifTrue:[
-	^ HaltSignal
-	    raiseRequestWith:someKey
-	    errorString:('Breakpoint encountered: %1' bindWith:someKey)
+        ^ HaltSignal
+            raiseRequestWith:someKey
+            errorString:('Breakpoint encountered: %1' bindWith:someKey)
     ].
 
     "
@@ -2845,9 +2807,9 @@
     <resource: #skipInDebuggersWalkBack>
 
     (self isBreakPointEnabled:someKey) ifTrue:[
-	^ HaltSignal
-	    raiseRequestWith:someKey
-	    errorString:(infoString bindWith:someKey)
+        ^ HaltSignal
+            raiseRequestWith:someKey
+            errorString:(infoString bindWith:someKey)
     ].
 !
 
@@ -2877,7 +2839,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     (self isBreakPointEnabled:someKey) ifTrue:[
-	aBlock value
+        aBlock value
     ].
 
     "
@@ -2898,10 +2860,10 @@
     "{ Pragma: +optSpace }"
 
     EnabledBreakPoints notNil ifTrue:[
-	EnabledBreakPoints remove:someKey ifAbsent:[].
-	EnabledBreakPoints isEmpty ifTrue:[
-	    EnabledBreakPoints := nil
-	].
+        EnabledBreakPoints remove:someKey ifAbsent:[].
+        EnabledBreakPoints isEmpty ifTrue:[
+            EnabledBreakPoints := nil
+        ].
     ].
 
     "
@@ -2918,7 +2880,7 @@
     "{ Pragma: +optSpace }"
 
     EnabledBreakPoints isNil ifTrue:[
-	EnabledBreakPoints := Set new.
+        EnabledBreakPoints := Set new.
     ].
     EnabledBreakPoints add:someKey.
 
@@ -2968,7 +2930,7 @@
 "/    something = OperatingSystem getLoginName ifTrue:[^ true].
 "/    something = 'testThis' ifTrue:[^ true].
     EncounteredBreakPoints notNil ifTrue:[
-	EncounteredBreakPoints add:someKey
+        EncounteredBreakPoints add:someKey
     ].
 
     ^ (EnabledBreakPoints notNil and:[ EnabledBreakPoints includes:someKey ])
@@ -2999,18 +2961,18 @@
     "for compatibility & debugging support:
      check if the receiver isKindOf:aClass and raise an error if not.
      Notice:
-	it is VERY questionable, if it makes sense to add manual
-	type checks to a dynamically typed language like smalltalk.
-	It will, at least, slow down performance,
-	make your code less reusable and clutter your code with stupid sends
-	of this selector. Also, read the comment in isKindOf:, regarding the
-	use of isXXX check methods.
+        it is VERY questionable, if it makes sense to add manual
+        type checks to a dynamically typed language like smalltalk.
+        It will, at least, slow down performance,
+        make your code less reusable and clutter your code with stupid sends
+        of this selector. Also, read the comment in isKindOf:, regarding the
+        use of isXXX check methods.
      You see: The author does not like this at all ..."
 
     <resource: #skipInDebuggersWalkBack>
 
     (self isKindOf:aClass) ifFalse:[
-	self error:'argument is not of expected type'
+        self error:'argument is not of expected type'
     ]
 !
 
@@ -3058,7 +3020,7 @@
     ('         called from ' , sender sender printString) infoPrintCR.
     ].
     message notNil ifTrue:[
-	'------>  ' infoPrint. message infoPrintCR
+        '------>  ' infoPrint. message infoPrintCR
     ]
 
     "
@@ -3103,8 +3065,8 @@
     |spec sender|
 
     Smalltalk isSmalltalkDevelopmentSystem ifFalse:[
-	"ignore in production systems"
-	^ self.
+        "ignore in production systems"
+        ^ self.
     ].
 
     spec := aContext methodPrintString.
@@ -3113,14 +3075,14 @@
     ('         And may not be present in future ST/X versions.') infoPrintCR.
     ('         called from ' , sender printString) infoPrintCR.
     (sender selector startsWith:'perform:') ifTrue:[
-	sender := sender sender.
-	(sender selector startsWith:'perform:') ifTrue:[
-	    sender := sender sender.
-	].
-	('         called from ' , sender printString) infoPrintCR.
+        sender := sender sender.
+        (sender selector startsWith:'perform:') ifTrue:[
+            sender := sender sender.
+        ].
+        ('         called from ' , sender printString) infoPrintCR.
     ].
     message notNil ifTrue:[
-	'------>  ' infoPrint. message infoPrintCR
+        '------>  ' infoPrint. message infoPrintCR
     ]
 
     "
@@ -3157,11 +3119,11 @@
     "
      example:
 
-	...
-	self todo:[
-	    code which needs more work ...
-	].
-	...
+        ...
+        self todo:[
+            code which needs more work ...
+        ].
+        ...
     "
 
     "Created: / 25-05-2007 / 21:34:39 / cg"
@@ -3182,35 +3144,35 @@
 
     wasBlocked := OperatingSystem blockInterrupts.
     [
-	|deps dep|
-
-	deps := self dependents.
-
-	"/ to save a fair amount of memory in case of
-	"/ many dependencies, we store a single dependent in
-	"/ a WeakArray, and switch to a WeakSet if more dependents are
-	"/ added.
-
-	(deps isNil or:[deps size == 0]) ifTrue:[
-	    self dependents:(WeakArray with:anObject)
-	] ifFalse:[
-	    deps class == WeakArray ifTrue:[
-		dep := deps at:1.
-		dep ~~ anObject ifTrue:[
-		    (dep isNil or:[dep == 0]) ifTrue:[
-			deps at:1 put:anObject
-		    ] ifFalse:[
-			self dependents:(WeakIdentitySet with:dep with:anObject)
-		    ]
-		]
-	    ] ifFalse:[
-		deps add:anObject
-	    ]
-	]
+        |deps dep|
+
+        deps := self dependents.
+
+        "/ to save a fair amount of memory in case of
+        "/ many dependencies, we store a single dependent in
+        "/ a WeakArray, and switch to a WeakSet if more dependents are
+        "/ added.
+
+        (deps isNil or:[deps size == 0]) ifTrue:[
+            self dependents:(WeakArray with:anObject)
+        ] ifFalse:[
+            deps class == WeakArray ifTrue:[
+                dep := deps at:1.
+                dep ~~ anObject ifTrue:[
+                    (dep isNil or:[dep == 0]) ifTrue:[
+                        deps at:1 put:anObject
+                    ] ifFalse:[
+                        self dependents:(WeakIdentitySet with:dep with:anObject)
+                    ]
+                ]
+            ] ifFalse:[
+                deps add:anObject
+            ]
+        ]
     ] ensure:[
-	wasBlocked ifFalse:[
-	    OperatingSystem unblockInterrupts
-	]
+        wasBlocked ifFalse:[
+            OperatingSystem unblockInterrupts
+        ]
     ]
 
     "Modified: / 27.10.1997 / 19:35:52 / cg"
@@ -3232,10 +3194,10 @@
 
     self breakDependents.
     1 to:self class instSize do:[:idx |
-	(self instVarAt:idx) breakDependentsRecursively.
+        (self instVarAt:idx) breakDependentsRecursively.
     ].
     1 to:self basicSize do:[:idx |
-	(self basicAt:idx) breakDependentsRecursively.
+        (self basicAt:idx) breakDependentsRecursively.
     ]
 !
 
@@ -3250,7 +3212,7 @@
     |deps|
 
     (deps := Dependencies at:self ifAbsent:nil) isNil ifTrue:[
-	^ #().
+        ^ #().
     ].
     ^ deps
 
@@ -3269,24 +3231,24 @@
     "/ faster execution (and to avoid creation of garbage blocks).
 
     (OperatingSystem blockInterrupts) ifTrue:[
-	"/ the common case - already blocked
-
-	(aCollection isNil or:[aCollection isEmpty]) ifTrue:[
-	    Dependencies removeKey:self ifAbsent:nil
-	] ifFalse:[
-	    Dependencies at:self put:aCollection
-	].
-	^ self
+        "/ the common case - already blocked
+
+        (aCollection isNil or:[aCollection isEmpty]) ifTrue:[
+            Dependencies removeKey:self ifAbsent:nil
+        ] ifFalse:[
+            Dependencies at:self put:aCollection
+        ].
+        ^ self
     ].
 
     [
-	(aCollection isNil or:[aCollection isEmpty]) ifTrue:[
-	    Dependencies removeKey:self ifAbsent:nil
-	] ifFalse:[
-	    Dependencies at:self put:aCollection
-	].
+        (aCollection isNil or:[aCollection isEmpty]) ifTrue:[
+            Dependencies removeKey:self ifAbsent:nil
+        ] ifFalse:[
+            Dependencies at:self put:aCollection
+        ].
     ] ensure:[
-	OperatingSystem unblockInterrupts
+        OperatingSystem unblockInterrupts
     ]
 
     "Modified: 30.1.1997 / 21:22:10 / cg"
@@ -3299,15 +3261,15 @@
 
     deps := self dependents.
     deps size ~~ 0 ifTrue:[
-	deps do:[:d |
-		    (d notNil and:[d ~~ 0]) ifTrue:[
-			aBlock value:d
-		    ]
-		]
+        deps do:[:d |
+                    (d notNil and:[d ~~ 0]) ifTrue:[
+                        aBlock value:d
+                    ]
+                ]
     ].
     nwDeps := self nonWeakDependents.
     (nwDeps ~~ deps and:[nwDeps size ~~ 0]) ifTrue:[
-	nwDeps do:aBlock
+        nwDeps do:aBlock
     ].
 
     "Modified: / 30.1.1998 / 14:03:40 / cg"
@@ -3399,37 +3361,37 @@
 
     wasBlocked := OperatingSystem blockInterrupts.
     [
-	|deps dep|
-
-	deps := self nonWeakDependents.
-
-	"/ to save a fair amount of memory in case of
-	"/ many dependencies, we store a single dependent in
-	"/ an Array, and switch to a Set if more dependents are
-	"/ added.
-
-	deps size == 0 ifTrue:[
-	    anObject notNil ifTrue:[
-		self nonWeakDependents:(Array with:anObject).
-	    ] ifFalse:[
-		"adding nil causes problems when adding the next one
-		 (see below: trying to add nil to IdentitySet)"
+        |deps dep|
+
+        deps := self nonWeakDependents.
+
+        "/ to save a fair amount of memory in case of
+        "/ many dependencies, we store a single dependent in
+        "/ an Array, and switch to a Set if more dependents are
+        "/ added.
+
+        deps size == 0 ifTrue:[
+            anObject notNil ifTrue:[
+                self nonWeakDependents:(Array with:anObject).
+            ] ifFalse:[
+                "adding nil causes problems when adding the next one
+                 (see below: trying to add nil to IdentitySet)"
 "/                self halt:'try to add nil to list of dependents'.
-	    ].
-	] ifFalse:[
-	    deps class == Array ifTrue:[
-		dep := deps at:1.
-		dep ~~ anObject ifTrue:[
-		    self nonWeakDependents:(IdentitySet with:dep with:anObject)
-		]
-	    ] ifFalse:[
-		deps add:anObject
-	    ]
-	]
+            ].
+        ] ifFalse:[
+            deps class == Array ifTrue:[
+                dep := deps at:1.
+                dep ~~ anObject ifTrue:[
+                    self nonWeakDependents:(IdentitySet with:dep with:anObject)
+                ]
+            ] ifFalse:[
+                deps add:anObject
+            ]
+        ]
     ] ensure:[
-	wasBlocked ifFalse:[
-	    OperatingSystem unblockInterrupts
-	]
+        wasBlocked ifFalse:[
+            OperatingSystem unblockInterrupts
+        ]
     ]
 
     "Created: / 19.4.1996 / 10:54:08 / cg"
@@ -3452,11 +3414,11 @@
      This is a private helper for directed dependencies."
 
     [
-	(aCollection isNil or:[aCollection isEmpty]) ifTrue:[
-	    NonWeakDependencies removeKey:self ifAbsent:nil
-	] ifFalse:[
-	    NonWeakDependencies at:self put:aCollection
-	]
+        (aCollection isNil or:[aCollection isEmpty]) ifTrue:[
+            NonWeakDependencies removeKey:self ifAbsent:nil
+        ] ifFalse:[
+            NonWeakDependencies at:self put:aCollection
+        ]
     ] valueUninterruptably
 
     "Created: 19.4.1996 / 11:07:47 / cg"
@@ -3475,29 +3437,29 @@
 
     wasBlocked := OperatingSystem blockInterrupts.
     [
-	|deps n|
-
-	deps := self nonWeakDependents.
-	deps size ~~ 0 ifTrue:[
-	    deps class == Array ifTrue:[
-		(deps at:1) == anObject ifTrue:[
-		    self nonWeakDependents:nil
-		]
-	    ] ifFalse:[
-		deps remove:anObject ifAbsent:[].
-		(n := deps size) == 0 ifTrue:[
-		    self nonWeakDependents:nil
-		] ifFalse:[
-		    n == 1 ifTrue:[
-			self nonWeakDependents:(Array with:(deps first))
-		    ]
-		]
-	    ]
-	]
+        |deps n|
+
+        deps := self nonWeakDependents.
+        deps size ~~ 0 ifTrue:[
+            deps class == Array ifTrue:[
+                (deps at:1) == anObject ifTrue:[
+                    self nonWeakDependents:nil
+                ]
+            ] ifFalse:[
+                deps remove:anObject ifAbsent:[].
+                (n := deps size) == 0 ifTrue:[
+                    self nonWeakDependents:nil
+                ] ifFalse:[
+                    n == 1 ifTrue:[
+                        self nonWeakDependents:(Array with:(deps first))
+                    ]
+                ]
+            ]
+        ]
     ] ensure:[
-	wasBlocked ifFalse:[
-	    OperatingSystem unblockInterrupts
-	]
+        wasBlocked ifFalse:[
+            OperatingSystem unblockInterrupts
+        ]
     ]
 
     "Created: / 19.4.1996 / 11:44:44 / cg"
@@ -3549,8 +3511,8 @@
     "/ what a kludge - Dolphin and Squeak mean: printOn: a stream;
     "/ ST/X (and some old ST80's) mean: draw-yourself on a GC.
     (aGCOrStream isStream or:[aGCOrStream == Transcript]) ifTrue:[
-	self printOn:aGCOrStream.
-	^ self
+        self printOn:aGCOrStream.
+        ^ self
     ].
     ^ self displayOn:aGCOrStream x:0 y:0.
 
@@ -3586,9 +3548,9 @@
     s := self displayString.
     yBaseline := y "+ aGc font ascent".
     opaque ifTrue:[
-	aGc displayOpaqueString:s x:x y:yBaseline.
+        aGc displayOpaqueString:s x:x y:yBaseline.
     ] ifFalse:[
-	aGc displayString:s x:x y:yBaseline.
+        aGc displayString:s x:x y:yBaseline.
     ].
 
     "Modified: 29.5.1996 / 16:29:38 / cg"
@@ -3797,7 +3759,7 @@
     |names encoding cls skipped slots|
 
     self isLiteral ifTrue:[
-	^ self
+        ^ self
     ].
 
     slots    := self literalArrayEncodingSlotOrder.
@@ -3808,22 +3770,22 @@
     encoding add:cls name.
 
     slots do:[:instSlot |
-	|value nm|
-
-	nm := names at:instSlot.
-	(skipped includes:nm) ifFalse:[
-	    (value := self instVarAt:instSlot) notNil ifTrue:[
-		encoding add:(nm , ':') asSymbol.
-		encoding add:value literalArrayEncoding
-	    ]
-	]
+        |value nm|
+
+        nm := names at:instSlot.
+        (skipped includes:nm) ifFalse:[
+            (value := self instVarAt:instSlot) notNil ifTrue:[
+                encoding add:(nm , ':') asSymbol.
+                encoding add:value literalArrayEncoding
+            ]
+        ]
     ].
     ^ encoding asArray
 
     "
-	(1 -> 2) literalArrayEncoding
-	DebugView menuSpec decodeAsLiteralArray literalArrayEncoding  =
-	   DebugView menuSpec
+        (1 -> 2) literalArrayEncoding
+        DebugView menuSpec decodeAsLiteralArray literalArrayEncoding  =
+           DebugView menuSpec
     "
 !
 
@@ -3879,34 +3841,34 @@
     (Processor isNil
     or:[Processor activeProcessIsSystemProcess
     or:[Smalltalk isInitialized not]]) ifTrue:[
-	^ MiniDebugger
+        ^ MiniDebugger
     ].
     (Screen isNil or:[Screen default isNil or:[Screen default isOpen not]]) ifTrue:[
-	Debugger isNil ifTrue:[^ nil].
-	^ MiniDebugger
+        Debugger isNil ifTrue:[^ nil].
+        ^ MiniDebugger
     ].
 
     context := thisContext.
     context := context findNextContextWithSelector:aSelector or:nil or:nil.
     [context notNil] whileTrue:[
-	((context receiver class == Debugger)
-	 and:[context selector == aSelector]) ifTrue:[
-	    "we are already in some Debugger"
-	    (Debugger == MiniDebugger) ifTrue:[
-		"we are already in the MiniDebugger"
-		ErrorRecursion ifFalse:[
-		    Smalltalk fatalAbort:'recursive error ...'
-		]
-	    ].
-	    MiniDebugger isNil ifTrue:[
-		Smalltalk fatalAbort:'no debugger'
-	    ].
-
-	    "ok, an error occured while in the graphical debugger;
-	     lets try MiniDebugger"
-	    ^ MiniDebugger
-	].
-	context := context findNextContextWithSelector:aSelector or:nil or:nil.
+        ((context receiver class == Debugger)
+         and:[context selector == aSelector]) ifTrue:[
+            "we are already in some Debugger"
+            (Debugger == MiniDebugger) ifTrue:[
+                "we are already in the MiniDebugger"
+                ErrorRecursion ifFalse:[
+                    Smalltalk fatalAbort:'recursive error ...'
+                ]
+            ].
+            MiniDebugger isNil ifTrue:[
+                Smalltalk fatalAbort:'no debugger'
+            ].
+
+            "ok, an error occured while in the graphical debugger;
+             lets try MiniDebugger"
+            ^ MiniDebugger
+        ].
+        context := context findNextContextWithSelector:aSelector or:nil or:nil.
     ].
     "not within Debugger - no problem"
     ^ Debugger
@@ -3923,8 +3885,8 @@
     <resource: #skipInDebuggersWalkBack>
 
     ^ VMInternalError
-	  raiseWith:someReceiver
-	  errorString:('bad class in send of #' , aMessage selector)
+          raiseWith:someReceiver
+          errorString:('bad class in send of #' , aMessage selector)
 
     "Modified: 23.1.1997 / 00:05:39 / cg"
 !
@@ -4061,7 +4023,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     mayProceed ifTrue:[
-	^ ProceedableError raiseRequestWith:#error: errorString:aString
+        ^ ProceedableError raiseRequestWith:#error: errorString:aString
     ].
 
     Error raiseWith:#error: errorString:aString
@@ -4190,7 +4152,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     index isInteger ifFalse:[
-	^ self indexNotInteger:index
+        ^ self indexNotInteger:index
     ].
     ^ self subscriptBoundsError:index
 !
@@ -4203,7 +4165,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     ^ self error:'bad assign of ' , self printString ,
-		  ' (' , self class name , ') to integer-typed variable'
+                  ' (' , self class name , ') to integer-typed variable'
 !
 
 invalidCodeObject
@@ -4258,7 +4220,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     ^ SubscriptOutOfBoundsError
-	raiseErrorString:'receiver has no indexed variables'
+        raiseErrorString:'receiver has no indexed variables'
 
     "Modified: 26.7.1996 / 16:43:13 / cg"
 !
@@ -4289,89 +4251,95 @@
      ignore will raise an AbortOperationRequest.
     "
     Debugger isNil ifTrue:[
-	msgString := 'Error: ' , msgString.
-
-	thisContext isRecursive ifTrue:[
-	    msgString errorPrintCR.
-	    Smalltalk fatalAbort:'recursive unhandled exception'
-	].
-
-	Smalltalk isStandAloneApp ifTrue:[
-	    (ex signal == NoHandlerError and:[HaltInterrupt handles:ex unhandledException]) ifTrue:[
-		"/ 'Halt ignored' infoPrintCR.
-		^ self
-	    ].
-	].
-
-	(Dialog notNil and:[Screen default notNil]) ifTrue:[
+        msgString := 'Error: ' , msgString.
+
+        thisContext isRecursive ifTrue:[
+            msgString errorPrintCR.
+            Smalltalk fatalAbort:'recursive unhandled exception'
+        ].
+
+        Smalltalk isStandAloneApp ifTrue:[
+            (ex signal == NoHandlerError and:[HaltInterrupt handles:ex unhandledException]) ifTrue:[
+                "/ 'Halt ignored' infoPrintCR.
+                ^ nil
+            ].
+            "don't output the message, if the exception is a UserInterrupt (CTRL-C)"
+            (ex signal == NoHandlerError
+             and:[ex unhandledException signal == UserInterrupt]) ifTrue:[
+                ex description errorPrintCR.
+                OperatingSystem exit:130.
+            ].
+        ].
+
+        (Dialog notNil and:[Screen default notNil]) ifTrue:[
 false "oldCode" ifTrue:[
-	    AbortOperationRequest isHandled ifTrue:[
-		answer := OptionBox
-			request:msgString
-			label:msgString
-			buttonLabels:#('Exit' 'Terminate Thread' 'Ignore' 'Abort' )
-			values:#(exit terminate ignore abort)
-			default:#abort.
-	    ] ifFalse:[
-		answer := OptionBox
-			request:msgString
-			label:msgString
-			buttonLabels:#('Exit' 'Terminate Thread' 'Ignore' )
-			values:#(exit terminate ignore )
-			default:#terminate.
-	    ].
-	    answer isNil ifTrue:[ answer := #ignore].
-
-	    answer == #abort ifTrue:[
-		^ AbortOperationRequest raiseRequest
-	    ].
-	    answer == #ignore ifTrue:[
-		^ nil
-	    ].
-	    answer == #terminate ifTrue:[
-		Processor activeProcess isSystemProcess ifTrue:[
-		    (Dialog confirm:'Are you sure (this might finish the application)') ifFalse:[
-			^ nil
-		    ].
-		].
-		^ Processor activeProcess terminate.
-	    ].
-	    "asking second time here to prevent the user from accidently closing his app"
-	    answer == #exit ifTrue:[
-		answer := OptionBox
-			request:'Do you really wish to exit this application (all changes will be lost)?'
-			label:msgString
-			buttonLabels:#('Yes' 'No' )
-			values:#(exit abort)
-			default:#abort.
-	    ].
-	    answer == #abort ifTrue:[
-		^ AbortOperationRequest raiseRequest
-	    ].
-
-	    (Dialog confirm:'Are you sure you want to finish the application ?') ifFalse:[
-		^ nil
-	    ].
+            AbortOperationRequest isHandled ifTrue:[
+                answer := OptionBox
+                        request:msgString
+                        label:msgString
+                        buttonLabels:#('Exit' 'Terminate Thread' 'Ignore' 'Abort' )
+                        values:#(exit terminate ignore abort)
+                        default:#abort.
+            ] ifFalse:[
+                answer := OptionBox
+                        request:msgString
+                        label:msgString
+                        buttonLabels:#('Exit' 'Terminate Thread' 'Ignore' )
+                        values:#(exit terminate ignore )
+                        default:#terminate.
+            ].
+            answer isNil ifTrue:[ answer := #ignore].
+
+            answer == #abort ifTrue:[
+                ^ AbortOperationRequest raiseRequest
+            ].
+            answer == #ignore ifTrue:[
+                ^ nil
+            ].
+            answer == #terminate ifTrue:[
+                Processor activeProcess isSystemProcess ifTrue:[
+                    (Dialog confirm:'Are you sure (this might finish the application)') ifFalse:[
+                        ^ nil
+                    ].
+                ].
+                ^ Processor activeProcess terminate.
+            ].
+            "asking second time here to prevent the user from accidently closing his app"
+            answer == #exit ifTrue:[
+                answer := OptionBox
+                        request:'Do you really wish to exit this application (all changes will be lost)?'
+                        label:msgString
+                        buttonLabels:#('Yes' 'No' )
+                        values:#(exit abort)
+                        default:#abort.
+            ].
+            answer == #abort ifTrue:[
+                ^ AbortOperationRequest raiseRequest
+            ].
+
+            (Dialog confirm:'Are you sure you want to finish the application ?') ifFalse:[
+                ^ nil
+            ].
 ] ifFalse:[
-	    self
-		errorNotify:msgString
-		from:ex suspendedContext
-		allowDebug:false.
-
-	    "/ arrive here if proceeded...
-	    ^ nil
+            self
+                errorNotify:msgString
+                from:ex suspendedContext
+                allowDebug:false.
+
+            "/ arrive here if proceeded...
+            ^ nil
 ].
 
-	].
-
-	"don't output the message, if the exception is a UserInterrupt (CTRL-C)"
-	(ex signal == NoHandlerError
-	 and:[ex unhandledException signal == UserInterrupt]) ifTrue:[
-	    OperatingSystem exit:130.
-	].
-	msgString errorPrintCR.
-	thisContext fullPrintAll.
-	OperatingSystem exit:1
+        ].
+
+        "don't output the message, if the exception is a UserInterrupt (CTRL-C)"
+        (ex signal == NoHandlerError
+         and:[ex unhandledException signal == UserInterrupt]) ifTrue:[
+            OperatingSystem exit:130.
+        ].
+        msgString errorPrintCR.
+        thisContext fullPrintAll.
+        OperatingSystem exit:1
     ].
 
     "
@@ -4379,15 +4347,15 @@
     "
     debugger := self appropriateDebugger:(thisContext selector).
     debugger isNil ifTrue:[
-	^ AbortOperationRequest raiseRequest
+        ^ AbortOperationRequest raiseRequest
     ].
 
     ^ debugger
-	enter:ex returnableSuspendedContext
-	withMessage:ex descriptionForDebugger
-	mayProceed:(ex mayProceed).
-
-    "Modified: / 06-12-2006 / 18:51:55 / cg"
+        enter:ex returnableSuspendedContext
+        withMessage:ex descriptionForDebugger
+        mayProceed:(ex mayProceed).
+
+    "Modified: / 05-12-2011 / 11:53:10 / cg"
 !
 
 primitiveFailed
@@ -4403,15 +4371,15 @@
     sender := thisContext sender.
 
     ^ PrimitiveFailure raiseRequestWith:(Message selector:sender selector arguments:sender args)
-		       in:sender.
+                       in:sender.
 
     "
      1234 primitiveFailed
 
      [
-	ExternalBytes new   basicAt:40
+        ExternalBytes new   basicAt:40
      ] on:PrimitiveFailure do:[:ex|
-	ex inspect
+        ex inspect
      ]
     "
 !
@@ -4429,8 +4397,8 @@
     sender := thisContext sender.
 
     ^ PrimitiveFailure raiseRequestWith:(Message selector:sender selector arguments:sender args)
-		       errorString:messageString
-		       in:sender.
+                       errorString:messageString
+                       in:sender.
 
     "
      1234 primitiveFailed:'this is a test'
@@ -4451,7 +4419,7 @@
     sender := thisContext sender.
 
     ^ UnimplementedFunctionalityError
-	raiseRequestWith:(Message selector:sender selector arguments:sender args)
+        raiseRequestWith:(Message selector:sender selector arguments:sender args)
 
      "
       self shouldImplement
@@ -4472,8 +4440,8 @@
     sender := thisContext sender.
 
     ^ UnimplementedFunctionalityError
-	raiseRequestWith:(Message selector:sender selector arguments:sender args)
-	errorString:what
+        raiseRequestWith:(Message selector:sender selector arguments:sender args)
+        errorString:what
 
      "
       self shouldImplement:'foobar'
@@ -4484,7 +4452,7 @@
     "report an error that this point may never be reached."
 
     ^ self
-	error:'Oops, this may never reached. Something somewhere was terribly wrong.'.
+        error:'Oops, this may never reached. Something somewhere was terribly wrong.'.
 
     "Modified: / 20-04-2005 / 18:59:28 / janfrog"
 !
@@ -4555,8 +4523,8 @@
     <resource: #skipInDebuggersWalkBack>
 
     ^ SubscriptOutOfBoundsError
-	raiseRequestWith:anIndex
-	errorString:('subscript (' , anIndex printString , ') out of bounds')
+        raiseRequestWith:anIndex
+        errorString:('subscript (' , anIndex printString , ') out of bounds')
 
     "Modified: / 17.11.2001 / 22:49:56 / cg"
 !
@@ -4570,7 +4538,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     ^ self error:'bad assign of ' , self printString ,
-		  ' (' , self class name , ') to typed variable'
+                  ' (' , self class name , ') to typed variable'
 ! !
 
 !Object methodsFor:'evaluation'!
@@ -4584,7 +4552,7 @@
     ^ 0
 
     "
-	[1 // 0] on:ArithmeticError do:9999
+        [1 // 0] on:ArithmeticError do:9999
     "
 !
 
@@ -4598,16 +4566,16 @@
      style ... (the idea was borrowed from the Self language).
 
      WARNING: dont 'optimize' away ifXXX: blocks
-	      (i.e. do NOT replace
-			foo ifTrue:[var1] ifFalse:[var2]
-	       by:
-			foo ifTrue:var1 ifFalse:var2
-	      )
-	      - the compilers will only generate inline code for the if,
-		iff the argument(s) are blocks - otherwise, a true send is
-		generated.
-	      This 'oprimization' will work semantically correct,
-	      but execute SLOWER instead."
+              (i.e. do NOT replace
+                        foo ifTrue:[var1] ifFalse:[var2]
+               by:
+                        foo ifTrue:var1 ifFalse:var2
+              )
+              - the compilers will only generate inline code for the if,
+                iff the argument(s) are blocks - otherwise, a true send is
+                generated.
+              This 'oprimization' will work semantically correct,
+              but execute SLOWER instead."
 
     ^ self
 
@@ -4749,30 +4717,30 @@
      used from other C subsystems too, to upcast errors.
      Especially, for subsystems which call errorHandler functions asynchronously.
      IDs (currently) used:
-	#DisplayError ..... x-error interrupt
-	#XtError      ..... xt-error interrupt (Xt interface is not yet published)
+        #DisplayError ..... x-error interrupt
+        #XtError      ..... xt-error interrupt (Xt interface is not yet published)
     "
 
     |handlers handler|
 
     handlers := ObjectMemory registeredErrorInterruptHandlers.
     handlers notNil ifTrue:[
-	handler := handlers at:errorID ifAbsent:nil.
-	handler notNil ifTrue:[
-	    "/
-	    "/ handler found; let it do whatever it wants ...
-	    "/
-	    handler errorInterrupt:errorID with:aParameter.
-	    ^ self
-	].
+        handler := handlers at:errorID ifAbsent:nil.
+        handler notNil ifTrue:[
+            "/
+            "/ handler found; let it do whatever it wants ...
+            "/
+            handler errorInterrupt:errorID with:aParameter.
+            ^ self
+        ].
     ].
 
     "/
     "/ no handler - raise errorSignal passing the errorId as parameter
     "/
     ^ Error
-	raiseRequestWith:errorID
-	errorString:('Subsystem error. ErrorID = ' , errorID printString)
+        raiseRequestWith:errorID
+        errorString:('Subsystem error. ErrorID = ' , errorID printString)
 !
 
 exceptionInterrupt
@@ -4798,12 +4766,12 @@
     where := thisContext sender.
     rec := where receiver.
     rec isNumber ifTrue:[
-	^ rec class
-	    raise:#domainErrorSignal
-	    receiver:rec
-	    selector:where selector
-	    arguments:(where args asArray)
-	    errorString:'floating point exception'
+        ^ rec class
+            raise:#domainErrorSignal
+            receiver:rec
+            selector:where selector
+            arguments:(where args asArray)
+            errorString:'floating point exception'
     ].
 
     "/ could be in some C-library ...
@@ -4868,31 +4836,31 @@
 "/            'Stray recursionInterrupt ...' infoPrintCR.
 "/            ^ self
 "/        ].
-	ObjectMemory infoPrinting ifTrue:[
-	    'Object [info]: recursionInterrupt from:' printCR.
-	    con := con sender.
-	    remaining := 50.
-	    [con notNil and:[remaining > 0]] whileTrue:[
-		sender := con sender.
-		'| ' print. con fullPrint.
-
-		nSkipped := 0.
-		[sender notNil and:[sender sender notNil
-		and:[sender selector == con selector
-		and:[sender sender selector == con selector
-		and:[sender method == con method]]]]] whileTrue:[
-		    nSkipped := nSkipped + 1.
-		    con := sender.
-		    sender := con sender.
-		].
-		nSkipped > 0 ifTrue:[
-		    '| ... ***** ' print. nSkipped print. ' recursive contexts skipped *****' printCR.
-		].
-		con := sender.
-		remaining := remaining - 1
-	    ].
-	].
-	^ RecursionInterruptSignal raiseSignal
+        ObjectMemory infoPrinting ifTrue:[
+            'Object [info]: recursionInterrupt from:' printCR.
+            con := con sender.
+            remaining := 50.
+            [con notNil and:[remaining > 0]] whileTrue:[
+                sender := con sender.
+                '| ' print. con fullPrint.
+
+                nSkipped := 0.
+                [sender notNil and:[sender sender notNil
+                and:[sender selector == con selector
+                and:[sender sender selector == con selector
+                and:[sender method == con method]]]]] whileTrue:[
+                    nSkipped := nSkipped + 1.
+                    con := sender.
+                    sender := con sender.
+                ].
+                nSkipped > 0 ifTrue:[
+                    '| ... ***** ' print. nSkipped print. ' recursive contexts skipped *****' printCR.
+                ].
+                con := sender.
+                remaining := remaining - 1
+            ].
+        ].
+        ^ RecursionInterruptSignal raiseSignal
     ]
 
     "Modified: / 10.11.2001 / 15:15:56 / cg"
@@ -5098,10 +5066,10 @@
      Start a mini debugger or exit if none is present"
 
     MiniDebugger isNil ifTrue:[
-	"a system without debugging facilities (i.e. a standalone system)
-	 output a message and exit."
-	('Object [error]: exit due to ', text, ' - and no debugger.') errorPrintCR.
-	OperatingSystem exit:99.
+        "a system without debugging facilities (i.e. a standalone system)
+         output a message and exit."
+        ('Object [error]: exit due to ', text, ' - and no debugger.') errorPrintCR.
+        OperatingSystem exit:99.
     ].
     MiniDebugger enterWithMessage:text mayProceed:true.
 !
@@ -5154,7 +5122,7 @@
     REGISTER OBJ sel = aSelector;
 
     if (InterruptPending == nil) {
-	struct inlineCache *pIlc;
+        struct inlineCache *pIlc;
     /* JV @ 2010-22-07: To improve performance I use 256 ILCs instead
        of default 4. This significantly reduces ILC misses. The code 
        should be further optimized by remembering last selector index and 
@@ -5205,10 +5173,10 @@
             pIlc->ilc_poly = 0;
         }
 perform0_send_and_return:
-	RETURN ( (*(pIlc->ilc_func))(self, sel, nil, pIlc) );
+        RETURN ( (*(pIlc->ilc_func))(self, sel, nil, pIlc) );
     } else {
-	static struct inlineCache ilc0 = __DUMMYILCSELF0(@line+1);
-	RETURN (_SEND0(self, aSelector, nil, &ilc0));
+        static struct inlineCache ilc0 = __DUMMYILCSELF0(@line+1);
+        RETURN (_SEND0(self, aSelector, nil, &ilc0));
     }
 %}.
     ^ self perform:aSelector withArguments:#()
@@ -5221,7 +5189,7 @@
      to execute a method in ANY superclass of the receiver (not just the
      immediate superclass).
      Thus, it is (theoretically) possible to do
-	 '5 perform:#< inClass:Magnitude withArguments:#(6)'
+         '5 perform:#< inClass:Magnitude withArguments:#(6)'
      and evaluate Magnitudes compare method even if there was one in Number.
      This method is used by the interpreter to evaluate super sends
      and could be used for very special behavior (language extension ?).
@@ -5235,174 +5203,174 @@
     "
     myClass := self class.
     (myClass == aClass or:[myClass isSubclassOf:aClass]) ifFalse:[
-	self error:'lookup-class argument is not a superclass of the receiver'.
-	^ nil
+        self error:'lookup-class argument is not a superclass of the receiver'.
+        ^ nil
     ].
 %{
     REGISTER OBJ *argP;
     int nargs, i;
 
     if (__isArrayLike(argArray)) {
-	nargs = __arraySize(argArray);
-	argP = __arrayVal(argArray);
+        nargs = __arraySize(argArray);
+        argP = __arrayVal(argArray);
     } else {
-	if (__isNonNilObject(argArray)) {
-	    static struct inlineCache ilcSize = __ILC0(@line+1);
-	    numberOfArgs = (*ilcSize.ilc_func)(argArray, @symbol(size), nil, &ilcSize);
-	    if (!__isSmallInteger(numberOfArgs))
-		goto bad;
-	    nargs = __intVal(numberOfArgs);
-	    argP = (OBJ *)(&a1);
-	    for (i=1; i <= nargs; i++) {
-		*argP++ = __AT_(argArray, __mkSmallInteger(i));
-	    }
-	    argP = (OBJ *)(&a1);
-	} else {
-	    nargs = 0;
-	}
+        if (__isNonNilObject(argArray)) {
+            static struct inlineCache ilcSize = __ILC0(@line+1);
+            numberOfArgs = (*ilcSize.ilc_func)(argArray, @symbol(size), nil, &ilcSize);
+            if (!__isSmallInteger(numberOfArgs))
+                goto bad;
+            nargs = __intVal(numberOfArgs);
+            argP = (OBJ *)(&a1);
+            for (i=1; i <= nargs; i++) {
+                *argP++ = __AT_(argArray, __mkSmallInteger(i));
+            }
+            argP = (OBJ *)(&a1);
+        } else {
+            nargs = 0;
+        }
     }
     switch (nargs) {
-	case 0:
-	    {
-		static struct inlineCache ilc0 = __DUMMYILCSELF0(@line+1);
-		RETURN ( _SEND0(self, aSelector, aClass, &ilc0));
-	    }
-
-	case 1:
-	    {
-		static struct inlineCache ilc1 = __DUMMYILCSELF1(@line+1);
-		RETURN ( _SEND1(self, aSelector, aClass, &ilc1, argP[0]));
-	    }
-
-	case 2:
-	    {
-		static struct inlineCache ilc2 = __DUMMYILCSELF2(@line+1);
-		RETURN ( _SEND2(self, aSelector, aClass, &ilc2, argP[0], argP[1]));
-	    }
-
-	case 3:
-	    {
-		static struct inlineCache ilc3 = __DUMMYILCSELF3(@line+1);
-		RETURN ( _SEND3(self, aSelector, aClass, &ilc3,
-				argP[0], argP[1], argP[2]));
-	    }
-
-	case 4:
-	    {
-		static struct inlineCache ilc4 = __DUMMYILCSELF4(@line+1);
-		RETURN ( _SEND4(self, aSelector, aClass, &ilc4,
-				argP[0], argP[1], argP[2], argP[3]));
-	    }
-
-	case 5:
-	    {
-		static struct inlineCache ilc5 = __DUMMYILCSELF5(@line+1);
-		RETURN ( _SEND5(self, aSelector, aClass, &ilc5,
-				argP[0], argP[1], argP[2], argP[3], argP[4]));
-	    }
-
-	case 6:
-	    {
-		static struct inlineCache ilc6 = __DUMMYILCSELF6(@line+1);
-		RETURN ( _SEND6(self, aSelector, aClass, &ilc6,
-				argP[0], argP[1], argP[2], argP[3], argP[4], argP[5]));
-	    }
-
-	case 7:
-	    {
-		static struct inlineCache ilc7 = __DUMMYILCSELF7(@line+1);
-		RETURN ( _SEND7(self, aSelector, aClass, &ilc7,
-				argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-				argP[6]));
-	    }
-
-	case 8:
-	    {
-		static struct inlineCache ilc8 = __DUMMYILCSELF8(@line+1);
-		RETURN ( _SEND8(self, aSelector, aClass, &ilc8,
-				argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-				argP[6], argP[7]));
-	    }
-
-	case 9:
-	    {
-		static struct inlineCache ilc9 = __DUMMYILCSELF9(@line+1);
-		RETURN ( _SEND9(self, aSelector, aClass, &ilc9,
-				argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-				argP[6], argP[7], argP[8]));
-	    }
-
-	case 10:
-	    {
-		static struct inlineCache ilc10 = __DUMMYILCSELF10(@line+1);
-		RETURN ( _SEND10(self, aSelector, aClass, &ilc10,
-				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-				 argP[6], argP[7], argP[8], argP[9]));
-	    }
-
-	case 11:
-	    {
-		static struct inlineCache ilc11 = __DUMMYILCSELF11(@line+1);
-		RETURN ( _SEND11(self, aSelector, aClass, &ilc11,
-				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-				 argP[6], argP[7], argP[8], argP[9], argP[10]));
-	    }
-
-	case 12:
-	    {
-		static struct inlineCache ilc12 = __DUMMYILCSELF12(@line+1);
-		RETURN ( _SEND12(self, aSelector, aClass, &ilc12,
-				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-				 argP[6], argP[7], argP[8], argP[9], argP[10],
-				 argP[11]));
-	    }
-
-	case 13:
-	    {
-		static struct inlineCache ilc13 = __DUMMYILCSELF13(@line+1);
-		RETURN ( _SEND13(self, aSelector, aClass, &ilc13,
-				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-				 argP[6], argP[7], argP[8], argP[9], argP[10],
-				 argP[11], argP[12]));
-	    }
-
-	case 14:
-	    {
-		static struct inlineCache ilc14 = __DUMMYILCSELF14(@line+1);
-		RETURN ( _SEND14(self, aSelector, aClass, &ilc14,
-				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-				 argP[6], argP[7], argP[8], argP[9], argP[10],
-				 argP[11], argP[12], argP[13]));
-	    }
-
-	case 15:
-	    {
-		static struct inlineCache ilc15 = __DUMMYILCSELF15(@line+1);
-		RETURN ( _SEND15(self, aSelector, aClass, &ilc15,
-				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-				 argP[6], argP[7], argP[8], argP[9], argP[10],
-				 argP[11], argP[12], argP[13], argP[14]));
-	    }
+        case 0:
+            {
+                static struct inlineCache ilc0 = __DUMMYILCSELF0(@line+1);
+                RETURN ( _SEND0(self, aSelector, aClass, &ilc0));
+            }
+
+        case 1:
+            {
+                static struct inlineCache ilc1 = __DUMMYILCSELF1(@line+1);
+                RETURN ( _SEND1(self, aSelector, aClass, &ilc1, argP[0]));
+            }
+
+        case 2:
+            {
+                static struct inlineCache ilc2 = __DUMMYILCSELF2(@line+1);
+                RETURN ( _SEND2(self, aSelector, aClass, &ilc2, argP[0], argP[1]));
+            }
+
+        case 3:
+            {
+                static struct inlineCache ilc3 = __DUMMYILCSELF3(@line+1);
+                RETURN ( _SEND3(self, aSelector, aClass, &ilc3,
+                                argP[0], argP[1], argP[2]));
+            }
+
+        case 4:
+            {
+                static struct inlineCache ilc4 = __DUMMYILCSELF4(@line+1);
+                RETURN ( _SEND4(self, aSelector, aClass, &ilc4,
+                                argP[0], argP[1], argP[2], argP[3]));
+            }
+
+        case 5:
+            {
+                static struct inlineCache ilc5 = __DUMMYILCSELF5(@line+1);
+                RETURN ( _SEND5(self, aSelector, aClass, &ilc5,
+                                argP[0], argP[1], argP[2], argP[3], argP[4]));
+            }
+
+        case 6:
+            {
+                static struct inlineCache ilc6 = __DUMMYILCSELF6(@line+1);
+                RETURN ( _SEND6(self, aSelector, aClass, &ilc6,
+                                argP[0], argP[1], argP[2], argP[3], argP[4], argP[5]));
+            }
+
+        case 7:
+            {
+                static struct inlineCache ilc7 = __DUMMYILCSELF7(@line+1);
+                RETURN ( _SEND7(self, aSelector, aClass, &ilc7,
+                                argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+                                argP[6]));
+            }
+
+        case 8:
+            {
+                static struct inlineCache ilc8 = __DUMMYILCSELF8(@line+1);
+                RETURN ( _SEND8(self, aSelector, aClass, &ilc8,
+                                argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+                                argP[6], argP[7]));
+            }
+
+        case 9:
+            {
+                static struct inlineCache ilc9 = __DUMMYILCSELF9(@line+1);
+                RETURN ( _SEND9(self, aSelector, aClass, &ilc9,
+                                argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+                                argP[6], argP[7], argP[8]));
+            }
+
+        case 10:
+            {
+                static struct inlineCache ilc10 = __DUMMYILCSELF10(@line+1);
+                RETURN ( _SEND10(self, aSelector, aClass, &ilc10,
+                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+                                 argP[6], argP[7], argP[8], argP[9]));
+            }
+
+        case 11:
+            {
+                static struct inlineCache ilc11 = __DUMMYILCSELF11(@line+1);
+                RETURN ( _SEND11(self, aSelector, aClass, &ilc11,
+                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+                                 argP[6], argP[7], argP[8], argP[9], argP[10]));
+            }
+
+        case 12:
+            {
+                static struct inlineCache ilc12 = __DUMMYILCSELF12(@line+1);
+                RETURN ( _SEND12(self, aSelector, aClass, &ilc12,
+                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+                                 argP[6], argP[7], argP[8], argP[9], argP[10],
+                                 argP[11]));
+            }
+
+        case 13:
+            {
+                static struct inlineCache ilc13 = __DUMMYILCSELF13(@line+1);
+                RETURN ( _SEND13(self, aSelector, aClass, &ilc13,
+                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+                                 argP[6], argP[7], argP[8], argP[9], argP[10],
+                                 argP[11], argP[12]));
+            }
+
+        case 14:
+            {
+                static struct inlineCache ilc14 = __DUMMYILCSELF14(@line+1);
+                RETURN ( _SEND14(self, aSelector, aClass, &ilc14,
+                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+                                 argP[6], argP[7], argP[8], argP[9], argP[10],
+                                 argP[11], argP[12], argP[13]));
+            }
+
+        case 15:
+            {
+                static struct inlineCache ilc15 = __DUMMYILCSELF15(@line+1);
+                RETURN ( _SEND15(self, aSelector, aClass, &ilc15,
+                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+                                 argP[6], argP[7], argP[8], argP[9], argP[10],
+                                 argP[11], argP[12], argP[13], argP[14]));
+            }
 
 #ifdef _SEND16
-	case 16:
-	    {
-		static struct inlineCache ilc16 = __DUMMYILCSELF16(@line+1);
-		RETURN ( _SEND16(self, aSelector, aClass, &ilc15,
-				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-				 argP[6], argP[7], argP[8], argP[9], argP[10],
-				 argP[11], argP[12], argP[13], argP[14], argP[15]));
-	    }
+        case 16:
+            {
+                static struct inlineCache ilc16 = __DUMMYILCSELF16(@line+1);
+                RETURN ( _SEND16(self, aSelector, aClass, &ilc15,
+                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+                                 argP[6], argP[7], argP[8], argP[9], argP[10],
+                                 argP[11], argP[12], argP[13], argP[14], argP[15]));
+            }
 #endif
 #ifdef _SEND17
-	case 17:
-	    {
-		static struct inlineCache ilc17 = __DUMMYILCSELF17(@line+1);
-		RETURN ( _SEND17(self, aSelector, aClass, &ilc15,
-				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-				 argP[6], argP[7], argP[8], argP[9], argP[10],
-				 argP[11], argP[12], argP[13], argP[14], argP[15], argP[16]));
-	    }
+        case 17:
+            {
+                static struct inlineCache ilc17 = __DUMMYILCSELF17(@line+1);
+                RETURN ( _SEND17(self, aSelector, aClass, &ilc15,
+                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+                                 argP[6], argP[7], argP[8], argP[9], argP[10],
+                                 argP[11], argP[12], argP[13], argP[14], argP[15], argP[16]));
+            }
 #endif
 
 
@@ -5422,7 +5390,7 @@
     REGISTER OBJ sel = aSelector;
 
     if (InterruptPending == nil) {
-	struct inlineCache *pIlc;
+        struct inlineCache *pIlc;
     /* JV @ 2010-22-07: To improve performance I use 256 ILCs instead
        of default 4. For details, see comment in perform: */
 
@@ -5468,10 +5436,10 @@
             pIlc->ilc_poly = 0;
         }
 perform1_send_and_return:
-	RETURN ( (*(pIlc->ilc_func))(self, sel, nil, pIlc, arg) );
+        RETURN ( (*(pIlc->ilc_func))(self, sel, nil, pIlc, arg) );
     } else {
-	static struct inlineCache ilc1 = __DUMMYILCSELF1(@line+1);
-	RETURN (_SEND1(self, aSelector, nil, &ilc1, arg));
+        static struct inlineCache ilc1 = __DUMMYILCSELF1(@line+1);
+        RETURN (_SEND1(self, aSelector, nil, &ilc1, arg));
     }
 %}.
     ^ self perform:aSelector withArguments:(Array with:arg)
@@ -5532,10 +5500,10 @@
             pIlc->ilc_poly = 0;
         }
 perform2_send_and_return:
-	RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc, arg1, arg2) );
+        RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc, arg1, arg2) );
     } else {
-	static struct inlineCache ilc2 = __DUMMYILCSELF2(@line+1);
-	RETURN (_SEND2(self, aSelector, nil, &ilc2, arg1, arg2));
+        static struct inlineCache ilc2 = __DUMMYILCSELF2(@line+1);
+        RETURN (_SEND2(self, aSelector, nil, &ilc2, arg1, arg2));
     }
 %}.
     ^ self perform:aSelector withArguments:(Array with:arg1 with:arg2)
@@ -5554,32 +5522,32 @@
     static flip = 0;
 
     if (InterruptPending == nil) {
-	if (aSelector != last_0) {
-	    if (aSelector != last_1) {
-		if (flip) {
-		    pIlc = &ilc_0;
-		    flip = 0;
-		    last_0 = aSelector;
-		} else {
-		    pIlc = &ilc_1;
-		    flip = 1;
-		    last_1 = aSelector;
-		}
-		pIlc->ilc_func = __SEND3ADDR__;
-		if (pIlc->ilc_poly) {
-		    __flushPolyCache(pIlc->ilc_poly);
-		    pIlc->ilc_poly = 0;
-		}
-	    } else {
-		pIlc = &ilc_1;
-	    }
-	} else {
-	    pIlc = &ilc_0;
-	}
-	RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc, arg1, arg2, arg3) );
+        if (aSelector != last_0) {
+            if (aSelector != last_1) {
+                if (flip) {
+                    pIlc = &ilc_0;
+                    flip = 0;
+                    last_0 = aSelector;
+                } else {
+                    pIlc = &ilc_1;
+                    flip = 1;
+                    last_1 = aSelector;
+                }
+                pIlc->ilc_func = __SEND3ADDR__;
+                if (pIlc->ilc_poly) {
+                    __flushPolyCache(pIlc->ilc_poly);
+                    pIlc->ilc_poly = 0;
+                }
+            } else {
+                pIlc = &ilc_1;
+            }
+        } else {
+            pIlc = &ilc_0;
+        }
+        RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc, arg1, arg2, arg3) );
     } else {
-	static struct inlineCache ilc3 = __DUMMYILCSELF3(@line+1);
-	RETURN (_SEND3(self, aSelector, nil, &ilc3, arg1, arg2, arg3));
+        static struct inlineCache ilc3 = __DUMMYILCSELF3(@line+1);
+        RETURN (_SEND3(self, aSelector, nil, &ilc3, arg1, arg2, arg3));
     }
 %}.
     ^ self perform:aSelector withArguments:(Array with:arg1 with:arg2 with:arg3)
@@ -5598,34 +5566,34 @@
     static flip = 0;
 
     if (InterruptPending == nil) {
-	if (aSelector != last_0) {
-	    if (aSelector != last_1) {
-		if (flip) {
-		    pIlc = &ilc_0;
-		    flip = 0;
-		    last_0 = aSelector;
-		} else {
-		    pIlc = &ilc_1;
-		    flip = 1;
-		    last_1 = aSelector;
-		}
-		pIlc->ilc_func = __SEND4ADDR__;
-		if (pIlc->ilc_poly) {
-		    __flushPolyCache(pIlc->ilc_poly);
-		    pIlc->ilc_poly = 0;
-		}
-	    } else {
-		pIlc = &ilc_1;
-	    }
-	} else {
-	    pIlc = &ilc_0;
-	}
-	RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc,
-				     arg1, arg2, arg3, arg4) );
+        if (aSelector != last_0) {
+            if (aSelector != last_1) {
+                if (flip) {
+                    pIlc = &ilc_0;
+                    flip = 0;
+                    last_0 = aSelector;
+                } else {
+                    pIlc = &ilc_1;
+                    flip = 1;
+                    last_1 = aSelector;
+                }
+                pIlc->ilc_func = __SEND4ADDR__;
+                if (pIlc->ilc_poly) {
+                    __flushPolyCache(pIlc->ilc_poly);
+                    pIlc->ilc_poly = 0;
+                }
+            } else {
+                pIlc = &ilc_1;
+            }
+        } else {
+            pIlc = &ilc_0;
+        }
+        RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc,
+                                     arg1, arg2, arg3, arg4) );
     } else {
-	static struct inlineCache ilc4 = __DUMMYILCSELF4(@line+1);
-	RETURN (_SEND4(self, aSelector, nil, &ilc4,
-		       arg1, arg2, arg3, arg4));
+        static struct inlineCache ilc4 = __DUMMYILCSELF4(@line+1);
+        RETURN (_SEND4(self, aSelector, nil, &ilc4,
+                       arg1, arg2, arg3, arg4));
     }
 %}.
     ^ self perform:aSelector withArguments:(Array with:arg1 with:arg2 with:arg3 with:arg4)
@@ -5644,38 +5612,38 @@
     static flip = 0;
 
     if (InterruptPending == nil) {
-	if (aSelector != last_0) {
-	    if (aSelector != last_1) {
-		if (flip) {
-		    pIlc = &ilc_0;
-		    flip = 0;
-		    last_0 = aSelector;
-		} else {
-		    pIlc = &ilc_1;
-		    flip = 1;
-		    last_1 = aSelector;
-		}
-		pIlc->ilc_func = __SEND5ADDR__;
-		if (pIlc->ilc_poly) {
-		    __flushPolyCache(pIlc->ilc_poly);
-		    pIlc->ilc_poly = 0;
-		}
-	    } else {
-		pIlc = &ilc_1;
-	    }
-	} else {
-	    pIlc = &ilc_0;
-	}
-	RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc,
-				     arg1, arg2, arg3, arg4, arg5) );
+        if (aSelector != last_0) {
+            if (aSelector != last_1) {
+                if (flip) {
+                    pIlc = &ilc_0;
+                    flip = 0;
+                    last_0 = aSelector;
+                } else {
+                    pIlc = &ilc_1;
+                    flip = 1;
+                    last_1 = aSelector;
+                }
+                pIlc->ilc_func = __SEND5ADDR__;
+                if (pIlc->ilc_poly) {
+                    __flushPolyCache(pIlc->ilc_poly);
+                    pIlc->ilc_poly = 0;
+                }
+            } else {
+                pIlc = &ilc_1;
+            }
+        } else {
+            pIlc = &ilc_0;
+        }
+        RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc,
+                                     arg1, arg2, arg3, arg4, arg5) );
     } else {
-	static struct inlineCache ilc5 = __DUMMYILCSELF5(@line+1);
-	RETURN (_SEND5(self, aSelector, nil, &ilc5,
-		       arg1, arg2, arg3, arg4, arg5));
+        static struct inlineCache ilc5 = __DUMMYILCSELF5(@line+1);
+        RETURN (_SEND5(self, aSelector, nil, &ilc5,
+                       arg1, arg2, arg3, arg4, arg5));
     }
 %}.
     ^ self perform:aSelector withArguments:(Array with:arg1 with:arg2 with:arg3 with:arg4
-						  with:arg5)
+                                                  with:arg5)
 
 !
 
@@ -5691,39 +5659,39 @@
     static flip = 0;
 
     if (InterruptPending == nil) {
-	if (aSelector != last_0) {
-	    if (aSelector != last_1) {
-		if (flip) {
-		    pIlc = &ilc_0;
-		    flip = 0;
-		    last_0 = aSelector;
-		} else {
-		    pIlc = &ilc_1;
-		    flip = 1;
-		    last_1 = aSelector;
-		}
-		pIlc->ilc_func = __SEND6ADDR__;
-		if (pIlc->ilc_poly) {
-		    __flushPolyCache(pIlc->ilc_poly);
-		    pIlc->ilc_poly = 0;
-		}
-	    } else {
-		pIlc = &ilc_1;
-	    }
-	} else {
-	    pIlc = &ilc_0;
-	}
-
-	RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc,
-				     arg1, arg2, arg3, arg4, arg5, arg6) );
+        if (aSelector != last_0) {
+            if (aSelector != last_1) {
+                if (flip) {
+                    pIlc = &ilc_0;
+                    flip = 0;
+                    last_0 = aSelector;
+                } else {
+                    pIlc = &ilc_1;
+                    flip = 1;
+                    last_1 = aSelector;
+                }
+                pIlc->ilc_func = __SEND6ADDR__;
+                if (pIlc->ilc_poly) {
+                    __flushPolyCache(pIlc->ilc_poly);
+                    pIlc->ilc_poly = 0;
+                }
+            } else {
+                pIlc = &ilc_1;
+            }
+        } else {
+            pIlc = &ilc_0;
+        }
+
+        RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc,
+                                     arg1, arg2, arg3, arg4, arg5, arg6) );
     } else {
-	static struct inlineCache ilc6 = __DUMMYILCSELF6(@line+1);
-	RETURN (_SEND6(self, aSelector, nil, &ilc6,
-		       arg1, arg2, arg3, arg4, arg5, arg6));
+        static struct inlineCache ilc6 = __DUMMYILCSELF6(@line+1);
+        RETURN (_SEND6(self, aSelector, nil, &ilc6,
+                       arg1, arg2, arg3, arg4, arg5, arg6));
     }
 %}.
     ^ self perform:aSelector withArguments:(Array with:arg1 with:arg2 with:arg3 with:arg4
-						  with:arg5 with:arg6)
+                                                  with:arg5 with:arg6)
 
 !
 
@@ -5739,398 +5707,398 @@
     OBJ l;
 
     if (__isArrayLike(argArray)) {
-	nargs = __arraySize(argArray);
-	argP = __arrayVal(argArray);
+        nargs = __arraySize(argArray);
+        argP = __arrayVal(argArray);
     } else {
-	if (__isNonNilObject(argArray)) {
-	    static struct inlineCache ilcSize = __ILC0(@line);
-	    int i;
-
-	    numberOfArgs = (*ilcSize.ilc_func)(argArray, @symbol(size), nil, &ilcSize);
-	    if (!__isSmallInteger(numberOfArgs))
-		goto bad;
-	    nargs = __intVal(numberOfArgs);
-	    argP = (OBJ *)(&a1);
-	    for (i=1; i <= nargs; i++) {
-		*argP++ = __AT_(argArray, __mkSmallInteger(i));
-	    }
-	    argP = (OBJ *)(&a1);
-	} else {
-	    nargs = 0;
-	}
+        if (__isNonNilObject(argArray)) {
+            static struct inlineCache ilcSize = __ILC0(@line);
+            int i;
+
+            numberOfArgs = (*ilcSize.ilc_func)(argArray, @symbol(size), nil, &ilcSize);
+            if (!__isSmallInteger(numberOfArgs))
+                goto bad;
+            nargs = __intVal(numberOfArgs);
+            argP = (OBJ *)(&a1);
+            for (i=1; i <= nargs; i++) {
+                *argP++ = __AT_(argArray, __mkSmallInteger(i));
+            }
+            argP = (OBJ *)(&a1);
+        } else {
+            nargs = 0;
+        }
     }
     switch (nargs) {
-	case 0:
-	    if (InterruptPending == nil) {
-		static OBJ last0_0 = nil; static struct inlineCache ilc0_0 = __ILCPERF0(@line);
-		static OBJ last0_1 = nil; static struct inlineCache ilc0_1 = __ILCPERF0(@line);
-		static OBJ last0_2 = nil; static struct inlineCache ilc0_2 = __ILCPERF0(@line);
-		static OBJ last0_3 = nil; static struct inlineCache ilc0_3 = __ILCPERF0(@line);
-		static int flip0 = 0;
-		struct inlineCache *pIlc;
-
-		if (aSelector == last0_0) {
-		    pIlc = &ilc0_0;
-		} else if (aSelector == last0_1) {
-		    pIlc = &ilc0_1;
-		} else if (aSelector == last0_2) {
-		    pIlc = &ilc0_2;
-		} else if (aSelector == last0_3) {
-		    pIlc = &ilc0_3;
-		} else {
-		    if (flip0 == 0) {
-			pIlc = &ilc0_0;
-			flip0 = 1;
-			last0_0 = aSelector;
-		    } else if (flip0 == 1) {
-			pIlc = &ilc0_1;
-			flip0 = 2;
-			last0_1 = aSelector;
-		    } else if (flip0 == 2) {
-			pIlc = &ilc0_2;
-			flip0 = 3;
-			last0_2 = aSelector;
-		    } else {
-			pIlc = &ilc0_3;
-			flip0 = 0;
-			last0_3 = aSelector;
-		    }
-
-		    pIlc->ilc_func = __SEND0ADDR__;
-		    if (pIlc->ilc_poly) {
-			__flushPolyCache(pIlc->ilc_poly);
-			pIlc->ilc_poly = 0;
-		    }
-		}
-		RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc));
-	    } else {
-		static struct inlineCache ilc0 = __DUMMYILCSELF0(@line+1);
-		RETURN (_SEND0(self, aSelector, nil, &ilc0));
-	    }
-
-	case 1:
-	    if (InterruptPending == nil) {
-		static OBJ last1_0 = nil; static struct inlineCache ilc1_0 = __ILCPERF1(@line);
-		static OBJ last1_1 = nil; static struct inlineCache ilc1_1 = __ILCPERF1(@line);
-		static OBJ last1_2 = nil; static struct inlineCache ilc1_2 = __ILCPERF1(@line);
-		static OBJ last1_3 = nil; static struct inlineCache ilc1_3 = __ILCPERF1(@line);
-		static int flip1 = 0;
-		struct inlineCache *pIlc;
-
-		if (aSelector == last1_0) {
-		    pIlc = &ilc1_0;
-		} else if (aSelector == last1_1) {
-		    pIlc = &ilc1_1;
-		} else if (aSelector == last1_2) {
-		    pIlc = &ilc1_2;
-		} else if (aSelector == last1_3) {
-		    pIlc = &ilc1_3;
-		} else {
-		    if (flip1 == 0) {
-			pIlc = &ilc1_0;
-			flip1 = 1;
-			last1_0 = aSelector;
-		    } else if (flip1 == 1) {
-			pIlc = &ilc1_1;
-			flip1 = 2;
-			last1_1 = aSelector;
-		    } else if (flip1 == 2) {
-			pIlc = &ilc1_2;
-			flip1 = 3;
-			last1_2 = aSelector;
-		    } else {
-			pIlc = &ilc1_3;
-			flip1 = 0;
-			last1_3 = aSelector;
-		    }
-
-		    pIlc->ilc_func = __SEND1ADDR__;
-		    if (pIlc->ilc_poly) {
-			__flushPolyCache(pIlc->ilc_poly);
-			pIlc->ilc_poly = 0;
-		    }
-		}
-		RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0]));
-	    } else {
-		static struct inlineCache ilc1 = __DUMMYILCSELF1(@line+1);
-		RETURN (_SEND1(self, aSelector, nil, &ilc1, argP[0]));
-	    }
-
-	case 2:
-	    if (InterruptPending == nil) {
-		static OBJ last2_0 = nil; static struct inlineCache ilc2_0 = __ILCPERF2(@line);
-		static OBJ last2_1 = nil; static struct inlineCache ilc2_1 = __ILCPERF2(@line);
-		static int flip2 = 0;
-		struct inlineCache *pIlc;
-
-		if (aSelector == last2_0) {
-		    pIlc = &ilc2_0;
-		} else if (aSelector == last2_1) {
-		    pIlc = &ilc2_1;
-		} else {
-		    if (flip2 == 0) {
-			pIlc = &ilc2_0;
-			flip2 = 1;
-			last2_0 = aSelector;
-		    } else {
-			pIlc = &ilc2_1;
-			flip2 = 0;
-			last2_1 = aSelector;
-		    }
-
-		    pIlc->ilc_func = __SEND2ADDR__;
-		    if (pIlc->ilc_poly) {
-			__flushPolyCache(pIlc->ilc_poly);
-			pIlc->ilc_poly = 0;
-		    }
-		}
-		RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0], argP[1]));
-	    } else {
-		static struct inlineCache ilc2 = __DUMMYILCSELF2(@line+1);
-		RETURN (_SEND2(self, aSelector, nil, &ilc2, argP[0], argP[1]));
-	    }
-
-	case 3:
-	    if (InterruptPending == nil) {
-		static OBJ last3_0 = nil; static struct inlineCache ilc3_0 = __ILCPERF3(@line);
-		static OBJ last3_1 = nil; static struct inlineCache ilc3_1 = __ILCPERF3(@line);
-		static int flip3 = 0;
-		struct inlineCache *pIlc;
-
-		if (aSelector == last3_0) {
-		    pIlc = &ilc3_0;
-		} else if (aSelector == last3_1) {
-		    pIlc = &ilc3_1;
-		} else {
-		    if (flip3 == 0) {
-			pIlc = &ilc3_0;
-			flip3 = 1;
-			last3_0 = aSelector;
-		    } else {
-			pIlc = &ilc3_1;
-			flip3 = 0;
-			last3_1 = aSelector;
-		    }
-
-		    pIlc->ilc_func = __SEND3ADDR__;
-		    if (pIlc->ilc_poly) {
-			__flushPolyCache(pIlc->ilc_poly);
-			pIlc->ilc_poly = 0;
-		    }
-		}
-		RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0], argP[1], argP[2]));
-	    } else {
-		static struct inlineCache ilc3 = __DUMMYILCSELF3(@line+1);
-		RETURN (_SEND3(self, aSelector, nil, &ilc3, argP[0], argP[1], argP[2]));
-	    }
-
-	case 4:
-	    {
-		static OBJ last4 = nil; static struct inlineCache ilc4 = __ILCPERF4(@line);
-
-		if ((InterruptPending != nil) || (aSelector != last4)) {
-		    ilc4.ilc_func = __SEND4ADDR__;
-		    if (ilc4.ilc_poly) {
-			__flushPolyCache(ilc4.ilc_poly);
-			ilc4.ilc_poly = 0;
-		    }
-		    last4 = aSelector;
-		}
-		RETURN ( (*ilc4.ilc_func)(self, aSelector, nil, &ilc4,
-						argP[0], argP[1], argP[2], argP[3]));
-	    }
-
-	case 5:
-	    {
-		static OBJ last5 = nil; static struct inlineCache ilc5 = __ILCPERF5(@line);
-
-		if ((InterruptPending != nil) || (aSelector != last5)) {
-		    ilc5.ilc_func = __SEND5ADDR__;
-		    if (ilc5.ilc_poly) {
-			__flushPolyCache(ilc5.ilc_poly);
-			ilc5.ilc_poly = 0;
-		    }
-		    last5 = aSelector;
-		}
-		RETURN ( (*ilc5.ilc_func)(self, aSelector, nil, &ilc5,
-						argP[0], argP[1], argP[2], argP[3], argP[4]));
-	    }
-
-	case 6:
-	    {
-		static OBJ last6 = nil; static struct inlineCache ilc6 = __ILCPERF6(@line);
-
-		if ((InterruptPending != nil) || (aSelector != last6)) {
-		    ilc6.ilc_func = __SEND6ADDR__;
-		    if (ilc6.ilc_poly) {
-			__flushPolyCache(ilc6.ilc_poly);
-			ilc6.ilc_poly = 0;
-		    }
-		    last6 = aSelector;
-		}
-		RETURN ( (*ilc6.ilc_func)(self, aSelector, nil, &ilc6,
-						argP[0], argP[1], argP[2], argP[3], argP[4],
-						argP[5]));
-	    }
-
-	case 7:
-	    {
-		static OBJ last7 = nil; static struct inlineCache ilc7 = __ILCPERF7(@line);
-
-		if ((InterruptPending != nil) || (aSelector != last7)) {
-		    ilc7.ilc_func = __SEND7ADDR__;
-		    if (ilc7.ilc_poly) {
-			__flushPolyCache(ilc7.ilc_poly);
-			ilc7.ilc_poly = 0;
-		    }
-		    last7 = aSelector;
-		}
-		RETURN ( (*ilc7.ilc_func)(self, aSelector, nil, &ilc7,
-						argP[0], argP[1], argP[2], argP[3], argP[4],
-						argP[5], argP[6]));
-	    }
-
-	case 8:
-	    {
-		static OBJ last8 = nil; static struct inlineCache ilc8 = __ILCPERF8(@line);
-
-		if ((InterruptPending != nil) || (aSelector != last8)) {
-		    ilc8.ilc_func = __SEND8ADDR__;
-		    if (ilc8.ilc_poly) {
-			__flushPolyCache(ilc8.ilc_poly);
-			ilc8.ilc_poly = 0;
-		    }
-		    last8 = aSelector;
-		}
-		RETURN ( (*ilc8.ilc_func)(self, aSelector, nil, &ilc8,
-						argP[0], argP[1], argP[2], argP[3], argP[4],
-						argP[5], argP[6], argP[7]));
-	    }
-
-	case 9:
-	    {
-		static OBJ last9 = nil; static struct inlineCache ilc9 = __ILCPERF9(@line);
-
-		if ((InterruptPending != nil) || (aSelector != last9)) {
-		    ilc9.ilc_func = __SEND9ADDR__;
-		    if (ilc9.ilc_poly) {
-			__flushPolyCache(ilc9.ilc_poly);
-			ilc9.ilc_poly = 0;
-		    }
-		    last9 = aSelector;
-		}
-		RETURN ( (*ilc9.ilc_func)(self, aSelector, nil, &ilc9,
-						argP[0], argP[1], argP[2], argP[3], argP[4],
-						argP[5], argP[6], argP[7], argP[8]));
-	    }
-
-	case 10:
-	    {
-		static OBJ last10 = nil; static struct inlineCache ilc10 = __ILCPERF10(@line);
-
-		if ((InterruptPending != nil) || (aSelector != last10)) {
-		    ilc10.ilc_func = __SEND10ADDR__;
-		    if (ilc10.ilc_poly) {
-			__flushPolyCache(ilc10.ilc_poly);
-			ilc10.ilc_poly = 0;
-		    }
-		    last10 = aSelector;
-		}
-		RETURN ( (*ilc10.ilc_func)(self, aSelector, nil, &ilc10,
-						argP[0], argP[1], argP[2], argP[3], argP[4],
-						argP[5], argP[6], argP[7], argP[8], argP[9]));
-	    }
-
-	case 11:
-	    {
-		static OBJ last11 = nil; static struct inlineCache ilc11 = __ILCPERF11(@line);
-
-		if ((InterruptPending != nil) || (aSelector != last11)) {
-		    ilc11.ilc_func = __SEND11ADDR__;
-		    if (ilc11.ilc_poly) {
-			__flushPolyCache(ilc11.ilc_poly);
-			ilc11.ilc_poly = 0;
-		    }
-		    last11 = aSelector;
-		}
-		RETURN ( (*ilc11.ilc_func)(self, aSelector, nil, &ilc11,
-						argP[0], argP[1], argP[2], argP[3], argP[4],
-						argP[5], argP[6], argP[7], argP[8], argP[9],
-						argP[10]));
-	    }
-
-	case 12:
-	    {
-		static OBJ last12 = nil; static struct inlineCache ilc12 = __ILCPERF12(@line);
-
-		if ((InterruptPending != nil) || (aSelector != last12)) {
-		    ilc12.ilc_func = __SEND12ADDR__;
-		    if (ilc12.ilc_poly) {
-			__flushPolyCache(ilc12.ilc_poly);
-			ilc12.ilc_poly = 0;
-		    }
-		    last12 = aSelector;
-		}
-		RETURN ( (*ilc12.ilc_func)(self, aSelector, nil, &ilc12,
-						argP[0], argP[1], argP[2], argP[3], argP[4],
-						argP[5], argP[6], argP[7], argP[8], argP[9],
-						argP[10], argP[11]));
-	    }
-
-	case 13:
-	    {
-		static OBJ last13 = nil; static struct inlineCache ilc13 = __ILCPERF13(@line);
-
-		if ((InterruptPending != nil) || (aSelector != last13)) {
-		    ilc13.ilc_func = __SEND13ADDR__;
-		    if (ilc13.ilc_poly) {
-			__flushPolyCache(ilc13.ilc_poly);
-			ilc13.ilc_poly = 0;
-		    }
-		    last13 = aSelector;
-		}
-		RETURN ( (*ilc13.ilc_func)(self, aSelector, nil, &ilc13,
-						argP[0], argP[1], argP[2], argP[3], argP[4],
-						argP[5], argP[6], argP[7], argP[8], argP[9],
-						argP[10], argP[11], argP[12]));
-	    }
-
-	case 14:
-	    {
-		static OBJ last14 = nil; static struct inlineCache ilc14 = __ILCPERF14(@line);
-
-		if ((InterruptPending != nil) || (aSelector != last14)) {
-		    ilc14.ilc_func = __SEND14ADDR__;
-		    if (ilc14.ilc_poly) {
-			__flushPolyCache(ilc14.ilc_poly);
-			ilc14.ilc_poly = 0;
-		    }
-		    last14 = aSelector;
-		}
-		RETURN ( (*ilc14.ilc_func)(self, aSelector, nil, &ilc14,
-						argP[0], argP[1], argP[2], argP[3], argP[4],
-						argP[5], argP[6], argP[7], argP[8], argP[9],
-						argP[10], argP[11], argP[12], argP[13]));
-	    }
-
-	case 15:
-	    {
-		static OBJ last15 = nil; static struct inlineCache ilc15 = __ILCPERF15(@line);
-
-		if ((InterruptPending != nil) || (aSelector != last15)) {
-		    ilc15.ilc_func = __SEND15ADDR__;
-		    if (ilc15.ilc_poly) {
-			__flushPolyCache(ilc15.ilc_poly);
-			ilc15.ilc_poly = 0;
-		    }
-		    last15 = aSelector;
-		}
-		RETURN ( (*ilc15.ilc_func)(self, aSelector, nil, &ilc15,
-						argP[0], argP[1], argP[2], argP[3], argP[4],
-						argP[5], argP[6], argP[7], argP[8], argP[9],
-						argP[10], argP[11], argP[12], argP[13],
-						argP[14]));
-	    }
+        case 0:
+            if (InterruptPending == nil) {
+                static OBJ last0_0 = nil; static struct inlineCache ilc0_0 = __ILCPERF0(@line);
+                static OBJ last0_1 = nil; static struct inlineCache ilc0_1 = __ILCPERF0(@line);
+                static OBJ last0_2 = nil; static struct inlineCache ilc0_2 = __ILCPERF0(@line);
+                static OBJ last0_3 = nil; static struct inlineCache ilc0_3 = __ILCPERF0(@line);
+                static int flip0 = 0;
+                struct inlineCache *pIlc;
+
+                if (aSelector == last0_0) {
+                    pIlc = &ilc0_0;
+                } else if (aSelector == last0_1) {
+                    pIlc = &ilc0_1;
+                } else if (aSelector == last0_2) {
+                    pIlc = &ilc0_2;
+                } else if (aSelector == last0_3) {
+                    pIlc = &ilc0_3;
+                } else {
+                    if (flip0 == 0) {
+                        pIlc = &ilc0_0;
+                        flip0 = 1;
+                        last0_0 = aSelector;
+                    } else if (flip0 == 1) {
+                        pIlc = &ilc0_1;
+                        flip0 = 2;
+                        last0_1 = aSelector;
+                    } else if (flip0 == 2) {
+                        pIlc = &ilc0_2;
+                        flip0 = 3;
+                        last0_2 = aSelector;
+                    } else {
+                        pIlc = &ilc0_3;
+                        flip0 = 0;
+                        last0_3 = aSelector;
+                    }
+
+                    pIlc->ilc_func = __SEND0ADDR__;
+                    if (pIlc->ilc_poly) {
+                        __flushPolyCache(pIlc->ilc_poly);
+                        pIlc->ilc_poly = 0;
+                    }
+                }
+                RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc));
+            } else {
+                static struct inlineCache ilc0 = __DUMMYILCSELF0(@line+1);
+                RETURN (_SEND0(self, aSelector, nil, &ilc0));
+            }
+
+        case 1:
+            if (InterruptPending == nil) {
+                static OBJ last1_0 = nil; static struct inlineCache ilc1_0 = __ILCPERF1(@line);
+                static OBJ last1_1 = nil; static struct inlineCache ilc1_1 = __ILCPERF1(@line);
+                static OBJ last1_2 = nil; static struct inlineCache ilc1_2 = __ILCPERF1(@line);
+                static OBJ last1_3 = nil; static struct inlineCache ilc1_3 = __ILCPERF1(@line);
+                static int flip1 = 0;
+                struct inlineCache *pIlc;
+
+                if (aSelector == last1_0) {
+                    pIlc = &ilc1_0;
+                } else if (aSelector == last1_1) {
+                    pIlc = &ilc1_1;
+                } else if (aSelector == last1_2) {
+                    pIlc = &ilc1_2;
+                } else if (aSelector == last1_3) {
+                    pIlc = &ilc1_3;
+                } else {
+                    if (flip1 == 0) {
+                        pIlc = &ilc1_0;
+                        flip1 = 1;
+                        last1_0 = aSelector;
+                    } else if (flip1 == 1) {
+                        pIlc = &ilc1_1;
+                        flip1 = 2;
+                        last1_1 = aSelector;
+                    } else if (flip1 == 2) {
+                        pIlc = &ilc1_2;
+                        flip1 = 3;
+                        last1_2 = aSelector;
+                    } else {
+                        pIlc = &ilc1_3;
+                        flip1 = 0;
+                        last1_3 = aSelector;
+                    }
+
+                    pIlc->ilc_func = __SEND1ADDR__;
+                    if (pIlc->ilc_poly) {
+                        __flushPolyCache(pIlc->ilc_poly);
+                        pIlc->ilc_poly = 0;
+                    }
+                }
+                RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0]));
+            } else {
+                static struct inlineCache ilc1 = __DUMMYILCSELF1(@line+1);
+                RETURN (_SEND1(self, aSelector, nil, &ilc1, argP[0]));
+            }
+
+        case 2:
+            if (InterruptPending == nil) {
+                static OBJ last2_0 = nil; static struct inlineCache ilc2_0 = __ILCPERF2(@line);
+                static OBJ last2_1 = nil; static struct inlineCache ilc2_1 = __ILCPERF2(@line);
+                static int flip2 = 0;
+                struct inlineCache *pIlc;
+
+                if (aSelector == last2_0) {
+                    pIlc = &ilc2_0;
+                } else if (aSelector == last2_1) {
+                    pIlc = &ilc2_1;
+                } else {
+                    if (flip2 == 0) {
+                        pIlc = &ilc2_0;
+                        flip2 = 1;
+                        last2_0 = aSelector;
+                    } else {
+                        pIlc = &ilc2_1;
+                        flip2 = 0;
+                        last2_1 = aSelector;
+                    }
+
+                    pIlc->ilc_func = __SEND2ADDR__;
+                    if (pIlc->ilc_poly) {
+                        __flushPolyCache(pIlc->ilc_poly);
+                        pIlc->ilc_poly = 0;
+                    }
+                }
+                RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0], argP[1]));
+            } else {
+                static struct inlineCache ilc2 = __DUMMYILCSELF2(@line+1);
+                RETURN (_SEND2(self, aSelector, nil, &ilc2, argP[0], argP[1]));
+            }
+
+        case 3:
+            if (InterruptPending == nil) {
+                static OBJ last3_0 = nil; static struct inlineCache ilc3_0 = __ILCPERF3(@line);
+                static OBJ last3_1 = nil; static struct inlineCache ilc3_1 = __ILCPERF3(@line);
+                static int flip3 = 0;
+                struct inlineCache *pIlc;
+
+                if (aSelector == last3_0) {
+                    pIlc = &ilc3_0;
+                } else if (aSelector == last3_1) {
+                    pIlc = &ilc3_1;
+                } else {
+                    if (flip3 == 0) {
+                        pIlc = &ilc3_0;
+                        flip3 = 1;
+                        last3_0 = aSelector;
+                    } else {
+                        pIlc = &ilc3_1;
+                        flip3 = 0;
+                        last3_1 = aSelector;
+                    }
+
+                    pIlc->ilc_func = __SEND3ADDR__;
+                    if (pIlc->ilc_poly) {
+                        __flushPolyCache(pIlc->ilc_poly);
+                        pIlc->ilc_poly = 0;
+                    }
+                }
+                RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0], argP[1], argP[2]));
+            } else {
+                static struct inlineCache ilc3 = __DUMMYILCSELF3(@line+1);
+                RETURN (_SEND3(self, aSelector, nil, &ilc3, argP[0], argP[1], argP[2]));
+            }
+
+        case 4:
+            {
+                static OBJ last4 = nil; static struct inlineCache ilc4 = __ILCPERF4(@line);
+
+                if ((InterruptPending != nil) || (aSelector != last4)) {
+                    ilc4.ilc_func = __SEND4ADDR__;
+                    if (ilc4.ilc_poly) {
+                        __flushPolyCache(ilc4.ilc_poly);
+                        ilc4.ilc_poly = 0;
+                    }
+                    last4 = aSelector;
+                }
+                RETURN ( (*ilc4.ilc_func)(self, aSelector, nil, &ilc4,
+                                                argP[0], argP[1], argP[2], argP[3]));
+            }
+
+        case 5:
+            {
+                static OBJ last5 = nil; static struct inlineCache ilc5 = __ILCPERF5(@line);
+
+                if ((InterruptPending != nil) || (aSelector != last5)) {
+                    ilc5.ilc_func = __SEND5ADDR__;
+                    if (ilc5.ilc_poly) {
+                        __flushPolyCache(ilc5.ilc_poly);
+                        ilc5.ilc_poly = 0;
+                    }
+                    last5 = aSelector;
+                }
+                RETURN ( (*ilc5.ilc_func)(self, aSelector, nil, &ilc5,
+                                                argP[0], argP[1], argP[2], argP[3], argP[4]));
+            }
+
+        case 6:
+            {
+                static OBJ last6 = nil; static struct inlineCache ilc6 = __ILCPERF6(@line);
+
+                if ((InterruptPending != nil) || (aSelector != last6)) {
+                    ilc6.ilc_func = __SEND6ADDR__;
+                    if (ilc6.ilc_poly) {
+                        __flushPolyCache(ilc6.ilc_poly);
+                        ilc6.ilc_poly = 0;
+                    }
+                    last6 = aSelector;
+                }
+                RETURN ( (*ilc6.ilc_func)(self, aSelector, nil, &ilc6,
+                                                argP[0], argP[1], argP[2], argP[3], argP[4],
+                                                argP[5]));
+            }
+
+        case 7:
+            {
+                static OBJ last7 = nil; static struct inlineCache ilc7 = __ILCPERF7(@line);
+
+                if ((InterruptPending != nil) || (aSelector != last7)) {
+                    ilc7.ilc_func = __SEND7ADDR__;
+                    if (ilc7.ilc_poly) {
+                        __flushPolyCache(ilc7.ilc_poly);
+                        ilc7.ilc_poly = 0;
+                    }
+                    last7 = aSelector;
+                }
+                RETURN ( (*ilc7.ilc_func)(self, aSelector, nil, &ilc7,
+                                                argP[0], argP[1], argP[2], argP[3], argP[4],
+                                                argP[5], argP[6]));
+            }
+
+        case 8:
+            {
+                static OBJ last8 = nil; static struct inlineCache ilc8 = __ILCPERF8(@line);
+
+                if ((InterruptPending != nil) || (aSelector != last8)) {
+                    ilc8.ilc_func = __SEND8ADDR__;
+                    if (ilc8.ilc_poly) {
+                        __flushPolyCache(ilc8.ilc_poly);
+                        ilc8.ilc_poly = 0;
+                    }
+                    last8 = aSelector;
+                }
+                RETURN ( (*ilc8.ilc_func)(self, aSelector, nil, &ilc8,
+                                                argP[0], argP[1], argP[2], argP[3], argP[4],
+                                                argP[5], argP[6], argP[7]));
+            }
+
+        case 9:
+            {
+                static OBJ last9 = nil; static struct inlineCache ilc9 = __ILCPERF9(@line);
+
+                if ((InterruptPending != nil) || (aSelector != last9)) {
+                    ilc9.ilc_func = __SEND9ADDR__;
+                    if (ilc9.ilc_poly) {
+                        __flushPolyCache(ilc9.ilc_poly);
+                        ilc9.ilc_poly = 0;
+                    }
+                    last9 = aSelector;
+                }
+                RETURN ( (*ilc9.ilc_func)(self, aSelector, nil, &ilc9,
+                                                argP[0], argP[1], argP[2], argP[3], argP[4],
+                                                argP[5], argP[6], argP[7], argP[8]));
+            }
+
+        case 10:
+            {
+                static OBJ last10 = nil; static struct inlineCache ilc10 = __ILCPERF10(@line);
+
+                if ((InterruptPending != nil) || (aSelector != last10)) {
+                    ilc10.ilc_func = __SEND10ADDR__;
+                    if (ilc10.ilc_poly) {
+                        __flushPolyCache(ilc10.ilc_poly);
+                        ilc10.ilc_poly = 0;
+                    }
+                    last10 = aSelector;
+                }
+                RETURN ( (*ilc10.ilc_func)(self, aSelector, nil, &ilc10,
+                                                argP[0], argP[1], argP[2], argP[3], argP[4],
+                                                argP[5], argP[6], argP[7], argP[8], argP[9]));
+            }
+
+        case 11:
+            {
+                static OBJ last11 = nil; static struct inlineCache ilc11 = __ILCPERF11(@line);
+
+                if ((InterruptPending != nil) || (aSelector != last11)) {
+                    ilc11.ilc_func = __SEND11ADDR__;
+                    if (ilc11.ilc_poly) {
+                        __flushPolyCache(ilc11.ilc_poly);
+                        ilc11.ilc_poly = 0;
+                    }
+                    last11 = aSelector;
+                }
+                RETURN ( (*ilc11.ilc_func)(self, aSelector, nil, &ilc11,
+                                                argP[0], argP[1], argP[2], argP[3], argP[4],
+                                                argP[5], argP[6], argP[7], argP[8], argP[9],
+                                                argP[10]));
+            }
+
+        case 12:
+            {
+                static OBJ last12 = nil; static struct inlineCache ilc12 = __ILCPERF12(@line);
+
+                if ((InterruptPending != nil) || (aSelector != last12)) {
+                    ilc12.ilc_func = __SEND12ADDR__;
+                    if (ilc12.ilc_poly) {
+                        __flushPolyCache(ilc12.ilc_poly);
+                        ilc12.ilc_poly = 0;
+                    }
+                    last12 = aSelector;
+                }
+                RETURN ( (*ilc12.ilc_func)(self, aSelector, nil, &ilc12,
+                                                argP[0], argP[1], argP[2], argP[3], argP[4],
+                                                argP[5], argP[6], argP[7], argP[8], argP[9],
+                                                argP[10], argP[11]));
+            }
+
+        case 13:
+            {
+                static OBJ last13 = nil; static struct inlineCache ilc13 = __ILCPERF13(@line);
+
+                if ((InterruptPending != nil) || (aSelector != last13)) {
+                    ilc13.ilc_func = __SEND13ADDR__;
+                    if (ilc13.ilc_poly) {
+                        __flushPolyCache(ilc13.ilc_poly);
+                        ilc13.ilc_poly = 0;
+                    }
+                    last13 = aSelector;
+                }
+                RETURN ( (*ilc13.ilc_func)(self, aSelector, nil, &ilc13,
+                                                argP[0], argP[1], argP[2], argP[3], argP[4],
+                                                argP[5], argP[6], argP[7], argP[8], argP[9],
+                                                argP[10], argP[11], argP[12]));
+            }
+
+        case 14:
+            {
+                static OBJ last14 = nil; static struct inlineCache ilc14 = __ILCPERF14(@line);
+
+                if ((InterruptPending != nil) || (aSelector != last14)) {
+                    ilc14.ilc_func = __SEND14ADDR__;
+                    if (ilc14.ilc_poly) {
+                        __flushPolyCache(ilc14.ilc_poly);
+                        ilc14.ilc_poly = 0;
+                    }
+                    last14 = aSelector;
+                }
+                RETURN ( (*ilc14.ilc_func)(self, aSelector, nil, &ilc14,
+                                                argP[0], argP[1], argP[2], argP[3], argP[4],
+                                                argP[5], argP[6], argP[7], argP[8], argP[9],
+                                                argP[10], argP[11], argP[12], argP[13]));
+            }
+
+        case 15:
+            {
+                static OBJ last15 = nil; static struct inlineCache ilc15 = __ILCPERF15(@line);
+
+                if ((InterruptPending != nil) || (aSelector != last15)) {
+                    ilc15.ilc_func = __SEND15ADDR__;
+                    if (ilc15.ilc_poly) {
+                        __flushPolyCache(ilc15.ilc_poly);
+                        ilc15.ilc_poly = 0;
+                    }
+                    last15 = aSelector;
+                }
+                RETURN ( (*ilc15.ilc_func)(self, aSelector, nil, &ilc15,
+                                                argP[0], argP[1], argP[2], argP[3], argP[4],
+                                                argP[5], argP[6], argP[7], argP[8], argP[9],
+                                                argP[10], argP[11], argP[12], argP[13],
+                                                argP[14]));
+            }
     }
 bad:;
 %}.
@@ -6146,7 +6114,7 @@
      If the message expects an argument, pass arg."
 
     aSelector numArgs == 1 ifTrue:[
-	^ self perform:aSelector with:arg
+        ^ self perform:aSelector with:arg
     ].
     ^ self perform:aSelector
 
@@ -6171,10 +6139,10 @@
 
     numArgs := aSelector numArgs.
     numArgs == 0 ifTrue:[
-	^ self perform:aSelector
+        ^ self perform:aSelector
     ].
     numArgs == 1 ifTrue:[
-	^ self perform:aSelector with:optionalArg1
+        ^ self perform:aSelector with:optionalArg1
     ].
     ^ self perform:aSelector with:optionalArg1 with:optionalArg2.
 
@@ -6199,13 +6167,13 @@
 
     numArgs := aSelector numArgs.
     numArgs == 0 ifTrue:[
-	^ self perform:aSelector
+        ^ self perform:aSelector
     ].
     numArgs == 1 ifTrue:[
-	^ self perform:aSelector with:optionalArg1
+        ^ self perform:aSelector with:optionalArg1
     ].
     numArgs == 2 ifTrue:[
-	^ self perform:aSelector with:optionalArg1 with:optionalArg2
+        ^ self perform:aSelector with:optionalArg1 with:optionalArg2
     ].
     ^ self perform:aSelector with:optionalArg1 with:optionalArg2 with:optionalArg3.
 
@@ -6230,16 +6198,16 @@
 
     numArgs := aSelector numArgs.
     numArgs == 0 ifTrue:[
-	^ self perform:aSelector
+        ^ self perform:aSelector
     ].
     numArgs == 1 ifTrue:[
-	^ self perform:aSelector with:optionalArg1
+        ^ self perform:aSelector with:optionalArg1
     ].
     numArgs == 2 ifTrue:[
-	^ self perform:aSelector with:optionalArg1 with:optionalArg2
+        ^ self perform:aSelector with:optionalArg1 with:optionalArg2
     ].
     numArgs == 3 ifTrue:[
-	^ self perform:aSelector with:optionalArg1 with:optionalArg2 with:optionalArg3
+        ^ self perform:aSelector with:optionalArg1 with:optionalArg2 with:optionalArg3
     ].
     ^ self perform:aSelector with:optionalArg1 with:optionalArg2 with:optionalArg3 with:optionalArg4.
 
@@ -6261,8 +6229,8 @@
      This is a non-object-oriented entry, applying a method
      in a functional way on a receiver.
      Warning:
-	 Take care for the method to be appropriate for the
-	 receiver - no checking is done by the VM."
+         Take care for the method to be appropriate for the
+         receiver - no checking is done by the VM."
 
     ^ aMethod valueWithReceiver:self arguments:#()
 
@@ -6291,8 +6259,8 @@
      This is a non-object-oriented entry, applying a method
      in a functional way on a receiver.
      Warning:
-	 Take care for the method to be appropriate for the
-	 receiver - no checking is done by the VM."
+         Take care for the method to be appropriate for the
+         receiver - no checking is done by the VM."
 
     ^ aMethod valueWithReceiver:self arguments:argumentArray
 
@@ -6312,8 +6280,8 @@
      This is a non-object-oriented entry, applying a method
      in a functional way on a receiver.
      Warning:
-	 Take care for the method to be appropriate for the
-	 receiver - no checking is done by the VM."
+         Take care for the method to be appropriate for the
+         receiver - no checking is done by the VM."
 
     ^ aMethod valueWithReceiver:self arguments:(Array with:arg)
 
@@ -6333,8 +6301,8 @@
      This is a non-object-oriented entry, applying a method
      in a functional way on a receiver.
      Warning:
-	 Take care for the method to be appropriate for the
-	 receiver - no checking is done by the VM."
+         Take care for the method to be appropriate for the
+         receiver - no checking is done by the VM."
 
     ^ aMethod valueWithReceiver:self arguments:(Array with:arg1 with:arg2)
 
@@ -6356,8 +6324,8 @@
      This is a non-object-oriented entry, applying a method
      in a functional way on a receiver.
      Warning:
-	 Take care for the method to be appropriate for the
-	 receiver - no checking is done by the VM."
+         Take care for the method to be appropriate for the
+         receiver - no checking is done by the VM."
 
     ^ aMethod valueWithReceiver:self arguments:(Array with:arg1 with:arg2 with:arg3)
 
@@ -6379,10 +6347,10 @@
 
     ret := 0.
     anAspectSymbol notNil ifTrue:[
-	ret := self perform:anAspectSymbol ifNotUnderstood:[0].
+        ret := self perform:anAspectSymbol ifNotUnderstood:[0].
     ].
     ret == 0 ifTrue:[
-	^ self elementDescriptorForNonNilInstanceVariables
+        ^ self elementDescriptorForNonNilInstanceVariables
     ].
     ^ ret.
 !
@@ -6415,16 +6383,16 @@
 
     instVarNames := theClass allInstVarNames.
     1 to:instSize do:[:i | |var|
-	var := self instVarAt:i.
-	(aBlock value:var) ifTrue:[
-	    children add:((instVarNames at:i) -> var)
-	]
+        var := self instVarAt:i.
+        (aBlock value:var) ifTrue:[
+            children add:((instVarNames at:i) -> var)
+        ]
     ].
 
     varSize ~~ 0 ifTrue:[
-	1 to:varSize do:[:i |
-	    children add:(i -> (self basicAt:i))
-	]
+        1 to:varSize do:[:i |
+            children add:(i -> (self basicAt:i))
+        ]
     ].
 
     ^ children.
@@ -6477,7 +6445,7 @@
     | cls|
 
     (cls := self class) == self ifTrue:[
-	^ 'a funny object'
+        ^ 'a funny object'
     ].
     ^ cls nameWithArticle
 
@@ -6551,7 +6519,7 @@
      These messages can be turned on/off by 'Object infoPrinting:true/false'"
 
     InfoPrinting == true ifTrue:[
-	self errorPrint
+        self errorPrint
     ]
 !
 
@@ -6564,7 +6532,7 @@
      These messages can be turned on/off by 'Object infoPrinting:true/false'"
 
     InfoPrinting == true ifTrue:[
-	self errorPrintCR
+        self errorPrintCR
     ]
 
     "Created: 20.5.1996 / 10:21:28 / cg"
@@ -6588,8 +6556,8 @@
     "/ (depends on string to respond to #print)
 
     Stdout isNil ifTrue:[
-	self printString print.
-	^ self
+        self printString print.
+        ^ self
     ].
     self printOn:Stdout
 
@@ -6604,8 +6572,8 @@
     "/ (depends on string to respond to #printCR)
 
     Stdout isNil ifTrue:[
-	self printString printCR.
-	^ self
+        self printString printCR.
+        ^ self
     ].
     self printOn:Stdout.
     Stdout cr
@@ -6833,9 +6801,9 @@
     |rslt|
 
     Error handle:[:ex |
-	rslt := exceptionBlock value
+        rslt := exceptionBlock value
     ] do:[
-	rslt := self printString
+        rslt := self printString
     ].
     ^ rslt
 !
@@ -6976,12 +6944,12 @@
     |myClass hasSemi sz "{ Class: SmallInteger }" |
 
     thisContext isRecursive ifTrue:[
-	Object recursiveStoreStringSignal raiseRequestWith:self.
-	'Object [error]: storeString of self referencing object (' errorPrint.
-	self class name errorPrint.
-	')' errorPrintCR.
-	aStream nextPutAll:'#("recursive")'.
-	^ self
+        Object recursiveStoreStringSignal raiseRequestWith:self.
+        'Object [error]: storeString of self referencing object (' errorPrint.
+        self class name errorPrint.
+        ')' errorPrintCR.
+        aStream nextPutAll:'#("recursive")'.
+        ^ self
     ].
 
     myClass := self class.
@@ -6990,34 +6958,34 @@
 
     hasSemi := false.
     myClass isVariable ifTrue:[
-	aStream nextPutAll:' basicNew:'.
-	self basicSize printOn:aStream
+        aStream nextPutAll:' basicNew:'.
+        self basicSize printOn:aStream
     ] ifFalse:[
-	aStream nextPutAll:' basicNew'
+        aStream nextPutAll:' basicNew'
     ].
 
     sz := myClass instSize.
     1 to:sz do:[:i |
-	aStream nextPutAll:' instVarAt:'.
-	i printOn:aStream.
-	aStream nextPutAll:' put:'.
-	(self instVarAt:i) storeOn:aStream.
-	aStream nextPut:$;.
-	hasSemi := true
+        aStream nextPutAll:' instVarAt:'.
+        i printOn:aStream.
+        aStream nextPutAll:' put:'.
+        (self instVarAt:i) storeOn:aStream.
+        aStream nextPut:$;.
+        hasSemi := true
     ].
     myClass isVariable ifTrue:[
-	sz := self basicSize.
-	1 to:sz do:[:i |
-	    aStream nextPutAll:' basicAt:'.
-	    i printOn:aStream.
-	    aStream nextPutAll:' put:'.
-	    (self basicAt:i) storeOn:aStream.
-	    aStream nextPut:$;.
-	    hasSemi := true
-	]
+        sz := self basicSize.
+        1 to:sz do:[:i |
+            aStream nextPutAll:' basicAt:'.
+            i printOn:aStream.
+            aStream nextPutAll:' put:'.
+            (self basicAt:i) storeOn:aStream.
+            aStream nextPut:$;.
+            hasSemi := true
+        ]
     ].
     hasSemi ifTrue:[
-	aStream nextPutAll:' yourself'
+        aStream nextPutAll:' yourself'
     ].
     aStream nextPut:$).
 
@@ -7116,43 +7084,43 @@
     nInstBytes = OHDR_SIZE + __OBJS2BYTES__( __intVal(__ClassInstPtr(myClass)->c_ninstvars) );
 
     switch ((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
-	case __MASKSMALLINT(POINTERARRAY):
-	case __MASKSMALLINT(WKPOINTERARRAY):
-	    nbytes -= nInstBytes;
-	    RETURN ( __mkSmallInteger(__BYTES2OBJS__(nbytes)) );
-
-	case __MASKSMALLINT(BYTEARRAY):
-	    nbytes -= nInstBytes;
-	    RETURN ( __mkSmallInteger(nbytes / sizeof(char)) );
-
-	case __MASKSMALLINT(FLOATARRAY):
-	    nbytes -= nInstBytes;
-	    RETURN ( __mkSmallInteger(nbytes / sizeof(float)) );
-
-	case __MASKSMALLINT(DOUBLEARRAY):
+        case __MASKSMALLINT(POINTERARRAY):
+        case __MASKSMALLINT(WKPOINTERARRAY):
+            nbytes -= nInstBytes;
+            RETURN ( __mkSmallInteger(__BYTES2OBJS__(nbytes)) );
+
+        case __MASKSMALLINT(BYTEARRAY):
+            nbytes -= nInstBytes;
+            RETURN ( __mkSmallInteger(nbytes / sizeof(char)) );
+
+        case __MASKSMALLINT(FLOATARRAY):
+            nbytes -= nInstBytes;
+            RETURN ( __mkSmallInteger(nbytes / sizeof(float)) );
+
+        case __MASKSMALLINT(DOUBLEARRAY):
 #ifdef __NEED_DOUBLE_ALIGN
-	    nInstBytes = (nInstBytes-1+__DOUBLE_ALIGN) &~ (__DOUBLE_ALIGN-1);
+            nInstBytes = (nInstBytes-1+__DOUBLE_ALIGN) &~ (__DOUBLE_ALIGN-1);
 #endif
-	    nbytes -= nInstBytes;
-	    RETURN ( __mkSmallInteger(nbytes / sizeof(double)) );
-
-	case __MASKSMALLINT(WORDARRAY):
-	case __MASKSMALLINT(SWORDARRAY):
-	    nbytes -= nInstBytes;
-	    RETURN ( __mkSmallInteger(nbytes>>1) ); /* notice the hardcoded 2 here - not sizeof(short) */
-
-	case __MASKSMALLINT(LONGARRAY):
-	case __MASKSMALLINT(SLONGARRAY):
-	    nbytes -= nInstBytes;
-	    RETURN ( __mkSmallInteger(nbytes>>2) ); /* notice the hardcoded 4 here - not sizeof(int) */
-
-	case __MASKSMALLINT(LONGLONGARRAY):
-	case __MASKSMALLINT(SLONGLONGARRAY):
+            nbytes -= nInstBytes;
+            RETURN ( __mkSmallInteger(nbytes / sizeof(double)) );
+
+        case __MASKSMALLINT(WORDARRAY):
+        case __MASKSMALLINT(SWORDARRAY):
+            nbytes -= nInstBytes;
+            RETURN ( __mkSmallInteger(nbytes>>1) ); /* notice the hardcoded 2 here - not sizeof(short) */
+
+        case __MASKSMALLINT(LONGARRAY):
+        case __MASKSMALLINT(SLONGARRAY):
+            nbytes -= nInstBytes;
+            RETURN ( __mkSmallInteger(nbytes>>2) ); /* notice the hardcoded 4 here - not sizeof(int) */
+
+        case __MASKSMALLINT(LONGLONGARRAY):
+        case __MASKSMALLINT(SLONGLONGARRAY):
 #ifdef __NEED_LONGLONG_ALIGN
-	    nInstBytes = (nInstBytes-1+__LONGLONG_ALIGN) &~ (__LONGLONG_ALIGN-1);
+            nInstBytes = (nInstBytes-1+__LONGLONG_ALIGN) &~ (__LONGLONG_ALIGN-1);
 #endif
-	    nbytes -= nInstBytes;
-	    RETURN ( __mkSmallInteger(nbytes>>3) ); /* notice the hardcoded 8 here - not sizeof(long long) */
+            nbytes -= nInstBytes;
+            RETURN ( __mkSmallInteger(nbytes>>3) ); /* notice the hardcoded 8 here - not sizeof(long long) */
     }
 %}.
     ^ 0
@@ -7169,36 +7137,36 @@
 
     myClass := self class.
     myClass isVariable ifTrue:[
-	myClass isPointers ifFalse:[
-	    myClass isBytes ifTrue:[
-		^ self basicSize.
-	    ].
-	    myClass isWords ifTrue:[
-		^ self basicSize * 2.
-	    ].
-	    myClass isSignedWords ifTrue:[
-		^ self basicSize * 2.
-	    ].
-	    myClass isLongs ifTrue:[
-		^ self basicSize * 4.
-	    ].
-	    myClass isSignedLongs ifTrue:[
-		^ self basicSize * 4.
-	    ].
-	    myClass isLongLongs ifTrue:[
-		^ self basicSize * 8.
-	    ].
-	    myClass isSignedLongLongs ifTrue:[
-		^ self basicSize * 8.
-	    ].
-	    myClass isFloats ifTrue:[
-		^ self basicSize * (ExternalBytes sizeofFloat)
-	    ].
-	    myClass isDoubles ifTrue:[
-		^ self basicSize * (ExternalBytes sizeofDouble)
-	    ].
-	    self error:'unknown variable size class species'.
-	]
+        myClass isPointers ifFalse:[
+            myClass isBytes ifTrue:[
+                ^ self basicSize.
+            ].
+            myClass isWords ifTrue:[
+                ^ self basicSize * 2.
+            ].
+            myClass isSignedWords ifTrue:[
+                ^ self basicSize * 2.
+            ].
+            myClass isLongs ifTrue:[
+                ^ self basicSize * 4.
+            ].
+            myClass isSignedLongs ifTrue:[
+                ^ self basicSize * 4.
+            ].
+            myClass isLongLongs ifTrue:[
+                ^ self basicSize * 8.
+            ].
+            myClass isSignedLongLongs ifTrue:[
+                ^ self basicSize * 8.
+            ].
+            myClass isFloats ifTrue:[
+                ^ self basicSize * (ExternalBytes sizeofFloat)
+            ].
+            myClass isDoubles ifTrue:[
+                ^ self basicSize * (ExternalBytes sizeofDouble)
+            ].
+            self error:'unknown variable size class species'.
+        ]
     ].
     ^ 0
 
@@ -7239,7 +7207,7 @@
 %{  /* NOCONTEXT */
 
     if (__lookup(__Class(self), aSelector) == nil) {
-	RETURN ( false );
+        RETURN ( false );
     }
     RETURN ( true );
 %}
@@ -7280,7 +7248,6 @@
     ^ self
 ! !
 
-
 !Object methodsFor:'secure message sending'!
 
 ?: selector
@@ -7346,17 +7313,17 @@
     |val ok|
 
     MessageNotUnderstood handle:[:ex |
-	"/ reject, if the bad message is not the one
-	"/ we have sent originally
-	(ex selector == aSelector and:[ex receiver == self]) ifFalse:[
-	    ex reject
-	].
+        "/ reject, if the bad message is not the one
+        "/ we have sent originally
+        (ex selector == aSelector and:[ex receiver == self]) ifFalse:[
+            ex reject
+        ].
     ] do:[
-	val := self perform:aSelector.
-	ok := true.
+        val := self perform:aSelector.
+        ok := true.
     ].
     ok isNil ifTrue:[
-	^ exceptionBlock value
+        ^ exceptionBlock value
     ].
     ^ val
 
@@ -7380,17 +7347,17 @@
     |val ok|
 
     MessageNotUnderstood handle:[:ex |
-	"/ reject, if the bad message is not the one
-	"/ we have sent originally
-	(ex selector == aSelector and:[ex receiver == self]) ifFalse:[
-	    ex reject
-	]
+        "/ reject, if the bad message is not the one
+        "/ we have sent originally
+        (ex selector == aSelector and:[ex receiver == self]) ifFalse:[
+            ex reject
+        ]
     ] do:[
-	val := self perform:aSelector with:argument.
-	ok := true.
+        val := self perform:aSelector with:argument.
+        ok := true.
     ].
     ok isNil ifTrue:[
-	^ exceptionBlock value
+        ^ exceptionBlock value
     ].
     ^ val
 
@@ -7417,17 +7384,17 @@
     |val ok|
 
     MessageNotUnderstood handle:[:ex |
-	"/ reject, if the bad message is not the one
-	"/ we have sent originally
-	(ex selector == aSelector and:[ex receiver == self]) ifFalse:[
-	    ex reject
-	]
+        "/ reject, if the bad message is not the one
+        "/ we have sent originally
+        (ex selector == aSelector and:[ex receiver == self]) ifFalse:[
+            ex reject
+        ]
     ] do:[
-	val := self perform:aSelector with:arg1 with:arg2.
-	ok := true.
+        val := self perform:aSelector with:arg1 with:arg2.
+        ok := true.
     ].
     ok isNil ifTrue:[
-	^ exceptionBlock value
+        ^ exceptionBlock value
     ].
     ^ val
 !
@@ -7445,17 +7412,17 @@
     |val ok|
 
     MessageNotUnderstood handle:[:ex |
-	"/ reject, if the bad message is not the one
-	"/ we have sent originally.
-	(ex selector == aSelector and:[ex receiver == self]) ifFalse:[
-	    ex reject
-	]
+        "/ reject, if the bad message is not the one
+        "/ we have sent originally.
+        (ex selector == aSelector and:[ex receiver == self]) ifFalse:[
+            ex reject
+        ]
     ] do:[
-	val := self perform:aSelector withArguments:argumentArray.
-	ok := true.
+        val := self perform:aSelector withArguments:argumentArray.
+        ok := true.
     ].
     ok isNil ifTrue:[
-	^ exceptionBlock value
+        ^ exceptionBlock value
     ].
     ^ val
 
@@ -7511,148 +7478,148 @@
     int nInsts, inst;
 
     if (! __isNonNilObject(self)) {
-	RETURN (false);
+        RETURN (false);
     }
 
     if (__isArrayLike(aCollection)) {
-	int nObjs = __arraySize(aCollection);
-	char *minAddr = 0, *maxAddr = 0;
-
-	if (nObjs == 0) {
-	    RETURN (false);
-	}
-
-	/*
-	 * a little optimization: use the fact that all old objects
-	 * refering to a new object are on the remSet; if I am not,
-	 * a trivial reject is possible, if all objects are newbees.
-	 * as a side effect, gather min/max addresses
-	 */
-	if ((__qSpace(self) <= OLDSPACE) && !__isRemembered(self)) {
-	    int allNewBees = 1;
-	    int i;
-
-	    minAddr = (char *)(__ArrayInstPtr(aCollection)->a_element[0]);
-	    maxAddr = minAddr;
-
-	    for (i=0; i<nObjs; i++) {
-		OBJ anObject;
-
-		anObject = __ArrayInstPtr(aCollection)->a_element[i];
-
-		if (__isNonNilObject(anObject)) {
-		    int spc;
-
-		    if (((spc = __qSpace(anObject)) != NEWSPACE) && (spc != SURVSPACE)) {
-			allNewBees = 0;
-		    }
-		}
-
-		if ((char *)anObject < minAddr) {
-		    minAddr = (char *)anObject;
-		} else if ((char *)anObject > maxAddr) {
-		    maxAddr = (char *)anObject;
-		}
-	    }
-	    if (allNewBees) {
-		RETURN (false);
-	    }
-	}
-
-	/*
-	 * fetch min/max in searchList (if not already done)
-	 */
-	if (minAddr == 0) {
-	    int i;
-
-	    for (i=0; i<nObjs; i++) {
-		OBJ anObject;
-
-		anObject = __ArrayInstPtr(aCollection)->a_element[i];
-		if ((char *)anObject < minAddr) {
-		    minAddr = (char *)anObject;
-		} else if ((char *)anObject > maxAddr) {
-		    maxAddr = (char *)anObject;
-		}
-	    }
-	}
-
-	cls = __qClass(self);
-	if (((char *)cls >= minAddr) && ((char *)cls <= maxAddr)) {
+        int nObjs = __arraySize(aCollection);
+        char *minAddr = 0, *maxAddr = 0;
+
+        if (nObjs == 0) {
+            RETURN (false);
+        }
+
+        /*
+         * a little optimization: use the fact that all old objects
+         * refering to a new object are on the remSet; if I am not,
+         * a trivial reject is possible, if all objects are newbees.
+         * as a side effect, gather min/max addresses
+         */
+        if ((__qSpace(self) <= OLDSPACE) && !__isRemembered(self)) {
+            int allNewBees = 1;
+            int i;
+
+            minAddr = (char *)(__ArrayInstPtr(aCollection)->a_element[0]);
+            maxAddr = minAddr;
+
+            for (i=0; i<nObjs; i++) {
+                OBJ anObject;
+
+                anObject = __ArrayInstPtr(aCollection)->a_element[i];
+
+                if (__isNonNilObject(anObject)) {
+                    int spc;
+
+                    if (((spc = __qSpace(anObject)) != NEWSPACE) && (spc != SURVSPACE)) {
+                        allNewBees = 0;
+                    }
+                }
+
+                if ((char *)anObject < minAddr) {
+                    minAddr = (char *)anObject;
+                } else if ((char *)anObject > maxAddr) {
+                    maxAddr = (char *)anObject;
+                }
+            }
+            if (allNewBees) {
+                RETURN (false);
+            }
+        }
+
+        /*
+         * fetch min/max in searchList (if not already done)
+         */
+        if (minAddr == 0) {
+            int i;
+
+            for (i=0; i<nObjs; i++) {
+                OBJ anObject;
+
+                anObject = __ArrayInstPtr(aCollection)->a_element[i];
+                if ((char *)anObject < minAddr) {
+                    minAddr = (char *)anObject;
+                } else if ((char *)anObject > maxAddr) {
+                    maxAddr = (char *)anObject;
+                }
+            }
+        }
+
+        cls = __qClass(self);
+        if (((char *)cls >= minAddr) && ((char *)cls <= maxAddr)) {
 #if defined(memsrch4)
-	    if (memsrch4(__arrayVal(aCollection), (INT)cls, nObjs)) {
-		RETURN (true);
-	    }
+            if (memsrch4(__arrayVal(aCollection), (INT)cls, nObjs)) {
+                RETURN (true);
+            }
 #else
-	    int i;
-
-	    for (i=0; i<nObjs; i++) {
-		OBJ anObject;
-
-		anObject = __ArrayInstPtr(aCollection)->a_element[i];
-		if (cls == anObject) {
-		    RETURN (true);
-		}
-	    }
+            int i;
+
+            for (i=0; i<nObjs; i++) {
+                OBJ anObject;
+
+                anObject = __ArrayInstPtr(aCollection)->a_element[i];
+                if (cls == anObject) {
+                    RETURN (true);
+                }
+            }
 #endif /* memsrch4 */
-	}
-
-	flags = __ClassInstPtr(cls)->c_flags;
-	if (((INT)flags & __MASKSMALLINT(ARRAYMASK)) == __MASKSMALLINT(POINTERARRAY)) {
-	    nInsts = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
-	} else {
-	    nInsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
-	}
-	if (! nInsts) {
-	    RETURN (false);
-	}
-
-	if (nObjs == 1) {
-	    /* better reverse the loop */
-	    OBJ anObject;
-
-	    anObject = __ArrayInstPtr(aCollection)->a_element[0];
+        }
+
+        flags = __ClassInstPtr(cls)->c_flags;
+        if (((INT)flags & __MASKSMALLINT(ARRAYMASK)) == __MASKSMALLINT(POINTERARRAY)) {
+            nInsts = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
+        } else {
+            nInsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
+        }
+        if (! nInsts) {
+            RETURN (false);
+        }
+
+        if (nObjs == 1) {
+            /* better reverse the loop */
+            OBJ anObject;
+
+            anObject = __ArrayInstPtr(aCollection)->a_element[0];
 #if defined(memsrch4)
-	    if (memsrch4(__InstPtr(self)->i_instvars, (INT)anObject, nInsts)) {
-		RETURN (true);
-	    }
+            if (memsrch4(__InstPtr(self)->i_instvars, (INT)anObject, nInsts)) {
+                RETURN (true);
+            }
 #else
-	    for (inst=0; inst<nInsts; inst++) {
-		if ((__InstPtr(self)->i_instvars[inst]) == anObject) {
-		    RETURN (true);
-		}
-	    }
+            for (inst=0; inst<nInsts; inst++) {
+                if ((__InstPtr(self)->i_instvars[inst]) == anObject) {
+                    RETURN (true);
+                }
+            }
 #endif
-	    RETURN (false);
-	}
-
-	for (inst=0; inst<nInsts; inst++) {
-	    OBJ instVar = __InstPtr(self)->i_instvars[inst];
-	    int i;
-
-	    if (((char *)instVar >= minAddr) && ((char *)instVar <= maxAddr)) {
+            RETURN (false);
+        }
+
+        for (inst=0; inst<nInsts; inst++) {
+            OBJ instVar = __InstPtr(self)->i_instvars[inst];
+            int i;
+
+            if (((char *)instVar >= minAddr) && ((char *)instVar <= maxAddr)) {
 #if defined(memsrch4)
-		if (memsrch4(__arrayVal(aCollection), (INT)instVar, nObjs)) {
-		    RETURN (true);
-		}
+                if (memsrch4(__arrayVal(aCollection), (INT)instVar, nObjs)) {
+                    RETURN (true);
+                }
 #else
-		for (i=0; i<nObjs; i++) {
-		    OBJ anObject;
-
-		    anObject = __ArrayInstPtr(aCollection)->a_element[i];
-		    if (instVar == anObject) {
-			RETURN (true);
-		    }
-		}
+                for (i=0; i<nObjs; i++) {
+                    OBJ anObject;
+
+                    anObject = __ArrayInstPtr(aCollection)->a_element[i];
+                    if (instVar == anObject) {
+                        RETURN (true);
+                    }
+                }
 #endif /* memsrch4 */
-	    }
-	}
-	RETURN (false);
+            }
+        }
+        RETURN (false);
     }
 %}.
 
     aCollection do:[:el |
-	(self referencesObject:el) ifTrue:[^ true].
+        (self referencesObject:el) ifTrue:[^ true].
     ].
     ^ false
 !
@@ -7672,19 +7639,19 @@
     "check the instance variables"
     numInst := myClass instSize.
     1 to:numInst do:[:i |
-	((self instVarAt:i) isKindOf:aClass) ifTrue:[^ true]
+        ((self instVarAt:i) isKindOf:aClass) ifTrue:[^ true]
     ].
 
     "check the indexed variables"
     myClass isVariable ifTrue:[
-	myClass isPointers ifFalse:[
-	    "no need to search in non pointer fields"
-	    ((aClass == Number) or:[aClass isSubclassOf:Number]) ifFalse:[^ false].
-	].
-	numInst := self basicSize.
-	1 to:numInst do:[:i |
-	    ((self basicAt:i) isKindOf:aClass) ifTrue:[^ true]
-	]
+        myClass isPointers ifFalse:[
+            "no need to search in non pointer fields"
+            ((aClass == Number) or:[aClass isSubclassOf:Number]) ifFalse:[^ false].
+        ].
+        numInst := self basicSize.
+        1 to:numInst do:[:i |
+            ((self basicAt:i) isKindOf:aClass) ifTrue:[^ true]
+        ]
     ].
     ^ false
 
@@ -7703,21 +7670,21 @@
     "check the instance variables"
     numInst := myClass instSize.
     1 to:numInst do:[:i |
-	inst := self instVarAt:i.
-	(checkBlock value:inst) ifTrue:[actionBlock value:inst].
+        inst := self instVarAt:i.
+        (checkBlock value:inst) ifTrue:[actionBlock value:inst].
     ].
 
     "check the indexed variables"
     myClass isVariable ifTrue:[
-	myClass isPointers ifTrue:[
-	    "no need to search in non pointer fields"
-
-	    numInst := self basicSize.
-	    1 to:numInst do:[:i |
-		inst := self basicAt:i.
-		(checkBlock value:inst) ifTrue:[actionBlock value:inst].
-	    ]
-	]
+        myClass isPointers ifTrue:[
+            "no need to search in non pointer fields"
+
+            numInst := self basicSize.
+            1 to:numInst do:[:i |
+                inst := self basicAt:i.
+                (checkBlock value:inst) ifTrue:[actionBlock value:inst].
+            ]
+        ]
     ].
 
     "
@@ -7741,24 +7708,24 @@
     "check the instance variables"
     numInst := myClass instSize.
     1 to:numInst do:[:i |
-	((self instVarAt:i) isMemberOf:aClass) ifTrue:[^ true]
+        ((self instVarAt:i) isMemberOf:aClass) ifTrue:[^ true]
     ].
 
     "check the indexed variables"
     myClass isVariable ifTrue:[
-	myClass isPointers ifFalse:[
-	    "no need to search in non-pointer indexed fields"
-	    myClass isLongs ifTrue:[
-		(aClass == SmallInteger or:[aClass == LargeInteger]) ifFalse:[^ false].
-	    ] ifFalse:[
-		myClass isFloatsOrDoubles ifTrue:[^ aClass == Float].
-		^ aClass == SmallInteger
-	    ]
-	].
-	numInst := self basicSize.
-	1 to:numInst do:[:i |
-	    ((self basicAt:i) isMemberOf:aClass) ifTrue:[^ true]
-	]
+        myClass isPointers ifFalse:[
+            "no need to search in non-pointer indexed fields"
+            myClass isLongs ifTrue:[
+                (aClass == SmallInteger or:[aClass == LargeInteger]) ifFalse:[^ false].
+            ] ifFalse:[
+                myClass isFloatsOrDoubles ifTrue:[^ aClass == Float].
+                ^ aClass == SmallInteger
+            ]
+        ].
+        numInst := self basicSize.
+        1 to:numInst do:[:i |
+            ((self basicAt:i) isMemberOf:aClass) ifTrue:[^ true]
+        ]
     ].
     ^ false
 
@@ -7778,7 +7745,7 @@
     int nInsts, i;
 
     if (! __isNonNilObject(self)) {
-	RETURN (false);
+        RETURN (false);
     }
 
     /*
@@ -7787,38 +7754,38 @@
      * a trivial reject is possible, if anObject is a newbee
      */
     if (__isNonNilObject(anObject)) {
-	if ((__qSpace(self) <= OLDSPACE) && !__isRemembered(self)) {
-	    int spc;
-
-	    if (((spc = __qSpace(anObject)) == NEWSPACE) || (spc == SURVSPACE)) {
-		RETURN (false);
-	    }
-	}
+        if ((__qSpace(self) <= OLDSPACE) && !__isRemembered(self)) {
+            int spc;
+
+            if (((spc = __qSpace(anObject)) == NEWSPACE) || (spc == SURVSPACE)) {
+                RETURN (false);
+            }
+        }
     }
 
     cls = __qClass(self);
     if (cls == anObject) {
-	RETURN (true);
+        RETURN (true);
     }
 
     flags = __ClassInstPtr(cls)->c_flags;
     if (((INT)flags & __MASKSMALLINT(ARRAYMASK)) == __MASKSMALLINT(POINTERARRAY)) {
-	nInsts = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
+        nInsts = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
     } else {
-	nInsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
+        nInsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
     }
     if (! nInsts) {
-	RETURN (false);
+        RETURN (false);
     }
 #if defined(memsrch4)
     if (memsrch4(__InstPtr(self)->i_instvars, (INT)anObject, nInsts)) {
-	RETURN (true);
+        RETURN (true);
     }
 #else
     for (i=0; i<nInsts; i++) {
-	if (__InstPtr(self)->i_instvars[i] == anObject) {
-	    RETURN (true);
-	}
+        if (__InstPtr(self)->i_instvars[i] == anObject) {
+            RETURN (true);
+        }
     }
 #endif /* memsrch4 */
 
@@ -7893,8 +7860,8 @@
 
     sema := self synchronizationSemaphore.
     sema notNil ifTrue:[
-	sema wait.              "/ get lock
-	self synchronizationSemaphore:nil.
+        sema wait.              "/ get lock
+        self synchronizationSemaphore:nil.
     ].
 
     "
@@ -7925,10 +7892,10 @@
      subclasses may redefine this method"
 
     aSemaphore isNil ifTrue:[
-	"/ remove Semaphore
-	SynchronizationSemaphores removeKey:self ifAbsent:nil.
+        "/ remove Semaphore
+        SynchronizationSemaphores removeKey:self ifAbsent:nil.
     ] ifFalse:[
-	SynchronizationSemaphores at:self put:aSemaphore.
+        SynchronizationSemaphores at:self put:aSemaphore.
     ].
 
     "Modified: 28.1.1997 / 19:37:48 / stefan"
@@ -7943,8 +7910,8 @@
 
     sema := self synchronizationSemaphore.
     sema isNil ifTrue:[
-	sema := RecursionLock new name:self className.
-	self synchronizationSemaphore:sema.
+        sema := RecursionLock new name:self className.
+        self synchronizationSemaphore:sema.
     ].
 
     wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
@@ -7983,7 +7950,7 @@
 
 %{  /* NOCONTEXT */
     if (! __isNonNilObject(self)) {
-	RETURN (self);
+        RETURN (self);
     }
     __beImmutable(self);
 %}
@@ -7994,7 +7961,7 @@
 
 %{  /* NOCONTEXT */
     if (! __isNonNilObject(self)) {
-	RETURN (self);
+        RETURN (self);
     }
     __beMutable(self);
 %}
@@ -8018,7 +7985,7 @@
       - the Collection-classes have been rewritten to not use it.)"
 %{
     if (__primBecome(self, anotherObject)) {
-	RETURN ( self );
+        RETURN ( self );
     }
 %}.
     self primitiveFailed
@@ -8034,7 +8001,7 @@
 
 %{
     if (__primBecomeNil(self)) {
-	RETURN ( nil );
+        RETURN ( nil );
     }
 %}.
     self primitiveFailed
@@ -8055,7 +8022,7 @@
      or nil, or is a context of a living method (i.e. one that has not already returned)."
 %{
     if (__primBecomeSameAs(self, anotherObject)) {
-	RETURN ( self );
+        RETURN ( self );
     }
 %}.
     self primitiveFailed
@@ -8076,72 +8043,72 @@
     "check for UndefinedObject/SmallInteger receiver or newClass"
 %{
     {
-	OBJ other = otherClass;
-
-	if (__isNonNilObject(self)
-	 && __isNonNilObject(other)
-	 && (other != UndefinedObject)
-	 && (other != SmallInteger)) {
-	    ok = true;
-	} else {
-	    ok = false;
-	}
+        OBJ other = otherClass;
+
+        if (__isNonNilObject(self)
+         && __isNonNilObject(other)
+         && (other != UndefinedObject)
+         && (other != SmallInteger)) {
+            ok = true;
+        } else {
+            ok = false;
+        }
     }
 %}.
     ok ifTrue:[
-	ok := false.
-	myClass := self class.
-	myClass flags == otherClass flags ifTrue:[
-	    myClass instSize == otherClass instSize ifTrue:[
-		"same instance layout and types: its ok to do it"
-		ok := true.
-	    ] ifFalse:[
-		myClass isPointers ifTrue:[
-		    myClass isVariable ifTrue:[
-			ok := true
-		    ]
-		]
-	    ]
-	] ifFalse:[
-	    myClass isPointers ifTrue:[
-		"if newClass is a variable class, with instSize <= my instsize,
-		 we can do it (effectively mapping additional instvars into the
-		 variable part) - usefulness is questionable, though"
-
-		otherClass isPointers ifTrue:[
-		    otherClass isVariable ifTrue:[
-			otherClass instSize <= (myClass instSize + self basicSize)
-			ifTrue:[
-			    ok := true
-			]
-		    ] ifFalse:[
-			otherClass instSize == (myClass instSize + self basicSize)
-			ifTrue:[
-			    ok := true
-			]
-		    ]
-		] ifFalse:[
-		    "it does not make sense to convert pointers to bytes ..."
-		]
-	    ] ifFalse:[
-		"does it make sense, to convert bits ?"
-		"could allow byteArray->wordArray->longArray->floatArray->doubleArray here ..."
-		(myClass isBitsExtended and:[otherClass isBitsExtended]) ifTrue:[
-		    ok := true
-		]
-	    ]
-	]
+        ok := false.
+        myClass := self class.
+        myClass flags == otherClass flags ifTrue:[
+            myClass instSize == otherClass instSize ifTrue:[
+                "same instance layout and types: its ok to do it"
+                ok := true.
+            ] ifFalse:[
+                myClass isPointers ifTrue:[
+                    myClass isVariable ifTrue:[
+                        ok := true
+                    ]
+                ]
+            ]
+        ] ifFalse:[
+            myClass isPointers ifTrue:[
+                "if newClass is a variable class, with instSize <= my instsize,
+                 we can do it (effectively mapping additional instvars into the
+                 variable part) - usefulness is questionable, though"
+
+                otherClass isPointers ifTrue:[
+                    otherClass isVariable ifTrue:[
+                        otherClass instSize <= (myClass instSize + self basicSize)
+                        ifTrue:[
+                            ok := true
+                        ]
+                    ] ifFalse:[
+                        otherClass instSize == (myClass instSize + self basicSize)
+                        ifTrue:[
+                            ok := true
+                        ]
+                    ]
+                ] ifFalse:[
+                    "it does not make sense to convert pointers to bytes ..."
+                ]
+            ] ifFalse:[
+                "does it make sense, to convert bits ?"
+                "could allow byteArray->wordArray->longArray->floatArray->doubleArray here ..."
+                (myClass isBitsExtended and:[otherClass isBitsExtended]) ifTrue:[
+                    ok := true
+                ]
+            ]
+        ]
     ].
     ok ifTrue:[
-	"now, change the receivers class ..."
+        "now, change the receivers class ..."
 %{
-	{
-	    OBJ me = self;
-
-	    __qClass(me) = otherClass;
-	    __STORE(me, otherClass);
-	    RETURN (me);
-	}
+        {
+            OBJ me = self;
+
+            __qClass(me) = otherClass;
+            __STORE(me, otherClass);
+            RETURN (me);
+        }
 %}.
     ].
 
@@ -8169,7 +8136,7 @@
 
 %{  /* NOCONTEXT */
     if (! __isNonNilObject(self)) {
-	RETURN (true);
+        RETURN (true);
     }
     RETURN (__isImmutable(self) ? true : false);
 %}
@@ -8185,7 +8152,7 @@
     int nInsts, i;
 
     if (! __isNonNilObject(self)) {
-	RETURN (false);
+        RETURN (false);
     }
 
     /*
@@ -8194,33 +8161,33 @@
      * a trivial reject is possible, if anObject is a newbee
      */
     if (__isNonNilObject(anObject)) {
-	if ((__qSpace(self) <= OLDSPACE) && !__isRemembered(self)) {
-	    int spc;
-
-	    if (((spc = __qSpace(anObject)) == NEWSPACE) || (spc == SURVSPACE)) {
-		RETURN (false);
-	    }
-	}
+        if ((__qSpace(self) <= OLDSPACE) && !__isRemembered(self)) {
+            int spc;
+
+            if (((spc = __qSpace(anObject)) == NEWSPACE) || (spc == SURVSPACE)) {
+                RETURN (false);
+            }
+        }
     }
 
     cls = __qClass(self);
 
     flags = __ClassInstPtr(cls)->c_flags;
     if (((INT)flags & __MASKSMALLINT(ARRAYMASK)) == __MASKSMALLINT(POINTERARRAY)) {
-	nInsts = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
+        nInsts = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
     } else {
-	nInsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
+        nInsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
     }
     if (! nInsts) {
-	RETURN (false);
+        RETURN (false);
     }
     anyChange = false;
     for (i=0; i<nInsts; i++) {
-	if (__InstPtr(self)->i_instvars[i] == anObject) {
-	    __InstPtr(self)->i_instvars[i] = newRef;
-	    __STORE(self, newRef);
-	    anyChange = true;
-	}
+        if (__InstPtr(self)->i_instvars[i] == anObject) {
+            __InstPtr(self)->i_instvars[i] = newRef;
+            __STORE(self, newRef);
+            anyChange = true;
+        }
     }
     RETURN (anyChange);
 %}.
@@ -8244,27 +8211,27 @@
       the recevier is retuned here.
 
       Thus, if foo and bar are simple variables or constants,
-	  foo ? bar
+          foo ? bar
       is the same as:
-	  (foo isNil ifTrue:[bar] ifFalse:[foo])
+          (foo isNil ifTrue:[bar] ifFalse:[foo])
 
       if they are message sends, the equivalent code is:
-	  [
-	      |t1 t2|
-
-	      t1 := foo.
-	      t2 := bar.
-	      t1 isNil ifTrue:[t2] ifFalse:[t1]
-	  ] value
+          [
+              |t1 t2|
+
+              t1 := foo.
+              t2 := bar.
+              t1 isNil ifTrue:[t2] ifFalse:[t1]
+          ] value
 
       Can be used to provide defaultValues to variables,
       as in:
-	  foo := arg ? #defaultValue
+          foo := arg ? #defaultValue
 
       Note: this method should never be redefined in classes other than UndefinedObject.
       Notice:
-	 This method is open coded (inlined) by the compiler(s)
-	 - redefining it may not work as expected."
+         This method is open coded (inlined) by the compiler(s)
+         - redefining it may not work as expected."
 
     ^ self
 
@@ -8287,21 +8254,21 @@
       the recevier is retuned here.
 
       Thus, if foo and bar are simple variables or constants,
-	  foo ?? bar
+          foo ?? bar
       is the same as:
-	  (foo isNil ifTrue:[bar value] ifFalse:[foo])
+          (foo isNil ifTrue:[bar value] ifFalse:[foo])
 
       if they are message sends, the equivalent code is:
-	  [
-	      |t t2|
-
-	      t := foo.
-	      t isNil ifTrue:[bar value] ifFalse:[t]
-	  ] value
+          [
+              |t t2|
+
+              t := foo.
+              t isNil ifTrue:[bar value] ifFalse:[t]
+          ] value
 
       Can be used to provide defaultValues to variables,
       as in:
-	  foo := arg ?? [ self computeDefault ]
+          foo := arg ?? [ self computeDefault ]
 
       Note: this method should never be redefined in classes other than UndefinedObject.
      "
@@ -8326,8 +8293,8 @@
      This is much like #?, but sends #value to the argument in case of a nil
      receiver.
      Notice:
-	This method is open coded (inlined) by the compiler(s)
-	- redefining it may not work as expected."
+        This method is open coded (inlined) by the compiler(s)
+        - redefining it may not work as expected."
 
     ^ self
 !
@@ -8336,8 +8303,8 @@
     "return the value of the first arg, if I am nil,
      the result from evaluating the 2nd argument, if I am not nil.
      Notice:
-	This method is open coded (inlined) by the compiler(s)
-	- redefining it may not work as expected."
+        This method is open coded (inlined) by the compiler(s)
+        - redefining it may not work as expected."
 
     ^ notNilBlockOrValue value
 
@@ -8347,8 +8314,8 @@
     "return myself if nil, or the result from evaluating the argument,
      if I am not nil.
      Notice:
-	This method is open coded (inlined) by the compiler(s)
-	- redefining it may not work as expected."
+        This method is open coded (inlined) by the compiler(s)
+        - redefining it may not work as expected."
 
     ^ aBlockOrValue value
 
@@ -8358,8 +8325,8 @@
     "return the value of the 2nd arg, if I am nil,
      the result from evaluating the 1st argument, if I am not nil.
      Notice:
-	This method is open coded (inlined) by the compiler(s)
-	- redefining it may not work as expected."
+        This method is open coded (inlined) by the compiler(s)
+        - redefining it may not work as expected."
 
     ^ notNilBlockOrValue value
 
@@ -8711,21 +8678,21 @@
     "return true, if the receiver is an instance of aClass or one of its
      subclasses, false otherwise.
      Advice:
-	use of this to check objects for certain attributes/protocoll should
-	be avoided; it limits the reusability of your classes by limiting use
-	to instances of certain classes and fences you into a specific inheritance
-	hierarchy.
-	Use check-methods to check an object for a certain attributes/protocol
-	(such as #isXXXX, #respondsTo: or #isNumber).
-
-	Using #isKindOf: is considered BAD STYLE.
+        use of this to check objects for certain attributes/protocoll should
+        be avoided; it limits the reusability of your classes by limiting use
+        to instances of certain classes and fences you into a specific inheritance
+        hierarchy.
+        Use check-methods to check an object for a certain attributes/protocol
+        (such as #isXXXX, #respondsTo: or #isNumber).
+
+        Using #isKindOf: is considered BAD STYLE.
 
      Advice2:
-	Be aware, that using an #isXXX method is usually much faster than
-	using #isKindOf:; because isKindOf: has to walk up all the superclass
-	hierarchy, comparing every class on the way.
-	Due to caching in the VM, a call to #isXXX is normally reached via
-	a single function call.
+        Be aware, that using an #isXXX method is usually much faster than
+        using #isKindOf:; because isKindOf: has to walk up all the superclass
+        hierarchy, comparing every class on the way.
+        Due to caching in the VM, a call to #isXXX is normally reached via
+        a single function call.
      "
 
 %{  /* NOCONTEXT */
@@ -8733,10 +8700,10 @@
 
     thisClass = __Class(self);
     while (thisClass != nil) {
-	if (thisClass == aClass) {
-	    RETURN ( true );
-	}
-	thisClass = __ClassInstPtr(thisClass)->c_superclass;
+        if (thisClass == aClass) {
+            RETURN ( true );
+        }
+        thisClass = __ClassInstPtr(thisClass)->c_superclass;
     }
     RETURN ( false );
 %}
@@ -8791,16 +8758,16 @@
 isMemberOf:aClass
     "return true, if the receiver is an instance of aClass, false otherwise.
      Advice:
-	use of this to check objects for certain attributes/protocol should
-	be avoided; it limits the reusability of your classes by limiting use
-	to instances of a certain class.
-	Use check-methods to check an object for a certain attributes/protocol
-	(such as #isXXX, #respondsTo: or #isNumber);
-
-	Using #isMemberOf: is considered BAD STYLE.
+        use of this to check objects for certain attributes/protocol should
+        be avoided; it limits the reusability of your classes by limiting use
+        to instances of a certain class.
+        Use check-methods to check an object for a certain attributes/protocol
+        (such as #isXXX, #respondsTo: or #isNumber);
+
+        Using #isMemberOf: is considered BAD STYLE.
      Notice:
-	This method is open coded (inlined) by the compiler(s)
-	- redefining it may not work as expected."
+        This method is open coded (inlined) by the compiler(s)
+        - redefining it may not work as expected."
 
     ^ (self class) == aClass
 !
@@ -8851,8 +8818,8 @@
      Because isNil is redefined in UndefinedObject,
      the receiver is definitely not nil here, so unconditionally return false.
      Notice:
-	This method is open coded (inlined) by the compiler(s)
-	- redefining it may not work as expected."
+        This method is open coded (inlined) by the compiler(s)
+        - redefining it may not work as expected."
 
     ^ false
 !
@@ -8875,11 +8842,11 @@
     ^ false
 
     "
-	21 isNonByteCollection
-	'abc' isNonByteCollection
-	#'abc' isNonByteCollection
-	#[1 2 3] isNonByteCollection
-	#(1 2 3) isNonByteCollection
+        21 isNonByteCollection
+        'abc' isNonByteCollection
+        #'abc' isNonByteCollection
+        #[1 2 3] isNonByteCollection
+        #(1 2 3) isNonByteCollection
     "
 !
 
@@ -9101,8 +9068,8 @@
      Because notNil is redefined in UndefinedObject,
      the receiver is definitely not nil here, so unconditionally return true.
      Notice:
-	This method is open coded (inlined) by the compiler(s)
-	- redefining it may not work as expected."
+        This method is open coded (inlined) by the compiler(s)
+        - redefining it may not work as expected."
 
     ^ true
 ! !
@@ -9131,7 +9098,7 @@
      It could also be put into some logfile or printed on the standard output/error."
 
     ActivityNotification isHandled ifTrue:[
-	^ ActivityNotification raiseRequestWith:self errorString:aString
+        ^ ActivityNotification raiseRequestWith:self errorString:aString
     ].
 
     "
@@ -9141,12 +9108,12 @@
 
     "
      ActivityNotification handle:[:ex |
-	ex errorString printCR.
-	ex proceed.
+        ex errorString printCR.
+        ex proceed.
      ] do:[
-	'hello' printCR.
-	self activityNotification:'doing some long time computation'.
-	'world' printCR.
+        'hello' printCR.
+        self activityNotification:'doing some long time computation'.
+        'world' printCR.
      ]
     "
 
@@ -9178,7 +9145,7 @@
 
     answer := self confirmWithCancel:aString.
     answer isNil ifTrue:[
-	^ cancelBlock value
+        ^ cancelBlock value
     ].
     ^ answer
 
@@ -9214,10 +9181,10 @@
      by handling the UserConfirmation."
 
     ^ UserConfirmation new
-	defaultAnswer:defaultAnswerOrNil;
-	canCancel:true;
-	errorString:aString;
-	raiseRequest
+        defaultAnswer:defaultAnswerOrNil;
+        canCancel:true;
+        errorString:aString;
+        raiseRequest
 
     "
      nil confirmWithCancel:'hello' defaultAnswer:true
@@ -9230,9 +9197,9 @@
      and give user a chance to enter debugger."
 
     ^ self
-	errorNotify:aString
-	from:thisContext sender
-	allowDebug:true
+        errorNotify:aString
+        from:thisContext sender
+        allowDebug:true
 
     "
      nil errorNotify:'hello there'
@@ -9282,8 +9249,10 @@
         sender := aContext.
         Debugger isNil ifTrue:[
             '****************** Cought Error while in SystemProcess ****************' errorPrintCR.
+            aString errorPrintCR.
             Exception handle:[:ex |
-                'Cought recursive error while printing backtrace' errorPrintCR.
+                'Cought recursive error while printing backtrace:' errorPrintCR.
+                ex description errorPrintCR.
             ] do:[
                 thisContext fullPrintAll.
             ].
@@ -9389,8 +9358,8 @@
     "
 
     "Created: / 17-08-1998 / 10:09:26 / cg"
-    "Modified: / 09-12-2010 / 10:22:34 / cg"
     "Modified: / 08-08-2011 / 11:26:17 / sr"
+    "Modified: / 05-12-2011 / 03:50:59 / cg"
 !
 
 information:aString
@@ -9410,12 +9379,12 @@
 
     "
      InformationSignal handle:[:ex |
-	'no box popped' printCR.
-	ex proceed.
+        'no box popped' printCR.
+        ex proceed.
      ] do:[
-	'hello' printCR.
-	self information:'some info'.
-	'world' printCR.
+        'hello' printCR.
+        self information:'some info'.
+        'world' printCR.
      ]
     "
 
@@ -9430,9 +9399,9 @@
 
 
     Smalltalk isInitialized ifFalse:[
-	"/ thisContext fullPrintAll.
-	'information: ' print. aString printCR.
-	^ self
+        "/ thisContext fullPrintAll.
+        'information: ' print. aString printCR.
+        ^ self
     ].
     UserNotification raiseRequestWith:self errorString:aString.
 
@@ -9460,12 +9429,12 @@
 
     "
      Warning handle:[:ex |
-	Transcript showCR:ex description.
-	ex proceed.
+        Transcript showCR:ex description.
+        ex proceed.
      ] do:[
-	'hello' printCR.
-	self warn:'some info'.
-	'world' printCR.
+        'hello' printCR.
+        self warn:'some info'.
+        'world' printCR.
      ]
     "
 
@@ -9490,13 +9459,14 @@
 !Object class methodsFor:'documentation'!
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/Object.st,v 1.678 2011/11/02 13:16:07 stefan Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/Object.st,v 1.683 2011/12/05 10:53:26 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: Object.st 10741 2011-11-26 08:36:46Z vranyj1 $'
+    ^ '$Id: Object.st 10751 2011-12-21 22:04:49Z vranyj1 $'
 ! !
 
 Object initialize!
 
 
+
--- a/ProjectDefinition.st	Fri Dec 09 23:15:57 2011 +0000
+++ b/ProjectDefinition.st	Wed Dec 21 22:04:49 2011 +0000
@@ -1291,8 +1291,8 @@
     ].
 
     "
-     self legalCopyright_code
-     stx_libbasic3 legalCopyright_code
+     self applicationIconFileName_code
+     stx_libbasic3 applicationIconFileName_code
     "
 
     "Created: / 18-08-2006 / 16:21:01 / cg"
@@ -1636,30 +1636,27 @@
 	forEachContentsMethodsCodeToCompileDo:aTwoArgBlock
 	ignoreOldDefinition:ignoreOldDefinition.
 
-    (self class includesSelector:#description) ifFalse:[
-	aTwoArgBlock
-	    value: self description_code
-	    value: 'description - project information'.
-    ].
-    (self class includesSelector:#productName) ifFalse:[
-	aTwoArgBlock
-	    value: self productName_code
-	    value: 'description - project information'.
-    ].
-    (self class includesSelector:#companyName) ifFalse:[
-	aTwoArgBlock
-	    value: self companyName_code
-	    value: 'description - project information'.
-    ].
-    (self class includesSelector:#legalCopyright) ifFalse:[
-	aTwoArgBlock
-	    value: self legalCopyright_code
-	    value: 'description - project information'.
-    ].
-    (self class includesSelector:#applicationIconFileName) ifFalse:[
-	aTwoArgBlock
-	    value: self applicationIconFileName_code
-	    value: 'description - project information'.
+    "/  code like:
+    "/
+    "/ (self class includesSelector:#productName) ifFalse:[
+    "/     aTwoArgBlock
+    "/         value: self productName_code
+    "/         value: 'description - project information'.
+    "/ ].
+
+    #(
+        (productName productName_code)
+        (description description_code)
+        (companyName companyName_code)
+        (legalCopyright legalCopyright_code)
+        (applicationIconFileName applicationIconFileName_code)
+        (productInstallDirBaseName productInstallDirBaseName_code)
+    ) pairsDo:[:selector :codeMethodSelector |
+        (self class includesSelector:selector) ifFalse:[
+            aTwoArgBlock
+                value: (self perform:codeMethodSelector)
+                value: 'description - project information'.
+        ].
     ].
 
     (self monticelloPackageName notNil and:[self respondsTo:#monticelloTimestamps_code]) ifTrue:[
@@ -1669,8 +1666,8 @@
     ].
 
     "Created: / 18-08-2006 / 16:22:37 / cg"
-    "Modified: / 10-10-2006 / 22:02:24 / cg"
     "Modified: / 09-11-2010 / 18:41:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-12-2011 / 16:42:41 / cg"
 !
 
 legalCopyright_code
@@ -1756,6 +1753,24 @@
     "Modified: / 09-10-2006 / 14:27:20 / cg"
 !
 
+productInstallDirBaseName_code
+    ^ String streamContents:[:s |
+        s nextPutLine:'productInstallDirBaseName'.
+        s nextPutLine:'    "Returns a default installDir which will appear in <app>.nsi.'.
+        s nextPutLine:'     This is usually not the one you want to keep"'.
+        s cr;
+        nextPutLine:'    ^ (self package asCollectionOfSubstringsSeparatedByAny:'':/'') last'.
+    ].
+
+    "
+     self productInstallDirBaseName_code
+     stx_libbasic3 productInstallDirBaseName_code
+     stx_clients_Clock_QlockTwoWatchApplication productInstallDirBaseName_code
+    "
+
+    "Created: / 21-12-2011 / 16:38:11 / cg"
+!
+
 productName_code
     ^ self productName_codeFor:(self productName)
 
@@ -2567,13 +2582,27 @@
 !
 
 productInstallDir
-    "Returns a product default installDir which will appear in <app>.nsi."
-
-    ^ '$PROGRAMFILES\',self module
+    "Returns a default installDir which will appear in <app>.nsi."
+
+    ^ '$PROGRAMFILES\',(self productInstallDirBaseName).
+
+    "
+     stx_projects_smalltalk productInstallDir
+     stx_clients_Clock_QlockTwoWatchApplication productInstallDir
+    "
 
     "Created: / 14-09-2006 / 21:23:01 / cg"
 !
 
+productInstallDirBaseName
+    "Returns a default installDir which will appear in <app>.nsi.
+     This is usually not the one you want to keep"
+
+    ^ self module
+
+    "Created: / 21-12-2011 / 16:31:38 / cg"
+!
+
 productLicense
     "Returns the license (for autopackage)"
 
@@ -4114,10 +4143,10 @@
 "/    includes:self package) ifTrue:[
 "/        ^ '-H$(INCLUDE)'
 "/    ].
-    ^ '-H.'
+    ^ '--headerDir=.'
 
     "Created: / 18-08-2006 / 13:01:52 / cg"
-    "Modified: / 14-09-2006 / 15:38:25 / cg"
+    "Modified: / 06-12-2011 / 21:23:51 / cg"
 !
 
 objectLine_make_dot_spec_mappings: aClassName
@@ -4386,7 +4415,7 @@
 
 
 # Argument(s) to the stc compiler (stc --usage).
-#  -H.         : create header files locally
+#  --headerDir=. : create header files locally
 #                (if removed, they will be created as common
 #  -Pxxx       : defines the package
 #  -Zxxx       : a prefix for variables within the classLib
@@ -4424,7 +4453,7 @@
 
     "Created: / 08-08-2006 / 19:31:29 / fm"
     "Modified: / 09-08-2006 / 15:10:57 / fm"
-    "Modified: / 27-09-2011 / 19:34:41 / cg"
+    "Modified: / 06-12-2011 / 21:24:20 / cg"
 !
 
 makefile
@@ -6713,15 +6742,16 @@
 !ProjectDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ProjectDefinition.st 10744 2011-11-27 21:35:08Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.375 2011/12/21 15:44:44 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.373 2011/11/25 15:43:49 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.375 2011/12/21 15:44:44 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: ProjectDefinition.st 10744 2011-11-27 21:35:08Z vranyj1 $'
+    ^ '$Id: ProjectDefinition.st 10751 2011-12-21 22:04:49Z vranyj1 $'
 ! !
 
 ProjectDefinition initialize!
+
--- a/ReadEvalPrintLoop.st	Fri Dec 09 23:15:57 2011 +0000
+++ b/ReadEvalPrintLoop.st	Wed Dec 21 22:04:49 2011 +0000
@@ -174,6 +174,7 @@
         processes .......... processes
         memory ............. memory usage
         flags .............. flags
+        modules ............ loaded modules
     #set/clear <flag> ... set or clear a flag
         trace .............. tracing execution
         timing ............. timing execution
@@ -210,8 +211,11 @@
 !
 
 cmd_show:lineStream
-    |what|
+    |what all printModule|
 
+"
+ self basicNew cmd_show:'packages' readStream
+"
     lineStream skipSeparators.
     what := lineStream nextAlphaNumericWord.
     (what startsWith:'var') ifTrue:[
@@ -221,9 +225,33 @@
         MiniDebugger basicNew showProcesses.
         ^ self.
     ].
+    (what startsWith:'mod') ifTrue:[
+        printModule := 
+            [:mod |
+                self errorStream
+                    nextPutAll:'  ';
+                    nextPutAll:(mod package "libraryName");
+                    nextPutLine:' (',(mod type),')'.
+            ].
+
+        self errorStream nextPutLine:'builtIn:'.
+        ((ObjectMemory binaryModuleInfo 
+            select:[:m | m dynamic not])
+                asSortedCollection:[:a :b | a name < b name]) do:printModule.
+
+        self errorStream nextPutLine:'dynamic:'.
+        ((ObjectMemory binaryModuleInfo 
+            select:[:m | m dynamic])
+                asSortedCollection:[:a :b | a name < b name]) do:printModule.
+
+        ^ self.
+    ].
     (what startsWith:'mem') ifTrue:[
+        all := ObjectMemory oldSpaceUsed + ObjectMemory symSpaceUsed
+                                         + ObjectMemory newSpaceUsed.
         self errorStream 
-            nextPutLine:('overall: ',(ObjectMemory bytesUsed // 1024) printString,' Kb');
+            nextPutLine:('overall: ',(all // 1024) printString,' Kb');
+            nextPutLine:('in use : ',(ObjectMemory bytesUsed // 1024) printString,' Kb');
             nextPutLine:('free   : ',(ObjectMemory freeSpace // 1024) printString,' Kb');
             nextPutLine:('minorGC: ',(ObjectMemory scavengeCount) printString);
             nextPutLine:('majorGC: ',(ObjectMemory garbageCollectCount) printString).
@@ -238,15 +266,24 @@
 
     self errorStream nextPutLine:'?? show what ?'.
 
-    "Modified: / 07-12-2006 / 19:23:15 / cg"
+    "Modified: / 07-12-2011 / 22:15:07 / cg"
 !
 
 cmd_use:lineStream
-    |pkg|
+    |pkg ok|
 
     lineStream skipSeparators.
     pkg := lineStream upToEnd withoutSeparators.
-    Smalltalk loadPackage:pkg
+    (ok := Smalltalk loadPackage:pkg) ifFalse:[
+        "/ allow for some shortcuts...
+        (pkg includes:$:) ifFalse:[
+            "/ try stx standard package
+            ok := Smalltalk loadPackage:('stx:',pkg)
+        ].
+    ].
+    ok ifFalse:[
+        ('Failed to load package: "',pkg,'"') infoPrintCR.
+    ].
 
     "Created: / 07-12-2006 / 19:07:56 / cg"
 !
@@ -355,11 +392,23 @@
                         error nextPutLine:('Evaluation aborted: ', ex description).
                         ex return.
                     ] do:[
-                        |value|
+                        |value t|
 
-                        value := (compilerClass new requestor:self) evaluate:chunk compile:true.
+                        t := Time millisecondsToRun:[
+                            value := (compilerClass new requestor:self) evaluate:chunk compile:true.
+                        ].
                         value printOn:output.
                         output cr.
+                        timingFlag == true ifTrue:[
+                            'execution time: ' printOn:output.
+                            t = 0 ifTrue:[
+                                'too small to measure (<1ms)' printOn:output.
+                            ] ifFalse:[
+                                t printOn:output.
+                                'ms' printOn:output.
+                            ].
+                            output cr.
+                        ].
                     ].
                 ].
             ].
@@ -371,20 +420,21 @@
     "
 
     "Created: / 07-12-2006 / 17:27:21 / cg"
-    "Modified: / 06-10-2011 / 21:02:22 / cg"
+    "Modified: / 06-12-2011 / 15:29:03 / cg"
 ! !
 
 !ReadEvalPrintLoop class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ReadEvalPrintLoop.st,v 1.29 2011/10/06 19:02:31 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ReadEvalPrintLoop.st,v 1.39 2011/12/07 21:16:18 cg Exp $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/ReadEvalPrintLoop.st,v 1.29 2011/10/06 19:02:31 cg Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/ReadEvalPrintLoop.st,v 1.39 2011/12/07 21:16:18 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: ReadEvalPrintLoop.st 10729 2011-10-31 22:19:21Z vranyj1 $'
+    ^ '$Id: ReadEvalPrintLoop.st 10751 2011-12-21 22:04:49Z vranyj1 $'
 ! !
 
+
--- a/Smalltalk.st	Fri Dec 09 23:15:57 2011 +0000
+++ b/Smalltalk.st	Wed Dec 21 22:04:49 2011 +0000
@@ -2750,27 +2750,27 @@
     "/ If that happens, we restart the set-building here
     "/
     [(classes := CachedClasses) isNil] whileTrue:[
-	CachedClasses := classes := IdentitySet new:NumberOfClassesHint.
-	self keysAndValuesDo:[:eachName :eachGlobal |
-	    (eachGlobal notNil and:[eachGlobal isBehavior]) ifTrue:[
-		"/ sigh - would like to skip over aliases
-		"/ but this cannot be done simply by comparing
-		"/ the classes name against the store-key
-		"/ i.e. cannot do:
-		"/      anObject name == sym ifTrue:[
-		"/          classes add:anObject
-		"/      ]
-		"/ because that would lead to ignore all java
-		"/ classes, which are stored under a different
-		"/ key.
-
-		(eachGlobal name == eachName
-		 or:[eachGlobal isJavaClass]) ifTrue:[
-		    classes add:eachGlobal
-		].
-	    ]
-	].
-	NumberOfClassesHint := classes size.
+        CachedClasses := classes := IdentitySet new:NumberOfClassesHint.
+        self keysAndValuesDo:[:eachName :eachGlobal |
+            (eachGlobal notNil and:[eachGlobal isBehavior]) ifTrue:[
+                "/ sigh - would like to skip over aliases
+                "/ but this cannot be done simply by comparing
+                "/ the classes name against the store-key
+                "/ i.e. cannot do:
+                "/      anObject name == sym ifTrue:[
+                "/          classes add:anObject
+                "/      ]
+                "/ because that would lead to ignore all java
+                "/ classes, which are stored under a different
+                "/ key.
+
+                (eachGlobal name == eachName
+                 or:[eachGlobal isJavaClass]) ifTrue:[
+                    classes add:eachGlobal
+                ].
+            ]
+        ].
+        NumberOfClassesHint := classes size.
     ].
     ^ classes
 
@@ -2783,7 +2783,7 @@
      Smalltalk allClasses asSortedCollection:[:a :b | a name < b name]
     "
 
-    "Modified: / 23.2.2000 / 10:49:46 / cg"
+    "Modified: / 06-12-2011 / 12:41:42 / cg"
 !
 
 allClassesAndMetaclasses
@@ -3530,42 +3530,43 @@
     thisIsARestart := imageName notNil.
 
     graphicalMode ifTrue:[
-	Display isNil ifTrue:[
-	    (StartupClass notNil
-	    and:[ (StartupClass perform:#isHeadless ifNotUnderstood:false) ]) ifFalse:[
-		self openDisplay.
-	    ].
-	].
+        Display isNil ifTrue:[
+            (StartupClass notNil
+            and:[ (StartupClass perform:#isHeadless ifNotUnderstood:false) ]) ifFalse:[
+                self openDisplay.
+            ].
+        ].
     ].
 
     StandAlone ifFalse:[
-	"
-	 enable the graphical debugger/inspector
-	 (they could have been (re)defined as autoloaded in the patches file)
-	"
-	self initStandardTools.
+        "
+         enable the graphical debugger/inspector
+         (they could have been (re)defined as autoloaded in the patches file)
+        "
+        self initStandardTools.
     ].
 
     "
      if there is a display, start its event dispatcher
     "
     Display notNil ifTrue:[
-	Display deviceIOTimeoutErrorSignal handlerBlock:[:ex |
-	    SaveEmergencyImage == true ifTrue:[
-		'Display [warning]: broken display connection - emergency save in ''crash.img''.' infoPrintCR.
-		ObjectMemory primSnapShotOn:'crash.img'.
-	    ].
-	    'Display [warning]: broken display connection - exit.' infoPrintCR.
-	    self exit.
-	].
-	Display startDispatch.
+        Display deviceIOTimeoutErrorSignal handlerBlock:[:ex |
+            SaveEmergencyImage == true ifTrue:[
+                'Display [warning]: broken display connection - emergency save in ''crash.img''.' infoPrintCR.
+                ObjectMemory primSnapShotOn:'crash.img'.
+            ].
+            'Display [warning]: broken display connection - exit.' infoPrintCR.
+            self exit.
+        ].
+        Display startDispatch.
     ].
 
     idx := CommandLineArguments indexOf:'--browserWindow:'.
     IsPlugin := (idx ~~ 0).
     IsPlugin ifTrue:[
-	self browserWindowStartup.
-	"/ not reached
+        'Smalltalk [info]: startup browser window...' infoPrintCR.
+        self browserWindowStartup.
+        "/ not reached
     ].
 
     Initializing := false.
@@ -3576,49 +3577,52 @@
     "/ Therefore, it is now done by an extra user-process.
 
     process := [
-	StartBlocks notNil ifTrue:[
-	    StartBlocks do:[:aBlock|
-		aBlock value
-	    ].
-	    StartBlocks := nil.
-	].
-	ImageStartBlocks notNil ifTrue:[
-	    ImageStartBlocks do:[:aBlock|
-		aBlock value
-	    ].
-	].
-	StandAlone ifFalse:[
-	    (SilentLoading == true) ifFalse:[   "i.e. undefined counts as false"
-		thisIsARestart ifTrue:[
-		    Transcript cr.
-		    Transcript showCR:('Smalltalk restarted from:'
-					, imageName
-					, ' (saved '
-					, ObjectMemory imageSaveTime printString
-					, ')' ).
-		] ifFalse:[
-		    Transcript showCR:(self hello).
-		    Transcript showCR:(self copyrightString).
-		].
-		Transcript cr.
-	    ].
-
-	    DemoMode==true ifTrue:[
-		Transcript showCR:'*** Restricted use:                              ***'.
-		Transcript showCR:'*** This program may be used for education only. ***'.
-		Transcript showCR:'*** Please read the files COPYRIGHT and LICENSE  ***'.
-		Transcript showCR:'*** for more details.                            ***'.
-		Transcript cr.
-	    ].
-	].
-
-	thisIsARestart ifTrue:[
-	    "/
-	    "/ the final late notification - users can now assume that
-	    "/ views, forms etc. have been recreated.
-
-	    ObjectMemory changed:#returnFromSnapshot.
-	]
+        'Smalltalk [info]: startup process 1 active.' infoPrintCR.
+        StartBlocks notNil ifTrue:[
+            'Smalltalk [info]: execute startBlocks...' infoPrintCR.
+            StartBlocks do:[:aBlock|
+                aBlock value
+            ].
+            StartBlocks := nil.
+        ].
+        ImageStartBlocks notNil ifTrue:[
+            'Smalltalk [info]: execute imageStartBlocks...' infoPrintCR.
+            ImageStartBlocks do:[:aBlock|
+                aBlock value
+            ].
+        ].
+        StandAlone ifFalse:[
+            (SilentLoading == true) ifFalse:[   "i.e. undefined counts as false"
+                thisIsARestart ifTrue:[
+                    Transcript cr.
+                    Transcript showCR:('Smalltalk restarted from:'
+                                        , imageName
+                                        , ' (saved '
+                                        , ObjectMemory imageSaveTime printString
+                                        , ')' ).
+                ] ifFalse:[
+                    Transcript showCR:(self hello).
+                    Transcript showCR:(self copyrightString).
+                ].
+                Transcript cr.
+            ].
+
+            DemoMode==true ifTrue:[
+                Transcript showCR:'*** Restricted use:                              ***'.
+                Transcript showCR:'*** This program may be used for education only. ***'.
+                Transcript showCR:'*** Please read the files COPYRIGHT and LICENSE  ***'.
+                Transcript showCR:'*** for more details.                            ***'.
+                Transcript cr.
+            ].
+        ].
+
+        thisIsARestart ifTrue:[
+            "/
+            "/ the final late notification - users can now assume that
+            "/ views, forms etc. have been recreated.
+
+            ObjectMemory changed:#returnFromSnapshot.
+        ]
 
     ] newProcess.
 
@@ -3635,60 +3639,63 @@
     "/ message.
 
     (StartupClass notNil and:[StartupSelector notNil]) ifTrue:[
-	"
-	 allow more customization by reading an image specific rc-file
-	"
-	thisIsARestart ifTrue:[
-	    (imageName asFilename hasSuffix:'img') ifTrue:[
-		imageName := imageName copyWithoutLast:4
-	    ].
-	    self fileIn:(imageName , '.rc')
-	].
+        "
+         allow more customization by reading an image specific rc-file
+        "
+        thisIsARestart ifTrue:[
+            (imageName asFilename hasSuffix:'img') ifTrue:[
+                imageName := imageName copyWithoutLast:4
+            ].
+            self fileIn:(imageName , '.rc')
+        ].
 
 "/        Display notNil ifTrue:[
 "/            Display exitOnLastClose:true.
 "/        ].
 "/        Processor exitWhenNoMoreUserProcesses:true.
 
-	process := [
-	    StandAlone ifTrue:[
-		AbortOperationRequest handle:[:ex |
-		    'Smalltalk [info]: aborted - exit.' infoPrintCR.
-		    OperatingSystem exit:1
-		] do:[
-		    StartupClass perform:StartupSelector withArguments:StartupArguments.
-		]
-	    ] ifFalse:[
-		StartupClass perform:StartupSelector withArguments:StartupArguments.
-	    ].
-
-	    "/
-	    "/ non-GUI apps exit after the startup;
-	    "/ assume that GUI apps have created & opened some view ...
-	    "/
-	    Display isNil ifTrue:[
-		'Smalltalk [info]: no Display - exit.' infoPrintCR.
-		Smalltalk exit.
-	    ].
-	    "/
-	    "/ GUI apps exit after the last user process has finished
-	    "/
-	    Display exitOnLastClose:true.
-	    Processor exitWhenNoMoreUserProcesses:true.
-	] newProcess.
-	process priority:(Processor userSchedulingPriority).
-	process name:'main'.
-	process beGroupLeader.
-	process resume.
-	process := true.    "do not refer to process"
+        process := [
+            'Smalltalk [info]: startup process 2 active.' infoPrintCR.
+            StandAlone ifTrue:[
+                AbortOperationRequest handle:[:ex |
+                    'Smalltalk [info]: aborted - exit.' infoPrintCR.
+                    OperatingSystem exit:1
+                ] do:[
+                    ('Smalltalk [info]: call ',StartupSelector,' of ',StartupClass name,' (1)') infoPrintCR.
+                    StartupClass perform:StartupSelector withArguments:StartupArguments.
+                ]
+            ] ifFalse:[
+                ('Smalltalk [info]: call ',StartupSelector,' of ',StartupClass name,' (2)') infoPrintCR.
+                StartupClass perform:StartupSelector withArguments:StartupArguments.
+            ].
+
+            "/
+            "/ non-GUI apps exit after the startup;
+            "/ assume that GUI apps have created & opened some view ...
+            "/
+            Display isNil ifTrue:[
+                'Smalltalk [info]: no Display - exit.' infoPrintCR.
+                Smalltalk exit.
+            ].
+            "/
+            "/ GUI apps exit after the last user process has finished
+            "/
+            Display exitOnLastClose:true.
+            Processor exitWhenNoMoreUserProcesses:true.
+        ] newProcess.
+        process priority:(Processor userSchedulingPriority).
+        process name:'main'.
+        process beGroupLeader.
+        process resume.
+        process := nil.    "do not refer to process"
     ].
 
     StandAlone ifTrue:[
-	Display notNil ifTrue:[
-	    FlyByHelp notNil ifTrue:[
-		FlyByHelp start
-	    ].
-	].
+        Display notNil ifTrue:[
+            FlyByHelp notNil ifTrue:[
+                FlyByHelp start
+            ].
+        ].
     ].
 
     "
@@ -3697,21 +3704,22 @@
     "
     ((Display notNil and:[graphicalMode])
      or:[process notNil
-     or:[HeadlessOperation]]) ifTrue:[
-	Processor dispatchLoop.
-	"done - the last process finished"
-	'Smalltalk [info]: last process finished - exit.' infoPrintCR.
+     or:[HeadlessOperation
+     or:[StandAlone]]]) ifTrue:[
+        Processor dispatchLoop.
+        "done - the last process finished"
+        'Smalltalk [info]: last process finished - exit.' infoPrintCR.
     ] ifFalse:[
-	StandAlone ifFalse:[
-	    self readEvalPrint
-	]
+        StandAlone ifFalse:[
+            self readEvalPrint
+        ]
     ].
 
     self exit
 
     "Created: / 18-07-1996 / 21:07:39 / cg"
     "Modified: / 09-09-1996 / 17:42:50 / stefan"
-    "Modified: / 29-07-2011 / 17:57:52 / cg"
+    "Modified: / 06-12-2011 / 13:28:20 / cg"
 !
 
 openDisplay
@@ -7707,14 +7715,15 @@
 !Smalltalk class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.980 2011/11/04 12:46:27 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.982 2011/12/06 12:28:53 cg Exp $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.980 2011/11/04 12:46:27 cg Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.982 2011/12/06 12:28:53 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: Smalltalk.st 10741 2011-11-26 08:36:46Z vranyj1 $'
+    ^ '$Id: Smalltalk.st 10751 2011-12-21 22:04:49Z vranyj1 $'
 ! !
 
+
--- a/stx_libbasic.st	Fri Dec 09 23:15:57 2011 +0000
+++ b/stx_libbasic.st	Wed Dec 21 22:04:49 2011 +0000
@@ -554,7 +554,7 @@
     "Return a SVN revision number of myself.
      This number is updated after a commit"
 
-    ^ "$SVN-Revision:"'10738MP'"$"
+    ^ "$SVN-Revision:"      '10749MP'"$"
 ! !
 
 !stx_libbasic class methodsFor:'private-prerequisites'!
@@ -580,7 +580,7 @@
 !
 
 version_SVN
-    ^ '$Id: stx_libbasic.st 10741 2011-11-26 08:36:46Z vranyj1 $'
+    ^ '$Id: stx_libbasic.st 10751 2011-12-21 22:04:49Z vranyj1 $'
 ! !