Merged 09806667c605 and 0e1b93ce9851 (branch default - CVS HEAD) jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Wed, 27 Mar 2013 12:24:15 +0000
branchjv
changeset 18040 a11a12546f23
parent 18039 09806667c605 (current diff)
parent 14975 0e1b93ce9851 (diff)
child 18041 d17dbf11e306
Merged 09806667c605 and 0e1b93ce9851 (branch default - CVS HEAD)
AbstractOperatingSystem.st
ApplicationDefinition.st
Bag.st
Behavior.st
ClassBuilder.st
Collection.st
Dictionary.st
Filename.st
Float.st
GenericException.st
Integer.st
LibraryDefinition.st
LongFloat.st
MiniDebugger.st
MiniInspector.st
NoHandlerError.st
Notification.st
Object.st
PositionableStream.st
ProcessorScheduler.st
ProjectDefinition.st
ReadStream.st
SequenceableCollection.st
ShortFloat.st
Signal.st
Smalltalk.st
String.st
Timestamp.st
UninterpretedBytes.st
UserConfirmation.st
UserNotification.st
WriteStream.st
--- a/AbstractOperatingSystem.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/AbstractOperatingSystem.st	Wed Mar 27 12:24:15 2013 +0000
@@ -5510,13 +5510,13 @@
      Notice, that the # of cycles has to be multiplied by the cycle time (1/cpu-frequency).
 
      For x86:
-	the CPU cycle count register value is returned (RDTSC instruction).
-	Fails if RDTSC instruction is not supported (which is unlikely, nowadays).
+        the CPU cycle count register value is returned (RDTSC instruction).
+        Fails if RDTSC instruction is not supported (which is unlikely, nowadays).
      For others:
-	currently fails"
+        currently fails"
 
 %{  /* NOCONTEXT */
-    unsigned int low, high;
+    unsigned INT low, high;
 
 #ifdef i386
     // use RDTSC instruction (retrieves 64bit cycle count; hi in EDX, lo in EAX)
@@ -5532,13 +5532,24 @@
 # else
     goto unsupported;
 # endif
+    RETURN ( __MKLARGEINT64(1, low, high) );
 #endif /* i386 */
 
-    RETURN ( __MKLARGEINT64(1, low, high) );
+#ifdef __x86_64__
+# if defined(__GCC__)
+    asm volatile("rdtsc" : "=a"(low), "=d"(high));
+    RETURN ( __MKUINT(low + (high << 32)) );
+# endif
+#endif
+
 unsupported: ;
 %}.
     self primitiveFailed:'no CPU cycle register on this architecture'
 
+    "
+     OperatingSystem getCPUCycleCount
+    "
+
     "Created: / 05-01-2012 / 13:23:31 / cg"
 !
 
@@ -7186,11 +7197,11 @@
 !AbstractOperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/AbstractOperatingSystem.st,v 1.233 2013-03-11 09:19:38 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbstractOperatingSystem.st,v 1.234 2013-03-23 11:47:44 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/AbstractOperatingSystem.st,v 1.233 2013-03-11 09:19:38 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbstractOperatingSystem.st,v 1.234 2013-03-23 11:47:44 cg Exp $'
 ! !
 
 
--- a/ApplicationDefinition.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/ApplicationDefinition.st	Wed Mar 27 12:24:15 2013 +0000
@@ -159,6 +159,7 @@
     super forEachMethodsCodeToCompileDo:aTwoArgBlock ignoreOldDefinition:ignoreOldDefinition.
 
     #(
+        (applicationIconFileName applicationIconFileName_code)
         (subProjects subProjects_code 'description')
         (productInstallDirBaseName productInstallDirBaseName_code 'description - project information')
         (startupClassName startupClassName_code 'description - startup')
@@ -1609,14 +1610,14 @@
 TOP=%(TOP)       
 INCLUDE_TOP=$(TOP)\..
 
+# An old file, used as a dummy target for FORCE if we do not want
+#   re-make libraries. Windows make does not work if we redefine FORCE=   (empty string)
+OLD_FILE=bmake.bat
+
 !!ifndef FORCE
 # dummy target to force a build
-FORCE=FORCE_BUILD
+FORCE=$(OLD_FILE)
 !!endif
-# An old file, used as a dummy traget for FORCE if we do not want
-#   re-make libraries. Windows make does not work if we redefine FORCE=   (empty string)
-OLD_FILE=bmake.bat
-
 
 CFLAGS_LOCAL=$(CFLAGS_APPTYPE) \
  -DSTARTUP_CLASS="\"%(STARTUP_CLASS)\"" \
@@ -1667,20 +1668,18 @@
 target: %(BUILD_TARGET) postBuildCleanup 
 
 # the executable, all required files and a self-installing-installer-exe
-ALL:: exe $(REQUIRED_SUPPORT_DIRS)  postBuildCleanup setup 
+ALL:: prereq ALL_NP
 
 # all, but no prereqs
-ALL_NP::
-    $(MAKE) -N -f bc.mak FORCE=$(OLD_FILE) ALL 
-
-exe:  newBuildDate $(REQUIRED_LIBOBJS) %(NOCONSOLE_APPLICATION_OR_EMPTY) %(CONSOLE_APPLICATION_OR_EMPTY) 
+ALL_NP:: exe $(REQUIRED_SUPPORT_DIRS) postBuildCleanup setup
+
+exe:  newBuildDate $(REQUIRED_LIBS) noConsoleApp consoleApp
 
 # the executable only
 # with console
 consoleApp: $(REQUIRED_LIBS)
         -del main.$(O)
         $(MAKE) -N -f bc.mak $(USE_ARG) \
-                FORCE=$(OLD_FILE) \
                 MAKE_BAT=$(MAKE_BAT) \
                 PROJECT=$(PROJECT_CONSOLE) \
                 CFLAGS_APPTYPE=" -DWIN32GUI $(CFLAGS_CONSOLE)" \
@@ -1691,7 +1690,6 @@
 noConsoleApp: $(REQUIRED_LIBS)
         -del main.$(O)
         $(MAKE) -N -f bc.mak $(USE_ARG) \
