splash support
authorClaus Gittinger <cg@exept.de>
Fri, 28 Nov 2008 19:55:53 +0100
changeset 11375 bcdaeec8353c
parent 11374 1a61d6a991b9
child 11376 ba75adbf6a62
splash support
Smalltalk.st
--- a/Smalltalk.st	Fri Nov 28 19:53:43 2008 +0100
+++ b/Smalltalk.st	Fri Nov 28 19:55:53 2008 +0100
@@ -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,21 +12,21 @@
 "{ Package: 'stx:libbasic' }"
 
 Object subclass:#Smalltalk
-	instanceVariableNames:''
-	classVariableNames:'StartBlocks ImageStartBlocks ExitBlocks CachedClasses
-		NumberOfClassesHint SystemPath StartupClass StartupSelector
-		StartupArguments CommandLine CommandName CommandLineArguments
-		CachedAbbreviations SilentLoading Initializing StandAlone
-		HeadlessOperation IsPlugin IsSharedLibraryComponent IsSTScript
-		DebuggingStandAlone LogDoits LoadBinaries RealSystemPath
-		ResourcePath SourcePath BinaryPath FileInPath PackagePath
-		BinaryDirName ResourceDirName SourceDirName BitmapDirName
-		PackageDirName FileInDirName ChangeFileName ImageStartTime
-		ImageRestartTime DemoMode SaveEmergencyImage SpecialObjectArray
-		CallbackSignal KnownPackages ClassesFailedToInitialize
-		HasNoConsole'
-	poolDictionaries:''
-	category:'System-Support'
+        instanceVariableNames:''
+        classVariableNames:'StartBlocks ImageStartBlocks ExitBlocks CachedClasses
+                NumberOfClassesHint SystemPath StartupClass StartupSelector
+                StartupArguments CommandLine CommandName CommandLineArguments
+                CachedAbbreviations SilentLoading Initializing StandAlone
+                HeadlessOperation IsPlugin IsSharedLibraryComponent IsSTScript
+                DebuggingStandAlone LogDoits LoadBinaries RealSystemPath
+                ResourcePath SourcePath BinaryPath FileInPath PackagePath
+                BinaryDirName ResourceDirName SourceDirName BitmapDirName
+                PackageDirName FileInDirName ChangeFileName ImageStartTime
+                ImageRestartTime DemoMode SaveEmergencyImage SpecialObjectArray
+                CallbackSignal KnownPackages ClassesFailedToInitialize
+                HasNoConsole'
+        poolDictionaries:''
+        category:'System-Support'
 !
 
 Smalltalk comment:'declared from: ..\..\..\stx\libbasic\abbrev.stc'
@@ -37,7 +37,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
@@ -67,150 +67,150 @@
 
 
     [Instance variables:]
-					none - all handling is done in the VM
+                                        none - all handling is done in the VM
 
     [Class variables:]
 
-	StartBlocks     <Collection>    blocks to be executed in a separate process after
-					everything has been initialized. These blocks will
-					be deleted after execution and therefore not be
-					executed after an image restart. Initial processes
-					(such as the Launcher) are usually started here.
-					These blocks are added by smalltalk.rc/private.rc etc.
-					via #addStartBlock during early initialization.
-
-	ImageStartBlocks
-			<Collection>    blocks to be executed in a separate process after
-					everything has been initialized. These blocks will be
-					executed after an image restart.
-					These blocks are usually added by smalltalk_r.rc etc.
-
-	ExitBlocks      <Collection>    blocks to evaluate before system is
-					left. Not currently used (GNU-ST compatibility).
-
-	SystemPath      <Collection>    path to search for system files (sources, bitmaps etc)
-					Set to a default here, but typically changed from some
-					startup.rc file
-
-	PackagePath     <Collection>    path to search for package.
-					This is going to replace the above systemPath, and a classes
-					resources will eventually searched in its package directory.
-					This list defines the path, where packages are searched for,
-					initially this is something like /opt/smalltalk/packages.
-					Set to a default here, but typically changed from some
-					startup.rc file
-
-	StartupClass    <Class>         class and selector, where the system starts up
-	StartupSelector <Symbol>        (right after VM initialization)
-	StartupArguments <Array>        If an image is saved while those being nonNil,
-					the image will come up there.
-					Allows for customized images to be generated from a standard ST/X.
-					StandAlone programs also set those during initialization.
-
-	CommandLine          <String>   Unix (OS-) command line
-
-	CommandName          <String>   the command (i.e. argv[0])
-
-	CommandLineArguments <Array>    Unix (OS-) command line arguments broken into words
-					CommandName has been stripped off.
-					(initially set by the VM)
-
-	SilentLoading   <Boolean>       suppresses messages during fileIn and in compiler
-					(can be set to true from a customized main.c)
-
-	Initializing    <Boolean>       true while (re-)initializing
-					Controls the behavior of certain error
-					reporters (for example: suppress dialogBoxes)
-					while the system is not yet fit for full operation.
-
-	StandAlone      <Boolean>       true, if this is a standalone app;
-					if true the process scheduler watches for
-					which processes are still running, and
-					exits ST/X, when the last non-background
-					and non-system process exits.
-					Can be set in an application-specific startup script,
-					or, for standAlone programs, by C-code during initialization.
-
-	HeadlessOperation               if true, a non-existing Display connection
-			<Boolean>       will NOT lead to an error-exit during startup.
-					Default is false.
-					Can be set in an application-specific startup script,
-					or, for standAlone programs, by C-code during initialization.
-
-	LogDoits        <Boolean>       if true, doits are also logged in the changes
-					file. Default is false, since the changes file
-					may become huge if every tiny doIt is saved there ...
-
-	LoadBinaries    <Boolean>       if true, we attempt to load classes rom a binary
-					file, if present. If false, this is always suppressed.
-
-	SaveEmergencyImage <Boolean>    if true (the default), an emergency image
-					is saved, if the main Display looses its
-					connection. This is useful if you have a
-					flaky display connection (serial line)
-					and want to have your stuff saved automatically
-					in case of a broken connection.
+        StartBlocks     <Collection>    blocks to be executed in a separate process after
+                                        everything has been initialized. These blocks will
+                                        be deleted after execution and therefore not be
+                                        executed after an image restart. Initial processes
+                                        (such as the Launcher) are usually started here.
+                                        These blocks are added by smalltalk.rc/private.rc etc.
+                                        via #addStartBlock during early initialization.
+
+        ImageStartBlocks
+                        <Collection>    blocks to be executed in a separate process after
+                                        everything has been initialized. These blocks will be
+                                        executed after an image restart.
+                                        These blocks are usually added by smalltalk_r.rc etc.
+
+        ExitBlocks      <Collection>    blocks to evaluate before system is
+                                        left. Not currently used (GNU-ST compatibility).
+
+        SystemPath      <Collection>    path to search for system files (sources, bitmaps etc)
+                                        Set to a default here, but typically changed from some
+                                        startup.rc file
+
+        PackagePath     <Collection>    path to search for package.
+                                        This is going to replace the above systemPath, and a classes
+                                        resources will eventually searched in its package directory.
+                                        This list defines the path, where packages are searched for,
+                                        initially this is something like /opt/smalltalk/packages.
+                                        Set to a default here, but typically changed from some
+                                        startup.rc file
+
+        StartupClass    <Class>         class and selector, where the system starts up
+        StartupSelector <Symbol>        (right after VM initialization)
+        StartupArguments <Array>        If an image is saved while those being nonNil,
+                                        the image will come up there.
+                                        Allows for customized images to be generated from a standard ST/X.
+                                        StandAlone programs also set those during initialization.
+
+        CommandLine          <String>   Unix (OS-) command line
+
+        CommandName          <String>   the command (i.e. argv[0])
+
+        CommandLineArguments <Array>    Unix (OS-) command line arguments broken into words
+                                        CommandName has been stripped off.
+                                        (initially set by the VM)
+
+        SilentLoading   <Boolean>       suppresses messages during fileIn and in compiler
+                                        (can be set to true from a customized main.c)
+
+        Initializing    <Boolean>       true while (re-)initializing
+                                        Controls the behavior of certain error
+                                        reporters (for example: suppress dialogBoxes)
+                                        while the system is not yet fit for full operation.
+
+        StandAlone      <Boolean>       true, if this is a standalone app;
+                                        if true the process scheduler watches for
+                                        which processes are still running, and
+                                        exits ST/X, when the last non-background
+                                        and non-system process exits.
+                                        Can be set in an application-specific startup script,
+                                        or, for standAlone programs, by C-code during initialization.
+
+        HeadlessOperation               if true, a non-existing Display connection
+                        <Boolean>       will NOT lead to an error-exit during startup.
+                                        Default is false.
+                                        Can be set in an application-specific startup script,
+                                        or, for standAlone programs, by C-code during initialization.
+
+        LogDoits        <Boolean>       if true, doits are also logged in the changes
+                                        file. Default is false, since the changes file
+                                        may become huge if every tiny doIt is saved there ...
+
+        LoadBinaries    <Boolean>       if true, we attempt to load classes rom a binary
+                                        file, if present. If false, this is always suppressed.
+
+        SaveEmergencyImage <Boolean>    if true (the default), an emergency image
+                                        is saved, if the main Display looses its
+                                        connection. This is useful if you have a
+                                        flaky display connection (serial line)
+                                        and want to have your stuff saved automatically
+                                        in case of a broken connection.
 
     strictly private classVariables (helpers):
 
-	CachedClasses   <Collection>    known classes (cached for faster class enumeration)
-
-	CachedAbbreviations
-			<Dictionary>    className to filename mappings
-
-	RealSystemPath  <Collection>    cached collection of directories along the path
-					which really exist. Caching avoids long checks
-					for existing directories on broken NFS volumes.
-
-	SourcePath      <Collection>    cached names of really existing directories
-					These are remembered, as in NFS systems,
-	ResourcePath                    the time to lookup files may become long
-	BinaryPath                      (especially, if some directories are on machines
-	FileInPath                      which are not up ...).
-					Therefore, the set of really
-					existing directories is cached when the SystemPath
-					is walked the first time.
-					A consequence is that you have to invoke
-					flushSystemPath, when you create any of those
-					directories while running
-					(and want the running ST/X to look there)
+        CachedClasses   <Collection>    known classes (cached for faster class enumeration)
+
+        CachedAbbreviations
+                        <Dictionary>    className to filename mappings
+
+        RealSystemPath  <Collection>    cached collection of directories along the path
+                                        which really exist. Caching avoids long checks
+                                        for existing directories on broken NFS volumes.
+
+        SourcePath      <Collection>    cached names of really existing directories
+                                        These are remembered, as in NFS systems,
+        ResourcePath                    the time to lookup files may become long
+        BinaryPath                      (especially, if some directories are on machines
+        FileInPath                      which are not up ...).
+                                        Therefore, the set of really
+                                        existing directories is cached when the SystemPath
+                                        is walked the first time.
+                                        A consequence is that you have to invoke
+                                        flushSystemPath, when you create any of those
+                                        directories while running
+                                        (and want the running ST/X to look there)
 
 
     [author:]
-	Claus Gittinger
+        Claus Gittinger
 
     [see also:]
-	ObjectMemory
-	StandaloneStartup
-	GetOpt
-	ReadEvalPrintLoop
+        ObjectMemory
+        StandaloneStartup
+        GetOpt
+        ReadEvalPrintLoop
 "
 !
 
 readme_resources
 "
     What is a resource file:
-	resource files contain language transformation and sometimes
-	UI-look specifics such as icons etc.
+        resource files contain language transformation and sometimes
+        UI-look specifics such as icons etc.
 
     Where are resources stored in the image:
-	Resource files are only read on demand (i.e. when needed) and only read once
-	i.e. they are cached in the image).
-	The cached data is held in a per-class class-instVar named 'ClassResources'.
-	With only a few exceptions, the only classes which need resources are the GUI
-	classes under the SimpleView hierarchy.
+        Resource files are only read on demand (i.e. when needed) and only read once
+        i.e. they are cached in the image).
+        The cached data is held in a per-class class-instVar named 'ClassResources'.
+        With only a few exceptions, the only classes which need resources are the GUI
+        classes under the SimpleView hierarchy.
 
     How does the system find resources:
-	The idea is that the system-provided resource files can be overwritten
-	by the user or an application configuration.
-	This works via a hierarchy of directories where resources are searched for,
-	with the systems standard resource-files being at the end of that chain.
-
-	When searching for a resource file for class X, the following files are searched
-	in order:
-		{ResourcePath} / resources / X.rs
-		{SystemPath} / (CLASSES-PACKAGE-PATH) / X.rs
-		{ResourcePath} / (CLASSES-PACKAGE-PATH) / X.rs
+        The idea is that the system-provided resource files can be overwritten
+        by the user or an application configuration.
+        This works via a hierarchy of directories where resources are searched for,
+        with the systems standard resource-files being at the end of that chain.
+
+        When searching for a resource file for class X, the following files are searched
+        in order:
+                {ResourcePath} / resources / X.rs
+                {SystemPath} / (CLASSES-PACKAGE-PATH) / X.rs
+                {ResourcePath} / (CLASSES-PACKAGE-PATH) / X.rs
 "
 ! !
 
@@ -294,20 +294,20 @@
     |envString i langString terrString|
 
     StandAlone isNil ifTrue:[
-	StandAlone := false.
+        StandAlone := false.
     ].
     HeadlessOperation isNil ifTrue:[
-	HeadlessOperation := false.
+        HeadlessOperation := false.
     ].
 
     "
      extract Language and LanguageTerritory from LANG variable.
      valid are for example:
-			    en_en / en
-			    en_us
-			    en_gb
-			    de_de / de
-			    de_at       (for Austria)
+                            en_en / en
+                            en_us
+                            en_gb
+                            de_de / de
+                            de_at       (for Austria)
     "
 
     Language := #en.
@@ -315,35 +315,35 @@
 
 
     "Format of LANG is: language[_territory][.codeset][@modifier]
-	language        ISO-639  Language code
-	territory       ISO-3166 Contry code"
+        language        ISO-639  Language code
+        territory       ISO-3166 Contry code"
 
     envString := OperatingSystem getLanguage.
     envString size > 0 ifTrue:[
-	i := envString indexOf:$@.
-	(i ~~ 0) ifTrue:[
-	    envString := envString copyTo:(i - 1).
-	    LanguageModifier := (envString copyFrom:(i + 1)) asLowercase asSymbol.
-	] ifFalse:[
-	    LanguageModifier := nil.
-	].
-	i := envString indexOf:$..
-	(i ~~ 0) ifTrue:[
-	    envString := envString copyTo:(i - 1).
-	    LanguageCodeset := (envString copyFrom:(i + 1)) asLowercase asSymbol
-	] ifFalse:[
-	    LanguageCodeset := #'iso8859-1'.
-	].
-	i := envString indexOf:$_.
-	(i == 0) ifTrue:[
-	    langString := envString.
-	    terrString := envString
-	] ifFalse:[
-	    langString := envString copyTo:(i - 1).
-	    terrString := envString copyFrom:(i + 1)
-	].
-	Language := langString asLowercase asSymbol.
-	LanguageTerritory := terrString asLowercase asSymbol
+        i := envString indexOf:$@.
+        (i ~~ 0) ifTrue:[
+            envString := envString copyTo:(i - 1).
+            LanguageModifier := (envString copyFrom:(i + 1)) asLowercase asSymbol.
+        ] ifFalse:[
+            LanguageModifier := nil.
+        ].
+        i := envString indexOf:$..
+        (i ~~ 0) ifTrue:[
+            envString := envString copyTo:(i - 1).
+            LanguageCodeset := (envString copyFrom:(i + 1)) asLowercase asSymbol
+        ] ifFalse:[
+            LanguageCodeset := #'iso8859-1'.
+        ].
+        i := envString indexOf:$_.
+        (i == 0) ifTrue:[
+            langString := envString.
+            terrString := envString
+        ] ifFalse:[
+            langString := envString copyTo:(i - 1).
+            terrString := envString copyFrom:(i + 1)
+        ].
+        Language := langString asLowercase asSymbol.
+        LanguageTerritory := terrString asLowercase asSymbol
     ].
 
     "
@@ -378,7 +378,7 @@
     Stderr := NonPositionableExternalStream forStderr.
     Stdin := NonPositionableExternalStream forStdin.
     PrinterStream notNil ifTrue:[
-	Printer := PrinterStream defaultPrinter.
+        Printer := PrinterStream defaultPrinter.
     ].
     Transcript := Stderr
 
@@ -395,13 +395,13 @@
        they will redefine Inspector and Debugger for graphical interfaces"
 
     Display notNil ifTrue:[
-	InspectorView notNil ifTrue:[
-	    Inspector := InspectorView
-	].
-	DebugView notNil ifTrue:[
-	    Debugger := DebugView
-	].
-	"/ Display initialize
+        InspectorView notNil ifTrue:[
+            Inspector := InspectorView
+        ].
+        DebugView notNil ifTrue:[
+            Debugger := DebugView
+        ].
+        "/ Display initialize
     ]
 
     "
@@ -412,66 +412,66 @@
 initSystemPath
     "setup path where system files are searched for.
      the default path is set to:
-	    .
-	    <directory of exe>       (WIN32 only)
-	    $HOME                    (if defined)
-	    $HOME/.smalltalk         (if defined & existing)
-	    $SMALLTALK_LIBDIR        (if defined & existing)
-	    $STX_LIBDIR              (if defined & existing)
-	    $STX_TOPDIR              (if defined & existing)
-	    REGISTRY('HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\<CurrentVersion>\LibDir') (WIN32 only)
-	    REGISTRY('HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\LibDir')                  (WIN32 only)
-	    <standard places>
+            .
+            <directory of exe>       (WIN32 only)
+            $HOME                    (if defined)
+            $HOME/.smalltalk         (if defined & existing)
+            $SMALLTALK_LIBDIR        (if defined & existing)
+            $STX_LIBDIR              (if defined & existing)
+            $STX_TOPDIR              (if defined & existing)
+            REGISTRY('HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\<CurrentVersion>\LibDir') (WIN32 only)
+            REGISTRY('HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\LibDir')                  (WIN32 only)
+            <standard places>
 
      standard places (unix):
-	    /opt/smalltalk/<release> (if existing)
-	    /opt/smalltalk           (if existing)
-	    /usr/local/lib/smalltalk (if existing)
-	    /usr/lib/smalltalk       (if existing)
-	    /lib/smalltalk           (if existing)
+            /opt/smalltalk/<release> (if existing)
+            /opt/smalltalk           (if existing)
+            /usr/local/lib/smalltalk (if existing)
+            /usr/lib/smalltalk       (if existing)
+            /lib/smalltalk           (if existing)
 
      win32:
-	    \programs\exept\smalltalk (if existing)
-	    \programs\smalltalk       (if existing)
-	    \smalltalk                (if existing)
+            \programs\exept\smalltalk (if existing)
+            \programs\smalltalk       (if existing)
+            \smalltalk                (if existing)
 
      vms:
-	    $stx:lib                 (if existing)
-	    $stx:root                (if existing)
+            $stx:lib                 (if existing)
+            $stx:root                (if existing)
 
      of course, it is possible to add entries from the 'smalltalk.rc'
      startup file; add expressions such as:
-	    Smalltalk systemPath addFirst:'/foo/bar/baz'.
-	or:
-	    Smalltalk systemPath addLast:'/fee/foe/foo'.
+            Smalltalk systemPath addFirst:'/foo/bar/baz'.
+        or:
+            Smalltalk systemPath addLast:'/fee/foe/foo'.
 
      However, smalltalk.rc itself must be found along the above path.
     "
 
     ChangeFileName := 'changes'.
     OperatingSystem isVMSlike ifTrue:[
-	BitmapDirName := 'bitmaps.dir'.
-	BinaryDirName := 'binary.dir'.
-	SourceDirName := 'source.dir'.
-	ResourceDirName := 'resources.dir'.
-	FileInDirName := 'filein.dir'.
-	PackageDirName := 'packages.dir'.
+        BitmapDirName := 'bitmaps.dir'.
+        BinaryDirName := 'binary.dir'.
+        SourceDirName := 'source.dir'.
+        ResourceDirName := 'resources.dir'.
+        FileInDirName := 'filein.dir'.
+        PackageDirName := 'packages.dir'.
     ] ifFalse:[
-	BitmapDirName := 'bitmaps'.
-	BinaryDirName := 'binary'.
-	SourceDirName := 'source'.
-	ResourceDirName := 'resources'.
-	FileInDirName := 'fileIn'.
-	PackageDirName := 'packages'.
+        BitmapDirName := 'bitmaps'.
+        BinaryDirName := 'binary'.
+        SourceDirName := 'source'.
+        ResourceDirName := 'resources'.
+        FileInDirName := 'fileIn'.
+        PackageDirName := 'packages'.
     ].
 
     SystemPath isNil ifTrue:[
-	SystemPath := OperatingSystem defaultSystemPath.
-	self flushPathCaches
+        SystemPath := OperatingSystem defaultSystemPath.
+        self flushPathCaches
     ].
 
     PackagePath isNil ifTrue:[
-	PackagePath := OperatingSystem defaultPackagePath.
+        PackagePath := OperatingSystem defaultPackagePath.
     ].
 
     "
@@ -496,17 +496,17 @@
     "sent from VM via #initializeModules"
 
     Error handle:[:ex |
-	ClassesFailedToInitialize isNil ifTrue:[
-	    ClassesFailedToInitialize := IdentitySet new.
-	].
-	ClassesFailedToInitialize add:aClass.
-	('Smalltalk [warning]: error during initialize of ' , aClass name,': ', ex description printString) errorPrintCR.
-	ex suspendedContext fullPrintAll.
-	(Smalltalk commandLineArguments includes:'--debug') ifTrue:[
-	    ex reject
-	].
+        ClassesFailedToInitialize isNil ifTrue:[
+            ClassesFailedToInitialize := IdentitySet new.
+        ].
+        ClassesFailedToInitialize add:aClass.
+        ('Smalltalk [warning]: error during initialize of ' , aClass name,': ', ex description printString) errorPrintCR.
+        ex suspendedContext fullPrintAll.
+        (Smalltalk commandLineArguments includes:'--debug') ifTrue:[
+            ex reject
+        ].
     ] do:[
-	aClass initialize
+        aClass initialize
     ].
 
     "Modified: / 23-10-2006 / 16:29:19 / cg"
@@ -519,12 +519,12 @@
 
     self initializeModulesOnce.
     ClassesFailedToInitialize size > 0 ifTrue:[
-	('Smalltalk [info]: retry initialization of failed class(es)...') infoPrintCR.
-	ClassesFailedToInitialize := nil.
-	self initializeModulesOnce.
-	ClassesFailedToInitialize size > 0 ifTrue:[
-	    ('Smalltalk [error]: class(es) persist to fail during initialize') errorPrintCR.
-	]
+        ('Smalltalk [info]: retry initialization of failed class(es)...') infoPrintCR.
+        ClassesFailedToInitialize := nil.
+        self initializeModulesOnce.
+        ClassesFailedToInitialize size > 0 ifTrue:[
+            ('Smalltalk [error]: class(es) persist to fail during initialize') errorPrintCR.
+        ]
     ].
 
     ProjectDefinition initializeAllProjectDefinitions.
@@ -678,27 +678,27 @@
 
     objects := SpecialObjectArray.
     objects isNil ifTrue:[
-	objects := Array new:5.
+        objects := Array new:5.
     ].
 
     "find the first empty slot and look if already registered"
     firstEmptyIndex := 0.
     1 to: objects size do: [:i |
-	obj := objects at: i.
-	obj == anObject ifTrue: [^ i].  "object already there, just return its index"
-	(obj == nil and: [firstEmptyIndex = 0]) ifTrue: [
-	    firstEmptyIndex := i
-	]
+        obj := objects at: i.
+        obj == anObject ifTrue: [^ i].  "object already there, just return its index"
+        (obj == nil and: [firstEmptyIndex = 0]) ifTrue: [
+            firstEmptyIndex := i
+        ]
     ].
 
     "if no empty slots, expand the array"
     firstEmptyIndex = 0 ifTrue: [
-	sz := objects size.
-	newObjects := objects species new: sz + 20.  "grow linearly"
-	newObjects replaceFrom: 1 to: sz with: objects startingAt: 1.
-	firstEmptyIndex := sz + 1.
-	SpecialObjectArray := newObjects.
-	objects := newObjects
+        sz := objects size.
+        newObjects := objects species new: sz + 20.  "grow linearly"
+        newObjects replaceFrom: 1 to: sz with: objects startingAt: 1.
+        firstEmptyIndex := sz + 1.
+        SpecialObjectArray := newObjects.
+        objects := newObjects
     ].
 
     objects at: firstEmptyIndex put: anObject.