-                FORCE=$(OLD_FILE) \
                 MAKE_BAT=$(MAKE_BAT) \
                 PROJECT=$(PROJECT_NOCONSOLE) \
                 CFLAGS_APPTYPE=" -DWIN32GUI $(CFLAGS_NOCONSOLE) -DWIN_LOGFILE="\\"\"%(NOCONSOLE_LOGFILE)\\"\""" \
@@ -1701,16 +1699,12 @@
 # the executable only (internal target; needs some defines)
 theExe: $(OUTDIR) $(OBJS) $(REQUIRED_FILES) show $(PROJECT) 
 
-FORCE_BUILD:
-        @rem Dummy target to force a build
-
 # build all mandatory prerequisite packages (containing superclasses) for this package
 prereq:
-%(MAKE_PREREQUISITES)
-
-# build all prerequisite packages (containing referenced classes) for this package
-references:
-%(MAKE_REFERENCES)
+        $(MAKE) -N -f bc.mak FORCE=FORCE_BUILD $(REQUIRED_LIBS)
+
+FORCE_BUILD:
+        @rem Dummy target to force a build
 
 # a nullsoft installable delivery
 # This uses the Nullsoft Installer Package and works in Windows only
@@ -2182,8 +2176,8 @@
 TOP=%(TOP)
 INCLUDE_TOP=$(TOP)/..
 
-# a dummy file name to force the build of subprojects
-FORCE=@@@FORCE-BUILD@@@
+# set to a dummy file name (like FORCE=@@@FORCE-BUILD@@@) to force the build of prereq packages
+FORCE=
 .PHONY: $(FORCE)
 
 PACKAGE=%(APPLICATION_PACKAGE)
@@ -2192,7 +2186,7 @@
 NOAUTOLOAD=1
 NOSUBAUTOLOAD=1
 
-LOCALINCLUDES=-I$(INCLUDE_TOP)/stx/libbasic %(LOCAL_INCLUDES)
+LOCALINCLUDES=%(LOCAL_INCLUDES)
 LOCALDEFINES=%(LOCAL_DEFINES)
 GLOBALDEFINES=%(GLOBAL_DEFINES)
 MAIN_DEFINES=%(MAIN_DEFINES)
@@ -2202,10 +2196,6 @@
 
 DELIVERBINARIES=
 
-target: %(BUILD_TARGET)
-
-all::   exe
-
 LIBNAME=%(LIBRARY_NAME)
 STCLOCALOPT=''-package=$(PACKAGE)'' -I. -headerDir=. $(LOCALINCLUDES) $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) %(HEADEROUTPUTARG) %(COMMONSYMFLAG) -varPrefix=$(LIBNAME)
 
@@ -2236,18 +2226,21 @@
 REQUIRED_LINK_LIBOBJS=%(REQUIRED_LINK_LIBOBJS)
 REQUIRED_SUPPORT_DIRS=%(REQUIRED_SUPPORT_DIRS)
 
-exe:    %(APPLICATION) $(REQUIRED_SUPPORT_DIRS)
-
-%(APPLICATION): $(APP_DIRS_TO_MAKE) $(APP_LIBOBJS) $(REQUIRED_LIBOBJS) $(OBJS) $(FORCE)
-        $(MAKE) link_%(APPLICATION)
+target: %(BUILD_TARGET)
+
+all::   prereq ALL_NP
 
 # like ALL, but not prereqs
-ALL_NP::
-        $(MAKE) exe FORCE=
+ALL_NP:: exe $(REQUIRED_SUPPORT_DIRS) setup
+
+exe:    %(APPLICATION) 
+
+%(APPLICATION): $(APP_DIRS_TO_MAKE) $(APP_LIBOBJS) $(REQUIRED_LIBOBJS) $(OBJS)
+        $(MAKE) link_%(APPLICATION)
+
 
 link_%(APPLICATION):
         $(MAKE) %(APPLICATION_TYPE) \
-                    FORCE= \
                     TARGET=%(APPLICATION) \
                     APPLICATION_CLASSES="$(COMMON_CLASSES) $(UNIX_CLASSES)" \
                     APPLICATION_OBJS="$(OBJS)" \
@@ -2260,15 +2253,10 @@
 
 # build all mandatory prerequisite packages (containing superclasses) for this package
 prereq:
-%(MAKE_PREREQUISITES)
-
-# build all prerequisite packages (containing referenced classes) for this package
-references:
-%(MAKE_REFERENCES)
-
+        $(MAKE) FORCE=@@@FORCE-BUILD@@@ $(REQUIRED_LINK_LIBOBJS)
 
 setup::
-        @if test -d autoPackage; then \
+        @if test -d autopackage; then \
             makepackage; \
         else \
             echo "Error: make setup not yet available in linux/unix"; \
@@ -2369,6 +2357,21 @@
 !
 
 make_dot_proto_stx_resource_rules
+    self isGUIApplication ifFalse:[
+        ^ '
+stx_RESOURCES: \
+        libbasic_RESOURCES
+
+stx_STYLES: 
+
+stx_BITMAPS:
+
+libbasic_RESOURCES: 
+        mkdir -p resources/stx/libbasic
+        -cp $(TOP)/libbasic/resources/*.* resources/stx/libbasic
+'
+    ].
+
     ^ '
 
 stx_RESOURCES: \
@@ -2948,11 +2951,11 @@
 !ApplicationDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.224 2013-03-18 14:06:53 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.228 2013-03-26 11:35:24 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.224 2013-03-18 14:06:53 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.228 2013-03-26 11:35:24 stefan Exp $'
 !
 
 version_SVN
--- a/Bag.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/Bag.st	Wed Mar 27 12:24:15 2013 +0000
@@ -65,18 +65,32 @@
 
 !Bag class methodsFor:'instance creation'!
 
+contentsClass
+    "the default class to use for the underlying contents array,
+     used when instantiated with new/new:"
+
+    ^ Dictionary
+!
+
+equalityNew
+    "return a new empty Bag.
+     Elements will be compared using equality compare (i.e. #= not #== identity)."
+
+    ^ self basicNew initContentsForEquality
+!
+
 equalityNew:size
     "return a new empty Bag with initial space for size elements.
      Elements will be compared using equality compare (i.e. #= not #== identity)."
 
-    ^ self basicNew initContents:size
+    ^ self basicNew initContentsForEquality:size
 !
 
 identityNew
-    "return a new empty Bag which compares for identity
+    "return a new empty Identity-Bag.
      Elements will be compared using identity compare (i.e. #== not #= equality)."
 
-    ^ super new initContentsForIdentity
+    ^ self basicNew initContentsForIdentity
 !
 
 identityNew:size
@@ -364,12 +378,26 @@
 !Bag methodsFor:'private'!
 
 initContents
+    "set the contents to be an empty Dictionary.
+     This is the default method for initialization, which can be redefined in subclasses."
+
+    contents := self class contentsClass new
+!
+
+initContents:size
+    "set the contents to be an empty Dictionary with initial size.
+     This is the default method for initialization, which can be redefined in subclasses."
+
+    contents := self class contentsClass new: size
+!
+
+initContentsForEquality
     "set the contents to be an empty Dictionary"
 
     contents := Dictionary new
 !
 
-initContents:size
+initContentsForEquality:size
     "set the contents to be an empty Dictionary with initial size"
 
     contents := Dictionary new:size
@@ -416,10 +444,10 @@
 !Bag class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Bag.st,v 1.43 2013-03-19 09:22:44 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Bag.st,v 1.44 2013-03-25 21:27:48 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Bag.st,v 1.43 2013-03-19 09:22:44 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Bag.st,v 1.44 2013-03-25 21:27:48 cg Exp $'
 ! !
 
--- a/Behavior.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/Behavior.st	Wed Mar 27 12:24:15 2013 +0000
@@ -1057,7 +1057,13 @@
      These bytes are typically the result from storing into a string/stream.
      Same as readFrom:, for Dolphin compatibility."
 
-    ^ self readFrom:aString
+    |s result|
+
+    s := aString readStream.
+    result := self readFrom:s.
+"/ should check here for garbage - maybe later
+"/    s atEnd ifFalse:[^ ConversionError raiseRequestWith:aString errorString:' - garbage at end of ', self name].
+    ^ result
 !
 
 guid:aUUID
@@ -1194,6 +1200,7 @@
 ! !
 
 
+
 !Behavior methodsFor:'accessing'!
 
 addSelector:newSelector withMethod:newMethod
@@ -2693,13 +2700,13 @@
      This is the reverse operation to 'storeOn:'.
 
      WARNING: storeOn: does not handle circular references and multiple
-	      references to the same object.
-	      Use #storeBinary:/readBinaryFrom: for this."
+              references to the same object.
+              Use #storeBinary:/readBinaryFrom: for this."
 
     ^ self
-	readFrom:aStream
-	onError:[ self conversionErrorSignal
-		    raiseErrorString:'conversion error for: ' , self name ]
+        readFrom:aStream
+        onError:[ self conversionErrorSignal
+                    raiseWith:aStream errorString:'conversion error for: ' , self name ]
 
     "
      |s|
@@ -4885,10 +4892,10 @@
 !Behavior class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.331 2013-01-24 15:50:52 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.332 2013-03-26 17:04:47 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.331 2013-01-24 15:50:52 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.332 2013-03-26 17:04:47 stefan Exp $'
 ! !
 
--- a/ClassBuilder.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/ClassBuilder.st	Wed Mar 27 12:24:15 2013 +0000
@@ -2011,7 +2011,11 @@
     ].
     pkg notNil ifTrue:[
 "/ Transcript showCR:('set package of class: ' , newClass name , ' to ' , pkg printString).
-        newClass package:pkg.
+        oldPkg = pkg ifTrue:[
+            newClass setPackage:pkg "/ does not produce update requests...
+        ] ifFalse:[
+            newClass package:pkg.
+        ]
     ].
 
     "Modified: / 29-09-2011 / 15:58:56 / cg"
@@ -2366,11 +2370,11 @@
 !ClassBuilder class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ClassBuilder.st,v 1.118 2013-01-18 20:56:08 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ClassBuilder.st,v 1.119 2013-03-25 12:13:09 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/ClassBuilder.st,v 1.118 2013-01-18 20:56:08 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ClassBuilder.st,v 1.119 2013-03-25 12:13:09 cg Exp $'
 ! !
 
 
--- a/Collection.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/Collection.st	Wed Mar 27 12:24:15 2013 +0000
@@ -327,6 +327,7 @@
     ^ self == Collection
 ! !
 
+
 !Collection methodsFor:'*ST2JS-compatibility'!
 
 inlineDo: aBlock
@@ -506,6 +507,23 @@
     "Created: / 22-10-2008 / 21:29:27 / cg"
 !
 
+withIndexCollect:aTwoArgBlock
+    "same as keysAndValuesCollect:, but with argument order reversed"
+
+    |newCollection|
+
+    newCollection := OrderedCollection new.
+    self keysAndValuesDo:[:key :value |
+        newCollection add:(aTwoArgBlock value:value value:key)
+    ].
+    ^ newCollection
+
+    "
+     #(one two three) withIndexCollect:[:sym :num | (num->sym)] 
+     #(10 20 30) withIndexCollect:[:n :i | n*i ]  
+    "
+!
+
 withIndexDo:aTwoArgBlock 
     "evaluate the argument, aBlock for every element in the collection,
      passing both element and index as arguments."
@@ -1979,6 +1997,17 @@
     ^ (self copyEmpty:size) grow:size
 !
 
+copyWith: additionalElement 
+    "Return a copy of the dictionary that is 1 bigger than the receiver and 
+     includes the argument, additionalElement, at the end."
+
+    | newColl |
+
+    newColl := self copy.
+    newColl add: additionalElement.
+    ^ newColl
+!
+
 postCopyFrom:original
     "sent to a freshly copied object to give it a chance to adjust things.
      Notice, that for Sets/Dicts etc. a rehash is not needed, since the copy
@@ -4574,11 +4603,11 @@
 !Collection class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.293 2013-03-21 08:32:34 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.295 2013-03-26 16:09:26 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.293 2013-03-21 08:32:34 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.295 2013-03-26 16:09:26 cg Exp $'
 ! !
 
 
--- a/Dictionary.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/Dictionary.st	Wed Mar 27 12:24:15 2013 +0000
@@ -244,7 +244,10 @@
 
 associationAt:aKey ifAbsent:exceptionBlock
     "return an association consisting of aKey and the element indexed by aKey -
-     return result of exceptionBlock if no element is stored under aKey"
+     return result of exceptionBlock if no element is stored under aKey.
+     Warning: this is a comatibility interface only, with a different semantic as
+              the original ST80 implementation. The returned assoc is created on the fly,
+              and not the one stored in the receiver (there are not assocs there)"
 
     ^ Association key:aKey value:(self at:aKey ifAbsent:[^ exceptionBlock value])
 !
@@ -2055,10 +2058,10 @@
 !Dictionary class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Dictionary.st,v 1.109 2013-03-19 09:22:48 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Dictionary.st,v 1.110 2013-03-26 17:04:43 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Dictionary.st,v 1.109 2013-03-19 09:22:48 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Dictionary.st,v 1.110 2013-03-26 17:04:43 cg Exp $'
 ! !
 
--- a/Filename.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/Filename.st	Wed Mar 27 12:24:15 2013 +0000
@@ -3949,12 +3949,13 @@
     "open a terminal window on the directory represented by the receiver.
      On non-osx systems, an error is raised"
 
-    OperatingSystem isOSXlike ifTrue:[
-        OperatingSystem executeCommand:'/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal ' inDirectory:self pathName. 
-        ^ self
-    ].
-
-    OperatingSystem executeCommand:'xterm ' inDirectory:self pathName. 
+    [
+        OperatingSystem isOSXlike ifTrue:[
+            OperatingSystem executeCommand:'/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal ' inDirectory:self pathName. 
+        ] ifFalse:[
+            OperatingSystem executeCommand:'xterm ' inDirectory:self pathName. 
+        ]
+    ] fork
 ! !
 
 !Filename methodsFor:'printing & storing'!
@@ -4156,15 +4157,14 @@
         "we cannot handle shared libraries, so there are no shared libraries"
         ^ false.
     ].
-    self isRegularFile ifFalse:[
-        ^ false.
-    ].
-    ^ ObjectFileLoader validBinaryExtensions includes:self suffix.
+    ^ (ObjectFileLoader validBinaryExtensions includes:self suffix) 
+        and:[self isRegularFile].
 
     "
      'libstx_libbasic.so' asFilename isSharedLibrary         
      'libstx_libbasic.dll' asFilename isSharedLibrary         
      '/tmp' asFilename isSharedLibrary         
+     '/tmp.dll' asFilename isSharedLibrary         
     "
 !
 
@@ -5930,11 +5930,11 @@
 !Filename class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.385 2013-02-24 20:25:06 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.387 2013-03-25 00:51:53 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.385 2013-02-24 20:25:06 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.387 2013-03-25 00:51:53 cg Exp $'
 ! !
 
 
--- a/Float.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/Float.st	Wed Mar 27 12:24:15 2013 +0000
@@ -119,7 +119,7 @@
 # endif
 
 # ifndef isNegativeInfinity
-#  define isPositiveInfinity(x) \
+#  define isNegativeInfinity(x) \
 	((((unsigned int *)(&x))[0] == 0x00000000) && \
 	 (((unsigned int *)(&x))[1] == 0xFFF00000))
 # endif
@@ -137,6 +137,11 @@
 # define NO_ASINH
 # define NO_ACOSH
 # define NO_ATANH
+
+# ifdef __MINGW__
+#  include <string.h>
+# endif
+
 #endif /* WIN32 */
 
 #ifdef solaris
@@ -440,14 +445,14 @@
     self isIEEEFormat ifFalse:[self error:'unsupported operation'].
 
     (UninterpretedBytes isBigEndian == msb) ifFalse:[
-        "swap the bytes"
-        8 to:1 by:-1 do:[:i |
-            aFloat basicAt:i put:(aStream next)
-        ].
-        ^ self
+	"swap the bytes"
+	8 to:1 by:-1 do:[:i |
+	    aFloat basicAt:i put:(aStream next)
+	].
+	^ self
     ].
     1 to:8 do:[:i |
-        aFloat basicAt:i put:aStream next
+	aFloat basicAt:i put:aStream next
     ]
 
     "not part of libboss, as this is also used by others (TIFFReader)"
@@ -476,14 +481,14 @@
     self isIEEEFormat ifFalse:[self error:'unsupported operation'].
 
     (UninterpretedBytes isBigEndian == msb) ifFalse:[
-        "swap the bytes"
-        8 to:1 by:-1 do:[:i |
-            aStream nextPut:(aFloat basicAt:i).
-        ].
-        ^ self
+	"swap the bytes"
+	8 to:1 by:-1 do:[:i |
+	    aStream nextPut:(aFloat basicAt:i).
+	].
+	^ self
     ].
     1 to:8 do:[:i |
-        aStream nextPut:(aFloat basicAt:i).
+	aStream nextPut:(aFloat basicAt:i).
     ].
 
     "not part of libboss, as this is also used by others (TIFFReader)"
@@ -2867,11 +2872,11 @@
 !Float class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Float.st,v 1.190 2013-03-20 15:43:49 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Float.st,v 1.191 2013-03-22 09:44:22 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Float.st,v 1.190 2013-03-20 15:43:49 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Float.st,v 1.191 2013-03-22 09:44:22 cg Exp $'
 ! !
 
 
--- a/GenericException.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/GenericException.st	Wed Mar 27 12:24:15 2013 +0000
@@ -199,6 +199,7 @@
     "Modified: / 24.7.1999 / 13:21:25 / stefan"
 ! !
 
+
 !GenericException class methodsFor:'Compatibility-Dolphin'!
 
 signal:messageText
@@ -1109,6 +1110,7 @@
     "Modified: / 23.7.1999 / 14:50:11 / stefan"
 ! !
 
+
 !GenericException methodsFor:'Compatibility-ANSI'!
 
 pass
@@ -1302,6 +1304,13 @@
     "Modified: / 12.3.1998 / 15:30:45 / stefan"
 !
 
+originalSignal
+    "return the signal/exception which was originally raised.
+     For noHandler, that is my unhandled signal; for others, thats the exception itself."
+
+    ^ self.
+!
+
 originator
     "return the originator passsed with the signal raise
      (or nil, if there was none)"
@@ -2315,11 +2324,12 @@
 !GenericException class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.133 2012-07-23 11:04:16 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.134 2013-03-26 14:20:21 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.133 2012-07-23 11:04:16 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.134 2013-03-26 14:20:21 cg Exp $'
 ! !
 
+
 GenericException initialize!
--- a/Integer.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/Integer.st	Wed Mar 27 12:24:15 2013 +0000
@@ -3610,7 +3610,7 @@
 
     base := b.
     (base isInteger and:[ base between:2 and:36 ]) ifFalse:[
-        ConversionError raiseRequestErrorString:' - invalid base'.
+        ConversionError raiseRequestWith:self errorString:' - invalid base: ', base printString.
         base := 10.
     ].
 
@@ -4929,11 +4929,11 @@
 !Integer class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Integer.st,v 1.275 2013-02-22 11:41:18 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Integer.st,v 1.276 2013-03-26 16:57:41 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Integer.st,v 1.275 2013-02-22 11:41:18 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Integer.st,v 1.276 2013-03-26 16:57:41 stefan Exp $'
 ! !
 
 
--- a/LibraryDefinition.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/LibraryDefinition.st	Wed Mar 27 12:24:15 2013 +0000
@@ -133,14 +133,14 @@
     resFileName := (self package copyFrom:(self package lastIndexOfAny:':/')+1),'.$(RES)'.
 
     d := super bc_dot_mak_mappings.
-    d
+    ^ d
         at: 'LIBRARY_NAME' put: ( self libraryName );
         at: 'COMMONSYMFLAG' put: (self commonSymbolsFlag);
         at: 'HEADEROUTPUTARG' put: (self headerFileOutputArg);
         at: 'RESFILENAME' put: resFileName;
         at: 'DEPENDENCIES' put: (self generateDependencies_win32);
+        at: 'MAKE_PREREQUISITES' put: (self generateRequiredMakePrerequisites_bc_dot_mak ? '');
         yourself.
-    ^ d.
 
     "Created: / 09-08-2006 / 11:44:36 / fm"
     "Modified: / 09-08-2006 / 20:00:01 / fm"
@@ -173,6 +173,15 @@
     "Modified: / 14-09-2006 / 18:56:42 / cg"
 !
 
+make_dot_proto_mappings
+    |d|
+
+    d := super make_dot_proto_mappings.
+    ^ d
+        at: 'MAKE_PREREQUISITES' put: (self generateRequiredMakePrerequisites_make_dot_proto);
+        yourself.
+!
+
 vc_dot_def_mappings
 
 ^Dictionary new
@@ -323,10 +332,6 @@
 prereq:
 %(MAKE_PREREQUISITES)
 
-# build all packages containing referenced classes for this package
-# they are nor needed to compile the package
-references:
-%(MAKE_REFERENCES)
 
 %(ADDITIONAL_RULES)
 
@@ -741,10 +746,10 @@
 !LibraryDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/LibraryDefinition.st,v 1.116 2013-03-19 15:53:19 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LibraryDefinition.st,v 1.117 2013-03-25 12:16:02 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/LibraryDefinition.st,v 1.116 2013-03-19 15:53:19 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LibraryDefinition.st,v 1.117 2013-03-25 12:16:02 stefan Exp $'
 ! !
 
--- a/LongFloat.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/LongFloat.st	Wed Mar 27 12:24:15 2013 +0000
@@ -67,33 +67,33 @@
  */
 # ifndef isnanl
 #  define isnanl(x)      \
-        ((((unsigned int *)(&x))[0] == 0x00000000) && \
-         (((unsigned int *)(&x))[1] == 0xC0000000) && \
-         (((unsigned short *)(&x))[4] == 0xFFFF))
+	((((unsigned int *)(&x))[0] == 0x00000000) && \
+	 (((unsigned int *)(&x))[1] == 0xC0000000) && \
+	 (((unsigned short *)(&x))[4] == 0xFFFF))
 # endif
 
 # ifndef isnan
 #  define isnan(x)      \
-        ((((unsigned int *)(&x))[0] == 0x00000000) && \
-         (((unsigned int *)(&x))[1] == 0xFFF80000))
+	((((unsigned int *)(&x))[0] == 0x00000000) && \
+	 (((unsigned int *)(&x))[1] == 0xFFF80000))
 # endif
 
 # ifndef isPositiveInfinity
 #  define isPositiveInfinity(x) \
-        ((((unsigned int *)(&x))[0] == 0x00000000) && \
-         (((unsigned int *)(&x))[1] == 0x7FF00000))
+	((((unsigned int *)(&x))[0] == 0x00000000) && \
+	 (((unsigned int *)(&x))[1] == 0x7FF00000))
 # endif
 
 # ifndef isNegativeInfinity
-#  define isPositiveInfinity(x) \
-        ((((unsigned int *)(&x))[0] == 0x00000000) && \
-         (((unsigned int *)(&x))[1] == 0xFFF00000))
+#  define isNegativeInfinity(x) \
+	((((unsigned int *)(&x))[0] == 0x00000000) && \
+	 (((unsigned int *)(&x))[1] == 0xFFF00000))
 # endif
 
 # ifndef isinf
 #  define isinf(x) \
-        ((((unsigned int *)(&x))[0] == 0x00000000) && \
-         ((((unsigned int *)(&x))[1] & 0x7FF00000) == 0x7FF00000))
+	((((unsigned int *)(&x))[0] == 0x00000000) && \
+	 ((((unsigned int *)(&x))[1] & 0x7FF00000) == 0x7FF00000))
 # endif
 
 # ifndef isfinite
@@ -103,6 +103,11 @@
 # define NO_ASINH
 # define NO_ACOSH
 # define NO_ATANH
+
+# ifdef __MINGW__
+#  include <string.h>
+# endif
+
 #endif /* WIN32 */
 
 #ifdef solaris
@@ -171,38 +176,38 @@
 #endif
 
 struct __longfloatstruct {
-        STX_OBJ_HEADER
+	STX_OBJ_HEADER
 #ifdef __NEED_DOUBLE_ALIGN
-        __FILLTYPE_DOUBLE       f_filler;
+	__FILLTYPE_DOUBLE       f_filler;
 #endif
-        LONGFLOAT               f_longfloatvalue;
+	LONGFLOAT               f_longfloatvalue;
 };
 #define __LongFloatInstPtr(obj)      ((struct __longfloatstruct *)(__objPtr(obj)))
 
 #ifndef __longFloatVal
 # define __longFloatVal(o) \
-        __LongFloatInstPtr(o)->f_longfloatvalue
+	__LongFloatInstPtr(o)->f_longfloatvalue
 #endif
 
 #ifndef __qMKLFLOAT
 # define __qMKLFLOAT(__newFloat__, __fVal__) \
     { \
-        __qNew(__newFloat__ , sizeof(struct __longfloatstruct)); \
-        if (__newFloat__) { \
-            __objPtr(__newFloat__)->o_class = LONGFLOAT_GLOBAL; \
-            __LongFloatInstPtr(__newFloat__)->f_longfloatvalue = (LONGFLOAT)(__fVal__); \
-        } \
+	__qNew(__newFloat__ , sizeof(struct __longfloatstruct)); \
+	if (__newFloat__) { \
+	    __objPtr(__newFloat__)->o_class = LONGFLOAT_GLOBAL; \
+	    __LongFloatInstPtr(__newFloat__)->f_longfloatvalue = (LONGFLOAT)(__fVal__); \
+	} \
     }
 #endif
 
 #ifndef __isLongFloat
 # define __isLongFloat(o) \
-        (__Class(o) == @global(LongFloat))
+	(__Class(o) == @global(LongFloat))
 #endif
 
 #ifndef __qIsLongFloat
 # define __qIsLongFloat(o) \
-        (__qClass(o) == @global(LongFloat))
+	(__qClass(o) == @global(LongFloat))
 #endif
 
 %}
@@ -2401,13 +2406,13 @@
 
     lVal = LONG_ceil(__longFloatVal(self));
     if ((lVal >= (LONGFLOAT)_MIN_INT) && (lVal <= (LONGFLOAT)_MAX_INT)) {
-        RETURN ( __mkSmallInteger( (INT) lVal ) );
+	RETURN ( __mkSmallInteger( (INT) lVal ) );
     }
     __qMKLFLOAT(val, lVal);
 #endif
 %}.
     val notNil ifTrue:[
-        ^ val asInteger
+	^ val asInteger
     ].
     ^ super ceiling.
 
@@ -2453,13 +2458,13 @@
 
     lVal = LONG_floor(__longFloatVal(self));
     if ((lVal >= (LONGFLOAT)_MIN_INT) && (lVal <= (LONGFLOAT)_MAX_INT)) {
-        RETURN ( __mkSmallInteger( (INT) lVal ) );
+	RETURN ( __mkSmallInteger( (INT) lVal ) );
     }
     __qMKLFLOAT(val, lVal);
 #endif
 %}.
     val notNil ifTrue:[
-        ^ val asInteger
+	^ val asInteger
     ].
     ^ super floor.
 
@@ -2542,15 +2547,15 @@
 
     lVal = __longFloatVal(self);
     if (lVal < 0.0) {
-        lVal = LONG_ceil(lVal - (LONGFLOAT)0.5);
+	lVal = LONG_ceil(lVal - (LONGFLOAT)0.5);
     } else {
-        lVal = LONG_floor(lVal + (LONGFLOAT)0.5);
+	lVal = LONG_floor(lVal + (LONGFLOAT)0.5);
     }
     /*
      * ST-80 (and X3J20) returns integer.
      */
     if ((lVal >= (LONGFLOAT)_MIN_INT) && (lVal <= (LONGFLOAT)_MAX_INT)) {
-        RETURN ( __mkSmallInteger( (INT) lVal ) );
+	RETURN ( __mkSmallInteger( (INT) lVal ) );
     }
     __qMKLFLOAT(v, lVal);
     RETURN (v);
@@ -2603,22 +2608,22 @@
 
     lVal = __longFloatVal(self);
     if (lVal < 0.0) {
-        lVal = LONG_ceil(lVal);
+	lVal = LONG_ceil(lVal);
     } else {
-        lVal = LONG_floor(lVal);
+	lVal = LONG_floor(lVal);
     }
 
     /*
      * ST-80 (and X3J20) returns integer.
      */
     if ((lVal >= (LONGFLOAT)_MIN_INT) && (lVal <= (LONGFLOAT)_MAX_INT)) {
-        RETURN ( __mkSmallInteger( (INT) lVal ) );
+	RETURN ( __mkSmallInteger( (INT) lVal ) );
     }
     __qMKLFLOAT(val, lVal);
 #endif
 %}.
     val notNil ifTrue:[
-        ^ val asInteger
+	^ val asInteger
     ].
     ^ super truncated
 
@@ -2644,9 +2649,9 @@
 
     lVal = __longFloatVal(self);
     if (lVal < 0.0) {
-        lVal = LONG_ceil(lVal);
+	lVal = LONG_ceil(lVal);
     } else {
-        lVal = LONG_floor(lVal);
+	lVal = LONG_floor(lVal);
     }
     __qMKLFLOAT(v, lVal);
     RETURN (v);
@@ -2665,11 +2670,11 @@
 !LongFloat class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/LongFloat.st,v 1.76 2013-03-20 14:57:16 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LongFloat.st,v 1.77 2013-03-22 09:44:22 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/LongFloat.st,v 1.76 2013-03-20 14:57:16 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LongFloat.st,v 1.77 2013-03-22 09:44:22 cg Exp $'
 ! !
 
 
--- a/MiniDebugger.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/MiniDebugger.st	Wed Mar 27 12:24:15 2013 +0000
@@ -141,7 +141,7 @@
 
     ^ self
         enter:ex returnableSuspendedContext
-        withMessage:ex descriptionForDebugger
+        withMessage:(ex signal name,': ',ex descriptionForDebugger)
         mayProceed:(ex mayProceed).
 !
 
@@ -955,10 +955,10 @@
 !MiniDebugger class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/MiniDebugger.st,v 1.82 2013-02-23 11:14:32 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MiniDebugger.st,v 1.83 2013-03-26 14:20:43 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/MiniDebugger.st,v 1.82 2013-02-23 11:14:32 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MiniDebugger.st,v 1.83 2013-03-26 14:20:43 cg Exp $'
 ! !
 
--- a/MiniInspector.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/MiniInspector.st	Wed Mar 27 12:24:15 2013 +0000
@@ -44,14 +44,18 @@
 "
 ! !
 
+
 !MiniInspector class methodsFor:'instance creation'!
 
 openOn:anObject
     |anInspector|
+
     anInspector := (self new) initializeFor:anObject.
-    anInspector enter
+    anInspector enter.
+    ^ anInspector
 ! !
 
+
 !MiniInspector methodsFor:'private'!
 
 commandLoop
@@ -257,15 +261,14 @@
     "Modified: 20.5.1996 / 10:27:45 / cg"
 ! !
 
+
 !MiniInspector class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/MiniInspector.st,v 1.26 2007/01/12 20:58:11 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MiniInspector.st,v 1.27 2013-03-24 11:41:25 cg Exp $'
 !
 
 version_SVN
     ^ '$Id: MiniInspector.st 10761 2012-01-19 11:46:00Z vranyj1 $'
 ! !
 
-
-
--- a/NoHandlerError.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/NoHandlerError.st	Wed Mar 27 12:24:15 2013 +0000
@@ -503,6 +503,13 @@
 
 !NoHandlerError methodsFor:'accessing'!
 
+originalSignal
+    "return the signal/exception which was originally raised.
+     For noHandler, that is my unhandled signal; for others, thats the exception itself."
+
+    ^ parameter originalSignal.
+!
+
 unhandledException
     ^ parameter
 ! !
@@ -560,11 +567,12 @@
 !NoHandlerError class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/NoHandlerError.st,v 1.19 2010-03-13 10:31:25 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/NoHandlerError.st,v 1.20 2013-03-26 14:20:32 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/NoHandlerError.st,v 1.19 2010-03-13 10:31:25 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/NoHandlerError.st,v 1.20 2013-03-26 14:20:32 cg Exp $'
 ! !
 
+
 NoHandlerError initialize!
--- a/Notification.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/Notification.st	Wed Mar 27 12:24:15 2013 +0000
@@ -313,6 +313,23 @@
     "Modified: / 23.7.1999 / 15:13:34 / stefan"
 ! !
 
+!Notification methodsFor:'helpers'!
+
+hasDialog
+    "answer true, if we can use a Dialog window"
+
+    (Smalltalk isInitialized 
+     and:[Dialog notNil
+     and:[Screen notNil
+     and:[Screen current notNil
+     and:[Screen current isOpenAndDispatching
+    ]]]]) ifTrue:[
+        Dialog autoload.        "in case its autoloaded"
+        ^ true.
+    ].
+    ^ false
+! !
+
 !Notification methodsFor:'private'!
 
 LATERdoCallHandler:aHandlerBlock
@@ -358,11 +375,12 @@
 !Notification class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Notification.st,v 1.27 2011-09-11 14:41:10 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Notification.st,v 1.28 2013-03-25 13:57:51 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Notification.st,v 1.27 2011-09-11 14:41:10 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Notification.st,v 1.28 2013-03-25 13:57:51 cg Exp $'
 ! !
 
+
 Notification initialize!
--- a/Object.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/Object.st	Wed Mar 27 12:24:15 2013 +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
@@ -12,20 +12,20 @@
 "{ Package: 'stx:libbasic' }"
 
 nil subclass:#Object
-	instanceVariableNames:''
-	classVariableNames:'ErrorSignal HaltSignal MessageNotUnderstoodSignal
-		UserInterruptSignal RecursionInterruptSignal
-		ExceptionInterruptSignal SubscriptOutOfBoundsSignal
-		IndexNotFoundSignal NonIntegerIndexSignal NotFoundSignal
-		KeyNotFoundSignal ElementOutOfBoundsSignal UserNotificationSignal
-		InformationSignal WarningSignal PrimitiveFailureSignal
-		DeepCopyErrorSignal AbortSignal ErrorRecursion Dependencies
-		InfoPrinting ActivityNotificationSignal InternalErrorSignal
-		NonWeakDependencies SynchronizationSemaphores ObjectAttributes
-		OSSignalInterruptSignal FinalizationLobby
-		RecursiveStoreStringSignal AbortAllSignal EnabledBreakPoints'
-	poolDictionaries:''
-	category:'Kernel-Objects'
+        instanceVariableNames:''
+        classVariableNames:'ErrorSignal HaltSignal MessageNotUnderstoodSignal
+                UserInterruptSignal RecursionInterruptSignal
+                ExceptionInterruptSignal SubscriptOutOfBoundsSignal
+                IndexNotFoundSignal NonIntegerIndexSignal NotFoundSignal
+                KeyNotFoundSignal ElementOutOfBoundsSignal UserNotificationSignal
+                InformationSignal WarningSignal PrimitiveFailureSignal
+                DeepCopyErrorSignal AbortSignal ErrorRecursion Dependencies
+                InfoPrinting ActivityNotificationSignal InternalErrorSignal
+                NonWeakDependencies SynchronizationSemaphores ObjectAttributes
+                OSSignalInterruptSignal FinalizationLobby
+                RecursiveStoreStringSignal AbortAllSignal EnabledBreakPoints'
+        poolDictionaries:''
+        category:'Kernel-Objects'
 !
 
 !Object class methodsFor:'documentation'!
@@ -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
@@ -266,6 +266,8 @@
     "Modified: / 4.8.1999 / 08:54:06 / stefan"
 ! !
 
+
+
 !Object class methodsFor:'Compatibility-ST80'!
 
 rootError
@@ -432,13 +434,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
      ]
     "
 
@@ -504,7 +506,6 @@
     InfoPrinting := aBoolean
 ! !
 
-
 !Object class methodsFor:'queries'!
 
 isAbstract
@@ -529,6 +530,10 @@
 
 
 
+
+
+
+
 !Object methodsFor:'Compatibility-Dolphin'!
 
 stbFixup: anSTBInFiler at: newObjectIndex
@@ -614,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
     ]
 !
 
@@ -631,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
@@ -684,7 +689,6 @@
     "
 ! !
 
-
 !Object methodsFor:'accessing'!
 
 _at:index
@@ -692,9 +696,9 @@
      this is a synthetic selector, generated by the compiler,
      if a construct of the form expr[idx...] is parsed.
      I.e.
-	v[n]
+        v[n]
      generates
-	v _at: n
+        v _at: n
     "
 
     ^ self at:index
@@ -707,9 +711,9 @@
      this is a synthetic selector, generated by the compiler,
      if a construct of the form expr[idx...] is parsed.
      I.e.
-	v[n]
+        v[n]
      generates
-	v _at: n
+        v _at: n
     "
 
     ^ self at:index put:value
@@ -808,239 +812,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
@@ -1068,280 +1072,280 @@
        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 INT-size bytes
-		     * (would be a smallInteger)
-		     */
-		    if (n) {
+                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 INT-size bytes
+                     * (would be a smallInteger)
+                     */
+                    if (n) {
 #if __POINTER_SIZE__ == 8
-			if ((n >= -0x80000000) && (n < 0x80000000))
+                        if ((n >= -0x80000000) && (n < 0x80000000))
 #endif
-			{
-			    *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) {
+                        {
+                            *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) {
 #if __POINTER_SIZE__ == 8
-			if (u <= 0xFFFFFFFF)
+                        if (u <= 0xFFFFFFFF)
 #endif
-			{
-			    *lp = u;
-			    RETURN ( anObject );
-			}
-		    }
-		}
-		break;
-
-	    case __MASKSMALLINT(SLONGLONGARRAY):
+                        {
+                            *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 ((unsigned)indx < (nbytes>>3)) {
+                    __int64__ ll;
+                    __int64__ *sllp;
+
+                    sllp = (__int64__ *)(pFirst + (indx<<3));
 
 #if __POINTER_SIZE__ == 8
-		    if (__isSmallInteger(anObject)) {
-			*sllp = __intVal(anObject);
-			RETURN ( anObject );
-		    }
-		    n = __signedLongIntVal(anObject);
-		    if (n) {
-			*sllp = n;
-			RETURN ( anObject );
-		    }
+                    if (__isSmallInteger(anObject)) {
+                        *sllp = __intVal(anObject);
+                        RETURN ( anObject );
+                    }
+                    n = __signedLongIntVal(anObject);
+                    if (n) {
+                        *sllp = n;
+                        RETURN ( anObject );
+                    }
 #else
-		    if (anObject == __mkSmallInteger(0)) {
-			ll.lo = ll.hi = 0;
-			*sllp = ll;
-			RETURN ( anObject );
-		    }
-		    if (__signedLong64IntVal(anObject, &ll)) {
-			*sllp = ll;
-			RETURN ( anObject );
-		    }
+                    if (anObject == __mkSmallInteger(0)) {
+                        ll.lo = ll.hi = 0;
+                        *sllp = ll;
+                        RETURN ( anObject );
+                    }
+                    if (__signedLong64IntVal(anObject, &ll)) {
+                        *sllp = ll;
+                        RETURN ( anObject );
+                    }
 #endif
-		}
-		break;
-
-	    case __MASKSMALLINT(LONGLONGARRAY):
+                }
+                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 ((unsigned)indx < (nbytes>>3)) {
+                    __uint64__ ll;
+                    __uint64__ *llp;
+
+                    llp = (__uint64__ *)(pFirst + (indx<<3));
 #if __POINTER_SIZE__ == 8
-		    if (__isSmallInteger(anObject)) {
-			*llp = __intVal(anObject);
-			RETURN ( anObject );
-		    }
-		    ll = __longIntVal(anObject);
-		    if (ll) {
-			*llp = ll;
-			RETURN ( anObject );
-		    }
+                    if (__isSmallInteger(anObject)) {
+                        *llp = __intVal(anObject);
+                        RETURN ( anObject );
+                    }
+                    ll = __longIntVal(anObject);
+                    if (ll) {
+                        *llp = ll;
+                        RETURN ( anObject );
+                    }
 #else
-		    if (anObject == __mkSmallInteger(0)) {
-			ll.lo = ll.hi = 0;
-			*llp = ll;
-			RETURN ( anObject );
-		    }
-		    if (__unsignedLong64IntVal(anObject, &ll)) {
-			*llp = ll;
-			RETURN ( anObject );
-		    }
+                    if (anObject == __mkSmallInteger(0)) {
+                        ll.lo = ll.hi = 0;
+                        *llp = ll;
+                        RETURN ( anObject );
+                    }
+                    if (__unsignedLong64IntVal(anObject, &ll)) {
+                        *llp = ll;
+                        RETURN ( anObject );
+                    }
 #endif
-		}
-		break;
-	}
+                }
+                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
@@ -1369,56 +1373,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
@@ -1451,33 +1455,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
@@ -1502,22 +1506,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
@@ -1534,24 +1538,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
@@ -1568,7 +1572,7 @@
 
     idx := self class instVarOffsetOf:name.
     idx isNil ifTrue:[
-	^ self errorKeyNotFound:name.
+        ^ self errorKeyNotFound:name.
     ].
     ^ self instVarAt:idx.
 
@@ -1620,7 +1624,7 @@
 
     idx := self class instVarOffsetOf:name.
     idx isNil ifTrue:[
-	^ self errorKeyNotFound:name.
+        ^ self errorKeyNotFound:name.
     ].
     ^ self instVarAt:idx put:value.
 
@@ -1663,7 +1667,6 @@
     "Modified: 6.7.1996 / 23:03:41 / cg"
 ! !
 
-
 !Object methodsFor:'attributes access'!
 
 objectAttributeAt:attributeKey
@@ -1673,7 +1676,7 @@
 
     attrs := self objectAttributes.
     (attrs notNil and:[attrs size > 0]) ifTrue:[
-	^ attrs at:attributeKey ifAbsent:[]
+        ^ attrs at:attributeKey ifAbsent:[]
     ].
     ^ nil
 
@@ -1687,16 +1690,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:
@@ -1737,24 +1740,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"
@@ -1767,19 +1770,19 @@
     "/ must do this save from interrupts, since the attributes collection
     "/ is possibly accessed from multiple threads.
     [
-	|attrs n a|
-
-	attrs := self objectAttributes.
-	attrs notNil ifTrue:[
-	    attrs size == 0 ifTrue:[
-		self objectAttributes:nil
-	    ] ifFalse:[
-		attrs removeKey:attributeKey ifAbsent:nil.
-		attrs size == 0 ifTrue:[
-		    self objectAttributes:nil
-		]
-	    ]
-	]
+        |attrs n a|
+
+        attrs := self objectAttributes.
+        attrs notNil ifTrue:[
+            attrs size == 0 ifTrue:[
+                self objectAttributes:nil
+            ] ifFalse:[
+                attrs removeKey:attributeKey ifAbsent:nil.
+                attrs size == 0 ifTrue:[
+                    self objectAttributes:nil
+                ]
+            ]
+        ]
     ] valueUninterruptably
 
     "Created: / 22.1.1998 / 21:29:39 / av"
@@ -1787,14 +1790,13 @@
 ! !
 
 
-
 !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
     ]
 !
 
@@ -1803,7 +1805,7 @@
      argument anArgument to all my dependents."
 
     self dependentsDo:[:dependent |
-	dependent perform:aSelectorSymbol with:anArgument
+        dependent perform:aSelectorSymbol with:anArgument
     ]
 !
 
@@ -1812,7 +1814,7 @@
      grant the request, and return true if so"
 
     self dependentsDo:[:dependent |
-	dependent updateRequest ifFalse:[^ false].
+        dependent updateRequest ifFalse:[^ false].
     ].
     ^ true
 !
@@ -1822,7 +1824,7 @@
      grant the request, and return true if so"
 
     self dependentsDo:[:dependent |
-	(dependent updateRequest:aSymbol) ifFalse:[^ false].
+        (dependent updateRequest:aSymbol) ifFalse:[^ false].
     ].
     ^ true
 !
@@ -1850,9 +1852,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
 !
@@ -1864,9 +1866,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
 !
@@ -1893,7 +1895,7 @@
      and anArgument as arguments."
 
     self dependentsDo:[:dependent |
-	dependent update:aParameter with:anArgument from:self
+        dependent update:aParameter with:anArgument from:self
     ]
 !
 
@@ -1962,7 +1964,7 @@
 
     (self dependents includesIdentical:someone)
     ifFalse:[
-	^ aBlock value.
+        ^ aBlock value.
     ].
     self removeDependent:someone.
     ^ aBlock ensure:[ self addDependent:someone ]
@@ -1977,15 +1979,14 @@
     ^ self
 ! !
 
-
 !Object methodsFor:'comparing'!
 
 = 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
 !
@@ -1994,8 +1995,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 */
 
@@ -2013,28 +2014,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
@@ -2073,25 +2074,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"
@@ -2111,53 +2112,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"
@@ -2176,13 +2177,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"
@@ -2190,7 +2191,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
@@ -2207,9 +2208,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
 !
@@ -2218,8 +2219,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 );
@@ -2310,24 +2311,24 @@
     "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
     ].
 
     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.
+        ]
     ].
 !
 
@@ -2439,8 +2440,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 newLevel class sz "{Class: SmallInteger}" newInst|
 
@@ -2454,22 +2455,22 @@
     "process the named instance variables"
     sz := class instSize.
     1 to:sz do:[:i |
-	newInst := newObject instVarAt:i.
-	newInst notNil ifTrue:[
-	    newObject instVarAt:i put:(newInst copyToLevel:newLevel).
-	].
+        newInst := newObject instVarAt:i.
+        newInst notNil ifTrue:[
+            newObject instVarAt:i put:(newInst copyToLevel:newLevel).
+        ].
     ].
 
     class isVariable ifTrue:[
-	sz := newObject basicSize.
-
-	"process the indexed instance variables"
-	1 to:sz do:[:i |
-	    newInst := newObject basicAt:i.
-	    newInst notNil ifTrue:[
-		newObject basicAt:i put:(newInst copyToLevel:newLevel).
-	    ].
-	]
+        sz := newObject basicSize.
+
+        "process the indexed instance variables"
+        1 to:sz do:[:i |
+            newInst := newObject basicAt:i.
+            newInst notNil ifTrue:[
+                newObject basicAt:i put:(newInst copyToLevel:newLevel).
+            ].
+        ]
     ].
     ^ newObject
 
@@ -2477,24 +2478,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) ).
@@ -2591,11 +2592,11 @@
 
     myClass := self class.
     myClass isVariable ifTrue:[
-	basicSize := self basicSize.
-	aCopy := myClass basicNew:basicSize.
+        basicSize := self basicSize.
+        aCopy := myClass basicNew:basicSize.
     ] ifFalse:[
-	basicSize := 0.
-	aCopy := myClass basicNew
+        basicSize := 0.
+        aCopy := myClass basicNew
     ].
     aCopy setHashFrom:self.
     aDictionary at:self put:aCopy.
@@ -2605,40 +2606,40 @@
     "
     instSize := myClass instSize.
     1 to:instSize do:[:i |
-	(self skipInstvarIndexInDeepCopy:i) ifFalse:[
-	    iOrig := self instVarAt:i.
-	    iOrig notNil ifTrue:[
-		iCopy := aDictionary at:iOrig ifAbsent:nil.
-		iCopy isNil ifTrue:[
-		    iCopy := iOrig deepCopyUsing:aDictionary postCopySelector:postCopySelector
-		].
-		aCopy instVarAt:i put:iCopy
-	    ]
-	]
+        (self skipInstvarIndexInDeepCopy:i) ifFalse:[
+            iOrig := self instVarAt:i.
+            iOrig notNil ifTrue:[
+                iCopy := aDictionary at:iOrig ifAbsent:nil.
+                iCopy isNil ifTrue:[
+                    iCopy := iOrig deepCopyUsing:aDictionary postCopySelector:postCopySelector
+                ].
+                aCopy instVarAt:i put:iCopy
+            ]
+        ]
     ].
 
     "
      copy indexed instvars - if any
     "
     basicSize ~~ 0 ifTrue:[
-	myClass isBits ifTrue:[
-	    "block-copy indexed instvars"
-	    aCopy replaceFrom:1 to:basicSize with:self startingAt:1
-	] ifFalse:[
-	    "individual deep copy the indexed variables"
-	    1 to:basicSize do:[:i |
-		iOrig := self basicAt:i.
-		iOrig notNil ifTrue:[
-		    "/ used to be dict-includesKey-ifTrue[dict-at:],
-		    "/ changed to use dict-at:ifAbsent:, to avoid double lookup in dictionary
-		    iCopy := aDictionary at:iOrig ifAbsent:nil.
-		    iCopy isNil ifTrue:[
-			iCopy := iOrig deepCopyUsing:aDictionary postCopySelector:postCopySelector
-		    ].
-		    aCopy basicAt:i put:iCopy
-		]
-	    ]
-	]
+        myClass isBits ifTrue:[
+            "block-copy indexed instvars"
+            aCopy replaceFrom:1 to:basicSize with:self startingAt:1
+        ] ifFalse:[
+            "individual deep copy the indexed variables"
+            1 to:basicSize do:[:i |
+                iOrig := self basicAt:i.
+                iOrig notNil ifTrue:[
+                    "/ used to be dict-includesKey-ifTrue[dict-at:],
+                    "/ changed to use dict-at:ifAbsent:, to avoid double lookup in dictionary
+                    iCopy := aDictionary at:iOrig ifAbsent:nil.
+                    iCopy isNil ifTrue:[
+                        iCopy := iOrig deepCopyUsing:aDictionary postCopySelector:postCopySelector
+                    ].
+                    aCopy basicAt:i put:iCopy
+                ]
+            ]
+        ]
     ].
 
     aCopy perform:postCopySelector withOptionalArgument:self and:aDictionary.
@@ -2677,9 +2678,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"
@@ -2704,54 +2705,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
@@ -2771,9 +2772,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"
@@ -2806,9 +2807,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"
@@ -2830,11 +2831,11 @@
 
     "/ could still be a block or false.
     (aBooleanOrBlock value) ifFalse:[
-	AssertionFailedError
-	    raiseRequestWith:self
-	    errorString:('Assertion failed in ',
-			 thisContext sender printString,
-			 '[', thisContext sender lineNumber printString,']')
+        AssertionFailedError
+            raiseRequestWith:self
+            errorString:('Assertion failed in ',
+                         thisContext sender printString,
+                         '[', thisContext sender lineNumber printString,']')
     ].
 
     "
@@ -2855,9 +2856,9 @@
     (Smalltalk at:#IgnoreAssertion ifAbsent:false) == true ifTrue:[^ self].
 
     (aBooleanOrBlock value) ifFalse:[
-	AssertionFailedError
-	    raiseRequestWith:self
-	    errorString:(messageIfFailing, ' {',thisContext sender "methodHome" printString,' }')
+        AssertionFailedError
+            raiseRequestWith:self
+            errorString:(messageIfFailing, ' {',thisContext sender "methodHome" printString,' }')
     ].
 
     "
@@ -2874,12 +2875,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"
@@ -2899,9 +2900,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)
     ].
 
     "
@@ -2929,9 +2930,9 @@
     <resource: #skipInDebuggersWalkBack>
 
     (self isBreakPointEnabled:someKey) ifTrue:[
-	^ HaltSignal
-	    raiseRequestWith:someKey
-	    errorString:(infoString bindWith:someKey)
+        ^ HaltSignal
+            raiseRequestWith:someKey
+            errorString:(infoString bindWith:someKey)
     ].
 !
 
@@ -2961,7 +2962,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     (self isBreakPointEnabled:someKey) ifTrue:[
-	aBlock value
+        aBlock value
     ].
 
     "
@@ -2997,10 +2998,10 @@
     "{ Pragma: +optSpace }"
 
     EnabledBreakPoints notNil ifTrue:[
-	EnabledBreakPoints remove:someKey ifAbsent:[].
-	EnabledBreakPoints isEmpty ifTrue:[
-	    EnabledBreakPoints := nil
-	].
+        EnabledBreakPoints remove:someKey ifAbsent:[].
+        EnabledBreakPoints isEmpty ifTrue:[
+            EnabledBreakPoints := nil
+        ].
     ].
 
     "
@@ -3019,7 +3020,7 @@
     "{ Pragma: +optSpace }"
 
     EnabledBreakPoints isNil ifTrue:[
-	EnabledBreakPoints := Set new.
+        EnabledBreakPoints := Set new.
     ].
     EnabledBreakPoints add:someKey.
 
@@ -3043,7 +3044,12 @@
 
     Smalltalk ignoreHalt ifTrue:[^ self].
     "/ don't send #halt: here - ask cg why.
-    ^ HaltInterrupt raiseRequestWith:#halt
+    HaltInterrupt raiseRequestWith:#halt.
+    ^ self
+
+    "
+        (3 halt * 5)
+    "
 
     "Modified: / 02-08-1999 / 17:00:29 / stefan"
     "Modified: / 18-11-2010 / 11:21:51 / cg"
@@ -3058,7 +3064,8 @@
     <resource: #skipInDebuggersWalkBack>
 
     Smalltalk ignoreHalt ifTrue:[^ self].
-    ^ HaltInterrupt raiseRequestWith:#halt: errorString:aString
+    HaltInterrupt raiseRequestWith:#halt: errorString:aString.
+    ^ self
 
     "Modified: / 18-11-2010 / 11:22:16 / cg"
 !
@@ -3071,7 +3078,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 ])
@@ -3102,18 +3109,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'
     ]
 !
 
@@ -3161,7 +3168,7 @@
     ('         called from ' , sender sender printString) infoPrintCR.
     ].
     message notNil ifTrue:[
-	'------>  ' infoPrint. message infoPrintCR
+        '------>  ' infoPrint. message infoPrintCR
     ]
 
     "
@@ -3206,8 +3213,8 @@
     |spec sender|
 
     Smalltalk isSmalltalkDevelopmentSystem ifFalse:[
-	"ignore in production systems"
-	^ self.
+        "ignore in production systems"
+        ^ self.
     ].
 
     spec := aContext methodPrintString.
@@ -3216,14 +3223,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
     ]
 
     "
@@ -3243,9 +3250,9 @@
     "
      example:
 
-	...
-	self todo.
-	...
+        ...
+        self todo.
+        ...
     "
 !
 
@@ -3260,11 +3267,11 @@
     "
      example:
 
-	...
-	self todo:[
-	    code which needs more work ...
-	].
-	...
+        ...
+        self todo:[
+            code which needs more work ...
+        ].
+        ...
     "
 
     "Created: / 25-05-2007 / 21:34:39 / cg"
@@ -3285,35 +3292,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"
@@ -3335,10 +3342,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.
     ]
 !
 
@@ -3353,7 +3360,7 @@
     |deps|
 
     (deps := Dependencies at:self ifAbsent:nil) isNil ifTrue:[
-	^ #().
+        ^ #().
     ].
     ^ deps
 
@@ -3372,24 +3379,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"
@@ -3402,15 +3409,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"
@@ -3443,43 +3450,43 @@
 
     wasBlocked := OperatingSystem blockInterrupts.
     [
-	|deps n d|
-
-	deps := self dependents.
-	deps size ~~ 0 ifTrue:[
-
-	    "/ 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. Here we have to do the inverse ...
-
-	    ((deps class == WeakArray) or:[deps class == Array]) ifTrue:[
-		((d := deps at:1) == anObject
-		or:[d isNil
-		or:[d == 0]]) ifTrue:[
-		    self dependents:nil
-		]
-	    ] ifFalse:[
-		deps remove:anObject ifAbsent:[].
-		(n := deps size) == 0 ifTrue:[
-		    self dependents:nil
-		] ifFalse:[
-		    n == 1 ifTrue:[
-			d := deps firstIfEmpty:nil.
-			d notNil ifTrue:[
-			    deps := (deps isWeakCollection ifTrue:[WeakArray] ifFalse:[Array]) with:d
-			] ifFalse:[
-			    deps := nil
-			].
-			self dependents:deps.
-		    ]
-		]
-	    ]
-	]
+        |deps n d|
+
+        deps := self dependents.
+        deps size ~~ 0 ifTrue:[
+
+            "/ 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. Here we have to do the inverse ...
+
+            ((deps class == WeakArray) or:[deps class == Array]) ifTrue:[
+                ((d := deps at:1) == anObject
+                or:[d isNil
+                or:[d == 0]]) ifTrue:[
+                    self dependents:nil
+                ]
+            ] ifFalse:[
+                deps remove:anObject ifAbsent:[].
+                (n := deps size) == 0 ifTrue:[
+                    self dependents:nil
+                ] ifFalse:[
+                    n == 1 ifTrue:[
+                        d := deps firstIfEmpty:nil.
+                        d notNil ifTrue:[
+                            deps := (deps isWeakCollection ifTrue:[WeakArray] ifFalse:[Array]) with:d
+                        ] ifFalse:[
+                            deps := nil
+                        ].
+                        self dependents:deps.
+                    ]
+                ]
+            ]
+        ]
     ] ensure:[
-	wasBlocked ifFalse:[
-	    OperatingSystem unblockInterrupts
-	]
+        wasBlocked ifFalse:[
+            OperatingSystem unblockInterrupts
+        ]
     ]
 
     "Modified: / 05-07-2011 / 22:49:31 / cg"
@@ -3502,37 +3509,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"
@@ -3555,11 +3562,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"
@@ -3578,29 +3585,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"
@@ -3633,8 +3640,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 ifTrue:[
-	self printOn:aGCOrStream.
-	^ self
+        self printOn:aGCOrStream.
+        ^ self
     ].
     ^ self displayOn:aGCOrStream x:0 y:0.
 
@@ -3670,9 +3677,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"
@@ -3694,7 +3701,7 @@
      but sometimes redefined for a better look.
 
      Note: the base method (used by the inspector) is #displayOn:.
-	   So you should implement #displayOn: instead of #displayString in subclasses."
+           So you should implement #displayOn: instead of #displayString in subclasses."
 
     |s|
 
@@ -3856,22 +3863,22 @@
     stop := aSpecArray size.
 
     2 to:stop by:2 do:[:i|
-	sel := aSpecArray at:i.
-	litVal := aSpecArray at:i + 1.
-
-	(self respondsTo:sel) ifTrue:[
-	    val := litVal decodeAsLiteralArray.
-	    self perform:sel with:val
-	] ifFalse:[
-	    Transcript show:self class name; show:': unhandled literalArrayEncoding attribute: '.
-	    Transcript showCR:sel.
-
-	    "/ thats a debug halt,
-	    "/ it should probably be removed (to simply ignore unhandled attributes)...
-	    "/ for now, it is left in, in order to easily find incompatibilities between
-	    "/ VW and ST/X.
-	    self breakPoint:#cg.
-	]
+        sel := aSpecArray at:i.
+        litVal := aSpecArray at:i + 1.
+
+        (self respondsTo:sel) ifTrue:[
+            val := litVal decodeAsLiteralArray.
+            self perform:sel with:val
+        ] ifFalse:[
+            Transcript show:self class name; show:': unhandled literalArrayEncoding attribute: '.
+            Transcript showCR:sel.
+
+            "/ thats a debug halt,
+            "/ it should probably be removed (to simply ignore unhandled attributes)...
+            "/ for now, it is left in, in order to easily find incompatibilities between
+            "/ VW and ST/X.
+            self breakPoint:#cg.
+        ]
     ]
 !
 
@@ -3884,7 +3891,7 @@
     |names encoding cls skipped slots|
 
     self isLiteral ifTrue:[
-	^ self
+        ^ self
     ].
 
     slots    := self literalArrayEncodingSlotOrder.
@@ -3895,22 +3902,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
     "
 !
 
@@ -3967,34 +3974,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
@@ -4011,8 +4018,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"
 !
@@ -4149,7 +4156,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     mayProceed ifTrue:[
-	^ ProceedableError raiseRequestWith:#error: errorString:aString
+        ^ ProceedableError raiseRequestWith:#error: errorString:aString
     ].
 
     Error raiseWith:#error: errorString:aString
@@ -4278,7 +4285,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     index isInteger ifFalse:[
-	^ self indexNotInteger:index
+        ^ self indexNotInteger:index
     ].
     ^ self subscriptBoundsError:index
 !
@@ -4293,9 +4300,9 @@
 "/    ^ self error:'bad assign of ' , self printString ,
 "/                  ' (' , self class name , ') to integer-typed variable'
     ^ InvalidTypeError
-	raiseRequestErrorString:(
-	    'bad assign of ' , self printString ,
-		  ' (' , self class name , ') to integer-typed variable')
+        raiseRequestErrorString:(
+            'bad assign of ' , self printString ,
+                  ' (' , self class name , ') to integer-typed variable')
 
     "Modified: / 02-11-2012 / 10:25:36 / cg"
 !
@@ -4309,7 +4316,7 @@
 
     "/ self error:'not an executable code object'
     ^ ExecutionError
-	raiseRequestErrorString:'not an executable code object'
+        raiseRequestErrorString:'not an executable code object'
 
     "Created: / 01-08-1997 / 00:16:44 / cg"
 !
@@ -4335,7 +4342,7 @@
 
     "/ ^ self error:'argument must be a Rectangle'
     ^ InvalidTypeError
-	raiseRequestErrorString:'argument must be a Rectangle'
+        raiseRequestErrorString:'argument must be a Rectangle'
 
     "Modified: / 02-11-2012 / 10:24:53 / cg"
 !
@@ -4349,7 +4356,7 @@
 
     "/ ^ self error:'argument must be a String'
     ^ InvalidTypeError
-	raiseRequestErrorString:'argument must be a String'
+        raiseRequestErrorString:'argument must be a String'
 
     "Modified: / 02-11-2012 / 10:24:35 / cg"
 !
@@ -4364,7 +4371,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     ^ SubscriptOutOfBoundsError
-	raiseRequestErrorString:'receiver has no indexed variables'
+        raiseRequestErrorString:'receiver has no indexed variables'
 
     "
      1234 at:4
@@ -4383,7 +4390,7 @@
 
     "/ ^ self error:'method/functionality is not yet implemented'
     ^ MethodNotAppropriateError
-	raiseRequestErrorString:'method/functionality is not yet implemented'
+        raiseRequestErrorString:'method/functionality is not yet implemented'
 
     "Modified: / 02-11-2012 / 10:24:12 / cg"
 !
@@ -4403,95 +4410,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.
-		^ 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:[
+        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
     ].
 
     "
@@ -4499,13 +4506,14 @@
     "
     debugger := self appropriateDebugger:(thisContext selector).
     debugger isNil ifTrue:[
-	^ AbortOperationRequest raiseRequest
-    ].
-
-    ^ debugger
-	enter:ex returnableSuspendedContext
-	withMessage:ex descriptionForDebugger
-	mayProceed:(ex mayProceed).
+        ^ AbortOperationRequest raiseRequest
+    ].
+
+    ^ debugger enterException:ex.
+"/    ^ debugger
+"/        enter:ex returnableSuspendedContext
+"/        withMessage:ex descriptionForDebugger
+"/        mayProceed:(ex mayProceed).
 
     "Modified: / 05-12-2011 / 11:53:10 / cg"
 !
@@ -4524,15 +4532,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
      ]
     "
 !
@@ -4550,8 +4558,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'
@@ -4572,7 +4580,7 @@
     sender := thisContext sender.
 
     ^ UnimplementedFunctionalityError
-	raiseRequestWith:(Message selector:sender selector arguments:sender args)
+        raiseRequestWith:(Message selector:sender selector arguments:sender args)
 
      "
       self shouldImplement
@@ -4593,8 +4601,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'
@@ -4607,7 +4615,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     ^ ExecutionError
-	raiseRequestErrorString:'Oops, this may never reached. Something somewhere was terribly wrong.'.
+        raiseRequestErrorString:'Oops, this may never reached. Something somewhere was terribly wrong.'.
 
     "Modified: / 20-04-2005 / 18:59:28 / janfrog"
 !
@@ -4619,7 +4627,7 @@
 
     "/ ^ self error:'This message never may be sent to me!!'.
     ^ MethodNotAppropriateError
-	raiseRequestErrorString:'This message never may be sent to me!!'
+        raiseRequestErrorString:'This message never may be sent to me!!'
 
     "Modified: / 20-04-2005 / 18:59:28 / janfrog"
     "Modified: / 02-11-2012 / 10:10:42 / cg"
@@ -4635,7 +4643,7 @@
 
     "/ self error:'method/functionality not appropriate for this class'
     ^ MethodNotAppropriateError
-	raiseRequestErrorString:'method/functionality not appropriate for this class'
+        raiseRequestErrorString:'method/functionality not appropriate for this class'
 
     "Modified: / 02-11-2012 / 10:02:25 / cg"
 !
@@ -4685,8 +4693,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"
 !
@@ -4703,9 +4711,9 @@
 "/                  ' (' , self class name , ') to typed variable'
 
     ^ InvalidTypeError
-	raiseRequestErrorString:
-	    ('bad assign of ' , self printString ,
-		  ' (' , self class name , ') to typed variable')
+        raiseRequestErrorString:
+            ('bad assign of ' , self printString ,
+                  ' (' , self class name , ') to typed variable')
 
     "Modified: / 02-11-2012 / 10:19:15 / cg"
 ! !
@@ -4721,7 +4729,7 @@
     ^ 0
 
     "
-	[1 // 0] on:ArithmeticError do:9999
+        [1 // 0] on:ArithmeticError do:9999
     "
 !
 
@@ -4735,16 +4743,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
 
@@ -4888,30 +4896,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
@@ -4937,12 +4945,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 ...
@@ -5007,31 +5015,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"
@@ -5063,42 +5071,42 @@
      action title screen|
 
     thisContext isRecursive ifTrue:[
-	'Severe error: signalInterrupt while processing a signalInterrupt.' errorPrintCR.
-	'Terminating process ' errorPrint. Processor activeProcess errorPrintCR.
+        'Severe error: signalInterrupt while processing a signalInterrupt.' errorPrintCR.
+        'Terminating process ' errorPrint. Processor activeProcess errorPrintCR.
 "/        GenericException handle:[:ex |
 "/            "/ ignore any error during termination
 "/        ] do:[
 "/           Processor activeProcess terminate.
 "/        ].
-	Processor activeProcess terminateNoSignal.
+        Processor activeProcess terminateNoSignal.
     ].
 
     "if there has been an ST-signal installed, use it ..."
     sig := OperatingSystem operatingSystemSignal:signalNumber.
     sig notNil ifTrue:[
-	sig raiseSignalWith:signalNumber.
-	^ self.
+        sig raiseSignalWith:signalNumber.
+        ^ self.
     ].
 
     "/ if handled, raise OSSignalInterruptSignal
     OSSignalInterrupt isHandled ifTrue:[
-	OSSignalInterrupt raiseRequestWith:signalNumber.
-	^ self.
+        OSSignalInterrupt raiseRequestWith:signalNumber.
+        ^ self.
     ].
 
     "
      special cases
-	- SIGPWR: power failure - write a crash image and continue
-	- SIGHUP: hang up - write a crash image and exit
+        - SIGPWR: power failure - write a crash image and continue
+        - SIGHUP: hang up - write a crash image and exit
     "
     (signalNumber == OperatingSystem sigPWR) ifTrue:[
-	SnapshotError ignoreIn:[ObjectMemory writeCrashImage].
-	^ self.
+        SnapshotError ignoreIn:[ObjectMemory writeCrashImage].
+        ^ self.
     ].
     (signalNumber == OperatingSystem sigHUP) ifTrue:[
-	SnapshotError ignoreIn:[ObjectMemory writeCrashImage].
-	'Object [info]: exit due to hangup signal.' errorPrintCR.
-	Smalltalk exit:1.
+        SnapshotError ignoreIn:[ObjectMemory writeCrashImage].
+        'Object [info]: exit due to hangup signal.' errorPrintCR.
+        Smalltalk exit:1.
     ].
 
     name := OperatingSystem nameForSignal:signalNumber.
@@ -5108,7 +5116,7 @@
      or:[(screen := Screen current) isNil
      or:[(screen := Screen default) isNil
      or:[screen isOpen not]]]) ifTrue:[
-	^ self startMiniDebuggerOrExit:'OS-Signal (' , name, ')'.
+        ^ self startMiniDebuggerOrExit:'OS-Signal (' , name, ')'.
     ].
 
     "ungrab - in case it happened in a box/popupview
@@ -5120,105 +5128,105 @@
 
     "there is a screen. use it to bring up a box asking for what to do ..."
     Screen currentScreenQuerySignal answer:screen do:[
-	"
-	 SIGBUS, SIGSEGV and SIGILL do not make sense to ignore (i.e. continue)
-	 since the system will retry the faulty instruction, which leads to
-	 another signal - to avoid frustration, better not offer this option.
-	"
-	fatal := OperatingSystem isFatalSignal:signalNumber.
-	fatal ifTrue:[
-	    (Debugger isNil or:[here isRecursive]) ifTrue:[
-		'Object [hard error]: signal ' errorPrint. signalNumber errorPrintCR.
-		^ self startMiniDebuggerOrExit:'OS-Signal (' , name, ')'.
-	    ].
-	    "
-	     a hard signal - go into debugger immediately
-	    "
-	    msg := 'OS-signal: ', name.
-
-	    "/ the IRQ-PC is passed as low-hi, to avoid the need
-	    "/ to allocate a LargeInteger in the VM during signal
-	    "/ time. I know, this is ugly.
-
-	    InterruptPcLow notNil ifTrue:[
-		pc := InterruptPcLow + (InterruptPcHi bitShift:((SmallInteger maxBits + 1) // 2)).
-		pc ~~ 0 ifTrue:[
-		    msg := msg , ' PC=' , (pc printStringRadix:16)
-		].
-	    ].
-	    InterruptAddrLow notNil ifTrue:[
-		addr := InterruptAddrLow + (InterruptAddrHi bitShift:((SmallInteger maxBits + 1) // 2)).
-		addr ~~ 0 ifTrue:[
-		    msg := msg , ' ADDR=' , (addr printStringRadix:16)
-		].
-	    ].
-	    Debugger enter:here withMessage:msg mayProceed:false.
-	    "unreachable"
-	    ^ nil.
-	].
-
-	"if possible, open an option box asking the user what do.
-	 Otherwise, start a debugger"
-	Dialog notNil ifTrue:[
-	    titles := #('save crash image' 'dump core' 'exit ST/X' 'debug').
-	    actions := #(save core exit debug).
-
-	    action := nil.
-	    title := 'OS Signal caught (' , name, ')'.
-	    title := (title , '\[in ST-process: ' , Processor activeProcess nameOrId ,']') withCRs.
-
-	    "/ if cought while in the scheduler or event dispatcher,
-	    "/ a modal dialog is not possible ...
-	    "/ (therefore, abort & return does not makes sense)
-
-	    Processor activeProcess isSystemProcess ifFalse:[
-		titles := #('abort') , titles.
-		actions := #(abort), actions.
-
-		badContext canReturn ifTrue:[
-		    titles := #('return') , titles.
-		    actions :=  #(return), actions.
-		].
-	    ].
-
-	    fatal ifFalse:[
-		titles := titles, #('ignore').
-		actions := actions , #(ignore).
-	    ].
-	    action := Dialog choose:title
-			     labels:titles
-			     values:actions
-			     default:(fatal ifTrue:[nil] ifFalse:[#ignore]).
-
-	    "Dialog may fail (if system process), default action is debug"
-	    action isEmptyOrNil ifTrue:[action := #debug].
-	] ifFalse:[
-	    action := #debug.
-	].
-
-	action == #save ifTrue:[
-	    ObjectMemory writeCrashImage
-	].
-	action == #core ifTrue:[
-	    Smalltalk fatalAbort
-	].
-	action == #exit ifTrue:[
-	    Smalltalk exit
-	].
-	action == #return ifTrue:[
-	    badContext return
-	].
-	action == #abort ifTrue:[
-	    AbortOperationRequest raise.
-	].
-
-	action == #debug ifTrue:[
-	    Debugger isNil ifTrue:[
-		^ self startMiniDebuggerOrExit:'OS-Signal (' , name, ')'.
-	    ].
-	    Debugger enter:here withMessage:('OS-Signal ', name) mayProceed:true.
-	].
-	"action == #ignore"
+        "
+         SIGBUS, SIGSEGV and SIGILL do not make sense to ignore (i.e. continue)
+         since the system will retry the faulty instruction, which leads to
+         another signal - to avoid frustration, better not offer this option.
+        "
+        fatal := OperatingSystem isFatalSignal:signalNumber.
+        fatal ifTrue:[
+            (Debugger isNil or:[here isRecursive]) ifTrue:[
+                'Object [hard error]: signal ' errorPrint. signalNumber errorPrintCR.
+                ^ self startMiniDebuggerOrExit:'OS-Signal (' , name, ')'.
+            ].
+            "
+             a hard signal - go into debugger immediately
+            "
+            msg := 'OS-signal: ', name.
+
+            "/ the IRQ-PC is passed as low-hi, to avoid the need
+            "/ to allocate a LargeInteger in the VM during signal
+            "/ time. I know, this is ugly.
+
+            InterruptPcLow notNil ifTrue:[
+                pc := InterruptPcLow + (InterruptPcHi bitShift:((SmallInteger maxBits + 1) // 2)).
+                pc ~~ 0 ifTrue:[
+                    msg := msg , ' PC=' , (pc printStringRadix:16)
+                ].
+            ].
+            InterruptAddrLow notNil ifTrue:[
+                addr := InterruptAddrLow + (InterruptAddrHi bitShift:((SmallInteger maxBits + 1) // 2)).
+                addr ~~ 0 ifTrue:[
+                    msg := msg , ' ADDR=' , (addr printStringRadix:16)
+                ].
+            ].
+            Debugger enter:here withMessage:msg mayProceed:false.
+            "unreachable"
+            ^ nil.
+        ].
+
+        "if possible, open an option box asking the user what do.
+         Otherwise, start a debugger"
+        Dialog notNil ifTrue:[
+            titles := #('save crash image' 'dump core' 'exit ST/X' 'debug').
+            actions := #(save core exit debug).
+
+            action := nil.
+            title := 'OS Signal caught (' , name, ')'.
+            title := (title , '\[in ST-process: ' , Processor activeProcess nameOrId ,']') withCRs.
+
+            "/ if cought while in the scheduler or event dispatcher,
+            "/ a modal dialog is not possible ...
+            "/ (therefore, abort & return does not makes sense)
+
+            Processor activeProcess isSystemProcess ifFalse:[
+                titles := #('abort') , titles.
+                actions := #(abort), actions.
+
+                badContext canReturn ifTrue:[
+                    titles := #('return') , titles.
+                    actions :=  #(return), actions.
+                ].
+            ].
+
+            fatal ifFalse:[
+                titles := titles, #('ignore').
+                actions := actions , #(ignore).
+            ].
+            action := Dialog choose:title
+                             labels:titles
+                             values:actions
+                             default:(fatal ifTrue:[nil] ifFalse:[#ignore]).
+
+            "Dialog may fail (if system process), default action is debug"
+            action isEmptyOrNil ifTrue:[action := #debug].
+        ] ifFalse:[
+            action := #debug.
+        ].
+
+        action == #save ifTrue:[
+            ObjectMemory writeCrashImage
+        ].
+        action == #core ifTrue:[
+            Smalltalk fatalAbort
+        ].
+        action == #exit ifTrue:[
+            Smalltalk exit
+        ].
+        action == #return ifTrue:[
+            badContext return
+        ].
+        action == #abort ifTrue:[
+            AbortOperationRequest raise.
+        ].
+
+        action == #debug ifTrue:[
+            Debugger isNil ifTrue:[
+                ^ self startMiniDebuggerOrExit:'OS-Signal (' , name, ')'.
+            ].
+            Debugger enter:here withMessage:('OS-Signal ', name) mayProceed:true.
+        ].
+        "action == #ignore"
     ].
 
     "Modified: / 15-09-2011 / 16:38:14 / cg"
@@ -5237,10 +5245,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.
 !
@@ -5293,7 +5301,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
@@ -5314,7 +5322,7 @@
 #define SEL_AND_ILC_INIT_256(l) SEL_AND_ILC_INIT_128(l) , SEL_AND_ILC_INIT_128(l)
 #define nilcs 256
 
-	static struct { OBJ sel; struct inlineCache ilc; } sel_and_ilc[nilcs] = { SEL_AND_ILC_INIT_256(29) };
+        static struct { OBJ sel; struct inlineCache ilc; } sel_and_ilc[nilcs] = { SEL_AND_ILC_INIT_256(29) };
 
 #undef SEL_AND_ILC_INIT_1
 #undef SEL_AND_ILC_INIT_2
@@ -5326,28 +5334,28 @@
 #undef SEL_AND_ILC_INIT_128
 #undef SEL_AND_ILC_INIT_256
 
-	static flip = 0;
-	int i;
-	for (i = 0; i < nilcs; i++) {
-	   if (sel == sel_and_ilc[i].sel) {
-		pIlc = &sel_and_ilc[i].ilc;
-		goto perform0_send_and_return;
-	   }
-	}
-	/*printf("Object >> #perform: #%s --> no PIC found\n", __symbolVal(aSelector));*/
-	pIlc = &sel_and_ilc[flip].ilc;
-	sel_and_ilc[flip].sel = sel;
-	flip = (flip + 1) % nilcs;
-	pIlc->ilc_func = __SEND0ADDR__;
-	if (pIlc->ilc_poly) {
-	     __flushPolyCache(pIlc->ilc_poly);
-	    pIlc->ilc_poly = 0;
-	}
+        static flip = 0;
+        int i;
+        for (i = 0; i < nilcs; i++) {
+           if (sel == sel_and_ilc[i].sel) {
+                pIlc = &sel_and_ilc[i].ilc;
+                goto perform0_send_and_return;
+           }
+        }
+        /*printf("Object >> #perform: #%s --> no PIC found\n", __symbolVal(aSelector));*/
+        pIlc = &sel_and_ilc[flip].ilc;
+        sel_and_ilc[flip].sel = sel;
+        flip = (flip + 1) % nilcs;
+        pIlc->ilc_func = __SEND0ADDR__;
+        if (pIlc->ilc_poly) {
+             __flushPolyCache(pIlc->ilc_poly);
+            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:#()
@@ -5360,7 +5368,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 ?).
@@ -5374,174 +5382,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
 
 
@@ -5561,7 +5569,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: */
 
@@ -5577,7 +5585,7 @@
 #define SEL_AND_ILC_INIT_256(l) SEL_AND_ILC_INIT_128(l) , SEL_AND_ILC_INIT_128(l)
 #define nilcs 256
 
-	static struct { OBJ sel; struct inlineCache ilc; } sel_and_ilc[nilcs] = { SEL_AND_ILC_INIT_256(29) };
+        static struct { OBJ sel; struct inlineCache ilc; } sel_and_ilc[nilcs] = { SEL_AND_ILC_INIT_256(29) };
 
 #undef SEL_AND_ILC_INIT_1
 #undef SEL_AND_ILC_INIT_2
@@ -5589,28 +5597,28 @@
 #undef SEL_AND_ILC_INIT_128
 #undef SEL_AND_ILC_INIT_256
 
-	static flip = 0;
-	int i;
-	for (i = 0; i < nilcs; i++) {
-	   if (sel == sel_and_ilc[i].sel) {
-		pIlc = &sel_and_ilc[i].ilc;
-		goto perform1_send_and_return;
-	   }
-	}
-	/*printf("Object >> #perform: #%s with: arg --> no PIC found\n", __symbolVal(aSelector));*/
-	pIlc = &sel_and_ilc[flip].ilc;
-	sel_and_ilc[flip].sel = sel;
-	flip = (flip + 1) % nilcs;
-	pIlc->ilc_func = __SEND1ADDR__;
-	if (pIlc->ilc_poly) {
-	     __flushPolyCache(pIlc->ilc_poly);
-	    pIlc->ilc_poly = 0;
-	}
+        static flip = 0;
+        int i;
+        for (i = 0; i < nilcs; i++) {
+           if (sel == sel_and_ilc[i].sel) {
+                pIlc = &sel_and_ilc[i].ilc;
+                goto perform1_send_and_return;
+           }
+        }
+        /*printf("Object >> #perform: #%s with: arg --> no PIC found\n", __symbolVal(aSelector));*/
+        pIlc = &sel_and_ilc[flip].ilc;
+        sel_and_ilc[flip].sel = sel;
+        flip = (flip + 1) % nilcs;
+        pIlc->ilc_func = __SEND1ADDR__;
+        if (pIlc->ilc_poly) {
+             __flushPolyCache(pIlc->ilc_poly);
+            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)
@@ -5641,7 +5649,7 @@
 #define SEL_AND_ILC_INIT_256(l) SEL_AND_ILC_INIT_128(l) , SEL_AND_ILC_INIT_128(l)
 #define nilcs 256
 
-	static struct { OBJ sel; struct inlineCache ilc; } sel_and_ilc[nilcs] = { SEL_AND_ILC_INIT_256(29) };
+        static struct { OBJ sel; struct inlineCache ilc; } sel_and_ilc[nilcs] = { SEL_AND_ILC_INIT_256(29) };
 
 #undef SEL_AND_ILC_INIT_1
 #undef SEL_AND_ILC_INIT_2
@@ -5653,28 +5661,28 @@
 #undef SEL_AND_ILC_INIT_128
 #undef SEL_AND_ILC_INIT_256
 
-	static flip = 0;
-	int i;
-	for (i = 0; i < nilcs; i++) {
-	   if (sel == sel_and_ilc[i].sel) {
-		pIlc = &sel_and_ilc[i].ilc;
-		goto perform2_send_and_return;
-	   }
-	}
-	/*printf("Object >> #perform: #%s with: with: --> no PIC found\n", __symbolVal(aSelector));*/
-	pIlc = &sel_and_ilc[flip].ilc;
-	sel_and_ilc[flip].sel = sel;
-	flip = (flip + 1) % nilcs;
-	pIlc->ilc_func = __SEND2ADDR__;
-	if (pIlc->ilc_poly) {
-	     __flushPolyCache(pIlc->ilc_poly);
-	    pIlc->ilc_poly = 0;
-	}
+        static flip = 0;
+        int i;
+        for (i = 0; i < nilcs; i++) {
+           if (sel == sel_and_ilc[i].sel) {
+                pIlc = &sel_and_ilc[i].ilc;
+                goto perform2_send_and_return;
+           }
+        }
+        /*printf("Object >> #perform: #%s with: with: --> no PIC found\n", __symbolVal(aSelector));*/
+        pIlc = &sel_and_ilc[flip].ilc;
+        sel_and_ilc[flip].sel = sel;
+        flip = (flip + 1) % nilcs;
+        pIlc->ilc_func = __SEND2ADDR__;
+        if (pIlc->ilc_poly) {
+             __flushPolyCache(pIlc->ilc_poly);
+            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)
@@ -5693,32 +5701,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)
@@ -5737,34 +5745,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)
@@ -5783,38 +5791,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)
 
 !
 
@@ -5830,39 +5838,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)
 
 !
 
@@ -5878,398 +5886,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:;
 %}.
@@ -6285,7 +6293,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
 
@@ -6310,10 +6318,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.
 
@@ -6338,13 +6346,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.
 
@@ -6369,16 +6377,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.
 
@@ -6400,8 +6408,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:#()
 
@@ -6430,8 +6438,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
 
@@ -6451,8 +6459,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)
 
@@ -6472,8 +6480,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)
 
@@ -6495,8 +6503,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)
 
@@ -6518,10 +6526,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.
 !
@@ -6554,16 +6562,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.
@@ -6616,10 +6624,10 @@
     | cls|
 
     (cls := self class) == self ifTrue:[
-	^ 'a funny object'
+        ^ 'a funny object'
     ].
     cls isNil ifTrue:[
-	^ 'a nil-classes object'        "/ cannot happen
+        ^ 'a nil-classes object'        "/ cannot happen
     ].
     ^ cls nameWithArticle
 
@@ -6709,7 +6717,7 @@
      These messages can be turned on/off by 'Object infoPrinting:true/false'"
 
     InfoPrinting == true ifTrue:[
-	self errorPrint
+        self errorPrint
     ]
 !
 
@@ -6722,7 +6730,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"
@@ -6991,9 +6999,9 @@
     |rslt|
 
     Error handle:[:ex |
-	rslt := exceptionBlock value
+        rslt := exceptionBlock value
     ] do:[
-	rslt := self printString
+        rslt := self printString
     ].
     ^ rslt
 !
@@ -7134,12 +7142,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.
@@ -7148,34 +7156,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:$).
 
@@ -7238,13 +7246,13 @@
     |stream|
 
     stream := Processor activeProcess isSystemProcess
-			ifTrue:[Stderr]
-			ifFalse:[Transcript].
+                        ifTrue:[Stderr]
+                        ifFalse:[Transcript].
     StreamError catch:[
-	aBlock value:stream.
+        aBlock value:stream.
     ].
     stream ~~ Stderr ifTrue:[
-	aBlock value:Stderr.
+        aBlock value:Stderr.
     ].
 
     "Created: / 21-04-2011 / 12:46:21 / cg"
@@ -7274,43 +7282,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
@@ -7327,36 +7335,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
 
@@ -7398,7 +7406,7 @@
 %{  /* NOCONTEXT */
 
     if (__lookup(__Class(self), aSelector) == nil) {
-	RETURN ( false );
+        RETURN ( false );
     }
     RETURN ( true );
 %}
@@ -7439,7 +7447,6 @@
     ^ self
 ! !
 
-
 !Object methodsFor:'secure message sending'!
 
 ?: selector
@@ -7505,17 +7512,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
 
@@ -7539,17 +7546,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
 
@@ -7576,17 +7583,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
 !
@@ -7604,17 +7611,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
 
@@ -7670,148 +7677,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
 !
@@ -7831,19 +7838,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
 
@@ -7862,21 +7869,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].
+            ]
+        ]
     ].
 
     "
@@ -7900,24 +7907,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
 
@@ -7937,7 +7944,7 @@
     int nInsts, i;
 
     if (! __isNonNilObject(self)) {
-	RETURN (false);
+        RETURN (false);
     }
 
     /*
@@ -7946,38 +7953,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 */
 
@@ -8042,7 +8049,6 @@
     "
 ! !
 
-
 !Object methodsFor:'synchronized evaluation'!
 
 freeSynchronizationSemaphore
@@ -8053,8 +8059,8 @@
 
     sema := self synchronizationSemaphore.
     sema notNil ifTrue:[
-	sema wait.              "/ get lock
-	self synchronizationSemaphore:nil.
+        sema wait.              "/ get lock
+        self synchronizationSemaphore:nil.
     ].
 
     "
@@ -8085,10 +8091,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"
@@ -8103,8 +8109,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].
@@ -8143,7 +8149,7 @@
 
 %{  /* NOCONTEXT */
     if (! __isNonNilObject(self)) {
-	RETURN (self);
+        RETURN (self);
     }
     __beImmutable(self);
 %}
@@ -8154,7 +8160,7 @@
 
 %{  /* NOCONTEXT */
     if (! __isNonNilObject(self)) {
-	RETURN (self);
+        RETURN (self);
     }
     __beMutable(self);
 %}
@@ -8178,7 +8184,7 @@
       - the Collection-classes have been rewritten to not use it.)"
 %{
     if (__primBecome(self, anotherObject)) {
-	RETURN ( self );
+        RETURN ( self );
     }
 %}.
     self primitiveFailed
@@ -8194,7 +8200,7 @@
 
 %{
     if (__primBecomeNil(self)) {
-	RETURN ( nil );
+        RETURN ( nil );
     }
 %}.
     self primitiveFailed
@@ -8215,7 +8221,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
@@ -8236,72 +8242,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;
-
-	    __objPtr(me)->o_class = (CLASS_OBJ)otherClass;
-	    __STORE(me, otherClass);
-	    RETURN (me);
-	}
+        {
+            OBJ me = self;
+
+            __objPtr(me)->o_class = (CLASS_OBJ)otherClass;
+            __STORE(me, otherClass);
+            RETURN (me);
+        }
 %}.
     ].
 
@@ -8329,7 +8335,7 @@
 
 %{  /* NOCONTEXT */
     if (! __isNonNilObject(self)) {
-	RETURN (true);
+        RETURN (true);
     }
     RETURN (__isImmutable(self) ? true : false);
 %}
@@ -8345,7 +8351,7 @@
     int nInsts, i;
 
     if (! __isNonNilObject(self)) {
-	RETURN (false);
+        RETURN (false);
     }
 
     /*
@@ -8354,33 +8360,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);
 %}.
@@ -8404,27 +8410,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
 
@@ -8447,21 +8453,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.
      "
@@ -8486,8 +8492,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
 !
@@ -8496,8 +8502,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
 
@@ -8507,8 +8513,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
 
@@ -8518,8 +8524,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
 
@@ -8875,21 +8881,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 */
@@ -8897,10 +8903,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 );
 %}
@@ -8955,16 +8961,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
 !
@@ -9015,8 +9021,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
 !
@@ -9039,11 +9045,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
     "
 !
 
@@ -9269,8 +9275,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
 ! !
@@ -9299,7 +9305,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
     ].
 
     "
@@ -9309,12 +9315,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.
      ]
     "
 
@@ -9346,7 +9352,7 @@
 
     answer := self confirmWithCancel:aString.
     answer isNil ifTrue:[
-	^ cancelBlock value
+        ^ cancelBlock value
     ].
     ^ answer
 
@@ -9382,10 +9388,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
@@ -9398,9 +9404,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'
@@ -9426,128 +9432,128 @@
     |currentScreen con sender action boxLabels boxValues default s|
 
     Smalltalk isInitialized ifFalse:[
-	'errorNotification: ' print. aString printCR.
-	aContext sender printAllLevels:10.
-	^ nil
+        'errorNotification: ' print. aString printCR.
+        aContext sender printAllLevels:10.
+        ^ nil
     ].
 
     (Dialog isNil
      or:[Screen isNil
      or:[(currentScreen := Screen current) isNil
      or:[currentScreen isOpen not]]]) ifTrue:[
-	"
-	 on systems without GUI, simply show
-	 the message on the Transcript and abort.
-	"
-	Transcript showCR:aString.
-	AbortOperationRequest raise.
-	"not reached"
-	^ nil
+        "
+         on systems without GUI, simply show
+         the message on the Transcript and abort.
+        "
+        Transcript showCR:aString.
+        AbortOperationRequest raise.
+        "not reached"
+        ^ nil
     ].
 
     Processor activeProcessIsSystemProcess ifTrue:[
-	action := #debug.
-	sender := aContext.
-	Debugger isNil ifTrue:[
-	    '****************** Cought Error while in SystemProcess ****************' errorPrintCR.
-	    aString errorPrintCR.
-	    Exception handle:[:ex |
-		'Cought recursive error while printing backtrace:' errorPrintCR.
-		ex description errorPrintCR.
-	    ] do:[
-		thisContext fullPrintAll.
-	    ].
-	    action := #abort.
-	].
+        action := #debug.
+        sender := aContext.
+        Debugger isNil ifTrue:[
+            '****************** Cought Error while in SystemProcess ****************' errorPrintCR.
+            aString errorPrintCR.
+            Exception handle:[:ex |
+                'Cought recursive error while printing backtrace:' errorPrintCR.
+                ex description errorPrintCR.
+            ] do:[
+                thisContext fullPrintAll.
+            ].
+            action := #abort.
+        ].
     ] ifFalse:[
-	Dialog autoload.        "in case it's autoloaded"
-
-	Error handle:[:ex |
-	    "/ a recursive error - quickly enter debugger
-	    "/ this happened, when I corrupted the Dialog class ...
-	    ('Object [error]: ' , ex description , ' caught in errorNotification') errorPrintCR.
-	    action := #debug.
-	    ex return.
-	] do:[ |s|
-	    sender := aContext.
-	    sender isNil ifTrue:[
-		sender := thisContext sender.
-	    ].
-	    con := sender.
-
-	    "/ skip intermediate (signal & exception) contexts
-	    DebugView notNil ifTrue:[
-		con := DebugView interestingContextFrom:sender
-	    ].
-
-	    "/ show the first few contexts
-
-	    s := WriteStream with:aString.
-	    s cr; cr.
-	    s nextPutLine:'Calling Chain:'.
-	    s nextPutLine:'--------------------------------------------------------------'.
-	    1 to:25 do:[:n |
-		con notNil ifTrue:[
-		    con printOn:s.
-		    s cr.
-		    con := con sender
-		]
-	    ].
-
-	    boxLabels := #('Proceed').
-	    boxValues := #(#proceed).
-	    default := #proceed.
-
-	    AbortOperationRequest isHandled ifTrue:[
-		default := #abort.
-		boxLabels := boxLabels , #('Abort').
-		boxValues := boxValues , #(#abort).
-		true "allowDebug" ifTrue:[
-		    boxLabels := boxLabels , #('Copy Trace and Abort').
-		    boxValues := boxValues , #(#copyAndAbort).
-		]
-	    ] ifFalse:[
-		true "allowDebug" ifTrue:[
-		    boxLabels := boxLabels , #('Copy Trace and Proceed').
-		    boxValues := boxValues , #(#copyAndProceed).
-		].
-	    ].
-
-	    (allowDebug and:[Debugger notNil]) ifTrue:[
-		boxLabels := boxLabels , #('Debug').
-		boxValues := boxValues , #(#debug).
-		default := #debug.
-	    ].
-
-	    action := Dialog
-		    choose:s contents
-		    label:('Exception [' , Processor activeProcess nameOrId , ']')
-		    image:WarningBox errorIconBitmap
-		    labels:boxLabels
-		    values:boxValues
-		    default:default
-		    onCancel:nil.
-	].
+        Dialog autoload.        "in case it's autoloaded"
+
+        Error handle:[:ex |
+            "/ a recursive error - quickly enter debugger
+            "/ this happened, when I corrupted the Dialog class ...
+            ('Object [error]: ' , ex description , ' caught in errorNotification') errorPrintCR.
+            action := #debug.
+            ex return.
+        ] do:[ |s|
+            sender := aContext.
+            sender isNil ifTrue:[
+                sender := thisContext sender.
+            ].
+            con := sender.
+
+            "/ skip intermediate (signal & exception) contexts
+            DebugView notNil ifTrue:[
+                con := DebugView interestingContextFrom:sender
+            ].
+
+            "/ show the first few contexts
+
+            s := WriteStream with:aString.
+            s cr; cr.
+            s nextPutLine:'Calling Chain:'.
+            s nextPutLine:'--------------------------------------------------------------'.
+            1 to:25 do:[:n |
+                con notNil ifTrue:[
+                    con printOn:s.
+                    s cr.
+                    con := con sender
+                ]
+            ].
+
+            boxLabels := #('Proceed').
+            boxValues := #(#proceed).
+            default := #proceed.
+
+            AbortOperationRequest isHandled ifTrue:[
+                default := #abort.
+                boxLabels := boxLabels , #('Abort').
+                boxValues := boxValues , #(#abort).
+                true "allowDebug" ifTrue:[
+                    boxLabels := boxLabels , #('Copy Trace and Abort').
+                    boxValues := boxValues , #(#copyAndAbort).
+                ]
+            ] ifFalse:[
+                true "allowDebug" ifTrue:[
+                    boxLabels := boxLabels , #('Copy Trace and Proceed').
+                    boxValues := boxValues , #(#copyAndProceed).
+                ].
+            ].
+
+            (allowDebug and:[Debugger notNil]) ifTrue:[
+                boxLabels := boxLabels , #('Debug').
+                boxValues := boxValues , #(#debug).
+                default := #debug.
+            ].
+
+            action := Dialog
+                    choose:s contents
+                    label:('Exception [' , Processor activeProcess nameOrId , ']')
+                    image:WarningBox errorIconBitmap
+                    labels:boxLabels
+                    values:boxValues
+                    default:default
+                    onCancel:nil.
+        ].
     ].
 
     action == #debug ifTrue:[
-	^ Debugger enter:sender withMessage:aString mayProceed:true
+        ^ Debugger enter:sender withMessage:aString mayProceed:true
     ].
     action == #proceed ifTrue:[
-	^ nil.
+        ^ nil.
     ].
     (action == #copyAndProceed
     or:[action == #copyAndAbort]) ifTrue:[
-	s := '' writeStream.
-	Exception handle:[:ex |
-	    'Cought recursive error while printing backtrace' errorPrintCR.
-	] do:[
-	    sender fullPrintAllOn:s.
-	].
-	currentScreen rootView setClipboardText:s contents.
-	action == #copyAndProceed ifTrue:[
-	    ^ nil
-	].
+        s := '' writeStream.
+        Exception handle:[:ex |
+            'Cought recursive error while printing backtrace' errorPrintCR.
+        ] do:[
+            sender fullPrintAllOn:s.
+        ].
+        currentScreen rootView setClipboardText:s contents.
+        action == #copyAndProceed ifTrue:[
+            ^ nil
+        ].
     ].
 
     AbortOperationRequest raise.
@@ -9580,12 +9586,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.
      ]
     "
 
@@ -9600,9 +9606,9 @@
 
 
     Smalltalk isInitialized ifFalse:[
-	"/ thisContext fullPrintAll.
-	'information: ' print. aString printCR.
-	^ self
+        "/ thisContext fullPrintAll.
+        'information: ' print. aString printCR.
+        ^ self
     ].
     UserNotification raiseRequestWith:self errorString:aString.
 
@@ -9630,12 +9636,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.
      ]
     "
 
@@ -9660,11 +9666,11 @@
 !Object class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.711 2013-03-04 14:30:05 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.714 2013-03-26 17:28:03 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.711 2013-03-04 14:30:05 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.714 2013-03-26 17:28:03 cg Exp $'
 !
 
 version_SVN
--- a/PositionableStream.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/PositionableStream.st	Wed Mar 27 12:24:15 2013 +0000
@@ -139,6 +139,7 @@
     "
 ! !
 
+
 !PositionableStream methodsFor:'accessing'!
 
 collection
@@ -192,6 +193,10 @@
     readLimit := aNumber
 !
 
+setCollection:newCollection
+    collection := newCollection
+!
+
 writeLimit:aNumber
     "set the writeLimit; thats the position after which writing is prohibited"
 
@@ -660,11 +665,12 @@
 !PositionableStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/PositionableStream.st,v 1.154 2011-05-27 14:22:27 sr Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/PositionableStream.st,v 1.155 2013-03-22 14:20:05 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/PositionableStream.st,v 1.154 2011-05-27 14:22:27 sr Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/PositionableStream.st,v 1.155 2013-03-22 14:20:05 cg Exp $'
 ! !
 
+
 PositionableStream initialize!
--- a/ProcessorScheduler.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/ProcessorScheduler.st	Wed Mar 27 12:24:15 2013 +0000
@@ -21,7 +21,8 @@
 		osChildExitActions gotChildSignalInterrupt
 		exitWhenNoMoreUserProcesses suspendScheduler timeSliceProcess
 		supportDynamicPriorities timeSliceNeededSemaphore
-		scheduledProcesses preWaitActions timeoutHandlerProcess'
+		scheduledProcesses preWaitActions timeoutHandlerProcess
+		readableResultFdArray writableResultFdArray'
 	classVariableNames:'KnownProcesses KnownProcessIds PureEventDriven
 		UserSchedulingPriority UserInterruptPriority TimingPriority
 		HighestPriority SchedulingPriority MaxNumberOfProcesses
@@ -437,8 +438,8 @@
 knownProcessesDo:aBlock
     "evaluate aBlock for each (living) processes in the system"
 
-    KnownProcesses do:[:p | 
-        (p notNil and:[p ~~ 0]) ifTrue:[aBlock value:p]
+    KnownProcesses do:[:p |
+	(p notNil and:[p ~~ 0]) ifTrue:[aBlock value:p]
     ]
 
     "Created: / 26-10-2012 / 13:02:33 / cg"
@@ -601,7 +602,7 @@
 
     wasBlocked := OperatingSystem blockInterrupts.
     idleActions isNil ifTrue:[
-        idleActions := OrderedCollection new
+	idleActions := OrderedCollection new
     ].
     idleActions add:aBlock.
     wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
@@ -814,8 +815,8 @@
     "avoid confusion if entered twice"
 
     dispatching == true ifTrue:[
-        'Processor [info]: already in dispatch' infoPrintCR.
-        ^ self
+	'Processor [info]: already in dispatch' infoPrintCR.
+	^ self
     ].
     dispatching := true.
 
@@ -827,21 +828,21 @@
     dispatchAction := [self dispatch].
 
     handlerAction := [:ex |
-                        ('Processor [info]: ignored signal (', ex signal printString, ')') infoPrintCR.
-                        ex return
-                     ].
+			('Processor [info]: ignored signal (', ex signal printString, ')') infoPrintCR.
+			ex return
+		     ].
 
     ignoredSignals := SignalSet
-                        with:TerminateProcessRequest
-                        with:RecursionError
-                        with:AbortAllOperationRequest.
+			with:TerminateProcessRequest
+			with:RecursionError
+			with:AbortAllOperationRequest.
 
     "/
     "/ I made this an extra call to dispatch; this allows recompilation
     "/  of the dispatch-handling code in the running system.
     "/
     [dispatching] whileTrue:[
-        ignoredSignals handle:handlerAction do:dispatchAction
+	ignoredSignals handle:handlerAction do:dispatchAction
     ].
 
     "/ we arrive here in standalone Apps,
@@ -993,44 +994,44 @@
     |index pri aProcess l|
 
     OperatingSystem interruptsBlocked ifFalse:[
-        MiniDebugger
-            enterWithMessage:'vmResumeInterrupt with no interruptsBlocked'
-            mayProceed:true.
+	MiniDebugger
+	    enterWithMessage:'vmResumeInterrupt with no interruptsBlocked'
+	    mayProceed:true.
     ].
 
     index := KnownProcessIds identityIndexOf:id.
     index ~~ 0 ifTrue:[
-        aProcess := KnownProcesses at:index.
-        pri := aProcess priority.
-        l := quiescentProcessLists at:pri.
-        l notNil ifTrue:[
-            (l includesIdentical:aProcess) ifTrue:[
-                "/ aProcess is on a run queue.
-                "/ CG: this situation may happen, if the wrapCall
-                "/ finishes before the process was layed to sleep
-                "/ (i.e. schedulerIRQ arrives before the threadSwitch was finished).
-                "/ In that case, simply resume it and everything is OK.
-                "/ If the process is state running, ignore.
-
-                |state|
-
-                state := aProcess state.
-                (state == #wrapWait or:[state == #osWait] or:[state == #stopped]) ifTrue:[
-                    aProcess state:#run.
-                ].
-                'ProcSched [info]: resumeIRQ ignored for process: ' infoPrint.
-                aProcess id infoPrint. ' in state: ' infoPrint. state infoPrintCR.
-                ^ self
-            ]
-        ] ifFalse:[
-            l := LinkedList new.
-            quiescentProcessLists at:pri put:l.
-        ].
-        l addLast:aProcess.
-        aProcess state:#run.
+	aProcess := KnownProcesses at:index.
+	pri := aProcess priority.
+	l := quiescentProcessLists at:pri.
+	l notNil ifTrue:[
+	    (l includesIdentical:aProcess) ifTrue:[
+		"/ aProcess is on a run queue.
+		"/ CG: this situation may happen, if the wrapCall
+		"/ finishes before the process was layed to sleep
+		"/ (i.e. schedulerIRQ arrives before the threadSwitch was finished).
+		"/ In that case, simply resume it and everything is OK.
+		"/ If the process is state running, ignore.
+
+		|state|
+
+		state := aProcess state.
+		(state == #wrapWait or:[state == #osWait] or:[state == #stopped]) ifTrue:[
+		    aProcess state:#run.
+		].
+		'ProcSched [info]: resumeIRQ ignored for process: ' infoPrint.
+		aProcess id infoPrint. ' in state: ' infoPrint. state infoPrintCR.
+		^ self
+	    ]
+	] ifFalse:[
+	    l := LinkedList new.
+	    quiescentProcessLists at:pri put:l.
+	].
+	l addLast:aProcess.
+	aProcess state:#run.
     ] ifFalse:[
-        'ProcSched [info]: resumeIRQ for unknown process: ' infoPrint.
-        id infoPrintCR.
+	'ProcSched [info]: resumeIRQ for unknown process: ' infoPrint.
+	id infoPrintCR.
     ]
 
     "Modified: / 28.9.1998 / 11:36:53 / cg"
@@ -1047,19 +1048,19 @@
     |pri l newState|
 
     OperatingSystem interruptsBlocked ifFalse:[
-        MiniDebugger
-            enterWithMessage:'immediateInterrupt with no interruptsBlocked'
-            mayProceed:true.
+	MiniDebugger
+	    enterWithMessage:'immediateInterrupt with no interruptsBlocked'
+	    mayProceed:true.
     ].
 
     (whyCode == 2) ifTrue:[
-         newState := #wrapWait.
+	 newState := #wrapWait.
     ] ifFalse:[
-        (whyCode == 3) ifTrue:[
-            newState := #osWait.
-        ] ifFalse:[
-            newState := #stopped.
-        ].
+	(whyCode == 3) ifTrue:[
+	    newState := #osWait.
+	] ifFalse:[
+	    newState := #stopped.
+	].
     ].
     activeProcess setStateTo:newState if:#active.
 
@@ -1070,9 +1071,9 @@
      the ifAbsent block, because [] is a shared cheap block, created at compile time
     "
     (l isNil or:[(l removeIdentical:activeProcess ifAbsent:nil) isNil]) ifTrue:[
-        "/ 'Processor [warning]: bad vmSuspendInterrupt: not on run list' errorPrintCR.
-        MiniDebugger enterWithMessage:'bad vmSuspendInterrupt: not on run list' mayProceed:true.
-        ^ self
+	"/ 'Processor [warning]: bad vmSuspendInterrupt: not on run list' errorPrintCR.
+	MiniDebugger enterWithMessage:'bad vmSuspendInterrupt: not on run list' mayProceed:true.
+	^ self
     ].
 ! !
 
@@ -1297,9 +1298,9 @@
     extern OBJ ___threadSwitch();
 
     if (__isSmallInteger(id)) {
-        ok = ___threadSwitch(__context, __intVal(id), (singleStep == true) ? 1 : 0, 0);
+	ok = ___threadSwitch(__context, __intVal(id), (singleStep == true) ? 1 : 0, 0);
     } else {
-        ok = false;
+	ok = false;
     }
 %}.
 
@@ -1312,40 +1313,40 @@
     currentPriority := oldProcess priority.
 
     ok == true ifFalse:[
-        "
-         switch failed for some reason -
-         destroy (hard-terminate) the bad process.
-         This happens when:
-         - the stack went above the absolute limit
-           (VM switches back to scheduler)
-         - a halted process cannot execute its interrupt
-           actions (win32 only)
-        "
-        (id := p id) ~~ 0 ifTrue:[
-            id notNil ifTrue:[
-                'Processor [warning]: problem with process ' errorPrint.
-                id errorPrint.
-                (nm := p name) notNil ifTrue:[
-                    ' (' errorPrint. nm errorPrint. ')' errorPrint.
-                ].
-
-                ok == #halted ifTrue:[
-                    "/ that process was halted (win32 only)
-                    p state:#halted.
-                   '; stopped it.' errorPrintCR.
-                   self suspend:p.
-                ] ifFalse:[
-                   '; hard-terminate it.' errorPrintCR.
-                   'Processor [info]: cleanup may take a while if stack is huge' infoPrintCR.
-                   p state:#cleanup.
-                   self terminateNoSignal:p.
-                ]
-            ]
-        ]
+	"
+	 switch failed for some reason -
+	 destroy (hard-terminate) the bad process.
+	 This happens when:
+	 - the stack went above the absolute limit
+	   (VM switches back to scheduler)
+	 - a halted process cannot execute its interrupt
+	   actions (win32 only)
+	"
+	(id := p id) ~~ 0 ifTrue:[
+	    id notNil ifTrue:[
+		'Processor [warning]: problem with process ' errorPrint.
+		id errorPrint.
+		(nm := p name) notNil ifTrue:[
+		    ' (' errorPrint. nm errorPrint. ')' errorPrint.
+		].
+
+		ok == #halted ifTrue:[
+		    "/ that process was halted (win32 only)
+		    p state:#halted.
+		   '; stopped it.' errorPrintCR.
+		   self suspend:p.
+		] ifFalse:[
+		   '; hard-terminate it.' errorPrintCR.
+		   'Processor [info]: cleanup may take a while if stack is huge' infoPrintCR.
+		   p state:#cleanup.
+		   self terminateNoSignal:p.
+		]
+	    ]
+	]
     ].
     zombie notNil ifTrue:[
-        self class threadDestroy:zombie.
-        zombie := nil
+	self class threadDestroy:zombie.
+	zombie := nil
     ].
     wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
 
@@ -1673,48 +1674,48 @@
     "
     newPrio := prio.
     newPrio < 1 ifTrue:[
-        newPrio := 1.
+	newPrio := 1.
     ] ifFalse:[
-        newPrio > HighestPriority ifTrue:[
-            newPrio := HighestPriority
-        ]
+	newPrio > HighestPriority ifTrue:[
+	    newPrio := HighestPriority
+	]
     ].
 
     [
-        wasBlocked := OperatingSystem blockInterrupts.
-
-        aProcess setPriority:newPrio.
-
-        oldList := quiescentProcessLists at:oldPrio.
-        oldList notNil ifTrue:[
-            (oldList removeIdentical:aProcess ifAbsent:nil) notNil ifTrue:[
-                newList := quiescentProcessLists at:newPrio.
-                newList isNil ifTrue:[
-                    quiescentProcessLists at:newPrio put:(newList := LinkedList new).
-                ].
-                newList addLast:aProcess.
-
-                "if its the current process lowering its prio
-                 or another one raising, we have to reschedule"
-
-                aProcess == activeProcess ifTrue:[
-                    currentPriority := newPrio.
-                    newPrio < oldPrio ifTrue:[
-                        self threadSwitch:scheduler.
-                    ]
-                ] ifFalse:[
-                    newPrio > currentPriority ifTrue:[
-                        self threadSwitch:aProcess.
-                    ]
-                ].
-                timeSliceNeededSemaphore notNil ifTrue:[
-                    "/ tell timeslicer, that some work might be needed...
-                    timeSliceNeededSemaphore signalIf.
-                ]       
-            ]
-        ]
+	wasBlocked := OperatingSystem blockInterrupts.
+
+	aProcess setPriority:newPrio.
+
+	oldList := quiescentProcessLists at:oldPrio.
+	oldList notNil ifTrue:[
+	    (oldList removeIdentical:aProcess ifAbsent:nil) notNil ifTrue:[
+		newList := quiescentProcessLists at:newPrio.
+		newList isNil ifTrue:[
+		    quiescentProcessLists at:newPrio put:(newList := LinkedList new).
+		].
+		newList addLast:aProcess.
+
+		"if its the current process lowering its prio
+		 or another one raising, we have to reschedule"
+
+		aProcess == activeProcess ifTrue:[
+		    currentPriority := newPrio.
+		    newPrio < oldPrio ifTrue:[
+			self threadSwitch:scheduler.
+		    ]
+		] ifFalse:[
+		    newPrio > currentPriority ifTrue:[
+			self threadSwitch:aProcess.
+		    ]
+		].
+		timeSliceNeededSemaphore notNil ifTrue:[
+		    "/ tell timeslicer, that some work might be needed...
+		    timeSliceNeededSemaphore signalIf.
+		]
+	    ]
+	]
     ] ensure:[
-        wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
+	wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
     ]
 
     "Modified: / 4.8.1998 / 00:08:54 / cg"
@@ -1764,21 +1765,21 @@
 
     s := aProcess state.
     s == #osWait ifTrue:[
-        'Processor [warning]: bad resume: #osWait' errorPrintCR.
-        "/ MiniDebugger enterWithMessage:'bad resume: state osWait'.
-        ^ false.
+	'Processor [warning]: bad resume: #osWait' errorPrintCR.
+	"/ MiniDebugger enterWithMessage:'bad resume: state osWait'.
+	^ false.
     ].
     s == #stopped ifTrue:[
-        "by definition, stopped processes cannot be resumed"
-        ^ false.
+	"by definition, stopped processes cannot be resumed"
+	^ false.
     ].
 
     aProcess == activeProcess ifTrue:[
-        "special handling for waiting schedulers"
-        aProcess == scheduler ifTrue:[
-            suspendScheduler := false.
-        ].
-        ^ false
+	"special handling for waiting schedulers"
+	aProcess == scheduler ifTrue:[
+	    suspendScheduler := false.
+	].
+	^ false
     ].
 
     wasBlocked := OperatingSystem blockInterrupts.
@@ -1788,26 +1789,26 @@
     l := quiescentProcessLists at:pri.
     "if already running, ignore"
     l notNil ifTrue:[
-        (l identityIndexOf:aProcess) ~~ 0 ifTrue:[
-            wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
-            ^ false
-        ]
+	(l identityIndexOf:aProcess) ~~ 0 ifTrue:[
+	    wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
+	    ^ false
+	]
     ] ifFalse:[
-        l := LinkedList new.
-        quiescentProcessLists at:pri put:l.
+	l := LinkedList new.
+	quiescentProcessLists at:pri put:l.
     ].
     l addLast:aProcess.
     aProcess state:#run.
     wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
 
     pri > currentPriority ifTrue:[
-        "must reschedule"
-        ^ true.
+	"must reschedule"
+	^ true.
     ].
 
     timeSliceNeededSemaphore notNil ifTrue:[
-        "/ tell timeslicer, that some work might be needed...
-        timeSliceNeededSemaphore signalIf.
+	"/ tell timeslicer, that some work might be needed...
+	timeSliceNeededSemaphore signalIf.
     ].
     ^ false.
 
@@ -1839,8 +1840,8 @@
      if its prio is higher than the currently running prio, switch to it."
 
     (self makeRunnable:aProcess) ifTrue:[
-        "aProcess prio is higher; immediately transfer control to it"
-        self threadSwitch:aProcess.
+	"aProcess prio is higher; immediately transfer control to it"
+	self threadSwitch:aProcess.
     ].
 !
 
@@ -1860,8 +1861,8 @@
      If the process is the current one, reschedule.
 
      Notice:
-         This method should only be called by Process>>suspend or
-         Process>>suspendWithState:"
+	 This method should only be called by Process>>suspend or
+	 Process>>suspendWithState:"
 
     |pri l p wasBlocked|
 
@@ -1869,30 +1870,30 @@
      some debugging stuff
     "
     aProcess isNil ifTrue:[
-        InvalidProcessSignal raiseRequestWith:aProcess errorString:'nil suspend'.
-        ^ self
+	InvalidProcessSignal raiseRequestWith:aProcess errorString:'nil suspend'.
+	^ self
     ].
     aProcess id isNil ifTrue:[
-        InvalidProcessSignal raiseRequestWith:aProcess errorString:'bad suspend: already dead'.
-        self threadSwitch:scheduler.
-        ^ self
+	InvalidProcessSignal raiseRequestWith:aProcess errorString:'bad suspend: already dead'.
+	self threadSwitch:scheduler.
+	^ self
     ].
     aProcess == scheduler ifTrue:[
-        "only the scheduler may suspend itself"
-        activeProcess == scheduler ifTrue:[
-            suspendScheduler := true.
-            [suspendScheduler] whileTrue:[
-                self dispatch.
-            ].
-            ^ self
-        ].
-
-        InvalidProcessSignal raiseRequestWith:aProcess errorString:'attempt to suspend scheduler'.
-        ^ self
+	"only the scheduler may suspend itself"
+	activeProcess == scheduler ifTrue:[
+	    suspendScheduler := true.
+	    [suspendScheduler] whileTrue:[
+		self dispatch.
+	    ].
+	    ^ self
+	].
+
+	InvalidProcessSignal raiseRequestWith:aProcess errorString:'attempt to suspend scheduler'.
+	^ self
     ].
 
     aProcess hasInterruptActions ifTrue:[
-        aProcess interrupt.
+	aProcess interrupt.
     ].
 
     wasBlocked := OperatingSystem blockInterrupts.
@@ -1904,23 +1905,23 @@
      the ifAbsent block, because [] is a shared cheap block, created at compile time
     "
     (l isNil or:[(l removeIdentical:aProcess ifAbsent:nil) isNil]) ifTrue:[
-        "/ 'Processor [warning]: bad suspend: process is not running' errorPrintCR.
-        "/ MiniDebugger enterWithMessage:'bad suspend: process is not running'.
-        aProcess == activeProcess ifTrue:[
-            self threadSwitch:scheduler.
-        ].
-        wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
-        ^ self
+	"/ 'Processor [warning]: bad suspend: process is not running' errorPrintCR.
+	"/ MiniDebugger enterWithMessage:'bad suspend: process is not running'.
+	aProcess == activeProcess ifTrue:[
+	    self threadSwitch:scheduler.
+	].
+	wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
+	^ self
     ].
 
     (aProcess == activeProcess) ifTrue:[
-        "we can immediately switch sometimes"
-        l isEmpty ifTrue:[
-            p := scheduler
-        ] ifFalse:[
-            p := l first
-        ].
-        self threadSwitch:p
+	"we can immediately switch sometimes"
+	l isEmpty ifTrue:[
+	    p := scheduler
+	] ifFalse:[
+	    p := l first
+	].
+	self threadSwitch:p
     ].
 
     wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
@@ -1967,16 +1968,16 @@
 
     aProcess isNil ifTrue:[^ self].
     aProcess == scheduler ifTrue:[
-        InvalidProcessSignal raiseWith:aProcess errorString:'attempt to terminate scheduler'.
-        ^ self
+	InvalidProcessSignal raiseWith:aProcess errorString:'attempt to terminate scheduler'.
+	^ self
     ].
 
     wasBlocked := OperatingSystem blockInterrupts.
 
     id := aProcess id.
     id isNil ifTrue:[   "already dead"
-        wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
-        ^ self
+	wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
+	^ self
     ].
 
     aProcess setId:nil state:#dead.
@@ -1986,31 +1987,31 @@
     pri := aProcess priority.
     l := quiescentProcessLists at:pri.
     l notNil ifTrue:[
-        (l removeIdentical:aProcess ifAbsent:nil) "notNil ifTrue:[
-            l isEmpty ifTrue:[
-                quiescentProcessLists at:pri put:nil
-            ]
-        ]."
+	(l removeIdentical:aProcess ifAbsent:nil) "notNil ifTrue:[
+	    l isEmpty ifTrue:[
+		quiescentProcessLists at:pri put:nil
+	    ]
+	]."
     ].
 
     aProcess == activeProcess ifTrue:[
-        "
-         hard case - it's the currently running process
-         we must have the next active process destroy this one
-         (we cannot destroy the chair we are sitting on ... :-)
-        "
-        zombie notNil ifTrue:[
-            self error:'active process is zombie' mayProceed:true.
-            self class threadDestroy:zombie.
-        ].
-
-        self unRemember:aProcess.
-        zombie := id.
-
-        wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
-        self threadSwitch:scheduler.
-        "not reached"
-        ^ self
+	"
+	 hard case - it's the currently running process
+	 we must have the next active process destroy this one
+	 (we cannot destroy the chair we are sitting on ... :-)
+	"
+	zombie notNil ifTrue:[
+	    self error:'active process is zombie' mayProceed:true.
+	    self class threadDestroy:zombie.
+	].
+
+	self unRemember:aProcess.
+	zombie := id.
+
+	wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
+	self threadSwitch:scheduler.
+	"not reached"
+	^ self
     ].
 
     self unRemember:aProcess.
@@ -2033,16 +2034,16 @@
     wasBlocked := OperatingSystem blockInterrupts.
 
     activeProcess == scheduler ifTrue:[
-        'Processor [warning]: scheduler tries to yield' errorPrintCR.
-        ^ self
+	'Processor [warning]: scheduler tries to yield' errorPrintCR.
+	^ self
     ].
 
     "
      debugging consistency check - will be removed later
     "
     activeProcess priority ~~ currentPriority ifTrue:[
-        'Processor [warning]: process changed its priority' errorPrintCR.
-        currentPriority := activeProcess priority.
+	'Processor [warning]: process changed its priority' errorPrintCR.
+	currentPriority := activeProcess priority.
     ].
 
     l := quiescentProcessLists at:currentPriority.
@@ -2052,25 +2053,25 @@
      debugging consistency checks - will be removed later
     "
     sz == 0 ifTrue:[
-        wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
-        'Processor [warning]: empty runnable list' errorPrintCR.
-        ^ self
+	wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
+	'Processor [warning]: empty runnable list' errorPrintCR.
+	^ self
     ].
 
     "
      check if the running process is not the only one
     "
     sz ~~ 1 ifTrue:[
-        "
-         bring running process to the end
-        "
-        l removeFirst.
-        l addLast:activeProcess.
-
-        "
-         and switch to first in the list
-        "
-        self threadSwitch:(l first).
+	"
+	 bring running process to the end
+	"
+	l removeFirst.
+	l addLast:activeProcess.
+
+	"
+	 and switch to first in the list
+	"
+	self threadSwitch:(l first).
     ].
     wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
 
@@ -2170,14 +2171,14 @@
     i := TimeSlicingPriorityLimit.
     [(i > 0) and:[(list := quiescentProcessLists at:i) size <= 1]] whileTrue: [i := i - 1].
     i ~~ 0 ifTrue: [
-        "/ shuffle that list
-        list addLast:(list removeFirst).
-        anyShuffle := true.
+	"/ shuffle that list
+	list addLast:(list removeFirst).
+	anyShuffle := true.
     ].
     wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
     anyShuffle ifFalse:[
-        "/ wait for the scheduler to make some process runnable...
-        timeSliceNeededSemaphore wait.
+	"/ wait for the scheduler to make some process runnable...
+	timeSliceNeededSemaphore wait.
     ].
 
     "Modified: / 4.8.1998 / 00:13:32 / cg"
@@ -2191,37 +2192,37 @@
     timeSliceNeededSemaphore := Semaphore new name:'timeSlice needed'.
 
     timeSliceProcess := [
-        [
-            |myDelay t flipFlop|
-
-            myDelay := Delay forMilliseconds:(t := TimeSliceInterval).
-            flipFlop := true.
-
-            'Processor [info]: timeslicer started' infoPrintCR.
-            [true] whileTrue: [
-                t ~~ TimeSliceInterval ifTrue:[
-                    "/ interval changed -> need a new delay
-                    myDelay delay:(t := TimeSliceInterval).
-                ].
-                myDelay wait.
-                self slice.
-
-                "/ every other tick, recompute priorities.
-                flipFlop := flipFlop not.
-                flipFlop ifTrue:[
-                    scheduledProcesses notNil ifTrue:[
-                        supportDynamicPriorities == true ifTrue:[
-                            self recomputeDynamicPriorities.
-                        ].
-                        scheduledProcesses removeAll.
-                    ].
-                    scheduledProcesses := IdentitySet new.
-                ].
-            ]
-        ] ifCurtailed:[
-            timeSliceProcess := nil.
-            'Processor [info]: timeslicer finished' infoPrintCR.
-        ]
+	[
+	    |myDelay t flipFlop|
+
+	    myDelay := Delay forMilliseconds:(t := TimeSliceInterval).
+	    flipFlop := true.
+
+	    'Processor [info]: timeslicer started' infoPrintCR.
+	    [true] whileTrue: [
+		t ~~ TimeSliceInterval ifTrue:[
+		    "/ interval changed -> need a new delay
+		    myDelay delay:(t := TimeSliceInterval).
+		].
+		myDelay wait.
+		self slice.
+
+		"/ every other tick, recompute priorities.
+		flipFlop := flipFlop not.
+		flipFlop ifTrue:[
+		    scheduledProcesses notNil ifTrue:[
+			supportDynamicPriorities == true ifTrue:[
+			    self recomputeDynamicPriorities.
+			].
+			scheduledProcesses removeAll.
+		    ].
+		    scheduledProcesses := IdentitySet new.
+		].
+	    ]
+	] ifCurtailed:[
+	    timeSliceProcess := nil.
+	    'Processor [info]: timeslicer finished' infoPrintCR.
+	]
     ] newProcess.
     timeSliceProcess priority:HighestPriority.
     timeSliceProcess name:'time slicer'.
@@ -2242,10 +2243,10 @@
     "stop preemptive scheduling (timeSlicing)"
 
     timeSliceProcess notNil ifTrue: [
-        timeSliceProcess terminate.
-        timeSliceProcess := nil.
-        scheduledProcesses := nil.
-        timeSliceNeededSemaphore := nil.
+	timeSliceProcess terminate.
+	timeSliceProcess := nil.
+	scheduledProcesses := nil.
+	timeSliceNeededSemaphore := nil.
     ]
 
     "
@@ -2768,60 +2769,62 @@
     now := OperatingSystem getMillisecondTime.
     n := timeoutArray size.
     1 to:n do:[:index |
-	aTime := timeoutArray at:index.
-	aTime notNil ifTrue:[
-	    (OperatingSystem millisecondTime:now isAfter:aTime) ifTrue:[
-		"this one should be triggered"
-
-		sema := timeoutSemaphoreArray at:index.
-		sema notNil ifTrue:[
-		    timeoutSemaphoreArray at:index put:nil.
-		    sema signalOnce.
-		] ifFalse:[
-		    "to support pure-events"
-		    block := timeoutActionArray at:index.
-		    block notNil ifTrue:[
-			blocksToEvaluate isNil ifTrue:[
-			    blocksToEvaluate := OrderedCollection new:10.
-			    processes := OrderedCollection new:10.
-			].
-			blocksToEvaluate add:block.
-			processes add:(timeoutProcessArray at:index).
-			timeoutActionArray at:index put:nil.
-			timeoutProcessArray at:index put:nil.
-		    ]
-		].
-		timeoutArray at:index put:nil.
-	    ] ifFalse:[
-		"there are still pending timeouts"
-		anyTimeouts := true
-	    ]
-	]
+        aTime := timeoutArray at:index.
+        aTime notNil ifTrue:[
+            (OperatingSystem millisecondTime:now isAfter:aTime) ifTrue:[
+                "this one should be triggered"
+
+                sema := timeoutSemaphoreArray at:index.
+                sema notNil ifTrue:[
+                    timeoutSemaphoreArray at:index put:nil.
+                    sema signalOnce.
+                ] ifFalse:[
+                    "to support pure-events"
+                    block := timeoutActionArray at:index.
+                    block notNil ifTrue:[
+                        blocksToEvaluate isNil ifTrue:[
+                            blocksToEvaluate := OrderedCollection new:10.
+                            processes := OrderedCollection new:10.
+                        ].
+                        blocksToEvaluate add:block.
+                        processes add:(timeoutProcessArray at:index).
+                        timeoutActionArray at:index put:nil.
+                        timeoutProcessArray at:index put:nil.
+                    ]
+                ].
+                timeoutArray at:index put:nil.
+            ] ifFalse:[
+                "there are still pending timeouts"
+                anyTimeouts := true
+            ]
+        ]
     ].
 
-    blocksToEvaluate notNil ifTrue:[
-	blocksToEvaluate keysAndValuesDo:[:index :block |
-	    |p|
-
-	    p := processes at:index.
-	    (p isNil or:[p == scheduler or:[PureEventDriven]]) ifTrue:[
-		block value
-	    ] ifFalse:[
-		p isDead ifTrue:[
-
-		    "/ a timedBlock for a process which has already terminated
-		    "/ issue a warning and do not execute it.
-		    "/ (exeuting here may be dangerous, since it would run at scheduler priority here,
-		    "/  and thereby could block the whole smalltalk system.
-		    "/  For this reason is it IGNORED here.)
-
-		    ('ProcessorScheduler [warning]: cannot evaluate timedBlock for dead process: ''' , p name , '''') infoPrintCR.
-		    ('ProcessorScheduler [warning]: the timedBlock is: ' , block displayString) infoPrintCR.
-		] ifFalse:[
-		    p interruptWith:block
-		]
-	    ]
-	]
+    n := blocksToEvaluate size.
+    n > 0 ifTrue:[
+        1 to:n do:[:index |
+            |block p|
+
+            block := blocksToEvaluate at:index.
+            p := processes at:index.
+            (p isNil or:[p == scheduler or:[PureEventDriven]]) ifTrue:[
+                block value
+            ] ifFalse:[
+                p isDead ifTrue:[
+
+                    "/ a timedBlock for a process which has already terminated
+                    "/ issue a warning and do not execute it.
+                    "/ (exeuting here may be dangerous, since it would run at scheduler priority here,
+                    "/  and thereby could block the whole smalltalk system.
+                    "/  For this reason is it IGNORED here.)
+
+                    ('ProcessorScheduler [warning]: cannot evaluate timedBlock for dead process: ''' , p name , '''') infoPrintCR.
+                    ('ProcessorScheduler [warning]: the timedBlock is: ' , block displayString) infoPrintCR.
+                ] ifFalse:[
+                    p interruptWith:block
+                ]
+            ]
+        ]
     ]
 
     "Modified: / 9.11.1998 / 21:25:02 / cg"
@@ -2871,28 +2874,28 @@
 
 timeoutHandlerProcess
     (timeoutHandlerProcess isNil or:[timeoutHandlerProcess isDead]) ifTrue:[
-        timeoutHandlerProcess :=
-                [
-                    [
-                        [true] whileTrue:[
-                            [
-                                self timeoutHandlerProcessLoop
-                            ] on:Exception do:[:ex|
-                                "ignore errors, but tell the user"
-                                ('ProcessorScheduler [warning]: error while handling timeouts in TimeoutHandlerProcess: ''' , ex description , '''') infoPrintCR.
+	timeoutHandlerProcess :=
+		[
+		    [
+			[true] whileTrue:[
+			    [
+				self timeoutHandlerProcessLoop
+			    ] on:Exception do:[:ex|
+				"ignore errors, but tell the user"
+				('ProcessorScheduler [warning]: error while handling timeouts in TimeoutHandlerProcess: ''' , ex description , '''') infoPrintCR.
 "/                                thisContext fullPrintAll.
-                            ].
-                        ] 
-                    ] ensure:[
-                        timeoutHandlerProcess := nil
-                    ].
-                ] newProcess.
-
-        timeoutHandlerProcess 
-            priority:TimingPriority;
-            name:'Timeout handler';
-            beSystemProcess;
-            resume.
+			    ].
+			]
+		    ] ensure:[
+			timeoutHandlerProcess := nil
+		    ].
+		] newProcess.
+
+	timeoutHandlerProcess
+	    priority:TimingPriority;
+	    name:'Timeout handler';
+	    beSystemProcess;
+	    resume.
     ].
     ^ timeoutHandlerProcess.
 
@@ -2945,7 +2948,7 @@
      or a timeout to occur."
 
     |nReady index sema action wasBlocked err fd readyIndex
-     readableResultFdArray writableResultFdArray newProcessMaybeReady|
+     newProcessMaybeReady|
 
     "/ must enable interrupts, to be able to get out of a
     "/ long wait (especially, to handle sigChild in the meantime)
@@ -3025,8 +3028,12 @@
     ].
 
     newProcessMaybeReady := false.
-    readableResultFdArray := Array new:40.
-    writableResultFdArray := Array new:40.
+    readableResultFdArray size < readFdArray size ifTrue:[
+        readableResultFdArray := Array new:(40 max:readFdArray size).
+    ].
+    writableResultFdArray size < writeFdArray size ifTrue:[
+        writableResultFdArray := Array new:(40 max:writeFdArray size).
+    ].
 
     nReady := OperatingSystem
                 selectOnAnyReadable:readFdArray
@@ -3146,49 +3153,49 @@
       readFdArray/writeFdArray in the debugger)"
 
     readFdArray keysAndValuesDo:[:idx :fd |
-        |rslt sema|
-
-        (fd notNil "and:[fd >= 0]") ifTrue:[
-            rslt := OperatingSystem
-                        selectOnAnyReadable:(Array with:fd)
-                                   writable:nil
-                                  exception:nil
-                                withTimeOut:0.
-
-            (rslt == #error or:[rslt isNil and:[OperatingSystem lastErrorSymbol == #EBADF]]) ifTrue:[
-                "/ ('Processor [info]: removing invalid read-select fileDescriptor: ' , fd printString) infoPrintCR.
-                readFdArray at:idx put:nil.
-                readCheckArray at:idx put:nil.
-                OperatingSystem clearLastErrorNumber.
-                (sema := readSemaphoreArray at:idx) notNil ifTrue:[
-                    readSemaphoreArray at:idx put:nil.
-                    sema signal.
-                ].
-            ]
-        ].
+	|rslt sema|
+
+	(fd notNil "and:[fd >= 0]") ifTrue:[
+	    rslt := OperatingSystem
+			selectOnAnyReadable:(Array with:fd)
+				   writable:nil
+				  exception:nil
+				withTimeOut:0.
+
+	    (rslt == #error or:[rslt isNil and:[OperatingSystem lastErrorSymbol == #EBADF]]) ifTrue:[
+		"/ ('Processor [info]: removing invalid read-select fileDescriptor: ' , fd printString) infoPrintCR.
+		readFdArray at:idx put:nil.
+		readCheckArray at:idx put:nil.
+		OperatingSystem clearLastErrorNumber.
+		(sema := readSemaphoreArray at:idx) notNil ifTrue:[
+		    readSemaphoreArray at:idx put:nil.
+		    sema signal.
+		].
+	    ]
+	].
     ].
 
     writeFdArray keysAndValuesDo:[:idx :fd |
-        |rslt sema|
-
-        fd notNil ifTrue:[
-            rslt := OperatingSystem
-                        selectOnAnyReadable:nil
-                                   writable:(Array with:fd)
-                                  exception:nil
-                                withTimeOut:0.
-
-            (rslt == #error or:[rslt isNil and:[OperatingSystem lastErrorSymbol == #EBADF]]) ifTrue:[
-                "/ ('Processor [info]: removing invalid write-select fileDescriptor: ' , fd printString) infoPrintCR.
-                writeFdArray at:idx put:nil.
-                writeCheckArray at:idx put:nil.
-                OperatingSystem clearLastErrorNumber.
-                (sema := writeSemaphoreArray at:idx) notNil ifTrue:[
-                    writeSemaphoreArray at:idx put:nil.
-                    sema signal.
-                ].
-            ]
-        ]
+	|rslt sema|
+
+	fd notNil ifTrue:[
+	    rslt := OperatingSystem
+			selectOnAnyReadable:nil
+				   writable:(Array with:fd)
+				  exception:nil
+				withTimeOut:0.
+
+	    (rslt == #error or:[rslt isNil and:[OperatingSystem lastErrorSymbol == #EBADF]]) ifTrue:[
+		"/ ('Processor [info]: removing invalid write-select fileDescriptor: ' , fd printString) infoPrintCR.
+		writeFdArray at:idx put:nil.
+		writeCheckArray at:idx put:nil.
+		OperatingSystem clearLastErrorNumber.
+		(sema := writeSemaphoreArray at:idx) notNil ifTrue:[
+		    writeSemaphoreArray at:idx put:nil.
+		    sema signal.
+		].
+	    ]
+	]
     ].
 
     "Modified: 12.4.1996 / 09:32:58 / stefan"
@@ -3356,11 +3363,11 @@
 !ProcessorScheduler class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.265 2013-02-08 21:33:05 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.267 2013-03-25 16:48:37 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.265 2013-02-08 21:33:05 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.267 2013-03-25 16:48:37 cg Exp $'
 ! !
 
 
--- a/ProjectDefinition.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/ProjectDefinition.st	Wed Mar 27 12:24:15 2013 +0000
@@ -1489,7 +1489,6 @@
         (description description_code)
         (companyName companyName_code)
         (legalCopyright legalCopyright_code)
-        (applicationIconFileName applicationIconFileName_code)
     ) pairsDo:[:selector :codeMethodSelector |
         (self class includesSelector:selector) ifFalse:[
             aTwoArgBlock
@@ -1861,12 +1860,10 @@
 !
 
 subProjects
-    <resource: #obsolete>
-
-    "OBSOLETE.
-     list packages which are known as subprojects. This method is generated automatically.
-     However, when generating automatically, packages are only added - never removed, unless listed
-     in excludedFromSubProjects."
+    "list packages which are known as subprojects. 
+     The generated makefile will enter those and make there as well.
+     However: they are not forced to be loaded when a package is loaded; for those,
+     redefine requiredPrerequisites."
 
     ^ #()
 
@@ -3291,7 +3288,7 @@
     |d|
 
     d := self common_mappings.
-    d
+    ^ d
         at: 'TOP' put: ( self pathToTop_win32 );                "/ win32 here
         at: 'MODULE_PATH' put: ( self moduleDirectory_win32 );  "/ win32 here
         at: 'PRIMARY_TARGET' put: (self primaryTarget_bc_dot_mak);
@@ -3305,8 +3302,7 @@
         at: 'LOCAL_INCLUDES' put: (self generateLocalIncludes_win32 ? '');
         at: 'LOCAL_DEFINES' put: self localDefines_win32 ? '';
         at: 'GLOBAL_DEFINES' put: self globalDefines_win32 ? '';
-        at: 'MAKE_PREREQUISITES' put: (self generateRequiredMakePrerequisites_bc_dot_mak ? '').
-    ^ d
+        yourself.
 
     "Created: / 18-08-2006 / 11:43:39 / cg"
     "Modified: / 05-09-2012 / 10:02:51 / cg"
@@ -3404,7 +3400,6 @@
         at: 'ADDITIONAL_LINK_LIBRARIES' put: (self additionalLinkLibraries_make_dot_proto);
         at: 'ADDITIONAL_SHARED_LINK_LIBRARIES' put: (self additionalSharedLinkLibraries_make_dot_proto);
         at: 'DEPENDENCIES' put: (self generateDependencies_unix);
-        at: 'MAKE_PREREQUISITES' put: (self generateRequiredMakePrerequisites_make_dot_proto);
         yourself
 
     "Created: / 09-08-2006 / 11:20:45 / fm"
@@ -3971,6 +3966,7 @@
      stx_libview generateLocalIncludes_unix
      stx_libtool2 generateLocalIncludes_unix
      stx_libui generateLocalIncludes_unix
+     cg_demos_helloWorld localIncludes_unix
     "
 
     "Created: / 09-08-2006 / 16:46:49 / fm"
@@ -5380,6 +5376,7 @@
 
     "
      stx_libtool searchForProjectsWhichProvideHeaderFiles
+     cg_demos_helloWorld searchForProjectsWhichProvideHeaderFiles
     "
 
     "Created: / 07-12-2006 / 17:46:38 / cg"
@@ -5600,18 +5597,27 @@
 !ProjectDefinition class methodsFor:'private-loading'!
 
 checkPrerequisitesForLoading
+    "check if I can be loaded - i.e. if all classes to be extended are already loaded.
+     Raise an error if not"
+
     |classesAlreadyWarned|
 
     classesAlreadyWarned := Set new.
 
     self extensionMethodNames
         pairWiseDo:[:className :selector |
-            |class |
+            |class errMsg|
 
             class := Smalltalk classNamed:className.
             class isNil ifTrue:[
                 (classesAlreadyWarned includes:className) ifFalse:[
-                    self error:'missing class for extension: ', className mayProceed:true.
+                    (self classNames includes:className) ifTrue:[
+                        errMsg := 'extension for a class in myself: ',className.
+                    ] ifFalse:[
+                        errMsg := 'missing class for extension: ',className.
+                    ].
+                    Transcript showCR:errMsg.
+                    self error:errMsg mayProceed:true.
                     classesAlreadyWarned add:className.
                 ].
             ].
@@ -6747,7 +6753,7 @@
 !
 
 hasAllClassesFullyLoaded
-    "return true, if all classes are present and loaded"
+    "return true, if all classes are present and loaded (not autoloaded)"
 
     ^ self hasAllClassesLoaded:true
 
@@ -7136,11 +7142,11 @@
 !ProjectDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.433 2013-03-21 16:41:42 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.439 2013-03-26 13:21:07 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.433 2013-03-21 16:41:42 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.439 2013-03-26 13:21:07 cg Exp $'
 !
 
 version_HG
--- a/ReadStream.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/ReadStream.st	Wed Mar 27 12:24:15 2013 +0000
@@ -145,12 +145,9 @@
 !
 
 size
-    "return the number of elements in the streamed collection."
+    "return the number of remaining elements in the streamed collection."
 
-    ^ collection size
-
-    "Created: 13.9.1996 / 18:14:35 / cg"
-    "Modified: 4.10.1997 / 17:59:45 / cg"
+    ^ collection size - position
 ! !
 
 !ReadStream methodsFor:'reading'!
@@ -850,9 +847,10 @@
 !ReadStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ReadStream.st,v 1.65 2011-09-23 11:32:54 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ReadStream.st,v 1.66 2013-03-22 14:24:53 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/ReadStream.st,v 1.65 2011-09-23 11:32:54 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ReadStream.st,v 1.66 2013-03-22 14:24:53 cg Exp $'
 ! !
+
--- a/SequenceableCollection.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/SequenceableCollection.st	Wed Mar 27 12:24:15 2013 +0000
@@ -368,6 +368,7 @@
     ^ self == SequenceableCollection
 ! !
 
+
 !SequenceableCollection methodsFor:'Compatibility-Squeak'!
 
 allButFirst
@@ -3472,6 +3473,18 @@
     "
 !
 
+copyReplaceAny:collectionOfOldElements with:newElement
+    "return a copy of the receiver, where all elements equal to any in collectionOfOldElements
+     have been replaced by newElement."
+
+    ^ self copy replaceAny:collectionOfOldElements with:newElement
+
+    "
+     #(1 2 3 1 2 3 1 2 3 4 1 2 3 1 2 3) copyReplaceAny:#(1 2) with:99
+     'hello world' copyReplaceAny:'eo' with:$*
+    "
+!
+
 copyReplaceFrom:startIndex to:endIndex with:aCollection
     "return a copy of the receiver, where the elements from startIndex to
      endIndex have been replaced by the elements of aCollection"
@@ -8846,11 +8859,11 @@
 !SequenceableCollection class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/SequenceableCollection.st,v 1.331 2013-03-18 21:47:35 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SequenceableCollection.st,v 1.332 2013-03-25 12:26:12 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/SequenceableCollection.st,v 1.331 2013-03-18 21:47:35 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SequenceableCollection.st,v 1.332 2013-03-25 12:26:12 cg Exp $'
 ! !
 
 
--- a/ShortFloat.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/ShortFloat.st	Wed Mar 27 12:24:15 2013 +0000
@@ -79,7 +79,7 @@
 # endif
 
 # ifndef isNegativeInfinity
-#  define isPositiveInfinity(x) \
+#  define isNegativeInfinity(x) \
 	((((unsigned int *)(&x))[0] == 0x00000000) && \
 	 (((unsigned int *)(&x))[1] == 0xFFF00000))
 # endif
@@ -125,6 +125,11 @@
 #  define NO_FMODF
 #  define NO_MODFF
 # endif
+
+# ifdef __MINGW__
+#  include <string.h>
+# endif
+
 #endif /* WIN32 */
 
 #ifdef solaris
@@ -386,14 +391,14 @@
     self isIEEEFormat ifFalse:[self error:'unsupported operation'].
 
     (UninterpretedBytes isBigEndian == msb) ifFalse:[
-        "swap the bytes"
-        4 to:1 by:-1 do:[:i |
-            aFloat basicAt:i put:(aStream next)
-        ].
-        ^ self
+	"swap the bytes"
+	4 to:1 by:-1 do:[:i |
+	    aFloat basicAt:i put:(aStream next)
+	].
+	^ self
     ].
     1 to:4 do:[:i |
-        aFloat basicAt:i put:aStream next
+	aFloat basicAt:i put:aStream next
     ]
 
     "not part of libboss, as this is also used by others (TIFFReader)"
@@ -426,14 +431,14 @@
     self isIEEEFormat ifFalse:[self error:'unsupported operation'].
 
     (UninterpretedBytes isBigEndian == msb) ifFalse:[
-        "swap the bytes"
-        4 to:1 by:-1 do:[:i |
-            aStream nextPut:(float basicAt:i).
-        ].
-        ^ self
+	"swap the bytes"
+	4 to:1 by:-1 do:[:i |
+	    aStream nextPut:(float basicAt:i).
+	].
+	^ self
     ].
     1 to:4 do:[:i |
-        aStream nextPut:(float basicAt:i).
+	aStream nextPut:(float basicAt:i).
     ]
 
     "not part of libboss, as this is also used by others (TIFFReader)"
@@ -1869,10 +1874,9 @@
 !ShortFloat class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ShortFloat.st,v 1.121 2013-03-20 15:42:38 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ShortFloat.st,v 1.122 2013-03-22 09:44:23 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/ShortFloat.st,v 1.121 2013-03-20 15:42:38 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ShortFloat.st,v 1.122 2013-03-22 09:44:23 cg Exp $'
 ! !
-
--- a/Signal.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/Signal.st	Wed Mar 27 12:24:15 2013 +0000
@@ -246,6 +246,13 @@
     notifierString := aString
 !
 
+originalSignal
+    "return the signal/exception which was originally raised.
+     For noHandler, that is my unhandled signal; for others, thats the exception itself."
+
+    ^ self.
+!
+
 parent
     "return the parent-signal of the receiver"
 
@@ -343,6 +350,13 @@
     "Modified: / 12.3.1998 / 15:04:41 / stefan"
 !
 
+descriptionForDebugger
+    "return the description string of the signal which is used in the 
+     debugger title area"
+
+    ^ self description.
+!
+
 printOn:aStream
     "append a printed representation of the receiver on aStream"
 
@@ -964,9 +978,10 @@
 !Signal class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Signal.st,v 1.109 2010-08-10 08:35:38 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Signal.st,v 1.110 2013-03-26 14:20:07 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Signal.st,v 1.109 2010-08-10 08:35:38 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Signal.st,v 1.110 2013-03-26 14:20:07 cg Exp $'
 ! !
+
--- a/Smalltalk.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/Smalltalk.st	Wed Mar 27 12:24:15 2013 +0000
@@ -900,8 +900,10 @@
 associationAt:aKey ifAbsent:exceptionBlock
     "return a key-value association for aKey, or the value
      from exceptionBlock, if no such key is present.
-     Since ST/X's Smalltalk as no real dictionary, this is
-     simulated here."
+     Since ST/X's Smalltalk as no real dictionary, this is simulated here.
+     Warning: this is a comatibility interface only, with a different semantic as
+              the original ST80 implementation. The returned assoc is created on the fly,
+              and not the one stored in the receiver (there are not assocs there)"
 
     |val|
 
@@ -1989,6 +1991,22 @@
     ].
 !
 
+allMethodsForWhich:aBlock
+    "return a collection of methods for which aBlock returns true"
+
+    |coll|
+
+    coll := OrderedCollection new.
+    Smalltalk allClassesDo:[:eachClass |
+	eachClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
+	    (aBlock value:mthd) ifTrue:[
+		coll add:mthd
+	    ].
+	]
+    ].
+    ^ coll
+!
+
 allMethodsWithSelectorDo:aTwoArgBlock
     "enumerate all methods in all classes and evaluate aBlock
      with method and selector as arguments."
@@ -4202,25 +4220,25 @@
             "/ look for <command>.rc
             "/ if not found, read smalltalk.rc (or stxapp.rc for standAlone operation)
 
-	    commandFile := self commandName asFilename withSuffix:'rc'.
-	    (didReadRCFile := commandFile exists and:[self secureFileIn:commandFile]) ifFalse:[
-		StandAlone ifFalse:[
-		    defaultRC := 'smalltalk.rc' "/asFilename
-		] ifTrue:[
-		    defaultRC := 'stxapp.rc' "/asFilename
-		].
-		"JV@2011-11-01: DO NOT check defaultRC exist - this prevents smalltalk to
-		    to be started with different working directory than stx/projects/smalltalk !!!!!!"
-
-		"/didReadRCFile := defaultRC exists and:[self secureFileIn:defaultRC].
-		didReadRCFile := self secureFileIn:defaultRC.
-		didReadRCFile ifFalse:[
-		    StandAlone ifFalse:[
-			'Smalltalk [warning]: no startup rc-file found. Going into line-by-line interpreter.' infoPrintCR.
-			graphicalMode := false.
-		    ]
-		]
-	    ].
+            commandFile := self commandName asFilename withSuffix:'rc'.
+            (didReadRCFile := commandFile exists and:[self secureFileIn:commandFile]) ifFalse:[
+                StandAlone ifFalse:[
+                    defaultRC := 'smalltalk.rc' "/asFilename
+                ] ifTrue:[
+                    defaultRC := 'stxapp.rc' "/asFilename
+                ].
+                "JV@2011-11-01: DO NOT check defaultRC exist - this prevents smalltalk to
+                    to be started with different working directory than stx/projects/smalltalk !!!!!!"
+
+                "/didReadRCFile := defaultRC exists and:[self secureFileIn:defaultRC].
+                didReadRCFile := self secureFileIn:defaultRC.
+                didReadRCFile ifFalse:[
+                    StandAlone ifFalse:[
+                        'Smalltalk [warning]: no startup rc-file found. Going into line-by-line interpreter.' infoPrintCR.
+                        graphicalMode := false.
+                    ]
+                ]
+            ].
 
             "/ ('StandAlone is %1' bindWith:StandAlone) printCR.
             "/ ('Headless is %1' bindWith:HeadlessOperation) printCR.
@@ -7952,11 +7970,11 @@
 !Smalltalk class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.1015 2013-03-19 17:14:35 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.1017 2013-03-26 17:05:03 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.1015 2013-03-19 17:14:35 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.1017 2013-03-26 17:05:03 cg Exp $'
 !
 
 version_HG
--- a/String.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/String.st	Wed Mar 27 12:24:15 2013 +0000
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
 "
  COPYRIGHT (c) 1988 by Claus Gittinger
 	      All Rights Reserved
@@ -498,6 +496,7 @@
 
 
 
+
 !String class methodsFor:'queries'!
 
 defaultPlatformClass
@@ -1117,7 +1116,7 @@
      'hello world' indexOfAny:'AOE' startingAt:1
      'hello world' indexOfAny:'o' startingAt:6
      'hello world' indexOfAny:'o' startingAt:6
-     'hello world§' indexOfAny:'#§$' startingAt:6
+     'hello world§' indexOfAny:'#§$' startingAt:6
     "
 !
 
@@ -2070,11 +2069,12 @@
 asUUID
     "return self as a UUID"
 
-    ^ UUID readFrom:self
+    ^ UUID fromString:self
 
     "
      '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' asUUID
      'EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B' asUUID
+     'EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B quatsch' asUUID
     "
 
     "Modified: / 02-08-2007 / 16:43:29 / cg"
@@ -3073,8 +3073,8 @@
     "  
       'hello world' asUnicode16String errorPrint
       (Character value:356) asString errorPrint
-      'Bönnigheim' errorPrint
-      'Bönnigheim' asUnicodeString errorPrint
+      'Bönnigheim' errorPrint
+      'Bönnigheim' asUnicodeString errorPrint
     "
 !
 
@@ -3886,10 +3886,10 @@
 !String class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/String.st,v 1.301 2013-02-05 15:30:35 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/String.st,v 1.302 2013-03-26 16:58:19 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/String.st,v 1.301 2013-02-05 15:30:35 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/String.st,v 1.302 2013-03-26 16:58:19 stefan Exp $'
 ! !
 
--- a/Timestamp.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/Timestamp.st	Wed Mar 27 12:24:15 2013 +0000
@@ -295,27 +295,16 @@
     ^ self now
 !
 
-fromString: aString
-    "Answer a new instance for the value given by aString"
-
-    ^ self readFrom: (ReadStream on: aString).
-
-    "
-     Timestamp fromString: '1-10-2000 11:55:00 am'. 
-    "
-
-    "Modified (format): / 20-08-2011 / 16:51:53 / cg"
-!
-
 readFrom:aStringOrStream
     "Answer a new instance for the value given by aStringOrStream"
 
     ^ self 
         readFrom:aStringOrStream 
-        onError:[ ConversionError raiseRequestErrorString:'conversion error']
+        onError:[ ConversionError raiseRequestWith:aStringOrStream errorString:' - timestamp']
 
     "
      self readFrom:'23-jun-2000 15:00'
+     self fromString:'23-jun-2000 15:00'
      self readFrom:'23-jun-2000 '
     "
 
@@ -362,6 +351,7 @@
     "Modified: / 13.7.1999 / 12:30:26 / stefan"
 ! !
 
+
 !Timestamp class methodsFor:'private'!
 
 basicReadFrom:aStream
@@ -1467,6 +1457,7 @@
     "
 ! !
 
+
 !Timestamp methodsFor:'accessing'!
 
 day
@@ -2382,6 +2373,8 @@
     "
 ! !
 
+
+
 !Timestamp methodsFor:'testing'!
 
 isTimestamp
@@ -3170,11 +3163,11 @@
 !Timestamp class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Timestamp.st,v 1.143 2013-01-25 13:34:35 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Timestamp.st,v 1.144 2013-03-26 17:01:39 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Timestamp.st,v 1.143 2013-01-25 13:34:35 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Timestamp.st,v 1.144 2013-03-26 17:01:39 stefan Exp $'
 ! !
 
 
--- a/UninterpretedBytes.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/UninterpretedBytes.st	Wed Mar 27 12:24:15 2013 +0000
@@ -128,14 +128,14 @@
 
     sz := aString size.
     sz == 0 ifTrue:[^ self new].
-    sz odd ifTrue:[ ConversionError raiseErrorString:'invalid hex string (odd size)' ].
+    sz odd ifTrue:[ ConversionError raiseWith:aString errorString:'invalid hex string (odd size)' ].
 
     bytes := self new: sz // 2.
     s := aString readStream.
     1 to: sz // 2 do: [ :idx |
-	hi := s next digitValue.
-	lo := s next digitValue.
-	bytes at:idx put: ((hi bitShift:4) bitOr: lo)
+        hi := s next digitValue.
+        lo := s next digitValue.
+        bytes at:idx put: ((hi bitShift:4) bitOr: lo)
     ].
     ^ bytes
 
@@ -150,7 +150,7 @@
     "
     "
      Time millisecondsToRun:[
-	1000000 timesRepeat:[ ByteArray fromHexString:'1234FEFF1234FEFF1234FEFF1234FEFF' ]
+        1000000 timesRepeat:[ ByteArray fromHexString:'1234FEFF1234FEFF1234FEFF1234FEFF' ]
      ].
     "
 !
@@ -2964,9 +2964,10 @@
 !UninterpretedBytes class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UninterpretedBytes.st,v 1.90 2012-07-19 17:36:24 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UninterpretedBytes.st,v 1.91 2013-03-26 17:02:41 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/UninterpretedBytes.st,v 1.90 2012-07-19 17:36:24 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UninterpretedBytes.st,v 1.91 2013-03-26 17:02:41 stefan Exp $'
 ! !
+
--- a/UserConfirmation.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/UserConfirmation.st	Wed Mar 27 12:24:15 2013 +0000
@@ -11,7 +11,7 @@
 "
 "{ Package: 'stx:libbasic' }"
 
-UserNotification subclass:#UserConfirmation
+Notification subclass:#UserConfirmation
 	instanceVariableNames:'canCancel defaultAnswerInDialog defaultAnswer'
 	classVariableNames:''
 	poolDictionaries:''
@@ -50,7 +50,7 @@
         keeping the flag in a global (very bad)
         keeping it in a class var (almost as bad)
 
-    Notice: thats one of the nice consequences of proceedable exceptions.
+    Notice: that's one of the nice consequences of proceedable exceptions.
 
     [authors:]
         Stefan Vogel
@@ -61,6 +61,7 @@
 "
 ! !
 
+
 !UserConfirmation methodsFor:'accessing'!
 
 aspect
@@ -104,6 +105,7 @@
     defaultAnswer := aBooleanOrNil
 ! !
 
+
 !UserConfirmation methodsFor:'default actions'!
 
 defaultAction
@@ -150,15 +152,18 @@
     "
 ! !
 
+
 !UserConfirmation class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UserConfirmation.st,v 1.5 2008/11/22 10:53:08 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UserConfirmation.st,v 1.7 2013-03-25 14:00:49 cg Exp $'
+!
+
+version_CVS
+    ^ '$Header: /cvs/stx/stx/libbasic/UserConfirmation.st,v 1.7 2013-03-25 14:00:49 cg Exp $'
 !
 
 version_SVN
     ^ '$Id: UserConfirmation.st 10761 2012-01-19 11:46:00Z vranyj1 $'
 ! !
 
-
-
--- a/UserNotification.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/UserNotification.st	Wed Mar 27 12:24:15 2013 +0000
@@ -94,12 +94,6 @@
     "Created: / 31-07-2012 / 15:18:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!UserNotification class methodsFor:'testing'!
-
-isQuerySignal
-    ^ true
-! !
-
 !UserNotification methodsFor:'default actions'!
 
 defaultAction
@@ -128,31 +122,15 @@
     "Modified: / 3.8.1999 / 14:06:55 / stefan"
 ! !
 
-!UserNotification methodsFor:'helpers'!
-
-hasDialog
-    "answer true, if we can use a Dialog window"
-
-    (Smalltalk isInitialized 
-     and:[Dialog notNil
-     and:[Screen notNil
-     and:[Screen current notNil
-     and:[Screen current isOpenAndDispatching
-    ]]]]) ifTrue:[
-        Dialog autoload.        "in case its autoloaded"
-        ^ true.
-    ].
-    ^ false
-! !
-
 !UserNotification class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UserNotification.st,v 1.17 2012-12-12 14:30:09 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UserNotification.st,v 1.18 2013-03-25 13:58:12 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/UserNotification.st,v 1.17 2012-12-12 14:30:09 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UserNotification.st,v 1.18 2013-03-25 13:58:12 cg Exp $'
 ! !
 
+
 UserNotification initialize!
--- a/WriteStream.st	Mon Mar 25 23:04:02 2013 +0000
+++ b/WriteStream.st	Wed Mar 27 12:24:15 2013 +0000
@@ -228,10 +228,6 @@
     ].
 
     "Modified: 19.8.1997 / 17:53:11 / cg"
-!
-
-setCollection:newCollection
-    collection := newCollection
 ! !
 
 !WriteStream methodsFor:'private-accessing'!
@@ -630,9 +626,10 @@
 !WriteStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/WriteStream.st,v 1.74 2012-12-12 23:08:51 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/WriteStream.st,v 1.75 2013-03-22 14:20:07 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/WriteStream.st,v 1.74 2012-12-12 23:08:51 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/WriteStream.st,v 1.75 2013-03-22 14:20:07 cg Exp $'
 ! !
+