@@ -719,9 +719,9 @@
     anObject isNil ifTrue:[^ self].
     objects := SpecialObjectArray.
     1 to: objects size do: [:i |
-	(objects at: i) == anObject ifTrue: [
-	    objects at: i put: nil
-	]
+        (objects at: i) == anObject ifTrue: [
+            objects at: i put: nil
+        ]
     ].
 !
 
@@ -737,7 +737,7 @@
     ^ platformName.
 
     "
-     Smalltalk windowSystemName 
+     Smalltalk windowSystemName
                                 -> 'Win32'
     "
 ! !
@@ -759,10 +759,10 @@
 
 declarePoolDictionary:poolDictionaryName
     SharedPool subclass:(poolDictionaryName asSymbol)
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	category:nil
+        instanceVariableNames:''
+        classVariableNames:''
+        poolDictionaries:''
+        category:nil
 ! !
 
 !Smalltalk class methodsFor:'Compatibility-VW5.4'!
@@ -771,17 +771,17 @@
     |newClass|
 
     indexed == #none ifTrue:[
-	newClass := superclass
-	    subclass:nameSymbol
-	    instanceVariableNames:instVars
-	    classVariableNames:''
-	    poolDictionaries:''
-	    category:category
-	    inEnvironment:self.
-	classInstVars size > 0 ifTrue:[
-	    newClass class instanceVariableNames:classInstVars.
-	].
-	^ newClass
+        newClass := superclass
+            subclass:nameSymbol
+            instanceVariableNames:instVars
+            classVariableNames:''
+            poolDictionaries:''
+            category:category
+            inEnvironment:self.
+        classInstVars size > 0 ifTrue:[
+            newClass class instanceVariableNames:classInstVars.
+        ].
+        ^ newClass
     ].
     self shouldImplement.
 ! !
@@ -836,7 +836,7 @@
      the evaluation of aBlock."
 
     (self includesKey:aKey) ifTrue:[
-	^ self at:aKey
+        ^ self at:aKey
     ].
     ^ aBlock value
 
@@ -852,7 +852,7 @@
      Otherwise, evaluate aBlock, passing the retrieved value as argument."
 
     (self includesKey:aKey) ifTrue:[
-	^ aBlock value:(self at:aKey)
+        ^ aBlock value:(self at:aKey)
     ].
     ^ nil
 
@@ -873,23 +873,23 @@
     oldValue = __GLOBAL_SET(aKey, aValue, (OBJ *)0);
 %}.
     CachedClasses notNil ifTrue:[
-	oldValue isBehavior ifTrue:[
-	    oldValue name == aKey ifTrue:[
-		CachedClasses remove:oldValue ifAbsent:[]
-	    ]
-	].
-	aValue isBehavior ifTrue:[
+        oldValue isBehavior ifTrue:[
+            oldValue name == aKey ifTrue:[
+                CachedClasses remove:oldValue ifAbsent:[]
+            ]
+        ].
+        aValue isBehavior ifTrue:[
 "/            aValue isMeta ifTrue:[
 "/                "/ this should not happen
 "/                ('SMALLTALK: store a Metaclass: ' , aValue name , ' as ' , aKey) infoPrintCR.
 "/            ].
 
-	    aValue name == aKey ifTrue:[
-		CachedClasses add:aValue
-	    ] ifFalse:[
-		CachedClasses := nil
-	    ]
-	].
+            aValue name == aKey ifTrue:[
+                CachedClasses add:aValue
+            ] ifFalse:[
+                CachedClasses := nil
+            ]
+        ].
     ].
     ^ aValue.
 "/
@@ -921,7 +921,7 @@
     "return the symbol under which anObject is stored - or nil"
 
     self keysDo:[:aKey |
-	(self at:aKey) == anObject ifTrue:[^ aKey]
+        (self at:aKey) == anObject ifTrue:[^ aKey]
     ].
     ^ nil
 
@@ -941,16 +941,16 @@
 removeKey:aKey
     "remove the association stored under the key-argument from the globals dictionary.
      WARNING:
-	this is somewhat dangerous: conceptionally, the association is removed,
-	to which machine & byte compiled code refers if it accesses a global.
-	If there are still global accesses in some literalArray or from machine-compiled code,
-	it continues to reference the globals value via that obsolete association and gets a nil
-	value.  (which is correct)
-	However, if that global is later reintroduced, a new association will be created and
-	the new global now referenced via the new association.
-	The old accesses will still see nil, although the globals value is actually non-nil
-	(this is questionable).
-	To avoid this problem, the #removeClass: method never removed the key."
+        this is somewhat dangerous: conceptionally, the association is removed,
+        to which machine & byte compiled code refers if it accesses a global.
+        If there are still global accesses in some literalArray or from machine-compiled code,
+        it continues to reference the globals value via that obsolete association and gets a nil
+        value.  (which is correct)
+        However, if that global is later reintroduced, a new association will be created and
+        the new global now referenced via the new association.
+        The old accesses will still see nil, although the globals value is actually non-nil
+        (this is questionable).
+        To avoid this problem, the #removeClass: method never removed the key."
 
     CachedClasses := nil.
 
@@ -1009,9 +1009,9 @@
     "startup a changes browser"
 
     ChangesBrowser notNil ifTrue:[
-	ChangesBrowser open
+        ChangesBrowser open
     ] ifFalse:[
-	self warn:'no ChangesBrowser built in'
+        self warn:'no ChangesBrowser built in'
     ]
 
     "
@@ -1022,7 +1022,7 @@
 browseClass:aClass
     "{ Pragma: +optSpace }"
 
-    "startup a browser on aClass. 
+    "startup a browser on aClass.
      The broser will only show that class (i.e. be a singleClass-browser).
      See browseInClass: for a full browser, which has aClass selected initially."
 
@@ -1096,14 +1096,14 @@
 
     oldCategory := aClass category.
     oldCategory ~= newCategory ifTrue:[
-	aClass category:(newCategory withoutSeparators asSymbol).
-
-	"notify change of category"
-	ns := aClass environment ? self.
-	ns changed:#organization with:(aClass -> oldCategory).
-	ns ~~ self ifTrue:[
-	    self changed:#organization with:(aClass -> oldCategory).
-	]
+        aClass category:(newCategory withoutSeparators asSymbol).
+
+        "notify change of category"
+        ns := aClass environment ? self.
+        ns changed:#organization with:(aClass -> oldCategory).
+        ns ~~ self ifTrue:[
+            self changed:#organization with:(aClass -> oldCategory).
+        ]
     ].
 
     "
@@ -1120,7 +1120,7 @@
 
 flushCachedClass:aClass
     CachedClasses notNil ifTrue:[
-	CachedClasses remove:aClass ifAbsent:[]
+        CachedClasses remove:aClass ifAbsent:[]
     ]
 !
 
@@ -1145,31 +1145,31 @@
     oldName := aClass name.
     sym := oldNameSym := oldName asSymbol.
     ((self at:oldNameSym) == aClass) ifFalse:[
-	"check other name ..."
-	(self includes:aClass) ifFalse:[
-	    'Smalltalk [warning]: no such class: ' errorPrint. oldName errorPrintCR.
-	    ^ self
-	].
-	"
-	 the class has changed its name - without telling me ...
-	 what should be done in this case ?
-	"
-	'Smalltalk [warning]: class ' errorPrint. oldName errorPrint.
-	' has changed its name' errorPrintCR.
-
-	"/
-	"/ might be an alias (i.e. removing a compatibility name)
-	"/
-	actualName := self keyAtValue:aClass.
-	('Smalltalk [info]: ' , oldName , ' is actually stored as ' , actualName , '.') infoPrintCR.
-	sym := actualName asSymbol.
-	oldName := actualName asString.
-	wrongName := true.
+        "check other name ..."
+        (self includes:aClass) ifFalse:[
+            'Smalltalk [warning]: no such class: ' errorPrint. oldName errorPrintCR.
+            ^ self
+        ].
+        "
+         the class has changed its name - without telling me ...
+         what should be done in this case ?
+        "
+        'Smalltalk [warning]: class ' errorPrint. oldName errorPrint.
+        ' has changed its name' errorPrintCR.
+
+        "/
+        "/ might be an alias (i.e. removing a compatibility name)
+        "/
+        actualName := self keyAtValue:aClass.
+        ('Smalltalk [info]: ' , oldName , ' is actually stored as ' , actualName , '.') infoPrintCR.
+        sym := actualName asSymbol.
+        oldName := actualName asString.
+        wrongName := true.
     ].
 
     ns := aClass nameSpace.
     aClass topOwningClass notNil ifTrue:[
-	ons := aClass topOwningClass nameSpace
+        ons := aClass topOwningClass nameSpace
     ].
 
     self at:sym put:nil.    "nil it out for compiled accesses"
@@ -1178,25 +1178,25 @@
     "/ see comment in removeKey: on why we dont remove it here
     "/
     "/ self removeKey:sym.     "/ remove key - this actually fails, if there are
-			       "/ still compiled code references."
+                               "/ still compiled code references."
 
     "remove private classes"
 
     aClass privateClassesSorted do:[:somePrivateClass |
-	aClass privateClassesAt:(somePrivateClass nameWithoutPrefix) asSymbol put:nil.
+        aClass privateClassesAt:(somePrivateClass nameWithoutPrefix) asSymbol put:nil.
     ].
 
     "remove class variables"
 
     names := aClass classVariableString asCollectionOfWords.
     names do:[:name |
-	cSym := aClass globalKeyForClassVar:name.
-	self at:cSym asSymbol put:nil.
-
-	"/
-	"/ see comment in removeKey: on why we dont remove it here
-	"/
-	"/ self removeKey:cSym
+        cSym := aClass globalKeyForClassVar:name.
+        self at:cSym asSymbol put:nil.
+
+        "/
+        "/ see comment in removeKey: on why we dont remove it here
+        "/
+        "/ self removeKey:cSym
     ].
 
 
@@ -1225,31 +1225,31 @@
     Class flushSubclassInfo.
 
     wrongName == true ifTrue:[
-	"/
-	"/ an alias (i.e. removing a compatibility name)
-	"/
-	"/ check if there are more refs to it ...
-	[self includes:aClass] whileTrue:[
-	    actualName := self keyAtValue:aClass.
-	    ('Smalltalk [info]: ' , aClass name , ' is also registered under the name ' , actualName
-			  , ' - remove that binding too.') infoPrintCR.
-	    self at:actualName put:nil.
-	].
+        "/
+        "/ an alias (i.e. removing a compatibility name)
+        "/
+        "/ check if there are more refs to it ...
+        [self includes:aClass] whileTrue:[
+            actualName := self keyAtValue:aClass.
+            ('Smalltalk [info]: ' , aClass name , ' is also registered under the name ' , actualName
+                          , ' - remove that binding too.') infoPrintCR.
+            self at:actualName put:nil.
+        ].
     ].
 
     ns ~~ Smalltalk ifTrue:[
-	ons notNil ifTrue:[
-	    ClassBuilder
-		recompileGlobalAccessorsTo:oldNameSym
-		in:ons
-		except:nil
-	].
-	(ns notNil and:[ns ~~ ons]) ifTrue:[
-	    ClassBuilder
-		recompileGlobalAccessorsTo:oldNameSym
-		in:ns
-		except:nil
-	].
+        ons notNil ifTrue:[
+            ClassBuilder
+                recompileGlobalAccessorsTo:oldNameSym
+                in:ons
+                except:nil
+        ].
+        (ns notNil and:[ns ~~ ons]) ifTrue:[
+            ClassBuilder
+                recompileGlobalAccessorsTo:oldNameSym
+                in:ns
+                except:nil
+        ].
     ].
 
     "Modified: / 18-11-2006 / 17:16:31 / cg"
@@ -1270,24 +1270,24 @@
     i2 := 1.
     ns := self.
     [i2 ~~ 0] whileTrue:[
-	i2 := newName indexOfSubCollection:'::' startingAt:i1.
-	i2 ~~ 0 ifTrue:[
-	    nm := newName copyFrom:i1 to:i2-1.
-	    ns isNameSpace ifTrue:[
-		subns := ns at:nm asSymbol ifAbsent:nil.
-		subns isNil ifTrue:[
-		    self error:'Nonexisting namespace: ',nm.
-		    ^ nil.
-		].
-	    ] ifFalse:[
-		subns := ns privateClassesAt:nm asSymbol.
-		subns isNil ifTrue:[
-		    self error:'Cannot create a namespace below a class'
-		]
-	    ].
-	    ns := subns.
-	    i1 := i2 + 2.
-	].
+        i2 := newName indexOfSubCollection:'::' startingAt:i1.
+        i2 ~~ 0 ifTrue:[
+            nm := newName copyFrom:i1 to:i2-1.
+            ns isNameSpace ifTrue:[
+                subns := ns at:nm asSymbol ifAbsent:nil.
+                subns isNil ifTrue:[
+                    self error:'Nonexisting namespace: ',nm.
+                    ^ nil.
+                ].
+            ] ifFalse:[
+                subns := ns privateClassesAt:nm asSymbol.
+                subns isNil ifTrue:[
+                    self error:'Cannot create a namespace below a class'
+                ]
+            ].
+            ns := subns.
+            i1 := i2 + 2.
+        ].
     ].
 
     oldName := aClass name.
@@ -1298,8 +1298,8 @@
     privateClasses := aClass privateClassesSorted.
 
     ((self at:oldSym) ~~ aClass) ifTrue:[
-	'Smalltalk [warning]: rename failed - name is different from key' errorPrintCR.
-	^ self
+        'Smalltalk [warning]: rename failed - name is different from key' errorPrintCR.
+        ^ self
     ].
 
     "/ rename the class
@@ -1308,42 +1308,42 @@
 
     "/ change the owning class
     ns isNameSpace ifFalse:[
-	aClass isPrivate ifTrue:[
-	    aClass class setOwningClass:ns.
-	] ifFalse:[
-	    "/ sigh - must make a PrivateMetaclass from Metaclass
-	    oldMetaclass := aClass class.
-	    newMetaclass := PrivateMetaclass new.
-	    newMetaclass flags:(oldMetaclass flags).
-	    newMetaclass setSuperclass:(oldMetaclass superclass).
-	    newMetaclass instSize:(oldMetaclass instSize).
-	    newMetaclass setInstanceVariableString:(oldMetaclass instanceVariableString).
-	    newMetaclass setMethodDictionary:(oldMetaclass methodDictionary).
-	    newMetaclass setSoleInstance:aClass.
-	    newMetaclass setOwningClass:ns.
-
-	    aClass changeClassTo:newMetaclass.
-	    ObjectMemory flushCaches.
-	]
+        aClass isPrivate ifTrue:[
+            aClass class setOwningClass:ns.
+        ] ifFalse:[
+            "/ sigh - must make a PrivateMetaclass from Metaclass
+            oldMetaclass := aClass class.
+            newMetaclass := PrivateMetaclass new.
+            newMetaclass flags:(oldMetaclass flags).
+            newMetaclass setSuperclass:(oldMetaclass superclass).
+            newMetaclass instSize:(oldMetaclass instSize).
+            newMetaclass setInstanceVariableString:(oldMetaclass instanceVariableString).
+            newMetaclass setMethodDictionary:(oldMetaclass methodDictionary).
+            newMetaclass setSoleInstance:aClass.
+            newMetaclass setOwningClass:ns.
+
+            aClass changeClassTo:newMetaclass.
+            ObjectMemory flushCaches.
+        ]
     ] ifTrue:[
-	aClass isPrivate ifTrue:[
-	    newCategory := aClass topOwningClass category.
-
-	    "/ sigh - must make a Metaclass from PrivateMetaclass
-	    oldMetaclass := aClass class.
-
-	    newMetaclass := Metaclass new.
-	    newMetaclass flags:(oldMetaclass flags).
-	    newMetaclass setSuperclass:(oldMetaclass superclass).
-	    newMetaclass instSize:(oldMetaclass instSize).
-	    newMetaclass setInstanceVariableString:(oldMetaclass instanceVariableString).
-	    newMetaclass setMethodDictionary:(oldMetaclass methodDictionary).
-	    newMetaclass setSoleInstance:aClass.
-
-	    aClass category:newCategory.
-	    aClass changeClassTo:newMetaclass.
-	    ObjectMemory flushCaches.
-	]
+        aClass isPrivate ifTrue:[
+            newCategory := aClass topOwningClass category.
+
+            "/ sigh - must make a Metaclass from PrivateMetaclass
+            oldMetaclass := aClass class.
+
+            newMetaclass := Metaclass new.
+            newMetaclass flags:(oldMetaclass flags).
+            newMetaclass setSuperclass:(oldMetaclass superclass).
+            newMetaclass instSize:(oldMetaclass instSize).
+            newMetaclass setInstanceVariableString:(oldMetaclass instanceVariableString).
+            newMetaclass setMethodDictionary:(oldMetaclass methodDictionary).
+            newMetaclass setSoleInstance:aClass.
+
+            aClass category:newCategory.
+            aClass changeClassTo:newMetaclass.
+            ObjectMemory flushCaches.
+        ]
     ].
 
     aClass setName:newSym.
@@ -1363,32 +1363,32 @@
 
     names := aClass classVariableString asCollectionOfWords.
     names do:[:name |
-	oldCVSym := (oldSym , ':' , name) asSymbol.
-	value := self at:oldCVSym.
-	self at:oldCVSym put:nil.
-
-	"/
-	"/ see comment in #removeKey: on why we dont remove it it here
-	"/
-	"/ self removeKey:cSym.
-
-	newCVSym := (newSym , ':' , name) asSymbol.
-	self at:newCVSym put:value.
-
-	oldNameToNewName at:oldCVSym put:newCVSym.
+        oldCVSym := (oldSym , ':' , name) asSymbol.
+        value := self at:oldCVSym.
+        self at:oldCVSym put:nil.
+
+        "/
+        "/ see comment in #removeKey: on why we dont remove it it here
+        "/
+        "/ self removeKey:cSym.
+
+        newCVSym := (newSym , ':' , name) asSymbol.
+        self at:newCVSym put:value.
+
+        oldNameToNewName at:oldCVSym put:newCVSym.
     ].
 
     "/ patch methods literal arrays from oldCVname to newCVname
 
     oldNameToNewName keysAndValuesDo:[:oldNameSym :newNameSym |
-	aClass withAllSubclasses do:[:aSubClass |
-	    Transcript showCR:'changing global accesses from ''' , oldNameSym , ''' into ''' , newNameSym , ''' in class: ''' , aSubClass name , ''' ...'.
-	    aSubClass instAndClassSelectorsAndMethodsDo:[:sel :aMethod |
-		aMethod changeLiteral:oldNameSym to:newNameSym
-	    ].
-	].
-
-	"/ and also in privateClasses ? ...
+        aClass withAllSubclasses do:[:aSubClass |
+            Transcript showCR:'changing global accesses from ''' , oldNameSym , ''' into ''' , newNameSym , ''' in class: ''' , aSubClass name , ''' ...'.
+            aSubClass instAndClassSelectorsAndMethodsDo:[:sel :aMethod |
+                aMethod changeLiteral:oldNameSym to:newNameSym
+            ].
+        ].
+
+        "/ and also in privateClasses ? ...
 
 "/        privateClasses size > 0 ifTrue:[
 "/            privateClasses do:[:aPrivateClass |
@@ -1411,85 +1411,85 @@
     newNameSpace := aClass topNameSpace.
 
     privateClasses size > 0 ifTrue:[
-	"/ must rename privateClasses as well
-	Class withoutUpdatingChangesDo:[
-	    privateClasses do:[:aPrivateClass |
-		self renameClass:aPrivateClass
-		     to:(newSym , '::' , aPrivateClass nameWithoutPrefix).
-
-		Transcript showCR:'recompiling methods in ''' , newNameSpace name , ''' accessing ''' , oldName , '::' , aPrivateClass nameWithoutPrefix , ''' ...'.
-		aClass theNonMetaclass recompileMethodsAccessingGlobal:(oldName , '::' , aPrivateClass nameWithoutPrefix) asSymbol.
-		aClass theMetaclass recompileMethodsAccessingGlobal:(oldName , '::' , aPrivateClass nameWithoutPrefix) asSymbol.
-		aClass theNonMetaclass recompileMethodsAccessingGlobal:(aPrivateClass nameWithoutPrefix) asSymbol.
-		aClass theMetaclass recompileMethodsAccessingGlobal:(aPrivateClass nameWithoutPrefix) asSymbol.
+        "/ must rename privateClasses as well
+        Class withoutUpdatingChangesDo:[
+            privateClasses do:[:aPrivateClass |
+                self renameClass:aPrivateClass
+                     to:(newSym , '::' , aPrivateClass nameWithoutPrefix).
+
+                Transcript showCR:'recompiling methods in ''' , newNameSpace name , ''' accessing ''' , oldName , '::' , aPrivateClass nameWithoutPrefix , ''' ...'.
+                aClass theNonMetaclass recompileMethodsAccessingGlobal:(oldName , '::' , aPrivateClass nameWithoutPrefix) asSymbol.
+                aClass theMetaclass recompileMethodsAccessingGlobal:(oldName , '::' , aPrivateClass nameWithoutPrefix) asSymbol.
+                aClass theNonMetaclass recompileMethodsAccessingGlobal:(aPrivateClass nameWithoutPrefix) asSymbol.
+                aClass theMetaclass recompileMethodsAccessingGlobal:(aPrivateClass nameWithoutPrefix) asSymbol.
 "/                ClassBuilder
 "/                    recompileGlobalAccessorsTo:(oldName , '::' , aPrivateClass nameWithoutPrefix) asSymbol
 "/                    in:newNameSpace
 "/                    except:nil.
-	    ]
-	]
+            ]
+        ]
     ].
 
     oldNameSpace ~~ newNameSpace ifTrue:[
 
-	"/ all those referencing the class from the old nameSpace
-	"/ must be recompiled ...
-	"/ (to now access the global from smalltalk)
-
-	oldNameSpace ~~ Smalltalk ifTrue:[
-	    Transcript showCR:'recompiling methods in ''' , oldNameSpace name , ''' accessing ''' , oldName , ''' ...'.
-
-	    ClassBuilder
-		recompileGlobalAccessorsTo:oldName asSymbol
-		in:oldNameSpace
-		except:nil.
-	].
-
-	"/ all referencing the class in the new namespace
-	"/ as well; to now access the new class.
-
-	(newNameSpace notNil and:[newNameSpace ~~ Smalltalk]) ifTrue:[
-	    Transcript showCR:'recompiling methods in ''' , newNameSpace name , ''' accessing ''' , oldBaseName , ''' ...'.
-
-	    ClassBuilder
-		recompileGlobalAccessorsTo:oldBaseName asSymbol
-		in:newNameSpace
-		except:nil.
-	].
+        "/ all those referencing the class from the old nameSpace
+        "/ must be recompiled ...
+        "/ (to now access the global from smalltalk)
+
+        oldNameSpace ~~ Smalltalk ifTrue:[
+            Transcript showCR:'recompiling methods in ''' , oldNameSpace name , ''' accessing ''' , oldName , ''' ...'.
+
+            ClassBuilder
+                recompileGlobalAccessorsTo:oldName asSymbol
+                in:oldNameSpace
+                except:nil.
+        ].
+
+        "/ all referencing the class in the new namespace
+        "/ as well; to now access the new class.
+
+        (newNameSpace notNil and:[newNameSpace ~~ Smalltalk]) ifTrue:[
+            Transcript showCR:'recompiling methods in ''' , newNameSpace name , ''' accessing ''' , oldBaseName , ''' ...'.
+
+            ClassBuilder
+                recompileGlobalAccessorsTo:oldBaseName asSymbol
+                in:newNameSpace
+                except:nil.
+        ].
     ] ifFalse:[
-	"/ all references to a global with my new name in my owning class
-	"/ must now be redirected to myself.
-
-	aClass isPrivate ifTrue:[
-	    newBaseName := aClass nameWithoutNameSpacePrefix.
-	    newBaseNameWithoutPrefix := aClass nameWithoutPrefix.
-
-	    Transcript showCR:'recompiling methods accessing ''' , oldBaseNameWithoutPrefix , ''' in: ''' , aClass owningClass name , ''' ...'.
-	    aClass owningClass recompileMethodsAccessingGlobal:oldBaseNameWithoutPrefix.
-	    aClass owningClass class recompileMethodsAccessingGlobal:oldBaseNameWithoutPrefix.
-
-	    Transcript showCR:'recompiling methods accessing ''' , oldBaseName , ''' in: ''' , aClass owningClass name , ''' ...'.
-	    aClass owningClass recompileMethodsAccessingGlobal:oldBaseName.
-	    aClass owningClass class recompileMethodsAccessingGlobal:oldBaseName.
-
-	    Transcript showCR:'recompiling methods accessing ''' , newBaseNameWithoutPrefix , ''' in: ''' , aClass owningClass name , ''' ...'.
-	    aClass owningClass recompileMethodsAccessingGlobal:newBaseNameWithoutPrefix.
-	    aClass owningClass class recompileMethodsAccessingGlobal:newBaseNameWithoutPrefix.
-
-	    Transcript showCR:'recompiling methods accessing ''' , newBaseName , ''' in: ''' , aClass owningClass name , ''' ...'.
-	    aClass owningClass recompileMethodsAccessingGlobal:newBaseName.
-	    aClass owningClass class recompileMethodsAccessingGlobal:newBaseName.
-	]
+        "/ all references to a global with my new name in my owning class
+        "/ must now be redirected to myself.
+
+        aClass isPrivate ifTrue:[
+            newBaseName := aClass nameWithoutNameSpacePrefix.
+            newBaseNameWithoutPrefix := aClass nameWithoutPrefix.
+
+            Transcript showCR:'recompiling methods accessing ''' , oldBaseNameWithoutPrefix , ''' in: ''' , aClass owningClass name , ''' ...'.
+            aClass owningClass recompileMethodsAccessingGlobal:oldBaseNameWithoutPrefix.
+            aClass owningClass class recompileMethodsAccessingGlobal:oldBaseNameWithoutPrefix.
+
+            Transcript showCR:'recompiling methods accessing ''' , oldBaseName , ''' in: ''' , aClass owningClass name , ''' ...'.
+            aClass owningClass recompileMethodsAccessingGlobal:oldBaseName.
+            aClass owningClass class recompileMethodsAccessingGlobal:oldBaseName.
+
+            Transcript showCR:'recompiling methods accessing ''' , newBaseNameWithoutPrefix , ''' in: ''' , aClass owningClass name , ''' ...'.
+            aClass owningClass recompileMethodsAccessingGlobal:newBaseNameWithoutPrefix.
+            aClass owningClass class recompileMethodsAccessingGlobal:newBaseNameWithoutPrefix.
+
+            Transcript showCR:'recompiling methods accessing ''' , newBaseName , ''' in: ''' , aClass owningClass name , ''' ...'.
+            aClass owningClass recompileMethodsAccessingGlobal:newBaseName.
+            aClass owningClass class recompileMethodsAccessingGlobal:newBaseName.
+        ]
     ].
 
     aClass changed:#definition.
     "/ because of the change of my superclasses name ...
     aClass allSubclassesDo:[:subClass |
-	subClass changed:#definition.
+        subClass changed:#definition.
     ].
     "/ because of the change of my superclasses name ...
     aClass subclassesDo:[:subClass |
-	subClass addChangeRecordForClass:subClass.
+        subClass addChangeRecordForClass:subClass.
     ].
     self changed:#definition.
     Smalltalk changed:#classRename with:(Array with:aClass with:oldName).
@@ -1555,7 +1555,7 @@
     "call the dummy debug function, on which a breakpoint
      can be put in adb, sdb, dbx or gdb.
      WARNING: this method is for debugging only
-	      it will be removed without notice."
+              it will be removed without notice."
 %{
     __PATCHUPCONTEXTS(__context);
     __debugBreakPoint__();
@@ -1600,9 +1600,9 @@
     char *msg;
 
     if (__isString(aMessage))
-	msg = (char *) __stringVal(aMessage);
+        msg = (char *) __stringVal(aMessage);
     else
-	msg = "fatalAbort";
+        msg = "fatalAbort";
 
     __fatal0(__context, msg);
     /* NEVER RETURNS */
@@ -1635,10 +1635,10 @@
 
     allCategories := Set new.
     Smalltalk allClassesDo:[:cls | |category|
-	category := cls category.
-	category notNil ifTrue:[
-	    allCategories add:category.
-	].
+        category := cls category.
+        category notNil ifTrue:[
+            allCategories add:category.
+        ].
     ].
 
     ^ allCategories.
@@ -1657,16 +1657,16 @@
 
     already := IdentitySet new:NumberOfClassesHint*3.
     self allClassesDo:[:eachClass | |cls|
-	cls := eachClass theNonMetaclass.
-	(already includes:cls) ifFalse:[
-	    aBlock value:cls.
-	    already add:cls.
-	].
-	cls := cls class.
-	(already includes:cls) ifFalse:[
-	    aBlock value:cls.
-	    already add:cls.
-	].
+        cls := eachClass theNonMetaclass.
+        (already includes:cls) ifFalse:[
+            aBlock value:cls.
+            already add:cls.
+        ].
+        cls := cls class.
+        (already includes:cls) ifFalse:[
+            aBlock value:cls.
+            already add:cls.
+        ].
     ].
 !
 
@@ -1688,13 +1688,13 @@
 
     collectedClasses := OrderedCollection new.
     self allClassesForWhich:filter do:[:cls |
-	collectedClasses add:cls
+        collectedClasses add:cls
     ].
     ^ collectedClasses
 
     "
      Smalltalk
-	allClassesForWhich:[:cls | cls name startsWith:'Po']
+        allClassesForWhich:[:cls | cls name startsWith:'Po']
     "
 
     "Created: / 10-08-2006 / 12:11:31 / cg"
@@ -1704,13 +1704,13 @@
     "evaluate the argument, aBlock for all classes in the system, for which filter evaluates to true."
 
     self allClassesDo:[:cls |
-	(filter value:cls) ifTrue:[ aBlock value:cls ].
+        (filter value:cls) ifTrue:[ aBlock value:cls ].
     ].
 
     "
      Smalltalk
-	allClassesForWhich:[:cls | cls name startsWith:'Po']
-	do:[:aClass | Transcript showCR:aClass name]
+        allClassesForWhich:[:cls | cls name startsWith:'Po']
+        do:[:aClass | Transcript showCR:aClass name]
     "
 !
 
@@ -1732,7 +1732,7 @@
      The order of the classes is not defined."
 
     aCategory notNil ifTrue:[
-	self allClassesForWhich:[:cls | cls category = aCategory] do:aBlock
+        self allClassesForWhich:[:cls | cls category = aCategory] do:aBlock
     ]
 
     "
@@ -1749,12 +1749,12 @@
     |classes|
 
     aCategory notNil ifTrue:[
-	classes := OrderedCollection new.
-	self allClassesInCategory:aCategory do:[:aClass |
-	    classes add:aClass
-	].
-	classes topologicalSort:[:a :b | b isSubclassOf:a].
-	classes do:aBlock
+        classes := OrderedCollection new.
+        self allClassesInCategory:aCategory do:[:aClass |
+            classes add:aClass
+        ].
+        classes topologicalSort:[:a :b | b isSubclassOf:a].
+        classes do:aBlock
     ]
 
     "
@@ -1772,16 +1772,16 @@
 
     already := IdentitySet new:NumberOfClassesHint.
     self allClassesDo:[:eachClass |
-	(already includes:eachClass) ifFalse:[
-	    eachClass allSuperclasses reverseDo:[:eachSuperClass |
-		(already includes:eachSuperClass) ifFalse:[
-		    already add:eachSuperClass.
-		    aBlock value:eachSuperClass.
-		].
-	    ].
-	    already add:eachClass.
-	    aBlock value:eachClass.
-	]
+        (already includes:eachClass) ifFalse:[
+            eachClass allSuperclasses reverseDo:[:eachSuperClass |
+                (already includes:eachSuperClass) ifFalse:[
+                    already add:eachSuperClass.
+                    aBlock value:eachSuperClass.
+                ].
+            ].
+            already add:eachClass.
+            aBlock value:eachClass.
+        ]
     ].
 
     "
@@ -1830,7 +1830,7 @@
 
     allCategories := Set new.
     Smalltalk allClassesDo:[:cls |
-	allCategories addAll:cls categories.
+        allCategories addAll:cls categories.
     ].
 
     ^ allCategories.
@@ -1842,9 +1842,9 @@
 
 allMethodsDo:aBlock
     Smalltalk allClassesDo:[:eachClass |
-	eachClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
-	    aBlock value:mthd
-	]
+        eachClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
+            aBlock value:mthd
+        ]
     ].
 !
 
@@ -1853,7 +1853,7 @@
      in the Smalltalk dictionary"
 
     self keysDo:[:aKey |
-	aBlock value:(aKey -> (self at:aKey))
+        aBlock value:(aKey -> (self at:aKey))
     ]
 
     "Smalltalk associationsDo:[:assoc | assoc printCR]"
@@ -1881,7 +1881,7 @@
     RETURN (self);
 %}.
     self keysDo:[:aKey |
-	aBlock value:(self at:aKey)
+        aBlock value:(self at:aKey)
     ]
 !
 
@@ -1889,7 +1889,7 @@
     "evaluate the two-arg block, aBlock for all keys and values"
 
     self keysDo:[:aKey |
-	aBlock value:aKey value:(self at:aKey)
+        aBlock value:aKey value:(self at:aKey)
     ]
 !
 
@@ -1898,16 +1898,16 @@
 
     collected := OrderedCollection new.
     self keysAndValuesDo:[:eachKey :eachValue |
-	(selectBlockWith2Args value:eachKey value:eachValue) ifTrue:[
-	    collected add:(collectBlockWith2Args value:eachKey value:eachValue)
-	].
+        (selectBlockWith2Args value:eachKey value:eachValue) ifTrue:[
+            collected add:(collectBlockWith2Args value:eachKey value:eachValue)
+        ].
     ].
     ^ collected
 
     "
      Smalltalk
-	keysAndValuesSelect:[:nm :val | (nm startsWith:'Ab') and:[val notNil]]
-	thenCollect:[:nm :val | nm]
+        keysAndValuesSelect:[:nm :val | (nm startsWith:'Ab') and:[val notNil]]
+        thenCollect:[:nm :val | nm]
     "
 !
 
@@ -1920,7 +1920,7 @@
     RETURN (self);
 %}.
     self basicKeys do:[:aKey |
-	aBlock value:aKey
+        aBlock value:aKey
     ]
 ! !
 
@@ -1980,9 +1980,9 @@
      cleanup in stand alone applications."
 
     ExitBlocks isNil ifTrue:[
-	ExitBlocks := OrderedCollection with:aBlock
+        ExitBlocks := OrderedCollection with:aBlock
     ] ifFalse:[
-	ExitBlocks add:aBlock
+        ExitBlocks add:aBlock
     ]
 !
 
@@ -1994,9 +1994,9 @@
      These blocks will be executed after an image restart."
 
     ImageStartBlocks isNil ifTrue:[
-	ImageStartBlocks := OrderedCollection with:aBlock
+        ImageStartBlocks := OrderedCollection with:aBlock
     ] ifFalse:[
-	ImageStartBlocks add:aBlock
+        ImageStartBlocks add:aBlock
     ]
 
     "Created: 9.9.1996 / 16:48:20 / stefan"
@@ -2012,9 +2012,9 @@
      Initial processes are usually started here (see smalltalk.rc / private.rc)."
 
     StartBlocks isNil ifTrue:[
-	StartBlocks := OrderedCollection with:aBlock
+        StartBlocks := OrderedCollection with:aBlock
     ] ifFalse:[
-	StartBlocks add:aBlock
+        StartBlocks add:aBlock
     ]
 
     "Created: 9.9.1996 / 16:46:53 / stefan"
@@ -2041,9 +2041,9 @@
     ObjectMemory changed:#aboutToExit.  "/ for ST/X backward compatibility
     ObjectMemory changed:#aboutToQuit.  "/ for ST-80 compatibility
     ExitBlocks notNil ifTrue:[
-	ExitBlocks do:[:aBlock |
-	    aBlock value
-	]
+        ExitBlocks do:[:aBlock |
+            aBlock value
+        ]
     ].
     OperatingSystem exit:statusInteger
     "not reached"
@@ -2070,27 +2070,27 @@
     "/ If that happens, we restart the set-building here
     "/
     [(classes := CachedClasses) isNil] whileTrue:[
-	CachedClasses := classes := IdentitySet new:NumberOfClassesHint.
-	self keysAndValuesDo:[:eachName :eachGlobal |
-	    (eachGlobal notNil and:[eachGlobal isBehavior]) ifTrue:[
-		"/ sigh - would like to skip over aliases
-		"/ but this cannot be done simply by comparing
-		"/ the classes name against the store-key
-		"/ i.e. cannot do:
-		"/      anObject name == sym ifTrue:[
-		"/          classes add:anObject
-		"/      ]
-		"/ because that would lead to ignore all java
-		"/ classes, which are stored under a different
-		"/ key.
-
-		(eachGlobal name == eachName
-		 or:[eachGlobal isJavaClass]) ifTrue:[
-		    classes add:eachGlobal
-		].
-	    ]
-	].
-	NumberOfClassesHint := classes size.
+        CachedClasses := classes := IdentitySet new:NumberOfClassesHint.
+        self keysAndValuesDo:[:eachName :eachGlobal |
+            (eachGlobal notNil and:[eachGlobal isBehavior]) ifTrue:[
+                "/ sigh - would like to skip over aliases
+                "/ but this cannot be done simply by comparing
+                "/ the classes name against the store-key
+                "/ i.e. cannot do:
+                "/      anObject name == sym ifTrue:[
+                "/          classes add:anObject
+                "/      ]
+                "/ because that would lead to ignore all java
+                "/ classes, which are stored under a different
+                "/ key.
+
+                (eachGlobal name == eachName
+                 or:[eachGlobal isJavaClass]) ifTrue:[
+                    classes add:eachGlobal
+                ].
+            ]
+        ].
+        NumberOfClassesHint := classes size.
     ].
     ^ classes
 
@@ -2113,8 +2113,8 @@
 
     classes := IdentitySet new:NumberOfClassesHint*2.
     self allClassesDo:[:eachClass |
-	classes add:(eachClass theNonMetaclass).
-	classes add:(eachClass theMetaclass).
+        classes add:(eachClass theNonMetaclass).
+        classes add:(eachClass theMetaclass).
     ].
     ^ classes
 !
@@ -2125,13 +2125,13 @@
      (i.e. anonymous ones have to be aquired by Behavior allSubInstances)"
 
     ^ self allClasses select:[:aClass |
-	    |owner|
-
-	    (aClass isRealNameSpace not)
-	    and:[
-		owner := aClass topOwningClass.
-		(owner ? aClass) nameSpace == Smalltalk
-	    ]
+            |owner|
+
+            (aClass isRealNameSpace not)
+            and:[
+                owner := aClass topOwningClass.
+                (owner ? aClass) nameSpace == Smalltalk
+            ]
       ]
 
     "
@@ -2146,7 +2146,7 @@
 
     methods := OrderedCollection new.
     self allClassesDo:[:eachClass |
-        methods addAll:(eachClass extensionsFrom:aProjectID). 
+        methods addAll:(eachClass extensionsFrom:aProjectID).
     ].
     ^ methods
 !
@@ -2156,12 +2156,12 @@
 
     implementors := OrderedCollection new.
     self allClassesDo:[:cls |
-	(cls includesSelector:aSelector) ifTrue:[
-	    implementors add:cls.
-	].
-	(cls class includesSelector:aSelector) ifTrue:[
-	    implementors add:cls class.
-	].
+        (cls includesSelector:aSelector) ifTrue:[
+            implementors add:cls.
+        ].
+        (cls class includesSelector:aSelector) ifTrue:[
+            implementors add:cls class.
+        ].
     ].
     ^ implementors
 
@@ -2176,24 +2176,24 @@
 
     allProjects := Set new.
     self allClassesDo:[:eachClass |
-	|cls pkg|
-
-	cls := eachClass theNonMetaclass.
-
-	pkg := cls package.
-	pkg "withoutSeparators" size > 0 ifTrue:[
-	    allProjects add:pkg.
-	] ifFalse:[
-	    "/ for now, nameSpaces are not in any package;
-	    "/ this might change. Then, 0-sized packages are
-	    "/ illegal, and the following should be enabled.
-	    "/ self halt
-	].
-	cls isJavaClass ifFalse:[
-	    cls instAndClassSelectorsAndMethodsDo:[:sel :mthd |
-		allProjects add:mthd package asSymbol.
-	    ].
-	].
+        |cls pkg|
+
+        cls := eachClass theNonMetaclass.
+
+        pkg := cls package.
+        pkg "withoutSeparators" size > 0 ifTrue:[
+            allProjects add:pkg.
+        ] ifFalse:[
+            "/ for now, nameSpaces are not in any package;
+            "/ this might change. Then, 0-sized packages are
+            "/ illegal, and the following should be enabled.
+            "/ self halt
+        ].
+        cls isJavaClass ifFalse:[
+            cls instAndClassSelectorsAndMethodsDo:[:sel :mthd |
+                allProjects add:mthd package asSymbol.
+            ].
+        ].
     ].
     allProjects := allProjects asOrderedCollection sort.
     ^ allProjects
@@ -2219,7 +2219,7 @@
 classCategoryCompletion:aPartialCategory
     "given a partial class category name, return an array consisting of
      2 entries: 1st: the best (longest) match
-		2nd: collection consisting of matching categories"
+                2nd: collection consisting of matching categories"
 
     ^ DoWhatIMeanSupport classCategoryCompletion:aPartialCategory inEnvironment:self
 
@@ -2245,45 +2245,45 @@
      But be careful, to not invent new symbols ..."
     sym := aString asSymbolIfInterned.
     sym notNil ifTrue:[
-	cls := self at:sym ifAbsent:nil.
-	cls isBehavior ifTrue:[^ cls].
+        cls := self at:sym ifAbsent:nil.
+        cls isBehavior ifTrue:[^ cls].
     ].
 
     (aString endsWith:' class') ifTrue:[
-	nonMeta := self classNamed:(aString copyWithoutLast:6).
-	nonMeta notNil ifTrue:[
-	    ^ nonMeta theMetaclass
-	].
+        nonMeta := self classNamed:(aString copyWithoutLast:6).
+        nonMeta notNil ifTrue:[
+            ^ nonMeta theMetaclass
+        ].
     ].
 
     "no success yet. Try if this is a private classes of an autoloaded class"
     cls isNil ifTrue:[
-	idx := aString indexOfSubCollection:'::'.
-	idx ~~ 0 ifTrue:[
-	    prefix := aString copyTo:idx-1.
-	    nsNameSymbol := prefix asSymbolIfInterned.
-	    nsNameSymbol notNil ifTrue:[
-		rest := aString copyFrom:idx+2.
-		namespace := self at:prefix asSymbolIfInterned ifAbsent:nil.
-		"namespace may be the owner of a private class.
-		 NameSpaces and Behaviors have the same protocol"
-		[namespace isBehavior] whileTrue:[
-		    idx := rest indexOfSubCollection:'::'.
-		    idx ~~ 0 ifTrue:[
-			prefix := rest copyTo:idx-1.
-			rest := rest copyFrom:idx+2.
-			"this does an implicit autoload if required"
-			namespace := namespace privateClassesAt:prefix.
-		    ] ifFalse:[
-			namespace isLoaded ifTrue:[
-			    cls := namespace privateClassesAt:rest.
-			    cls isBehavior ifTrue:[^ cls].
-			].
-			namespace := nil.   "force exit of loop"
-		    ].
-		].
-	    ].
-	].
+        idx := aString indexOfSubCollection:'::'.
+        idx ~~ 0 ifTrue:[
+            prefix := aString copyTo:idx-1.
+            nsNameSymbol := prefix asSymbolIfInterned.
+            nsNameSymbol notNil ifTrue:[
+                rest := aString copyFrom:idx+2.
+                namespace := self at:prefix asSymbolIfInterned ifAbsent:nil.
+                "namespace may be the owner of a private class.
+                 NameSpaces and Behaviors have the same protocol"
+                [namespace isBehavior] whileTrue:[
+                    idx := rest indexOfSubCollection:'::'.
+                    idx ~~ 0 ifTrue:[
+                        prefix := rest copyTo:idx-1.
+                        rest := rest copyFrom:idx+2.
+                        "this does an implicit autoload if required"
+                        namespace := namespace privateClassesAt:prefix.
+                    ] ifFalse:[
+                        namespace isLoaded ifTrue:[
+                            cls := namespace privateClassesAt:rest.
+                            cls isBehavior ifTrue:[^ cls].
+                        ].
+                        namespace := nil.   "force exit of loop"
+                    ].
+                ].
+            ].
+        ].
     ].
 
     ^ nil
@@ -2319,7 +2319,7 @@
 classnameCompletion:aPartialClassName
     "given a partial classname, return an array consisting of
      2 entries: 1st: the best (longest) match
-		2nd: collection consisting of matching names"
+                2nd: collection consisting of matching names"
 
     ^ DoWhatIMeanSupport classnameCompletion:aPartialClassName inEnvironment:self
 !
@@ -2327,7 +2327,7 @@
 classnameCompletion:aPartialClassName inEnvironment:anEnvironment
     "given a partial classname, return an array consisting of
      2 entries: 1st: the best (longest) match
-		2nd: collection consisting of matching names"
+                2nd: collection consisting of matching names"
 
     ^ DoWhatIMeanSupport classnameCompletion:aPartialClassName inEnvironment:anEnvironment
 
@@ -2358,7 +2358,7 @@
 globalNameCompletion:aPartialGlobalName
     "given a partial globalName, return an array consisting of
      2 entries: 1st: the best (longest) match
-		2nd: collection consisting of matching names"
+                2nd: collection consisting of matching names"
 
     ^ DoWhatIMeanSupport globalNameCompletion:aPartialGlobalName inEnvironment:self
 
@@ -2376,7 +2376,7 @@
 globalnameCompletion:aPartialGlobalName
     "given a partial globalName, return an array consisting of
      2 entries: 1st: the best (longest) match
-		2nd: collection consisting of matching names"
+                2nd: collection consisting of matching names"
 
     <resource:#obsolete>
     self obsoleteMethodWarning:'use #globalNameCompletion:'.
@@ -2469,11 +2469,11 @@
 
     i := aKey lastIndexOf:$:.
     i ~~ 0 ifTrue:[
-	i > 1 ifTrue:[
-	    (aKey at:(i-1)) == $: ifFalse:[
-		^ true.
-	    ].
-	].
+        i > 1 ifTrue:[
+            (aKey at:(i-1)) == $: ifFalse:[
+                ^ true.
+            ].
+        ].
     ].
     ^ false.
 
@@ -2495,15 +2495,15 @@
      But be careful, to not invent new symbols ..."
     sym := aString asSymbolIfInterned.
     sym notNil ifTrue:[
-	cls := self at:sym ifAbsent:nil.
-	cls isBehavior ifTrue:[^ cls].
+        cls := self at:sym ifAbsent:nil.
+        cls isBehavior ifTrue:[^ cls].
     ].
 
     (aString endsWith:' class') ifTrue:[
-	nonMeta := self loadedClassNamed:(aString copyWithoutLast:6).
-	nonMeta notNil ifTrue:[
-	    ^ nonMeta theMetaclass
-	].
+        nonMeta := self loadedClassNamed:(aString copyWithoutLast:6).
+        nonMeta notNil ifTrue:[
+            ^ nonMeta theMetaclass
+        ].
     ].
     ^ nil
 
@@ -2524,7 +2524,7 @@
 methodProtocolCompletion:aPartialProtocolName
     "given a partial method protocol name, return an array consisting of
      2 entries: 1st: the best (longest) match
-		2nd: collection consisting of matching protocols"
+                2nd: collection consisting of matching protocols"
 
     ^ DoWhatIMeanSupport methodProtocolCompletion:aPartialProtocolName inEnvironment:self
 
@@ -2553,10 +2553,10 @@
     "redefined, since the references are only kept in the VM's symbol table"
 
     self keysAndValuesDo:[:key :val |
-	aCollection do:[:anObject |
-	    (key == anObject) ifTrue:[^ true].
-	    (val == anObject ) ifTrue:[^ true].
-	]
+        aCollection do:[:anObject |
+            (key == anObject) ifTrue:[^ true].
+            (val == anObject ) ifTrue:[^ true].
+        ]
     ].
     ^ super referencesAny:aCollection
 
@@ -2567,8 +2567,8 @@
     "redefined, since the references are only kept in the VM's symbol table"
 
     self keysAndValuesDo:[:key :val |
-	(key isKindOf:aClass) ifTrue:[^ true].
-	(val isKindOf:aClass) ifTrue:[^ true].
+        (key isKindOf:aClass) ifTrue:[^ true].
+        (val isKindOf:aClass) ifTrue:[^ true].
     ].
     ^ super referencesDerivedInstanceOf:aClass
 !
@@ -2577,8 +2577,8 @@
     "redefined, since the references are only kept in the VM's symbol table"
 
     self keysAndValuesDo:[:key :val |
-	(key isMemberOf:aClass) ifTrue:[^ true].
-	(val isMemberOf:aClass) ifTrue:[^ true].
+        (key isMemberOf:aClass) ifTrue:[^ true].
+        (val isMemberOf:aClass) ifTrue:[^ true].
     ].
     ^ super referencesInstanceOf:aClass
 !
@@ -2587,8 +2587,8 @@
     "redefined, since the references are only kept in the VM's symbol table"
 
     self keysAndValuesDo:[:key :val |
-	(key == anObject) ifTrue:[^ true].
-	(val == anObject ) ifTrue:[^ true].
+        (key == anObject) ifTrue:[^ true].
+        (val == anObject ) ifTrue:[^ true].
     ].
     ^ super referencesObject:anObject
 
@@ -2610,8 +2610,8 @@
     aName := nameIn.
 
     (aName startsWith:'Smalltalk::') ifTrue:[
-	aName := aName copyFrom:12.
-	^ self at:(aName asSymbol) ifAbsent:nil.
+        aName := aName copyFrom:12.
+        ^ self at:(aName asSymbol) ifAbsent:nil.
     ].
 
     sym := aName asSymbol.
@@ -2621,12 +2621,12 @@
 
     ns := aClass nameSpace.
     (ns notNil and:[ns ~~ Smalltalk]) ifTrue:[
-	ns isNameSpace ifTrue:[
-	    cls := ns at:sym ifAbsent:nil.
-	] ifFalse:[
-	    cls := ns privateClassesAt:sym
-	].
-	cls notNil ifTrue:[^ cls].
+        ns isNameSpace ifTrue:[
+            cls := ns at:sym ifAbsent:nil.
+        ] ifFalse:[
+            cls := ns privateClassesAt:sym
+        ].
+        cls notNil ifTrue:[^ cls].
     ].
     ^ self at:sym ifAbsent:nil.
 
@@ -2636,7 +2636,7 @@
 selectorCompletion:aPartialSymbolName
     "given a partial selector, return an array consisting of
      2 entries: 1st: the longest match
-		2nd: collection consisting of matching implemented selectors"
+                2nd: collection consisting of matching implemented selectors"
 
     ^ DoWhatIMeanSupport selectorCompletion:aPartialSymbolName inEnvironment:self
 !
@@ -2644,7 +2644,7 @@
 selectorCompletion:aPartialSymbolName inEnvironment:anEnvironment
     "given a partial selector, return an array consisting of
      2 entries: 1st: the longest match
-		2nd: collection consisting of matching implemented selectors"
+                2nd: collection consisting of matching implemented selectors"
 
     ^ DoWhatIMeanSupport selectorCompletion:aPartialSymbolName inEnvironment:anEnvironment
 
@@ -2744,10 +2744,10 @@
 
     idx := CommandLineArguments indexOf:'--browserParameters:'.
     idx ~~ 0 ifTrue:[
-	params := Dictionary new.
-	(CommandLineArguments copyFrom:idx+1) pairWiseDo:[:key :value |
-	    params at:key put:value.
-	].
+        params := Dictionary new.
+        (CommandLineArguments copyFrom:idx+1) pairWiseDo:[:key :value |
+            params at:key put:value.
+        ].
     ].
 
     'browserWindow is: ' errorPrint. windowID errorPrintCR.
@@ -2755,9 +2755,9 @@
     'Display is: ' errorPrint. Display errorPrintCR.
 
     process := [
-	PluginSupport
-	    startInBrowserWithWindowID:windowID
-	    parameters:params.
+        PluginSupport
+            startInBrowserWithWindowID:windowID
+            parameters:params.
     ] newProcess.
     process priority:(Processor userSchedulingPriority).
     process name:'browser start handler'.
@@ -2775,6 +2775,16 @@
     CallbackSignal raiseRequest.
 !
 
+hideSplashWindow
+%{
+#ifdef WIN32
+    extern void __win32_hideSplashScreen();
+
+    __win32_hideSplashScreen();
+#endif
+%}
+!
+
 mainStartup:graphicalMode
     "common start/restart action, if there is a Display, initialize it
      and start dispatching; otherwise go into a read-eval-print loop."
@@ -2785,42 +2795,42 @@
     thisIsARestart := imageName notNil.
 
     graphicalMode ifTrue:[
-	Display isNil ifTrue:[
-	    (StartupClass notNil
-	    and:[ (StartupClass perform:#isHeadless ifNotUnderstood:false) ]) ifFalse:[
-		self openDisplay.
-	    ].
-	].
+        Display isNil ifTrue:[
+            (StartupClass notNil
+            and:[ (StartupClass perform:#isHeadless ifNotUnderstood:false) ]) ifFalse:[
+                self openDisplay.
+            ].
+        ].
     ].
 
     StandAlone ifFalse:[
-	"
-	 enable the graphical debugger/inspector
-	 (they could have been (re)defined as autoloaded in the patches file)
-	"
-	self initStandardTools.
+        "
+         enable the graphical debugger/inspector
+         (they could have been (re)defined as autoloaded in the patches file)
+        "
+        self initStandardTools.
     ].
 
     "
      if there is a display, start its event dispatcher
     "
     Display notNil ifTrue:[
-	Display deviceIOTimeoutErrorSignal handlerBlock:[:ex |
-	    SaveEmergencyImage == true ifTrue:[
-		'Display [warning]: broken display connection - emergency save in ''crash.img''.' infoPrintCR.
-		ObjectMemory primSnapShotOn:'crash.img'.
-	    ].
-	    'Display [warning]: broken display connection - exit.' infoPrintCR.
-	    self exit.
-	].
-	Display startDispatch.
+        Display deviceIOTimeoutErrorSignal handlerBlock:[:ex |
+            SaveEmergencyImage == true ifTrue:[
+                'Display [warning]: broken display connection - emergency save in ''crash.img''.' infoPrintCR.
+                ObjectMemory primSnapShotOn:'crash.img'.
+            ].
+            'Display [warning]: broken display connection - exit.' infoPrintCR.
+            self exit.
+        ].
+        Display startDispatch.
     ].
 
     idx := CommandLineArguments indexOf:'--browserWindow:'.
     IsPlugin := (idx ~~ 0).
     IsPlugin ifTrue:[
-	self browserWindowStartup.
-	"/ not reached
+        self browserWindowStartup.
+        "/ not reached
     ].
 
     Initializing := false.
@@ -2831,49 +2841,49 @@
     "/ Therefore, it is now done by an extra user-process.
 
     process := [
-	StartBlocks notNil ifTrue:[
-	    StartBlocks do:[:aBlock|
-		aBlock value
-	    ].
-	    StartBlocks := nil.
-	].
-	ImageStartBlocks notNil ifTrue:[
-	    ImageStartBlocks do:[:aBlock|
-		aBlock value
-	    ].
-	].
-	StandAlone ifFalse:[
-	    (SilentLoading == true) ifFalse:[   "i.e. undefined counts as false"
-		thisIsARestart ifTrue:[
-		    Transcript cr.
-		    Transcript showCR:('Smalltalk restarted from:'
-					, imageName
-					, ' (saved '
-					, ObjectMemory imageSaveTime printString
-					, ')' ).
-		] ifFalse:[
-		    Transcript showCR:(self hello).
-		    Transcript showCR:(self copyrightString).
-		].
-		Transcript cr.
-	    ].
-
-	    DemoMode==true ifTrue:[
-		Transcript showCR:'*** Restricted use:                              ***'.
-		Transcript showCR:'*** This program may be used for education only. ***'.
-		Transcript showCR:'*** Please read the files COPYRIGHT and LICENSE  ***'.
-		Transcript showCR:'*** for more details.                            ***'.
-		Transcript cr.
-	    ].
-	].
-
-	thisIsARestart ifTrue:[
-	    "/
-	    "/ the final late notification - users can now assume that
-	    "/ views, forms etc. have been recreated.
-
-	    ObjectMemory changed:#returnFromSnapshot.
-	]
+        StartBlocks notNil ifTrue:[
+            StartBlocks do:[:aBlock|
+                aBlock value
+            ].
+            StartBlocks := nil.
+        ].
+        ImageStartBlocks notNil ifTrue:[
+            ImageStartBlocks do:[:aBlock|
+                aBlock value
+            ].
+        ].
+        StandAlone ifFalse:[
+            (SilentLoading == true) ifFalse:[   "i.e. undefined counts as false"
+                thisIsARestart ifTrue:[
+                    Transcript cr.
+                    Transcript showCR:('Smalltalk restarted from:'
+                                        , imageName
+                                        , ' (saved '
+                                        , ObjectMemory imageSaveTime printString
+                                        , ')' ).
+                ] ifFalse:[
+                    Transcript showCR:(self hello).
+                    Transcript showCR:(self copyrightString).
+                ].
+                Transcript cr.
+            ].
+
+            DemoMode==true ifTrue:[
+                Transcript showCR:'*** Restricted use:                              ***'.
+                Transcript showCR:'*** This program may be used for education only. ***'.
+                Transcript showCR:'*** Please read the files COPYRIGHT and LICENSE  ***'.
+                Transcript showCR:'*** for more details.                            ***'.
+                Transcript cr.
+            ].
+        ].
+
+        thisIsARestart ifTrue:[
+            "/
+            "/ the final late notification - users can now assume that
+            "/ views, forms etc. have been recreated.
+
+            ObjectMemory changed:#returnFromSnapshot.
+        ]
 
     ] newProcess.
 
@@ -2890,61 +2900,63 @@
     "/ message.
 
     (StartupClass notNil and:[StartupSelector notNil]) ifTrue:[
-	"
-	 allow more customization by reading an image specific rc-file
-	"
-	thisIsARestart ifTrue:[
-	    (imageName asFilename hasSuffix:'img') ifTrue:[
-		imageName := imageName copyWithoutLast:4
-	    ].
-	    self fileIn:(imageName , '.rc')
-	].
+        "
+         allow more customization by reading an image specific rc-file
+        "
+        thisIsARestart ifTrue:[
+            (imageName asFilename hasSuffix:'img') ifTrue:[
+                imageName := imageName copyWithoutLast:4
+            ].
+            self fileIn:(imageName , '.rc')
+        ].
 
 "/        Display notNil ifTrue:[
 "/            Display exitOnLastClose:true.
 "/        ].
 "/        Processor exitWhenNoMoreUserProcesses:true.
 
-	process := [
-	    StandAlone ifTrue:[
-		AbortOperationRequest handle:[:ex |
-		    'Smalltalk [info]: aborted - exit.' infoPrintCR.
-		    OperatingSystem exit:1
-		] do:[
-		    StartupClass perform:StartupSelector withArguments:StartupArguments.
-		]
-	    ] ifFalse:[
-		StartupClass perform:StartupSelector withArguments:StartupArguments.
-	    ].
-
-	    "/
-	    "/ non-GUI apps exit after the startup;
-	    "/ assume that GUI apps have created & opened some view ...
-	    "/
-	    Display isNil ifTrue:[
-		'Smalltalk [info]: no Display - exit.' infoPrintCR.
-		Smalltalk exit.
-	    ].
-	    "/
-	    "/ GUI apps exit after the last user process has finished
-	    "/
-	    Display exitOnLastClose:true.
-	    Processor exitWhenNoMoreUserProcesses:true.
-	] newProcess.
-	process priority:(Processor userSchedulingPriority).
-	process name:'main'.
-	process beGroupLeader.
-	process resume.
-	process := true.    "do not refer to process"
+        process := [
+            StandAlone ifTrue:[
+                AbortOperationRequest handle:[:ex |
+                    'Smalltalk [info]: aborted - exit.' infoPrintCR.
+                    OperatingSystem exit:1
+                ] do:[
+                    StartupClass perform:StartupSelector withArguments:StartupArguments.
+                ]
+            ] ifFalse:[
+                StartupClass perform:StartupSelector withArguments:StartupArguments.
+            ].
+
+            "/
+            "/ non-GUI apps exit after the startup;
+            "/ assume that GUI apps have created & opened some view ...
+            "/
+            Display isNil ifTrue:[
+                'Smalltalk [info]: no Display - exit.' infoPrintCR.
+                Smalltalk exit.
+            ].
+            "/
+            "/ GUI apps exit after the last user process has finished
+            "/
+            Display exitOnLastClose:true.
+            Processor exitWhenNoMoreUserProcesses:true.
+        ] newProcess.
+        process priority:(Processor userSchedulingPriority).
+        process name:'main'.
+        process beGroupLeader.
+        process resume.
+        process := true.    "do not refer to process"
     ].
 
     StandAlone ifTrue:[
-	Display notNil ifTrue:[
-	    FlyByHelp notNil ifTrue:[
-		FlyByHelp start
-	    ].
-	].
-    ].
+        Display notNil ifTrue:[
+            FlyByHelp notNil ifTrue:[
+                FlyByHelp start
+            ].
+        ].
+    ].
+
+    self hideSplashWindow.   "/ if there is one, its now time to hide it
 
     "
      if view-classes exist, start dispatching;
@@ -2953,13 +2965,13 @@
     ((Display notNil and:[graphicalMode])
      or:[process notNil
      or:[HeadlessOperation]]) ifTrue:[
-	Processor dispatchLoop.
-	"done - the last process finished"
-	'Smalltalk [info]: last process finished - exit.' infoPrintCR.
+        Processor dispatchLoop.
+        "done - the last process finished"
+        'Smalltalk [info]: last process finished - exit.' infoPrintCR.
     ] ifFalse:[
-	StandAlone ifFalse:[
-	    self readEvalPrint
-	]
+        StandAlone ifFalse:[
+            self readEvalPrint
+        ]
     ].
 
     self exit
@@ -2976,27 +2988,27 @@
     'Smalltalk [info]: opening display...' infoPrintCR.
 
     Display isNil ifTrue:[
-	Screen notNil ifTrue:[
-	    [
-		Screen openDefaultDisplay:nil.
-	    ] on:Screen deviceOpenErrorSignal do:[:ex|
-		('Smalltalk [error]: No Display connection to: ', ex parameter printString) errorPrintCR.
-		'Smalltalk [info]: Either set the DISPLAY environment variable,' infoPrintCR.
-		'Smalltalk [info]: or start smalltalk with a -display argument.' infoPrintCR.
-		HeadlessOperation == true ifFalse:[
-		    OperatingSystem exit:1.
-		].
-	    ].
-
-	    Display notNil ifTrue:[
-		(self secureFileIn:'display.rc') ifFalse:[
-		    "/ 'Smalltalk [warning]: no display.rc found; screen setting might be wrong.' errorPrintCR.
-		    (self secureFileIn:'keyboard.rc') ifFalse:[
-			"/ 'Smalltalk [warning]: no keyboard.rc found; shortkey setting might be wrong.' errorPrintCR.
-		    ]
-		]
-	    ].
-	]
+        Screen notNil ifTrue:[
+            [
+                Screen openDefaultDisplay:nil.
+            ] on:Screen deviceOpenErrorSignal do:[:ex|
+                ('Smalltalk [error]: No Display connection to: ', ex parameter printString) errorPrintCR.
+                'Smalltalk [info]: Either set the DISPLAY environment variable,' infoPrintCR.
+                'Smalltalk [info]: or start smalltalk with a -display argument.' infoPrintCR.
+                HeadlessOperation == true ifFalse:[
+                    OperatingSystem exit:1.
+                ].
+            ].
+
+            Display notNil ifTrue:[
+                (self secureFileIn:'display.rc') ifFalse:[
+                    "/ 'Smalltalk [warning]: no display.rc found; screen setting might be wrong.' errorPrintCR.
+                    (self secureFileIn:'keyboard.rc') ifFalse:[
+                        "/ 'Smalltalk [warning]: no keyboard.rc found; shortkey setting might be wrong.' errorPrintCR.
+                    ]
+                ]
+            ].
+        ]
     ]
 
     "Created: / 06-12-2006 / 15:38:17 / cg"
@@ -3018,15 +3030,15 @@
      #earlySystemInstallation is sent for ST80 compatibility
 
      #earlyRestart is send first, nothing has been setup yet.
-		   (should be used to flush all device dependent entries)
+                   (should be used to flush all device dependent entries)
 
      #restarted is send right after.
-		   (should be used to recreate external resources (fds, bitmaps etc)
+                   (should be used to recreate external resources (fds, bitmaps etc)
 
      #returnFromSnapshot is sent last
-		   (should be used to restart processes, reOpen Streams which cannot
-		    be automatically be reopened (i.e. Sockets, Pipes) and so on.
-		   (Notice that positionable fileStreams are already reopened and repositioned)
+                   (should be used to restart processes, reOpen Streams which cannot
+                    be automatically be reopened (i.e. Sockets, Pipes) and so on.
+                   (Notice that positionable fileStreams are already reopened and repositioned)
      "
 
     |deb insp transcript idx|
@@ -3050,12 +3062,12 @@
 
     idx := CommandLineArguments indexOf:'-q'.
     idx == 0 ifTrue:[
-	idx := CommandLineArguments indexOf:'--silent'.
+        idx := CommandLineArguments indexOf:'--silent'.
     ].
     idx ~~ 0 ifTrue:[
-	Object infoPrinting:false.
-	ObjectMemory infoPrinting:false.
-	CommandLineArguments removeAtIndex:idx.
+        Object infoPrinting:false.
+        ObjectMemory infoPrinting:false.
+        CommandLineArguments removeAtIndex:idx.
     ].
 
     "/
@@ -3090,7 +3102,7 @@
     insp := Inspector.
     deb := Debugger.
     deb notNil ifTrue:[
-	deb reinitialize
+        deb reinitialize
     ].
     Inspector := MiniInspector.
     Debugger := MiniDebugger.
@@ -3103,7 +3115,7 @@
     "/ ObjectFileLoader; therefore, must reload before doing any notifications.
 
     ObjectFileLoader notNil ifTrue:[
-	ObjectFileLoader reloadAllRememberedObjectFiles.
+        ObjectFileLoader reloadAllRememberedObjectFiles.
     ].
 
     "/
@@ -3112,9 +3124,9 @@
     "/ a display during early startup.
 
     Screen notNil ifTrue:[
-	Screen allScreens do:[:aDisplay |
-	    aDisplay invalidateConnection
-	].
+        Screen allScreens do:[:aDisplay |
+            aDisplay invalidateConnection
+        ].
     ].
 
     ObjectMemory changed:#earlySystemInstallation.
@@ -3130,7 +3142,7 @@
     "/ (mostly view/GC/color & font stuff)
 
     ObjectMemory
-	changed:#earlyRestart; changed:#restarted.
+        changed:#earlyRestart; changed:#restarted.
 
     "/
     "/ start catching SIGINT and SIGQUIT
@@ -3143,75 +3155,75 @@
 
     idx := CommandLineArguments indexOf:'--faststart'.
     idx == 0 ifTrue:[
-	idx := CommandLineArguments indexOf:'--fastStart'.
+        idx := CommandLineArguments indexOf:'--fastStart'.
     ].
     idx ~~ 0 ifTrue:[
-	CommandLineArguments removeAtIndex:idx.
+        CommandLineArguments removeAtIndex:idx.
     ] ifFalse:[
-	CallbackSignal := QuerySignal new.
-	[
-	    Class withoutUpdatingChangesDo:[
-		(self fileIn:(self commandName , '_r.rc')) ifFalse:[
-		    "no _r.rc file where executable is; try default smalltalk_r.rc"
-		    self fileIn:'smalltalk_r.rc'
-		].
-	    ]
-	] on:CallbackSignal do:[:ex|
-	    "/ now, display and view-stuff works;
-	    "/ back to the previous debugging interface
-
-	    Inspector := insp.
-	    Debugger := deb.
-
-	    "/ reinstall Transcript, if not changed during restart.
-	    "/ if there was no Transcript, go to stderr
-
-	    (transcript notNil and:[Transcript == Stderr]) ifTrue:[
-		Transcript := transcript.
-	    ].
-	    Initializing := false.
-	    ex proceed.
-	].
-	CallbackSignal := nil.
+        CallbackSignal := QuerySignal new.
+        [
+            Class withoutUpdatingChangesDo:[
+                (self fileIn:(self commandName , '_r.rc')) ifFalse:[
+                    "no _r.rc file where executable is; try default smalltalk_r.rc"
+                    self fileIn:'smalltalk_r.rc'
+                ].
+            ]
+        ] on:CallbackSignal do:[:ex|
+            "/ now, display and view-stuff works;
+            "/ back to the previous debugging interface
+
+            Inspector := insp.
+            Debugger := deb.
+
+            "/ reinstall Transcript, if not changed during restart.
+            "/ if there was no Transcript, go to stderr
+
+            (transcript notNil and:[Transcript == Stderr]) ifTrue:[
+                Transcript := transcript.
+            ].
+            Initializing := false.
+            ex proceed.
+        ].
+        CallbackSignal := nil.
     ].
 
     "/ reinitialization (restart) of Display is normally performed
     "/ in the restart script. If this has not been run for some reason,
     "/ do in now.
     Initializing ifTrue:[
-	Display notNil ifTrue:[
-	    [
-		Display reinitializeFor:Screen defaultDisplayName.
-	    ] on:Screen deviceOpenErrorSignal do:[
-		'Smalltalk [error]: Cannot restart connection to: ' errorPrint.
-		Screen defaultDisplayName errorPrintCR.
-		OperatingSystem exit:1.
-	    ].
-	].
-	"/ now, display and view-stuff works;
-	"/ back to the previous debugging interface
-
-	Inspector := insp.
-	Debugger := deb.
-
-	"/ reinstall Transcript, if not changed during restart.
-	"/ if there was no Transcript, go to stderr
-
-	(transcript notNil and:[Transcript == Stderr]) ifTrue:[
-	    Transcript := transcript.
-	].
-	Initializing := false.
+        Display notNil ifTrue:[
+            [
+                Display reinitializeFor:Screen defaultDisplayName.
+            ] on:Screen deviceOpenErrorSignal do:[
+                'Smalltalk [error]: Cannot restart connection to: ' errorPrint.
+                Screen defaultDisplayName errorPrintCR.
+                OperatingSystem exit:1.
+            ].
+        ].
+        "/ now, display and view-stuff works;
+        "/ back to the previous debugging interface
+
+        Inspector := insp.
+        Debugger := deb.
+
+        "/ reinstall Transcript, if not changed during restart.
+        "/ if there was no Transcript, go to stderr
+
+        (transcript notNil and:[Transcript == Stderr]) ifTrue:[
+            Transcript := transcript.
+        ].
+        Initializing := false.
     ].
     Screen notNil ifTrue:[
-	"clean up leftover screens (and views) that haven't been reopened.
-	 Operate on a copy, since brokenConnection removes us from AllScreens"
-	Screen allScreens copy do:[:eachDisplay |
-	    eachDisplay isOpen ifFalse:[
-		'Smalltalk [info]: cannot reopen secondary display: ' errorPrint.
-		eachDisplay errorPrintCR.
-		eachDisplay cleanupAfterDispatch; brokenConnection.
-	    ]
-	].
+        "clean up leftover screens (and views) that haven't been reopened.
+         Operate on a copy, since brokenConnection removes us from AllScreens"
+        Screen allScreens copy do:[:eachDisplay |
+            eachDisplay isOpen ifFalse:[
+                'Smalltalk [info]: cannot reopen secondary display: ' errorPrint.
+                eachDisplay errorPrintCR.
+                eachDisplay cleanupAfterDispatch; brokenConnection.
+            ]
+        ].
     ].
 
     deb := insp := transcript := nil.   "avoid dangling refs"
@@ -3234,145 +3246,145 @@
      while reading patches- and rc-file, do not add things into change-file
     "
     Class withoutUpdatingChangesDo:[
-	|commandFile defaultRC prevCatchSetting|
-
-	didReadRCFile := false.
-
-	StandAlone ifFalse:[
-	    "/
-	    "/ look for any '-q', '-e' or '-f' command line arguments
-	    "/ and handle them;
-	    "/ read startup and patches file
-	    "/
-	    idx := CommandLineArguments indexOf:'-q'.
-	    idx == 0 ifTrue:[
-		idx := CommandLineArguments indexOf:'--silent'.
-	    ].
-	    idx ~~ 0 ifTrue:[
-		Object infoPrinting:false.
-		ObjectMemory infoPrinting:false.
-		CommandLineArguments removeAtIndex:idx.
-	    ].
-
-	    "/ look for a '-e filename' or '--execute filename' argument
-	    "/ this will force fileIn of filename only, no standard startup.
-
-	    idx := CommandLineArguments indexOf:'-e'.
-	    idx == 0 ifTrue:[
-		idx := CommandLineArguments indexOf:'--execute'.
-	    ].
-	    idx ~~ 0 ifTrue:[
-		arg := CommandLineArguments at:idx + 1.
-
-		CommandLineArguments
-		    removeAtIndex:idx+1; removeAtIndex:idx.
-
-		arg = '-' ifTrue:[
-		    self fileInStream:Stdin
-			   lazy:nil
-			   silent:nil
-			   logged:false
-			   addPath:nil
-		] ifFalse:[
-		    self fileIn:arg.
-		].
-		self exit
-	    ].
-
-	    "/ look for a '-E expr' or '--eval expr' argument
-	    "/ this will force evaluation of expr only, no standard startup
-	    idx := CommandLineArguments indexOf:'-E'.
-	    idx == 0 ifTrue:[
-		idx := CommandLineArguments indexOf:'--eval'.
-	    ].
-	    idx ~~ 0 ifTrue:[
-		arg := CommandLineArguments at:idx + 1.
-
-		CommandLineArguments
-		    removeAtIndex:idx+1; removeAtIndex:idx.
-
-		self
-		    fileInStream:arg readStream
-		    lazy:nil
-		    silent:nil
-		    logged:false
-		    addPath:nil.
-
-		self exit
-	    ].
-
-	    "look for a '-f filename' or '--file filename' argument
-	     this will force evaluation of filename instead of smalltalk.rc"
-
-	    idx := CommandLineArguments indexOf:'-f'.
-	    idx == 0 ifTrue:[
-		idx := CommandLineArguments indexOf:'--file'.
-	    ].
-	    idx ~~ 0 ifTrue:[
-		commandFile := CommandLineArguments at:idx+1.
-		CommandLineArguments removeAtIndex:idx+1; removeAtIndex:idx.
-	    ].
-	].
-
-	commandFile notNil ifTrue:[
-	    (self secureFileIn:commandFile) ifFalse:[
-		('Smalltalk [error]: startup file "', commandFile, '" not found.') errorPrintCR.
-		OperatingSystem exit:1.
-	    ].
-	] ifFalse:[
-	    "/ look for <command>.rc
-	    "/ if not found, read smalltalk.rc (or stxapp.rc for standAlone operation)
-
-	    commandFile := self commandName asFilename withSuffix:'rc'.
-	    (didReadRCFile := self secureFileIn:commandFile) ifFalse:[
-		StandAlone ifFalse:[
-		    defaultRC := 'smalltalk.rc'
-		] ifTrue:[
-		    defaultRC := 'stxapp.rc'
-		].
-
-		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.
-	    "/ ('Display is %1' bindWith:Display) printCR.
-	    "/ ('Screen is %1' bindWith:Screen) printCR.
-
-	    didReadRCFile ifFalse:[
-		self secureFileIn:'private.rc'.
-
-		"/
-		"/ No RC file found;
-		"/ Setup more default stuff
-		"/
-		StandAlone ifFalse:[
-		    "/ its a smalltalk - proceed in interpreter.
-		    'Smalltalk [warning]: no startup rc-file found. Going into line-by-line interpreter.' infoPrintCR.
-		    graphicalMode := false.
-		].
-
-		"/ setup more defaults...
-		ObjectMemory startBackgroundCollectorAt:5.
-		ObjectMemory startBackgroundFinalizationAt:5.
-		self addStartBlock:[
-		    Processor startTimeSlicing.
-		    Processor supportDynamicPriorities:true.
-		    ObjectMemory backgroundCollectProcess priorityRange:(4 to:9).
-		    ObjectMemory backgroundFinalizationProcess priorityRange:(4 to:9).
-		].
-	    ].
-	].
+        |commandFile defaultRC prevCatchSetting|
+
+        didReadRCFile := false.
+
+        StandAlone ifFalse:[
+            "/
+            "/ look for any '-q', '-e' or '-f' command line arguments
+            "/ and handle them;
+            "/ read startup and patches file
+            "/
+            idx := CommandLineArguments indexOf:'-q'.
+            idx == 0 ifTrue:[
+                idx := CommandLineArguments indexOf:'--silent'.
+            ].
+            idx ~~ 0 ifTrue:[
+                Object infoPrinting:false.
+                ObjectMemory infoPrinting:false.
+                CommandLineArguments removeAtIndex:idx.
+            ].
+
+            "/ look for a '-e filename' or '--execute filename' argument
+            "/ this will force fileIn of filename only, no standard startup.
+
+            idx := CommandLineArguments indexOf:'-e'.
+            idx == 0 ifTrue:[
+                idx := CommandLineArguments indexOf:'--execute'.
+            ].
+            idx ~~ 0 ifTrue:[
+                arg := CommandLineArguments at:idx + 1.
+
+                CommandLineArguments
+                    removeAtIndex:idx+1; removeAtIndex:idx.
+
+                arg = '-' ifTrue:[
+                    self fileInStream:Stdin
+                           lazy:nil
+                           silent:nil
+                           logged:false
+                           addPath:nil
+                ] ifFalse:[
+                    self fileIn:arg.
+                ].
+                self exit
+            ].
+
+            "/ look for a '-E expr' or '--eval expr' argument
+            "/ this will force evaluation of expr only, no standard startup
+            idx := CommandLineArguments indexOf:'-E'.
+            idx == 0 ifTrue:[
+                idx := CommandLineArguments indexOf:'--eval'.
+            ].
+            idx ~~ 0 ifTrue:[
+                arg := CommandLineArguments at:idx + 1.
+
+                CommandLineArguments
+                    removeAtIndex:idx+1; removeAtIndex:idx.
+
+                self
+                    fileInStream:arg readStream
+                    lazy:nil
+                    silent:nil
+                    logged:false
+                    addPath:nil.
+
+                self exit
+            ].
+
+            "look for a '-f filename' or '--file filename' argument
+             this will force evaluation of filename instead of smalltalk.rc"
+
+            idx := CommandLineArguments indexOf:'-f'.
+            idx == 0 ifTrue:[
+                idx := CommandLineArguments indexOf:'--file'.
+            ].
+            idx ~~ 0 ifTrue:[
+                commandFile := CommandLineArguments at:idx+1.
+                CommandLineArguments removeAtIndex:idx+1; removeAtIndex:idx.
+            ].
+        ].
+
+        commandFile notNil ifTrue:[
+            (self secureFileIn:commandFile) ifFalse:[
+                ('Smalltalk [error]: startup file "', commandFile, '" not found.') errorPrintCR.
+                OperatingSystem exit:1.
+            ].
+        ] ifFalse:[
+            "/ look for <command>.rc
+            "/ if not found, read smalltalk.rc (or stxapp.rc for standAlone operation)
+
+            commandFile := self commandName asFilename withSuffix:'rc'.
+            (didReadRCFile := self secureFileIn:commandFile) ifFalse:[
+                StandAlone ifFalse:[
+                    defaultRC := 'smalltalk.rc'
+                ] ifTrue:[
+                    defaultRC := 'stxapp.rc'
+                ].
+
+                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.
+            "/ ('Display is %1' bindWith:Display) printCR.
+            "/ ('Screen is %1' bindWith:Screen) printCR.
+
+            didReadRCFile ifFalse:[
+                self secureFileIn:'private.rc'.
+
+                "/
+                "/ No RC file found;
+                "/ Setup more default stuff
+                "/
+                StandAlone ifFalse:[
+                    "/ its a smalltalk - proceed in interpreter.
+                    'Smalltalk [warning]: no startup rc-file found. Going into line-by-line interpreter.' infoPrintCR.
+                    graphicalMode := false.
+                ].
+
+                "/ setup more defaults...
+                ObjectMemory startBackgroundCollectorAt:5.
+                ObjectMemory startBackgroundFinalizationAt:5.
+                self addStartBlock:[
+                    Processor startTimeSlicing.
+                    Processor supportDynamicPriorities:true.
+                    ObjectMemory backgroundCollectProcess priorityRange:(4 to:9).
+                    ObjectMemory backgroundFinalizationProcess priorityRange:(4 to:9).
+                ].
+            ].
+        ].
     ].
 
     HeadlessOperation ifTrue:[
-	graphicalMode := false.
+        graphicalMode := false.
     ].
 
     self mainStartup:graphicalMode
@@ -3402,7 +3414,7 @@
     args := self commandLineArguments.
     index := args indexOf:aString.
     (index between:1 and:(args size - 1)) ifTrue:[
-	^ args at:index+1
+        ^ args at:index+1
     ].
     ^ nil.
 
@@ -3695,26 +3707,26 @@
     table := IdentityDictionary new:100.
 
     Method allSubInstancesDo:[:aMethod |
-	source := nil.
-	aMethod sourcePosition notNil ifTrue:[
-	    aMethod sourceFilename = 'st.src' ifTrue:[
-		source := aMethod source.
-	    ]
-	] ifFalse:[
-	    source := aMethod source
-	].
-
-	source notNil ifTrue:[
-	    pos := newStream position1Based.
-	    newStream nextChunkPut:source.
-
-	    "
-	     dont change the methods info - maybe some write error
-	     occurs later, in that case we abort and leave everything
-	     untouched.
-	    "
-	    table at:aMethod put:pos
-	]
+        source := nil.
+        aMethod sourcePosition notNil ifTrue:[
+            aMethod sourceFilename = 'st.src' ifTrue:[
+                source := aMethod source.
+            ]
+        ] ifFalse:[
+            source := aMethod source
+        ].
+
+        source notNil ifTrue:[
+            pos := newStream position1Based.
+            newStream nextChunkPut:source.
+
+            "
+             dont change the methods info - maybe some write error
+             occurs later, in that case we abort and leave everything
+             untouched.
+            "
+            table at:aMethod put:pos
+        ]
     ].
 
     newStream close.
@@ -3729,7 +3741,7 @@
      source reference"
 
     table keysAndValuesDo:[:aMethod :pos |
-	aMethod localSourceFilename:fileName position:pos.
+        aMethod localSourceFilename:fileName position:pos.
 "/        aMethod printCR.
     ].
 
@@ -3757,18 +3769,18 @@
     table := IdentityDictionary new:100.
 
     Method allSubInstancesDo:[:aMethod |
-	source := aMethod source.
-	source notNil ifTrue:[
-	    pos := newStream position1Based.
-	    newStream nextChunkPut:source.
-
-	    "
-	     dont change the methods info - maybe some write error
-	     occurs later, in that case we abort and leave everything
-	     untouched.
-	    "
-	    table at:aMethod put:pos
-	]
+        source := aMethod source.
+        source notNil ifTrue:[
+            pos := newStream position1Based.
+            newStream nextChunkPut:source.
+
+            "
+             dont change the methods info - maybe some write error
+             occurs later, in that case we abort and leave everything
+             untouched.
+            "
+            table at:aMethod put:pos
+        ]
     ].
 
     newStream close.
@@ -3783,7 +3795,7 @@
      source reference"
 
     table keysAndValuesDo:[:aMethod :pos |
-	aMethod localSourceFilename:fileName position:pos.
+        aMethod localSourceFilename:fileName position:pos.
 "/        aMethod printCR.
     ].
 
@@ -3802,11 +3814,11 @@
      (otherwise, the newest revision will be loaded"
 
     ^ self
-	installAutoloadedClassNamed:clsName
-	category:cat
-	package:package
-	revision:revisionOrNil
-	numClassInstVars:nil.
+        installAutoloadedClassNamed:clsName
+        category:cat
+        package:package
+        revision:revisionOrNil
+        numClassInstVars:nil.
 !
 
 installAutoloadedClassNamed:clsName category:cat package:package revision:revisionOrNil numClassInstVars:numClassInstVarsOrNil
@@ -3871,26 +3883,26 @@
 
     "/ along the package-path
     (p := self packagePath) do:[:aPath |
-	(dirsConsulted includes:aPath) ifFalse:[
-	    ('Smalltalk [info]: installing autoloaded classes found under ''' , aPath ,'''') infoPrintCR.
-	    self
-		recursiveInstallAutoloadedClassesFrom:aPath
-		rememberIn:dirsConsulted
-		maxLevels:15
-		noAutoload:false
-		packageTop:aPath.
-	]
+        (dirsConsulted includes:aPath) ifFalse:[
+            ('Smalltalk [info]: installing autoloaded classes found under ''' , aPath ,'''') infoPrintCR.
+            self
+                recursiveInstallAutoloadedClassesFrom:aPath
+                rememberIn:dirsConsulted
+                maxLevels:15
+                noAutoload:false
+                packageTop:aPath.
+        ]
     ].
     p size == 0 ifTrue:[
-	'../../../stx' asFilename exists ifTrue:[
-	    ('Smalltalk [info]: installing autoloaded classes found under ''../../..''') infoPrintCR.
-	    self
-		recursiveInstallAutoloadedClassesFrom:'../../..'
-		rememberIn:dirsConsulted
-		maxLevels:15
-		noAutoload:false
-		packageTop:'../../..'.
-	].
+        '../../../stx' asFilename exists ifTrue:[
+            ('Smalltalk [info]: installing autoloaded classes found under ''../../..''') infoPrintCR.
+            self
+                recursiveInstallAutoloadedClassesFrom:'../../..'
+                rememberIn:dirsConsulted
+                maxLevels:15
+                noAutoload:false
+                packageTop:'../../..'.
+        ].
     ].
 
     "
@@ -3911,15 +3923,15 @@
     f isNil ifTrue:[f := self getPackageFileName:anAbbrevFilePath].
 
     f notNil ifTrue:[
-	f := f asFilename.
-	f isDirectory ifTrue:[
-	    f := f construct:'abbrev.stc'
-	].
-	[
-	    s := f readStream.
-	    self installAutoloadedClassesFromStream:s.
-	    s close.
-	] on:FileStream openErrorSignal do:[:ex| "do nothing"].
+        f := f asFilename.
+        f isDirectory ifTrue:[
+            f := f construct:'abbrev.stc'
+        ].
+        [
+            s := f readStream.
+            self installAutoloadedClassesFromStream:s.
+            s close.
+        ] on:FileStream openErrorSignal do:[:ex| "do nothing"].
     ]
 
     "
@@ -3938,76 +3950,76 @@
     |s2 l abbrevFileName info clsName cls abbrev package cat numClassInstVars words w|
 
     anAbbrevFileStream isFileStream ifTrue:[
-	abbrevFileName := anAbbrevFileStream pathName.
-	info := 'declared from: ', abbrevFileName.
+        abbrevFileName := anAbbrevFileStream pathName.
+        info := 'declared from: ', abbrevFileName.
     ].
 
     KnownPackages isNil ifTrue:[
-	KnownPackages := Set new.
+        KnownPackages := Set new.
     ].
 
     "/ yes, create any required nameSpace, without asking user.
     Class createNameSpaceQuerySignal answer:true do:[
 
-	[anAbbrevFileStream atEnd] whileFalse:[
-	    l := anAbbrevFileStream nextLine withoutSeparators.
-	    l notEmpty ifTrue:[
-		"/ must do it manually, caring for quoted strings.
+        [anAbbrevFileStream atEnd] whileFalse:[
+            l := anAbbrevFileStream nextLine withoutSeparators.
+            l notEmpty ifTrue:[
+                "/ must do it manually, caring for quoted strings.
 "/                words := line asCollectionOfWords.
 
-		words := OrderedCollection new.
-		s2 := l readStream.
-		[s2 atEnd] whileFalse:[
-		    s2 skipSeparators.
-		    s2 peek == $' ifTrue:[
-			s2 next.
-			w := s2 upTo:$'.
-			s2 skipSeparators.
-		    ] ifFalse:[
-			w := s2 upToSeparator
-		    ].
-		    words add:w
-		].
-		words size < 3 ifTrue:[
-		    'Smalltalk [warning]: bad abbrev entry' errorPrint.
-		    anAbbrevFileStream isFileStream ifTrue:[
-			' (in ''' errorPrint.
-			anAbbrevFileStream pathName errorPrint.
-			''')' errorPrint
-		    ].
-		    ': ' errorPrint. l errorPrintCR
-		] ifFalse:[
-		    clsName := (words at:1) asSymbol.
-		    abbrev := (words at:2).
-		    package := (words at:3) asSymbol.
-		    cat := words at:4 ifAbsent:nil.
-		    numClassInstVars := words at:5 ifAbsent:'0'.
-		    numClassInstVars := Integer readFrom:numClassInstVars onError:[0].
+                words := OrderedCollection new.
+                s2 := l readStream.
+                [s2 atEnd] whileFalse:[
+                    s2 skipSeparators.
+                    s2 peek == $' ifTrue:[
+                        s2 next.
+                        w := s2 upTo:$'.
+                        s2 skipSeparators.
+                    ] ifFalse:[
+                        w := s2 upToSeparator
+                    ].
+                    words add:w
+                ].
+                words size < 3 ifTrue:[
+                    'Smalltalk [warning]: bad abbrev entry' errorPrint.
+                    anAbbrevFileStream isFileStream ifTrue:[
+                        ' (in ''' errorPrint.
+                        anAbbrevFileStream pathName errorPrint.
+                        ''')' errorPrint
+                    ].
+                    ': ' errorPrint. l errorPrintCR
+                ] ifFalse:[
+                    clsName := (words at:1) asSymbol.
+                    abbrev := (words at:2).
+                    package := (words at:3) asSymbol.
+                    cat := words at:4 ifAbsent:nil.
+                    numClassInstVars := words at:5 ifAbsent:'0'.
+                    numClassInstVars := Integer readFrom:numClassInstVars onError:[0].
 
 "/                KnownPackages add:package.
 
-		    (cat size == 0) ifTrue:[
-			cat := 'autoloaded'
-		    ].
-
-		    "/ on the fly, update the abbreviations
-		    self setFilename:abbrev forClass:clsName package:package.
-
-		    "/ '  autoloaded: ' print. clsName print. ' in ' print. cat printCR.
-
-		    cls := self
-			installAutoloadedClassNamed:clsName
-			category:cat
-			package:package
-			revision:nil
-			numClassInstVars:numClassInstVars.
+                    (cat size == 0) ifTrue:[
+                        cat := 'autoloaded'
+                    ].
+
+                    "/ on the fly, update the abbreviations
+                    self setFilename:abbrev forClass:clsName package:package.
+
+                    "/ '  autoloaded: ' print. clsName print. ' in ' print. cat printCR.
+
+                    cls := self
+                        installAutoloadedClassNamed:clsName
+                        category:cat
+                        package:package
+                        revision:nil
+                        numClassInstVars:numClassInstVars.
 
 "/                    info notNil ifTrue:[
 "/                        cls setComment:info.
 "/                    ].
-		]
-	    ]
-	]
+                ]
+            ]
+        ]
     ]
 !
 
@@ -4024,11 +4036,11 @@
     "turn on/off loading of binary objects"
 
     aBoolean ifTrue:[
-	(ObjectFileLoader notNil and:[ObjectFileLoader canLoadObjectFiles]) ifTrue:[
-	    LoadBinaries := true.
-	    ^ self
-	].
-	'Smalltalk [info]: this system does not support binary loading' infoPrintCR.
+        (ObjectFileLoader notNil and:[ObjectFileLoader canLoadObjectFiles]) ifTrue:[
+            LoadBinaries := true.
+            ^ self
+        ].
+        'Smalltalk [info]: this system does not support binary loading' infoPrintCR.
     ].
     LoadBinaries := false
 
@@ -4069,14 +4081,14 @@
      Experimental and not yet used."
 
     Method allSubInstancesDo:[:aMethod |
-	|newMethod|
-
-	aMethod hasPrimitiveCode ifFalse:[
-	    newMethod := aMethod asByteCodeMethod.
-	    newMethod ~~ aMethod ifTrue:[
-		aMethod becomeSameAs:newMethod
-	    ]
-	].
+        |newMethod|
+
+        aMethod hasPrimitiveCode ifFalse:[
+            newMethod := aMethod asByteCodeMethod.
+            newMethod ~~ aMethod ifTrue:[
+                aMethod becomeSameAs:newMethod
+            ]
+        ].
     ].
 
     "
@@ -4098,42 +4110,42 @@
 
     maxLevels == 0 ifTrue:[
 "/        'Smalltalk [warning]: max directory nesting reached.' infoPrintCR.
-	^ self
+        ^ self
     ].
 
     dir := aDirectory asFilename.
 
     (dirsConsulted includes:dir pathName) ifTrue:[
-	^ self
+        ^ self
     ].
     dirsConsulted add:dir pathName.
 
     (dir construct:'NOPACKAGES') exists ifTrue:[
-	^ self.
+        ^ self.
     ].
     (dir construct:'NOSUBAUTOLOAD') exists ifTrue:[
-	^ self.
+        ^ self.
     ].
     noAutoloadHere := noAutoloadIn.
     noAutoloadHere ifFalse:[
-	(dir construct:'NOAUTOLOAD') exists ifTrue:[
-	    noAutoloadHere := true.
-	].
+        (dir construct:'NOAUTOLOAD') exists ifTrue:[
+            noAutoloadHere := true.
+        ].
     ] ifTrue:[
-	(dir construct:'AUTOLOAD') exists ifTrue:[
-	    noAutoloadHere := false.
-	].
+        (dir construct:'AUTOLOAD') exists ifTrue:[
+            noAutoloadHere := false.
+        ].
     ].
 
     ((dir construct:'loadAll') exists
     or:[(dir construct:'abbrev.stc') exists
     or:[(dir construct:(dir baseName , '.prj')) exists]]) ifTrue:[
-	KnownPackages isNil ifTrue:[
-	    KnownPackages := Set new.
-	].
-	dirName := dir pathName.
-	pkgName := dirName copyFrom:(packageTopPath asFilename pathName) size + 1 + 1.
-	KnownPackages add:pkgName
+        KnownPackages isNil ifTrue:[
+            KnownPackages := Set new.
+        ].
+        dirName := dir pathName.
+        pkgName := dirName copyFrom:(packageTopPath asFilename pathName) size + 1 + 1.
+        KnownPackages add:pkgName
     ].
 
     "/
@@ -4141,54 +4153,54 @@
     "/ below; however, still traverse the directories to find packages ...
     "/
     noAutoloadHere ifFalse:[
-	[
-	    abbrevStream := (dir construct:'abbrev.stc') asFilename readStream.
-	    self installAutoloadedClassesFromStream:abbrevStream.
-	    abbrevStream close.
-	] on:FileStream openErrorSignal do:[:ex| "ignore this file"].
+        [
+            abbrevStream := (dir construct:'abbrev.stc') asFilename readStream.
+            self installAutoloadedClassesFromStream:abbrevStream.
+            abbrevStream close.
+        ] on:FileStream openErrorSignal do:[:ex| "ignore this file"].
     ].
 
     [
-	directoryContents := dir directoryContents.
+        directoryContents := dir directoryContents.
     ] on:FileStream openErrorSignal do:[:ex|
-	"non-accessable directory: we are done"
-	^ self
+        "non-accessable directory: we are done"
+        ^ self
     ].
 
     directoryContents do:[:aFilename |
-	|f|
-
-	(#(
-	    'objbc'
-	    'doc'
-	    'CVS'
-	    'bitmaps'
-	    'resources'
-	    'source'
-	    'not_delivered'
-	    'not_ported'
-	) includes:aFilename) ifFalse:[
-	    ((dir baseName ~= 'stx')
-	    or:[
-		(#(
-		    'configurations'
-		    'include'
-		    'rules'
-		    'stc'
-		    'support'
-		) includes:aFilename) not])
-	    ifTrue:[
-		f := dir construct:aFilename.
-		f isDirectory ifTrue:[
-		     self
-			recursiveInstallAutoloadedClassesFrom:f
-			rememberIn:dirsConsulted
-			maxLevels:maxLevels-1
-			noAutoload:noAutoloadHere
-			packageTop:packageTopPath.
-		]
-	    ]
-	].
+        |f|
+
+        (#(
+            'objbc'
+            'doc'
+            'CVS'
+            'bitmaps'
+            'resources'
+            'source'
+            'not_delivered'
+            'not_ported'
+        ) includes:aFilename) ifFalse:[
+            ((dir baseName ~= 'stx')
+            or:[
+                (#(
+                    'configurations'
+                    'include'
+                    'rules'
+                    'stc'
+                    'support'
+                ) includes:aFilename) not])
+            ifTrue:[
+                f := dir construct:aFilename.
+                f isDirectory ifTrue:[
+                     self
+                        recursiveInstallAutoloadedClassesFrom:f
+                        rememberIn:dirsConsulted
+                        maxLevels:maxLevels-1
+                        noAutoload:noAutoloadHere
+                        packageTop:packageTopPath.
+                ]
+            ]
+        ].
     ].
 
     "
@@ -4203,15 +4215,15 @@
 
     toAdd := OrderedCollection new.
     self keysAndValuesDo:[:key :val |
-	(key == anObject) ifTrue:[
-	    self shouldImplement.
-	].
-	(val == anObject ) ifTrue:[
-	    toAdd add:(key -> newRef)
-	].
+        (key == anObject) ifTrue:[
+            self shouldImplement.
+        ].
+        (val == anObject ) ifTrue:[
+            toAdd add:(key -> newRef)
+        ].
     ].
     toAdd do:[:each |
-	self at:(each key) put:(each value)
+        self at:(each key) put:(each value)
     ].
 !
 
@@ -4253,10 +4265,10 @@
     "read in the named file - look for it in some standard places;
      return true if ok, false if failed.
      This method can load almost anything which makes sense:
-	.st    - source files
-	.cls   - binary smalltalk bytecode files
-	.so    - binary compiled machine code class libraries
-	[.class - java bytecode -- soon to come]"
+        .st    - source files
+        .cls   - binary smalltalk bytecode files
+        .so    - binary compiled machine code class libraries
+        [.class - java bytecode -- soon to come]"
 
     ^ self fileIn:aFileName lazy:nil silent:nil logged:false
 
@@ -4327,10 +4339,10 @@
      If silent is true, no compiler messages are output to the transcript.
      Giving nil for silent/lazy will use the current settings.
      This method can load almost anything which makes sense:
-	.st    - source files
-	.cls   - binary smalltalk bytecode files
-	.so    - binary compiled machine code class libraries
-	[.class - java bytecode -- soon to come]"
+        .st    - source files
+        .cls   - binary smalltalk bytecode files
+        .so    - binary compiled machine code class libraries
+        [.class - java bytecode -- soon to come]"
 
     |fileNameString aStream path morePath bos|
 
@@ -4341,42 +4353,42 @@
     "
     (ObjectFileLoader notNil
     and:[ObjectFileLoader hasValidBinaryExtension:fileNameString]) ifTrue:[
-	"/ LoadBinaries ifFalse:[^ false].
-	path := self getBinaryFileName:fileNameString.
-	path isNil ifTrue:[
-	    path := self getSystemFileName:fileNameString.
-	].
-	path isNil ifTrue:[^ false].
-	^ (ObjectFileLoader loadObjectFile:path) notNil
+        "/ LoadBinaries ifFalse:[^ false].
+        path := self getBinaryFileName:fileNameString.
+        path isNil ifTrue:[
+            path := self getSystemFileName:fileNameString.
+        ].
+        path isNil ifTrue:[^ false].
+        ^ (ObjectFileLoader loadObjectFile:path) notNil
     ].
 
     (fileNameString asFilename hasSuffix:'cls') ifTrue:[
-	BinaryObjectStorage notNil ifTrue:[
-	    aStream := self systemFileStreamFor:fileNameString.
+        BinaryObjectStorage notNil ifTrue:[
+            aStream := self systemFileStreamFor:fileNameString.
 "/            path := self getBinaryFileName:fileNameString.
 "/            path isNil ifTrue:[^ false].
 "/            aStream := path asFilename readStream.
-	    aStream notNil ifTrue:[
-		aStream binary.
-		bos := BinaryObjectStorage onOld:aStream.
-		bos next.
-		bos close.
-		^ true
-	    ].
-	    ^ false
-	]
+            aStream notNil ifTrue:[
+                aStream binary.
+                bos := BinaryObjectStorage onOld:aStream.
+                bos next.
+                bos close.
+                ^ true
+            ].
+            ^ false
+        ]
     ].
 
     aStream := self systemFileStreamFor:fileNameString.
     aStream isNil ifTrue:[^ false].
 
     (fileNameString includes:$/) ifTrue:[
-	"/ temporarily prepend the files directory
-	"/ to the searchPath.
-	"/ This allows fileIn-driver files to refer to local
-	"/ files via a relative path, and drivers to fileIn other
-	"/ drivers ...
-	morePath := aStream pathName asFilename directoryName.
+        "/ temporarily prepend the files directory
+        "/ to the searchPath.
+        "/ This allows fileIn-driver files to refer to local
+        "/ files via a relative path, and drivers to fileIn other
+        "/ drivers ...
+        morePath := aStream pathName asFilename directoryName.
     ].
     ^ self fileInStream:aStream lazy:lazy silent:silent logged:logged addPath:morePath
 
@@ -4417,8 +4429,8 @@
     "read in the last changes file - bringing the system to the state it
      had when left the last time.
      WARNING: this method is rubbish: it should only read things after the
-	      last '**snapshot**' - entry
-	      (instead of the complete changes file)."
+              last '**snapshot**' - entry
+              (instead of the complete changes file)."
 
     "
      do NOT update the changes file now ...
@@ -4437,11 +4449,11 @@
      The file is first searched for using the class name, then the abbreviated name."
 
     ^ self
-	fileInClass:aClassName
-	package:nil
-	initialize:true
-	lazy:false
-	silent:nil
+        fileInClass:aClassName
+        package:nil
+        initialize:true
+        lazy:false
+        silent:nil
 
     "Modified: / 9.1.1998 / 14:41:46 / cg"
 !
@@ -4462,9 +4474,9 @@
     (path := self getBinaryFileName:aFileName) isNil ifTrue:[^ false].
     ok := (ObjectFileLoader loadClass:aClassName fromObjectFile:path) notNil.
     ok ifTrue:[
-	SilentLoading ifFalse:[
-	    Transcript show:'  loaded ' , aClassName , ' from ' ; showCR:aFileName.
-	]
+        SilentLoading ifFalse:[
+            Transcript show:'  loaded ' , aClassName , ' from ' ; showCR:aFileName.
+        ]
     ].
     ^ ok
 
@@ -4483,11 +4495,11 @@
      The file is first searched for using the class name, then the abbreviated name."
 
     ^ self
-	fileInClass:aClassName
-	package:nil
-	initialize:doInit
-	lazy:false
-	silent:nil
+        fileInClass:aClassName
+        package:nil
+        initialize:doInit
+        lazy:false
+        silent:nil
 
     "Modified: / 9.1.1998 / 14:42:02 / cg"
 !
@@ -4499,11 +4511,11 @@
      The file is first searched for using the class name, then the abbreviated name."
 
      ^ self
-	fileInClass:aClassName
-	package:nil
-	initialize:doInit
-	lazy:loadLazy
-	silent:nil
+        fileInClass:aClassName
+        package:nil
+        initialize:doInit
+        lazy:loadLazy
+        silent:nil
 
     "Modified: / 9.1.1998 / 14:42:19 / cg"
 !
@@ -4519,11 +4531,11 @@
      nil uses the value from SilentLoading."
 
     ^ self
-	fileInClass:aClassName
-	package:nil
-	initialize:doInit
-	lazy:loadLazy
-	silent:beSilent
+        fileInClass:aClassName
+        package:nil
+        initialize:doInit
+        lazy:loadLazy
+        silent:beSilent
 
     "Modified: / 9.1.1998 / 14:42:28 / cg"
 !
@@ -4535,11 +4547,11 @@
      The file is first searched for using the class name, then the abbreviated name."
 
     ^ self
-	fileInClass:aClassName
-	package:package
-	initialize:true
-	lazy:false
-	silent:nil
+        fileInClass:aClassName
+        package:package
+        initialize:true
+        lazy:false
+        silent:nil
 
     "Created: / 08-01-2007 / 10:06:09 / cg"
 !
@@ -4560,305 +4572,305 @@
 
     wasLazy := Compiler compileLazy:loadLazy.
     beSilent notNil ifTrue:[
-	wasSilent := self silentLoading:beSilent.
+        wasSilent := self silentLoading:beSilent.
     ].
 
     classFileName := Smalltalk fileNameForClass:aClassName.
     (classFileName = aClassName) ifTrue:[
-	"/ no abbrev.stc translation for className
-	(aClassName includes:$:) ifTrue:[
-	    "/ a nameSpace name
-	    alternativeClassFileName := classFileName copyFrom:(classFileName lastIndexOf:$:)+1
-	].
+        "/ no abbrev.stc translation for className
+        (aClassName includes:$:) ifTrue:[
+            "/ a nameSpace name
+            alternativeClassFileName := classFileName copyFrom:(classFileName lastIndexOf:$:)+1
+        ].
     ].
 
     classFileName asFilename isAbsolute ifTrue:[
-	classFileName asFilename suffix notEmptyOrNil ifTrue:[
-	    ok := self fileIn:classFileName lazy:loadLazy silent:beSilent.
-	] ifFalse:[
-	    ok := self fileIn:(classFileName,'.st') lazy:loadLazy silent:beSilent.
-	]
+        classFileName asFilename suffix notEmptyOrNil ifTrue:[
+            ok := self fileIn:classFileName lazy:loadLazy silent:beSilent.
+        ] ifFalse:[
+            ok := self fileIn:(classFileName,'.st') lazy:loadLazy silent:beSilent.
+        ]
     ] ifFalse:[
-	classFileName := classFileName copyReplaceAll:$: with:$_.
-	[
-	    Class withoutUpdatingChangesDo:[
-		|zarFn zar entry|
-
-		ok := false.
-
-		package notNil ifTrue:[
-		    packageDir := package asString.
-		    packageDir := packageDir copyReplaceAll:$: with:$/.
-		].
-
-		Class packageQuerySignal answer:package do:[
-		    "
-		     then, if dynamic linking is available,
-		    "
-		    (LoadBinaries and:[ObjectFileLoader notNil]) ifTrue:[
-			sharedLibExtension := ObjectFileLoader sharedLibraryExtension.
-			"
-			 first look for a class packages shared binary in binary/xxx.o
-			"
-			libName := self libraryFileNameOfClass:aClassName.
-			libName notNil ifTrue:[
-			    (ok := self fileInClass:aClassName fromObject:(libName, sharedLibExtension))
-			    ifFalse:[
-				sharedLibExtension ~= '.o' ifTrue:[
-				    ok := self fileInClass:aClassName fromObject:(libName, '.o')
-				]
-			    ].
-			].
-			"
-			 then, look for a shared binary in binary/xxx.o
-			"
-			ok ifFalse:[
-			    (ok := self fileInClass:aClassName fromObject:(classFileName, sharedLibExtension))
-			    ifFalse:[
-				sharedLibExtension ~= '.o' ifTrue:[
-				    ok := self fileInClass:aClassName fromObject:(classFileName, '.o')
-				].
-				ok ifFalse:[
-				    alternativeClassFileName notNil ifTrue:[
-					(ok := self fileInClass:aClassName fromObject:(alternativeClassFileName, sharedLibExtension))
-					ifFalse:[
-					    sharedLibExtension ~= '.o' ifTrue:[
-						ok := self fileInClass:aClassName fromObject:(alternativeClassFileName, '.o')
-					    ]
-					]
-				    ].
-				].
-			    ].
-			].
-		    ].
-
-		    "
-		     if that did not work, look for a compiled-bytecode file ...
-		    "
-		    ok ifFalse:[
-			(ok := self fileIn:(classFileName , '.cls') lazy:loadLazy silent:beSilent)
-			ifFalse:[
-			    alternativeClassFileName notNil ifTrue:[
-				ok := self fileIn:(alternativeClassFileName , '.cls') lazy:loadLazy silent:beSilent
-			    ]
-			]
-		    ].
-		    "
-		     if that did not work, and the classes package is known,
-		     look for an st-cls file
-		     in a package subdir of the source-directory ...
-		    "
-		    ok ifFalse:[
-			(packageDir notNil and:[BinaryObjectStorage notNil]) ifTrue:[
-			    packageFile := self getPackageFileName:(packageDir , '/classes/' , classFileName , '.cls').
-			    packageFile isNil ifTrue:[
-				packageFile := (packageDir , '/classes/' , classFileName , '.cls').
-			    ].
-			    (ok := self fileIn:packageFile lazy:loadLazy silent:beSilent)
-			    ifFalse:[
-				alternativeClassFileName notNil ifTrue:[
-				    packageFile := self getPackageFileName:(packageDir , '/classes/' , alternativeClassFileName , '.cls').
-				    packageFile isNil ifTrue:[
-					packageFile := (packageDir , '/classes/' , alternativeClassFileName , '.cls').
-				    ].
-				    ok := self fileIn:packageFile lazy:loadLazy silent:beSilent
-				]
-			    ].
-
-			    zarFn := self getPackageFileName:(packageDir , '/classes.zip').
-			    zarFn notNil ifTrue:[
-				zar := ZipArchive oldFileNamed:zarFn.
-				zar notNil ifTrue:[
-				    entry := zar extract:(classFileName , '.cls').
-				    (entry isNil and:[alternativeClassFileName notNil]) ifTrue:[
-					entry := zar extract:(alternativeClassFileName , '.cls').
-				    ].
-				    entry notNil ifTrue:[
-					bos := BinaryObjectStorage onOld:(entry asByteArray readStream).
-					bos next.
-					bos close.
-					ok := true
-				    ].
-				]
-			    ]
-			]
-		    ].
-
-		    "
-		     if that did not work, look for an st-source file ...
-		    "
-		    ok ifFalse:[
-			filenameToSet := classFileName , '.st'.
-			(ok := self fileIn:filenameToSet lazy:loadLazy silent:beSilent)
-			ifFalse:[
-			    alternativeClassFileName notNil ifTrue:[
-				filenameToSet := alternativeClassFileName , '.st'.
-				ok := self fileIn:filenameToSet lazy:loadLazy silent:beSilent
-			    ].
-			    ok ifFalse:[
-				"
-				 ... and in the standard source-directory
-				"
-				filenameToSet := 'source/' , classFileName , '.st'.
-				(ok := self fileIn:filenameToSet lazy:loadLazy silent:beSilent)
-				ifFalse:[
-				    alternativeClassFileName notNil ifTrue:[
-					filenameToSet := 'source/' , alternativeClassFileName , '.st'.
-					ok := self fileIn:filenameToSet lazy:loadLazy silent:beSilent
-				    ]
-				]
-			    ]
-			].
-			"
-			 if that did not work, and the classes package is known,
-			 look for an st-source file
-			 in a package subdir of the source-directory ...
-			"
-			ok ifFalse:[
-			    packageDir notNil ifTrue:[
-				packageFile := self getPackageFileName:(packageDir , '/source/' , classFileName , '.st').
-				packageFile isNil ifTrue:[
-				    packageFile := (packageDir , '/source/' , classFileName , '.st').
-				].
-				filenameToSet := packageFile.
-				(ok := self fileIn:packageFile lazy:loadLazy silent:beSilent)
-				ifFalse:[
-				    alternativeClassFileName notNil ifTrue:[
-					packageFile := self getPackageFileName:(packageDir , '/source/' , alternativeClassFileName , '.st').
-					packageFile isNil ifTrue:[
-					    packageFile := (packageDir , '/source/' , alternativeClassFileName , '.st').
-					].
-					filenameToSet := packageFile.
-					ok := self fileIn:packageFile lazy:loadLazy silent:beSilent
-				    ].
-				    ok ifFalse:[
-					packageFile := self getPackageFileName:(packageDir , '/' , classFileName , '.st').
-					packageFile isNil ifTrue:[
-					    packageFile := (packageDir , '/' , classFileName , '.st').
-					].
-					filenameToSet := packageFile.
-					(ok := self fileIn:packageFile lazy:loadLazy silent:beSilent)
-					ifFalse:[
-					    alternativeClassFileName notNil ifTrue:[
-						packageFile := self getPackageFileName:(packageDir , '/' , alternativeClassFileName , '.st').
-						packageFile isNil ifTrue:[
-						    packageFile := (packageDir , '/' , alternativeClassFileName , '.st').
-						].
-						filenameToSet := packageFile.
-						ok := self fileIn:packageFile lazy:loadLazy silent:beSilent
-					    ].
-					    ok ifFalse:[
-						"
-						 ... and in the standard source-directory
-						"
-						filenameToSet := 'source/' , packageDir , '/' , classFileName , '.st'.
-						(ok := self fileIn:filenameToSet lazy:loadLazy silent:beSilent)
-						ifFalse:[
-						    alternativeClassFileName notNil ifTrue:[
-							filenameToSet := 'source/' , packageDir , '/' , alternativeClassFileName , '.st'.
-							ok := self fileIn:filenameToSet lazy:loadLazy silent:beSilent
-						    ]
-						]
-					    ]
-					].
-				    ].
-				].
-			    ]
-			].
-			"
-			 if that did not work, and the classes package is known,
-			 look for a zipArchive containing a class entry.
-			"
-			ok ifFalse:[
-			    packageDir notNil ifTrue:[
-				zarFn := self getPackageFileName:(packageDir , '/source.zip').
-				zarFn isNil ifTrue:[
-				    zarFn := packageDir asFilename withSuffix:'zip'.
-				    zarFn := self getSourceFileName:zarFn.
-				].
-				zarFn notNil ifTrue:[
-				    zar := ZipArchive oldFileNamed:zarFn.
-				    zar notNil ifTrue:[
-					entry := zar extract:(classFileName , '.st').
-					(entry isNil and:[alternativeClassFileName notNil]) ifTrue:[
-					    entry := zar extract:(alternativeClassFileName , '.st').
-					].
-					entry notNil ifTrue:[
-					    filenameToSet := zarFn.
-					    ok := self
-						    fileInStream:(entry asString readStream)
-						    lazy:loadLazy
-						    silent:beSilent
-						    logged:false
-						    addPath:nil
-					].
-				    ]
-				]
-			    ]
-			].
-
-			"
-			 if that did not work,
-			 look for a zipArchive containing a class entry.
-			"
-			ok ifFalse:[
-			    zarFn := self getSourceFileName:'source.zip'.
-			    zarFn notNil ifTrue:[
-				zar := ZipArchive oldFileNamed:zarFn.
-				zar notNil ifTrue:[
-				    entry := zar extract:(zarFn := classFileName , '.st').
-				    (entry isNil and:[alternativeClassFileName notNil]) ifTrue:[
-					entry := zar extract:(zarFn := alternativeClassFileName , '.st').
-				    ].
-				    entry notNil ifTrue:[
-					filenameToSet := zarFn.
-					ok := self
-						fileInStream:(entry asString readStream)
-						lazy:loadLazy
-						silent:beSilent
-						logged:false
-						addPath:nil
-				    ].
-				]
-			    ]
-			].
-			ok ifFalse:[
-			    "
-			     if there is a sourceCodeManager, ask it for the classes sourceCode
-			    "
-			    (mgr := Smalltalk at:#SourceCodeManager) notNil ifTrue:[
-				inStream := mgr getMostRecentSourceStreamForClassNamed:aClassName.
-				inStream notNil ifTrue:[
-				    filenameToSet := nil.
-				    ok := self fileInStream:inStream lazy:loadLazy silent:beSilent logged:false addPath:nil.
-				]
-			    ].
-			].
-		    ].
-		]
-	    ].
-	] ensure:[
-	    Compiler compileLazy:wasLazy.
-	    wasSilent notNil ifTrue:[
-		self silentLoading:wasSilent
-	    ]
-	].
+        classFileName := classFileName copyReplaceAll:$: with:$_.
+        [
+            Class withoutUpdatingChangesDo:[
+                |zarFn zar entry|
+
+                ok := false.
+
+                package notNil ifTrue:[
+                    packageDir := package asString.
+                    packageDir := packageDir copyReplaceAll:$: with:$/.
+                ].
+
+                Class packageQuerySignal answer:package do:[
+                    "
+                     then, if dynamic linking is available,
+                    "
+                    (LoadBinaries and:[ObjectFileLoader notNil]) ifTrue:[
+                        sharedLibExtension := ObjectFileLoader sharedLibraryExtension.
+                        "
+                         first look for a class packages shared binary in binary/xxx.o
+                        "
+                        libName := self libraryFileNameOfClass:aClassName.
+                        libName notNil ifTrue:[
+                            (ok := self fileInClass:aClassName fromObject:(libName, sharedLibExtension))
+                            ifFalse:[
+                                sharedLibExtension ~= '.o' ifTrue:[
+                                    ok := self fileInClass:aClassName fromObject:(libName, '.o')
+                                ]
+                            ].
+                        ].
+                        "
+                         then, look for a shared binary in binary/xxx.o
+                        "
+                        ok ifFalse:[
+                            (ok := self fileInClass:aClassName fromObject:(classFileName, sharedLibExtension))
+                            ifFalse:[
+                                sharedLibExtension ~= '.o' ifTrue:[
+                                    ok := self fileInClass:aClassName fromObject:(classFileName, '.o')
+                                ].
+                                ok ifFalse:[
+                                    alternativeClassFileName notNil ifTrue:[
+                                        (ok := self fileInClass:aClassName fromObject:(alternativeClassFileName, sharedLibExtension))
+                                        ifFalse:[
+                                            sharedLibExtension ~= '.o' ifTrue:[
+                                                ok := self fileInClass:aClassName fromObject:(alternativeClassFileName, '.o')
+                                            ]
+                                        ]
+                                    ].
+                                ].
+                            ].
+                        ].
+                    ].
+
+                    "
+                     if that did not work, look for a compiled-bytecode file ...
+                    "
+                    ok ifFalse:[
+                        (ok := self fileIn:(classFileName , '.cls') lazy:loadLazy silent:beSilent)
+                        ifFalse:[
+                            alternativeClassFileName notNil ifTrue:[
+                                ok := self fileIn:(alternativeClassFileName , '.cls') lazy:loadLazy silent:beSilent
+                            ]
+                        ]
+                    ].
+                    "
+                     if that did not work, and the classes package is known,
+                     look for an st-cls file
+                     in a package subdir of the source-directory ...
+                    "
+                    ok ifFalse:[
+                        (packageDir notNil and:[BinaryObjectStorage notNil]) ifTrue:[
+                            packageFile := self getPackageFileName:(packageDir , '/classes/' , classFileName , '.cls').
+                            packageFile isNil ifTrue:[
+                                packageFile := (packageDir , '/classes/' , classFileName , '.cls').
+                            ].
+                            (ok := self fileIn:packageFile lazy:loadLazy silent:beSilent)
+                            ifFalse:[
+                                alternativeClassFileName notNil ifTrue:[
+                                    packageFile := self getPackageFileName:(packageDir , '/classes/' , alternativeClassFileName , '.cls').
+                                    packageFile isNil ifTrue:[
+                                        packageFile := (packageDir , '/classes/' , alternativeClassFileName , '.cls').
+                                    ].
+                                    ok := self fileIn:packageFile lazy:loadLazy silent:beSilent
+                                ]
+                            ].
+
+                            zarFn := self getPackageFileName:(packageDir , '/classes.zip').
+                            zarFn notNil ifTrue:[
+                                zar := ZipArchive oldFileNamed:zarFn.
+                                zar notNil ifTrue:[
+                                    entry := zar extract:(classFileName , '.cls').
+                                    (entry isNil and:[alternativeClassFileName notNil]) ifTrue:[
+                                        entry := zar extract:(alternativeClassFileName , '.cls').
+                                    ].
+                                    entry notNil ifTrue:[
+                                        bos := BinaryObjectStorage onOld:(entry asByteArray readStream).
+                                        bos next.
+                                        bos close.
+                                        ok := true
+                                    ].
+                                ]
+                            ]
+                        ]
+                    ].
+
+                    "
+                     if that did not work, look for an st-source file ...
+                    "
+                    ok ifFalse:[
+                        filenameToSet := classFileName , '.st'.
+                        (ok := self fileIn:filenameToSet lazy:loadLazy silent:beSilent)
+                        ifFalse:[
+                            alternativeClassFileName notNil ifTrue:[
+                                filenameToSet := alternativeClassFileName , '.st'.
+                                ok := self fileIn:filenameToSet lazy:loadLazy silent:beSilent
+                            ].
+                            ok ifFalse:[
+                                "
+                                 ... and in the standard source-directory
+                                "
+                                filenameToSet := 'source/' , classFileName , '.st'.
+                                (ok := self fileIn:filenameToSet lazy:loadLazy silent:beSilent)
+                                ifFalse:[
+                                    alternativeClassFileName notNil ifTrue:[
+                                        filenameToSet := 'source/' , alternativeClassFileName , '.st'.
+                                        ok := self fileIn:filenameToSet lazy:loadLazy silent:beSilent
+                                    ]
+                                ]
+                            ]
+                        ].
+                        "
+                         if that did not work, and the classes package is known,
+                         look for an st-source file
+                         in a package subdir of the source-directory ...
+                        "
+                        ok ifFalse:[
+                            packageDir notNil ifTrue:[
+                                packageFile := self getPackageFileName:(packageDir , '/source/' , classFileName , '.st').
+                                packageFile isNil ifTrue:[
+                                    packageFile := (packageDir , '/source/' , classFileName , '.st').
+                                ].
+                                filenameToSet := packageFile.
+                                (ok := self fileIn:packageFile lazy:loadLazy silent:beSilent)
+                                ifFalse:[
+                                    alternativeClassFileName notNil ifTrue:[
+                                        packageFile := self getPackageFileName:(packageDir , '/source/' , alternativeClassFileName , '.st').
+                                        packageFile isNil ifTrue:[
+                                            packageFile := (packageDir , '/source/' , alternativeClassFileName , '.st').
+                                        ].
+                                        filenameToSet := packageFile.
+                                        ok := self fileIn:packageFile lazy:loadLazy silent:beSilent
+                                    ].
+                                    ok ifFalse:[
+                                        packageFile := self getPackageFileName:(packageDir , '/' , classFileName , '.st').
+                                        packageFile isNil ifTrue:[
+                                            packageFile := (packageDir , '/' , classFileName , '.st').
+                                        ].
+                                        filenameToSet := packageFile.
+                                        (ok := self fileIn:packageFile lazy:loadLazy silent:beSilent)
+                                        ifFalse:[
+                                            alternativeClassFileName notNil ifTrue:[
+                                                packageFile := self getPackageFileName:(packageDir , '/' , alternativeClassFileName , '.st').
+                                                packageFile isNil ifTrue:[
+                                                    packageFile := (packageDir , '/' , alternativeClassFileName , '.st').
+                                                ].
+                                                filenameToSet := packageFile.
+                                                ok := self fileIn:packageFile lazy:loadLazy silent:beSilent
+                                            ].
+                                            ok ifFalse:[
+                                                "
+                                                 ... and in the standard source-directory
+                                                "
+                                                filenameToSet := 'source/' , packageDir , '/' , classFileName , '.st'.
+                                                (ok := self fileIn:filenameToSet lazy:loadLazy silent:beSilent)
+                                                ifFalse:[
+                                                    alternativeClassFileName notNil ifTrue:[
+                                                        filenameToSet := 'source/' , packageDir , '/' , alternativeClassFileName , '.st'.
+                                                        ok := self fileIn:filenameToSet lazy:loadLazy silent:beSilent
+                                                    ]
+                                                ]
+                                            ]
+                                        ].
+                                    ].
+                                ].
+                            ]
+                        ].
+                        "
+                         if that did not work, and the classes package is known,
+                         look for a zipArchive containing a class entry.
+                        "
+                        ok ifFalse:[
+                            packageDir notNil ifTrue:[
+                                zarFn := self getPackageFileName:(packageDir , '/source.zip').
+                                zarFn isNil ifTrue:[
+                                    zarFn := packageDir asFilename withSuffix:'zip'.
+                                    zarFn := self getSourceFileName:zarFn.
+                                ].
+                                zarFn notNil ifTrue:[
+                                    zar := ZipArchive oldFileNamed:zarFn.
+                                    zar notNil ifTrue:[
+                                        entry := zar extract:(classFileName , '.st').
+                                        (entry isNil and:[alternativeClassFileName notNil]) ifTrue:[
+                                            entry := zar extract:(alternativeClassFileName , '.st').
+                                        ].
+                                        entry notNil ifTrue:[
+                                            filenameToSet := zarFn.
+                                            ok := self
+                                                    fileInStream:(entry asString readStream)
+                                                    lazy:loadLazy
+                                                    silent:beSilent
+                                                    logged:false
+                                                    addPath:nil
+                                        ].
+                                    ]
+                                ]
+                            ]
+                        ].
+
+                        "
+                         if that did not work,
+                         look for a zipArchive containing a class entry.
+                        "
+                        ok ifFalse:[
+                            zarFn := self getSourceFileName:'source.zip'.
+                            zarFn notNil ifTrue:[
+                                zar := ZipArchive oldFileNamed:zarFn.
+                                zar notNil ifTrue:[
+                                    entry := zar extract:(zarFn := classFileName , '.st').
+                                    (entry isNil and:[alternativeClassFileName notNil]) ifTrue:[
+                                        entry := zar extract:(zarFn := alternativeClassFileName , '.st').
+                                    ].
+                                    entry notNil ifTrue:[
+                                        filenameToSet := zarFn.
+                                        ok := self
+                                                fileInStream:(entry asString readStream)
+                                                lazy:loadLazy
+                                                silent:beSilent
+                                                logged:false
+                                                addPath:nil
+                                    ].
+                                ]
+                            ]
+                        ].
+                        ok ifFalse:[
+                            "
+                             if there is a sourceCodeManager, ask it for the classes sourceCode
+                            "
+                            (mgr := Smalltalk at:#SourceCodeManager) notNil ifTrue:[
+                                inStream := mgr getMostRecentSourceStreamForClassNamed:aClassName.
+                                inStream notNil ifTrue:[
+                                    filenameToSet := nil.
+                                    ok := self fileInStream:inStream lazy:loadLazy silent:beSilent logged:false addPath:nil.
+                                ]
+                            ].
+                        ].
+                    ].
+                ]
+            ].
+        ] ensure:[
+            Compiler compileLazy:wasLazy.
+            wasSilent notNil ifTrue:[
+                self silentLoading:wasSilent
+            ]
+        ].
     ].
 
     ok ifTrue:[
-	newClass := self at:(aClassName asSymbol).
-	newClass notNil ifTrue:[
-	    "set the classes name - but do not change if already set"
-	    filenameToSet notNil ifTrue:[
-		newClass getClassFilename isNil ifTrue:[
-		    newClass setClassFilename:(filenameToSet asFilename baseName)
-		].
-	    ].
-
-	    doInit ifTrue:[
-		newClass initialize
-	    ]
-	]
+        newClass := self at:(aClassName asSymbol).
+        newClass notNil ifTrue:[
+            "set the classes name - but do not change if already set"
+            filenameToSet notNil ifTrue:[
+                newClass getClassFilename isNil ifTrue:[
+                    newClass setClassFilename:(filenameToSet asFilename baseName)
+                ].
+            ].
+
+            doInit ifTrue:[
+                newClass initialize
+            ]
+        ]
     ].
 
     ^ newClass
@@ -4872,8 +4884,8 @@
      and load it. This install all of its contained classes.
      Return true if ok, false if not.
      Notice: the argument may not have an extension (by purpose);
-	     the sharedLib extension (.dll / .so / .sl) is added here, to
-	     make the caller independent of the underlying operatingSystem."
+             the sharedLib extension (.dll / .so / .sl) is added here, to
+             make the caller independent of the underlying operatingSystem."
 
     |path fn|
 
@@ -4884,7 +4896,7 @@
 
     path := self getBinaryFileName:fn.
     path isNil ifTrue:[
-	path := self getSystemFileName:fn.
+        path := self getSystemFileName:fn.
     ].
     path isNil ifTrue:[^ false].
 
@@ -4903,8 +4915,8 @@
      and load it. This installs all of its contained classes.
      Return true if ok, false if not.
      Notice: the argument may not have an extension (by purpose);
-	     the sharedLib extension (.dll / .so / .sl) is added here, to
-	     make the caller independent of the underlying operatingSystem."
+             the sharedLib extension (.dll / .so / .sl) is added here, to
+             make the caller independent of the underlying operatingSystem."
 
     |path baseName handle|
 
@@ -4912,9 +4924,9 @@
 
     baseName := aClassLibraryName asFilename withSuffix:(ObjectFileLoader sharedLibrarySuffix).
     baseName exists ifTrue:[
-	"/ load local file first...
-	handle := (ObjectFileLoader loadObjectFile:baseName).
-	handle notNil ifTrue:[^ true].
+        "/ load local file first...
+        handle := (ObjectFileLoader loadObjectFile:baseName).
+        handle notNil ifTrue:[^ true].
     ].
 
     path := self getPackageDirectoryForPackage:packageID.
@@ -4958,39 +4970,39 @@
 
     encoding := CharacterEncoder guessEncodingOfStream:inStream.
     encoding notNil ifTrue:[
-	decoder := CharacterEncoder encoderFor:encoding.
-	inStream := EncodedStream stream:inStream encoder:decoder.
-	inStream skipEncodingChunk.
+        decoder := CharacterEncoder encoderFor:encoding.
+        inStream := EncodedStream stream:inStream encoder:decoder.
+        inStream skipEncodingChunk.
     ].
 
     lazy notNil ifTrue:[wasLazy := Compiler compileLazy:lazy].
     silent notNil ifTrue:[wasSilent := self silentLoading:silent].
     morePath notNil ifTrue:[
-	oldSystemPath := SystemPath copy.
-	SystemPath addFirst:morePath.
-	oldRealPath := RealSystemPath.
-	RealSystemPath := nil.
+        oldSystemPath := SystemPath copy.
+        SystemPath addFirst:morePath.
+        oldRealPath := RealSystemPath.
+        RealSystemPath := nil.
     ].
     [
-	(Class updateChangeFileQuerySignal , Class updateChangeListQuerySignal) answer:logged do:[
-	    inStream fileIn.
-	]
+        (Class updateChangeFileQuerySignal , Class updateChangeListQuerySignal) answer:logged do:[
+            inStream fileIn.
+        ]
     ] ensure:[
-	morePath notNil ifTrue:[
-	    "take care, someone could have changed SystemPath during fileIn!!"
-	    (SystemPath copyFrom:2) = oldSystemPath ifTrue:[
-		SystemPath := oldSystemPath.
-		RealSystemPath := oldRealPath.
-	    ] ifFalse:[
-		(oldSystemPath includes:morePath) ifFalse:[
-		    SystemPath remove:morePath ifAbsent:[].
-		].
-		RealSystemPath := nil.
-	    ].
-	].
-	lazy notNil ifTrue:[Compiler compileLazy:wasLazy].
-	silent notNil ifTrue:[self silentLoading:wasSilent].
-	inStream close
+        morePath notNil ifTrue:[
+            "take care, someone could have changed SystemPath during fileIn!!"
+            (SystemPath copyFrom:2) = oldSystemPath ifTrue:[
+                SystemPath := oldSystemPath.
+                RealSystemPath := oldRealPath.
+            ] ifFalse:[
+                (oldSystemPath includes:morePath) ifFalse:[
+                    SystemPath remove:morePath ifAbsent:[].
+                ].
+                RealSystemPath := nil.
+            ].
+        ].
+        lazy notNil ifTrue:[Compiler compileLazy:wasLazy].
+        silent notNil ifTrue:[self silentLoading:wasSilent].
+        inStream close
     ].
     ^ true
 
@@ -5005,14 +5017,14 @@
     "return true, if a particular class library is already loaded"
 
     ObjectMemory
-	binaryModuleInfo
-	    do:[:entry |
-		   entry type == #classLibrary ifTrue:[
-		       entry libraryName = name ifTrue:[
-			  ^ true        "/ already loaded
-		       ]
-		   ].
-	       ].
+        binaryModuleInfo
+            do:[:entry |
+                   entry type == #classLibrary ifTrue:[
+                       entry libraryName = name ifTrue:[
+                          ^ true        "/ already loaded
+                       ]
+                   ].
+               ].
 
     ^ false
 
@@ -5053,8 +5065,8 @@
 
     retVal := false.
     (SignalSet with:AbortOperationRequest with:TerminateProcessRequest)
-	handle:[:ex | ex return ]
-	do:[ retVal := self fileIn:aFileName ].
+        handle:[:ex | ex return ]
+        do:[ retVal := self fileIn:aFileName ].
     ^ retVal
 !
 
@@ -5066,9 +5078,9 @@
 
     wasSilent := self silentLoading:true.
     [
-	self fileIn:aFilename
+        self fileIn:aFilename
     ] ensure:[
-	self silentLoading:wasSilent
+        self silentLoading:wasSilent
     ]
 ! !
 
@@ -5084,7 +5096,7 @@
 
     aString := self getBitmapFileName:aFileName.
     aString notNil ifTrue:[
-	^ aString asFilename readStreamOrNil
+        ^ aString asFilename readStreamOrNil
     ].
     ^ nil
 !
@@ -5126,9 +5138,9 @@
     |fn|
 
     (aFileName asFilename hasSuffix:'st') ifTrue:[
-	fn := aFileName copyWithoutLast:3
+        fn := aFileName copyWithoutLast:3
     ] ifFalse:[
-	fn := aFileName
+        fn := aFileName
     ].
     ^ self filenameAbbreviations keyAtEqualValue:fn ifAbsent:[fn].
 
@@ -5147,11 +5159,11 @@
      return a collection of pathes which include that directory."
 
     ^ self realSystemPath select:[:dirName |
-	|fullPath|
-
-	fullPath := dirName asFilename construct:aDirectoryName.
-	"/ fullPath exists and:[fullPath isDirectory and:[fullPath isReadable]]
-	fullPath isDirectory and:[fullPath isReadable]
+        |fullPath|
+
+        fullPath := dirName asFilename construct:aDirectoryName.
+        "/ fullPath exists and:[fullPath isDirectory and:[fullPath isReadable]]
+        fullPath isDirectory and:[fullPath isReadable]
     ].
 !
 
@@ -5165,7 +5177,7 @@
 
     aString := self getFileInFileName:aFileName.
     aString notNil ifTrue:[
-	^ aString asFilename readStreamOrNil
+        ^ aString asFilename readStreamOrNil
     ].
     ^ nil
 !
@@ -5176,34 +5188,34 @@
     |cls nonMetaclass nm nm1 nm2|
 
     aClassOrClassName isBehavior ifTrue:[
-	nonMetaclass := aClassOrClassName theNonMetaclass.
-	nm := nonMetaclass getClassFilename.
-	nm notNil ifTrue:[^ nm asFilename withoutSuffix baseName].
-	nm1 := nonMetaclass name.
-	nm2 := nonMetaclass nameWithoutPrefix.
+        nonMetaclass := aClassOrClassName theNonMetaclass.
+        nm := nonMetaclass getClassFilename.
+        nm notNil ifTrue:[^ nm asFilename withoutSuffix baseName].
+        nm1 := nonMetaclass name.
+        nm2 := nonMetaclass nameWithoutPrefix.
     ] ifFalse:[
-	cls := Smalltalk classNamed:aClassOrClassName.
-	cls notNil ifTrue:[
-	    nonMetaclass := cls theNonMetaclass.
-	    nm := nonMetaclass getClassFilename.
-	    nm notNil ifTrue:[^ nm asFilename withoutSuffix baseName].
-	    nm1 := nonMetaclass name.
-	    nm2 := nonMetaclass nameWithoutPrefix.
-	] ifFalse:[
-	    nm1 := aClassOrClassName.
-	    nm2 := (aClassOrClassName copyFrom:(aClassOrClassName lastIndexOf:$:)+1).
-	].
+        cls := Smalltalk classNamed:aClassOrClassName.
+        cls notNil ifTrue:[
+            nonMetaclass := cls theNonMetaclass.
+            nm := nonMetaclass getClassFilename.
+            nm notNil ifTrue:[^ nm asFilename withoutSuffix baseName].
+            nm1 := nonMetaclass name.
+            nm2 := nonMetaclass nameWithoutPrefix.
+        ] ifFalse:[
+            nm1 := aClassOrClassName.
+            nm2 := (aClassOrClassName copyFrom:(aClassOrClassName lastIndexOf:$:)+1).
+        ].
     ].
     nm1 := nm1 asSymbol.
     nm2 := nm2 asSymbol.
 
     CachedAbbreviations notNil ifTrue:[
-	(CachedAbbreviations includesKey:nm1) ifTrue:[
-	    ^ (CachedAbbreviations at:nm1) asFilename baseName
-	].
-	(CachedAbbreviations includesKey:nm2) ifTrue:[
-	    ^ (CachedAbbreviations at:nm2) asFilename baseName
-	].
+        (CachedAbbreviations includesKey:nm1) ifTrue:[
+            ^ (CachedAbbreviations at:nm1) asFilename baseName
+        ].
+        (CachedAbbreviations includesKey:nm2) ifTrue:[
+            ^ (CachedAbbreviations at:nm2) asFilename baseName
+        ].
     ].
     ^ nm1 copyReplaceAll:$: with:$_
 
@@ -5228,7 +5240,7 @@
      to 14 chars)"
 
     CachedAbbreviations isNil ifTrue:[
-	self readAbbreviations
+        self readAbbreviations
     ].
     ^ CachedAbbreviations
 
@@ -5265,7 +5277,7 @@
      return the absolute filename or nil if none is found."
 
     BinaryPath isNil ifTrue:[
-	BinaryPath := self constructPathFor:BinaryDirName
+        BinaryPath := self constructPathFor:BinaryDirName
     ].
 
     ^ self searchPath:BinaryPath for:aFileName in:BinaryDirName
@@ -5366,7 +5378,7 @@
      return the absolute filename or nil if none is found."
 
     FileInPath isNil ifTrue:[
-	FileInPath := self constructPathFor:FileInDirName
+        FileInPath := self constructPathFor:FileInDirName
     ].
 
     ^ self searchPath:FileInPath for:aFileName in:FileInDirName
@@ -5384,27 +5396,27 @@
     packageSubDirectory := aPackageID asPackageId directory.
 
     checkForPackageDirectory :=
-	[:moduleDir |
-	    |packageDir|
-
-	    (moduleDir exists and:[moduleDir isDirectory]) ifTrue:[
-		packageDir := moduleDir construct:packageSubDirectory.
-		(packageDir exists and:[packageDir isDirectory]) ifTrue:[
-		    ^ packageDir
-		]
-	    ].
-	].
+        [:moduleDir |
+            |packageDir|
+
+            (moduleDir exists and:[moduleDir isDirectory]) ifTrue:[
+                packageDir := moduleDir construct:packageSubDirectory.
+                (packageDir exists and:[packageDir isDirectory]) ifTrue:[
+                    ^ packageDir
+                ]
+            ].
+        ].
 
     self packagePath do:[:aPath |
-	|moduleDir|
-
-	moduleDir := aPath asFilename construct:module.
-	checkForPackageDirectory value:moduleDir.
+        |moduleDir|
+
+        moduleDir := aPath asFilename construct:module.
+        checkForPackageDirectory value:moduleDir.
     ].
 
     "/ not found - special case for the stx package...
     module = 'stx' ifTrue:[
-	checkForPackageDirectory value:('../../' asFilename).
+        checkForPackageDirectory value:('../../' asFilename).
     ].
 
     ^ nil
@@ -5428,22 +5440,22 @@
     "/ search along packagePath ...
     f := self searchPath:self packagePath for:aFileName in:nil.
     f isNil ifTrue:[
-	"/ search under packages-directory along systemPath ...
-	f := self searchPath:self realSystemPath for:aFileName in:PackageDirName.
-	"/ kludge - allow for stx-directory to be named differently
-	f isNil ifTrue:[
-	    (aFileName startsWith:'stx') ifTrue:[
-		(aFileName startsWith:'stx' , Filename separator) ifTrue:[
-		    f := '../..' asFilename construct:(aFileName copyFrom:5).
-		    f exists ifTrue:[
-			^ f pathName
-		    ].
-		]
-	    ].
-	].
+        "/ search under packages-directory along systemPath ...
+        f := self searchPath:self realSystemPath for:aFileName in:PackageDirName.
+        "/ kludge - allow for stx-directory to be named differently
+        f isNil ifTrue:[
+            (aFileName startsWith:'stx') ifTrue:[
+                (aFileName startsWith:'stx' , Filename separator) ifTrue:[
+                    f := '../..' asFilename construct:(aFileName copyFrom:5).
+                    f exists ifTrue:[
+                        ^ f pathName
+                    ].
+                ]
+            ].
+        ].
     ].
     (f notNil and:[(f := f asFilename) exists]) ifTrue:[
-	^ f pathName
+        ^ f pathName
     ].
     ^ nil
 
@@ -5476,7 +5488,7 @@
     |pkgOrNil|
 
     aClassOrNil notNil ifTrue:[
-	pkgOrNil := aClassOrNil package.
+        pkgOrNil := aClassOrNil package.
     ].
     ^ self getResourceFileName:aFileName forPackage:pkgOrNil.
 
@@ -5491,56 +5503,56 @@
      and in a packages directory.
      Return the absolute filename or nil if none is found.
      Search order is:
-	resources/<pkg>/file
-	<pkg>/resources/file
+        resources/<pkg>/file
+        <pkg>/resources/file
     "
 
     |pF f dir packageDir|
 
     ((f := aFileName asString) startsWith:'resources/') ifTrue:[
-	f := aFileName copyFrom:('resources/' size + 1).
+        f := aFileName copyFrom:('resources/' size + 1).
     ].
 
     aPackageIDOrNil isNil ifTrue:[
-	"/ this will be an error in the future
+        "/ this will be an error in the future
 "/        'Smalltalk [warning]: resource file access without package: ' infoPrint. aFileName infoPrintCR.
 "/        self halt.
 
-	pF := self searchPath:(self realSystemPath) for:aFileName in:('resources').
-	pF notNil ifTrue:[
-	    ^ pF.
-	].
-	f ~= aFileName ifTrue:[
-	    pF := self searchPath:(self realSystemPath) for:f in:('resources').
-	    pF notNil ifTrue:[
-		^ pF.
-	    ].
-	].
-	^ nil
+        pF := self searchPath:(self realSystemPath) for:aFileName in:('resources').
+        pF notNil ifTrue:[
+            ^ pF.
+        ].
+        f ~= aFileName ifTrue:[
+            pF := self searchPath:(self realSystemPath) for:f in:('resources').
+            pF notNil ifTrue:[
+                ^ pF.
+            ].
+        ].
+        ^ nil
     ].
 
     packageDir := aPackageIDOrNil copyReplaceAll:$: with:$/.
 
     pF := self searchPath:(self realSystemPath) for:aFileName in:('resources/',packageDir).
     pF notNil ifTrue:[
-	^ pF.
+        ^ pF.
     ].
 
     dir := self projectDirectoryForPackage:aPackageIDOrNil.
     dir notNil ifTrue:[
-	pF := (dir asFilename construct:'resources') constructString:f.
-	pF asFilename exists ifTrue:[
-	    ^ pF.
-	].
-	pF := (dir asFilename construct:'styles') constructString:f.
-	pF asFilename exists ifTrue:[
-	    ^ pF.
-	].
-	"resolve something like: 'ASN/definition.asn1'"
-	pF := dir asFilename constructString:f.
-	pF asFilename exists ifTrue:[
-	    ^ pF.
-	].
+        pF := (dir asFilename construct:'resources') constructString:f.
+        pF asFilename exists ifTrue:[
+            ^ pF.
+        ].
+        pF := (dir asFilename construct:'styles') constructString:f.
+        pF asFilename exists ifTrue:[
+            ^ pF.
+        ].
+        "resolve something like: 'ASN/definition.asn1'"
+        pF := dir asFilename constructString:f.
+        pF asFilename exists ifTrue:[
+            ^ pF.
+        ].
     ].
     ^ nil
 
@@ -5564,16 +5576,16 @@
     |f|
 
     SourcePath isNil ifTrue:[
-	SourcePath := self constructPathFor:SourceDirName
+        SourcePath := self constructPathFor:SourceDirName
     ].
 
     "/ first, try a source subdir along the path.
     SourcePath notNil ifTrue:[
-	f := self searchPath:SourcePath for:aFileName in:SourceDirName.
+        f := self searchPath:SourcePath for:aFileName in:SourceDirName.
     ].
     f isNil ifTrue:[
-	"/ then, try it itself along the path.
-	f := self searchPath:self realSystemPath for:aFileName in:nil
+        "/ then, try it itself along the path.
+        f := self searchPath:self realSystemPath for:aFileName in:nil
     ].
     ^ f
 
@@ -5600,23 +5612,23 @@
     fn := aFileNameOrString asFilename.
     nameString := fn name.
     fn isAbsolute ifTrue:[
-	"dont use path for absolute file names"
-
-	^ nameString
+        "dont use path for absolute file names"
+
+        ^ nameString
     ].
 
     self realSystemPath do:[:dirName |
-	|realName|
-
-	realName := dirName asFilename construct:nameString.
-	"/
-	"/ here, we also return true if its a directory
-	"/ (Even if unreadable).
-	"/ It could be that the file itself is still readable.
-	"/
-	(realName isDirectory or:[realName isReadable]) ifTrue: [
-	    ^ realName name
-	]
+        |realName|
+
+        realName := dirName asFilename construct:nameString.
+        "/
+        "/ here, we also return true if its a directory
+        "/ (Even if unreadable).
+        "/ It could be that the file itself is still readable.
+        "/
+        (realName isDirectory or:[realName isReadable]) ifTrue: [
+            ^ realName name
+        ]
     ].
     ^ nil
 
@@ -5642,10 +5654,10 @@
     classPackage := aClass package.
     img := self imageFromFileNamed:aFileName inPackage:classPackage.
     img isNil ifTrue:[
-	"/ try under the goodies package ...
-	classPackage ~= 'stx:goodies' ifTrue:[
-	    img := self imageFromFileNamed:aFileName inPackage:'stx:goodies'.
-	]
+        "/ try under the goodies package ...
+        classPackage ~= 'stx:goodies' ifTrue:[
+            img := self imageFromFileNamed:aFileName inPackage:'stx:goodies'.
+        ]
     ].
     ^ img
 
@@ -5660,16 +5672,16 @@
      then in the package directory if existing.
      Return an image or nil.
      Search order is:
-	bitmaps/<pkg>/file
-	resources/<pkg>/bitmaps/file
-	<pkg>/bitmaps/file
+        bitmaps/<pkg>/file
+        resources/<pkg>/bitmaps/file
+        <pkg>/bitmaps/file
     "
 
     |path|
 
     path := self getBitmapFileName:aFileName forPackage:aPackage.
     path notNil ifTrue:[
-	^ Image fromFile:path.
+        ^ Image fromFile:path.
     ].
     ^ nil
 
@@ -5701,9 +5713,9 @@
     |aStream line words n aClassName|
 
     aClassOrClassName isBehavior ifTrue:[
-	aClassName := aClassOrClassName name
+        aClassName := aClassOrClassName name
     ] ifFalse:[
-	aClassName := aClassOrClassName
+        aClassName := aClassOrClassName
     ].
     aClassName := aClassName asString.
 
@@ -5711,26 +5723,26 @@
     with:#(2)                   "/ column
     do:[:fileName :col |
 
-	aStream := self systemFileStreamFor:fileName.
-	aStream notNil ifTrue:[
-	    [aStream atEnd] whileFalse:[
-		line := aStream nextLine.
-		line notNil ifTrue:[
-		    (line startsWith:'#') ifFalse:[
-			words := line asCollectionOfWords.
-			(n := words size) > 1 ifTrue:[
-			    (words at:1) = aClassName ifTrue:[
-				n >= col ifTrue:[
-				    aStream close.
-				    ^ (words at:col) withoutSeparators
-				]
-			    ]
-			]
-		    ]
-		]
-	    ].
-	    aStream close
-	].
+        aStream := self systemFileStreamFor:fileName.
+        aStream notNil ifTrue:[
+            [aStream atEnd] whileFalse:[
+                line := aStream nextLine.
+                line notNil ifTrue:[
+                    (line startsWith:'#') ifFalse:[
+                        words := line asCollectionOfWords.
+                        (n := words size) > 1 ifTrue:[
+                            (words at:1) = aClassName ifTrue:[
+                                n >= col ifTrue:[
+                                    aStream close.
+                                    ^ (words at:col) withoutSeparators
+                                ]
+                            ]
+                        ]
+                    ]
+                ]
+            ].
+            aStream close
+        ].
     ].
 
     ^ nil
@@ -5799,10 +5811,10 @@
     "/ in the directory, from which the project was loaded
     prj := Project projectWithId:aPackage.
     prj notNil ifTrue:[
-	prjDir := prj directory.
+        prjDir := prj directory.
     ].
     (prjDir notNil and:[prjDir asFilename exists]) ifFalse:[
-	prjDir := Smalltalk getPackageFileName:(aPackage copyReplaceAll:$: with:$/).
+        prjDir := Smalltalk getPackageFileName:(aPackage copyReplaceAll:$: with:$/).
     ].
     ^ prjDir
 
@@ -5876,8 +5888,8 @@
     "read classname to filename mappings from aStream.
      sigh - all for those poor sys5.3 or MSDOS people with short filenames ..."
 
-    self 
-        withAbbreviationsFromStream:aStream 
+    self
+        withAbbreviationsFromStream:aStream
         do:[:className :abbrev :pkg |
             self setFilename:abbrev forClass:className package:pkg.
         ].
@@ -5892,41 +5904,41 @@
     |nP|
 
     RealSystemPath isNil ifTrue:[
-	OperatingSystem isVMSlike ifTrue:[
-	    "/ temporary kludge: since we cannot currently
-	    "/ check for existance of a name like 'volume:',
-	    "/ leave those in the Path without a check.
-	    RealSystemPath := SystemPath select:[:dirName |
-		|f|
-
-		f := dirName asFilename.
-		f isVolumeOnly ifTrue:[
-		    true
-		] ifFalse:[
-		    (f isDirectory) and:[f isReadable]
-		]
-	    ]
-	] ifFalse:[
-	    RealSystemPath := SystemPath select:[:dirName |
-		|f|
-
-		f := dirName asFilename.
-		(f isDirectory) and:[f isReadable]
-	    ].
-	    RealSystemPath := RealSystemPath collect:[:dirName |
-		    |f|
-
-		    f := dirName asFilename pathName.
-	    ].
-	    "/ remove duplicates (but keep order)
-	    nP := OrderedCollection new.
-	    RealSystemPath do:[:p |
-		(nP includes:p) ifFalse:[
-		    nP add:p
-		]
-	    ].
-	    RealSystemPath := nP.
-	].
+        OperatingSystem isVMSlike ifTrue:[
+            "/ temporary kludge: since we cannot currently
+            "/ check for existance of a name like 'volume:',
+            "/ leave those in the Path without a check.
+            RealSystemPath := SystemPath select:[:dirName |
+                |f|
+
+                f := dirName asFilename.
+                f isVolumeOnly ifTrue:[
+                    true
+                ] ifFalse:[
+                    (f isDirectory) and:[f isReadable]
+                ]
+            ]
+        ] ifFalse:[
+            RealSystemPath := SystemPath select:[:dirName |
+                |f|
+
+                f := dirName asFilename.
+                (f isDirectory) and:[f isReadable]
+            ].
+            RealSystemPath := RealSystemPath collect:[:dirName |
+                    |f|
+
+                    f := dirName asFilename pathName.
+            ].
+            "/ remove duplicates (but keep order)
+            nP := OrderedCollection new.
+            RealSystemPath do:[:p |
+                (nP includes:p) ifFalse:[
+                    nP add:p
+                ]
+            ].
+            RealSystemPath := nP.
+        ].
     ].
     ^ RealSystemPath
 !
@@ -5942,40 +5954,40 @@
 
     maxLevels == 0 ifTrue:[
 "/        'Smalltalk [warning]: max directory nesting reached.' infoPrintCR.
-	^ self
+        ^ self
     ].
 
     dir := aDirectory asFilename.
     dir exists ifFalse:[^ self].
 
     [
-	abbrevStream := (dir construct:'abbrev.stc') asFilename readStream.
-	self readAbbreviationsFromStream:abbrevStream.
-	abbrevStream close.
+        abbrevStream := (dir construct:'abbrev.stc') asFilename readStream.
+        self readAbbreviationsFromStream:abbrevStream.
+        abbrevStream close.
     ] on:FileStream openErrorSignal do:[:ex| "ignore this file"].
 
     [
-	directoryContents := dir directoryContents.
+        directoryContents := dir directoryContents.
     ] on:FileStream openErrorSignal do:[:ex|
-	"non-accessable directory: we are done"
-	^ self
+        "non-accessable directory: we are done"
+        ^ self
     ].
 
     directoryContents do:[:aFilename |
-	|f|
-
-	(#(
-	    'doc'
-	    'CVS'
-	    'bitmaps'
-	    'resources'
-	    'source'
-	) includes:aFilename) ifFalse:[
-	    f := dir construct:aFilename.
-	    f isDirectory ifTrue:[
-		self recursiveReadAllAbbreviationsFrom:f maxLevels:maxLevels-1
-	    ]
-	].
+        |f|
+
+        (#(
+            'doc'
+            'CVS'
+            'bitmaps'
+            'resources'
+            'source'
+        ) includes:aFilename) ifFalse:[
+            f := dir construct:aFilename.
+            f isDirectory ifTrue:[
+                self recursiveReadAllAbbreviationsFrom:f maxLevels:maxLevels-1
+            ]
+        ].
     ].
 !
 
@@ -6025,7 +6037,7 @@
 
     aString := self getResourceFileName:aFileName forClass:aClassOrNil.
     aString notNil ifTrue:[
-	^ aString asFilename readStreamOrNil
+        ^ aString asFilename readStreamOrNil
     ].
     ^ nil
 !
@@ -6074,55 +6086,55 @@
     |classNameSymbol oldAbbrev oldPath newPath cls abbrevs|
 
     CachedAbbreviations isNil ifTrue:[
-	CachedAbbreviations := IdentityDictionary new.
+        CachedAbbreviations := IdentityDictionary new.
     ].
 
     abbrevs := CachedAbbreviations.
     aClassNameString ~= aFileNameString ifTrue:[
-	classNameSymbol := aClassNameString asSymbol.
-	oldAbbrev := abbrevs at:classNameSymbol ifAbsent:nil.
-	oldAbbrev notNil ifTrue:[
-	    oldAbbrev ~= aFileNameString ifTrue:[
-		oldAbbrev asFilename isAbsolute
-		    ifTrue:[ oldPath := oldAbbrev ]
-		    ifFalse:[ oldPath := (self projectDirectoryForPackage:aPackageNameString) asFilename constructString: oldAbbrev ].
-		aFileNameString asFilename isAbsolute
-		    ifTrue:[ newPath := aFileNameString ]
-		    ifFalse:[ newPath := (self projectDirectoryForPackage:aPackageNameString) asFilename constructString: aFileNameString ].
-
-		oldPath ~= newPath ifTrue:[
-		    StandAlone ifFalse:[
-			('Smalltalk [warning]: autoload path change for: ',aClassNameString,' in package ',aPackageNameString) infoPrintCR.
-			('Smalltalk [info]: old: ',oldPath) infoPrintCR.
-			('Smalltalk [info]: new: ',newPath) infoPrintCR.
-		    ]
-		]
-	    ].
-	    "overwrite old abbreviation with new one,
-	     to allow fixing of bad abbrev files"
-	].
-
-	cls := self classNamed:aFileNameString.
-	cls notNil ifTrue:[
-	    cls name ~= aClassNameString ifTrue:[
-		"/ ok, there is a class named after this abbrev ...
-		"/ this is only a conflict, if the other class has no
-		"/ abbreviation (or the same).
-		(abbrevs at:(cls name asSymbol) ifAbsent:cls name) = aFileNameString ifTrue:[
-		    cls isNameSpace ifFalse:[
-			aPackageNameString = cls package ifTrue:[
-			    StandAlone ifFalse:[
-				('Smalltalk [warning]: conflict for: ' , cls name ,
-				    ' in package ' , aPackageNameString) infoPrintCR.
-				('Smalltalk [warning]: (' , aClassNameString , ' -> ' , aFileNameString
-				    , ')') infoPrintCR
-			    ]
-			]
-		    ]
-		]
-	    ]
-	].
-	abbrevs at:classNameSymbol put:aFileNameString.
+        classNameSymbol := aClassNameString asSymbol.
+        oldAbbrev := abbrevs at:classNameSymbol ifAbsent:nil.
+        oldAbbrev notNil ifTrue:[
+            oldAbbrev ~= aFileNameString ifTrue:[
+                oldAbbrev asFilename isAbsolute
+                    ifTrue:[ oldPath := oldAbbrev ]
+                    ifFalse:[ oldPath := (self projectDirectoryForPackage:aPackageNameString) asFilename constructString: oldAbbrev ].
+                aFileNameString asFilename isAbsolute
+                    ifTrue:[ newPath := aFileNameString ]
+                    ifFalse:[ newPath := (self projectDirectoryForPackage:aPackageNameString) asFilename constructString: aFileNameString ].
+
+                oldPath ~= newPath ifTrue:[
+                    StandAlone ifFalse:[
+                        ('Smalltalk [warning]: autoload path change for: ',aClassNameString,' in package ',aPackageNameString) infoPrintCR.
+                        ('Smalltalk [info]: old: ',oldPath) infoPrintCR.
+                        ('Smalltalk [info]: new: ',newPath) infoPrintCR.
+                    ]
+                ]
+            ].
+            "overwrite old abbreviation with new one,
+             to allow fixing of bad abbrev files"
+        ].
+
+        cls := self classNamed:aFileNameString.
+        cls notNil ifTrue:[
+            cls name ~= aClassNameString ifTrue:[
+                "/ ok, there is a class named after this abbrev ...
+                "/ this is only a conflict, if the other class has no
+                "/ abbreviation (or the same).
+                (abbrevs at:(cls name asSymbol) ifAbsent:cls name) = aFileNameString ifTrue:[
+                    cls isNameSpace ifFalse:[
+                        aPackageNameString = cls package ifTrue:[
+                            StandAlone ifFalse:[
+                                ('Smalltalk [warning]: conflict for: ' , cls name ,
+                                    ' in package ' , aPackageNameString) infoPrintCR.
+                                ('Smalltalk [warning]: (' , aClassNameString , ' -> ' , aFileNameString
+                                    , ')') infoPrintCR
+                            ]
+                        ]
+                    ]
+                ]
+            ]
+        ].
+        abbrevs at:classNameSymbol put:aFileNameString.
     ]
 !
 
@@ -6137,9 +6149,9 @@
     |aStream line words n aClassName|
 
     aClassOrClassName isBehavior ifTrue:[
-	aClassName := aClassOrClassName name
+        aClassName := aClassOrClassName name
     ] ifFalse:[
-	aClassName := aClassOrClassName
+        aClassName := aClassOrClassName
     ].
     aClassName := aClassName asString.
 
@@ -6147,26 +6159,26 @@
     with:#(3 2)                   "/ column
     do:[:fileName :col |
 
-	aStream := self systemFileStreamFor:fileName.
-	aStream notNil ifTrue:[
-	    [aStream atEnd] whileFalse:[
-		line := aStream nextLine.
-		line notNil ifTrue:[
-		    (line startsWith:'#') ifFalse:[
-			words := line asCollectionOfWords.
-			(n := words size) > 1 ifTrue:[
-			    (words at:1) = aClassName ifTrue:[
-				n >= col ifTrue:[
-				    aStream close.
-				    ^ (words at:col) withoutSeparators
-				]
-			    ]
-			]
-		    ]
-		]
-	    ].
-	    aStream close
-	].
+        aStream := self systemFileStreamFor:fileName.
+        aStream notNil ifTrue:[
+            [aStream atEnd] whileFalse:[
+                line := aStream nextLine.
+                line notNil ifTrue:[
+                    (line startsWith:'#') ifFalse:[
+                        words := line asCollectionOfWords.
+                        (n := words size) > 1 ifTrue:[
+                            (words at:1) = aClassName ifTrue:[
+                                n >= col ifTrue:[
+                                    aStream close.
+                                    ^ (words at:col) withoutSeparators
+                                ]
+                            ]
+                        ]
+                    ]
+                ]
+            ].
+            aStream close
+        ].
     ].
 
     ^ nil
@@ -6192,7 +6204,7 @@
 
     aString := self getSourceFileName:aFileName.
     aString notNil ifTrue:[
-	^ aString asFilename readStreamOrNil
+        ^ aString asFilename readStreamOrNil
     ].
     ^ nil
 !
@@ -6206,7 +6218,7 @@
 
     aString := self getSystemFileName:aFileName.
     aString notNil ifTrue:[
-	^ aString asFilename readStreamOrNil
+        ^ aString asFilename readStreamOrNil
     ].
     ^ nil
 !
@@ -6299,10 +6311,10 @@
     packageDirName := self getPackageFileName:packageDirName.
 
     (packageDirName notNil and:[Class tryLocalSourceFirst]) ifTrue:[
-	(self loadExtensionsFromDirectory:packageDirName) ifTrue:[
-	    ^ true.
-	].
-	packageDirName := nil.  "do not try again"
+        (self loadExtensionsFromDirectory:packageDirName) ifTrue:[
+            ^ true.
+        ].
+        packageDirName := nil.  "do not try again"
     ].
 
     "
@@ -6310,24 +6322,24 @@
     "
     mgr := Smalltalk at:#SourceCodeManager.
     mgr notNil ifTrue:[
-	SourceCodeManagerError handle:[:ex |
-	] do:[
-	    inStream := mgr getMostRecentSourceStreamForFile:'extensions.st' inPackage:aPackageId.
-	].
-	inStream notNil ifTrue:[
-	    Class withoutUpdatingChangeSetDo:[
-		inStream fileIn.
-	    ].
-	    inStream close.
-	    SilentLoading ifFalse:[
-		Transcript showCR:('loaded extensions for ',aPackageId,' from repository').
-	    ].
-	    ^ true
-	]
+        SourceCodeManagerError handle:[:ex |
+        ] do:[
+            inStream := mgr getMostRecentSourceStreamForFile:'extensions.st' inPackage:aPackageId.
+        ].
+        inStream notNil ifTrue:[
+            Class withoutUpdatingChangeSetDo:[
+                inStream fileIn.
+            ].
+            inStream close.
+            SilentLoading ifFalse:[
+                Transcript showCR:('loaded extensions for ',aPackageId,' from repository').
+            ].
+            ^ true
+        ]
     ].
 
     packageDirName notNil ifTrue:[
-	^ self loadExtensionsFromDirectory:packageDirName
+        ^ self loadExtensionsFromDirectory:packageDirName
     ].
     ^ false
 
@@ -6341,13 +6353,13 @@
 
     f := packageDir construct:'extensions.st'.
     f exists ifTrue:[
-	Class withoutUpdatingChangeSetDo:[
-	    f fileIn.
-	].
-	SilentLoading ifFalse:[
-	    Transcript showCR:('loaded extensions: ' , f pathName).
-	].
-	^ true
+        Class withoutUpdatingChangeSetDo:[
+            f fileIn.
+        ].
+        SilentLoading ifFalse:[
+            Transcript showCR:('loaded extensions: ' , f pathName).
+        ].
+        ^ true
     ].
     ^ false
 !
@@ -6357,7 +6369,7 @@
      Experimental."
 
     (aPackageIdOrPackage isString) ifTrue:[
-	^ self loadPackageWithId:aPackageIdOrPackage asAutoloaded:false
+        ^ self loadPackageWithId:aPackageIdOrPackage asAutoloaded:false
     ].
     self shouldImplement.
 
@@ -6380,37 +6392,37 @@
     "/ solution: repeat twice, so that superclasses are present the second time
 
     Class packageQuerySignal answer:packageId asSymbol do:[
-	|any|
-
-	repeatCount := 0.
-	[
-	    repeatCount := repeatCount + 1.
-	    anyFail := false.
-	    aDirectory directoryContents do:[:file |
-		|fn|
-
-		fn := aDirectory construct:file.
-		(fn hasSuffix:'st') ifTrue:[
-		    Metaclass confirmationQuerySignal answer:false
-		    do:[
-			Error
-			    handle:[:ex |
-				anyFail := true
-			    ]
-			    do:[
-				(self fileIn:fn) ifFalse:[
-				    anyFail := true
-				] ifTrue:[
-				    any := true.
-				]
-			    ]
-		    ]
-		]
-	    ].
-	    any ifFalse:[
-		^ false "/ no file found
-	    ]
-	] doWhile:[anyFail and:[repeatCount<2]].
+        |any|
+
+        repeatCount := 0.
+        [
+            repeatCount := repeatCount + 1.
+            anyFail := false.
+            aDirectory directoryContents do:[:file |
+                |fn|
+
+                fn := aDirectory construct:file.
+                (fn hasSuffix:'st') ifTrue:[
+                    Metaclass confirmationQuerySignal answer:false
+                    do:[
+                        Error
+                            handle:[:ex |
+                                anyFail := true
+                            ]
+                            do:[
+                                (self fileIn:fn) ifFalse:[
+                                    anyFail := true
+                                ] ifTrue:[
+                                    any := true.
+                                ]
+                            ]
+                    ]
+                ]
+            ].
+            any ifFalse:[
+                ^ false "/ no file found
+            ]
+        ] doWhile:[anyFail and:[repeatCount<2]].
     ].
 
     new := (p := Project projectWithId:packageId) isNil.
@@ -6435,10 +6447,10 @@
     |p t new|
 
     (self fileIn:aFilename) ifFalse:[
-	(self fileInClassLibrary:aFilename) ifFalse:[
-	    self warn:'Failed to load the package ', packageId printString.
-	    ^ false.
-	]
+        (self fileInClassLibrary:aFilename) ifFalse:[
+            self warn:'Failed to load the package ', packageId printString.
+            ^ false.
+        ]
     ].
 
     new := (p := Project projectWithId:packageId) isNil.
@@ -6464,10 +6476,10 @@
 
     Metaclass confirmationQuerySignal answer:false
     do:[
-	(self fileIn:aFilename) ifFalse:[
-	    self warn:'Failed to load the package ', packageId printString.
-	    ^ false.
-	]
+        (self fileIn:aFilename) ifFalse:[
+            self warn:'Failed to load the package ', packageId printString.
+            ^ false.
+        ]
     ].
 
     new := (p := Project projectWithId:packageId) isNil.
@@ -6506,13 +6518,13 @@
     Smalltalk installAutoloadedClassesFrom:abbrevFile pathName.
 
     doLoadAsAutoloaded ifFalse:[
-	"/ force autoloading...
-	Smalltalk allClassesInPackage:aPackageId do:[:eachClass | eachClass autoload].
+        "/ force autoloading...
+        Smalltalk allClassesInPackage:aPackageId do:[:eachClass | eachClass autoload].
     ].
 
     self loadExtensionsFromDirectory:packageDir.
     SilentLoading ifFalse:[
-	Transcript showCR:('loaded package: ' , aPackageId , ' from abbrev file: ' , abbrevFile pathName).
+        Transcript showCR:('loaded package: ' , aPackageId , ' from abbrev file: ' , abbrevFile pathName).
     ].
     ^ true
 
@@ -6542,16 +6554,16 @@
 
     packageDir := self packageDirectoryForPackageId:aPackageId.
     packageDir isNil ifTrue:[
-	(aPackageId includes:$:) ifFalse:[
-	    "/ assume stx
-	    packageDir := self packageDirectoryForPackageId:('stx:',aPackageId).
-	].
+        (aPackageId includes:$:) ifFalse:[
+            "/ assume stx
+            packageDir := self packageDirectoryForPackageId:('stx:',aPackageId).
+        ].
     ].
 
     ^ self
-	loadPackageWithId:aPackageId
-	fromDirectory:packageDir
-	asAutoloaded:doLoadAsAutoloaded.
+        loadPackageWithId:aPackageId
+        fromDirectory:packageDir
+        asAutoloaded:doLoadAsAutoloaded.
 
     "
      Smalltalk loadPackageWithId:'stx:libbasic'
@@ -6735,7 +6747,7 @@
     ^ packageDir asFilename
 
     "
-     Smalltalk packageDirectoryForPackageId:'stx:libbasic'   
+     Smalltalk packageDirectoryForPackageId:'stx:libbasic'
      Smalltalk packageDirectoryForPackageId:'stx:goodies/persistency'
      Smalltalk packageDirectoryForPackageId:'exept:ctypes'
     "
@@ -6747,7 +6759,7 @@
     "remove all undeclared variables"
 
     (Smalltalk at:#Undeclared) do:[:eachKey |
-	Smalltalk removeKey:(self undeclaredPrefix , eachKey) asSymbol.
+        Smalltalk removeKey:(self undeclaredPrefix , eachKey) asSymbol.
     ].
     (Smalltalk at:#Undeclared) removeAll.
     Smalltalk removeKey:#Undeclared.
@@ -6834,7 +6846,7 @@
     exp = __MKUINT(__getExpirationTime());
 %}.
     exp == 0 ifTrue:[
-	^ nil
+        ^ nil
     ].
     ^ Timestamp new fromOSTime:(exp * 1000). "OSTime is ms since 1970"
 
@@ -6871,28 +6883,28 @@
 
     lang := Language.
     (lang == #de) ifTrue:[
-	proto := 'Willkommen bei %1 (Version %2 von %3)'
+        proto := 'Willkommen bei %1 (Version %2 von %3)'
     ] ifFalse:[ (lang == #fr) ifTrue:[
-	proto := 'Salut, Bienvenue à %1 (version %2 de %3)'
+        proto := 'Salut, Bienvenue à %1 (version %2 de %3)'
     ] ifFalse:[ (lang == #it) ifTrue:[
-	proto := 'Ciao, benvenuto al %1 (versione %2 di %3)'
+        proto := 'Ciao, benvenuto al %1 (versione %2 di %3)'
     ] ifFalse:[ (lang == #es) ifTrue:[
 "/        proto := 'Hola, bienvenida a %1 (versión %2 de %3)'
     ] ifFalse:[ (lang == #es) ifTrue:[
 "/        proto := 'Oi, benvindo a %1 (versão %2 de %3)'
     ] ifFalse:[ (lang == #no) ifTrue:[
-	proto := 'Hei, verdenmottakelse til %1 (versjon %2 av %3)'
+        proto := 'Hei, verdenmottakelse til %1 (versjon %2 av %3)'
     ]]]]]].
 
     "/ ... more needed here ...
 
     proto isNil ifTrue:[
-	proto := 'Hello World - here is %1 version %2 of %3'.
+        proto := 'Hello World - here is %1 version %2 of %3'.
     ].
 
     ^ proto bindWith:('SmallTalk/X' allBold)
-		with:(self versionString)
-		with:(self versionDate)
+                with:(self versionString)
+                with:(self versionDate)
 
     "
      Smalltalk language:#us.
@@ -6961,7 +6973,7 @@
       classes changes).
 
      ST/X revision Naming is:
-	<major>.<minor>.<revision>.<release>"
+        <major>.<minor>.<revision>.<release>"
 
     ^ 5
 
@@ -7132,5 +7144,5 @@
 !Smalltalk class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.859 2008-11-22 11:14:27 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.860 2008-11-28 18:55:53 cg Exp $'
 ! !