Merged with trunk r10476 jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Thu, 05 Nov 2009 14:41:30 +0000
branchjv
changeset 17734 406b1590afe8
parent 17733 a5b3fd5ca84a
child 17735 6a5bc05f696a
Merged with trunk r10476
AbstractSourceFileReader.st
AbstractSourceFileWriter.st
ApplicationDefinition.st
Array.st
Association.st
Autoload.st
AutoloadMetaclass.st
Behavior.st
Block.st
Boolean.st
ByteArray.st
CharacterArray.st
CharacterWriteStream.st
Class.st
ClassBuildError.st
ClassBuilder.st
ClassDescription.st
Collection.st
CompiledCode.st
Date.st
DirectoryStream.st
Error.st
ExternalStream.st
FileDirectory.st
FileStream.st
Filename.st
GenericException.st
HashStream.st
Infinity.st
Integer.st
LargeInteger.st
LibraryDefinition.st
LimitedPrecisionReal.st
MD5Stream.st
Make.proto
Make.spec
Metaclass.st
Method.st
NonPositionableExternalStream.st
Notification.st
Number.st
OSErrorHolder.st
Object.st
ObjectMemory.st
PCFilename.st
PackageId.st
PipeStream.st
ProgrammingLanguage.st
Project.st
ProjectDefinition.st
Query.st
QuerySignal.st
ReadStream.st
SHA1Stream.st
SequenceableCollection.st
Set.st
SharedPool.st
Signal.st
SignalSet.st
Smalltalk.st
SmalltalkChunkFileSourceReader.st
SmalltalkChunkFileSourceWriter.st
SmalltalkLanguage.st
StandaloneStartup.st
Stream.st
String.st
SystemChangeNotifier.st
Timestamp.st
UninterpretedBytes.st
UnixFilename.st
UserMessage.st
UserNotification.st
UserPreferences.st
Warning.st
Win32Constants.st
Win32OperatingSystem.st
WriteStream.st
abbrev.stc
bc.mak
libInit.cc
libbasic.rc
stx_libbasic.st
--- a/AbstractSourceFileReader.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/AbstractSourceFileReader.st	Thu Nov 05 14:41:30 2009 +0000
@@ -46,14 +46,15 @@
 !AbstractSourceFileReader class methodsFor:'documentation'!
 
 version
-    ^ '$Id: AbstractSourceFileReader.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: AbstractSourceFileReader.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/AbstractSourceFileReader.st,v 1.4 2009/10/08 11:50:15 fm Exp §'
+    ^ '$Id: AbstractSourceFileReader.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_SVN
-    ^ '$Id: AbstractSourceFileReader.st 10465 2009-08-16 17:14:23Z vranyj1$'
+    ^'§Id: AbstractSourceFileReader.st 10465 2009-08-16 17:14:23Z vranyj1§'
 ! !
 
+
--- a/AbstractSourceFileWriter.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/AbstractSourceFileWriter.st	Thu Nov 05 14:41:30 2009 +0000
@@ -142,14 +142,15 @@
 !AbstractSourceFileWriter class methodsFor:'documentation'!
 
 version
-    ^ '$Id: AbstractSourceFileWriter.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: AbstractSourceFileWriter.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/AbstractSourceFileWriter.st,v 1.6 2009/10/08 12:03:57 fm Exp §'
+    ^ '$Id: AbstractSourceFileWriter.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_SVN
-    ^ '$Id: AbstractSourceFileWriter.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^'§Id: AbstractSourceFileWriter.st 10468 2009-08-22 08:34:50Z vranyj1 §'
 ! !
 
+
--- a/ApplicationDefinition.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/ApplicationDefinition.st	Thu Nov 05 14:41:30 2009 +0000
@@ -36,12 +36,14 @@
 
 documentation
 "
-    subclasses provide the info on how to build executables and class libraries.
-    Actually, subclasses must be subclasses of either LibraryDefinition or
-    ApplicationDefinition.
-    These know how to generate all required help files for make-building.
-
-    Concrete definition classes must redefine:
+    subclasses provide the info on the contents of a package/project and
+    how to build executables and class libraries and how to load/unload packages.
+    Actually, subclasses MUST be subclasses of the two abstract classes LibraryDefinition or
+    ApplicationDefinition. These two know how to generate all required help files for the
+    making/building/loading processa.
+    The makefile creation is driven by file templates which are expanded using strings from the file mappings.
+
+    Concrete definition classes MUST redefine:
         classNamesAndAttributes
                                 list of classes which are part of the dll/exe
 
@@ -146,12 +148,12 @@
         value:self preRequisites_code
         value:'description'.
 
-    (self class implements:#startupClassName) ifFalse:[
+    (self class includesSelector:#startupClassName) ifFalse:[
         aTwoArgBlock 
             value:self startupClassName_code
             value:'description - startup'.
     ].
-    (self class implements:#startupSelector) ifFalse:[
+    (self class includesSelector:#startupSelector) ifFalse:[
         aTwoArgBlock 
             value:self startupSelector_code
             value:'description - startup'.
@@ -162,18 +164,18 @@
 !
 
 startupClassName_code
-    |classes startClasses mainClasses appClasses cls|
+    |classes startClasses mainClasses appClasses|
 
     classes := self classNamesAndAttributes 
                 collect:[:nm | Smalltalk classNamed:nm] 
                 thenSelect:[:cls | cls notNil and:[cls isProjectDefinition not ]].
 
-    mainClasses := classes select:[:each | each theMetaclass implements:#main ].
+    mainClasses := classes select:[:each | each theMetaclass includesSelector:#main ].
     mainClasses size == 1 ifTrue:[
         ^ self startupClassName_codeFor:(mainClasses first name)
     ].
     mainClasses isEmpty ifTrue:[
-        startClasses := classes select:[:each | each theMetaclass implements:#start ].
+        startClasses := classes select:[:each | each theMetaclass includesSelector:#start ].
         startClasses size == 1 ifTrue:[
             ^ self startupClassName_codeFor:(startClasses first name)
         ].
@@ -678,6 +680,693 @@
     "Created: / 07-09-2006 / 17:12:53 / cg"
 ! !
 
+!ApplicationDefinition class methodsFor:'file mappings'!
+
+additionalFilesToInstall_dot_nsi:bindings 
+    ^ String 
+        streamContents:[:s | 
+            self additionalFilesToInstall do:[:pattern | 
+                s nextPutLine:((self installFileLine_nsi_for:pattern) 
+                            expandPlaceholdersWith:bindings)
+            ].
+        ].
+
+    "Created: / 01-03-2007 / 19:59:18 / cg"
+!
+
+additionalSectionsDescriptions_dot_nsi
+    ^''
+!
+
+additionalSectionsDescriptions_dot_nsi:bindings
+    ^self additionalSectionsDescriptions_dot_nsi expandPlaceholdersWith:bindings
+!
+
+additionalSectionsInsertDescriptions_dot_nsi
+    ^''
+!
+
+additionalSectionsInsertDescriptions_dot_nsi:bindings
+    ^self additionalSectionsInsertDescriptions_dot_nsi expandPlaceholdersWith:bindings
+!
+
+additionalSections_dot_nsi
+    ^''
+!
+
+additionalSections_dot_nsi:bindings
+    ^self additionalSections_dot_nsi expandPlaceholdersWith:bindings
+!
+
+appSourcesLines_dot_nsi:bindings
+    ^ String streamContents:[:s |
+        s nextPutAll:
+('Section "Application Sources" Section4
+    SectionIn 1
+    SetOverwrite ifnewer
+' expandPlaceholdersWith:bindings).
+        self appSourcesProjects do:[:projectID |
+            s nextPutAll:((self defineAPPSourceLine_nsi_for: projectID)expandPlaceholdersWith:bindings).
+            s cr.
+        ].
+        s nextPutAll:
+'SectionEnd'
+    ].
+
+    "Created: / 15-10-2006 / 12:59:03 / cg"
+!
+
+bc_dot_mak_mappings
+    |d|
+
+    d := super bc_dot_mak_mappings.
+    d 
+        at: 'LOCAL_INCLUDES' put: (self generateLocalIncludes_win32);
+        at: 'CONSOLE_APPLICATION_OR_EMPTY' put:(self makeConsoleApplication ifTrue:['consoleApp'] ifFalse:'');
+        at: 'NOCONSOLE_APPLICATION_OR_EMPTY' put:(self makeNonConsoleApplication ifTrue:['noConsoleApp'] ifFalse:'');
+        at: 'APPLICATION' put: (self applicationName);
+        at: 'NSI_FILENAME' put: self nsiFilename ;
+        at: 'CONSOLE_APPLICATION' put: (self applicationNameConsole);
+        at: 'NOCONSOLE_APPLICATION' put: (self applicationNameNoConsole);
+        at: 'NOCONSOLE_LOGFILE' put:(self logFilenameNoConsole);
+        at: 'RESFILENAME' put: (self resourceFilename );
+        at: 'RCFILENAME' put: (self rcFilename );
+        at: 'STARTUP_CLASS' put: ( self startupClassName );
+        at: 'STARTUP_SELECTOR' put: (self startupSelector );
+        at: 'MAIN_DEFINES' put: (self mainDefines );
+        at: 'REQUIRED_LIBS' put: (self generateRequiredLibs_bc_dot_mak); 
+        at: 'PREREQUISITES_LIBS' put: (self generatePreRequisiteLines_bc_dot_mak );  
+        at: 'DEPENDENCIES' put: (self generateDependencies_win32);
+        at: 'SUBPROJECTS_LIBS' put: (self generateSubProjectLines_bc_dot_mak ); 
+        at: 'BUILD_TARGET' put: (self buildTarget );
+        at: 'REQUIRED_SUPPORT_DIRS' put: (self extraTargets asStringWith:' ');
+        yourself.
+
+    self needResources ifTrue:[
+        d 
+            at: 'RESOURCE_RULES' put:( self replaceMappings: d 
+                                            in: self bc_dot_mak_resource_rules );
+            at: 'STX_RESOURCE_RULES' put: ( self replaceMappings: d 
+                                            in: self bc_dot_mak_stx_resource_rules);
+            at: 'ADDITIONAL_RESOURCE_TARGETS' put:( self additionalResourceTargets asStringWith:' ');
+            yourself
+    ].
+    self offerSmalltalkSourceCode ifTrue:[
+        d 
+            at: 'STX_SOURCE_RULES' put: ( self replaceMappings: d 
+                                               in: self bc_dot_mak_stx_source_rules);
+            yourself
+    ].
+    self offerApplicationSourceCode ifTrue:[
+        d 
+            at: 'APP_SOURCE_RULES' put: ( self replaceMappings: d 
+                                               in: self bc_dot_mak_app_source_rules);
+            yourself
+    ].
+    ^ d
+
+    "Modified: / 15-05-2007 / 17:27:04 / cg"
+!
+
+buildDate_dot_h_mappings
+    |d|
+
+    d := Dictionary new.
+    d 
+        at: 'BUILDDATE' put: (Timestamp now printStringRFC1123Format ). 
+
+    ^ d
+
+    "Created: / 30-08-2006 / 19:19:30 / cg"
+    "Modified: / 14-09-2006 / 18:58:31 / cg"
+!
+
+commonFilesToInstall_dot_nsi:bindings 
+    ^ String 
+        streamContents:[:s | 
+            self commonFilesToInstall do:[:pattern | 
+                s nextPutLine:((self installFileLine_nsi_for:pattern) 
+                            expandPlaceholdersWith:bindings)
+            ].
+        ].
+
+    "Created: / 01-03-2007 / 20:05:20 / cg"
+!
+
+directoryUninstallLines_dot_nsi
+    "%(DIRECTORY_UNINSTALL_LINES)"
+
+  ^'
+    Delete "$INSTDIR\*"
+    RMDir /r "$INSTDIR"'
+!
+
+fileExtensionDefinitionLines_dot_nsi:bindings
+    ^ String streamContents:[:s |
+        self documentExtensions do:[:ext |
+            s nextPutAll:((self defineExtenionLine_nsi_for:ext) expandPlaceholdersWith:bindings)
+        ].
+    ].
+
+    "Created: / 15-10-2006 / 12:59:03 / cg"
+!
+
+fileExtensionUndefinitionLines_dot_nsi:bindings
+    ^ String streamContents:[:s |
+        self documentExtensions do:[:ext |
+            s nextPutAll:((self undefineExtenionLine_nsi_for:ext) expandPlaceholdersWith:bindings)
+        ].
+    ].
+
+    "Created: / 15-10-2006 / 12:59:18 / cg"
+!
+
+make_dot_proto_mappings
+    |mappings|
+
+    mappings := super make_dot_proto_mappings.
+
+    mappings
+        at: 'TOP' put: ( self pathToTop_unix );
+        at: 'NSI_FILENAME' put: self nsiFilename ;
+        at: 'APPLICATION' put: self applicationName;
+        at: 'APPLICATION_PACKAGE' put: self package printString "applicationPackage";
+        at: 'APPLICATION_TYPE' put: self applicationType;
+        at: 'STARTUP_CLASS' put: (self startupClassName);
+        at: 'STARTUP_SELECTOR' put: (self startupSelector);
+        at: 'MAIN_DEFINES' put: (self mainDefines);
+        at: 'REQUIRED_LIBS' put: (self generateRequiredLibs_make_dot_proto);  
+        at: 'PREREQUISITES_LIBS' put: (self generatePreRequisiteLines_make_dot_proto);  
+        at: 'SUBPROJECTS_LIBS' put: (self generateSubProjectLines_make_dot_proto); 
+        at: 'REQUIRED_LIBOBJS' put: (self generateRequiredLibobjs_make_dot_proto);
+        at: 'REQUIRED_LINK_LIBOBJS' put: (self generateRequiredLinkLibobjs_make_dot_proto);
+        at: 'DEPENDENCIES' put: (self generateDependencies_unix);
+        at: 'SUBPROJECTS_LIBS' put: (self generateSubProjectLines_make_dot_proto ); 
+        at: 'BUILD_TARGET' put: (self buildTarget ).
+
+    self offerSmalltalkSourceCode ifTrue:[ 
+        mappings
+            at: 'STX_SOURCE_RULES' put: ( self replaceMappings: mappings 
+                                            in: self make_dot_proto_stx_source_rules).
+    ].
+
+    self offerApplicationSourceCode ifTrue:[  
+        mappings
+            at: 'SOURCE_RULES' put:( self replaceMappings: mappings 
+                                            in: self make_dot_proto_app_source_rules ).
+    ].
+
+    self needResources ifTrue:[
+        mappings
+            at: 'REQUIRED_SUPPORT_DIRS' put: 'RESOURCEFILES';
+            at: 'RESOURCE_RULES' put:( self replaceMappings: mappings 
+                                            in: self make_dot_proto_resource_rules );
+            at: 'STX_RESOURCE_RULES' put: ( self replaceMappings: mappings 
+                                            in: self make_dot_proto_stx_resource_rules);
+            at: 'ADDITIONAL_RESOURCE_TARGETS' put:( self additionalResourceTargets asStringWith:' ');
+            yourself.
+    ].
+
+    ^ mappings
+!
+
+modules_dot_c_mappings
+    |d|
+
+    d := Dictionary new.
+    d 
+        at: 'INIT_LIST' put: (self generateClassLines:(self classLine_modules_dot_c));
+        at: 'EXTERN_INIT_NAME_LIST' put: (self generateClassLines:(self classLine_modules_dot_c_extern));
+        yourself.
+
+    ^ d
+
+    "Created: / 19-09-2006 / 22:42:15 / cg"
+!
+
+modules_dot_stx_mappings
+    |d|
+
+    d := Dictionary new.
+    d 
+        at: 'PREREQUISITE_LIBS' put: (self generatePreRequisiteLibs_modules_dot_stx);
+        at: 'ALLPREREQUISITE_LIBS' put: (self generateAllPreRequisiteLibs_modules_dot_stx);
+        at: 'SUBPROJECT_LIBS' put: (self generateSubProjectLines_modules_dot_stx  ). 
+
+    ^ d
+
+    "Modified: / 14-09-2006 / 18:58:41 / cg"
+!
+
+nsiDeliveredConsoleExecutable
+    self isGUIApplication ifFalse:[^ '' "made anyway"].
+    self makeConsoleApplication ifTrue:[
+        ^ ('"',self applicationName,'.com','"').
+    ].
+    ^ ''
+!
+
+nsiDeliveredExecutables
+    "by default, an executable named after the application.
+     Redefine, if thats not the case. If multiple have to be delivered, 
+     return a string containing each individually double-quoted."
+
+    |s|
+
+    s := ''.
+    self makeNonConsoleApplication ifTrue:[
+        s := '"', self applicationNameNoConsole,'"'.
+    ].
+    self makeConsoleApplication ifTrue:[
+        s := s , (' "',self applicationNameConsole,'"').
+    ].
+    ^ s
+!
+
+packageName_dot_nsi_mappings
+    |d s defLines undefLines stxSourcesLines appSourcesLines|
+
+    d := Dictionary new.
+    d
+        at: 'TOP' put: ( self pathToTop_win32 );
+
+        at: 'APPLICATION' put: (self applicationName);
+        at: 'APPLICATION_ICON' put: (self applicationInstallIconFileName);
+        at: 'NSI_FILENAME' put: (self nsiFilename );
+        at: 'CONSOLE_APPLICATION' put: (self applicationNameConsole);
+        at: 'NOCONSOLE_APPLICATION' put: (self applicationNameNoConsole);
+        at: 'DELIVERED_EXECUTABLES' put: (self nsiDeliveredExecutables);
+        at: 'MODULE' put: ( self module );  
+        at: 'MODULE_KEY' put: ( self module asUppercaseFirst );  
+        at: 'PRODUCT_NAME' put: (self productName);
+        at: 'PRODUCT_FILENAME' put: (self productFilename);
+        at: 'PRODUCT_VERSION' put: (self productVersion);
+        at: 'PRODUCT_DATE' put: (self productDate);
+        at: 'PRODUCT_PUBLISHER' put: (self productPublisher);
+        at: 'PRODUCT_WEBSITE' put: (self productWebSite);
+        at: 'PRODUCT_INSTALLDIR' put: (self productInstallDir);
+        at: 'FILETYPE' put: ( 'VFT_DLL' );
+        at: 'FILE_VERSION_COMMASEPARATED' put: (self fileVersionCommaSeparated);
+        at: 'PRODUCT_VERSION_COMMASEPARATED' put: (self productVersionCommaSeparated);
+
+        at: 'COMPANY_NAME' put: (self companyName);
+        at: 'FILE_DESCRIPTION' put: (self fileDescription);
+        at: 'FILE_VERSION' put: (self fileVersion);
+        at: 'LEGAL_COPYRIGHT' put: (self legalCopyright ? '');
+        at: 'INTERNAL_NAME' put: (self internalName).
+
+    s := self legalCopyright.
+    s notNil ifTrue:[
+        d  at: 'LEGAL_COPYRIGHT_LINE' put: '      VALUE "LegalCopyright", "',s,'\0"'
+    ].
+    s := self applicationInstallIconFileName.
+    s isNil ifTrue:[
+        d  at:'SEMI_IF_NO_ICON_EXISTS' put:';; '.
+        d  at:'SEMI_IF_ICON_EXISTS' put:''.
+    ] ifFalse:[
+        d  at:'SEMI_IF_NO_ICON_EXISTS' put:''.
+        d  at:'SEMI_IF_ICON_EXISTS' put:';; '.
+"/        d  at: #'ICONDEFINITION_LINE' put: 'IDR_MAINFRAME           ICON    DISCARDABLE     "',s,'"'
+    ].
+
+"/    s := self splashFileName.
+"/    s notNil ifTrue:[
+"/        d  at: #'SPLASHDEFINITION_LINE' put: 'IDR_SPLASH            BITMAP DISCARDABLE     "',s,'"'
+"/    ].
+
+    s := self docDirPath_win32.
+    s isEmptyOrNil ifTrue:[
+        d  at:'SEMI_IF_NO_DOC_EXISTS' put:';; '.
+    ] ifFalse:[
+        d  at:'SEMI_IF_NO_DOC_EXISTS' put:''.
+    ].   
+    self offerSmalltalkSourceCode ifTrue:[
+        stxSourcesLines := self stxSourcesLines_dot_nsi:d.
+        d at:'STX_SOURCES_LINES' put:stxSourcesLines.
+        d  at:'SEMI_IF_NO_STX_SOURCES' put:''.
+    ] ifFalse:[
+        d at:'STX_SOURCES_LINES' put:''.
+        d  at:'SEMI_IF_NO_STX_SOURCES' put:';;'.
+    ].
+    self offerApplicationSourceCode ifTrue:[
+        appSourcesLines := self appSourcesLines_dot_nsi:d.
+        d at:'APP_SOURCES_LINES' put:appSourcesLines.
+        d at:'SEMI_IF_NO_STX_SOURCES' put:''.
+    ] ifFalse:[
+        d at:'APP_SOURCES_LINES' put:''.
+        d at:'SEMI_IF_NO_APP_SOURCES' put:';;'.
+    ].
+
+    defLines := self fileExtensionDefinitionLines_dot_nsi:d.
+    undefLines := self fileExtensionUndefinitionLines_dot_nsi:d.
+
+    d at:'FILE_EXTENSION_DEFINITION_LINES' put:defLines.
+    d at:'FILE_EXTENSION_UNDEFINITION_LINES' put:undefLines.
+    d at:'ADDITIONAL_FILES_TO_INSTALL' put:(self additionalFilesToInstall_dot_nsi:d).
+    d at:'COMMON_FILES_TO_INSTALL' put:(self commonFilesToInstall_dot_nsi:d).
+    d at:'ADDITIONAL_SECTIONS' put:(self additionalSections_dot_nsi:d).
+    d at:'ADDITIONAL_SECTIONS_DESCRIPTIONS' put:(self additionalSectionsDescriptions_dot_nsi:d).
+    d at:'ADDITIONAL_SECTIONS_INSERT_DESCRIPTIONS' put:(self additionalSectionsInsertDescriptions_dot_nsi:d).
+    d at: 'DIRECTORY_UNINSTALL_LINES' put: (self directoryUninstallLines_dot_nsi).
+    ^ d
+
+    "Created: / 14-09-2006 / 21:08:44 / cg"
+    "Modified: / 15-05-2007 / 17:24:27 / cg"
+!
+
+preRequisiteLine_bc_dot_mak_mappings: aProjectID 
+
+    ^ Dictionary new
+        at: 'FILE_NAME' put: (self libraryNameFor:aProjectID);  
+        at: 'MODULE_DIRECTORY' put: (self msdosPathToPackage:aProjectID from:self package);     
+        at: 'BACK_DIRECTORY' put: (self msdosPathToPackage:self package from:aProjectID);     
+        yourself
+
+    "Modified: / 09-02-2007 / 16:59:21 / cg"
+!
+
+preRequisiteLine_bc_dot_mak_mappingsForClass:aClass
+    |relPath|
+
+    relPath := (PackageId from:aClass package) directory copy replaceAll:$/ with:$\.
+
+    ^ Dictionary new
+        at: 'FILE_NAME' put: ( aClass classBaseFilename asFilename withoutSuffix baseName );  
+        at: 'MODULE_DIRECTORY' put:relPath;     
+        yourself
+
+    "Modified: / 09-02-2007 / 16:28:12 / cg"
+!
+
+preRequisiteLine_make_dot_proto_mappings: aProjectID 
+
+    ^ Dictionary new
+        at: 'FILE_NAME' put: (self libraryNameFor:aProjectID);  
+        at: 'MODULE_DIRECTORY' put: (self unixPathToPackage:aProjectID from:self package);     
+        at: 'BACK_DIRECTORY' put: (self unixPathToPackage:self package from:aProjectID);     
+        yourself
+!
+
+preRequisiteLine_make_dot_proto_mappingsForClass:aClass
+    |relPath|
+
+    relPath := (PackageId from:aClass package) directory.
+
+    ^ Dictionary new
+        at: 'FILE_NAME' put: ( aClass classBaseFilename asFilename withoutSuffix baseName );  
+        at: 'MODULE_DIRECTORY' put:relPath;     
+        yourself
+
+    "Modified: / 09-02-2007 / 16:28:12 / cg"
+!
+
+stxSourcesLines_dot_nsi:bindings
+    ^ String streamContents:[:s |
+        s nextPutAll:
+'Section "STX Sources" Section3
+    SectionIn 1
+    SetOverwrite ifnewer
+'.
+        self stxSourcesProjects do:[:projectID |
+            s nextPutAll:((self defineSTXSourceLine_nsi_for: projectID) expandPlaceholdersWith:bindings).
+            s cr.
+        ].
+        s nextPutAll:
+'SectionEnd'.
+
+    ].
+
+    "Created: / 15-10-2006 / 12:59:03 / cg"
+!
+
+subProjectLine_bc_dot_mak_mappings: aProjectID 
+    ^ Dictionary new
+        at: 'LIBRARY_NAME' put: (self libraryNameFor: aProjectID );     
+        at: 'PATH_TO_SUB_PROJECT' put: ( (PackageId from:aProjectID) module,'\',(PackageId from:aProjectID) directory copy replaceAll:$/ with:$\ ); 
+        at: 'PATH_TO_MYPROJECT' put: (self msdosPathToPackage: self package from: aProjectID); 
+        yourself
+
+    "Modified: / 14-09-2006 / 18:59:26 / cg"
+!
+
+subProjectLine_make_dot_proto_mappings: aProjectID 
+    ^ Dictionary new
+        at: 'LIBRARY_NAME' put: (self libraryNameFor: aProjectID );     
+        at: 'PATH_TO_SUB_PROJECT' put: ( (PackageId from:aProjectID) module,'\',(PackageId from:aProjectID) directory copy replaceAll:$/ with:$\ ); 
+        at: 'PATH_TO_MYPROJECT' put: (self unixPathToPackage: self package from: aProjectID); 
+        yourself
+
+    "Modified: / 14-09-2006 / 18:59:26 / cg"
+! !
+
+!ApplicationDefinition class methodsFor:'file mappings support'!
+
+generateAllPreRequisiteLibs_modules_dot_stx
+    ^ String streamContents:[:s |
+        self allPreRequisitesSorted do:[:projectID | 
+            s nextPutLine:(self libraryNameFor:projectID)
+        ].
+        self isGUIApplication ifTrue:[
+            self guiClassFileNames_win32 do:[:eachFilename |
+                s nextPutLine:(eachFilename asFilename withoutSuffix baseName)
+            ].
+        ].
+    ].
+
+    "
+     bosch_dapasx_application generatePreRequisiteLibs_modules_dot_stx
+    "
+
+    "Modified: / 07-09-2006 / 17:22:58 / cg"
+!
+
+generatePreRequisiteLibs_modules_dot_stx
+    ^ String streamContents:[:s |
+        self effectivePreRequisites do:[:projectID | 
+            s nextPutLine:(self libraryNameFor:projectID)
+        ].
+        self isGUIApplication ifTrue:[
+            self guiClassFileNames_win32 do:[:eachFilename |
+                s nextPutLine:(eachFilename asFilename withoutSuffix baseName)
+            ].
+        ].
+    ].
+
+    "
+     bosch_dapasx_application generatePreRequisiteLibs_modules_dot_stx
+    "
+
+    "Modified: / 07-09-2006 / 17:22:58 / cg"
+!
+
+generatePreRequisiteLines_bc_dot_mak         
+
+    ^ String streamContents:[:s |
+        self allPreRequisitesSorted do:[:eachPackage |
+            |mappings newObjectLine|
+            mappings := self preRequisiteLine_bc_dot_mak_mappings: eachPackage.
+            newObjectLine := self replaceMappings: mappings
+                                in: self preRequisiteLine_bc_dot_mak.
+            s nextPutAll:newObjectLine. 
+            s cr. 
+        ].
+        self guiClasses_win32 do:[:eachClass |
+            |mappings newObjectLine|
+            mappings := self preRequisiteLine_bc_dot_mak_mappingsForClass: eachClass.
+            newObjectLine := self replaceMappings: mappings
+                                in: self preRequisiteLine_bc_dot_mak.
+            s nextPutAll:newObjectLine. 
+            s cr. 
+        ].
+    ]
+
+    "
+     bosch_dapasx_application generatePreRequisiteLines_bc_dot_mak 
+    "
+
+    "Created: / 09-08-2006 / 11:24:39 / fm"
+    "Modified: / 14-09-2006 / 21:58:47 / cg"
+!
+
+generatePreRequisiteLines_make_dot_proto        
+
+    ^ String streamContents:[:s |
+        self allPreRequisitesSorted do:[:eachPackage |
+            |mappings newObjectLine|
+            mappings := self preRequisiteLine_make_dot_proto_mappings: eachPackage.
+            newObjectLine := self replaceMappings: mappings
+                                in: self preRequisiteLine_make_dot_proto.
+            s nextPutAll:newObjectLine. 
+            s cr. 
+        ].
+        self guiClasses_win32 do:[:eachClass |
+            |mappings newObjectLine|
+            mappings := self preRequisiteLine_make_dot_proto_mappingsForClass: eachClass.
+            newObjectLine := self replaceMappings: mappings
+                                in: self preRequisiteLine_make_dot_proto.
+            s nextPutAll:newObjectLine. 
+            s cr. 
+        ].
+    ]
+
+    "
+     bosch_dapasx_application generatePreRequisiteLines_bc_dot_mak 
+    "
+
+    "Created: / 09-08-2006 / 11:24:39 / fm"
+    "Modified: / 14-09-2006 / 21:58:47 / cg"
+!
+
+generateRequiredLibobjs_make_dot_proto
+    |libobjPath libPath|
+
+    ^ String streamContents:[:s |
+        self allPreRequisitesSorted do:[:projectID |
+            libPath := self pathToPackage_unix:projectID.
+            libobjPath := libPath , '/', (self libraryNameFor:projectID).
+            s space; nextPutAll: libobjPath,'$(O_EXT)'; nextPutLine:' \'.
+        ].
+
+        s cr.
+    ].
+
+    "
+     alspa_batch_application generateRequiredLibobjs_make_dot_proto      
+    "
+!
+
+generateRequiredLibs_bc_dot_mak
+    ^ String streamContents:[:s |
+        s nextPutLine:' \'.
+        self allPreRequisitesSorted do:[:projectID | 
+            s space; nextPutAll:(self libraryNameFor:projectID),'.dll'; nextPutLine:' \'.
+        ].
+
+        self isGUIApplication ifTrue:[
+            self guiClassFileNames_win32 do:[:eachFilename |
+                s space; nextPutAll:eachFilename; nextPutLine:' \'.
+            ].
+        ].
+"/        self subProjects do:[:projectID | 
+"/            s space; nextPutAll:(self libraryNameFor:projectID),'.dll'; nextPutLine:' \'.
+"/        ].
+        s cr.
+    ].
+
+    "
+     bosch_dapasx_application generateRequiredLibs_bc_dot_mak      
+    "
+
+    "Modified: / 07-09-2006 / 17:22:51 / cg"
+!
+
+generateRequiredLibs_make_dot_proto
+    ^ String streamContents:[:s |
+        self allPreRequisitesSorted do:[:projectID | 
+            s space; nextPutAll:(self libraryNameFor:projectID); nextPutLine:' \'.
+        ].
+
+        self isGUIApplication ifTrue:[
+            self guiClassFileNames_unix do:[:eachFilename |
+                s space; nextPutAll:eachFilename; nextPutLine:' \'.
+            ].
+        ].
+"/        self subProjects do:[:projectID | 
+"/            s space; nextPutAll:(self libraryNameFor:projectID); nextPutLine:' \'.
+"/        ].
+        s cr.
+    ].
+
+    "
+     alspa_batch_application generateRequiredLibs_make_dot_proto      
+    "
+!
+
+generateRequiredLinkLibobjs_make_dot_proto
+
+    ^ String streamContents:[:s |
+        self allPreRequisitesSorted do:[:projectID | 
+            s space; nextPutAll:(self libraryNameFor:projectID),'$(O_EXT)'; nextPutLine:' \'.
+        ].
+
+        self isGUIApplication ifTrue:[
+            self guiClassFileNames_unix do:[:eachFilename |
+                s space; nextPutAll:eachFilename,'$(O_EXT)'; nextPutLine:' \'.
+            ].
+        ].
+"/        self subProjects do:[:projectID | 
+"/            s space; nextPutAll:(self libraryNameFor:projectID),'$(O_EXT)'; nextPutLine:' \'.
+"/        ].
+        s cr.
+    ].
+
+    "
+     alspa_batch_application generateRequiredLinkLibobjs_make_dot_proto      
+    "
+!
+
+generateSubProjectLines_bc_dot_mak         
+
+    ^ String streamContents:[:s |
+        self subProjects do:[:projectID |
+            |mappings newObjectLine|
+
+            mappings := self subProjectLine_bc_dot_mak_mappings: projectID.
+            newObjectLine := self replaceMappings: mappings
+                                in: self subProjectLine_bc_dot_mak.
+            s nextPutAll:newObjectLine. 
+            s cr. 
+        ]
+    ]
+"
+    bosch_dapasx_application generateSubProjectLines_bc_dot_mak 
+
+"
+
+    "Created: / 09-08-2006 / 11:24:39 / fm"
+    "Modified: / 14-09-2006 / 18:46:09 / cg"
+!
+
+generateSubProjectLines_make_dot_proto         
+
+    ^ String streamContents:[:s |
+        self subProjects do:[:projectID |
+            |mappings newObjectLine|
+
+            mappings := self subProjectLine_make_dot_proto_mappings: projectID.
+            newObjectLine := self replaceMappings: mappings
+                                in: self subProjectLine_bc_dot_mak.
+            s nextPutAll:newObjectLine. 
+            s cr. 
+        ]
+    ]
+"
+    bosch_dapasx_application generateSubProjectLines_make_dot_proto 
+
+"
+
+    "Created: / 09-08-2006 / 11:24:39 / fm"
+    "Modified: / 14-09-2006 / 18:46:09 / cg"
+!
+
+generateSubProjectLines_modules_dot_stx
+    |string|
+
+    string := String streamContents:[:s |
+            self subProjects do:[:projectID | 
+                    s nextPutLine:(self libraryNameFor:projectID)
+                ].
+            ].
+
+    ^ string
+
+    "
+     bosch_dapasx_application generateSubProjectLines_modules_dot_stx
+    "
+
+    "Modified: / 17-08-2006 / 17:22:37 / cg"
+! !
+
 !ApplicationDefinition class methodsFor:'file templates'!
 
 bc_dot_def
@@ -1836,693 +2525,6 @@
     "Created: / 15-10-2006 / 12:51:00 / cg"
 ! !
 
-!ApplicationDefinition class methodsFor:'mappings'!
-
-additionalFilesToInstall_dot_nsi:bindings 
-    ^ String 
-        streamContents:[:s | 
-            self additionalFilesToInstall do:[:pattern | 
-                s nextPutLine:((self installFileLine_nsi_for:pattern) 
-                            expandPlaceholdersWith:bindings)
-            ].
-        ].
-
-    "Created: / 01-03-2007 / 19:59:18 / cg"
-!
-
-additionalSectionsDescriptions_dot_nsi
-    ^''
-!
-
-additionalSectionsDescriptions_dot_nsi:bindings
-    ^self additionalSectionsDescriptions_dot_nsi expandPlaceholdersWith:bindings
-!
-
-additionalSectionsInsertDescriptions_dot_nsi
-    ^''
-!
-
-additionalSectionsInsertDescriptions_dot_nsi:bindings
-    ^self additionalSectionsInsertDescriptions_dot_nsi expandPlaceholdersWith:bindings
-!
-
-additionalSections_dot_nsi
-    ^''
-!
-
-additionalSections_dot_nsi:bindings
-    ^self additionalSections_dot_nsi expandPlaceholdersWith:bindings
-!
-
-appSourcesLines_dot_nsi:bindings
-    ^ String streamContents:[:s |
-        s nextPutAll:
-('Section "Application Sources" Section4
-    SectionIn 1
-    SetOverwrite ifnewer
-' expandPlaceholdersWith:bindings).
-        self appSourcesProjects do:[:projectID |
-            s nextPutAll:((self defineAPPSourceLine_nsi_for: projectID)expandPlaceholdersWith:bindings).
-            s cr.
-        ].
-        s nextPutAll:
-'SectionEnd'
-    ].
-
-    "Created: / 15-10-2006 / 12:59:03 / cg"
-!
-
-bc_dot_mak_mappings
-    |d|
-
-    d := super bc_dot_mak_mappings.
-    d 
-        at: 'LOCAL_INCLUDES' put: (self generateLocalIncludes_win32);
-        at: 'CONSOLE_APPLICATION_OR_EMPTY' put:(self makeConsoleApplication ifTrue:['consoleApp'] ifFalse:'');
-        at: 'NOCONSOLE_APPLICATION_OR_EMPTY' put:(self makeNonConsoleApplication ifTrue:['noConsoleApp'] ifFalse:'');
-        at: 'APPLICATION' put: (self applicationName);
-        at: 'NSI_FILENAME' put: self nsiFilename ;
-        at: 'CONSOLE_APPLICATION' put: (self applicationNameConsole);
-        at: 'NOCONSOLE_APPLICATION' put: (self applicationNameNoConsole);
-        at: 'NOCONSOLE_LOGFILE' put:(self logFilenameNoConsole);
-        at: 'RESFILENAME' put: (self resourceFilename );
-        at: 'RCFILENAME' put: (self rcFilename );
-        at: 'STARTUP_CLASS' put: ( self startupClassName );
-        at: 'STARTUP_SELECTOR' put: (self startupSelector );
-        at: 'MAIN_DEFINES' put: (self mainDefines );
-        at: 'REQUIRED_LIBS' put: (self generateRequiredLibs_bc_dot_mak); 
-        at: 'PREREQUISITES_LIBS' put: (self generatePreRequisiteLines_bc_dot_mak );  
-        at: 'DEPENDENCIES' put: (self generateDependencies_win32);
-        at: 'SUBPROJECTS_LIBS' put: (self generateSubProjectLines_bc_dot_mak ); 
-        at: 'BUILD_TARGET' put: (self buildTarget );
-        at: 'REQUIRED_SUPPORT_DIRS' put: (self extraTargets asStringWith:' ');
-        yourself.
-
-    self needResources ifTrue:[
-        d 
-            at: 'RESOURCE_RULES' put:( self replaceMappings: d 
-                                            in: self bc_dot_mak_resource_rules );
-            at: 'STX_RESOURCE_RULES' put: ( self replaceMappings: d 
-                                            in: self bc_dot_mak_stx_resource_rules);
-            at: 'ADDITIONAL_RESOURCE_TARGETS' put:( self additionalResourceTargets asStringWith:' ');
-            yourself
-    ].
-    self offerSmalltalkSourceCode ifTrue:[
-        d 
-            at: 'STX_SOURCE_RULES' put: ( self replaceMappings: d 
-                                               in: self bc_dot_mak_stx_source_rules);
-            yourself
-    ].
-    self offerApplicationSourceCode ifTrue:[
-        d 
-            at: 'APP_SOURCE_RULES' put: ( self replaceMappings: d 
-                                               in: self bc_dot_mak_app_source_rules);
-            yourself
-    ].
-    ^ d
-
-    "Modified: / 15-05-2007 / 17:27:04 / cg"
-!
-
-buildDate_dot_h_mappings
-    |d|
-
-    d := Dictionary new.
-    d 
-        at: 'BUILDDATE' put: (Timestamp now printStringRFC1123Format ). 
-
-    ^ d
-
-    "Created: / 30-08-2006 / 19:19:30 / cg"
-    "Modified: / 14-09-2006 / 18:58:31 / cg"
-!
-
-commonFilesToInstall_dot_nsi:bindings 
-    ^ String 
-        streamContents:[:s | 
-            self commonFilesToInstall do:[:pattern | 
-                s nextPutLine:((self installFileLine_nsi_for:pattern) 
-                            expandPlaceholdersWith:bindings)
-            ].
-        ].
-
-    "Created: / 01-03-2007 / 20:05:20 / cg"
-!
-
-directoryUninstallLines_dot_nsi
-    "%(DIRECTORY_UNINSTALL_LINES)"
-
-  ^'
-    Delete "$INSTDIR\*"
-    RMDir /r "$INSTDIR"'
-!
-
-fileExtensionDefinitionLines_dot_nsi:bindings
-    ^ String streamContents:[:s |
-        self documentExtensions do:[:ext |
-            s nextPutAll:((self defineExtenionLine_nsi_for:ext) expandPlaceholdersWith:bindings)
-        ].
-    ].
-
-    "Created: / 15-10-2006 / 12:59:03 / cg"
-!
-
-fileExtensionUndefinitionLines_dot_nsi:bindings
-    ^ String streamContents:[:s |
-        self documentExtensions do:[:ext |
-            s nextPutAll:((self undefineExtenionLine_nsi_for:ext) expandPlaceholdersWith:bindings)
-        ].
-    ].
-
-    "Created: / 15-10-2006 / 12:59:18 / cg"
-!
-
-make_dot_proto_mappings
-    |mappings|
-
-    mappings := super make_dot_proto_mappings.
-
-    mappings
-        at: 'TOP' put: ( self pathToTop_unix );
-        at: 'NSI_FILENAME' put: self nsiFilename ;
-        at: 'APPLICATION' put: self applicationName;
-        at: 'APPLICATION_PACKAGE' put: self package printString "applicationPackage";
-        at: 'APPLICATION_TYPE' put: self applicationType;
-        at: 'STARTUP_CLASS' put: (self startupClassName);
-        at: 'STARTUP_SELECTOR' put: (self startupSelector);
-        at: 'MAIN_DEFINES' put: (self mainDefines);
-        at: 'REQUIRED_LIBS' put: (self generateRequiredLibs_make_dot_proto);  
-        at: 'PREREQUISITES_LIBS' put: (self generatePreRequisiteLines_make_dot_proto);  
-        at: 'SUBPROJECTS_LIBS' put: (self generateSubProjectLines_make_dot_proto); 
-        at: 'REQUIRED_LIBOBJS' put: (self generateRequiredLibobjs_make_dot_proto);
-        at: 'REQUIRED_LINK_LIBOBJS' put: (self generateRequiredLinkLibobjs_make_dot_proto);
-        at: 'DEPENDENCIES' put: (self generateDependencies_unix);
-        at: 'SUBPROJECTS_LIBS' put: (self generateSubProjectLines_make_dot_proto ); 
-        at: 'BUILD_TARGET' put: (self buildTarget ).
-
-    self offerSmalltalkSourceCode ifTrue:[ 
-        mappings
-            at: 'STX_SOURCE_RULES' put: ( self replaceMappings: mappings 
-                                            in: self make_dot_proto_stx_source_rules).
-    ].
-
-    self offerApplicationSourceCode ifTrue:[  
-        mappings
-            at: 'SOURCE_RULES' put:( self replaceMappings: mappings 
-                                            in: self make_dot_proto_app_source_rules ).
-    ].
-
-    self needResources ifTrue:[
-        mappings
-            at: 'REQUIRED_SUPPORT_DIRS' put: 'RESOURCEFILES';
-            at: 'RESOURCE_RULES' put:( self replaceMappings: mappings 
-                                            in: self make_dot_proto_resource_rules );
-            at: 'STX_RESOURCE_RULES' put: ( self replaceMappings: mappings 
-                                            in: self make_dot_proto_stx_resource_rules);
-            at: 'ADDITIONAL_RESOURCE_TARGETS' put:( self additionalResourceTargets asStringWith:' ');
-            yourself.
-    ].
-
-    ^ mappings
-!
-
-modules_dot_c_mappings
-    |d|
-
-    d := Dictionary new.
-    d 
-        at: 'INIT_LIST' put: (self generateClassLines:(self classLine_modules_dot_c));
-        at: 'EXTERN_INIT_NAME_LIST' put: (self generateClassLines:(self classLine_modules_dot_c_extern));
-        yourself.
-
-    ^ d
-
-    "Created: / 19-09-2006 / 22:42:15 / cg"
-!
-
-modules_dot_stx_mappings
-    |d|
-
-    d := Dictionary new.
-    d 
-        at: 'PREREQUISITE_LIBS' put: (self generatePreRequisiteLibs_modules_dot_stx);
-        at: 'ALLPREREQUISITE_LIBS' put: (self generateAllPreRequisiteLibs_modules_dot_stx);
-        at: 'SUBPROJECT_LIBS' put: (self generateSubProjectLines_modules_dot_stx  ). 
-
-    ^ d
-
-    "Modified: / 14-09-2006 / 18:58:41 / cg"
-!
-
-nsiDeliveredConsoleExecutable
-    self isGUIApplication ifFalse:[^ '' "made anyway"].
-    self makeConsoleApplication ifTrue:[
-        ^ ('"',self applicationName,'.com','"').
-    ].
-    ^ ''
-!
-
-nsiDeliveredExecutables
-    "by default, an executable named after the application.
-     Redefine, if thats not the case. If multiple have to be delivered, 
-     return a string containing each individually double-quoted."
-
-    |s|
-
-    s := ''.
-    self makeNonConsoleApplication ifTrue:[
-        s := '"', self applicationNameNoConsole,'"'.
-    ].
-    self makeConsoleApplication ifTrue:[
-        s := s , (' "',self applicationNameConsole,'"').
-    ].
-    ^ s
-!
-
-packageName_dot_nsi_mappings
-    |d s defLines undefLines stxSourcesLines appSourcesLines|
-
-    d := Dictionary new.
-    d
-        at: 'TOP' put: ( self pathToTop_win32 );
-
-        at: 'APPLICATION' put: (self applicationName);
-        at: 'APPLICATION_ICON' put: (self applicationInstallIconFileName);
-        at: 'NSI_FILENAME' put: (self nsiFilename );
-        at: 'CONSOLE_APPLICATION' put: (self applicationNameConsole);
-        at: 'NOCONSOLE_APPLICATION' put: (self applicationNameNoConsole);
-        at: 'DELIVERED_EXECUTABLES' put: (self nsiDeliveredExecutables);
-        at: 'MODULE' put: ( self module );  
-        at: 'MODULE_KEY' put: ( self module asUppercaseFirst );  
-        at: 'PRODUCT_NAME' put: (self productName);
-        at: 'PRODUCT_FILENAME' put: (self productFilename);
-        at: 'PRODUCT_VERSION' put: (self productVersion);
-        at: 'PRODUCT_DATE' put: (self productDate);
-        at: 'PRODUCT_PUBLISHER' put: (self productPublisher);
-        at: 'PRODUCT_WEBSITE' put: (self productWebSite);
-        at: 'PRODUCT_INSTALLDIR' put: (self productInstallDir);
-        at: 'FILETYPE' put: ( 'VFT_DLL' );
-        at: 'FILE_VERSION_COMMASEPARATED' put: (self fileVersionCommaSeparated);
-        at: 'PRODUCT_VERSION_COMMASEPARATED' put: (self productVersionCommaSeparated);
-
-        at: 'COMPANY_NAME' put: (self companyName);
-        at: 'FILE_DESCRIPTION' put: (self fileDescription);
-        at: 'FILE_VERSION' put: (self fileVersion);
-        at: 'LEGAL_COPYRIGHT' put: (self legalCopyright ? '');
-        at: 'INTERNAL_NAME' put: (self internalName).
-
-    s := self legalCopyright.
-    s notNil ifTrue:[
-        d  at: 'LEGAL_COPYRIGHT_LINE' put: '      VALUE "LegalCopyright", "',s,'\0"'
-    ].
-    s := self applicationInstallIconFileName.
-    s isNil ifTrue:[
-        d  at:'SEMI_IF_NO_ICON_EXISTS' put:';; '.
-        d  at:'SEMI_IF_ICON_EXISTS' put:''.
-    ] ifFalse:[
-        d  at:'SEMI_IF_NO_ICON_EXISTS' put:''.
-        d  at:'SEMI_IF_ICON_EXISTS' put:';; '.
-"/        d  at: #'ICONDEFINITION_LINE' put: 'IDR_MAINFRAME           ICON    DISCARDABLE     "',s,'"'
-    ].
-
-"/    s := self splashFileName.
-"/    s notNil ifTrue:[
-"/        d  at: #'SPLASHDEFINITION_LINE' put: 'IDR_SPLASH            BITMAP DISCARDABLE     "',s,'"'
-"/    ].
-
-    s := self docDirPath_win32.
-    s isEmptyOrNil ifTrue:[
-        d  at:'SEMI_IF_NO_DOC_EXISTS' put:';; '.
-    ] ifFalse:[
-        d  at:'SEMI_IF_NO_DOC_EXISTS' put:''.
-    ].   
-    self offerSmalltalkSourceCode ifTrue:[
-        stxSourcesLines := self stxSourcesLines_dot_nsi:d.
-        d at:'STX_SOURCES_LINES' put:stxSourcesLines.
-        d  at:'SEMI_IF_NO_STX_SOURCES' put:''.
-    ] ifFalse:[
-        d at:'STX_SOURCES_LINES' put:''.
-        d  at:'SEMI_IF_NO_STX_SOURCES' put:';;'.
-    ].
-    self offerApplicationSourceCode ifTrue:[
-        appSourcesLines := self appSourcesLines_dot_nsi:d.
-        d at:'APP_SOURCES_LINES' put:appSourcesLines.
-        d at:'SEMI_IF_NO_STX_SOURCES' put:''.
-    ] ifFalse:[
-        d at:'APP_SOURCES_LINES' put:''.
-        d at:'SEMI_IF_NO_APP_SOURCES' put:';;'.
-    ].
-
-    defLines := self fileExtensionDefinitionLines_dot_nsi:d.
-    undefLines := self fileExtensionUndefinitionLines_dot_nsi:d.
-
-    d at:'FILE_EXTENSION_DEFINITION_LINES' put:defLines.
-    d at:'FILE_EXTENSION_UNDEFINITION_LINES' put:undefLines.
-    d at:'ADDITIONAL_FILES_TO_INSTALL' put:(self additionalFilesToInstall_dot_nsi:d).
-    d at:'COMMON_FILES_TO_INSTALL' put:(self commonFilesToInstall_dot_nsi:d).
-    d at:'ADDITIONAL_SECTIONS' put:(self additionalSections_dot_nsi:d).
-    d at:'ADDITIONAL_SECTIONS_DESCRIPTIONS' put:(self additionalSectionsDescriptions_dot_nsi:d).
-    d at:'ADDITIONAL_SECTIONS_INSERT_DESCRIPTIONS' put:(self additionalSectionsInsertDescriptions_dot_nsi:d).
-    d at: 'DIRECTORY_UNINSTALL_LINES' put: (self directoryUninstallLines_dot_nsi).
-    ^ d
-
-    "Created: / 14-09-2006 / 21:08:44 / cg"
-    "Modified: / 15-05-2007 / 17:24:27 / cg"
-!
-
-preRequisiteLine_bc_dot_mak_mappings: aProjectID 
-
-    ^ Dictionary new
-        at: 'FILE_NAME' put: (self libraryNameFor:aProjectID);  
-        at: 'MODULE_DIRECTORY' put: (self msdosPathToPackage:aProjectID from:self package);     
-        at: 'BACK_DIRECTORY' put: (self msdosPathToPackage:self package from:aProjectID);     
-        yourself
-
-    "Modified: / 09-02-2007 / 16:59:21 / cg"
-!
-
-preRequisiteLine_bc_dot_mak_mappingsForClass:aClass
-    |relPath|
-
-    relPath := (PackageId from:aClass package) directory copy replaceAll:$/ with:$\.
-
-    ^ Dictionary new
-        at: 'FILE_NAME' put: ( aClass classBaseFilename asFilename withoutSuffix baseName );  
-        at: 'MODULE_DIRECTORY' put:relPath;     
-        yourself
-
-    "Modified: / 09-02-2007 / 16:28:12 / cg"
-!
-
-preRequisiteLine_make_dot_proto_mappings: aProjectID 
-
-    ^ Dictionary new
-        at: 'FILE_NAME' put: (self libraryNameFor:aProjectID);  
-        at: 'MODULE_DIRECTORY' put: (self unixPathToPackage:aProjectID from:self package);     
-        at: 'BACK_DIRECTORY' put: (self unixPathToPackage:self package from:aProjectID);     
-        yourself
-!
-
-preRequisiteLine_make_dot_proto_mappingsForClass:aClass
-    |relPath|
-
-    relPath := (PackageId from:aClass package) directory.
-
-    ^ Dictionary new
-        at: 'FILE_NAME' put: ( aClass classBaseFilename asFilename withoutSuffix baseName );  
-        at: 'MODULE_DIRECTORY' put:relPath;     
-        yourself
-
-    "Modified: / 09-02-2007 / 16:28:12 / cg"
-!
-
-stxSourcesLines_dot_nsi:bindings
-    ^ String streamContents:[:s |
-        s nextPutAll:
-'Section "STX Sources" Section3
-    SectionIn 1
-    SetOverwrite ifnewer
-'.
-        self stxSourcesProjects do:[:projectID |
-            s nextPutAll:((self defineSTXSourceLine_nsi_for: projectID) expandPlaceholdersWith:bindings).
-            s cr.
-        ].
-        s nextPutAll:
-'SectionEnd'.
-
-    ].
-
-    "Created: / 15-10-2006 / 12:59:03 / cg"
-!
-
-subProjectLine_bc_dot_mak_mappings: aProjectID 
-    ^ Dictionary new
-        at: 'LIBRARY_NAME' put: (self libraryNameFor: aProjectID );     
-        at: 'PATH_TO_SUB_PROJECT' put: ( (PackageId from:aProjectID) module,'\',(PackageId from:aProjectID) directory copy replaceAll:$/ with:$\ ); 
-        at: 'PATH_TO_MYPROJECT' put: (self msdosPathToPackage: self package from: aProjectID); 
-        yourself
-
-    "Modified: / 14-09-2006 / 18:59:26 / cg"
-!
-
-subProjectLine_make_dot_proto_mappings: aProjectID 
-    ^ Dictionary new
-        at: 'LIBRARY_NAME' put: (self libraryNameFor: aProjectID );     
-        at: 'PATH_TO_SUB_PROJECT' put: ( (PackageId from:aProjectID) module,'\',(PackageId from:aProjectID) directory copy replaceAll:$/ with:$\ ); 
-        at: 'PATH_TO_MYPROJECT' put: (self unixPathToPackage: self package from: aProjectID); 
-        yourself
-
-    "Modified: / 14-09-2006 / 18:59:26 / cg"
-! !
-
-!ApplicationDefinition class methodsFor:'mappings support'!
-
-generateAllPreRequisiteLibs_modules_dot_stx
-    ^ String streamContents:[:s |
-        self allPreRequisitesSorted do:[:projectID | 
-            s nextPutLine:(self libraryNameFor:projectID)
-        ].
-        self isGUIApplication ifTrue:[
-            self guiClassFileNames_win32 do:[:eachFilename |
-                s nextPutLine:(eachFilename asFilename withoutSuffix baseName)
-            ].
-        ].
-    ].
-
-    "
-     bosch_dapasx_application generatePreRequisiteLibs_modules_dot_stx
-    "
-
-    "Modified: / 07-09-2006 / 17:22:58 / cg"
-!
-
-generatePreRequisiteLibs_modules_dot_stx
-    ^ String streamContents:[:s |
-        self effectivePreRequisites do:[:projectID | 
-            s nextPutLine:(self libraryNameFor:projectID)
-        ].
-        self isGUIApplication ifTrue:[
-            self guiClassFileNames_win32 do:[:eachFilename |
-                s nextPutLine:(eachFilename asFilename withoutSuffix baseName)
-            ].
-        ].
-    ].
-
-    "
-     bosch_dapasx_application generatePreRequisiteLibs_modules_dot_stx
-    "
-
-    "Modified: / 07-09-2006 / 17:22:58 / cg"
-!
-
-generatePreRequisiteLines_bc_dot_mak         
-
-    ^ String streamContents:[:s |
-        self allPreRequisitesSorted do:[:eachPackage |
-            |mappings newObjectLine|
-            mappings := self preRequisiteLine_bc_dot_mak_mappings: eachPackage.
-            newObjectLine := self replaceMappings: mappings
-                                in: self preRequisiteLine_bc_dot_mak.
-            s nextPutAll:newObjectLine. 
-            s cr. 
-        ].
-        self guiClasses_win32 do:[:eachClass |
-            |mappings newObjectLine|
-            mappings := self preRequisiteLine_bc_dot_mak_mappingsForClass: eachClass.
-            newObjectLine := self replaceMappings: mappings
-                                in: self preRequisiteLine_bc_dot_mak.
-            s nextPutAll:newObjectLine. 
-            s cr. 
-        ].
-    ]
-
-    "
-     bosch_dapasx_application generatePreRequisiteLines_bc_dot_mak 
-    "
-
-    "Created: / 09-08-2006 / 11:24:39 / fm"
-    "Modified: / 14-09-2006 / 21:58:47 / cg"
-!
-
-generatePreRequisiteLines_make_dot_proto        
-
-    ^ String streamContents:[:s |
-        self allPreRequisitesSorted do:[:eachPackage |
-            |mappings newObjectLine|
-            mappings := self preRequisiteLine_make_dot_proto_mappings: eachPackage.
-            newObjectLine := self replaceMappings: mappings
-                                in: self preRequisiteLine_make_dot_proto.
-            s nextPutAll:newObjectLine. 
-            s cr. 
-        ].
-        self guiClasses_win32 do:[:eachClass |
-            |mappings newObjectLine|
-            mappings := self preRequisiteLine_make_dot_proto_mappingsForClass: eachClass.
-            newObjectLine := self replaceMappings: mappings
-                                in: self preRequisiteLine_make_dot_proto.
-            s nextPutAll:newObjectLine. 
-            s cr. 
-        ].
-    ]
-
-    "
-     bosch_dapasx_application generatePreRequisiteLines_bc_dot_mak 
-    "
-
-    "Created: / 09-08-2006 / 11:24:39 / fm"
-    "Modified: / 14-09-2006 / 21:58:47 / cg"
-!
-
-generateRequiredLibobjs_make_dot_proto
-    |libobjPath libPath|
-
-    ^ String streamContents:[:s |
-        self allPreRequisitesSorted do:[:projectID |
-            libPath := self pathToPackage_unix:projectID.
-            libobjPath := libPath , '/', (self libraryNameFor:projectID).
-            s space; nextPutAll: libobjPath,'$(O_EXT)'; nextPutLine:' \'.
-        ].
-
-        s cr.
-    ].
-
-    "
-     alspa_batch_application generateRequiredLibobjs_make_dot_proto      
-    "
-!
-
-generateRequiredLibs_bc_dot_mak
-    ^ String streamContents:[:s |
-        s nextPutLine:' \'.
-        self allPreRequisitesSorted do:[:projectID | 
-            s space; nextPutAll:(self libraryNameFor:projectID),'.dll'; nextPutLine:' \'.
-        ].
-
-        self isGUIApplication ifTrue:[
-            self guiClassFileNames_win32 do:[:eachFilename |
-                s space; nextPutAll:eachFilename; nextPutLine:' \'.
-            ].
-        ].
-"/        self subProjects do:[:projectID | 
-"/            s space; nextPutAll:(self libraryNameFor:projectID),'.dll'; nextPutLine:' \'.
-"/        ].
-        s cr.
-    ].
-
-    "
-     bosch_dapasx_application generateRequiredLibs_bc_dot_mak      
-    "
-
-    "Modified: / 07-09-2006 / 17:22:51 / cg"
-!
-
-generateRequiredLibs_make_dot_proto
-    ^ String streamContents:[:s |
-        self allPreRequisitesSorted do:[:projectID | 
-            s space; nextPutAll:(self libraryNameFor:projectID); nextPutLine:' \'.
-        ].
-
-        self isGUIApplication ifTrue:[
-            self guiClassFileNames_unix do:[:eachFilename |
-                s space; nextPutAll:eachFilename; nextPutLine:' \'.
-            ].
-        ].
-"/        self subProjects do:[:projectID | 
-"/            s space; nextPutAll:(self libraryNameFor:projectID); nextPutLine:' \'.
-"/        ].
-        s cr.
-    ].
-
-    "
-     alspa_batch_application generateRequiredLibs_make_dot_proto      
-    "
-!
-
-generateRequiredLinkLibobjs_make_dot_proto
-
-    ^ String streamContents:[:s |
-        self allPreRequisitesSorted do:[:projectID | 
-            s space; nextPutAll:(self libraryNameFor:projectID),'$(O_EXT)'; nextPutLine:' \'.
-        ].
-
-        self isGUIApplication ifTrue:[
-            self guiClassFileNames_unix do:[:eachFilename |
-                s space; nextPutAll:eachFilename,'$(O_EXT)'; nextPutLine:' \'.
-            ].
-        ].
-"/        self subProjects do:[:projectID | 
-"/            s space; nextPutAll:(self libraryNameFor:projectID),'$(O_EXT)'; nextPutLine:' \'.
-"/        ].
-        s cr.
-    ].
-
-    "
-     alspa_batch_application generateRequiredLinkLibobjs_make_dot_proto      
-    "
-!
-
-generateSubProjectLines_bc_dot_mak         
-
-    ^ String streamContents:[:s |
-        self subProjects do:[:projectID |
-            |mappings newObjectLine|
-
-            mappings := self subProjectLine_bc_dot_mak_mappings: projectID.
-            newObjectLine := self replaceMappings: mappings
-                                in: self subProjectLine_bc_dot_mak.
-            s nextPutAll:newObjectLine. 
-            s cr. 
-        ]
-    ]
-"
-    bosch_dapasx_application generateSubProjectLines_bc_dot_mak 
-
-"
-
-    "Created: / 09-08-2006 / 11:24:39 / fm"
-    "Modified: / 14-09-2006 / 18:46:09 / cg"
-!
-
-generateSubProjectLines_make_dot_proto         
-
-    ^ String streamContents:[:s |
-        self subProjects do:[:projectID |
-            |mappings newObjectLine|
-
-            mappings := self subProjectLine_make_dot_proto_mappings: projectID.
-            newObjectLine := self replaceMappings: mappings
-                                in: self subProjectLine_bc_dot_mak.
-            s nextPutAll:newObjectLine. 
-            s cr. 
-        ]
-    ]
-"
-    bosch_dapasx_application generateSubProjectLines_make_dot_proto 
-
-"
-
-    "Created: / 09-08-2006 / 11:24:39 / fm"
-    "Modified: / 14-09-2006 / 18:46:09 / cg"
-!
-
-generateSubProjectLines_modules_dot_stx
-    |string|
-
-    string := String streamContents:[:s |
-            self subProjects do:[:projectID | 
-                    s nextPutLine:(self libraryNameFor:projectID)
-                ].
-            ].
-
-    ^ string
-
-    "
-     bosch_dapasx_application generateSubProjectLines_modules_dot_stx
-    "
-
-    "Modified: / 17-08-2006 / 17:22:37 / cg"
-! !
-
 !ApplicationDefinition class methodsFor:'queries'!
 
 canHaveExtensions
@@ -2536,6 +2538,12 @@
     "
 
     "Created: / 30-08-2006 / 15:29:49 / cg"
+!
+
+projectType
+    ^ self isGUIApplication
+        ifTrue:[ GUIApplicationType  ]
+        ifFalse:[ NonGUIApplicationType ]
 ! !
 
 !ApplicationDefinition class methodsFor:'sanity checks'!
@@ -2547,7 +2555,7 @@
         startupClassName
 "/        startupSelector
     ) do:[:sel |
-        (self theMetaclass implements:sel) ifFalse:[
+        (self theMetaclass includesSelector:sel) ifFalse:[
             Dialog 
                 warn:('The %1-method is missing from the description %2!!' 
                         bindWith:sel allBold
@@ -2568,6 +2576,10 @@
 
 !ApplicationDefinition class methodsFor:'testing'!
 
+isAbstract
+    ^ self == ApplicationDefinition
+!
+
 isApplicationDefinition
     ^ self ~~ ApplicationDefinition
 
@@ -2583,10 +2595,11 @@
 !ApplicationDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ApplicationDefinition.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: ApplicationDefinition.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.145 2009/10/10 15:56:54 cg Exp §'
+    ^ '$Id: ApplicationDefinition.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/Array.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Array.st	Thu Nov 05 14:41:30 2009 +0000
@@ -2546,10 +2546,11 @@
 !Array class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Array.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Array.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Array.st,v 1.146 2009/10/06 15:16:24 cg Exp §'
+    ^ '$Id: Array.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/Association.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Association.st	Thu Nov 05 14:41:30 2009 +0000
@@ -173,10 +173,11 @@
 !Association class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Association.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Association.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Association.st,v 1.23 2009/10/06 15:16:10 cg Exp §'
+    ^ '$Id: Association.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/Autoload.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Autoload.st	Thu Nov 05 14:41:30 2009 +0000
@@ -763,12 +763,13 @@
 !Autoload class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Autoload.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Autoload.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.155 2009/10/14 10:50:02 stefan Exp §'
+    ^ '$Id: Autoload.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 Autoload initialize!
 
+
--- a/AutoloadMetaclass.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/AutoloadMetaclass.st	Thu Nov 05 14:41:30 2009 +0000
@@ -104,10 +104,11 @@
 !AutoloadMetaclass class methodsFor:'documentation'!
 
 version
-    ^ '$Id: AutoloadMetaclass.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: AutoloadMetaclass.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/AutoloadMetaclass.st,v 1.7 2009/10/14 11:36:30 stefan Exp §'
+    ^ '$Id: AutoloadMetaclass.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/Behavior.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Behavior.st	Thu Nov 05 14:41:30 2009 +0000
@@ -985,6 +985,7 @@
     "Modified: 23.4.1996 / 15:55:52 / cg"
 ! !
 
+
 !Behavior methodsFor:'Camp Smalltalk'!
 
 sunitAllSelectors
@@ -1034,6 +1035,10 @@
 
 !Behavior methodsFor:'Compatibility-Squeak'!
 
+classComment:comment stamp:commentStamp
+    self comment:comment
+!
+
 defaultNameStemForInstances
     "Answer a basis for names of default instances of the receiver"
 
@@ -1041,6 +1046,22 @@
 
 !
 
+kindOfSubclass
+    "Answer a String that is the keyword that describes the receiver's kind 
+    of subclass, either a regular subclass, a variableSubclass, a  
+    variableByteSubclass, a variableWordSubclass, or a weakSubclass."
+
+    self isWeakPointers ifTrue:[
+        ^ ' weakSubclass: '
+    ].
+    ^ ' ',self firstDefinitionSelectorPart,' '
+
+    "
+     Array kindOfSubclass
+     WeakArray kindOfSubclass
+    "
+!
+
 lookupSelector:aSelector
     "return the method for a selector - Squeak compatibility"
 
@@ -4111,22 +4132,26 @@
 implements:aSelector
     "return true, if the receiver implements aSelector.
      (i.e. implemented in THIS class - NOT in a superclass).
+    This is semantically equivalent to includesSelector: (which is ST/80/Squeak compatibility).
 
      Caveat:
-	This simply checks for the selector being present in the classes
-	selector table - therefore, it does not care for ignoredMethods.
-	(but: you should not use this method for protocol-testing, anyway).
+        This simply checks for the selector being present in the classes
+        selector table - therefore, it does not care for ignoredMethods.
+        (but: you should not use this method for protocol-testing, anyway).
 
      Hint:
-	Dont use this method to check if someone responds to a message -
-	use #canUnderstand: on the class or #respondsTo: on the instance
-	to do this."
+        Dont use this method to check if someone responds to a message -
+        use #canUnderstand: on the class or #respondsTo: on the instance
+        to do this."
 
     ^ self includesSelector:aSelector
 
     "
      notice: this is class protocol
 
+       True includesSelector:#ifTrue:
+       True includesSelector:#==
+
        True implements:#ifTrue:
        True implements:#==
 
@@ -4163,11 +4188,17 @@
 includesSelector:aSelector
     "return true, if the methodDictionary of THIS class includes a method for aSelector.
      (i.e. if aSelector is implemented in THIS class - NOT in a superclass).
+     This is semantically equivalent to implements: (ST/80/Squeak compatibility).
 
      Hint:
-	Dont use this method to check if someone responds to a message -
-	use #canUnderstand: on the class or #respondsTo: on the instance
-	to do this."
+        Dont use this method to check if someone responds to a message -
+        use #canUnderstand: on the class or #respondsTo: on the instance
+        to do this.
+
+     Caveat:
+        This simply checks for the selector being present in the classes
+        selector table - therefore, it does not care for ignoredMethods.
+        (but: you should not use this method for protocol-testing, anyway)."
 
     ^ self methodDictionary includesIdenticalKey:aSelector
 
@@ -4572,10 +4603,11 @@
 !Behavior class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Behavior.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Behavior.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.294 2009/10/10 09:00:40 cg Exp §'
+    ^ '$Id: Behavior.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/Block.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Block.st	Thu Nov 05 14:41:30 2009 +0000
@@ -485,7 +485,7 @@
 
     |numArgs|
 
-    numArgs := handlerBlock numArgs.
+    numArgs := handlerBlock isBlock ifTrue:[handlerBlock numArgs] ifFalse:[0].
     numArgs == 1 ifTrue:[
         ^ self on:Error do:handlerBlock
     ].
@@ -547,7 +547,6 @@
     "Created: 15.11.1996 / 11:38:37 / cg"
 ! !
 
-
 !Block methodsFor:'accessing'!
 
 home
@@ -2027,15 +2026,18 @@
         exceptionHandlerInContext isExceptionHandler ifFalse:[
             exceptionHandlerInContext isNil ifTrue:[
                 'Block [warning]: nil ExceptionHandler in on:do:on:do:-context' errorPrintCR.
-            ] ifFalse:[(exceptionHandlerInContext isBehavior 
-                        and:[exceptionHandlerInContext isLoaded not]) ifTrue:[
-                "If the exception class is still autoloaded,
-                 it does not accept our exception. Raising the exception would load the class"
-                ^ nil
             ] ifFalse:[
-                'Block [warning]: non-ExceptionHandler in on:do:on:do:-context' errorPrintCR.
-            ]].
-            aContext fullPrint.
+                (exceptionHandlerInContext isBehavior 
+                and:[exceptionHandlerInContext isLoaded not]) ifTrue:[
+                    "If the exception class is still autoloaded,
+                     it does not accept our exception. Raising the exception would load the class"
+                    ^ nil
+                ] ifFalse:[
+                    'Block [warning]: non-ExceptionHandler in on:do:on:do:-context' errorPrintCR.
+                ]
+            ].
+            aContext fullPrintString errorPrintCR.
+            self breakPoint:#cg.
             ^ nil.
         ].
         (exceptionHandlerInContext accepts:exceptionCreator) ifTrue:[
@@ -2046,15 +2048,18 @@
         exceptionHandlerInContext isExceptionHandler ifFalse:[
             exceptionHandlerInContext isNil ifTrue:[
                 'Block [warning]: nil ExceptionHandler in on:do:on:do:-context' errorPrintCR.
-            ] ifFalse:[(exceptionHandlerInContext isBehavior 
-                        and:[exceptionHandlerInContext isLoaded not]) ifTrue:[
-                "If the exception class is still autoloaded,
-                 it does not accept our exception. Raising the exception would load the class"
-                ^ nil
             ] ifFalse:[
-                'Block [warning]: non-ExceptionHandler in on:do:on:do:-context' errorPrintCR.
-            ]].
-            aContext fullPrint.
+                (exceptionHandlerInContext isBehavior 
+                and:[exceptionHandlerInContext isLoaded not]) ifTrue:[
+                    "If the exception class is still autoloaded,
+                     it does not accept our exception. Raising the exception would load the class"
+                    ^ nil
+                ] ifFalse:[
+                    'Block [warning]: non-ExceptionHandler in on:do:on:do:-context' errorPrintCR.
+                ]
+            ].
+            aContext fullPrintString errorPrintCR.
+            self breakPoint:#cg.
             ^ nil.
         ].
         (exceptionHandlerInContext accepts:exceptionCreator) ifTrue:[
@@ -2885,12 +2890,13 @@
 !Block class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Block.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Block.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Block.st,v 1.172 2009/10/04 15:44:51 cg Exp §'
+    ^ '$Id: Block.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 Block initialize!
 
+
--- a/Boolean.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Boolean.st	Thu Nov 05 14:41:30 2009 +0000
@@ -222,10 +222,11 @@
 !Boolean class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Boolean.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Boolean.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Boolean.st,v 1.39 2009/10/06 15:16:47 cg Exp §'
+    ^ '$Id: Boolean.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/ByteArray.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/ByteArray.st	Thu Nov 05 14:41:30 2009 +0000
@@ -3244,10 +3244,11 @@
 !ByteArray class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ByteArray.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: ByteArray.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ByteArray.st,v 1.193 2009/10/14 17:29:49 stefan Exp §'
+    ^ '$Id: ByteArray.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/CharacterArray.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/CharacterArray.st	Thu Nov 05 14:41:30 2009 +0000
@@ -1106,6 +1106,13 @@
 
 !
 
+withSqueakLineEndings
+    "assume the string is textual, and that CR, LF, and CRLF are all 
+    valid line endings.  Replace each occurence with a single CR"
+
+    ^ self asStringCollection asStringWith:Character cr.
+!
+
 withoutLeading: char
     "return a copy of myself without leading a char.
      Returns an empty string, if the receiver consist only of a char."
@@ -2886,14 +2893,14 @@
 
     |newString firstChar firstCharAsUppercase|
 
-    firstChar := (self at:1).
+    firstChar := (self at:1 ifAbsent:[^ self]).  
     firstCharAsUppercase := firstChar asUppercase.
     firstChar == firstCharAsUppercase ifTrue:[ ^ self].
 
     firstCharAsUppercase bitsPerCharacter > self bitsPerCharacter ifTrue:[
-	newString := firstCharAsUppercase stringSpecies fromString:self.
+        newString := firstCharAsUppercase stringSpecies fromString:self.
     ] ifFalse:[
-	newString := self stringSpecies fromString:self.
+        newString := self stringSpecies fromString:self.
     ].
     newString at:1 put:firstCharAsUppercase.
     ^ newString
@@ -3286,13 +3293,14 @@
 !CharacterArray methodsFor:'emphasis'!
 
 actionForAll:aBlock
-    "change the action block of all characters"
+    "change the action block of all characters.
+     Some widgets use this like a href if clicked onto the text."
 
     ^ self asText actionForAll:aBlock
 !
 
 allBold
-    "return a test object representing the receiver, but all boldified"
+    "return a text object representing the receiver, but all boldified"
 
     "this test allows for small non-gui apps to be built without libbasic2 (where Text is)"
     Text isNil ifTrue:[^ self].
@@ -3305,7 +3313,7 @@
 !
 
 allItalic
-    "return a test object representing the receiver, but all in italic"
+    "return a text object representing the receiver, but all in italic"
 
     "this test allows for small non-gui apps to be built without libbasic2 (where Text is)"
     Text isNil ifTrue:[^ self].
@@ -3318,7 +3326,7 @@
 !
 
 allStrikedOut
-    "return a test object representing the receiver, but all in strikeout"
+    "return a text object representing the receiver, but all in strikeout"
 
     "this test allows for small non-gui apps to be built without libbasic2 (where Text is)"
     Text isNil ifTrue:[^ self].
@@ -3331,7 +3339,7 @@
 !
 
 allUnderlined
-    "return a test object representing the receiver, but all with underline"
+    "return a text object representing the receiver, but all with underline"
 
     "this test allows for small non-gui apps to be built without libbasic2 (where Text is)"
     Text isNil ifTrue:[^ self].
@@ -3344,6 +3352,10 @@
 !
 
 colorizeAllWith:aColor
+    "return a text object representing the receiver, but all colorized"
+
+    "this test allows for small non-gui apps to be built without libbasic2 (where Text is)"
+    Text isNil ifTrue:[^ self].
     ^ self asText colorizeAllWith:aColor
 
     "
@@ -3352,6 +3364,20 @@
     "
 !
 
+colorizeAllWith:fgColor on:bgColor
+    "return a text object representing the receiver, but all colorized with
+     both fg and background color"
+
+    "this test allows for small non-gui apps to be built without libbasic2 (where Text is)"
+    Text isNil ifTrue:[^ self].
+    ^ self asText colorizeAllWith:fgColor on:bgColor
+
+    "
+     Transcript showCR:('hello' colorizeAllWith:Color red on:Color yellow)
+     Transcript showCR:('world' colorizeAllWith:Color red)
+    "
+!
+
 emphasis
     "return the emphasis.
      Since characterArrays do not hold any emphasis information,
@@ -3422,6 +3448,10 @@
 !
 
 emphasizeAllWith:emphasis
+    "return a text object representing the receiver, but all emphasized"
+
+    "this test allows for small non-gui apps to be built without libbasic2 (where Text is)"
+    Text isNil ifTrue:[^ self].
     ^ self asText emphasizeAllWith:emphasis
 
     "
@@ -3446,8 +3476,16 @@
     "Created: / 13.12.1999 / 21:49:24 / cg"
 !
 
+withoutBackgroundColorEmphasis
+    ^ self
+!
+
 withoutEmphasis:emphasisToRemove
     ^ self
+!
+
+withoutForegroundColorEmphasis
+    ^ self
 ! !
 
 !CharacterArray methodsFor:'encoding & decoding'!
@@ -4594,6 +4632,7 @@
     "Modified: 17.4.1997 / 12:50:23 / cg"
 ! !
 
+
 !CharacterArray methodsFor:'special string converting'!
 
 expandPlaceholdersWith:argArrayOrDictionary
@@ -4637,7 +4676,8 @@
      dict at:1 put:'one'.
      dict at:$a put:'AAAAA'.
      dict at:$b put:[ Time now ].
-     'hello %1 %a %b' expandPlaceholdersWith:dict
+     dict at:'foo' put:[ Date today ].
+     'hello %1 %a %b %(foo)' expandPlaceholdersWith:dict   
     "
 
     "Modified: 1.7.1997 / 00:53:24 / cg"
@@ -5124,6 +5164,7 @@
      This is the reverse operation of withCRs."
 
     ^ self copyReplaceAll:(Character cr) with:$\
+
     "
      'hello
 world' withoutCRs
@@ -5234,7 +5275,7 @@
      Whitespace is space, tab, newline, formfeed.
      Use withoutSpaces, if you want to remove spaces only."
 
-    self trimForWhich:[:ch | ch isSeparator]
+    ^ self trimForWhich:[:ch | ch isSeparator]
 
     "
      '    foo    ' withoutSeparators
@@ -5242,6 +5283,7 @@
      'foo    ' withoutSeparators
      '       ' withoutSeparators
      ('  foo' , Character tab asString , '    ') withoutSeparators inspect
+     '    foo    ' asUnicode16String withoutSeparators
     "
 !
 
@@ -5251,7 +5293,7 @@
      Notice: this does NOT remove tabs, newline or any other whitespace.
      Use withoutSeparators for this."
 
-    self trimForWhich:[:ch | ch == Character space]
+    ^ self trimForWhich:[:ch | ch == Character space]
 
     "
      '    foo    ' withoutSpaces
@@ -5750,12 +5792,13 @@
 !CharacterArray class methodsFor:'documentation'!
 
 version
-    ^ '$Id: CharacterArray.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: CharacterArray.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.415 2009/10/10 12:06:21 cg Exp §'
+    ^ '$Id: CharacterArray.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 CharacterArray initialize!
 
+
--- a/CharacterWriteStream.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/CharacterWriteStream.st	Thu Nov 05 14:41:30 2009 +0000
@@ -240,10 +240,11 @@
 !CharacterWriteStream class methodsFor:'documentation'!
 
 version
-    ^ '$Id: CharacterWriteStream.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: CharacterWriteStream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/CharacterWriteStream.st,v 1.9 2009/10/05 09:20:25 cg Exp §'
+    ^ '$Id: CharacterWriteStream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/Class.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Class.st	Thu Nov 05 14:41:30 2009 +0000
@@ -707,10 +707,12 @@
 
     (owner := self owningClass) notNil ifTrue:[^ owner classFilename].
 
-    (SVN::CompatModeQuery notNil 
-    and:[SVN::CompatModeQuery isLoaded 
-    and:[(SVN::CompatModeQuery query ? true) not]])
-        ifTrue:[^SVN::Repository containerNameForClass: self].
+"/  This was added as an extension of libsvn - should be no longer needed
+"/    compatQuery := Smalltalk classNamed: 'SVN::CompatModeQuery'.
+"/    (compatQuery notNil 
+"/    and:[compatQuery isLoaded 
+"/    and:[(compatQuery query ? true) not]])
+"/        ifTrue:[^SVN::Repository containerNameForClass: self].
 
     classFilename notNil ifTrue:[ ^ classFilename ].
 
@@ -720,15 +722,14 @@
             ^ fn
         ].
     ].
-    ^ (Smalltalk fileNameForClass:self), '.st'
+    ^ (Smalltalk fileNameForClass:self), '.', self sourceFileSuffix
 
     "
-     SVN::Repository classFilename   
-     Array classFilename 
+     SVN::Repository classFilename          
+     Array classFilename                    
     "
 
     "Modified: / 22-10-2008 / 20:58:21 / cg"
-    "Modified: / 13-08-2009 / 16:07:07 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 classPool
@@ -1004,7 +1005,7 @@
 !
 
 package
-    "return the package-ID of the class"
+    "return the package-ID-Symbol of the class."
 
     |owner|
 
@@ -1020,7 +1021,7 @@
 !
 
 package:aSymbol
-    "set the package of the class."
+    "set the package-ID.Symbol of the class."
 
     |newPackage oldPackage|
 
@@ -1040,53 +1041,6 @@
     "Modified: / 09-08-2006 / 17:58:53 / fm"
 !
 
-packageInfo
-    "return the package-info of the class - or nil.
-     The packageManager contains information relevant to the package,
-     to which this class belongs - especially, things like pathes to
-     resources, additional files etc. can be optioned this way.
-     A packageInfo loosely relates to what a classLoader is in Java.
-     Experimental."
-
-    |packageId prj handle t|
-
-    packageId := self package.
-    packageId notNil ifTrue:[
-        prj := Project projectWithId:packageId.
-        prj notNil ifTrue:[^ prj].
-
-        "/
-        "/ intermediate kludge (will be removed)
-        "/ search for a loaded class library and extract
-        "/ information from it ...
-        "/
-        handle := ObjectFileLoader loadedObjectHandles
-                    detect:[:h | |cls|
-                        cls := h classes firstIfEmpty:nil.
-                        cls notNil and:[cls package = packageId]
-                    ]
-                    ifNone:nil.
-
-        handle notNil ifTrue:[
-            prj := Project new.
-            prj name:packageId.
-            prj directory:(handle pathName asFilename directory pathName).
-            prj package:packageId.
-            t := packageId asCollectionOfSubstringsSeparatedByAny:'/\:'.
-            prj repositoryModule:(t first).
-            prj repositoryDirectory:(packageId copyFrom:t first size + 2).
-            prj isLoaded:true.
-            ^ prj
-        ]
-    ].
-    ^ nil
-
-    "
-     Object packageInfo
-     OSI::FTAMOperation packageInfo
-    "
-!
-
 primitiveDefinitions:aString
     "{ Pragma: +optSpace }"
 
@@ -1598,19 +1552,15 @@
      For now, all classes return the same global manager.
      But future versions may support mixed reporitories"
 
-    |owner module|
+    |owner|
 
     (owner := self owningClass) notNil ifTrue:[^ owner sourceCodeManager].
 
     "/ see if there is a package-specific manager
-    package notNil ifTrue:[
-        module := package upTo:$:.
-        AbstractSourceCodeManager notNil ifTrue:[
-            AbstractSourceCodeManager availableManagers do:[:mgr |
-                (mgr isResponsibleForModule:module) ifTrue:[^ mgr ].
-            ]
-        ].
+    AbstractSourceCodeManager notNil ifTrue:[
+        ^ AbstractSourceCodeManager sourceCodeManagerForPackage: package.
     ].
+
     ^ Smalltalk at:#SourceCodeManager
 
     "
@@ -3588,6 +3538,17 @@
     "Modified: / 06-03-2007 / 11:55:39 / cg"
 !
 
+hasUnsavedChanges
+    "return true, if there are changes for this class in the current changeSet"
+
+    ^ ChangeSet current includesChangeForClassOrMetaclassOrPrivateClassOf:self
+
+    "
+     Class hasUnsavedChanges
+     Array hasUnsavedChanges
+    "
+!
+
 isBrowserStartable
     "return true, if this is an application class,
      which can be started from the browser"
@@ -5042,10 +5003,11 @@
 !Class class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Class.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Class.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Class.st,v 1.555 2009/10/19 22:03:20 cg Exp §'
+    ^ '$Id: Class.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/ClassBuildError.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/ClassBuildError.st	Thu Nov 05 14:41:30 2009 +0000
@@ -37,9 +37,10 @@
 !ClassBuildError class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ClassBuildError.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: ClassBuildError.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ClassBuildError.st,v 1.2 2009/09/29 19:32:30 cg Exp §'
+    ^ '$Id: ClassBuildError.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
+
--- a/ClassBuilder.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/ClassBuilder.st	Thu Nov 05 14:41:30 2009 +0000
@@ -2182,10 +2182,11 @@
 !ClassBuilder class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ClassBuilder.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: ClassBuilder.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ClassBuilder.st,v 1.83 2009/10/13 15:43:32 cg Exp §'
+    ^ '$Id: ClassBuilder.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/ClassDescription.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/ClassDescription.st	Thu Nov 05 14:41:30 2009 +0000
@@ -4101,14 +4101,15 @@
 !ClassDescription class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ClassDescription.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: ClassDescription.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ClassDescription.st,v 1.210 2009/10/02 15:23:39 cg Exp §'
+    ^ '$Id: ClassDescription.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 ClassDescription initialize!
 ClassDescription::MethodRedefinitionNotification initialize!
 ClassDescription::ClassRedefinitionNotification initialize!
 
+
--- a/Collection.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Collection.st	Thu Nov 05 14:41:30 2009 +0000
@@ -228,7 +228,6 @@
     ^ self withSize:n
 ! !
 
-
 !Collection class methodsFor:'Signal constants'!
 
 emptyCollectionSignal
@@ -333,6 +332,35 @@
     "
 !
 
+gather:aBlock
+    "return an Array,
+     containing all elements as returned from applying aBlock to each element if the receiver,
+     where the block returns a collection of to-be-added elements.
+     This could also be called: collectAllAsArray:"
+
+    ^ self gather:aBlock as:Array
+
+    "
+     (Set withAll:#(10 20 30 10 20 40)) gather:[:el | Array with:el with:el * 2]
+    "
+!
+
+gather:aBlock as:aClass
+    "return an instance of the collection-class aClass,
+     containing all elements as returned from applying aBlock to each element if the receiver.
+     where the block returns a collection of to-be-added elements.
+     This could also be called: collectAll:as:"
+
+    ^ aClass streamContents:[:s |
+        self do: [:ea | s nextPutAll: (aBlock value: ea)]
+    ]
+
+    "
+     (Set withAll:#(10 20 30 10 20 40)) gather:[:el | Array with:el with:el * 2] as:OrderedCollection
+     (Set withAll:#(10 20 30 10 20 40)) collectAll:[:el | Array with:el with:el * 2]
+    "
+!
+
 groupBy:keyBlock having:selectBlock 
     "Like in SQL operation - Split the recievers contents into collections of 
      elements for which keyBlock returns the same results, and return those 
@@ -402,7 +430,6 @@
     ].
 ! !
 
-
 !Collection methodsFor:'accessing'!
 
 anElement
@@ -2165,7 +2192,11 @@
 pairsDo:aTwoArgBlock
     "evaluate the argument, aTwoArgBlock for every element in the collection,
      which is supposed to consist of 2-element collections.
-     The block is called with 2 arguments for each collection in the receiver."
+     The block is called with 2 arguments for each collection in the receiver.
+     CONFUSION ATTACK: 
+        this is different from pairWiseDo:.
+        but the Squeak-pairsDo: does the same as our pairWiseDo: 
+        (sigh: but we were first, so they should have adapted...)"
 
     self do:[:aPair |
         aTwoArgBlock value:(aPair at:1) value:(aPair at:2).
@@ -3560,12 +3591,13 @@
 !Collection class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Collection.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Collection.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Collection.st,v 1.233 2009/10/19 10:21:32 cg Exp §'
+    ^ '$Id: Collection.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 Collection initialize!
 
+
--- a/CompiledCode.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/CompiledCode.st	Thu Nov 05 14:41:30 2009 +0000
@@ -1769,10 +1769,11 @@
 !CompiledCode class methodsFor:'documentation'!
 
 version
-    ^ '$Id: CompiledCode.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: CompiledCode.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/CompiledCode.st,v 1.108 2009/10/06 14:59:40 fm Exp §'
+    ^ '$Id: CompiledCode.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/Date.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Date.st	Thu Nov 05 14:41:30 2009 +0000
@@ -2953,12 +2953,13 @@
 !Date class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Date.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Date.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Date.st,v 1.129 2009/10/07 15:33:07 cg Exp §'
+    ^ '$Id: Date.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 Date initialize!
 
+
--- a/DirectoryStream.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/DirectoryStream.st	Thu Nov 05 14:41:30 2009 +0000
@@ -511,10 +511,6 @@
 
     |prevEntry nextEntry isUnix|
 %{
-#ifdef unix
-    isUnix = true;
-#endif
-
 #ifdef HAS_OPENDIR
     DIR *d;
     DIRENT_STRUCT *dp;
@@ -572,6 +568,11 @@
     }
 # endif /* WIN32 */
 #endif /* HAS_OPENDIR */
+ 
+#ifdef unix
+    isUnix = true;
+#endif
+
 %}.
     lastErrorNumber notNil ifTrue:[^ self ioError].
     nextEntry notNil ifTrue:[
@@ -796,5 +797,6 @@
 !DirectoryStream class methodsFor:'documentation'!
 
 version
-    ^ '$Id: DirectoryStream.st 10447 2009-06-14 13:09:55Z vranyj1 $'
+    ^ '$Id: DirectoryStream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
+
--- a/Error.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Error.st	Thu Nov 05 14:41:30 2009 +0000
@@ -85,12 +85,13 @@
 !Error class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Error.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Error.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Error.st,v 1.10 2009/10/01 13:44:07 cg Exp §'
+    ^ '$Id: Error.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 Error initialize!
 
+
--- a/ExternalStream.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/ExternalStream.st	Thu Nov 05 14:41:30 2009 +0000
@@ -12,7 +12,7 @@
 "{ Package: 'stx:libbasic' }"
 
 ReadWriteStream subclass:#ExternalStream
-	instanceVariableNames:'filePointer mode buffered binary eolMode hitEOF didWrite
+	instanceVariableNames:'handleType handle mode buffered binary eolMode hitEOF didWrite
 		lastErrorNumber readAhead'
 	classVariableNames:'Lobby LastErrorNumber InvalidReadSignal InvalidWriteSignal
 		InvalidModeSignal OpenErrorSignal StreamNotOpenSignal
@@ -67,11 +67,11 @@
 #endif
 
 #ifdef LATER
-#define __isFilePointer(x)      (__Class(x) == ExternalStream__FilePointer)
-#define __CHANGECLASS(o, x)     (__qClass(o) = (x), o)
-#define __MKFILEPOINTER(f)      __CHANGECLASS(__MKEXTERNALADDRESS(f), ExternalStream__FilePointer)
+# define __isFilePointer(x)      (__Class(x) == ExternalStream__FilePointer)
+# define __CHANGECLASS(o, x)     (__qClass(o) = (x), o)
+# define __MKFILEPOINTER(f)      __CHANGECLASS(__MKEXTERNALADDRESS(f), ExternalStream__FilePointer)
 #else
-#define __MKFILEPOINTER(f)      __MKEXTERNALADDRESS(f)
+# define __MKFILEPOINTER(f)      __MKEXTERNALADDRESS(f)
 #endif
 
 #ifdef WIN32
@@ -222,6 +222,7 @@
 	else \
 	  (ret) = __STX_C_NOINT_CALL3("_rtl_read", _rtl_read, fileno(f), (cp), (n));\
       }
+
 #  define WRITE(ret,f, cp, n) \
       { int __res;\
 	HANDLE h; \
@@ -231,7 +232,23 @@
 	else \
 	  (ret) = __STX_C_NOINT_CALL3("_rtl_write", _rtl_write, fileno(f), (cp), (n));\
       }
+
+#  define READ_SOCK_FP(ret,f, cp, n) \
+      { \
+	HANDLE h; \
+	h = _get_osfhandle(fileno(f)); \
+	(ret) = __STX_WSA_NOINT_CALL4("recv", recv, h, (cp), (n), 0);\
+      }
+
+#  define WRITE_SOCK_FP(ret,f, cp, n) \
+      { \
+	HANDLE h; \
+	h = _get_osfhandle(fileno(f)); \
+	(ret) = __STX_WSA_NOINT_CALL4("send", send, h, (cp), (n), 0);\
+      }
+
 # else /* MSC */
+
 #  define READ(ret,f, cp, n) \
       { int __res;\
 	int fd; \
@@ -1030,7 +1047,9 @@
 	    (ret) = __offs;                             \
     }                                                   \
   }
+
 # else /* use STDIO */
+
 #  define __READBYTES_OBJ__(ret, f, obj, obj_offs, cnt, isBuffered)     \
   {                                                     \
     int __ooffs = obj_offs;                             \
@@ -1409,9 +1428,11 @@
 
     [Instance variables:]
 
-	filePointer     <Integer>       the unix FILE*; somehow mapped to an integer
-					(notice: not the fd)
-					on Windows: the fileHandle
+	handleType      <Symbol>        desribes what handle is:
+					    win32: #fileHandle, #socketHandle
+					    unix: #filePointer
+	handle          <Integer>       used to be always a filePointer somehow mapped to an integer (FILE* - not the fd);
+					now, either a filePointer or a handle (win32)
 	mode            <Symbol>        #readwrite, #readonly or #writeonly
 	buffered        <Boolean>       true, if buffered (i.e. collects characters - does
 					not output immediately)
@@ -2070,20 +2091,22 @@
 %{
     OBJ fp;
 
-    if ((fp = __INST(filePointer)) != nil) {
-	FILEPOINTER f;
-
-	f = __FILEVal(fp);
-	RETURN ( __MKINT(fileno(f)) );
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if ((fp = __INST(handle)) != nil) {
+	    FILEPOINTER f;
+
+	    f = __FILEVal(fp);
+	    RETURN ( __MKINT(fileno(f)) );
+	}
     }
 %}.
-    filePointer isNil ifTrue:[^ self errorNotOpen].
-    ^ self fileDescriptorOfFile:filePointer
+    handle isNil ifTrue:[^ self errorNotOpen].
+    ^ self fileDescriptorOfFile:handle
 !
 
-fileDescriptorOfFile:filePointer
+fileDescriptorOfFile:handle
     "for migration to rel5 only:
-     return the fileDescriptor of the argument filePointer -
+     return the fileDescriptor of the argument handle -
      notice: this one returns the underlying OSs fileDescriptor -
      this may not be available on all platforms (i.e. non unix systems)."
 
@@ -2097,25 +2120,32 @@
 %{
     OBJ fp;
 
-    if ((fp = __INST(filePointer)) != nil) {
-	FILEPOINTER f;
-	int fd;
-
-	f = __FILEVal(fp);
-	fd = fileno(f);
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if ((fp = __INST(handle)) != nil) {
+	    FILEPOINTER f;
+	    int fd;
+
+	    f = __FILEVal(fp);
+	    fd = fileno(f);
 #ifdef WIN32
-	{
-	    HANDLE h;
-	    h = _get_osfhandle(fd);
-	    RETURN (__MKEXTERNALADDRESS(h));
-	}
+	    {
+		HANDLE h;
+		h = _get_osfhandle(fd);
+		RETURN (__MKEXTERNALADDRESS(h));
+	    }
 #else
-	RETURN ( __MKINT(fileno(f)) );
+	    RETURN ( __MKINT(fileno(f)) );
 #endif
+	}
     }
+#ifdef WIN32
+    if ((__INST(handleType) == @symbol(fileHandle)) || (__INST(handleType) == @symbol(socketHandle))) {
+	RETURN (__INST(handle));
+    }
+#endif
 %}.
-    filePointer isNil ifTrue:[^ self errorNotOpen].
-    ^ self fileHandleOfFile:filePointer
+    handle isNil ifTrue:[^ self errorNotOpen].
+    ^ self fileHandleOfFile:handle
 !
 
 filePointer
@@ -2126,7 +2156,10 @@
      You cannot do much with the returned value
      - except passing it to a primitive, for example."
 
-    ^ filePointer
+    (handleType isNil or:[handleType == #filePointer]) ifTrue:[
+	^ handle
+    ].
+    ^ self error:'not a FILE*'
 !
 
 lineEndCRLF
@@ -2401,9 +2434,9 @@
 
     "report an error, that the open failed"
     ^ OpenError
-        raiseRequestWith:self
-        errorString:(' : ' , self lastErrorString)
-        "/ in:thisContext sender
+	raiseRequestWith:self
+	errorString:(' : ' , self lastErrorString)
+	"/ in:thisContext sender
 
     "Modified: / 28.1.1998 / 14:37:42 / stefan"
     "Modified: / 8.5.1999 / 20:12:12 / cg"
@@ -2457,7 +2490,7 @@
      since all we need at finalization time is the fileDescriptor,
      a cheaper copy is possible."
 
-    ^ self class basicNew setFilePointer:filePointer
+    ^ self class basicNew setAccessor:handleType to:handle
 ! !
 
 !ExternalStream methodsFor:'line reading/writing'!
@@ -2467,7 +2500,7 @@
      Return a string containing those characters excluding the newline.
      If the previous-to-last character is a cr, this is also removed,
      so its possible to read alien (i.e. ms-dos) text as well.
-     The line must be shorter than 16K characters - otherwise an error is signalled."
+     The line must be shorter than 32K characters - otherwise an error is signalled."
 
     |line|
 
@@ -2484,105 +2517,107 @@
     int cutOff = 0;
 
     __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(writeonly))
-	&& (__INST(binary) != true)
-    ) {
-	f = __FILEVal(fp);
-	buffer[0] = '\0';
-
-	_buffered = (__INST(buffered) == true);
-	if (_buffered) {
-	    __READING__(f);
-	}
-
-	rslt = nextPtr = buffer;
-	limit = buffer + sizeof(buffer) - 2;
-
-	for (;;) {
-	    __READBYTE__(ret, f, nextPtr, _buffered);
-	    if (ret <= 0) {
-		if (nextPtr == buffer)
-		    rslt = NULL;
-		if (ret == 0) {
-		    __INST(hitEOF) = true;
-		    break;
-		} else {
-		    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-		    goto err;
-		}
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(writeonly))
+	    && (__INST(binary) != true)
+	) {
+	    f = __FILEVal(fp);
+	    buffer[0] = '\0';
+
+	    _buffered = (__INST(buffered) == true);
+	    if (_buffered) {
+		__READING__(f);
 	    }
 
-	    if (*nextPtr == '\n') {
-		cutOff = 1;
-		*nextPtr = '\0';
-		break;
-	    }
-	    if (*nextPtr == '\r') {
-		char peekChar;
-
-		/*
-		 * peek ahead for a newLine ...
-		 */
-		__READBYTE__(ret, f, &peekChar, _buffered);
+	    rslt = nextPtr = buffer;
+	    limit = buffer + sizeof(buffer) - 2;
+
+	    for (;;) {
+		__READBYTE__(ret, f, nextPtr, _buffered);
 		if (ret <= 0) {
-		    cutOff = 1;
-		    *nextPtr = '\0';
+		    if (nextPtr == buffer)
+			rslt = NULL;
 		    if (ret == 0) {
 			__INST(hitEOF) = true;
 			break;
+		    } else {
+			__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+			goto err;
 		    }
-		    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-		    goto err;
 		}
 
-		if (peekChar == '\n') {
-		    cutOff = 2;
+		if (*nextPtr == '\n') {
+		    cutOff = 1;
 		    *nextPtr = '\0';
 		    break;
 		}
-
-		__UNGETC__(peekChar, f, _buffered);
-
-		cutOff = 1;
-		*nextPtr = '\0';
-		break;
-	    }
-
-	    nextPtr++;
-	    if (nextPtr >= limit) {
-		*nextPtr = '\0';
-		lineTooLong = 1;
-		if (@global(InfoPrinting) == true) {
-		    fprintf(stderr, "ExtStream [warning]: line truncated in nextLine\n");
+		if (*nextPtr == '\r') {
+		    char peekChar;
+
+		    /*
+		     * peek ahead for a newLine ...
+		     */
+		    __READBYTE__(ret, f, &peekChar, _buffered);
+		    if (ret <= 0) {
+			cutOff = 1;
+			*nextPtr = '\0';
+			if (ret == 0) {
+			    __INST(hitEOF) = true;
+			    break;
+			}
+			__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+			goto err;
+		    }
+
+		    if (peekChar == '\n') {
+			cutOff = 2;
+			*nextPtr = '\0';
+			break;
+		    }
+
+		    __UNGETC__(peekChar, f, _buffered);
+
+		    cutOff = 1;
+		    *nextPtr = '\0';
+		    break;
 		}
-		break;
-	    }
-	}
-
-	if (rslt != NULL) {
-	    len = nextPtr-buffer;
-
-	    if (__isSmallInteger(__INST(position))) {
-		INT np = __intVal(__INST(position)) + len + cutOff;
-		OBJ t;
-
-		t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-	    } else {
-		__INST(position) = nil; /* i.e. do not know */
-	    }
-	    /* remove any EOL character */
-	    if (len != 0) {
-		if (buffer[len-1] == '\n') {
-		    buffer[--len] = '\0';
-		}
-		if ((len != 0) && (buffer[len-1] == '\r')) {
-		    buffer[--len] = '\0';
+
+		nextPtr++;
+		if (nextPtr >= limit) {
+		    *nextPtr = '\0';
+		    lineTooLong = 1;
+		    if (@global(InfoPrinting) == true) {
+			fprintf(stderr, "ExtStream [warning]: line truncated in nextLine\n");
+		    }
+		    break;
 		}
 	    }
-	    line = __MKSTRING_L(buffer, len);
-	    if (! lineTooLong) {
-		RETURN ( line );
+
+	    if (rslt != NULL) {
+		len = nextPtr-buffer;
+
+		if (__isSmallInteger(__INST(position))) {
+		    INT np = __intVal(__INST(position)) + len + cutOff;
+		    OBJ t;
+
+		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+		} else {
+		    __INST(position) = nil; /* i.e. do not know */
+		}
+		/* remove any EOL character */
+		if (len != 0) {
+		    if (buffer[len-1] == '\n') {
+			buffer[--len] = '\0';
+		    }
+		    if ((len != 0) && (buffer[len-1] == '\r')) {
+			buffer[--len] = '\0';
+		    }
+		}
+		line = __MKSTRING_L(buffer, len);
+		if (! lineTooLong) {
+		    RETURN ( line );
+		}
 	    }
 	}
     }
@@ -2604,7 +2639,7 @@
 
     (hitEOF == true) ifTrue:[^ self pastEndRead].
     lastErrorNumber notNil ifTrue:[^ self readError].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
     (binary == true) ifTrue:[^ self errorBinary].
     ^ super nextLine
@@ -2622,63 +2657,65 @@
     int o_offs;
 
     __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(readonly))
-	&& (__INST(binary) != true)
-	&& __isString(aString)
-    ) {
-	f = __FILEVal(fp);
-	len = __stringSize(aString);
-
-	if (_buffered = (__INST(buffered) == true)) {
-	    __WRITING__(f)
-	}
-#ifdef WIN32
-	if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-	    cnt = __win32_fwrite(__stringVal(aString), 1, len, f);
-	} else
-#endif
-	{
-#ifdef BUGGY
-	    __WRITEBYTES__(cnt, f, __stringVal(aString), len, _buffered);
-#else
-	    o_offs = (char *)__stringVal(aString)-(char *)aString;
-	    __WRITEBYTES_OBJ__(cnt, f, aString, o_offs, len, _buffered);
-#endif
-	}
-	if (cnt == len) {
-	    OBJ mode = __INST(eolMode);
-
-	    len1 = len;
-
-	    if (mode == @symbol(cr)) {
-		cp = "\r"; len = 1;
-	    } else if (mode == @symbol(crlf)) {
-		cp = "\r\n"; len = 2;
-	    } else {
-		cp = "\n"; len = 1;
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(readonly))
+	    && (__INST(binary) != true)
+	    && __isString(aString)
+	) {
+	    f = __FILEVal(fp);
+	    len = __stringSize(aString);
+
+	    if (_buffered = (__INST(buffered) == true)) {
+		__WRITING__(f)
 	    }
 #ifdef WIN32
 	    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-		cnt = __win32_fwrite(cp, 1, len, f);
+		cnt = __win32_fwrite(__stringVal(aString), 1, len, f);
 	    } else
 #endif
 	    {
-		__WRITEBYTES__(cnt, f, cp, len, _buffered);
+#ifdef BUGGY
+		__WRITEBYTES__(cnt, f, __stringVal(aString), len, _buffered);
+#else
+		o_offs = (char *)__stringVal(aString)-(char *)aString;
+		__WRITEBYTES_OBJ__(cnt, f, aString, o_offs, len, _buffered);
+#endif
 	    }
-	    if (cnt > 0) {
-		if (__isSmallInteger(__INST(position))) {
-		    INT np = __intVal(__INST(position)) + cnt;
-		    OBJ t;
-
-		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+	    if (cnt == len) {
+		OBJ mode = __INST(eolMode);
+
+		len1 = len;
+
+		if (mode == @symbol(cr)) {
+		    cp = "\r"; len = 1;
+		} else if (mode == @symbol(crlf)) {
+		    cp = "\r\n"; len = 2;
 		} else {
-		    __INST(position) = nil; /* i.e. do not know */
+		    cp = "\n"; len = 1;
+		}
+#ifdef WIN32
+		if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+		    cnt = __win32_fwrite(cp, 1, len, f);
+		} else
+#endif
+		{
+		    __WRITEBYTES__(cnt, f, cp, len, _buffered);
 		}
-		RETURN ( self );
+		if (cnt > 0) {
+		    if (__isSmallInteger(__INST(position))) {
+			INT np = __intVal(__INST(position)) + cnt;
+			OBJ t;
+
+			t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+		    } else {
+			__INST(position) = nil; /* i.e. do not know */
+		    }
+		    RETURN ( self );
+		}
 	    }
+	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
 	}
-	__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
     }
 %}.
     super nextPutLine:aString.
@@ -2689,93 +2726,10 @@
      and append all lines to self.
      Can be used to copy/create large files or copy from a pipe/socket.
 
-     If aStringOrNil is nil or not matched, copy preceeds to the end.
-     (this allows for example to read a Socket and transfer the data quickly
-      into a file - without creating zillions of temporary strings)"
-
-    |srcFilePointer readError line|
-
-    (mode == #readonly) ifTrue:[self errorReadOnly. ^ self].
-    filePointer isNil ifTrue:[self errorNotOpen. ^ self].
-    srcFilePointer := aStream filePointer.
-    srcFilePointer isNil ifTrue:[aStream errorNotOpen. ^ self].
-
-%{  /* STACK:2000 */
-
-#ifndef NO_STDIO
-    FILEPOINTER dst;
-    FILEPOINTER src;
-    char *matchString;
-    int matchLen = 0;
-    char buffer[1024];
-
-    __INST(lastErrorNumber) = nil;
-    if (__isSmallInteger(srcFilePointer)) {
-	if ((aStringOrNil == nil) || __isString(aStringOrNil)) {
-	    if (aStringOrNil != nil) {
-		matchString = (char *) __stringVal(aStringOrNil);
-		matchLen = __stringSize(aStringOrNil);
-	    }
-	    dst = __FILEVal(__INST(filePointer));
-	    src = __FILEVal(srcFilePointer);
-	    __BEGIN_INTERRUPTABLE__
-	    __threadErrno = 0;
-
-	    __WRITING__(dst)
-
-	    for (;;) {
-		if (fgets(buffer, sizeof(buffer)-1, src) == NULL) {
-		    if (ferror(src)) {
-			readError = __mkSmallInteger(__threadErrno);
-			__END_INTERRUPTABLE__
-			goto err;
-		    }
-		    break;
-		}
-		if (fputs(buffer, dst) == EOF) {
-		    if (ferror(dst)) {
-			__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-			__END_INTERRUPTABLE__
-			goto err;
-		    }
-		    break;
-		}
-# ifndef OLD
-		if (__INST(buffered) == false) {
-#  ifdef WIN32
-		    if ((dst == __win32_stdout()) || (dst == __win32_stderr())) {
-			win32_fflush(dst);
-		    } else
-#  endif
-		    {
-			FFLUSH(dst);
-		    }
-		}
-# endif
-		if (matchLen) {
-		    if (strncmp(matchString, buffer, matchLen) == 0)
-			break;
-		}
-	    }
-	    __END_INTERRUPTABLE__
-	    __INST(position) = nil; /* i.e. do not know */
-	    RETURN (self);
-	}
-    }
-err: ;
-#endif /* ! NO_STDIO */
-%}.
-    readError == true ifTrue:[
-	aStream setLastErrorNumber:readError.
-	aStream readError.
-	^ self
-    ].
-    lastErrorNumber notNil ifTrue:[self writeError. ^ self].
-    buffered ifFalse:[self errorNotBuffered. ^ self].
-
-    "
-     argument error or unimplemented; try it linewise
-    "
+     If aStringOrNil is nil or not matched, copy proceeds to the end."
+
+    |line|
+
     [aStream atEnd] whileFalse:[
 	line := aStream nextLine.
 	line isNil ifTrue:[
@@ -2798,87 +2752,10 @@
     |firstPos lastPos line|
 
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     binary ifTrue:[^ self errorBinary].
     buffered ifFalse:[^ self errorNotBuffered].
 
-%{  /* STACK: 2000 */
-#ifndef NO_STDIO
-
-    FILEPOINTER f;
-    int l;
-    char buffer[1024];
-    char *cp;
-    char *matchString;
-    int gotFirst = 0;
-# if defined(__VMS__)
-    fpos_t firstpos, lastpos;
-#   define FTELL(__f__, __pos__)        fgetpos(__f__, &(__pos__))
-#   define FSEEK(__f__, __pos__)        fsetpos(__f__, &(__pos__))
-# elif defined(_LFS_LARGEFILE)
-    off_t firstpos, lastpos;
-#   define FTELL(__f__, __pos__)        __pos__ = ftello(__f__)
-#   define FSEEK(__f__, __pos__)        fseeko(__f__, __pos__, SEEK_SET)
-# else
-    long firstpos, lastpos;
-#   define FTELL(__f__, __pos__)        __pos__ = ftell(__f__)
-#   define FSEEK(__f__, __pos__)        fseek(__f__, __pos__, SEEK_SET)
-# endif
-
-    __INST(lastErrorNumber) = nil;
-    if (__isString(aString)) {
-	matchString = (char *) __stringVal(aString);
-	l = __stringSize(aString);
-
-	f = __FILEVal(__INST(filePointer));
-	__READING__(f)
-
-	for (;;) {
-	    FTELL(f, lastpos);
-	    if (!gotFirst) {
-		firstpos = lastpos;
-		gotFirst = 1;
-	    }
-
-	    __BEGIN_INTERRUPTABLE__
-	    do {
-		cp = fgets(buffer, sizeof(buffer)-1, f);
-	    } while ((cp == NULL) && ferror(f) && (__threadErrno == EINTR) && (clearerr(f), 1));
-	    buffer[sizeof(buffer)-1] = '\0';
-	    __END_INTERRUPTABLE__
-
-	    if (cp == NULL) {
-		if (ferror(f)) {
-		    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-		    goto err;
-		} else {
-		    FSEEK(f, firstpos);
-		    RETURN (nil);
-		}
-	    }
-	    if (strncmp(cp, matchString, l) == 0) {
-		FSEEK(f, lastpos);
-		break;
-	    }
-	}
-	/* remove EOL character */
-	cp = buffer;
-	while (*cp && (*cp != '\n') && (*cp != '\r')) cp++;
-	*cp = '\0';
-	__INST(position) = nil; /* i.e. do not know */
-	RETURN ( __MKSTRING(buffer) );
-    }
-err: ;
-
-# undef FTELL
-# undef FSEEK
-
-#endif
-%}.
-    lastErrorNumber notNil ifTrue:[^ self readError].
-
-    "/ try using generic code ...
-
     firstPos := self position.
     [self atEnd] whileFalse:[
 	lastPos := self position.
@@ -2905,7 +2782,7 @@
     |line startPos linePos index|
 
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     binary ifTrue:[^ self errorBinary].
 
     startPos := self position.
@@ -2939,7 +2816,7 @@
 
     |fd|
 
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
 
     OperatingSystem supportsIOInterrupts ifFalse:[
 	^ self errorUnsupportedOperation
@@ -2964,7 +2841,7 @@
      in advance. However, the data must then be read using #nextBytes:
      methods, in order to avoid other (pastEndRead) exceptions."
 
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     ^ OperatingSystem setBlocking:aBoolean on:self fileDescriptor.
 
     "Modified: / 11.1.1997 / 17:48:01 / cg"
@@ -3027,8 +2904,7 @@
      Be careful in what you pass - ST/X cannot validate its correctness."
 
 %{
-#if !defined(MSDOS_LIKE)
-# if !defined(__openVMS__)
+#if !defined(MSDOS_LIKE) && !defined(__openVMS__)
     FILEPOINTER f;
     int ret;
     unsigned int ioNum;
@@ -3036,48 +2912,49 @@
     INT ioArg;
 
     __INST(lastErrorNumber) = nil;
-    if ((fp = __INST(filePointer)) != nil) {
-        if (__isInteger(ioctlNumber)
-         && (__isInteger(arg)
-             || (arg == nil)
-             || __isBytes(arg)
-             || __isExternalBytesLike(arg)
-             || __isExternalAddress(arg))) {
-            f = __FILEVal(fp);
-            ioNum = __unsignedLongIntVal(ioctlNumber);
-
-            __BEGIN_INTERRUPTABLE__
-            do {
-                __threadErrno = 0;
-                if (arg == nil) {
-                    ioArg = 0;
-                } else if (__isSmallInteger(arg)) {
-                    ioArg = __intVal(arg);
-                } else if (__isInteger(arg)) {
-                    ioArg = __unsignedLongIntVal(arg);
-                } else if (__isExternalBytesLike(arg)) {
-                    ioArg = (INT)(__externalBytesAddress(arg));
-                } else if (__isExternalAddress(arg)) {
-                    ioArg = (INT)(__externalAddressVal(arg));
-                } else {
-                    ioArg = (INT)(__ByteArrayInstPtr(arg)->ba_element);
-                }
-                ret = ioctl(fileno(f), ioNum, ioArg);
-            } while ((ret < 0) && (__threadErrno == EINTR));
-            __END_INTERRUPTABLE__
-
-            if (ret >= 0) {
-                RETURN ( __mkSmallInteger(ret) );
-            }
-            __INST(position) = nil; /* i.e. do not know */
-            __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-        }
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if ((fp = __INST(handle)) != nil) {
+	    if (__isInteger(ioctlNumber)
+	     && (__isInteger(arg)
+		 || (arg == nil)
+		 || __isBytes(arg)
+		 || __isExternalBytesLike(arg)
+		 || __isExternalAddress(arg))) {
+		f = __FILEVal(fp);
+		ioNum = __unsignedLongIntVal(ioctlNumber);
+
+		__BEGIN_INTERRUPTABLE__
+		do {
+		    __threadErrno = 0;
+		    if (arg == nil) {
+			ioArg = 0;
+		    } else if (__isSmallInteger(arg)) {
+			ioArg = __intVal(arg);
+		    } else if (__isInteger(arg)) {
+			ioArg = __unsignedLongIntVal(arg);
+		    } else if (__isExternalBytesLike(arg)) {
+			ioArg = (INT)(__externalBytesAddress(arg));
+		    } else if (__isExternalAddress(arg)) {
+			ioArg = (INT)(__externalAddressVal(arg));
+		    } else {
+			ioArg = (INT)(__ByteArrayInstPtr(arg)->ba_element);
+		    }
+		    ret = ioctl(fileno(f), ioNum, ioArg);
+		} while ((ret < 0) && (__threadErrno == EINTR));
+		__END_INTERRUPTABLE__
+
+		if (ret >= 0) {
+		    RETURN ( __mkSmallInteger(ret) );
+		}
+		__INST(position) = nil; /* i.e. do not know */
+		__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+	    }
+	}
     }
-# endif
 #endif
 %}.
     lastErrorNumber notNil ifTrue:[^ self ioError].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     "
      argument is not an integer
     "
@@ -3110,38 +2987,40 @@
     OBJ fp;
 
     __INST(lastErrorNumber) = nil;
-    if ((fp = __INST(filePointer)) != nil) {
-        f = __FILEVal(fp);
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if ((fp = __INST(handle)) != nil) {
+	    f = __FILEVal(fp);
 #ifdef WIN32
-        __threadErrno = 0;
-        ret = __STX_API_NOINT_CALL1( "FlushFileBuffers", FlushFileBuffers, _get_osfhandle(fileno(f)));
-        if (ret) {
-            RETURN (self);
-        }
+	    __threadErrno = 0;
+	    ret = __STX_API_NOINT_CALL1( "FlushFileBuffers", FlushFileBuffers, _get_osfhandle(fileno(f)));
+	    if (ret) {
+		RETURN (self);
+	    }
 #else
 
-        __BEGIN_INTERRUPTABLE__
-        do {
-            __threadErrno = 0;
-            ret = fsync(fileno(f));
-        } while ((ret < 0) && (__threadErrno == EINTR));
-        __END_INTERRUPTABLE__
-
-        if (ret >= 0) {
-            RETURN (self);
-        }
+	    __BEGIN_INTERRUPTABLE__
+	    do {
+		__threadErrno = 0;
+		ret = fsync(fileno(f));
+	    } while ((ret < 0) && (__threadErrno == EINTR));
+	    __END_INTERRUPTABLE__
+
+	    if (ret >= 0) {
+		RETURN (self);
+	    }
 #endif /* ! WIN32 */
-        __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+	}
     }
 #endif /* ! __openVMS__ */
 %}.
     lastErrorNumber notNil ifTrue:[^ self ioError].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
 
     "
-        |f|
-        f := 'x' asFilename writeStream.
-        f nextPutAll:'hallo'; sync; syncData; close
+	|f|
+	f := 'x' asFilename writeStream.
+	f nextPutAll:'hallo'; sync; syncData; close
     "
 !
 
@@ -3153,43 +3032,46 @@
 
 %{
 #if !defined(__openVMS__)
-    FILEPOINTER f;
     int ret;
-    OBJ fp;
 
     __INST(lastErrorNumber) = nil;
-    if ((fp = __INST(filePointer)) != nil) {
-        f = __FILEVal(fp);
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	OBJ fp;
+	FILEPOINTER f;
+
+	if ((fp = __INST(handle)) != nil) {
+	    f = __FILEVal(fp);
 #ifdef WIN32
-        __threadErrno = 0;
-        ret = __STX_API_NOINT_CALL1( "FlushFileBuffers", FlushFileBuffers, _get_osfhandle(fileno(f)));
-        if (ret) {
-            RETURN (self);
-        }
+	    __threadErrno = 0;
+	    ret = __STX_API_NOINT_CALL1( "FlushFileBuffers", FlushFileBuffers, _get_osfhandle(fileno(f)));
+	    if (ret) {
+		RETURN (self);
+	    }
 #else
 
-        __BEGIN_INTERRUPTABLE__
-        do {
-            __threadErrno = 0;
-            ret = fdatasync(fileno(f));
-        } while ((ret < 0) && (__threadErrno == EINTR));
-        __END_INTERRUPTABLE__
-
-        if (ret >= 0) {
-            RETURN (self);
-        }
+	    __BEGIN_INTERRUPTABLE__
+	    do {
+		__threadErrno = 0;
+		ret = fdatasync(fileno(f));
+	    } while ((ret < 0) && (__threadErrno == EINTR));
+	    __END_INTERRUPTABLE__
+
+	    if (ret >= 0) {
+		RETURN (self);
+	    }
 #endif /* ! WIN32 */
-        __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+	}
     }
 #endif /* ! __openVMS__ */
 %}.
     lastErrorNumber notNil ifTrue:[^ self ioError].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
 
     "
-        |f|
-        f := 'x' asFilename writeStream.
-        f nextPutAll:'hallo'; sync; syncData; close
+	|f|
+	f := 'x' asFilename writeStream.
+	f nextPutAll:'hallo'; sync; syncData; close
     "
 !
 
@@ -3203,50 +3085,52 @@
     OBJ fp;
     off_t truncateSize;
 
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(readonly))) {
-	if (__isSmallInteger(newSize)) {
-	    truncateSize = __intVal(newSize);
-	    if (truncateSize < 0) {
-		goto getOutOfHere;
-	    }
-	} else {
-	    truncateSize = __signedLongIntVal(newSize);
-	    if (truncateSize < 0) {
-		goto getOutOfHere;
-	    }
-	    if (truncateSize == 0) {
-		if (sizeof(truncateSize) == 8) {
-		    if (__signedLong64IntVal(newSize, &truncateSize) == 0 || truncateSize < 0) {
-			goto getOutOfHere;
-		    }
-		} else {
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(readonly))) {
+	    if (__isSmallInteger(newSize)) {
+		truncateSize = __intVal(newSize);
+		if (truncateSize < 0) {
+		    goto getOutOfHere;
+		}
+	    } else {
+		truncateSize = __signedLongIntVal(newSize);
+		if (truncateSize < 0) {
 		    goto getOutOfHere;
 		}
+		if (truncateSize == 0) {
+		    if (sizeof(truncateSize) == 8) {
+			if (__signedLong64IntVal(newSize, &truncateSize) == 0 || truncateSize < 0) {
+			    goto getOutOfHere;
+			}
+		    } else {
+			goto getOutOfHere;
+		    }
+		}
 	    }
-	}
-
-	f = __FILEVal(fp);
-
-	if (__INST(buffered) == true) {
-	    __READING__(f)
+
+	    f = __FILEVal(fp);
+
+	    if (__INST(buffered) == true) {
+		__READING__(f)
 #ifdef WIN32
-	    if ((dst == __win32_stdout()) || (dst == __win32_stderr())) {
-		win32_fflush(f);
-	    } else
+		if ((dst == __win32_stdout()) || (dst == __win32_stderr())) {
+		    win32_fflush(f);
+		} else
 #endif
-	    {
-		FFLUSH(f);
+		{
+		    FFLUSH(f);
+		}
+		OPT_FSEEK(f, 0L, SEEK_END); /* needed in stdio */
 	    }
-	    OPT_FSEEK(f, 0L, SEEK_END); /* needed in stdio */
+	    ftruncate(fileno(f), truncateSize);
+	    RETURN (self);
 	}
-	ftruncate(fileno(f), truncateSize);
-	RETURN (self);
     }
 getOutOfHere: ;
 #endif
 %}.
-    filePointer isNil ifTrue:[self errorNotOpen. ^ self].
+    handle isNil ifTrue:[self errorNotOpen. ^ self].
     (mode == #readonly) ifTrue:[self errorReadOnly. ^ self].
     newSize < 0 ifTrue:[
 	self error:'wrong arg'.
@@ -3265,473 +3149,6 @@
     "
 ! !
 
-!ExternalStream methodsFor:'no longer reimplemented for speed'!
-
-XXXnextAlphaNumericWord
-    "read the next word (i.e. up to non letter-or-digit) after first
-     skipping any whiteSpace.
-     Return a string containing those characters.
-     There is a limit of 1023 characters in the word - if longer,
-     it is truncated."
-
-
-%{  /* STACK: 2000 */
-    FILEPOINTER f;
-    int len;
-    char buffer[1024];
-    unsigned char ch;
-    int cnt = 0;
-    int ret, _buffered;
-    OBJ fp;
-
-    if (((fp = __INST(filePointer)) != nil)
-     && (__INST(mode) != @symbol(writeonly))
-    ) {
-	f = __FILEVal(fp);
-	_buffered = (__INST(buffered) == true);
-	if (_buffered) {
-	    __READING__(f)
-	}
-
-	/*
-	 * skip whiteSpace first ...
-	 */
-	do {
-	    __READBYTE__(ret, f, &ch, _buffered);
-	    if (ret > 0)
-		cnt++;
-	    else
-		break;
-	} while (
-#ifndef NON_ASCII
-		 (ch < ' ') ||
-#endif
-		 (ch == ' ' ) || (ch == '\t') || (ch == '\r')
-	      || (ch == '\n') || (ch == 0x0b));
-
-	len = 0;
-	while (ret > 0 &&
-	       (((ch >= 'a') && (ch <= 'z')) ||
-		((ch >= 'A') && (ch <= 'Z')) ||
-		((ch >= '0') && (ch <= '9')))
-	) {
-	    buffer[len++] = ch;
-	    if (len >= (sizeof(buffer)-1)) {
-		/* emergency */
-		break;
-	    }
-	    __READBYTE__(ret, f, &ch, _buffered);
-	    if (ret > 0)
-		cnt++;
-	    else
-		break;
-	}
-
-	if (ret <= 0) {
-	    if (ret < 0) {
-		__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-		goto err;
-	    }
-	    else if (ret == 0)
-		__INST(hitEOF) = true;
-	} else {
-	    __UNGETC__(ch, f, _buffered);
-	    cnt--;
-	}
-
-	if (__isSmallInteger(__INST(position))) {
-	    INT np = __intVal(__INST(position)) + cnt;
-	    OBJ t;
-
-	    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-	} else {
-	    __INST(position) = nil; /* i.e. do not know */
-	}
-
-	if (len != 0) {
-	    buffer[len] = '\0';
-	    RETURN ( __MKSTRING_L(buffer, len) );
-	}
-    }
-err: ;
-%}.
-    hitEOF ifTrue:[
-	^ self pastEndRead
-    ].
-    lastErrorNumber notNil ifTrue:[
-	^ self readError
-    ].
-    filePointer isNil ifTrue:[
-	^ self errorNotOpen
-    ].
-    mode == #writeonly ifTrue:[
-	^ self errorWriteOnly
-    ].
-    ^ super nextAlphaNumericWord
-!
-
-XXXpeekFor:anObject
-    "return true and move past next element, if next == something.
-     Otherwise, stay and return false. False is also returned
-     when EOF is encountered.
-     The argument must be an integer if in binary, a character if in
-     text mode; only single byte characters are currently supported."
-
-
-%{
-    FILEPOINTER f;
-    unsigned char c;
-    int ret, peekValue, _buffered;
-    OBJ fp;
-
-    __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(writeonly))
-    ) {
-	if (__INST(binary) == true) {
-	    if (__isSmallInteger(anObject)) {
-		peekValue = __intVal(anObject) & 0xFF;
-	    } else {
-		goto bad;
-	    }
-	} else {
-	    if (__isCharacter(anObject)) {
-		peekValue = __intVal(_characterVal(anObject)) & 0xFF;
-	    } else {
-		goto bad;
-	    }
-	}
-
-	f = __FILEVal(fp);
-
-	_buffered = (__INST(buffered) == true);
-	if (_buffered) {
-	    __READING__(f)
-	}
-	__READBYTE__(ret, f, &c, _buffered);
-	if (ret > 0) {
-	    if (c == peekValue) {
-		if (__isSmallInteger(__INST(position))) {
-		    INT np = __intVal(__INST(position)) + 1;
-		    OBJ t;
-
-		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		} else {
-		    __INST(position) = nil; /* i.e. do not know */
-		}
-		RETURN (true);
-	    }
-	    __UNGETC__(c, f, _buffered);
-	    RETURN (false);
-	}
-	if (ret < 0) {
-	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-	} else /* ret == 0 */
-	    __INST(hitEOF) = true;
-	}
-bad: ;
-%}.
-    ^ super peekFor:anObject
-!
-
-XXXskipLine
-    "read the next line (characters up to newline) skip only;
-     return nil if EOF reached, self otherwise.
-     Not allowed in binary mode."
-
-
-%{  /* STACK:2000 */
-
-    FILEPOINTER f;
-    OBJ fp;
-    int ret, _buffered;
-    char c;
-
-    __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(writeonly))
-	&& (__INST(binary) != true)
-    ) {
-	f = __FILEVal(fp);
-	if (_buffered = (__INST(buffered) == true)) {
-	    __READING__(f)
-	}
-	for (;;) {
-	    __READBYTE__(ret, f, &c, _buffered);
-	    if (ret > 0) {
-		if (c == '\n')
-		    RETURN(self)
-	    } else
-		break;
-	}
-	if (ret < 0) {
-	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-	} else /* ret == 0 */ {
-	    __INST(hitEOF) = true;
-	}
-    }
-%}.
-    hitEOF ifTrue:[
-	^ self pastEndRead
-    ].
-    lastErrorNumber notNil ifTrue:[
-	self readError.
-	^ self
-    ].
-    filePointer isNil ifTrue:[
-	self errorNotOpen.
-	^ self
-    ].
-    binary ifTrue:[
-	self errorBinary.
-	^ self
-    ].
-    self errorWriteOnly
-!
-
-XXXskipSeparators
-    "skip all whitespace; next will return next non-white-space character
-     or nil if endOfFile reached. Not allowed in binary mode.
-     - reimplemented for speed"
-
-
-%{
-    FILEPOINTER f;
-    char c;
-    int ret, _buffered;
-    OBJ fp;
-
-    __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(writeonly))
-	&& (__INST(binary) != true)
-    ) {
-	f = __FILEVal(fp);
-	_buffered = (__INST(buffered) == true);
-	if (_buffered) {
-	    __READING__(f)
-	}
-
-	while (1) {
-	    __READBYTE__(ret, f, &c, _buffered);
-	    if (ret <= 0) {
-		if (ret < 0) {
-		    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-		} else /* ret == 0 */ {
-		    __INST(hitEOF) = true;
-		}
-		break;
-	    }
-	    switch (c) {
-		case ' ':
-		case '\t':
-		case '\n':
-		case '\r':
-		case '\b':
-		case '\f':
-		    break;
-
-		default:
-		    __UNGETC__(c, f, _buffered);
-		    RETURN ( __MKCHARACTER(c & 0xFF) );
-	    }
-	}
-    }
-%}.
-    hitEOF == true ifTrue:[
-	^ self pastEndRead
-    ].
-    lastErrorNumber notNil ifTrue:[
-	^ self readError
-    ].
-    filePointer isNil ifTrue:[
-	^ self errorNotOpen
-    ].
-    (mode == #writeonly) ifTrue:[
-	^ self errorWriteOnly
-    ].
-    (binary == true) ifTrue:[
-	^ self errorBinary
-    ].
-    ^ super skipSeparators.
-!
-
-XXXskipSeparatorsExceptCR
-    "skip all whitespace but no newlines;
-     next will return next non-white-space character
-     or nil if endOfFile reached. Not allowed in binary mode.
-     - reimplemented for speed"
-
-
-%{
-    FILEPOINTER f;
-    char c;
-    int ret, _buffered;
-    OBJ fp;
-
-    __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(writeonly))
-	&& (__INST(binary) != true)
-    ) {
-	f = __FILEVal(fp);
-	_buffered = (__INST(buffered) == true);
-	if (_buffered) {
-	    __READING__(f)
-	}
-	while (1) {
-	    __READBYTE__(ret, f, &c, _buffered);
-	    if (ret <= 0) {
-		if (ret < 0) {
-		    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-		} else /* ret == 0 */ {
-		    __INST(hitEOF) = true;
-		}
-		break;
-	    }
-	    switch (c) {
-		case ' ':
-		case '\t':
-		case '\b':
-		case '\f':
-		    break;
-
-		default:
-		    __UNGETC__(c, f, _buffered);
-		    RETURN ( __MKCHARACTER(c & 0xFF) );
-	    }
-	}
-    }
-%}.
-    hitEOF ifTrue:[
-	^ self pastEndRead
-    ].
-    lastErrorNumber notNil ifTrue:[
-	^ self readError
-    ].
-    filePointer isNil ifTrue:[
-	^ self errorNotOpen
-    ].
-    (mode == #writeonly) ifTrue:[
-	^ self errorWriteOnly
-    ].
-    ^ self errorBinary.
-!
-
-XXXskipThrough:aCharacter
-    "skip all characters up-to and including aCharacter.
-     Return the receiver if skip was successful,
-     otherwise (i.e. if not found) return nil and leave the stream positioned at the end.
-     The next read operation will return the character after aCharacter.
-     The argument, aCharacter must be character, or integer when in binary mode.
-     Only single byte characters are currently supported."
-
-
-%{
-    FILEPOINTER f;
-    REGISTER int cSearch;
-    unsigned char c;
-    int ret, _buffered;
-    OBJ fp;
-
-    __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(writeonly))
-    ) {
-	if (__INST(binary) == true) {
-	    /* searched for object must be a smallInteger */
-	    if (! __isSmallInteger(aCharacter)) goto badArgument;
-	    cSearch = __intVal(aCharacter);
-	} else {
-	    /* searched for object must be a character */
-	    if (! __isCharacter(aCharacter)) goto badArgument;
-	    cSearch = __intVal(_characterVal(aCharacter));
-	}
-	/* Q: should we just say: "not found" ? */
-	if ((cSearch < 0) || (cSearch > 255)) goto badArgument;
-
-	f = __FILEVal(fp);
-	if (_buffered = (__INST(buffered) == true)) {
-	    __READING__(f)
-	}
-
-	while (1) {
-	    __READBYTE__(ret, f, &c, _buffered);
-	    if (ret <= 0) {
-		if (ret < 0) {
-		    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-		} else /* ret == 0 */ {
-		    __INST(hitEOF) = true;
-		}
-		break;
-	    }
-	    if (c == cSearch) {
-		RETURN (self);
-	    }
-	}
-    }
-badArgument: ;
-%}.
-    hitEOF ifTrue:[ ^ nil ].
-    lastErrorNumber notNil ifTrue:[
-	self readError.
-	^ self
-    ].
-    filePointer isNil ifTrue:[
-	self errorNotOpen.
-	^ self
-    ].
-    (mode == #writeonly) ifTrue:[
-	self errorWriteOnly.
-	^ self
-    ].
-     "
-     argument must be integer/character in binary mode,
-     character in text mode
-    "
-    self error:'invalid argument'.
-
-    "
-     |s|
-     s := 'Makefile' asFilename readStream.
-     s skipThrough:$E.
-     s next:10
-    "
-!
-
-XXXskipToAll:aString
-    "skip for the sequence given by the argument, aCollection;
-     return nil if not found, self otherwise.
-     On a successful match, the next read will return characters of aString."
-
-    |oldPos|
-
-    oldPos := self position.
-    (self skipThroughAll:aString) isNil ifTrue:[
-	"
-	 restore position"
-	self position:oldPos.
-	^ nil
-    ].
-     "
-     position before match-string
-    "
-    self position:(self position - aString size).
-    ^ self
-
-    "
-     |s|
-     s := 'Makefile' asFilename readStream.
-     [
-	 (s skipToAll:'EDIT') notNil ifTrue:[
-	    s next:100.
-	 ].
-     ] ensure:[
-	s close.
-     ]"
-    "Modified: 26.6.1996 / 09:22:05 / cg"
-! !
-
 !ExternalStream methodsFor:'non homogenous reading'!
 
 nextAvailable:count
@@ -3801,90 +3218,92 @@
     int o_offs;
 
     __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(writeonly))
-	&& __bothSmallInteger(count, start)
-    ) {
-	f = __FILEVal(fp);
-
-	cnt = __intVal(count);
-	offs = __intVal(start) - 1;
-
-	if (__isExternalBytesLike(anObject)) {
-	    OBJ sz;
-
-	    nInstBytes = 0;
-	    extPtr = (char *)(__externalBytesAddress(anObject));
-	    sz = __externalBytesSize(anObject);
-	    if (__isSmallInteger(sz)) {
-		objSize = __intVal(sz);
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(writeonly))
+	    && __bothSmallInteger(count, start)
+	) {
+	    f = __FILEVal(fp);
+
+	    cnt = __intVal(count);
+	    offs = __intVal(start) - 1;
+
+	    if (__isExternalBytesLike(anObject)) {
+		OBJ sz;
+
+		nInstBytes = 0;
+		extPtr = (char *)(__externalBytesAddress(anObject));
+		sz = __externalBytesSize(anObject);
+		if (__isSmallInteger(sz)) {
+		    objSize = __intVal(sz);
+		} else {
+		    objSize = 0; /* unknown */
+		}
 	    } else {
-		objSize = 0; /* unknown */
-	    }
-	} else {
-	    OBJ oClass;
-
-	    oClass = __Class(anObject);
-	    switch (__intVal(__ClassInstPtr(oClass)->c_flags) & ARRAYMASK) {
-		case BYTEARRAY:
-		case WORDARRAY:
-		case LONGARRAY:
-		case SWORDARRAY:
-		case SLONGARRAY:
-		case FLOATARRAY:
-		case DOUBLEARRAY:
-		    break;
-		default:
-		    goto bad;
+		OBJ oClass;
+
+		oClass = __Class(anObject);
+		switch (__intVal(__ClassInstPtr(oClass)->c_flags) & ARRAYMASK) {
+		    case BYTEARRAY:
+		    case WORDARRAY:
+		    case LONGARRAY:
+		    case SWORDARRAY:
+		    case SLONGARRAY:
+		    case FLOATARRAY:
+		    case DOUBLEARRAY:
+			break;
+		    default:
+			goto bad;
+		}
+		extPtr = (char *)0;
+		nInstVars = __intVal(__ClassInstPtr(oClass)->c_ninstvars);
+		nInstBytes = OHDR_SIZE + __OBJS2BYTES__(nInstVars);
+		objSize = __Size(anObject) - nInstBytes;
 	    }
-	    extPtr = (char *)0;
-	    nInstVars = __intVal(__ClassInstPtr(oClass)->c_ninstvars);
-	    nInstBytes = OHDR_SIZE + __OBJS2BYTES__(nInstVars);
-	    objSize = __Size(anObject) - nInstBytes;
-	}
-
-	if ((offs >= 0) && (cnt >= 0) && (objSize >= (cnt + offs))) {
-	    _buffered = (__INST(buffered) == true);
-	    if (_buffered) {
-		__READING__(f);
-	    }
-
-	    if (extPtr) {
-		__READAVAILBYTES__(ret, f, extPtr+offs, cnt, _buffered);
-	    } else {
-		/*
-		 * on interrupt, anObject may be moved to another location.
-		 * So we pass (char *)__InstPtr(anObject) + nInstBytes + offs to the macro __READ_BYTES__,
-		 * to get a new address.
-		 */
-		offs += nInstBytes;
-		__READAVAILBYTES_OBJ__(ret, f, anObject, offs, cnt, _buffered);
-	    }
+
+	    if ((offs >= 0) && (cnt >= 0) && (objSize >= (cnt + offs))) {
+		_buffered = (__INST(buffered) == true);
+		if (_buffered) {
+		    __READING__(f);
+		}
+
+		if (extPtr) {
+		    __READAVAILBYTES__(ret, f, extPtr+offs, cnt, _buffered);
+		} else {
+		    /*
+		     * on interrupt, anObject may be moved to another location.
+		     * So we pass (char *)__InstPtr(anObject) + nInstBytes + offs to the macro __READ_BYTES__,
+		     * to get a new address.
+		     */
+		    offs += nInstBytes;
+		    __READAVAILBYTES_OBJ__(ret, f, anObject, offs, cnt, _buffered);
+		}
 #ifdef PRE_22_jan_2000
-	    if (ret > 0)
+		if (ret > 0)
 #else
-	    /* 0 is NOT an EOF condition here ... */
-	    if (ret >= 0)
+		/* 0 is NOT an EOF condition here ... */
+		if (ret >= 0)
 #endif
-	    {
-		if (__isSmallInteger(__INST(position))) {
-		    INT np = __intVal(__INST(position)) + ret;
-		    OBJ t;
-
-		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		} else {
-		    __INST(position) = nil; /* i.e. do not know */
+		{
+		    if (__isSmallInteger(__INST(position))) {
+			INT np = __intVal(__INST(position)) + ret;
+			OBJ t;
+
+			t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+		    } else {
+			__INST(position) = nil; /* i.e. do not know */
+		    }
+		    RETURN (__mkSmallInteger(ret));
 		}
-		RETURN (__mkSmallInteger(ret));
-	    }
 #ifdef PRE_22_jan_2000
-	    if (ret == 0) {
-		__INST(hitEOF) = true;
-	    } else /* ret < 0 */
+		if (ret == 0) {
+		    __INST(hitEOF) = true;
+		} else /* ret < 0 */
 #endif
-	    {
-		__INST(position) = nil;
-		__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+		{
+		    __INST(position) = nil;
+		    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+		}
 	    }
 	}
     }
@@ -3892,7 +3311,7 @@
 %}.
     (hitEOF and:[self pastEndRead isNil]) ifTrue:[^ 0].
     lastErrorNumber notNil ifTrue:[^ self readError].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
     "
      count not integer or arg not bit-like (String, ByteArray etc)
@@ -3912,38 +3331,40 @@
     OBJ fp;
 
     __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-     && (__INST(mode) != @symbol(writeonly))) {
-	f = __FILEVal(fp);
-
-	_buffered = (__INST(buffered) == true);
-	if (_buffered) {
-	    __READING__(f)
-	}
-	__READBYTE__(ret, f, &byte, _buffered);
-	if (ret > 0) {
-	    if (__isSmallInteger(__INST(position))) {
-		INT np = __intVal(__INST(position)) + 1;
-		OBJ t;
-
-		t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-	    } else {
-		__INST(position) = nil; /* i.e. do not know */
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	 && (__INST(mode) != @symbol(writeonly))) {
+	    f = __FILEVal(fp);
+
+	    _buffered = (__INST(buffered) == true);
+	    if (_buffered) {
+		__READING__(f)
 	    }
-	    RETURN (__mkSmallInteger(byte));
-	}
-
-	if (ret == 0) {
-	    __INST(hitEOF) = true;
-	} else /* ret < 0 */ {
-	    __INST(position) = nil;
-	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+	    __READBYTE__(ret, f, &byte, _buffered);
+	    if (ret > 0) {
+		if (__isSmallInteger(__INST(position))) {
+		    INT np = __intVal(__INST(position)) + 1;
+		    OBJ t;
+
+		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+		} else {
+		    __INST(position) = nil; /* i.e. do not know */
+		}
+		RETURN (__mkSmallInteger(byte));
+	    }
+
+	    if (ret == 0) {
+		__INST(hitEOF) = true;
+	    } else /* ret < 0 */ {
+		__INST(position) = nil;
+		__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+	    }
 	}
     }
 %}.
     hitEOF ifTrue:[^ self pastEndRead].
     lastErrorNumber notNil ifTrue:[^ self readError].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     ^ self errorWriteOnly
 !
 
@@ -3980,80 +3401,82 @@
     OBJ fp;
 
     __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(writeonly))
-	&& __bothSmallInteger(count, start)
-    ) {
-	f = __FILEVal(fp);
-
-	cnt = __intVal(count);
-	offs = __intVal(start) - 1;
-
-	if (__isExternalBytesLike(anObject)) {
-	    OBJ sz;
-
-	    nInstBytes = 0;
-	    extPtr = (char *)(__externalBytesAddress(anObject));
-	    sz = __externalBytesSize(anObject);
-	    if (__isSmallInteger(sz)) {
-		objSize = __intVal(sz);
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(writeonly))
+	    && __bothSmallInteger(count, start)
+	) {
+	    f = __FILEVal(fp);
+
+	    cnt = __intVal(count);
+	    offs = __intVal(start) - 1;
+
+	    if (__isExternalBytesLike(anObject)) {
+		OBJ sz;
+
+		nInstBytes = 0;
+		extPtr = (char *)(__externalBytesAddress(anObject));
+		sz = __externalBytesSize(anObject);
+		if (__isSmallInteger(sz)) {
+		    objSize = __intVal(sz);
+		} else {
+		    objSize = 0; /* unknown */
+		}
 	    } else {
-		objSize = 0; /* unknown */
-	    }
-	} else {
-	    OBJ oClass;
-
-	    oClass = __Class(anObject);
-	    switch (__intVal(__ClassInstPtr(oClass)->c_flags) & ARRAYMASK) {
-		case BYTEARRAY:
-		case WORDARRAY:
-		case LONGARRAY:
-		case SWORDARRAY:
-		case SLONGARRAY:
-		case FLOATARRAY:
-		case DOUBLEARRAY:
-		    break;
-		default:
-		    goto bad;
+		OBJ oClass;
+
+		oClass = __Class(anObject);
+		switch (__intVal(__ClassInstPtr(oClass)->c_flags) & ARRAYMASK) {
+		    case BYTEARRAY:
+		    case WORDARRAY:
+		    case LONGARRAY:
+		    case SWORDARRAY:
+		    case SLONGARRAY:
+		    case FLOATARRAY:
+		    case DOUBLEARRAY:
+			break;
+		    default:
+			goto bad;
+		}
+		extPtr = (char *)0;
+		nInstVars = __intVal(__ClassInstPtr(oClass)->c_ninstvars);
+		nInstBytes = OHDR_SIZE + __OBJS2BYTES__(nInstVars);
+		objSize = __Size(anObject) - nInstBytes;
 	    }
-	    extPtr = (char *)0;
-	    nInstVars = __intVal(__ClassInstPtr(oClass)->c_ninstvars);
-	    nInstBytes = OHDR_SIZE + __OBJS2BYTES__(nInstVars);
-	    objSize = __Size(anObject) - nInstBytes;
-	}
-	if ((offs >= 0) && (cnt >= 0) && (objSize >= (cnt + offs))) {
-	    _buffered = (__INST(buffered) == true);
-	    if (_buffered) {
-		__READING__(f);
-	    }
-
-	    if (extPtr) {
-		__READBYTES__(ret, f, extPtr+offs, cnt, _buffered);
-	    } else {
-		/*
-		 * on interrupt, anObject may be moved to another location.
-		 * So we pass anObject, and the offset to the __READBYTES_OBJ__ macro.
-		 */
-		offs += nInstBytes;
-		__READBYTES_OBJ__(ret, f, anObject, offs, cnt, _buffered);
-	    }
-
-	    if (ret > 0) {
-		if (__isSmallInteger(__INST(position))) {
-		    INT np = __intVal(__INST(position)) + ret;
-		    OBJ t;
-
-		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+	    if ((offs >= 0) && (cnt >= 0) && (objSize >= (cnt + offs))) {
+		_buffered = (__INST(buffered) == true);
+		if (_buffered) {
+		    __READING__(f);
+		}
+
+		if (extPtr) {
+		    __READBYTES__(ret, f, extPtr+offs, cnt, _buffered);
 		} else {
-		    __INST(position) = nil; /* i.e. do not know */
+		    /*
+		     * on interrupt, anObject may be moved to another location.
+		     * So we pass anObject, and the offset to the __READBYTES_OBJ__ macro.
+		     */
+		    offs += nInstBytes;
+		    __READBYTES_OBJ__(ret, f, anObject, offs, cnt, _buffered);
 		}
-		RETURN (__mkSmallInteger(ret));
-	    }
-	    if (ret == 0) {
-		__INST(hitEOF) = true;
-	    } else /* ret < 0 */ {
-		__INST(position) = nil;
-		__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+
+		if (ret > 0) {
+		    if (__isSmallInteger(__INST(position))) {
+			INT np = __intVal(__INST(position)) + ret;
+			OBJ t;
+
+			t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+		    } else {
+			__INST(position) = nil; /* i.e. do not know */
+		    }
+		    RETURN (__mkSmallInteger(ret));
+		}
+		if (ret == 0) {
+		    __INST(hitEOF) = true;
+		} else /* ret < 0 */ {
+		    __INST(position) = nil;
+		    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+		}
 	    }
 	}
     }
@@ -4061,7 +3484,7 @@
 %}.
     (hitEOF and:[self pastEndRead isNil]) ifTrue:[^ 0].
     lastErrorNumber notNil ifTrue:[^ self readError].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
     "
      count not integer or arg not bit-like (String, ByteArray etc)
@@ -4089,72 +3512,74 @@
     OBJ fp;
 
     __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(writeonly))
-    ) {
-	FILEPOINTER f;
-	int ret, _buffered;
-	int value;
-	union {
-	    unsigned char buffer[4];
-	    int intVal;
-	} u;
-
-	f = __FILEVal(fp);
-	_buffered = (__INST(buffered) == true);
-	if (_buffered) {
-	    __READING__(f)
-	}
-	__READBYTES__(ret, f, u.buffer, 4, _buffered);
-
-	if (ret == 4) {
-	    if (__isSmallInteger(__INST(position))) {
-		INT np = __intVal(__INST(position)) + 4;
-		OBJ t;
-
-		t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-	    } else {
-		__INST(position) = nil; /* i.e. do not know */
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(writeonly))
+	) {
+	    FILEPOINTER f;
+	    int ret, _buffered;
+	    int value;
+	    union {
+		unsigned char buffer[4];
+		int intVal;
+	    } u;
+
+	    f = __FILEVal(fp);
+	    _buffered = (__INST(buffered) == true);
+	    if (_buffered) {
+		__READING__(f)
 	    }
-	    if (msbFlag == true) {
+	    __READBYTES__(ret, f, u.buffer, 4, _buffered);
+
+	    if (ret == 4) {
+		if (__isSmallInteger(__INST(position))) {
+		    INT np = __intVal(__INST(position)) + 4;
+		    OBJ t;
+
+		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+		} else {
+		    __INST(position) = nil; /* i.e. do not know */
+		}
+		if (msbFlag == true) {
 #if defined(__MSBFIRST__)
-		value = u.intVal;
+		    value = u.intVal;
 #else
-		value = (u.buffer[0] & 0xFF);
-		value = (value << 8) | (u.buffer[1] & 0xFF);
-		value = (value << 8) | (u.buffer[2] & 0xFF);
-		value = (value << 8) | (u.buffer[3] & 0xFF);
+		    value = (u.buffer[0] & 0xFF);
+		    value = (value << 8) | (u.buffer[1] & 0xFF);
+		    value = (value << 8) | (u.buffer[2] & 0xFF);
+		    value = (value << 8) | (u.buffer[3] & 0xFF);
 #endif
-	    } else {
+		} else {
 #if defined(__LSBFIRST__)
-		value = u.intVal;
+		    value = u.intVal;
 #else
-		value = (u.buffer[3] & 0xFF);
-		value = (value << 8) | (u.buffer[2] & 0xFF);
-		value = (value << 8) | (u.buffer[1] & 0xFF);
-		value = (value << 8) | (u.buffer[0] & 0xFF);
+		    value = (u.buffer[3] & 0xFF);
+		    value = (value << 8) | (u.buffer[2] & 0xFF);
+		    value = (value << 8) | (u.buffer[1] & 0xFF);
+		    value = (value << 8) | (u.buffer[0] & 0xFF);
+#endif
+		}
+#if __POINTER_SIZE__ == 8
+		RETURN ( __mkSmallInteger(value));
+#else
+		if ((value >= _MIN_INT) && (value <= _MAX_INT)) {
+		    RETURN ( __mkSmallInteger(value));
+		}
+		RETURN ( __MKLARGEINT(value) );
 #endif
 	    }
-#if __POINTER_SIZE__ == 8
-	    RETURN ( __mkSmallInteger(value));
-#else
-	    if ((value >= _MIN_INT) && (value <= _MAX_INT)) {
-		RETURN ( __mkSmallInteger(value));
+
+	    if (ret < 0) {
+		__INST(position) = nil;
+		__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+	    } else /* ret == 0 */ {
+		__INST(hitEOF) = true;
 	    }
-	    RETURN ( __MKLARGEINT(value) );
-#endif
-	}
-
-	if (ret < 0) {
-	    __INST(position) = nil;
-	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-	} else /* ret == 0 */ {
-	    __INST(hitEOF) = true;
 	}
     }
 %}.
     hitEOF ifTrue:[^ self pastEndRead].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
     ^ self readError.
 !
@@ -4170,59 +3595,61 @@
     OBJ fp;
 
     __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(writeonly))
-    ) {
-	FILEPOINTER f;
-	int ret, _buffered;
-	short value;
-	union {
-	    unsigned char buffer[2];
-	    short shortVal;
-	} u;
-
-	f = __FILEVal(fp);
-	_buffered = (__INST(buffered) == true);
-	if (_buffered) {
-	    __READING__(f)
-	}
-	__READBYTES__(ret, f, u.buffer, 2, _buffered);
-
-	if (ret == 2) {
-	    if (__isSmallInteger(__INST(position))) {
-		INT np = __intVal(__INST(position)) + 2;
-		OBJ t;
-
-		t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-	    } else {
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(writeonly))
+	) {
+	    FILEPOINTER f;
+	    int ret, _buffered;
+	    short value;
+	    union {
+		unsigned char buffer[2];
+		short shortVal;
+	    } u;
+
+	    f = __FILEVal(fp);
+	    _buffered = (__INST(buffered) == true);
+	    if (_buffered) {
+		__READING__(f)
+	    }
+	    __READBYTES__(ret, f, u.buffer, 2, _buffered);
+
+	    if (ret == 2) {
+		if (__isSmallInteger(__INST(position))) {
+		    INT np = __intVal(__INST(position)) + 2;
+		    OBJ t;
+
+		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+		} else {
+		    __INST(position) = nil; /* i.e. do not know */
+		}
+		if (msbFlag == true) {
+#if defined(__MSBFIRST__)
+		    value = u.shortVal;
+#else
+		    value = ((u.buffer[0] & 0xFF) << 8) | (u.buffer[1] & 0xFF);
+#endif
+		} else {
+#if defined(__LSBFIRST__)
+		    value = u.shortVal;
+#else
+		    value = ((u.buffer[1] & 0xFF) << 8) | (u.buffer[0] & 0xFF);
+#endif
+		}
+		RETURN (__mkSmallInteger(value));
+	    }
+
+	    if (ret < 0) {
 		__INST(position) = nil; /* i.e. do not know */
+		__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+	    } else /* ret == 0 */ {
+		__INST(hitEOF) = true;
 	    }
-	    if (msbFlag == true) {
-#if defined(__MSBFIRST__)
-		value = u.shortVal;
-#else
-		value = ((u.buffer[0] & 0xFF) << 8) | (u.buffer[1] & 0xFF);
-#endif
-	    } else {
-#if defined(__LSBFIRST__)
-		value = u.shortVal;
-#else
-		value = ((u.buffer[1] & 0xFF) << 8) | (u.buffer[0] & 0xFF);
-#endif
-	    }
-	    RETURN (__mkSmallInteger(value));
-	}
-
-	if (ret < 0) {
-	    __INST(position) = nil; /* i.e. do not know */
-	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-	} else /* ret == 0 */ {
-	    __INST(hitEOF) = true;
 	}
     }
 %}.
     hitEOF ifTrue:[^ self pastEndRead].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
     ^ self readError.
 !
@@ -4239,73 +3666,75 @@
     OBJ fp;
 
     __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(writeonly))
-    ) {
-	FILEPOINTER f;
-	int ret, _buffered;
-	unsigned INT value;
-	union {
-	    unsigned char buffer[4];
-	    unsigned int intVal;
-	} u;
-
-	f = __FILEVal(fp);
-	_buffered = (__INST(buffered) == true);
-	if (_buffered) {
-	    __READING__(f)
-	}
-	__READBYTES__(ret, f, u.buffer, 4, _buffered);
-
-	if (ret == 4) {
-	    if (__isSmallInteger(__INST(position))) {
-		INT np = __intVal(__INST(position)) + 4;
-		OBJ t;
-
-		t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-	    } else {
-		__INST(position) = nil; /* i.e. do not know */
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(writeonly))
+	) {
+	    FILEPOINTER f;
+	    int ret, _buffered;
+	    unsigned INT value;
+	    union {
+		unsigned char buffer[4];
+		unsigned int intVal;
+	    } u;
+
+	    f = __FILEVal(fp);
+	    _buffered = (__INST(buffered) == true);
+	    if (_buffered) {
+		__READING__(f)
 	    }
-	    if (msbFlag == true) {
+	    __READBYTES__(ret, f, u.buffer, 4, _buffered);
+
+	    if (ret == 4) {
+		if (__isSmallInteger(__INST(position))) {
+		    INT np = __intVal(__INST(position)) + 4;
+		    OBJ t;
+
+		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+		} else {
+		    __INST(position) = nil; /* i.e. do not know */
+		}
+		if (msbFlag == true) {
 #if defined(__MSBFIRST__)
-		value = u.intVal;
+		    value = u.intVal;
 #else
-		value = u.buffer[0];
-		value = (value << 8) | u.buffer[1];
-		value = (value << 8) | u.buffer[2];
-		value = (value << 8) | u.buffer[3];
+		    value = u.buffer[0];
+		    value = (value << 8) | u.buffer[1];
+		    value = (value << 8) | u.buffer[2];
+		    value = (value << 8) | u.buffer[3];
 #endif
-	    } else {
+		} else {
 #if defined(__LSBFIRST__)
-		value = u.intVal;
+		    value = u.intVal;
 #else
-		value = u.buffer[3];
-		value = (value << 8) | u.buffer[2];
-		value = (value << 8) | u.buffer[1];
-		value = (value << 8) | u.buffer[0];
+		    value = u.buffer[3];
+		    value = (value << 8) | u.buffer[2];
+		    value = (value << 8) | u.buffer[1];
+		    value = (value << 8) | u.buffer[0];
+#endif
+		}
+#if __POINTER_SIZE__ == 8
+		value &= 0xFFFFFFFF;
+		RETURN (__mkSmallInteger(value));
+#else
+		if (value <= _MAX_INT) {
+		    RETURN (__mkSmallInteger(value));
+		}
+		RETURN (__MKULARGEINT(value) );
 #endif
 	    }
-#if __POINTER_SIZE__ == 8
-	    value &= 0xFFFFFFFF;
-	    RETURN (__mkSmallInteger(value));
-#else
-	    if (value <= _MAX_INT) {
-		RETURN (__mkSmallInteger(value));
+
+	    if (ret < 0) {
+		__INST(position) = nil; /* i.e. do not know */
+		__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+	    } else /* ret == 0 */ {
+		__INST(hitEOF) = true;
 	    }
-	    RETURN (__MKULARGEINT(value) );
-#endif
-	}
-
-	if (ret < 0) {
-	    __INST(position) = nil; /* i.e. do not know */
-	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-	} else /* ret == 0 */ {
-	    __INST(hitEOF) = true;
 	}
     }
 %}.
     hitEOF ifTrue:[^ self pastEndRead].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
     ^ self readError.
 !
@@ -4321,59 +3750,61 @@
     OBJ fp;
 
     __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(writeonly))
-    ) {
-	FILEPOINTER f;
-	int ret, _buffered;
-	unsigned int value;
-	union {
-	    unsigned char buffer[2];
-	    unsigned short shortVal;
-	} u;
-
-	f = __FILEVal(fp);
-	_buffered = (__INST(buffered) == true);
-	if (_buffered) {
-	    __READING__(f)
-	}
-	__READBYTES__(ret, f, u.buffer, 2, _buffered);
-
-	if (ret == 2) {
-	    if (__isSmallInteger(__INST(position))) {
-		INT np = __intVal(__INST(position)) + 2;
-		OBJ t;
-
-		t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-	    } else {
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(writeonly))
+	) {
+	    FILEPOINTER f;
+	    int ret, _buffered;
+	    unsigned int value;
+	    union {
+		unsigned char buffer[2];
+		unsigned short shortVal;
+	    } u;
+
+	    f = __FILEVal(fp);
+	    _buffered = (__INST(buffered) == true);
+	    if (_buffered) {
+		__READING__(f)
+	    }
+	    __READBYTES__(ret, f, u.buffer, 2, _buffered);
+
+	    if (ret == 2) {
+		if (__isSmallInteger(__INST(position))) {
+		    INT np = __intVal(__INST(position)) + 2;
+		    OBJ t;
+
+		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+		} else {
+		    __INST(position) = nil; /* i.e. do not know */
+		}
+		if (msbFlag == true) {
+#if defined(__MSBFIRST__)
+		    value = u.shortVal;
+#else
+		    value = (u.buffer[0] << 8) | u.buffer[1];
+#endif
+		} else {
+#if defined(__LSBFIRST__)
+		    value = u.shortVal;
+#else
+		    value = (u.buffer[1] << 8) | u.buffer[0];
+#endif
+		}
+		RETURN (__mkSmallInteger(value));
+	    }
+
+	    if (ret < 0) {
 		__INST(position) = nil; /* i.e. do not know */
+		__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+	    } else /* ret == 0 */ {
+		__INST(hitEOF) = true;
 	    }
-	    if (msbFlag == true) {
-#if defined(__MSBFIRST__)
-		value = u.shortVal;
-#else
-		value = (u.buffer[0] << 8) | u.buffer[1];
-#endif
-	    } else {
-#if defined(__LSBFIRST__)
-		value = u.shortVal;
-#else
-		value = (u.buffer[1] << 8) | u.buffer[0];
-#endif
-	    }
-	    RETURN (__mkSmallInteger(value));
-	}
-
-	if (ret < 0) {
-	    __INST(position) = nil; /* i.e. do not know */
-	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-	} else /* ret == 0 */ {
-	    __INST(hitEOF) = true;
 	}
     }
 %}.
     hitEOF ifTrue:[^ self pastEndRead].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
     ^ self readError.
 !
@@ -4405,42 +3836,44 @@
     int cnt, _buffered;
 
     __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(readonly))
-	&& __isSmallInteger(aByteValue)
-
-    ) {
-	c = __intVal(aByteValue);
-	f = __FILEVal(fp);
-	if (_buffered = (__INST(buffered) == true)) {
-	    __WRITING__(f)
-	}
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(readonly))
+	    && __isSmallInteger(aByteValue)
+
+	) {
+	    c = __intVal(aByteValue);
+	    f = __FILEVal(fp);
+	    if (_buffered = (__INST(buffered) == true)) {
+		__WRITING__(f)
+	    }
 #ifdef WIN32
-	if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-	    cnt = __win32_fwrite(&c, 1, 1, f);
-	} else
+	    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+		cnt = __win32_fwrite(&c, 1, 1, f);
+	    } else
 #endif
-	{
-	    __WRITEBYTE__(cnt, f, &c, _buffered);
-	}
-	if (cnt == 1) {
-	    if (__isSmallInteger(__INST(position))) {
-		INT np = __intVal(__INST(position)) + 1;
-		OBJ t;
-
-		t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-	    } else {
+	    {
+		__WRITEBYTE__(cnt, f, &c, _buffered);
+	    }
+	    if (cnt == 1) {
+		if (__isSmallInteger(__INST(position))) {
+		    INT np = __intVal(__INST(position)) + 1;
+		    OBJ t;
+
+		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+		} else {
+		    __INST(position) = nil; /* i.e. do not know */
+		}
+		RETURN (self);
+	    }
+	    if (cnt < 0) {
 		__INST(position) = nil; /* i.e. do not know */
 	    }
-	    RETURN (self);
+	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
 	}
-	if (cnt < 0) {
-	    __INST(position) = nil; /* i.e. do not know */
-	}
-	__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
     }
 %}.
-    filePointer isNil ifTrue:[self errorNotOpen. ^ self].
+    handle isNil ifTrue:[self errorNotOpen. ^ self].
     (mode == #readonly) ifTrue:[self errorReadOnly. ^ self].
     self writeError.
 !
@@ -4466,89 +3899,91 @@
     OBJ fp;
 
     __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(readonly))
-	&& __bothSmallInteger(count, start)
-    ) {
-	len = __intVal(count);
-	offs = __intVal(start) - 1;
-	f = __FILEVal(fp);
-
-	if (__isExternalBytesLike(anObject)) {
-	    OBJ sz;
-
-	    nInstBytes = 0;
-	    extPtr = (char *)__externalBytesAddress(anObject);
-	    sz = __externalBytesSize(anObject);
-	    if (__isSmallInteger(sz)) {
-		objSize = __intVal(sz);
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(readonly))
+	    && __bothSmallInteger(count, start)
+	) {
+	    len = __intVal(count);
+	    offs = __intVal(start) - 1;
+	    f = __FILEVal(fp);
+
+	    if (__isExternalBytesLike(anObject)) {
+		OBJ sz;
+
+		nInstBytes = 0;
+		extPtr = (char *)__externalBytesAddress(anObject);
+		sz = __externalBytesSize(anObject);
+		if (__isSmallInteger(sz)) {
+		    objSize = __intVal(sz);
+		} else {
+		    objSize = 0; /* unknown */
+		}
 	    } else {
-		objSize = 0; /* unknown */
-	    }
-	} else {
-	    OBJ oClass;
-
-	    oClass = __Class(anObject);
-	    switch (__intVal(__ClassInstPtr(oClass)->c_flags) & ARRAYMASK) {
-		case BYTEARRAY:
-		case WORDARRAY:
-		case LONGARRAY:
-		case SWORDARRAY:
-		case SLONGARRAY:
-		case FLOATARRAY:
-		case DOUBLEARRAY:
-		    break;
-		default:
-		    goto bad;
+		OBJ oClass;
+
+		oClass = __Class(anObject);
+		switch (__intVal(__ClassInstPtr(oClass)->c_flags) & ARRAYMASK) {
+		    case BYTEARRAY:
+		    case WORDARRAY:
+		    case LONGARRAY:
+		    case SWORDARRAY:
+		    case SLONGARRAY:
+		    case FLOATARRAY:
+		    case DOUBLEARRAY:
+			break;
+		    default:
+			goto bad;
+		}
+		extPtr = (char *)0;
+		nInstVars = __intVal(__ClassInstPtr(oClass)->c_ninstvars);
+		nInstBytes = OHDR_SIZE + __OBJS2BYTES__(nInstVars);
+		objSize = __Size(anObject) - nInstBytes;
 	    }
-	    extPtr = (char *)0;
-	    nInstVars = __intVal(__ClassInstPtr(oClass)->c_ninstvars);
-	    nInstBytes = OHDR_SIZE + __OBJS2BYTES__(nInstVars);
-	    objSize = __Size(anObject) - nInstBytes;
-	}
-	if ( (offs >= 0) && (len >= 0) && (objSize >= (len + offs)) ) {
-	    if (_buffered = (__INST(buffered) == true)) {
-		__WRITING__(f)
-	    }
-
-	    if (extPtr) {
-		__WRITEBYTES__(cnt, f, extPtr+offs, len, _buffered);
-	    } else {
-		/*
-		 * on interrupt, anObject may be moved to another location.
-		 * So we pass anObject, and the offset to the __WRITEBYTES_OBJ__ macro.
-		 */
-		offs += nInstBytes;
-		__WRITEBYTES_OBJ__(cnt, f, anObject, offs, len, _buffered);
+	    if ( (offs >= 0) && (len >= 0) && (objSize >= (len + offs)) ) {
+		if (_buffered = (__INST(buffered) == true)) {
+		    __WRITING__(f)
+		}
+
+		if (extPtr) {
+		    __WRITEBYTES__(cnt, f, extPtr+offs, len, _buffered);
+		} else {
+		    /*
+		     * on interrupt, anObject may be moved to another location.
+		     * So we pass anObject, and the offset to the __WRITEBYTES_OBJ__ macro.
+		     */
+		    offs += nInstBytes;
+		    __WRITEBYTES_OBJ__(cnt, f, anObject, offs, len, _buffered);
+		}
+
+		if (cnt >= 0) {
+		    if (__isSmallInteger(__INST(position))) {
+			INT np = __intVal(__INST(position)) + cnt;
+			OBJ t;
+
+			t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+		    } else {
+			__INST(position) = nil; /* i.e. do not know */
+		    }
+		    RETURN ( __mkSmallInteger(cnt) );
+		}
+		if (
+#ifdef EWOULDBLOCK
+		    (__threadErrno == EWOULDBLOCK) ||
+#endif
+		    (__threadErrno == EAGAIN)
+		) {
+		    RETURN ( __mkSmallInteger(0) );
+		}
+		__INST(position) = nil; /* i.e. do not know */
+		__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
 	    }
-
-	    if (cnt >= 0) {
-		if (__isSmallInteger(__INST(position))) {
-		    INT np = __intVal(__INST(position)) + cnt;
-		    OBJ t;
-
-		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		} else {
-		    __INST(position) = nil; /* i.e. do not know */
-		}
-		RETURN ( __mkSmallInteger(cnt) );
-	    }
-	    if (
-#ifdef EWOULDBLOCK
-		(__threadErrno == EWOULDBLOCK) ||
-#endif
-		(__threadErrno == EAGAIN)
-	    ) {
-		RETURN ( __mkSmallInteger(0) );
-	    }
-	    __INST(position) = nil; /* i.e. do not know */
-	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
 	}
     }
 bad: ;
 %}.
     lastErrorNumber notNil ifTrue:[^ self writeError].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     (mode == #readonly) ifTrue:[^ self errorReadOnly].
     ^ self primitiveFailed
 !
@@ -4589,52 +4024,54 @@
 #endif
     }
 
-    if (((fp = __INST(filePointer)) != nil)
-     && (__INST(mode) != @symbol(readonly))
-    ) {
-	if (msbFlag == true) {
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	 && (__INST(mode) != @symbol(readonly))
+	) {
+	    if (msbFlag == true) {
 #if defined(__MSBFIRST__)
-	    u.intVal = num;
+		u.intVal = num;
 #else
-	    u.bytes[0] = (num >> 24) & 0xFF;
-	    u.bytes[1] = (num >> 16) & 0xFF;
-	    u.bytes[2] = (num >> 8) & 0xFF;
-	    u.bytes[3] = num & 0xFF;
+		u.bytes[0] = (num >> 24) & 0xFF;
+		u.bytes[1] = (num >> 16) & 0xFF;
+		u.bytes[2] = (num >> 8) & 0xFF;
+		u.bytes[3] = num & 0xFF;
 #endif
-	} else {
+	    } else {
 #if defined(__LSBFIRST__)
-	    u.intVal = num;
+		u.intVal = num;
 #else
-	    u.bytes[3] = (num >> 24) & 0xFF;
-	    u.bytes[2] = (num >> 16) & 0xFF;
-	    u.bytes[1] = (num >> 8) & 0xFF;
-	    u.bytes[0] = num & 0xFF;
+		u.bytes[3] = (num >> 24) & 0xFF;
+		u.bytes[2] = (num >> 16) & 0xFF;
+		u.bytes[1] = (num >> 8) & 0xFF;
+		u.bytes[0] = num & 0xFF;
 #endif
-	}
-
-	f = __FILEVal(fp);
-	if (_buffered = (__INST(buffered) == true)) {
-	    __WRITING__(f)
+	    }
+
+	    f = __FILEVal(fp);
+	    if (_buffered = (__INST(buffered) == true)) {
+		__WRITING__(f)
+	    }
+	    __WRITEBYTES__(cnt, f, u.bytes, 4, _buffered);
+
+	    if (cnt == 4) {
+		if (__isSmallInteger(__INST(position))) {
+		    INT np = __intVal(__INST(position)) + 4;
+		    OBJ t;
+
+		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+		} else {
+		    __INST(position) = nil; /* i.e. do not know */
+		}
+		RETURN ( self );
+	    }
+	    __INST(position) = nil; /* i.e. do not know */
+	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
 	}
-	__WRITEBYTES__(cnt, f, u.bytes, 4, _buffered);
-
-	if (cnt == 4) {
-	    if (__isSmallInteger(__INST(position))) {
-		INT np = __intVal(__INST(position)) + 4;
-		OBJ t;
-
-		t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-	    } else {
-		__INST(position) = nil; /* i.e. do not know */
-	    }
-	    RETURN ( self );
-	}
-	__INST(position) = nil; /* i.e. do not know */
-	__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
     }
 badArg: ;
 %}.
-    filePointer isNil ifTrue:[self errorNotOpen. ^ self].
+    handle isNil ifTrue:[self errorNotOpen. ^ self].
     (mode == #readonly) ifTrue:[self errorReadOnly. ^ self].
     lastErrorNumber notNil ifTrue:[self writeError. ^ self].
 
@@ -4662,50 +4099,52 @@
     OBJ fp;
 
     __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(readonly))
-	&& __isSmallInteger(aNumber)
-    ) {
-	num = __intVal(aNumber);
-	if (msbFlag == true) {
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(readonly))
+	    && __isSmallInteger(aNumber)
+	) {
+	    num = __intVal(aNumber);
+	    if (msbFlag == true) {
 #if defined(__MSBFIRST__)
-	    u.shortVal = num;
+		u.shortVal = num;
+#else
+		u.bytes[0] = (num >> 8) & 0xFF;
+		u.bytes[1] = num & 0xFF;
+#endif
+	    } else {
+#if defined(__LSBFIRST__)
+		u.shortVal = num;
 #else
-	    u.bytes[0] = (num >> 8) & 0xFF;
-	    u.bytes[1] = num & 0xFF;
+		u.bytes[1] = (num >> 8) & 0xFF;
+		u.bytes[0] = num & 0xFF;
 #endif
-	} else {
-#if defined(__LSBFIRST__)
-	    u.shortVal = num;
-#else
-	    u.bytes[1] = (num >> 8) & 0xFF;
-	    u.bytes[0] = num & 0xFF;
-#endif
+	    }
+
+	    f = __FILEVal(fp);
+	    if (_buffered = (__INST(buffered) == true)) {
+		__WRITING__(f)
+	    }
+	    __WRITEBYTES__(cnt, f, u.bytes, 2, _buffered);
+
+	    if (cnt == 2) {
+		if (__isSmallInteger(__INST(position))) {
+		    INT np = __intVal(__INST(position)) + 2;
+		    OBJ t;
+
+		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+		} else {
+		    __INST(position) = nil; /* i.e. do not know */
+		}
+		RETURN ( self );
+	    }
+	    __INST(position) = nil; /* i.e. do not know */
+	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
 	}
-
-	f = __FILEVal(fp);
-	if (_buffered = (__INST(buffered) == true)) {
-	    __WRITING__(f)
-	}
-	__WRITEBYTES__(cnt, f, u.bytes, 2, _buffered);
-
-	if (cnt == 2) {
-	    if (__isSmallInteger(__INST(position))) {
-		INT np = __intVal(__INST(position)) + 2;
-		OBJ t;
-
-		t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-	    } else {
-		__INST(position) = nil; /* i.e. do not know */
-	    }
-	    RETURN ( self );
-	}
-	__INST(position) = nil; /* i.e. do not know */
-	__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
     }
 %}.
     lastErrorNumber notNil ifTrue:[self writeError. ^ self.].
-    filePointer isNil ifTrue:[self errorNotOpen. ^ self].
+    handle isNil ifTrue:[self errorNotOpen. ^ self].
     (mode == #readonly) ifTrue:[self errorReadOnly. ^ self].
     self argumentMustBeInteger
 ! !
@@ -4735,40 +4174,42 @@
     |fp|
 
 %{
-    if ((fp = __INST(filePointer)) != nil) {
-	FILEPOINTER f;
-	int rslt;
-
-	__INST(filePointer) = nil;
-	f = __FILEVal(fp);
-	if (@global(FileOpenTrace) == true) {
-	    fprintf(stderr, "fclose [ExternalStream] %x\n", f);
-	}
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if ((fp = __INST(handle)) != nil) {
+	    FILEPOINTER f;
+	    int rslt;
+
+	    __INST(handle) = nil;
+	    f = __FILEVal(fp);
+	    if (@global(FileOpenTrace) == true) {
+		fprintf(stderr, "fclose [ExternalStream] %x\n", f);
+	    }
 #ifdef WIN32
-	do {
-	    __threadErrno = 0;
-	    rslt = __STX_C_CALL1("fclose", fclose, f);
-	} while((rslt < 0) && (__threadErrno == EINTR));
+	    do {
+		__threadErrno = 0;
+		rslt = __STX_C_CALL1("fclose", fclose, f);
+	    } while((rslt < 0) && (__threadErrno == EINTR));
 #else
-	__BEGIN_INTERRUPTABLE__
-	fclose(f);
-	__END_INTERRUPTABLE__
+	    __BEGIN_INTERRUPTABLE__
+	    fclose(f);
+	    __END_INTERRUPTABLE__
 #endif
+	}
+	RETURN (self);
     }
-    RETURN (self);
 %}.
     "/ fallback for rel5
 
-    fp := filePointer.
+    fp := handle.
     fp notNil ifTrue:[
-	filePointer := nil.
+	handle := nil.
 	self closeFile:fp
     ]
 ! !
 
 !ExternalStream methodsFor:'private'!
 
-closeFile:filePointer
+closeFile:handle
     "for rel5 only"
 
     self primitiveFailed
@@ -4784,7 +4225,7 @@
 
     |retVal|
 
-    filePointer notNil ifTrue:[^ self errorAlreadyOpen].
+    handle notNil ifTrue:[^ self errorAlreadyOpen].
 %{
     FILEPOINTER f;
     OBJ fp;
@@ -4800,7 +4241,8 @@
 		fprintf(stderr, "fdopen [ExternalStream] %d -> %x\n", __intVal(aFileDescriptor), f);
 	    }
 
-	    fp = __MKFILEPOINTER(f); __INST(filePointer) = fp; __STORE(self, fp);
+	    fp = __MKFILEPOINTER(f); __INST(handle) = fp; __STORE(self, fp);
+	    __INST(handleType) = @symbol(filePointer);
 	    __INST(position) = @global(PositionableStream:ZeroPosition);
 	    retVal = self;
 	}
@@ -4834,22 +4276,22 @@
     Only used internally"
 
    mode == #readonly ifTrue:[
-        ^ ReadMode
+	^ ReadMode
    ].
    mode == #writeonly ifTrue:[
-        ^ WriteMode
+	^ WriteMode
    ].
    mode == #readWrite ifTrue:[
-        ^ ReadWriteMode
+	^ ReadWriteMode
    ].
    mode == #append ifTrue:[
-        ^ AppendMode
+	^ AppendMode
    ].
    ^ ReadWriteMode
 !
 
 open:aPath withMode:openModeString
-    "low level open; opens the file/device and sets the filePointer instance
+    "low level open; opens the file/device and sets the handle instance
      variable. Careful: this does not care for any other state."
 
     |ok|
@@ -4883,7 +4325,8 @@
 	    if (@global(FileOpenTrace) == true) {
 		fprintf(stderr, "fopen %s [ExternalStream] -> %x\n", __stringVal(aPath), f);
 	    }
-	    fp = __MKFILEPOINTER(f); __INST(filePointer) = fp; __STORE(self, fp);
+	    fp = __MKFILEPOINTER(f); __INST(handle) = fp; __STORE(self, fp);
+	    __INST(handleType) = @symbol(filePointer);
 	    ok = true;
 	}
     }
@@ -4904,22 +4347,39 @@
      cannot reopen here since I am abstract and have no device knowledge"
 
     self class name errorPrint. ' [warning]: automatic reOpen not supported - stream closed' errorPrintCR.
-    filePointer := nil.
+    handle := nil.
     Lobby unregister:self.
 
     "Modified: 10.1.1997 / 17:50:44 / cg"
 !
 
+setAccessor:what to:something
+    "set the filePointer/fileHandle to the given one;
+     low level private & friend interface; may also be used to connect to some
+     externally provided handle."
+
+    handle := something.
+    handleType := what.
+!
+
 setFileDescriptor:anInteger mode:openMode
-    "set the filePointer based upon a given fileDescriptor -
+    "set the handle based upon a given fileDescriptor -
      notice: this one is based on the underlying OSs fileDescriptor -
      this may not be available on all platforms (i.e. non unix systems)."
 
     self setFileHandle:anInteger mode:openMode
 !
 
+setFileHandle:something
+    "set the fileHandle to the given one;
+     low level private & friend interface; may also be used to connect to some
+     externally provided file handle."
+
+    self setAccessor:#fileHandle to:something
+!
+
 setFileHandle:anIntegerOrExternalAddress mode:openMode
-    "set the filePointer based upon a given fileHandle -
+    "set the handle based upon a given fileHandle -
      notice: this one is based on the underlying OSs fileDescriptor -
      this is a fileDescriptor (Integer) on Unix and Windows, or an Handle (ExternalAddres) on Windows only.
      It may not be available on all platforms."
@@ -4931,26 +4391,27 @@
     int fd;
 
     if (!__isStringLike(openMode))
-        goto err;
+	goto err;
 
 #ifdef WIN32
     if (__isExternalAddressLike(anIntegerOrExternalAddress) ) {
-        HANDLE __fileHandle = (HANDLE)(__externalAddressVal(anIntegerOrExternalAddress));
-        fd = _open_osfhandle(__fileHandle, 0);      /* should we handle readonly, append or text mode? */
+	HANDLE __fileHandle = (HANDLE)(__externalAddressVal(anIntegerOrExternalAddress));
+	fd = _open_osfhandle(__fileHandle, 0);      /* should we handle readonly, append or text mode? */
     } else
 #endif
     if (__isSmallInteger(anIntegerOrExternalAddress)) {
-        fd = __smallIntegerVal(anIntegerOrExternalAddress);
+	fd = __smallIntegerVal(anIntegerOrExternalAddress);
     } else {
-        goto err;
+	goto err;
     }
     f = fdopen(fd, __stringVal(openMode));
     if (f != NULL) {
-        if (@global(FileOpenTrace) == true) {
-            fprintf(stderr, "fdopen [ExternalStream] %d -> %x\n", fd, f);
-        }
-        fp = __MKFILEPOINTER(f); __INST(filePointer) = fp; __STORE(self, fp);
-        RETURN (self);
+	if (@global(FileOpenTrace) == true) {
+	    fprintf(stderr, "fdopen [ExternalStream] %d -> %x\n", fd, f);
+	}
+	fp = __MKFILEPOINTER(f); __INST(handle) = fp; __STORE(self, fp);
+	__INST(handleType) = @symbol(filePointer);
+	RETURN (self);
     }
 err:;
 %}.
@@ -4960,13 +4421,21 @@
 setFilePointer:something
     "set the filePointer to the given one;
      low level private & friend interface; may also be used to connect to some
-     externally provided file handle."
-
-    filePointer := something
+     externally provided file."
+
+    self setAccessor:#filePointer to:something
 !
 
 setLastError:aNumber
     lastErrorNumber := aNumber
+!
+
+setSocketHandle:something
+    "set the socketHandle to the given one;
+     low level private & friend interface; may also be used to connect to some
+     externally provided socket handle."
+
+    self setAccessor:#socketHandle to:something
 ! !
 
 !ExternalStream methodsFor:'queries'!
@@ -4981,7 +4450,7 @@
 isBlocking
     "return true, if O_NONBLOCK is NOT set in the fileDescriptor (propably UNIX specific)"
 
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     ^ OperatingSystem isBlockingOn:self fileDescriptor
 !
 
@@ -4995,7 +4464,7 @@
 isOpen
     "return true, if this stream is open"
 
-    ^ filePointer notNil
+    ^ handle notNil
 !
 
 isReadable
@@ -5026,43 +4495,45 @@
     unsigned char ch;
 
     __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(writeonly))
-    ) {
-	f = __FILEVal(fp);
-
-	_buffered = (__INST(buffered) == true);
-	if (_buffered) {
-	    __READING__(f)
-	}
-	__READBYTE__(ret, f, &ch, _buffered);
-
-	if (ret > 0) {
-	    pos = __INST(position);
-	    if (__isSmallInteger(pos)) {
-		OBJ t;
-
-		t = __MKINT(__intVal(pos) + 1); __INST(position) = t; __STORE(self, t);
-	    } else {
-		__INST(position) = nil; /* i.e. do not know */
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(writeonly))
+	) {
+	    f = __FILEVal(fp);
+
+	    _buffered = (__INST(buffered) == true);
+	    if (_buffered) {
+		__READING__(f)
 	    }
-	    if (__INST(binary) == true) {
-		RETURN ( __mkSmallInteger(ch) );
+	    __READBYTE__(ret, f, &ch, _buffered);
+
+	    if (ret > 0) {
+		pos = __INST(position);
+		if (__isSmallInteger(pos)) {
+		    OBJ t;
+
+		    t = __MKINT(__intVal(pos) + 1); __INST(position) = t; __STORE(self, t);
+		} else {
+		    __INST(position) = nil; /* i.e. do not know */
+		}
+		if (__INST(binary) == true) {
+		    RETURN ( __mkSmallInteger(ch) );
+		}
+		RETURN ( __MKCHARACTER(ch) );
 	    }
-	    RETURN ( __MKCHARACTER(ch) );
-	}
-
-	__INST(position) = nil;
-	if (ret < 0) {
-	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-	} else /* ret == 0 */ {
-	    __INST(hitEOF) = true;
+
+	    __INST(position) = nil;
+	    if (ret < 0) {
+		__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+	    } else /* ret == 0 */ {
+		__INST(hitEOF) = true;
+	    }
 	}
     }
 %}.
     hitEOF == true ifTrue:[^ self pastEndRead].
     lastErrorNumber notNil ifTrue:[^ self readError].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
 
     readAhead notNil ifTrue:[
@@ -5070,7 +4541,7 @@
 	readAhead := nil.
 	^ c.
     ].
-    c := self nextByteFromFile:filePointer.
+    c := self nextByteFromFile:handle.
     c isNil ifTrue:[
 	^ self pastEndRead.
     ].
@@ -5118,43 +4589,45 @@
     unsigned char ch;
 
     __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(writeonly))
-    ) {
-	f = __FILEVal(fp);
-
-	_buffered = (__INST(buffered) == true);
-	if (_buffered) {
-	    __READING__(f)
-	}
-	__READBYTE__(ret, f, &ch, _buffered);
-
-	if (ret > 0) {
-	    pos = __INST(position);
-	    if (__isSmallInteger(pos)) {
-		OBJ t;
-
-		t = __MKINT(__intVal(pos) + 1); __INST(position) = t; __STORE(self, t);
-	    } else {
-		__INST(position) = nil; /* i.e. do not know */
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(writeonly))
+	) {
+	    f = __FILEVal(fp);
+
+	    _buffered = (__INST(buffered) == true);
+	    if (_buffered) {
+		__READING__(f)
 	    }
-	    if (__INST(binary) == true) {
-		RETURN ( __mkSmallInteger(ch) );
+	    __READBYTE__(ret, f, &ch, _buffered);
+
+	    if (ret > 0) {
+		pos = __INST(position);
+		if (__isSmallInteger(pos)) {
+		    OBJ t;
+
+		    t = __MKINT(__intVal(pos) + 1); __INST(position) = t; __STORE(self, t);
+		} else {
+		    __INST(position) = nil; /* i.e. do not know */
+		}
+		if (__INST(binary) == true) {
+		    RETURN ( __mkSmallInteger(ch) );
+		}
+		RETURN ( __MKCHARACTER(ch) );
 	    }
-	    RETURN ( __MKCHARACTER(ch) );
-	}
-
-	__INST(position) = nil;
-	if (ret < 0) {
-	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-	} else /* ret == 0 */ {
-	    __INST(hitEOF) = true;
+
+	    __INST(position) = nil;
+	    if (ret < 0) {
+		__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+	    } else /* ret == 0 */ {
+		__INST(hitEOF) = true;
+	    }
 	}
     }
 %}.
     hitEOF == true ifTrue:[^ nil].
     lastErrorNumber notNil ifTrue:[^ self readError].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
 
     readAhead notNil ifTrue:[
@@ -5162,7 +4635,7 @@
 	readAhead := nil.
 	^ c.
     ].
-    c := self nextByteFromFile:filePointer.
+    c := self nextByteFromFile:handle.
     c isNil ifTrue:[
 	^ nil.
     ].
@@ -5195,34 +4668,36 @@
 
     __INST(lastErrorNumber) = nil;
 
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(writeonly))
-    ) {
-	f = __FILEVal(fp);
-	_buffered = (__INST(buffered) == true);
-	if (_buffered) {
-	    __READING__(f)
-	}
-	__READBYTE__(ret, f, &c, _buffered);
-
-	if (ret > 0) {
-	    __UNGETC__(c, f, _buffered);
-
-	    if (__INST(binary) == true) {
-		RETURN ( __mkSmallInteger(c) );
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(writeonly))
+	) {
+	    f = __FILEVal(fp);
+	    _buffered = (__INST(buffered) == true);
+	    if (_buffered) {
+		__READING__(f)
 	    }
-	    RETURN ( __MKCHARACTER(c) );
-	}
-	if (ret < 0) {
-	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-	} else /* ret == 0 */ {
-	    __INST(hitEOF) = true;
+	    __READBYTE__(ret, f, &c, _buffered);
+
+	    if (ret > 0) {
+		__UNGETC__(c, f, _buffered);
+
+		if (__INST(binary) == true) {
+		    RETURN ( __mkSmallInteger(c) );
+		}
+		RETURN ( __MKCHARACTER(c) );
+	    }
+	    if (ret < 0) {
+		__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+	    } else /* ret == 0 */ {
+		__INST(hitEOF) = true;
+	    }
 	}
     }
 %}.
     hitEOF == true ifTrue:[^ self pastEndRead].
     lastErrorNumber notNil ifTrue:[^ self readError].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
 
     readAhead isNil ifTrue:[
@@ -5257,34 +4732,36 @@
 
     __INST(lastErrorNumber) = nil;
 
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(writeonly))
-    ) {
-	f = __FILEVal(fp);
-	_buffered = (__INST(buffered) == true);
-	if (_buffered) {
-	    __READING__(f)
-	}
-	__READBYTE__(ret, f, &c, _buffered);
-
-	if (ret > 0) {
-	    __UNGETC__(c, f, _buffered);
-
-	    if (__INST(binary) == true) {
-		RETURN ( __mkSmallInteger(c) );
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(writeonly))
+	) {
+	    f = __FILEVal(fp);
+	    _buffered = (__INST(buffered) == true);
+	    if (_buffered) {
+		__READING__(f)
 	    }
-	    RETURN ( __MKCHARACTER(c) );
-	}
-	if (ret < 0) {
-	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-	} else /* ret == 0 */ {
-	    __INST(hitEOF) = true;
+	    __READBYTE__(ret, f, &c, _buffered);
+
+	    if (ret > 0) {
+		__UNGETC__(c, f, _buffered);
+
+		if (__INST(binary) == true) {
+		    RETURN ( __mkSmallInteger(c) );
+		}
+		RETURN ( __MKCHARACTER(c) );
+	    }
+	    if (ret < 0) {
+		__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+	    } else /* ret == 0 */ {
+		__INST(hitEOF) = true;
+	    }
 	}
     }
 %}.
     hitEOF == true ifTrue:[^ nil].
     lastErrorNumber notNil ifTrue:[^ self readError].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
 
     readAhead isNil ifTrue:[
@@ -5324,19 +4801,19 @@
 
 !ExternalStream methodsFor:'rel5 protocol'!
 
-atEndFile:filePointer
+atEndFile:handle
     "for migration to rel5 only"
 
     self primitiveFailed
 !
 
-nextByteFromFile:filePointer
+nextByteFromFile:handle
     "for migration to rel5 only"
 
     self primitiveFailed
 !
 
-nextPutByte:aByte toFile:filePointer
+nextPutByte:aByte toFile:handle
     "for migration to rel5 only"
 
     self primitiveFailed
@@ -5371,69 +4848,71 @@
 
     __INST(lastErrorNumber) = nil;
 
-    if ((fp = __INST(filePointer)) != nil) {
-	f = __FILEVal(fp);
-	if (_buffered = (__INST(buffered) == true)) {
-	    __READING__(f);
-	} else {
-	    if (__INST(readAhead) != nil) {
-		RETURN (false);
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if ((fp = __INST(handle)) != nil) {
+	    f = __FILEVal(fp);
+	    if (_buffered = (__INST(buffered) == true)) {
+		__READING__(f);
+	    } else {
+		if (__INST(readAhead) != nil) {
+		    RETURN (false);
+		}
 	    }
-	}
-
-	/*
-	 * read ahead ...
-	 */
-	do {
+
+	    /*
+	     * read ahead ...
+	     */
+	    do {
 #ifdef WIN32
 # if 1
-	    __READBYTE__(ret, f, &c, _buffered);
+		__READBYTE__(ret, f, &c, _buffered);
 
 # else
-	    __BEGIN_INTERRUPTABLE__
-	    __READBYTE__(ret, f, &c, _buffered);
-	    __END_INTERRUPTABLE__
+		__BEGIN_INTERRUPTABLE__
+		__READBYTE__(ret, f, &c, _buffered);
+		__END_INTERRUPTABLE__
 # endif
 #else /* not WIN32 */
-	    __BEGIN_INTERRUPTABLE__
-	    __READBYTE__(ret, f, &c, _buffered);
-	    __END_INTERRUPTABLE__
+		__BEGIN_INTERRUPTABLE__
+		__READBYTE__(ret, f, &c, _buffered);
+		__END_INTERRUPTABLE__
 #endif
-	} while ((ret < 0) && (__threadErrno == EINTR));
+	    } while ((ret < 0) && (__threadErrno == EINTR));
 
 #if defined(WIN32) && defined(EPIPE)
-	if (ret < 0) {
-	    if (__threadErrno == EPIPE) {
-		ret = 0;
-		__threadErrno = 0;
+	    if (ret < 0) {
+		if (__threadErrno == EPIPE) {
+		    ret = 0;
+		    __threadErrno = 0;
+		}
+		if (__threadErrno == 0) {
+		    ret = 0;   /* how comes ? */
+		}
 	    }
-	    if (__threadErrno == 0) {
-		ret = 0;   /* how comes ? */
-	    }
-	}
 #endif
-	if (ret > 0) {
-	    __UNGETC__(c&0xff, f, _buffered);
-	    RETURN (false);
+	    if (ret > 0) {
+		__UNGETC__(c&0xff, f, _buffered);
+		RETURN (false);
+	    }
+
+	    if (ret == 0) {
+		__INST(hitEOF) = true;
+		RETURN (true);
+	    }
+
+	    /* ret < 0 */
+	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
 	}
-
-	if (ret == 0) {
-	    __INST(hitEOF) = true;
-	    RETURN (true);
-	}
-
-	/* ret < 0 */
-	__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
     }
 %}.
     lastErrorNumber notNil ifTrue:[^ self readError].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     mode == #writeonly ifTrue:[^ self errorWriteOnly].
     readAhead notNil ifTrue:[^ false].
 
     "/ migration support
     ^ self
-	atEndFile:filePointer
+	atEndFile:handle
 
     "Modified: / 30.10.1998 / 20:16:06 / cg"
 !
@@ -5445,7 +4924,7 @@
     |fd|
 
     readAhead notNil ifTrue:[^ true].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     mode == #writeonly ifTrue:[^ self errorWriteOnly].
 
     fd := self fileDescriptor.
@@ -5472,7 +4951,7 @@
 
     |fd|
 
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     mode == #readonly ifTrue:[^ self errorReadOnly].
 
     fd := self fileDescriptor.
@@ -5497,24 +4976,26 @@
     OBJ fp;
     unsigned char ch;
 
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(writeonly))
-    ) {
-	f = __FILEVal(fp);
-
-	_buffered = (__INST(buffered) == true);
-	if (_buffered) {
-	    __READING__(f)
-	}
-	__READBYTE__(ret, f, &ch, _buffered);
-
-	if (ret > 0) {
-	    RETURN(nil)
-	}
-	if (ret < 0) {
-	    RETURN(__mkSmallInteger(__threadErrno));
-	} else /* ret == 0 */ {
-	    RETURN(__mkSmallInteger(0)); /* EOF */
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(writeonly))
+	) {
+	    f = __FILEVal(fp);
+
+	    _buffered = (__INST(buffered) == true);
+	    if (_buffered) {
+		__READING__(f)
+	    }
+	    __READBYTE__(ret, f, &ch, _buffered);
+
+	    if (ret > 0) {
+		RETURN(nil)
+	    }
+	    if (ret < 0) {
+		RETURN(__mkSmallInteger(__threadErrno));
+	    } else /* ret == 0 */ {
+		RETURN(__mkSmallInteger(0)); /* EOF */
+	    }
 	}
     }
 %}.
@@ -5525,7 +5006,7 @@
 
     |fd|
 
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     mode == #writeonly ifTrue:[^ self errorWriteOnly].
 
     fd := self fileDescriptor.
@@ -5549,35 +5030,6 @@
     ^ OperatingSystem supportsSelect
 !
 
-readWait
-    "suspend the current process, until the receiver
-     becomes ready for reading. If data is already available,
-     return immediate.
-     The other threads are not affected by the wait."
-
-    self readWaitWithTimeoutMs:nil
-!
-
-readWaitTimeoutMs:timeout
-    "ST-80 compatibility"
-    ^ self readWaitWithTimeoutMs:timeout
-!
-
-readWaitWithTimeout:timeout
-    "suspend the current process, until the receiver
-     becomes ready for reading or a timeout (in seconds) expired.
-     If data is already available, return immediate.
-     Return true if a timeout occured (i.e. false, if data is available).
-     The other threads are not affected by the wait."
-
-    |ms|
-
-    timeout notNil ifTrue:[
-	ms := timeout * 1000
-    ].
-    ^ self readWaitWithTimeoutMs:ms
-!
-
 readWaitWithTimeoutMs:timeout
     "suspend the current process, until the receiver
      becomes ready for reading or a timeout (in milliseconds) expired.
@@ -5589,7 +5041,7 @@
 
     readAhead notNil ifTrue:[^ false].
 
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     mode == #writeonly ifTrue:[^ self errorWriteOnly].
 
     fd := self fileDescriptor.
@@ -5617,15 +5069,6 @@
     ^ hasData not
 !
 
-readWriteWait
-    "suspend the current process, until the receiver
-     becomes ready for writing or reading.
-     Return immediate if the receiver is already ready.
-     The other threads are not affected by the wait."
-
-    self readWriteWaitWithTimeoutMs:nil
-!
-
 readWriteWaitWithTimeoutMs:timeout
     "suspend the current process, until the receiver
      becomes ready for reading or writing or a timeout (in milliseconds) expired.
@@ -5635,7 +5078,7 @@
 
     |fd sema canReadWrite wasBlocked|
 
-    filePointer isNil ifTrue:[
+    handle isNil ifTrue:[
 	^ self errorNotOpen
     ].
 
@@ -5665,35 +5108,6 @@
     ^ canReadWrite not
 !
 
-writeWait
-    "suspend the current process, until the receiver
-     becomes ready for writing.
-     Return immediate if the receiver is already ready.
-     The other threads are not affected by the wait."
-
-    self writeWaitWithTimeoutMs:nil
-!
-
-writeWaitTimeoutMs:timeout
-    "ST-80 compatibility"
-    ^ self writeWaitWithTimeoutMs:timeout
-!
-
-writeWaitWithTimeout:timeout
-    "suspend the current process, until the receiver
-     becomes ready for writing or a timeout (in seconds) expired.
-     Return true if a timeout occured (i.e. false, if data is available).
-     Return immediate if the receiver is already ready.
-     The other threads are not affected by the wait."
-
-    |ms|
-
-    timeout notNil ifTrue:[
-	ms := timeout * 1000
-    ].
-    ^ self writeWaitWithTimeoutMs:ms
-!
-
 writeWaitWithTimeoutMs:timeout
     "suspend the current process, until the receiver
      becomes ready for writing or a timeout (in milliseconds) expired.
@@ -5703,7 +5117,7 @@
 
     |fd outputSema canWrite wasBlocked|
 
-    filePointer isNil ifTrue:[
+    handle isNil ifTrue:[
 	^ self errorNotOpen
     ].
     mode == #readonly ifTrue:[
@@ -5747,51 +5161,53 @@
     OBJ fp;
     char *cp;
 
-    __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(readonly))
-	&& (__INST(binary) != true)
-    ) {
-	f = __FILEVal(fp);
-
-	if (_buffered = (__INST(buffered) == true)) {
-	    __WRITING__(f)
-	}
-	{
-	    OBJ mode = __INST(eolMode);
-
-	    if (mode == @symbol(cr)) {
-		cp = "\r"; len = 1;
-	    } else if (mode == @symbol(crlf)) {
-		cp = "\r\n"; len = 2;
-	    } else {
-		cp = "\n"; len = 1;
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	__INST(lastErrorNumber) = nil;
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(readonly))
+	    && (__INST(binary) != true)
+	) {
+	    f = __FILEVal(fp);
+
+	    if (_buffered = (__INST(buffered) == true)) {
+		__WRITING__(f)
 	    }
+	    {
+		OBJ mode = __INST(eolMode);
+
+		if (mode == @symbol(cr)) {
+		    cp = "\r"; len = 1;
+		} else if (mode == @symbol(crlf)) {
+		    cp = "\r\n"; len = 2;
+		} else {
+		    cp = "\n"; len = 1;
+		}
+	    }
+#ifdef WIN32
+	    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+		cnt = __win32_fwrite(cp, 1, len, f);
+	    } else
+#endif
+	    {
+		__WRITEBYTES__(cnt, f, cp, len, _buffered);
+	    }
+	    if (cnt == len) {
+		if (__isSmallInteger(__INST(position))) {
+		    INT np = __intVal(__INST(position)) + len;
+		    OBJ t;
+
+		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+		} else {
+		    __INST(position) = nil; /* i.e: dont know */
+		}
+		RETURN ( self );
+	    }
+	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
 	}
-#ifdef WIN32
-	if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-	    cnt = __win32_fwrite(cp, 1, len, f);
-	} else
-#endif
-	{
-	    __WRITEBYTES__(cnt, f, cp, len, _buffered);
-	}
-	if (cnt == len) {
-	    if (__isSmallInteger(__INST(position))) {
-		INT np = __intVal(__INST(position)) + len;
-		OBJ t;
-
-		t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-	    } else {
-		__INST(position) = nil; /* i.e: dont know */
-	    }
-	    RETURN ( self );
-	}
-	__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
     }
 %}.
     lastErrorNumber notNil ifTrue:[self writeError. ^ self].
-    filePointer isNil ifTrue:[self errorNotOpen. ^ self].
+    handle isNil ifTrue:[self errorNotOpen. ^ self].
     (mode == #readonly) ifTrue:[self errorReadOnly. ^ self].
     (binary==true) ifTrue:[self errorBinary. ^ self].
 
@@ -5809,29 +5225,31 @@
     OBJ fp;
 
     __INST(lastErrorNumber) = nil;
-    if ((fp = __INST(filePointer)) != nil) {
-	if (__INST(mode) != @symbol(readonly)) {
-	    if (__INST(buffered) == true) {
-		FILEPOINTER f = __FILEVal(fp);
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if ((fp = __INST(handle)) != nil) {
+	    if (__INST(mode) != @symbol(readonly)) {
+		if (__INST(buffered) == true) {
+		    FILEPOINTER f = __FILEVal(fp);
 #ifdef WIN32
-		if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-		    __win32_fflush(f);
-		} else
+		    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+			__win32_fflush(f);
+		    } else
 #endif
-		{
+		    {
 #ifdef WIN32
 # if 1
-		    FFLUSH(f);
+			FFLUSH(f);
 # else
-		    __BEGIN_INTERRUPTABLE__
-		    FFLUSH(f);
-		    __END_INTERRUPTABLE__
+			__BEGIN_INTERRUPTABLE__
+			FFLUSH(f);
+			__END_INTERRUPTABLE__
 # endif
 #else
-		    __BEGIN_INTERRUPTABLE__
-		    FFLUSH(f);
-		    __END_INTERRUPTABLE__
+			__BEGIN_INTERRUPTABLE__
+			FFLUSH(f);
+			__END_INTERRUPTABLE__
 #endif
+		    }
 		}
 	    }
 	}
@@ -5851,56 +5269,58 @@
     OBJ fp;
 
     __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(readonly))
-    ) {
-	if (__INST(binary) != true) {
-	    if (__isCharacter(aCharacter)) {
-		codePoint = __intVal(__characterVal(aCharacter));
-		if (codePoint <= 0xFF) {
-		    c = codePoint;
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(readonly))
+	) {
+	    if (__INST(binary) != true) {
+		if (__isCharacter(aCharacter)) {
+		    codePoint = __intVal(__characterVal(aCharacter));
+		    if (codePoint <= 0xFF) {
+			c = codePoint;
     doWrite:
-		    f = __FILEVal(fp);
-		    if (! f) {
-			fprintf(stderr, "oops - fileHandle is NULL in nextPut:\n");
-			__INST(filePointer) = nil;
-			goto out;
-		    }
-
-		    if (_buffered = (__INST(buffered) == true)) {
-			__WRITING__(f)
-		    }
+			f = __FILEVal(fp);
+			if (! f) {
+			    fprintf(stderr, "oops - fileHandle is NULL in nextPut:\n");
+			    __INST(handle) = nil;
+			    goto out;
+			}
+
+			if (_buffered = (__INST(buffered) == true)) {
+			    __WRITING__(f)
+			}
 #ifdef WIN32
-		    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-			cnt = __win32_fwrite(&c, 1, 1, f);
-		    } else
+			if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+			    cnt = __win32_fwrite(&c, 1, 1, f);
+			} else
 #endif
-		    __WRITEBYTE__(cnt, f, &c, _buffered);
-		    if (cnt == 1) {
-			if (__isSmallInteger(__INST(position))) {
-			    INT np = __intVal(__INST(position)) + 1;
-			    OBJ t;
-
-			    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-			} else {
-			    __INST(position) = nil; /* i.e. do not know */
+			__WRITEBYTE__(cnt, f, &c, _buffered);
+			if (cnt == 1) {
+			    if (__isSmallInteger(__INST(position))) {
+				INT np = __intVal(__INST(position)) + 1;
+				OBJ t;
+
+				t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+			    } else {
+				__INST(position) = nil; /* i.e. do not know */
+			    }
+			    RETURN ( self );
 			}
-			RETURN ( self );
+			__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
 		    }
-		    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
 		}
-	    }
-	} else {
-	    if (__isSmallInteger(aCharacter)) {
-		c = __intVal(aCharacter);
-		goto doWrite;
+	    } else {
+		if (__isSmallInteger(aCharacter)) {
+		    c = __intVal(aCharacter);
+		    goto doWrite;
+		}
 	    }
 	}
     }
 out: ;
 %}.
     lastErrorNumber notNil ifTrue:[self writeError. ^ self].
-    filePointer isNil ifTrue:[self errorNotOpen. ^ self].
+    handle isNil ifTrue:[self errorNotOpen. ^ self].
     (mode == #readonly) ifTrue:[self errorReadOnly. ^ self].
     binary == true ifFalse:[
 	(aCharacter isCharacter not
@@ -5917,7 +5337,7 @@
     "/ migration support
     self
 	nextPutByte:aCharacter asInteger
-	toFile:filePointer
+	toFile:handle
 !
 
 nextPutAll:aCollection
@@ -5934,73 +5354,75 @@
 
     __INST(lastErrorNumber) = nil;
 
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(readonly))
-    ) {
-	f = __FILEVal(fp);
-	if (! f) {
-	    fprintf(stderr, "oops - fileHandle is NULL in nextPutAll:\n");
-	    __INST(filePointer) = nil;
-	    goto out;
-	}
-	if (_buffered = (__INST(buffered) == true)) {
-	    __WRITING__(f)
-	}
-
-	if (__isString(aCollection) || __isSymbol(aCollection)) {
-	    len = __stringSize(aCollection);
-#ifdef WIN32
-	    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-		cnt = __win32_fwrite(__stringVal(aCollection), 1, len, f);
-	    } else
-#endif
-	    {
-		o_offs = (char *)__stringVal(aCollection)-(char *)__InstPtr(aCollection);
-		__WRITEBYTES_OBJ__(cnt, f, aCollection, o_offs, len, _buffered);
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(readonly))
+	) {
+	    f = __FILEVal(fp);
+	    if (! f) {
+		fprintf(stderr, "oops - fileHandle is NULL in nextPutAll:\n");
+		__INST(handle) = nil;
+		goto out;
 	    }
-	} else {
-	    if (__INST(binary) == true) {
-		int offs;
-
-		if (__isByteArray(aCollection)) {
-		    offs = 0;
-		    len = __byteArraySize(aCollection);
-		} else if (__isBytes(aCollection)) {
-		    offs = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aCollection))->c_ninstvars));
-		    len = __byteArraySize(aCollection) - offs;
-		} else
-		    goto out;
+	    if (_buffered = (__INST(buffered) == true)) {
+		__WRITING__(f)
+	    }
+
+	    if (__isString(aCollection) || __isSymbol(aCollection)) {
+		len = __stringSize(aCollection);
 #ifdef WIN32
 		if ((f == __win32_stdout()) || (f == __win32_stderr())) {
 		    cnt = __win32_fwrite(__stringVal(aCollection), 1, len, f);
 		} else
 #endif
 		{
-		    o_offs = (char *)(__ByteArrayInstPtr(aCollection)->ba_element) - (char *)__InstPtr(aCollection);
-		    o_offs += offs;
+		    o_offs = (char *)__stringVal(aCollection)-(char *)__InstPtr(aCollection);
 		    __WRITEBYTES_OBJ__(cnt, f, aCollection, o_offs, len, _buffered);
 		}
-	    } else
-		goto out;
+	    } else {
+		if (__INST(binary) == true) {
+		    int offs;
+
+		    if (__isByteArray(aCollection)) {
+			offs = 0;
+			len = __byteArraySize(aCollection);
+		    } else if (__isBytes(aCollection)) {
+			offs = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aCollection))->c_ninstvars));
+			len = __byteArraySize(aCollection) - offs;
+		    } else
+			goto out;
+#ifdef WIN32
+		    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+			cnt = __win32_fwrite(__stringVal(aCollection), 1, len, f);
+		    } else
+#endif
+		    {
+			o_offs = (char *)(__ByteArrayInstPtr(aCollection)->ba_element) - (char *)__InstPtr(aCollection);
+			o_offs += offs;
+			__WRITEBYTES_OBJ__(cnt, f, aCollection, o_offs, len, _buffered);
+		    }
+		} else
+		    goto out;
+	    }
+
+	    if (cnt == len) {
+		if (__isSmallInteger(__INST(position))) {
+		    INT np = __intVal(__INST(position)) + len;
+		    OBJ t;
+
+		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+		} else {
+		    __INST(position) = nil; /* i.e. do not know */
+		}
+		RETURN (self);
+	    }
+	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
 	}
-
-	if (cnt == len) {
-	    if (__isSmallInteger(__INST(position))) {
-		INT np = __intVal(__INST(position)) + len;
-		OBJ t;
-
-		t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-	    } else {
-		__INST(position) = nil; /* i.e. do not know */
-	    }
-	    RETURN (self);
-	}
-	__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
     }
 out: ;
 %}.
     lastErrorNumber notNil ifTrue:[self writeError. ^ self].
-    filePointer isNil ifTrue:[self errorNotOpen. ^ self].
+    handle isNil ifTrue:[self errorNotOpen. ^ self].
     (mode == #readonly) ifTrue:[self errorReadOnly. ^ self].
 
     ^ super nextPutAll:aCollection
@@ -6018,80 +5440,82 @@
     int o_offs;
 
     __INST(lastErrorNumber) = nil;
-    if (((fp = __INST(filePointer)) != nil)
-	&& (__INST(mode) != @symbol(readonly))
-	&& __bothSmallInteger(start, stop)
-    ) {
-	f = __FILEVal(fp);
-	if (_buffered = (__INST(buffered) == true)) {
-	    __WRITING__(f)
-	}
-	iStart = __intVal(start);
-	iStop = __intVal(stop);
-	if ((iStart < 1) || (iStop < iStart)) {
-	    RETURN(self);
-	}
-	if (__isString(aCollection) || __isSymbol(aCollection)) {
-	    len = __stringSize(aCollection);
-	    if (iStop > len) {
+    if ((__INST(handleType) == nil) || (__INST(handleType) == @symbol(filePointer))) {
+	if (((fp = __INST(handle)) != nil)
+	    && (__INST(mode) != @symbol(readonly))
+	    && __bothSmallInteger(start, stop)
+	) {
+	    f = __FILEVal(fp);
+	    if (_buffered = (__INST(buffered) == true)) {
+		__WRITING__(f)
+	    }
+	    iStart = __intVal(start);
+	    iStop = __intVal(stop);
+	    if ((iStart < 1) || (iStop < iStart)) {
 		RETURN(self);
 	    }
-	    if (iStop > len)
-		iStop = len;
-	    len = iStop - iStart + 1;
-#ifdef WIN32
-	    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-		cnt = __win32_fwrite(__stringVal(aCollection)+iStart-1, 1, len, f);
-	    } else
-#endif
-	    {
-		o_offs = (char *)__stringVal(aCollection)-(char *)__InstPtr(aCollection);
-		__WRITEBYTES_OBJ__(cnt, f, aCollection, o_offs+iStart-1, len, _buffered);
-	    }
-	} else {
-	    if (__INST(binary) == true) {
-		int offs;
-
-		if (__isByteArray(aCollection)) {
-		    offs = 0;
-		    len = __byteArraySize(aCollection);
-		} else if (__isBytes(aCollection)) {
-		    offs = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aCollection))->c_ninstvars));
-		    len = __byteArraySize(aCollection) - offs;
-		} else
-		    goto out;
-
+	    if (__isString(aCollection) || __isSymbol(aCollection)) {
+		len = __stringSize(aCollection);
 		if (iStop > len) {
 		    RETURN(self);
 		}
 		if (iStop > len)
 		    iStop = len;
 		len = iStop - iStart + 1;
-		offs += iStart - 1;
 #ifdef WIN32
 		if ((f == __win32_stdout()) || (f == __win32_stderr())) {
 		    cnt = __win32_fwrite(__stringVal(aCollection)+iStart-1, 1, len, f);
 		} else
 #endif
 		{
-		    o_offs = (char *)(__ByteArrayInstPtr(aCollection)->ba_element)-(char *)__InstPtr(aCollection);
-		    __WRITEBYTES_OBJ__(cnt, f,  aCollection, o_offs+offs, len, _buffered);
+		    o_offs = (char *)__stringVal(aCollection)-(char *)__InstPtr(aCollection);
+		    __WRITEBYTES_OBJ__(cnt, f, aCollection, o_offs+iStart-1, len, _buffered);
 		}
-	    } else
-		goto out;
+	    } else {
+		if (__INST(binary) == true) {
+		    int offs;
+
+		    if (__isByteArray(aCollection)) {
+			offs = 0;
+			len = __byteArraySize(aCollection);
+		    } else if (__isBytes(aCollection)) {
+			offs = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aCollection))->c_ninstvars));
+			len = __byteArraySize(aCollection) - offs;
+		    } else
+			goto out;
+
+		    if (iStop > len) {
+			RETURN(self);
+		    }
+		    if (iStop > len)
+			iStop = len;
+		    len = iStop - iStart + 1;
+		    offs += iStart - 1;
+#ifdef WIN32
+		    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+			cnt = __win32_fwrite(__stringVal(aCollection)+iStart-1, 1, len, f);
+		    } else
+#endif
+		    {
+			o_offs = (char *)(__ByteArrayInstPtr(aCollection)->ba_element)-(char *)__InstPtr(aCollection);
+			__WRITEBYTES_OBJ__(cnt, f,  aCollection, o_offs+offs, len, _buffered);
+		    }
+		} else
+		    goto out;
+	    }
+	    if (cnt == len) {
+		if (__isSmallInteger(__INST(position))) {
+		    INT np = __intVal(__INST(position)) + len;
+		    OBJ t;
+
+		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+		} else {
+		    __INST(position) = nil; /* i.e. do not know */
+		}
+		RETURN (self);
+	    }
+	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
 	}
-	if (cnt == len) {
-	    if (__isSmallInteger(__INST(position))) {
-		INT np = __intVal(__INST(position)) + len;
-		OBJ t;
-
-		t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-	    } else {
-		__INST(position) = nil; /* i.e. do not know */
-	    }
-	    RETURN (self);
-	}
-	__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
     }
 out: ;
 %}.
@@ -6102,7 +5526,12 @@
 !ExternalStream class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ExternalStream.st 10448 2009-06-14 16:10:51Z vranyj1 $'
+    ^ '$Id: ExternalStream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
+!
+
+version_CVS
+    ^ '$Id: ExternalStream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 ExternalStream initialize!
+
--- a/FileDirectory.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/FileDirectory.st	Thu Nov 05 14:41:30 2009 +0000
@@ -18,6 +18,13 @@
 	category:'Obsolete'
 !
 
+ArrayedCollection subclass:#DirectoryEntry
+	instanceVariableNames:'name creationTime modificationTime dirFlag fileSize'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:FileDirectory
+!
+
 !FileDirectory class methodsFor:'documentation'!
 
 copyright
@@ -215,6 +222,22 @@
     ^ self removeFile:fileName
 !
 
+directoryEntryFor:name
+    |info|
+
+    info := self infoOf:name.
+    ^ DirectoryEntry new
+        name:name
+        creationTime:(info creationTime)
+        modificationTime:(info modificationTime)
+        dirFlag:(info isDirectory)
+        fileSize:(info isDirectory)
+
+    "
+     (FileDirectory directoryNamed:'.') entries
+    "
+!
+
 directoryExists:dir
     "Squeak/ST80 compatibility"
 
@@ -231,7 +254,7 @@
 !
 
 entries
-    ^ self contents
+    ^ self contents collect:[:nm | self directoryEntryFor:nm].
 !
 
 fileExists:dir
@@ -727,10 +750,56 @@
     ^ true
 ! !
 
+!FileDirectory::DirectoryEntry methodsFor:'accessing'!
+
+at: index
+    "compatibility interface"
+    "self halt: 'old-style access to DirectoryEntry'"
+    index = 1 ifTrue: [ ^self name ].
+    index = 2 ifTrue: [ ^self creationTime ].
+    index = 3 ifTrue: [ ^self modificationTime ].
+    index = 4 ifTrue:[ ^self isDirectory ].
+    index = 5 ifTrue:[ ^self fileSize ].
+    self error: 'invalid index specified'.
+!
+
+creationTime
+    ^ creationTime
+!
+
+dirFlag
+    ^ dirFlag
+!
+
+fileSize
+    ^ fileSize
+!
+
+modificationTime
+    ^ modificationTime
+!
+
+name
+    ^ name
+!
+
+name:nameArg creationTime:creationTimeArg modificationTime:modificationTimeArg dirFlag:dirFlagArg fileSize:fileSizeArg 
+    name := nameArg.
+    creationTime := creationTimeArg.
+    modificationTime := modificationTimeArg.
+    dirFlag := dirFlagArg.
+    fileSize := fileSizeArg.
+! !
+
 !FileDirectory class methodsFor:'documentation'!
 
 version
-    ^ '$Id: FileDirectory.st 10467 2009-08-19 16:14:36Z vranyj1 $'
+    ^ '$Id: FileDirectory.st 10477 2009-11-05 14:41:30Z vranyj1 $'
+!
+
+version_CVS
+    ^ '$Id: FileDirectory.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 FileDirectory initialize!
+
--- a/FileStream.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/FileStream.st	Thu Nov 05 14:41:30 2009 +0000
@@ -667,9 +667,9 @@
     HFILE f;
     off_t currentPosition;
 
-    if (__INST(filePointer) != nil) {
+    if (__INST(handle) != nil) {
 	do {
-	    f = __FILEVal(__INST(filePointer));
+	    f = __FILEVal(__INST(handle));
 #ifdef WIN32
 	    __threadErrno = 0;
 	    if (__INST(buffered) == true) {
@@ -719,7 +719,7 @@
     }
 %}.
     lastErrorNumber notNil ifTrue:[^ self ioError].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     ^ self primitiveFailed
 !
 
@@ -734,7 +734,7 @@
     OBJ fp;
 
     if ((__INST(canPosition) != false) || (newPos == __mkSmallInteger(0))) {
-	if ((fp = __INST(filePointer)) != nil) {
+	if ((fp = __INST(handle)) != nil) {
 
 #if defined(_LFS_LARGE_FILE) && !defined(WIN32)
 # define FSEEK fseeko
@@ -815,9 +815,9 @@
 	"/ assume I/O error
 	^ self ioError
     ].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
 
-    rslt := self positionFile:filePointer position:newPos.
+    rslt := self positionFile:handle position:newPos.
     rslt >= 0 ifTrue:[
 	position := newPos.
     ] ifFalse:[
@@ -830,17 +830,17 @@
      re-open a previously closed file. This behavior is compatible
      with other Smalltalk dialects"
 
-    filePointer isNil ifTrue:[
-        "reopen the file"
-        mode == #readonly ifTrue: [
-            self openForReading
-        ] ifFalse:[mode == #writeonly ifTrue: [
-            self openForWriting.
-        ] ifFalse:[
-            self openForReadWrite.
-        ]].
+    handle isNil ifTrue:[
+	"reopen the file"
+	mode == #readonly ifTrue: [
+	    self openForReading
+	] ifFalse:[mode == #writeonly ifTrue: [
+	    self openForWriting.
+	] ifFalse:[
+	    self openForReadWrite.
+	]].
     ] ifFalse:[
-        super reset.
+	super reset.
     ].
 !
 
@@ -851,8 +851,8 @@
     HFILE f;
     off_t ret;
 
-    if (__INST(filePointer) != nil) {
-	f = __FILEVal(__INST(filePointer));
+    if (__INST(handle) != nil) {
+	f = __FILEVal(__INST(handle));
 	__INST(position) = nil;    /* i.e. unknown */
 	do {
 #ifdef WIN32
@@ -882,7 +882,7 @@
     }
 %}.
     lastErrorNumber notNil ifTrue:[^ self ioError].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     ^ self primitiveFailed
 !
 
@@ -1018,357 +1018,357 @@
     if (__isNonNilObject(pathName) && (__isStringLike(openmode) || __isArray(openmode)))
 #ifdef __VMS__
       if (__qClass(pathName)==String) {
-        do {
-            /*
-             * allow passing additional RMS arguments.
-             * stupid: DEC does not seem to offer an interface for passing a char **.
-             */
-            __threadErrno = 0;
+	do {
+	    /*
+	     * allow passing additional RMS arguments.
+	     * stupid: DEC does not seem to offer an interface for passing a char **.
+	     */
+	    __threadErrno = 0;
 
-            {
-                if (__isArray(attributeSpec)) {
-                    OBJ *ap = __ArrayInstPtr(attributeSpec)->a_element;
-                    int numAttrib = 0;
-                    int i;
+	    {
+		if (__isArray(attributeSpec)) {
+		    OBJ *ap = __ArrayInstPtr(attributeSpec)->a_element;
+		    int numAttrib = 0;
+		    int i;
 
-                    numAttrib = __arraySize(attributeSpec);
-                    for (i=0; i<numAttrib;i++) {
-                        if (! __isString(ap[i])) {
-                            f = NULL;
-                            __threadErrno = EINVAL; /* invalid argument */
-                            goto getOutOfHere;
-                        }
-                    }
-                    switch (numAttrib) {
-                        case 0:
-                            __BEGIN_INTERRUPTABLE__
-                            f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode));
-                            __END_INTERRUPTABLE__
-                            break;
-                        case 1:
-                            __BEGIN_INTERRUPTABLE__
-                            f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
-                                      __stringVal(ap[0]));
-                            __END_INTERRUPTABLE__
-                            break;
-                        case 2:
-                            __BEGIN_INTERRUPTABLE__
-                            f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
-                                      __stringVal(ap[0]), __stringVal(ap[1]));
-                            __END_INTERRUPTABLE__
-                            break;
-                        case 3:
-                            __BEGIN_INTERRUPTABLE__
-                            f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
-                                      __stringVal(ap[0]), __stringVal(ap[1]), __stringVal(ap[2]));
-                            __END_INTERRUPTABLE__
-                            break;
-                        case 4:
-                            __BEGIN_INTERRUPTABLE__
-                            f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
-                                      __stringVal(ap[0]), __stringVal(ap[1]), __stringVal(ap[2]),
-                                      __stringVal(ap[3]));
-                            __END_INTERRUPTABLE__
-                            break;
-                        case 5:
-                            __BEGIN_INTERRUPTABLE__
-                            f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
-                                      __stringVal(ap[0]), __stringVal(ap[1]), __stringVal(ap[2]),
-                                      __stringVal(ap[3]), __stringVal(ap[4]));
-                            __END_INTERRUPTABLE__
-                            break;
-                        case 6:
-                            __BEGIN_INTERRUPTABLE__
-                            f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
-                                      __stringVal(ap[0]), __stringVal(ap[1]), __stringVal(ap[2]),
-                                      __stringVal(ap[3]), __stringVal(ap[4]), __stringVal(ap[5]));
-                            __END_INTERRUPTABLE__
-                            break;
-                        case 7:
-                            __BEGIN_INTERRUPTABLE__
-                            f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
-                                      __stringVal(ap[0]), __stringVal(ap[1]), __stringVal(ap[2]),
-                                      __stringVal(ap[3]), __stringVal(ap[4]), __stringVal(ap[5]),
-                                      __stringVal(ap[6]));
-                            __END_INTERRUPTABLE__
-                            break;
-                        case 8:
-                            __BEGIN_INTERRUPTABLE__
-                            f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
-                                      __stringVal(ap[0]), __stringVal(ap[1]), __stringVal(ap[2]),
-                                      __stringVal(ap[3]), __stringVal(ap[4]), __stringVal(ap[5]),
-                                      __stringVal(ap[6]), __stringVal(ap[7]));
-                            __END_INTERRUPTABLE__
-                            break;
-                        case 9:
-                            __BEGIN_INTERRUPTABLE__
-                            f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
-                                      __stringVal(ap[0]), __stringVal(ap[1]), __stringVal(ap[2]),
-                                      __stringVal(ap[3]), __stringVal(ap[4]), __stringVal(ap[5]),
-                                      __stringVal(ap[6]), __stringVal(ap[7]), __stringVal(ap[8]));
-                            __END_INTERRUPTABLE__
-                            break;
-                        case 10:
-                            __BEGIN_INTERRUPTABLE__
-                            f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
-                                      __stringVal(ap[0]), __stringVal(ap[1]), __stringVal(ap[2]),
-                                      __stringVal(ap[3]), __stringVal(ap[4]), __stringVal(ap[5]),
-                                      __stringVal(ap[6]), __stringVal(ap[7]), __stringVal(ap[8]),
-                                      __stringVal(ap[9]));
-                            __END_INTERRUPTABLE__
-                            break;
-                        default:
-                            f = NULL;
-                            __threadErrno = E2BIG; /* too many args */
-                            goto getOutOfHere;
-                    }
-                } else if (attributeSpec != nil) {
-                    f = NULL;
-                    __threadErrno = EINVAL; /* invalid argument */
-                    goto getOutOfHere;
-                } else {
-                    /*
-                     * create file as sequential streamLF by default.
-                     */
-                    __BEGIN_INTERRUPTABLE__
-                    f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode), "rfm=stmlf");
-                    __END_INTERRUPTABLE__
-                }
-            }
-        } while ((f == NULL) && (__threadErrno == EINTR));
+		    numAttrib = __arraySize(attributeSpec);
+		    for (i=0; i<numAttrib;i++) {
+			if (! __isString(ap[i])) {
+			    f = NULL;
+			    __threadErrno = EINVAL; /* invalid argument */
+			    goto getOutOfHere;
+			}
+		    }
+		    switch (numAttrib) {
+			case 0:
+			    __BEGIN_INTERRUPTABLE__
+			    f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode));
+			    __END_INTERRUPTABLE__
+			    break;
+			case 1:
+			    __BEGIN_INTERRUPTABLE__
+			    f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
+				      __stringVal(ap[0]));
+			    __END_INTERRUPTABLE__
+			    break;
+			case 2:
+			    __BEGIN_INTERRUPTABLE__
+			    f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
+				      __stringVal(ap[0]), __stringVal(ap[1]));
+			    __END_INTERRUPTABLE__
+			    break;
+			case 3:
+			    __BEGIN_INTERRUPTABLE__
+			    f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
+				      __stringVal(ap[0]), __stringVal(ap[1]), __stringVal(ap[2]));
+			    __END_INTERRUPTABLE__
+			    break;
+			case 4:
+			    __BEGIN_INTERRUPTABLE__
+			    f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
+				      __stringVal(ap[0]), __stringVal(ap[1]), __stringVal(ap[2]),
+				      __stringVal(ap[3]));
+			    __END_INTERRUPTABLE__
+			    break;
+			case 5:
+			    __BEGIN_INTERRUPTABLE__
+			    f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
+				      __stringVal(ap[0]), __stringVal(ap[1]), __stringVal(ap[2]),
+				      __stringVal(ap[3]), __stringVal(ap[4]));
+			    __END_INTERRUPTABLE__
+			    break;
+			case 6:
+			    __BEGIN_INTERRUPTABLE__
+			    f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
+				      __stringVal(ap[0]), __stringVal(ap[1]), __stringVal(ap[2]),
+				      __stringVal(ap[3]), __stringVal(ap[4]), __stringVal(ap[5]));
+			    __END_INTERRUPTABLE__
+			    break;
+			case 7:
+			    __BEGIN_INTERRUPTABLE__
+			    f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
+				      __stringVal(ap[0]), __stringVal(ap[1]), __stringVal(ap[2]),
+				      __stringVal(ap[3]), __stringVal(ap[4]), __stringVal(ap[5]),
+				      __stringVal(ap[6]));
+			    __END_INTERRUPTABLE__
+			    break;
+			case 8:
+			    __BEGIN_INTERRUPTABLE__
+			    f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
+				      __stringVal(ap[0]), __stringVal(ap[1]), __stringVal(ap[2]),
+				      __stringVal(ap[3]), __stringVal(ap[4]), __stringVal(ap[5]),
+				      __stringVal(ap[6]), __stringVal(ap[7]));
+			    __END_INTERRUPTABLE__
+			    break;
+			case 9:
+			    __BEGIN_INTERRUPTABLE__
+			    f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
+				      __stringVal(ap[0]), __stringVal(ap[1]), __stringVal(ap[2]),
+				      __stringVal(ap[3]), __stringVal(ap[4]), __stringVal(ap[5]),
+				      __stringVal(ap[6]), __stringVal(ap[7]), __stringVal(ap[8]));
+			    __END_INTERRUPTABLE__
+			    break;
+			case 10:
+			    __BEGIN_INTERRUPTABLE__
+			    f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode),
+				      __stringVal(ap[0]), __stringVal(ap[1]), __stringVal(ap[2]),
+				      __stringVal(ap[3]), __stringVal(ap[4]), __stringVal(ap[5]),
+				      __stringVal(ap[6]), __stringVal(ap[7]), __stringVal(ap[8]),
+				      __stringVal(ap[9]));
+			    __END_INTERRUPTABLE__
+			    break;
+			default:
+			    f = NULL;
+			    __threadErrno = E2BIG; /* too many args */
+			    goto getOutOfHere;
+		    }
+		} else if (attributeSpec != nil) {
+		    f = NULL;
+		    __threadErrno = EINVAL; /* invalid argument */
+		    goto getOutOfHere;
+		} else {
+		    /*
+		     * create file as sequential streamLF by default.
+		     */
+		    __BEGIN_INTERRUPTABLE__
+		    f = fopen((char *)__stringVal(pathName), (char *)__stringVal(openmode), "rfm=stmlf");
+		    __END_INTERRUPTABLE__
+		}
+	    }
+	} while ((f == NULL) && (__threadErrno == EINTR));
       }
 #else /* not VMS */
 
 # ifdef WIN32
     {
-          DWORD share = 0, access = 0, create = 0, attr = 0;
-          int numAttrib, i;
-          OBJ *ap;
-          char * __openmode;
-          HANDLE handle;
+	  DWORD share = 0, access = 0, create = 0, attr = 0;
+	  int numAttrib, i;
+	  OBJ *ap;
+	  char * __openmode;
+	  HANDLE handle;
 
-          if (__isStringLike(openmode)) {
-              share = FILE_SHARE_READ|FILE_SHARE_WRITE;
-              __openmode = __stringVal(openmode);
-              if (strcmp(__openmode, "rb") == 0) {
-                  access = GENERIC_READ;
-                  create = OPEN_EXISTING;
-              } else if (strcmp(__openmode, "rb+") == 0) {
-                  access = GENERIC_READ | GENERIC_WRITE;
-                  create = OPEN_ALWAYS;
-              } else if (strcmp(__openmode, "wb") == 0) {
-                  access = GENERIC_WRITE;
-                  create = CREATE_ALWAYS;
-              } else if (strcmp(__openmode, "wb+") == 0) {
-                  access = GENERIC_READ | GENERIC_WRITE;
-                  create = CREATE_ALWAYS;
-              } else if (strcmp(__openmode, "ab") == 0) {
-                  access = FILE_APPEND_DATA|FILE_WRITE_ATTRIBUTES|FILE_WRITE_EA|
-                                STANDARD_RIGHTS_WRITE|SYNCHRONIZE;
-                  create = OPEN_ALWAYS;
-              } else if (strcmp(__openmode, "ab+") == 0) {
-                  access = GENERIC_READ |FILE_APPEND_DATA|FILE_WRITE_ATTRIBUTES|FILE_WRITE_EA|
-                                STANDARD_RIGHTS_WRITE|SYNCHRONIZE;
-                  create = OPEN_ALWAYS;
-              } else {
-                  console_fprintf(stderr, "Win32OS [warning]: unsupported open mode\n");
-              }
-          } else if (__isArrayLike(openmode)) {
-              ap = __ArrayInstPtr(attributeSpec)->a_element;
-              numAttrib = __arraySize(attributeSpec);
-              __openmode = "rb+";
+	  if (__isStringLike(openmode)) {
+	      share = FILE_SHARE_READ|FILE_SHARE_WRITE;
+	      __openmode = __stringVal(openmode);
+	      if (strcmp(__openmode, "rb") == 0) {
+		  access = GENERIC_READ;
+		  create = OPEN_EXISTING;
+	      } else if (strcmp(__openmode, "rb+") == 0) {
+		  access = GENERIC_READ | GENERIC_WRITE;
+		  create = OPEN_ALWAYS;
+	      } else if (strcmp(__openmode, "wb") == 0) {
+		  access = GENERIC_WRITE;
+		  create = CREATE_ALWAYS;
+	      } else if (strcmp(__openmode, "wb+") == 0) {
+		  access = GENERIC_READ | GENERIC_WRITE;
+		  create = CREATE_ALWAYS;
+	      } else if (strcmp(__openmode, "ab") == 0) {
+		  access = FILE_APPEND_DATA|FILE_WRITE_ATTRIBUTES|FILE_WRITE_EA|
+				STANDARD_RIGHTS_WRITE|SYNCHRONIZE;
+		  create = OPEN_ALWAYS;
+	      } else if (strcmp(__openmode, "ab+") == 0) {
+		  access = GENERIC_READ |FILE_APPEND_DATA|FILE_WRITE_ATTRIBUTES|FILE_WRITE_EA|
+				STANDARD_RIGHTS_WRITE|SYNCHRONIZE;
+		  create = OPEN_ALWAYS;
+	      } else {
+		  console_fprintf(stderr, "Win32OS [warning]: unsupported open mode\n");
+	      }
+	  } else if (__isArrayLike(openmode)) {
+	      ap = __ArrayInstPtr(attributeSpec)->a_element;
+	      numAttrib = __arraySize(attributeSpec);
+	      __openmode = "rb+";
 
-              for (i=0; i<numAttrib; i++) {
-                  OBJ attrSym = ap[i];
+	      for (i=0; i<numAttrib; i++) {
+		  OBJ attrSym = ap[i];
 
-                  if (attrSym == @symbol(FILE_SHARE_READ)) {
-                      share |= FILE_SHARE_READ;
-                  } else if (attrSym == @symbol(FILE_SHARE_WRITE)) {
-                      share |= FILE_SHARE_WRITE;
+		  if (attrSym == @symbol(FILE_SHARE_READ)) {
+		      share |= FILE_SHARE_READ;
+		  } else if (attrSym == @symbol(FILE_SHARE_WRITE)) {
+		      share |= FILE_SHARE_WRITE;
 
-                  } else if (attrSym == @symbol(GENERIC_READ)) {
-                      access |= GENERIC_READ;
-                  } else if (attrSym == @symbol(GENERIC_WRITE)) {
-                      access |= GENERIC_WRITE;
+		  } else if (attrSym == @symbol(GENERIC_READ)) {
+		      access |= GENERIC_READ;
+		  } else if (attrSym == @symbol(GENERIC_WRITE)) {
+		      access |= GENERIC_WRITE;
 
-                  } else if (attrSym == @symbol(CREATE_NEW)) {
-                      create |= CREATE_NEW;
-                  } else if (attrSym == @symbol(CREATE_ALWAYS)) {
-                      create |= CREATE_ALWAYS;
-                  } else if (attrSym == @symbol(OPEN_EXISTING)) {
-                      create |= OPEN_EXISTING;
-                  } else if (attrSym == @symbol(OPEN_ALWAYS)) {
-                      create |= OPEN_ALWAYS;
-                  } else if (attrSym == @symbol(TRUNCATE_EXISTING)) {
-                      create |= TRUNCATE_EXISTING;
+		  } else if (attrSym == @symbol(CREATE_NEW)) {
+		      create |= CREATE_NEW;
+		  } else if (attrSym == @symbol(CREATE_ALWAYS)) {
+		      create |= CREATE_ALWAYS;
+		  } else if (attrSym == @symbol(OPEN_EXISTING)) {
+		      create |= OPEN_EXISTING;
+		  } else if (attrSym == @symbol(OPEN_ALWAYS)) {
+		      create |= OPEN_ALWAYS;
+		  } else if (attrSym == @symbol(TRUNCATE_EXISTING)) {
+		      create |= TRUNCATE_EXISTING;
 
-                  } else if (attrSym == @symbol(FILE_ATTRIBUTE_HIDDEN)) {
-                      attr |= FILE_ATTRIBUTE_HIDDEN;
-                  } else if (attrSym == @symbol(FILE_ATTRIBUTE_READONLY)) {
-                      attr |= FILE_ATTRIBUTE_READONLY;
-                  } else if (attrSym == @symbol(FILE_FLAG_WRITE_THROUGH)) {
-                      attr |= FILE_FLAG_WRITE_THROUGH;
-                  } else if (attrSym == @symbol(FILE_FLAG_SEQUENTIAL_SCAN)) {
-                      attr |= FILE_FLAG_SEQUENTIAL_SCAN;
-                  } else if (attrSym == @symbol(FILE_FLAG_DELETE_ON_CLOSE)) {
-                      attr |= FILE_FLAG_DELETE_ON_CLOSE;
-                  } else {
-                      console_fprintf(stderr, "Win32OS [warning]: unsupported open mode\n");
-                  }
-              }
-          } else {
-              f = NULL;
+		  } else if (attrSym == @symbol(FILE_ATTRIBUTE_HIDDEN)) {
+		      attr |= FILE_ATTRIBUTE_HIDDEN;
+		  } else if (attrSym == @symbol(FILE_ATTRIBUTE_READONLY)) {
+		      attr |= FILE_ATTRIBUTE_READONLY;
+		  } else if (attrSym == @symbol(FILE_FLAG_WRITE_THROUGH)) {
+		      attr |= FILE_FLAG_WRITE_THROUGH;
+		  } else if (attrSym == @symbol(FILE_FLAG_SEQUENTIAL_SCAN)) {
+		      attr |= FILE_FLAG_SEQUENTIAL_SCAN;
+		  } else if (attrSym == @symbol(FILE_FLAG_DELETE_ON_CLOSE)) {
+		      attr |= FILE_FLAG_DELETE_ON_CLOSE;
+		  } else {
+		      console_fprintf(stderr, "Win32OS [warning]: unsupported open mode\n");
+		  }
+	      }
+	  } else {
+	      f = NULL;
 //              argumentError = @symbol(badAttributeSpec);
-              goto badArgument;
-          }
-          if (create == 0) {
-              f = NULL;
+	      goto badArgument;
+	  }
+	  if (create == 0) {
+	      f = NULL;
 //              argumentError = @symbol(missingCreateMode);
-              goto badArgument;
-          }
-          if (attr == 0) {
-              attr = FILE_ATTRIBUTE_NORMAL;
-          }
+	      goto badArgument;
+	  }
+	  if (attr == 0) {
+	      attr = FILE_ATTRIBUTE_NORMAL;
+	  }
 
-          if (__isString(pathName)) {
-                char _aPathName[MAXPATHLEN];
+	  if (__isString(pathName)) {
+		char _aPathName[MAXPATHLEN];
 
-                strncpy(_aPathName, __stringVal(pathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
-                do {
-                    __threadErrno = 0;
-                    handle = STX_API_CALL7( "CreateFileA", CreateFileA, _aPathName, access, share, 0 /* sa */, create, attr, 0 /* hTempl */);
-                    if (__threadErrno == EINTR) {
-                        handle = INVALID_HANDLE_VALUE;
-                    }
-                } while ((handle == INVALID_HANDLE_VALUE) && (__threadErrno == EINTR));
-          } else if (__isUnicode16String(pathName)) {
-                wchar_t _aPathName[MAXPATHLEN+1];
-                int i, l;
+		strncpy(_aPathName, __stringVal(pathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
+		do {
+		    __threadErrno = 0;
+		    handle = STX_API_CALL7( "CreateFileA", CreateFileA, _aPathName, access, share, 0 /* sa */, create, attr, 0 /* hTempl */);
+		    if (__threadErrno == EINTR) {
+			handle = INVALID_HANDLE_VALUE;
+		    }
+		} while ((handle == INVALID_HANDLE_VALUE) && (__threadErrno == EINTR));
+	  } else if (__isUnicode16String(pathName)) {
+		wchar_t _aPathName[MAXPATHLEN+1];
+		int i, l;
 
-                l = __unicode16StringSize(pathName);
-                if (l > MAXPATHLEN) l = MAXPATHLEN;
-                for (i=0; i<l; i++) {
-                    _aPathName[i] = __unicode16StringVal(pathName)[i];
-                }
-                _aPathName[i] = 0;
+		l = __unicode16StringSize(pathName);
+		if (l > MAXPATHLEN) l = MAXPATHLEN;
+		for (i=0; i<l; i++) {
+		    _aPathName[i] = __unicode16StringVal(pathName)[i];
+		}
+		_aPathName[i] = 0;
 
-                do {
-                    __threadErrno = 0;
-                    handle = STX_API_CALL7( "CreateFileW", CreateFileW, _aPathName, access, share, 0 /* sa */, create, attr, 0 /* hTempl */);
-                    if (__threadErrno == EINTR) {
-                        handle = INVALID_HANDLE_VALUE;
-                    }
-                } while ((handle == INVALID_HANDLE_VALUE) && (__threadErrno == EINTR));
-          }
-          if (handle != INVALID_HANDLE_VALUE) {
-              extern void __stxWrapApiEnterCritical(), __stxWrapApiLeaveCritical();
-              __stxWrapApiEnterCritical();
-              f = fdopen(_open_osfhandle((long)handle, O_BINARY), __openmode);
-              __stxWrapApiLeaveCritical();
-          } else {
-              f = NULL;
-          }
+		do {
+		    __threadErrno = 0;
+		    handle = STX_API_CALL7( "CreateFileW", CreateFileW, _aPathName, access, share, 0 /* sa */, create, attr, 0 /* hTempl */);
+		    if (__threadErrno == EINTR) {
+			handle = INVALID_HANDLE_VALUE;
+		    }
+		} while ((handle == INVALID_HANDLE_VALUE) && (__threadErrno == EINTR));
+	  }
+	  if (handle != INVALID_HANDLE_VALUE) {
+	      extern void __stxWrapApiEnterCritical(), __stxWrapApiLeaveCritical();
+	      __stxWrapApiEnterCritical();
+	      f = fdopen(_open_osfhandle((long)handle, O_BINARY), __openmode);
+	      __stxWrapApiLeaveCritical();
+	  } else {
+	      f = NULL;
+	  }
       }
 # else /* not WIN32 */
 
       if (__qClass(pathName)==String) {
-        do {
-            __BEGIN_INTERRUPTABLE__
+	do {
+	    __BEGIN_INTERRUPTABLE__
 #  ifdef LINUX
-            /*
-             * LINUX may ret a non-NULL f even when interrupted.
-             * Therefore, check errno and fake a null-ret.
-             */
-            __threadErrno = 0;
-            f = fopen((char *) __stringVal(pathName), (char *) __stringVal(openmode));
-            if (__threadErrno == EINTR)
-                f = NULL;
+	    /*
+	     * LINUX may ret a non-NULL f even when interrupted.
+	     * Therefore, check errno and fake a null-ret.
+	     */
+	    __threadErrno = 0;
+	    f = fopen((char *) __stringVal(pathName), (char *) __stringVal(openmode));
+	    if (__threadErrno == EINTR)
+		f = NULL;
 #  else /* not LINUX */
-            f = fopen((char *) __stringVal(pathName), (char *) __stringVal(openmode));
+	    f = fopen((char *) __stringVal(pathName), (char *) __stringVal(openmode));
 #  endif /* not LINUX */
-            __END_INTERRUPTABLE__
-        } while ((f == NULL) && (__threadErrno == EINTR));
+	    __END_INTERRUPTABLE__
+	} while ((f == NULL) && (__threadErrno == EINTR));
       }
 # endif /* not WIN32 */
 #endif /* not VMS */
 
     if (f == NULL) {
-        /*
-         * If no filedescriptors available, try to finalize
-         * possibly collected fd's and try again.
-         */
-        if (pass == 0 && (__threadErrno == ENFILE || __threadErrno == EMFILE)) {
-            pass = 1;
-            __SSEND0(@global(ObjectMemory), @symbol(scavenge), 0);
-            __SSEND0(@global(ObjectMemory), @symbol(finalize), 0);
-            goto retry;
-        }
+	/*
+	 * If no filedescriptors available, try to finalize
+	 * possibly collected fd's and try again.
+	 */
+	if (pass == 0 && (__threadErrno == ENFILE || __threadErrno == EMFILE)) {
+	    pass = 1;
+	    __SSEND0(@global(ObjectMemory), @symbol(scavenge), 0);
+	    __SSEND0(@global(ObjectMemory), @symbol(finalize), 0);
+	    goto retry;
+	}
     badArgument:
     getOutOfHere:
-        __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-        __INST(position) = nil;
+	__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+	__INST(position) = nil;
     } else {
 #ifdef __VMS__
-        /*
-         * check to see if this is positionable ...
-         */
-        __INST(canPosition) = false;
+	/*
+	 * check to see if this is positionable ...
+	 */
+	__INST(canPosition) = false;
 # ifndef _POSIX_C_SOURCE
-        {
-            struct stat statBuffer;
+	{
+	    struct stat statBuffer;
 
-            if (fstat(fileno(f), &statBuffer) >= 0) {
-                switch (statBuffer.st_fab_rfm) {
-                    case FAB$C_UDF: /* undefined (also stream binary)   */
-                    case FAB$C_VAR: /* variable length records          */
-                    case FAB$C_VFC: /* variable fixed control           */
-                    case FAB$C_STM: /* RMS-11 stream (valid only for sequen) */
-                    default:
-                        __INST(canPosition) = false;
-                        break;
+	    if (fstat(fileno(f), &statBuffer) >= 0) {
+		switch (statBuffer.st_fab_rfm) {
+		    case FAB$C_UDF: /* undefined (also stream binary)   */
+		    case FAB$C_VAR: /* variable length records          */
+		    case FAB$C_VFC: /* variable fixed control           */
+		    case FAB$C_STM: /* RMS-11 stream (valid only for sequen) */
+		    default:
+			__INST(canPosition) = false;
+			break;
 
-                    case FAB$C_FIX: /* fixed length records             */
-                    case FAB$C_STMLF: /* LF stream (valid only for sequential) */
-                    case FAB$C_STMCR: /* CR stream (valid only for sequential) */
-                        __INST(canPosition) = true;
-                        break;
-                }
-            }
-        }
+		    case FAB$C_FIX: /* fixed length records             */
+		    case FAB$C_STMLF: /* LF stream (valid only for sequential) */
+		    case FAB$C_STMCR: /* CR stream (valid only for sequential) */
+			__INST(canPosition) = true;
+			break;
+		}
+	    }
+	}
 # endif
 #else /* not VMS */
-        __INST(canPosition) = true;
+	__INST(canPosition) = true;
 #endif /* not VMS */
 
-        if (@global(FileOpenTrace) == true) {
-            console_fprintf(stderr, "fopen %s [FileStream] -> %x\n", __stringVal(pathName), f);
-        }
-        if (f != NULL) {
-            OBJ fp;
+	if (@global(FileOpenTrace) == true) {
+	    console_fprintf(stderr, "fopen %s [FileStream] -> %x\n", __stringVal(pathName), f);
+	}
+	if (f != NULL) {
+	    OBJ fp;
 
-            wasBlocked = __BLOCKINTERRUPTS();
+	    wasBlocked = __BLOCKINTERRUPTS();
 #if 0
-            // The original code was:
-            __INST(filePointer) = fp = __MKOBJ((INT)f); __STORE(self, fp);
-            // but for that, gcc generates wrong code, which loads self (volatile) into
-            // a register (bp), then calls __MKOBJ, then stores indirect bp.
-            // That is wrong if a scavenge occurs in MKOBJ, as bp is now still pointing to the old
-            // object.
+	    // The original code was:
+	    __INST(handle) = fp = __MKOBJ((INT)f); __STORE(self, fp);
+	    // but for that, gcc generates wrong code, which loads self (volatile) into
+	    // a register (bp), then calls __MKOBJ, then stores indirect bp.
+	    // That is wrong if a scavenge occurs in MKOBJ, as bp is now still pointing to the old
+	    // object.
 #else
-            fp = __MKOBJ((INT)f);
-            __INST(filePointer) = fp;
-            __STORE(self, fp);
+	    fp = __MKOBJ((INT)f);
+	    __INST(handle) = fp;
+	    __STORE(self, fp);
 #endif
-        }
+	}
     }
 
 %}.
     position := ZeroPosition.
-    filePointer notNil ifTrue:[
-        Lobby register:self.
-        wasBlocked == false ifTrue:[OperatingSystem unblockInterrupts].
+    handle notNil ifTrue:[
+	Lobby register:self.
+	wasBlocked == false ifTrue:[OperatingSystem unblockInterrupts].
     ].
-    ^ filePointer
+    ^ handle
 !
 
 openForAppending
@@ -1437,10 +1437,10 @@
      This is a private entry, but maybe useful to open/create a file in a special mode,
      which is proprietrary to the operatingSystem."
 
-    filePointer notNil ifTrue:[^ self errorAlreadyOpen].
+    handle notNil ifTrue:[^ self errorAlreadyOpen].
 
-    filePointer := self openFile:pathName withMode:openmode attributes:attributeSpec.
-    filePointer isNil ifTrue:[
+    handle := self openFile:pathName withMode:openmode attributes:attributeSpec.
+    handle isNil ifTrue:[
 	"
 	 the open failed for some reason ...
 	"
@@ -1472,9 +1472,9 @@
     "USERS WILL NEVER INVOKE THIS METHOD
      sent after snapin to reopen streams."
 
-    filePointer notNil ifTrue:[
+    handle notNil ifTrue:[
 	"it was open, when snapped-out"
-	filePointer := nil.
+	handle := nil.
 	Lobby unregister:self.
 	pathName isNil ifTrue:[
 	    ^ self.
@@ -1570,8 +1570,8 @@
 #ifdef transputer
     unsigned int size;
 
-    if (__INST(filePointer) != nil) {
-	f = __FILEVal(__INST(filePointer));
+    if (__INST(handle) != nil) {
+	f = __FILEVal(__INST(handle));
 	if ((size = filesize(fileno(f))) >= 0) {
 	    RETURN ( __MKUINT(size) );
 	}
@@ -1581,8 +1581,8 @@
     int ret;
     int fd;
 
-    if (__INST(filePointer) != nil) {
-	f = __FILEVal(__INST(filePointer));
+    if (__INST(handle) != nil) {
+	f = __FILEVal(__INST(handle));
 	fd = fileno(f);
 	do {
 	    ret = fstat(fd, &buf);
@@ -1611,7 +1611,7 @@
 	^ sz
     "
     lastErrorNumber notNil ifTrue:[^ self ioError].
-    filePointer isNil ifTrue:[^ self errorNotOpen].
+    handle isNil ifTrue:[^ self errorNotOpen].
     ^ self primitiveFailed
 !
 
@@ -1626,7 +1626,7 @@
 
 !FileStream methodsFor:'rel5 protocol'!
 
-positionFile:filePointer position:newPos
+positionFile:handle position:newPos
     "for migration to rel5 only"
 
     self primitiveFailed
@@ -1644,12 +1644,13 @@
 !FileStream class methodsFor:'documentation'!
 
 version
-    ^ '$Id: FileStream.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: FileStream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/FileStream.st,v 1.134 2009/10/11 09:38:29 cg Exp §'
+    ^ '$Id: FileStream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 FileStream initialize!
 
+
--- a/Filename.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Filename.st	Thu Nov 05 14:41:30 2009 +0000
@@ -13,7 +13,8 @@
 
 Object subclass:#Filename
 	instanceVariableNames:'nameString'
-	classVariableNames:'NextTempFilenameIndex TempDirectory ConcreteClass'
+	classVariableNames:'NextTempFilenameIndex TempDirectory DefaultTempDirectory
+		ConcreteClass'
 	poolDictionaries:''
 	category:'System-Support'
 !
@@ -302,6 +303,38 @@
     "
 !
 
+defaultTempDirectory
+    "return the default temp directory as a filename.
+     That is the same as TempDirectory, except that TempDirectory can be changed
+     from the outside (via tempDirectory:).
+     Use this for files which MUST remain the same (stx_sourceCache)"
+
+    DefaultTempDirectory isNil ifTrue:[
+        self tempDirectory.
+        DefaultTempDirectory isNil ifTrue:[
+            DefaultTempDirectory := TempDirectory
+        ].
+    ].
+
+    DefaultTempDirectory exists ifFalse:[
+        DefaultTempDirectory
+            makeDirectory; 
+            addAccessRights:#(readUser readGroup readOthers 
+                              writeUser writeGroup writeOthers
+                              executeUser executeGroup executeOthers
+                              removeOnlyByOwner).
+    ].
+    ^ DefaultTempDirectory
+
+    "
+     Filename tempDirectory           
+     Filename defaultTempDirectory           
+    "
+
+    "Created: / 07-03-1996 / 14:51:18 / cg"
+    "Modified: / 29-08-2006 / 12:57:16 / cg"
+!
+
 desktopDirectory
     "return your desktop directory.
      Under windows, thats the real desktop directory; 
@@ -745,7 +778,7 @@
         tempDir isNil ifTrue:[
             tempDir := self named:(self defaultTempDirectoryName pathName)
         ].
-        TempDirectory := tempDir construct:'stx_tmp'.
+        TempDirectory := DefaultTempDirectory := tempDir construct:'stx_tmp'.
     ].
 
     "Make sure, that the TempDirectory exists - it might have been removed
@@ -3065,10 +3098,14 @@
     "rename the file - the argument must be convertable to a String.
      Raises an exception if not successful."
 
+    |errno|
+
     (OperatingSystem 
         renameFile:(self osNameForFile) 
         to:(newName asFilename osNameForFile)
     ) ifFalse:[
+        errno := OperatingSystem lastErrorNumber.
+
         self exists ifFalse:[
             ^ self fileNotFoundError:self
         ].
@@ -3865,7 +3902,7 @@
     "return true, if the receiver represents a hidden file.
      The definitions of hidden files depends on the OS used;
      on UNIX, a name starting with a period is considered hidden;
-     on MSDOS, the files hidden attribute is used.
+     on MSDOS, the files hidden attribute is also used.
      VMS has no concept of hidden files."
 
     ^ false
@@ -5705,8 +5742,13 @@
 !Filename class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Filename.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Filename.st 10477 2009-11-05 14:41:30Z vranyj1 $'
+!
+
+version_CVS
+    ^ '$Id: Filename.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 Filename initialize!
 
+
--- a/GenericException.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/GenericException.st	Thu Nov 05 14:41:30 2009 +0000
@@ -2100,12 +2100,13 @@
 !GenericException class methodsFor:'documentation'!
 
 version
-    ^ '$Id: GenericException.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: GenericException.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.120 2009/10/06 10:15:04 cg Exp §'
+    ^ '$Id: GenericException.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 GenericException initialize!
 
+
--- a/HashStream.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/HashStream.st	Thu Nov 05 14:41:30 2009 +0000
@@ -322,10 +322,11 @@
 !HashStream class methodsFor:'documentation'!
 
 version
-    ^ '$Id: HashStream.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: HashStream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/HashStream.st,v 1.11 2009/10/14 12:12:40 stefan Exp §'
+    ^ '$Id: HashStream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/Infinity.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Infinity.st	Thu Nov 05 14:41:30 2009 +0000
@@ -425,12 +425,13 @@
 !Infinity class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Infinity.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Infinity.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Infinity.st,v 1.13 2009/10/12 19:34:30 cg Exp §'
+    ^ '$Id: Infinity.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 Infinity initialize!
 
+
--- a/Integer.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Integer.st	Thu Nov 05 14:41:30 2009 +0000
@@ -4443,12 +4443,13 @@
 !Integer class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Integer.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Integer.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Integer.st,v 1.233 2009/10/14 21:08:51 cg Exp §'
+    ^ '$Id: Integer.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 Integer initialize!
 
+
--- a/LargeInteger.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/LargeInteger.st	Thu Nov 05 14:41:30 2009 +0000
@@ -4953,10 +4953,11 @@
 !LargeInteger class methodsFor:'documentation'!
 
 version
-    ^ '$Id: LargeInteger.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: LargeInteger.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.197 2009/10/04 21:07:18 cg Exp §'
+    ^ '$Id: LargeInteger.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/LibraryDefinition.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/LibraryDefinition.st	Thu Nov 05 14:41:30 2009 +0000
@@ -117,6 +117,110 @@
     "Modified: / 19-09-2006 / 22:41:40 / cg"
 ! !
 
+!LibraryDefinition class methodsFor:'file mappings'!
+
+bc_dot_mak_mappings
+    |d resFileName|
+
+    resFileName := (self package copyFrom:(self package lastIndexOfAny:':/')+1),'.res'.
+
+    d := super bc_dot_mak_mappings.
+    d
+	at: 'LIBRARY_NAME' put: ( self libraryName );
+	at: 'COMMONSYMFLAG' put: (self commonSymbolsFlag);
+	at: 'HEADEROUTPUTARG' put: (self headerFileOutputArg);
+	at: 'RESFILENAME' put: resFileName;
+	at: 'DEPENDENCIES' put: (self generateDependencies_win32);
+	yourself.
+    ^ d.
+
+    "Created: / 09-08-2006 / 11:44:36 / fm"
+    "Modified: / 09-08-2006 / 20:00:01 / fm"
+    "Modified: / 14-09-2006 / 18:58:15 / cg"
+!
+
+extensionLine_libInit_dot_cc_mappings
+
+^Dictionary new
+    at: 'LIBRARY_NAME' put: ( self st2c:(self package copy asString replaceAny:':/' with:$_) );
+    yourself
+
+    "Created: / 09-08-2006 / 11:19:59 / fm"
+    "Modified: / 14-09-2006 / 18:56:26 / cg"
+!
+
+libInit_dot_cc_mappings
+
+^Dictionary new
+    at: 'LIBRARY_NAME' put: (self libraryName);
+    at: 'PACKAGE' put: (self package);
+    at: 'CLASSES' put: (self generateClassLines_libInit_dot_cc);
+    at: 'EXTENSION' put: (self generateExtensionLine_libInit_dot_cc);
+
+    yourself
+
+    "Created: / 09-08-2006 / 11:20:24 / fm"
+    "Modified: / 16-08-2006 / 18:19:03 / User"
+    "Modified: / 14-09-2006 / 18:56:42 / cg"
+!
+
+vc_dot_def_mappings
+
+^Dictionary new
+    at: 'LIBRARY_NAME' put: (self libraryName);
+    at: 'DESCRIPTION' put: (self description asString storeString);
+    at: 'VERSION_NUMBER' put: (self versionNumber);
+    yourself
+
+    "Created: / 09-08-2006 / 11:21:21 / fm"
+    "Modified: / 14-09-2006 / 18:58:07 / cg"
+! !
+
+!LibraryDefinition class methodsFor:'file mappings support'!
+
+commonSymbolsFlag
+    "some libraries are compiled with COMMONSYMBOLS -
+     This saves a lot of space in the generated dll/so files;
+     However, it also requires the librun to be rebuilt, whenever one of
+     the commonSymbols-libs changes.
+     Therefore, NEVER do this for end-user or application libraries;
+     ONLY do it for a subset of the predefined, eXept-provided standard stx libraries"
+
+    (
+	#(
+	    'stx:libbasic'        'stx:libview'         'stx:libtool'
+	    'stx:libbasic2'       'stx:libview2'        'stx:libtool2'
+	    'stx:libbasic3'       'stx:libwidg'         'stx:libhtml'
+	    'stx:libcomp'         'stx:libwidg2'        'stx:libui'
+	    'stx:libboss'         'stx:libdb'
+	)
+    includes:self package) ifTrue:[
+	^ '$(COMMONSYMBOLS)'
+    ].
+    ^ ''
+
+    "Created: / 18-08-2006 / 13:01:52 / cg"
+    "Modified: / 23-08-2006 / 09:48:11 / cg"
+!
+
+generateExtensionLine_libInit_dot_cc
+    |mappings|
+
+    ^self hasExtensionMethods
+	ifFalse:['']
+	ifTrue:[
+	    mappings := self extensionLine_libInit_dot_cc_mappings.
+	    self replaceMappings: mappings in: self extensionLine_libInit_dot_cc.]
+
+    "
+     DapasXProject generateExtensionLine_libInit_dot_cc
+     DapasX_Datenbasis generateExtensionLine_libInit_dot_cc
+    "
+
+    "Created: / 09-08-2006 / 11:23:34 / fm"
+    "Modified: / 14-09-2006 / 14:19:59 / cg"
+! !
+
 !LibraryDefinition class methodsFor:'file templates'!
 
 bc_dot_def
@@ -394,110 +498,6 @@
     "Modified: / 08-08-2006 / 19:33:14 / fm"
 ! !
 
-!LibraryDefinition class methodsFor:'mappings'!
-
-bc_dot_mak_mappings
-    |d resFileName|
-
-    resFileName := (self package copyFrom:(self package lastIndexOfAny:':/')+1),'.res'.
-
-    d := super bc_dot_mak_mappings.
-    d
-	at: 'LIBRARY_NAME' put: ( self libraryName );
-	at: 'COMMONSYMFLAG' put: (self commonSymbolsFlag);
-	at: 'HEADEROUTPUTARG' put: (self headerFileOutputArg);
-	at: 'RESFILENAME' put: resFileName;
-	at: 'DEPENDENCIES' put: (self generateDependencies_win32);
-	yourself.
-    ^ d.
-
-    "Created: / 09-08-2006 / 11:44:36 / fm"
-    "Modified: / 09-08-2006 / 20:00:01 / fm"
-    "Modified: / 14-09-2006 / 18:58:15 / cg"
-!
-
-extensionLine_libInit_dot_cc_mappings
-
-^Dictionary new
-    at: 'LIBRARY_NAME' put: ( self st2c:(self package copy asString replaceAny:':/' with:$_) );
-    yourself
-
-    "Created: / 09-08-2006 / 11:19:59 / fm"
-    "Modified: / 14-09-2006 / 18:56:26 / cg"
-!
-
-libInit_dot_cc_mappings
-
-^Dictionary new
-    at: 'LIBRARY_NAME' put: (self libraryName);
-    at: 'PACKAGE' put: (self package);
-    at: 'CLASSES' put: (self generateClassLines_libInit_dot_cc);
-    at: 'EXTENSION' put: (self generateExtensionLine_libInit_dot_cc);
-
-    yourself
-
-    "Created: / 09-08-2006 / 11:20:24 / fm"
-    "Modified: / 16-08-2006 / 18:19:03 / User"
-    "Modified: / 14-09-2006 / 18:56:42 / cg"
-!
-
-vc_dot_def_mappings
-
-^Dictionary new
-    at: 'LIBRARY_NAME' put: (self libraryName);
-    at: 'DESCRIPTION' put: (self description asString storeString);
-    at: 'VERSION_NUMBER' put: (self versionNumber);
-    yourself
-
-    "Created: / 09-08-2006 / 11:21:21 / fm"
-    "Modified: / 14-09-2006 / 18:58:07 / cg"
-! !
-
-!LibraryDefinition class methodsFor:'mappings support'!
-
-commonSymbolsFlag
-    "some libraries are compiled with COMMONSYMBOLS -
-     This saves a lot of space in the generated dll/so files;
-     However, it also requires the librun to be rebuilt, whenever one of
-     the commonSymbols-libs changes.
-     Therefore, NEVER do this for end-user or application libraries;
-     ONLY do it for a subset of the predefined, eXept-provided standard stx libraries"
-
-    (
-	#(
-	    'stx:libbasic'        'stx:libview'         'stx:libtool'
-	    'stx:libbasic2'       'stx:libview2'        'stx:libtool2'
-	    'stx:libbasic3'       'stx:libwidg'         'stx:libhtml'
-	    'stx:libcomp'         'stx:libwidg2'        'stx:libui'
-	    'stx:libboss'         'stx:libdb'
-	)
-    includes:self package) ifTrue:[
-	^ '$(COMMONSYMBOLS)'
-    ].
-    ^ ''
-
-    "Created: / 18-08-2006 / 13:01:52 / cg"
-    "Modified: / 23-08-2006 / 09:48:11 / cg"
-!
-
-generateExtensionLine_libInit_dot_cc
-    |mappings|
-
-    ^self hasExtensionMethods
-	ifFalse:['']
-	ifTrue:[
-	    mappings := self extensionLine_libInit_dot_cc_mappings.
-	    self replaceMappings: mappings in: self extensionLine_libInit_dot_cc.]
-
-    "
-     DapasXProject generateExtensionLine_libInit_dot_cc
-     DapasX_Datenbasis generateExtensionLine_libInit_dot_cc
-    "
-
-    "Created: / 09-08-2006 / 11:23:34 / fm"
-    "Modified: / 14-09-2006 / 14:19:59 / cg"
-! !
-
 !LibraryDefinition class methodsFor:'misc ui support'!
 
 iconInBrowserSymbol
@@ -570,15 +570,19 @@
 
 canHaveExtensions
     "return true, if this class allows extensions from other packages.
-     Private classes, namespaces and projectDefinitions dont allow this"
+     Private classes, namespaces and projectDefinitions don't allow this"
 
-    ^ self == ApplicationDefinition
+    ^ self == LibraryDefinition
 
     "
      Smalltalk allClasses select:[:each | each canHaveExtensions not]
     "
 
     "Created: / 30-08-2006 / 15:29:53 / cg"
+!
+
+projectType
+    ^ LibraryType
 ! !
 
 !LibraryDefinition class methodsFor:'sanity checks'!
@@ -613,6 +617,10 @@
 
 !LibraryDefinition class methodsFor:'testing'!
 
+isAbstract
+    ^ self == LibraryDefinition
+!
+
 isLibraryDefinition
     ^ self ~~ LibraryDefinition
 
@@ -640,10 +648,11 @@
 !LibraryDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Id: LibraryDefinition.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: LibraryDefinition.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/LibraryDefinition.st,v 1.93 2009/10/12 17:26:27 cg Exp §'
+    ^ '$Id: LibraryDefinition.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/LimitedPrecisionReal.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/LimitedPrecisionReal.st	Thu Nov 05 14:41:30 2009 +0000
@@ -1174,12 +1174,13 @@
 !LimitedPrecisionReal class methodsFor:'documentation'!
 
 version
-    ^ '$Id: LimitedPrecisionReal.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: LimitedPrecisionReal.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/LimitedPrecisionReal.st,v 1.70 2009/10/04 20:08:00 cg Exp §'
+    ^ '$Id: LimitedPrecisionReal.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 LimitedPrecisionReal initialize!
 
+
--- a/MD5Stream.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/MD5Stream.st	Thu Nov 05 14:41:30 2009 +0000
@@ -446,12 +446,13 @@
 !MD5Stream class methodsFor:'documentation'!
 
 version
-    ^ '$Id: MD5Stream.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: MD5Stream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/MD5Stream.st,v 1.10 2009/10/14 05:17:40 cg Exp §'
+    ^ '$Id: MD5Stream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 MD5Stream initialize!
 
+
--- a/Make.proto	Mon Oct 26 21:51:17 2009 +0000
+++ b/Make.proto	Thu Nov 05 14:41:30 2009 +0000
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/libbasic/Make.proto,v 1.220 2009/10/12 19:32:42 cg Exp $
+# $Header: /cvs/stx/stx/libbasic/Make.proto,v 1.222 2009/10/30 14:39:39 cg Exp $
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_libbasic.
@@ -99,7 +99,6 @@
 $(OUTDIR)Autoload.$(O) Autoload.$(H): Autoload.st $(STCHDR)
 $(OUTDIR)Object.$(O) Object.$(H): Object.st $(STCHDR)
 $(OUTDIR)ProtoObject.$(O) ProtoObject.$(H): ProtoObject.st $(STCHDR)
-$(OUTDIR)AbstractDesktop.$(O) AbstractDesktop.$(H): AbstractDesktop.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)AbstractOperatingSystem.$(O) AbstractOperatingSystem.$(H): AbstractOperatingSystem.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)AbstractSourceFileReader.$(O) AbstractSourceFileReader.$(H): AbstractSourceFileReader.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Behavior.$(O) Behavior.$(H): Behavior.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -107,8 +106,6 @@
 $(OUTDIR)CharacterEncoder.$(O) CharacterEncoder.$(H): CharacterEncoder.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)ClassBuilder.$(O) ClassBuilder.$(H): ClassBuilder.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)ClassCategoryReader.$(O) ClassCategoryReader.$(H): ClassCategoryReader.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)CmdLineOption.$(O) CmdLineOption.$(H): CmdLineOption.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)CmdLineParser.$(O) CmdLineParser.$(H): CmdLineParser.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Collection.$(O) Collection.$(H): Collection.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Context.$(O) Context.$(H): Context.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Continuation.$(O) Continuation.$(H): Continuation.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -181,15 +178,10 @@
 $(OUTDIR)SequenceableCollection.$(O) SequenceableCollection.$(H): SequenceableCollection.st $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Set.$(O) Set.$(H): Set.st $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmalltalkChunkFileSourceReader.$(O) SmalltalkChunkFileSourceReader.$(H): SmalltalkChunkFileSourceReader.st $(INCLUDE_TOP)/stx/libbasic/AbstractSourceFileReader.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)SmalltalkDesktop.$(O) SmalltalkDesktop.$(H): SmalltalkDesktop.st $(INCLUDE_TOP)/stx/libbasic/AbstractDesktop.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmalltalkLanguage.$(O) SmalltalkLanguage.$(H): SmalltalkLanguage.st $(INCLUDE_TOP)/stx/libbasic/ProgrammingLanguage.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)True.$(O) True.$(H): True.st $(INCLUDE_TOP)/stx/libbasic/Boolean.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)UnixDesktop.$(O) UnixDesktop.$(H): UnixDesktop.st $(INCLUDE_TOP)/stx/libbasic/AbstractDesktop.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)UnixFilename.$(O) UnixFilename.$(H): UnixFilename.st $(INCLUDE_TOP)/stx/libbasic/Filename.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)UserNotification.$(O) UserNotification.$(H): UserNotification.st $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)WeakInterestConverter.$(O) WeakInterestConverter.$(H): WeakInterestConverter.st $(INCLUDE_TOP)/stx/libbasic/InterestConverter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)WindowsDesktop.$(O) WindowsDesktop.$(H): WindowsDesktop.st $(INCLUDE_TOP)/stx/libbasic/AbstractDesktop.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)ActivityNotification.$(O) ActivityNotification.$(H): ActivityNotification.st $(INCLUDE_TOP)/stx/libbasic/UserNotification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)ArrayedCollection.$(O) ArrayedCollection.$(H): ArrayedCollection.st $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Association.$(O) Association.$(H): Association.st $(INCLUDE_TOP)/stx/libbasic/LookupKey.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Block.$(O) Block.$(H): Block.st $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -228,26 +220,22 @@
 $(OUTDIR)SHA1Stream.$(O) SHA1Stream.$(H): SHA1Stream.st $(INCLUDE_TOP)/stx/libbasic/HashStream.$(H) $(INCLUDE_TOP)/stx/libbasic/Stream.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Time.$(O) Time.$(H): Time.st $(INCLUDE_TOP)/stx/libbasic/AbstractTime.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Timestamp.$(O) Timestamp.$(H): Timestamp.st $(INCLUDE_TOP)/stx/libbasic/AbstractTime.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)UserConfirmation.$(O) UserConfirmation.$(H): UserConfirmation.st $(INCLUDE_TOP)/stx/libbasic/UserNotification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)UserInformation.$(O) UserInformation.$(H): UserInformation.st $(INCLUDE_TOP)/stx/libbasic/UserNotification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)UserInterrupt.$(O) UserInterrupt.$(H): UserInterrupt.st $(INCLUDE_TOP)/stx/libbasic/ControlInterrupt.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)Warning.$(O) Warning.$(H): Warning.st $(INCLUDE_TOP)/stx/libbasic/UserNotification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)XDGDesktop.$(O) XDGDesktop.$(H): XDGDesktop.st $(INCLUDE_TOP)/stx/libbasic/UnixDesktop.$(H) $(INCLUDE_TOP)/stx/libbasic/AbstractDesktop.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)UserNotification.$(O) UserNotification.$(H): UserNotification.st $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)YesToAllConfirmation.$(O) YesToAllConfirmation.$(H): YesToAllConfirmation.st $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)stx_libbasic.$(O) stx_libbasic.$(H): stx_libbasic.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)AbortAllOperationRequest.$(O) AbortAllOperationRequest.$(H): AbortAllOperationRequest.st $(INCLUDE_TOP)/stx/libbasic/ControlRequest.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)AbstractSourceFileWriter.$(O) AbstractSourceFileWriter.$(H): AbstractSourceFileWriter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/Query.$(H) $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(STCHDR)
+$(OUTDIR)ActivityNotification.$(O) ActivityNotification.$(H): ActivityNotification.st $(INCLUDE_TOP)/stx/libbasic/UserNotification.$(H) $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Array.$(O) Array.$(H): Array.st $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)BreakPointInterrupt.$(O) BreakPointInterrupt.$(H): BreakPointInterrupt.st $(INCLUDE_TOP)/stx/libbasic/HaltInterrupt.$(H) $(INCLUDE_TOP)/stx/libbasic/ControlInterrupt.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)CheapBlock.$(O) CheapBlock.$(H): CheapBlock.st $(INCLUDE_TOP)/stx/libbasic/Block.$(H) $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Class.$(O) Class.$(H): Class.st $(INCLUDE_TOP)/stx/libbasic/ClassDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/Association.$(H) $(INCLUDE_TOP)/stx/libbasic/LookupKey.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(STCHDR)
-$(OUTDIR)CmdLineOptionError.$(O) CmdLineOptionError.$(H): CmdLineOptionError.st $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)ClassBuildError.$(O) ClassBuildError.$(H): ClassBuildError.st $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)DoubleArray.$(O) DoubleArray.$(H): DoubleArray.st $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)ElementBoundsError.$(O) ElementBoundsError.$(H): ElementBoundsError.st $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)FloatArray.$(O) FloatArray.$(H): FloatArray.st $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Fraction.$(O) Fraction.$(H): Fraction.st $(INCLUDE_TOP)/stx/libbasic/Number.$(H) $(INCLUDE_TOP)/stx/libbasic/ArithmeticValue.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)GNOMEDesktop.$(O) GNOMEDesktop.$(H): GNOMEDesktop.st $(INCLUDE_TOP)/stx/libbasic/XDGDesktop.$(H) $(INCLUDE_TOP)/stx/libbasic/UnixDesktop.$(H) $(INCLUDE_TOP)/stx/libbasic/AbstractDesktop.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)IdentityDictionary.$(O) IdentityDictionary.$(H): IdentityDictionary.st $(INCLUDE_TOP)/stx/libbasic/Dictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Set.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)InlineObjectClassDescription.$(O) InlineObjectClassDescription.$(H): InlineObjectClassDescription.st $(INCLUDE_TOP)/stx/libbasic/ClassDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Integer.$(O) Integer.$(H): Integer.st $(INCLUDE_TOP)/stx/libbasic/Number.$(H) $(INCLUDE_TOP)/stx/libbasic/ArithmeticValue.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -256,7 +244,6 @@
 $(OUTDIR)MeasurementValue.$(O) MeasurementValue.$(H): MeasurementValue.st $(INCLUDE_TOP)/stx/libbasic/Number.$(H) $(INCLUDE_TOP)/stx/libbasic/ArithmeticValue.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Metaclass.$(O) Metaclass.$(H): Metaclass.st $(INCLUDE_TOP)/stx/libbasic/ClassDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)OsError.$(O) OsError.$(H): OsError.st $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)ProceedError.$(O) ProceedError.$(H): ProceedError.st $(INCLUDE_TOP)/stx/libbasic/Warning.$(H) $(INCLUDE_TOP)/stx/libbasic/UserNotification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)ProceedableError.$(O) ProceedableError.$(H): ProceedableError.st $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)QueryWithoutDefault.$(O) QueryWithoutDefault.$(H): QueryWithoutDefault.st $(INCLUDE_TOP)/stx/libbasic/Query.$(H) $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)ReadStream.$(O) ReadStream.$(H): ReadStream.st $(INCLUDE_TOP)/stx/libbasic/PositionableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/PeekableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/Stream.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -270,8 +257,11 @@
 $(OUTDIR)StringCollection.$(O) StringCollection.$(H): StringCollection.st $(INCLUDE_TOP)/stx/libbasic/OrderedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)TerminateProcessRequest.$(O) TerminateProcessRequest.$(H): TerminateProcessRequest.st $(INCLUDE_TOP)/stx/libbasic/ControlRequest.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)UninterpretedBytes.$(O) UninterpretedBytes.$(H): UninterpretedBytes.st $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)UserConfirmation.$(O) UserConfirmation.$(H): UserConfirmation.st $(INCLUDE_TOP)/stx/libbasic/UserNotification.$(H) $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)UserInformation.$(O) UserInformation.$(H): UserInformation.st $(INCLUDE_TOP)/stx/libbasic/UserNotification.$(H) $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)VMInternalError.$(O) VMInternalError.$(H): VMInternalError.st $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)VarArgBlock.$(O) VarArgBlock.$(H): VarArgBlock.st $(INCLUDE_TOP)/stx/libbasic/Block.$(H) $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Warning.$(O) Warning.$(H): Warning.st $(INCLUDE_TOP)/stx/libbasic/UserNotification.$(H) $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)WeakArray.$(O) WeakArray.$(H): WeakArray.st $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)WeakIdentitySet.$(O) WeakIdentitySet.$(H): WeakIdentitySet.st $(INCLUDE_TOP)/stx/libbasic/IdentitySet.$(H) $(INCLUDE_TOP)/stx/libbasic/Set.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)WeakValueDictionary.$(O) WeakValueDictionary.$(H): WeakValueDictionary.st $(INCLUDE_TOP)/stx/libbasic/Dictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Set.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -305,6 +295,7 @@
 $(OUTDIR)OsNotification.$(O) OsNotification.$(H): OsNotification.st $(INCLUDE_TOP)/stx/libbasic/OsError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)OsTransferFaultError.$(O) OsTransferFaultError.$(H): OsTransferFaultError.st $(INCLUDE_TOP)/stx/libbasic/OsError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PrivateMetaclass.$(O) PrivateMetaclass.$(H): PrivateMetaclass.st $(INCLUDE_TOP)/stx/libbasic/Metaclass.$(H) $(INCLUDE_TOP)/stx/libbasic/ClassDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)ProceedError.$(O) ProceedError.$(H): ProceedError.st $(INCLUDE_TOP)/stx/libbasic/Warning.$(H) $(INCLUDE_TOP)/stx/libbasic/UserNotification.$(H) $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)ReadWriteStream.$(O) ReadWriteStream.$(H): ReadWriteStream.st $(INCLUDE_TOP)/stx/libbasic/WriteStream.$(H) $(INCLUDE_TOP)/stx/libbasic/PositionableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/PeekableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/Stream.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)ShortFloat.$(O) ShortFloat.$(H): ShortFloat.st $(INCLUDE_TOP)/stx/libbasic/LimitedPrecisionReal.$(H) $(INCLUDE_TOP)/stx/libbasic/Number.$(H) $(INCLUDE_TOP)/stx/libbasic/ArithmeticValue.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SignalError.$(O) SignalError.$(H): SignalError.st $(INCLUDE_TOP)/stx/libbasic/ProceedableError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec	Mon Oct 26 21:51:17 2009 +0000
+++ b/Make.spec	Thu Nov 05 14:41:30 2009 +0000
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/libbasic/Make.spec,v 1.97 2009/10/12 19:32:47 cg Exp $
+# $Header: /cvs/stx/stx/libbasic/Make.spec,v 1.99 2009/10/30 14:39:44 cg Exp $
 #
 # DO NOT EDIT 
 # automagically generated from the projectDefinition: stx_libbasic.
@@ -50,12 +50,14 @@
 STCWARNINGS=-warnNonStandard
 
 WIN32_OBJS= \
+    $(OUTDIR)Win32Process.$(O) \
     $(OUTDIR)PCFilename.$(O) \
     $(OUTDIR)CharacterEncoderImplementations__MS_Baltic.$(O) \
     $(OUTDIR)CharacterEncoderImplementations__MS_Cyrillic.$(O) \
     $(OUTDIR)CharacterEncoderImplementations__MS_Greek.$(O) \
     $(OUTDIR)Win32Handle.$(O) \
     $(OUTDIR)Win32FILEHandle.$(O) \
+    $(OUTDIR)Win32Constants.$(O) \
     $(OUTDIR)Win32OperatingSystem.$(O) \
 
 
@@ -346,3 +348,4 @@
 
 
 
+
--- a/Metaclass.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Metaclass.st	Thu Nov 05 14:41:30 2009 +0000
@@ -888,12 +888,13 @@
 !Metaclass class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Metaclass.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Metaclass.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Metaclass.st,v 1.207 2009/10/13 11:11:15 stefan Exp §'
+    ^ '$Id: Metaclass.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 Metaclass initialize!
 
+
--- a/Method.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Method.st	Thu Nov 05 14:41:30 2009 +0000
@@ -428,9 +428,9 @@
      
     mclass == aClass ifTrue:[ ^ self ].
 
-    (mclass notNil and:[aClass notNil]) ifTrue:[
-        "/ 'Method [warning]: mclass already set' errorPrintCR.
-    ].
+"/     (mclass notNil and:[aClass notNil]) ifTrue:[
+"/         'Method [warning]: mclass already set' errorPrintCR.
+"/     ].
     mclass := aClass.
 
     "Modified: / 28-11-2006 / 12:12:27 / cg"
@@ -2242,7 +2242,9 @@
 methodDefinitionTemplate
     "return the string that defines the method and the arguments"
 
-    ^ Method methodDefinitionTemplateForSelector:self selector andArgumentNames:self methodArgNames
+    ^ Method 
+        methodDefinitionTemplateForSelector:self selector 
+        andArgumentNames:self methodArgNames
 
     "
       (self compiledMethodAt:#printOn:) methodDefinitionTemplate
@@ -2536,6 +2538,19 @@
     ^ false
 !
 
+sends:selectorSymbol1 or:selectorSymbol2
+    "return true, if this method contains a message-send
+     to either selectorSymbol1 or selectorSymbol2."
+
+    |msgs|
+
+    ((self referencesLiteral:selectorSymbol1) or:[self referencesLiteral:selectorSymbol2]) ifTrue:[
+        msgs := self messagesSent.
+        ^ (msgs includesIdentical:selectorSymbol1) or:[msgs includesIdentical:selectorSymbol2]
+    ].
+    ^ false
+!
+
 shouldBeSkippedInDebuggersWalkBack
     "return true, if this method thinks, it should be skipped in a walkback.
      This is done by looking for a #skipInDebuggersWalkBack flag in the methods resources."
@@ -2919,12 +2934,13 @@
 !Method class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Method.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Method.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Method.st,v 1.333 2009/10/14 18:15:20 cg Exp §'
+    ^ '$Id: Method.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 Method initialize!
 
+
--- a/NonPositionableExternalStream.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/NonPositionableExternalStream.st	Thu Nov 05 14:41:30 2009 +0000
@@ -154,18 +154,18 @@
 
     pipe := OperatingSystem makePipe.
     pipe isNil ifTrue:[
-        "/ ok, someone has forgotten to close a stream; enforce finalization and try again
-        'MakePipe: enforce finalization to close any open streams' infoPrintCR.
-        ObjectMemory garbageCollect.
-        pipe := OperatingSystem makePipe.
+	"/ ok, someone has forgotten to close a stream; enforce finalization and try again
+	'MakePipe: enforce finalization to close any open streams' infoPrintCR.
+	ObjectMemory garbageCollect.
+	pipe := OperatingSystem makePipe.
     ].
-    
+
     pipe notNil ifTrue:[
-        rs := self forReadingFromFileDescriptor:(pipe at:1).
-        rs buffered:false.
-        ws := self forWritingToFileDescriptor:(pipe at:2).
-        ws buffered:false.
-        ^ Array with:rs with:ws
+	rs := self forReadingFromFileDescriptor:(pipe at:1).
+	rs buffered:false.
+	ws := self forWritingToFileDescriptor:(pipe at:2).
+	ws buffered:false.
+	^ Array with:rs with:ws
     ].
     ^ nil
 
@@ -178,18 +178,18 @@
 
      'read ...'.
      [
-         1 to:10 do:[:i |
-             Transcript showCR:rs nextLine
-         ].
-         rs close.
+	 1 to:10 do:[:i |
+	     Transcript showCR:rs nextLine
+	 ].
+	 rs close.
      ] forkAt:7.
 
      'write ...'.
      [
-         1 to:10 do:[:i |
-             ws nextPutAll:'hello world '; nextPutAll:i printString; cr
-         ].
-         ws close.
+	 1 to:10 do:[:i |
+	     ws nextPutAll:'hello world '; nextPutAll:i printString; cr
+	 ].
+	 ws close.
      ] fork.
     "
 
@@ -421,7 +421,7 @@
 
     mode := #readwrite.
     buffered := false.
-    filePointer := self handleForStderr.
+    handle := self handleForStderr.
     OperatingSystem isMSWINDOWSlike ifTrue:[
 	eolMode := #crlf
     ]
@@ -435,7 +435,7 @@
     mode := #readonly.
     "/ buffered := true.
     buffered := false.
-    filePointer := self handleForStdin.
+    handle := self handleForStdin.
 !
 
 initializeForStdout
@@ -445,7 +445,7 @@
 
     mode := #readwrite.
     buffered := false.
-    filePointer := self handleForStdout.
+    handle := self handleForStdout.
     OperatingSystem isMSWINDOWSlike ifTrue:[
 	eolMode := #crlf
     ]
@@ -503,7 +503,7 @@
     ^ false
 !
 
-size    
+size
     "we do not know our size"
 
     ^ self positionError
@@ -559,6 +559,7 @@
 !NonPositionableExternalStream class methodsFor:'documentation'!
 
 version
-    ^ '$Id: NonPositionableExternalStream.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: NonPositionableExternalStream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/Notification.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Notification.st	Thu Nov 05 14:41:30 2009 +0000
@@ -338,12 +338,13 @@
 !Notification class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Notification.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Notification.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Notification.st,v 1.25 2009/10/14 17:34:24 cg Exp §'
+    ^ '$Id: Notification.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 Notification initialize!
 
+
--- a/Number.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Number.st	Thu Nov 05 14:41:30 2009 +0000
@@ -2256,10 +2256,11 @@
 !Number class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Number.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Number.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Number.st,v 1.127 2009/10/03 11:54:45 cg Exp §'
+    ^ '$Id: Number.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/OSErrorHolder.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/OSErrorHolder.st	Thu Nov 05 14:41:30 2009 +0000
@@ -406,12 +406,13 @@
 !OSErrorHolder class methodsFor:'documentation'!
 
 version
-    ^ '$Id: OSErrorHolder.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: OSErrorHolder.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/OSErrorHolder.st,v 1.17 2009/10/06 08:31:33 cg Exp §'
+    ^ '$Id: OSErrorHolder.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 OSErrorHolder initialize!
 
+
--- a/Object.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Object.st	Thu Nov 05 14:41:30 2009 +0000
@@ -678,7 +678,6 @@
     "
 ! !
 
-
 !Object methodsFor:'accessing'!
 
 at:index
@@ -2789,17 +2788,18 @@
     <resource: #skipInDebuggersWalkBack>
 
     (self isBreakPointEnabled:someKey) ifTrue:[
-	aBlock value
+        aBlock value
     ].
 
     "
      Smalltalk disableBreakPoint:#cg.
-     nil debuggingCodeFor:#cg is:[ self halt ]
+     nil debuggingCodeFor:#cg is:[ Transcript showCR:'here is some debug message for cg' ].
+     nil debuggingCodeFor:#stefan is:[ Transcript showCR:'here is some debug message for sv' ].
      Smalltalk enableBreakPoint:#cg.
-     nil debuggingCodeFor:#cg is:[ self halt ]
+     nil debuggingCodeFor:#cg is:[ Transcript showCR:'here is some debug message for cg' ].
+     nil debuggingCodeFor:#stefan is:[ Transcript showCR:'here is some debug message for sv' ].
      Smalltalk disableBreakPoint:#cg.
 
-     nil debuggingCodeFor:#stefan is:[ self halt ]
     "
 !
 
@@ -3075,20 +3075,39 @@
     "Modified: / 10-08-2006 / 13:13:11 / cg"
 !
 
+todo
+    "used to mark code pieces that have to be implemented"
+
+    <resource: #skipInDebuggersWalkBack>
+
+    self halt:'more work needed here'.
+"/    aBlock value.
+
+    "
+     example:
+
+        ...
+        self todo.
+        ...
+    "
+!
+
 todo:aBlock
     "used to mark code pieces that have to be implemented"
 
+    <resource: #skipInDebuggersWalkBack>
+
 "/    self halt.
 "/    aBlock value.
 
     "
      example:
 
-	...
-	self todo:[
-	    code which needs more work ...
-	].
-	...
+        ...
+        self todo:[
+            code which needs more work ...
+        ].
+        ...
     "
 
     "Created: / 25-05-2007 / 21:34:39 / cg"
@@ -4061,7 +4080,7 @@
 
     <resource: #skipInDebuggersWalkBack>
 
-    ^ self subclassResponsibility:'method must be reimplemented in ST/V subclass'
+    ^ SubclassResponsibilityError raiseRequestErrorString:'method must be reimplemented in ST/V subclass'
 !
 
 indexNotInteger
@@ -4109,18 +4128,19 @@
 integerCheckError
     "{ Pragma: +optSpace }"
 
-    "generated when a variable declared with an integer type gets a bad
-     value assigned"
+    "generated when a variable declared with an integer type gets a bad value assigned"
 
     <resource: #skipInDebuggersWalkBack>
 
     ^ self error:'bad assign of ' , self printString ,
-		  ' (' , self class name , ') to integer-typed variable'
+                  ' (' , self class name , ') to integer-typed variable'
 !
 
 invalidCodeObject
     "{ Pragma: +optSpace }"
 
+    "this is sent by VM if it encounters some non-method for execution"
+
     <resource: #skipInDebuggersWalkBack>
 
     self error:'not an executable code object'
@@ -4176,7 +4196,8 @@
 notYetImplemented
     "{ Pragma: +optSpace }"
 
-    "report an error that some functionality is not yet implemented"
+    "report an error that some functionality is not yet implemented.
+     This is here only for compatibility - it has the same meaning as shouldImplement."
 
     <resource: #skipInDebuggersWalkBack>
 
@@ -4349,8 +4370,9 @@
 shouldImplement
     "{ Pragma: +optSpace }"
 
-    "report an error that this message should be implemented.
-     This is send by automatically generated method bodies"
+    "report an error that this message/functionality should be implemented.
+     This is send by automatically generated method bodies or inside as-yet-uncoded
+     branches of existing methods."
 
     <resource: #skipInDebuggersWalkBack>
 
@@ -4358,16 +4380,38 @@
 
     sender := thisContext sender.
 
-    ^ UnimplementedFunctionalityError raiseRequestWith:(Message selector:sender selector arguments:sender args)
-
+    ^ UnimplementedFunctionalityError 
+        raiseRequestWith:(Message selector:sender selector arguments:sender args)
 
      "
-	self shouldImplement
+      self shouldImplement
+     "
+!
+
+shouldImplement:what
+    "{ Pragma: +optSpace }"
+
+    "report an error that this message/functionality should be implemented.
+     This is send by automatically generated method bodies or inside as-yet-uncoded
+     branches of existing methods."
+
+    <resource: #skipInDebuggersWalkBack>
+
+    |sender|
+
+    sender := thisContext sender.
+
+    ^ UnimplementedFunctionalityError 
+        raiseRequestWith:(Message selector:sender selector arguments:sender args)
+        errorString:what
+
+     "
+      self shouldImplement:'foobar'
      "
 !
 
 shouldNeverBeReached
-    " report error - this point may never be reached. "
+    "report an error that this point may never be reached."
     
     ^ self 
         error:'Oops, this may never reached. Something somewhere was terribly wrong.'.
@@ -4376,7 +4420,7 @@
 !
 
 shouldNeverBeSent
-    " report error - this message may never be sent to the reciever"
+    "report an error that this message may never be sent to the reciever"
     
     ^ self error:'This message never may be sent to me!!'.
 
@@ -4386,7 +4430,8 @@
 shouldNotImplement
     "{ Pragma: +optSpace }"
 
-    "report an error that this message should not be implemented"
+    "report an error that this message should not be implemented - i.e. that a method
+     is invoked which is not appropriate for the receiver."
 
     <resource: #skipInDebuggersWalkBack>
 
@@ -4398,8 +4443,7 @@
 subclassResponsibility
     "{ Pragma: +optSpace }"
 
-    "report an error that this message should have been reimplemented in a
-     subclass"
+    "report an error that this message should have been reimplemented in a subclass"
 
     <resource: #skipInDebuggersWalkBack>
 
@@ -6410,7 +6454,7 @@
      These messages can be turned on/off by 'Object infoPrinting:true/false'"
 
     InfoPrinting == true ifTrue:[
-	self errorPrint
+        self errorPrint
     ]
 !
 
@@ -6423,7 +6467,7 @@
      These messages can be turned on/off by 'Object infoPrinting:true/false'"
 
     InfoPrinting == true ifTrue:[
-	self errorPrintCR
+        self errorPrintCR
     ]
 
     "Created: 20.5.1996 / 10:21:28 / cg"
@@ -7116,7 +7160,6 @@
     ^ self
 ! !
 
-
 !Object methodsFor:'secure message sending'!
 
 askFor:aSelector
@@ -9243,12 +9286,13 @@
 !Object class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Object.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Object.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Object.st,v 1.638 2009/10/19 09:04:09 cg Exp §'
+    ^ '$Id: Object.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 Object initialize!
 
+
--- a/ObjectMemory.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/ObjectMemory.st	Thu Nov 05 14:41:30 2009 +0000
@@ -5245,12 +5245,13 @@
 !ObjectMemory class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ObjectMemory.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: ObjectMemory.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ObjectMemory.st,v 1.242 2009/10/14 06:13:29 cg Exp §'
+    ^ '$Id: ObjectMemory.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 ObjectMemory initialize!
 
+
--- a/PCFilename.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/PCFilename.st	Thu Nov 05 14:41:30 2009 +0000
@@ -546,8 +546,14 @@
 !
 
 isHidden
-    "return true, if such a file is hidden."
+    "return true, if such a file is hidden.
+     On MSDOS, a name starting with a period is considered hidden
+     AND a file with a hidden attribute is so."
 
+    |baseName|
+
+    baseName := self baseName.
+    ((baseName startsWith:'.') and:[baseName ~= '..']) ifTrue:[^ true].
     ^ OperatingSystem isHidden:(self osNameForFile)
 !
 
@@ -873,5 +879,10 @@
 !PCFilename class methodsFor:'documentation'!
 
 version
-    ^ '$Id: PCFilename.st 10467 2009-08-19 16:14:36Z vranyj1 $'
+    ^ '$Id: PCFilename.st 10477 2009-11-05 14:41:30Z vranyj1 $'
+!
+
+version_CVS
+    ^ '$Id: PCFilename.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
+
--- a/PackageId.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/PackageId.st	Thu Nov 05 14:41:30 2009 +0000
@@ -177,6 +177,15 @@
     "Modified: / 28-11-2006 / 11:39:14 / cg"
 !
 
+isModuleId
+    "true if this is a module-id only (i.e. no directory component present).
+     These are not allowed to be used as real projects, but only for organization.
+     The reason is that this is used as selector to select the sourceCodeManager and
+     also the managers repository"
+
+    ^ self directory isEmptyOrNil
+!
+
 libraryName
     "return the name of the library, when compiled to a binary (i.e. dll/so).
      To avoid conflicts with the projectDefinition class 
@@ -270,10 +279,11 @@
 !PackageId class methodsFor:'documentation'!
 
 version
-    ^ '$Id: PackageId.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: PackageId.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/PackageId.st,v 1.15 2009/10/12 17:17:14 cg Exp §'
+    ^ '$Id: PackageId.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/PipeStream.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/PipeStream.st	Thu Nov 05 14:41:30 2009 +0000
@@ -487,13 +487,13 @@
      This waits for the command to finish.
      Use shutDown for a fast (nonBlocking) close."
 
-    filePointer notNil ifTrue:[
+    handle notNil ifTrue:[
 	super closeFile.
 	OperatingSystem isMSDOSlike ifTrue:[
 	    self terminatePipeCommand.
 	].
 
-	filePointer := nil.
+	handle := nil.
 	pid notNil ifTrue:[
 	    "/ wait for the pipe-command to terminate.
 	    self waitForPipeCommandWithTimeout:nil.
@@ -518,8 +518,8 @@
     extern close();
     int retVal;
 
-    if ((fp = __INST(filePointer)) != nil) {
-	__INST(filePointer) = nil;
+    if ((fp = __INST(handle)) != nil) {
+	__INST(handle) = nil;
 	f = __FILEVal(fp);
 	if (@global(FileOpenTrace) == true) {
 	    console_fprintf(stderr, "close [PipeStream] %x fd=%d\n", f, fileno(f));
@@ -568,18 +568,18 @@
      shellPath shellArgs mbx mbxName
      realCmd execDirectory tmpComFile nullOutput resultPid|
 
-    filePointer notNil ifTrue:[
-        "the pipe was already open ...
-         this should (can) not happen."
-        ^ self errorAlreadyOpen
+    handle notNil ifTrue:[
+	"the pipe was already open ...
+	 this should (can) not happen."
+	^ self errorAlreadyOpen
     ].
 
     rwMode = #r ifTrue:[
-        mode := #readonly. didWrite := false.
+	mode := #readonly. didWrite := false.
     ] ifFalse:[rwMode = #'r+' ifTrue:[
-        mode := #readwrite. didWrite := true.
+	mode := #readwrite. didWrite := true.
     ] ifFalse:[
-        mode := #writeonly. didWrite := true.
+	mode := #writeonly. didWrite := true.
     ]].
 
     lastErrorNumber := nil.
@@ -591,79 +591,79 @@
     execFdArray := #(0 1 2) copy.
 
     OperatingSystem isVMSlike ifTrue:[
-        "/
-        "/ the generated COM-file includes a 'set default'
-        "/
-        tmpComFile := OperatingSystem createCOMFileForVMSCommand:aCommandString in:aDirectory.
-        realCmd := '@' , tmpComFile osName.
-        execDirectory := nil.
+	"/
+	"/ the generated COM-file includes a 'set default'
+	"/
+	tmpComFile := OperatingSystem createCOMFileForVMSCommand:aCommandString in:aDirectory.
+	realCmd := '@' , tmpComFile osName.
+	execDirectory := nil.
 
-        mbx := OperatingSystem createMailBox.
-        mbx isNil ifTrue:[
-            lastErrorNumber := OperatingSystem currentErrorNumber.
-            tmpComFile delete.
-            ^ self openError
-        ].
-        mbxName := OperatingSystem mailBoxNameOf:mbx.
+	mbx := OperatingSystem createMailBox.
+	mbx isNil ifTrue:[
+	    lastErrorNumber := OperatingSystem currentErrorNumber.
+	    tmpComFile delete.
+	    ^ self openError
+	].
+	mbxName := OperatingSystem mailBoxNameOf:mbx.
 
-        "/ 'mailBox is ' print. mbx print. ' name is ' print. mbxName printCR.
-        shellPath := ''.
-        shellArgs := realCmd.
+	"/ 'mailBox is ' print. mbx print. ' name is ' print. mbxName printCR.
+	shellPath := ''.
+	shellArgs := realCmd.
 
-        rwMode = #r ifTrue:[
-            "redirect stdout of subprocess to write to mailbox"
-            execFdArray at:2 put:mbx.
-        ] ifFalse:[
-            "redirect stdin of subprocess to read from mailbox"
-            execFdArray at:1 put:mbx.
-        ].
+	rwMode = #r ifTrue:[
+	    "redirect stdout of subprocess to write to mailbox"
+	    execFdArray at:2 put:mbx.
+	] ifFalse:[
+	    "redirect stdin of subprocess to read from mailbox"
+	    execFdArray at:1 put:mbx.
+	].
     ] ifFalse:[
-        shellAndArgs := OperatingSystem commandAndArgsForOSCommand:realCmd.
-        shellPath := shellAndArgs at:1.
-        shellArgs := shellAndArgs at:2.
+	shellAndArgs := OperatingSystem commandAndArgsForOSCommand:realCmd.
+	shellPath := shellAndArgs at:1.
+	shellArgs := shellAndArgs at:2.
 
-        mode == #readwrite ifTrue:[
-            pipeFdArray := OperatingSystem makeBidirectionalPipe.
-            pipeFdArray isNil ifTrue:[
-                lastErrorNumber := OperatingSystem currentErrorNumber.
-                ^ self openError
-            ].
-            myFd := pipeFdArray at:1.
-            execFd := pipeFdArray at:2.
-            execFdArray at:1 put:execFd.
-            execFdArray at:2 put:execFd.
-        ] ifFalse:[
-            pipeFdArray := OperatingSystem makePipe.
-            pipeFdArray isNil ifTrue:[
-                lastErrorNumber := OperatingSystem currentErrorNumber.
-                ^ self openError
-            ].
+	mode == #readwrite ifTrue:[
+	    pipeFdArray := OperatingSystem makeBidirectionalPipe.
+	    pipeFdArray isNil ifTrue:[
+		lastErrorNumber := OperatingSystem currentErrorNumber.
+		^ self openError
+	    ].
+	    myFd := pipeFdArray at:1.
+	    execFd := pipeFdArray at:2.
+	    execFdArray at:1 put:execFd.
+	    execFdArray at:2 put:execFd.
+	] ifFalse:[
+	    pipeFdArray := OperatingSystem makePipe.
+	    pipeFdArray isNil ifTrue:[
+		lastErrorNumber := OperatingSystem currentErrorNumber.
+		^ self openError
+	    ].
 
-            mode == #readonly ifTrue:[
-                "redirect stdout of subprocess to write to pipe"
-                myFd := pipeFdArray at:1.
-                execFd := pipeFdArray at:2.
-                execFdArray at:2 put:execFd.
-            ] ifFalse:[
-                "redirect stdin of subprocess to read from pipe"
-                myFd := pipeFdArray at:2.
-                execFd := pipeFdArray at:1.
-                execFdArray at:1 put:execFd.
-            ].
-        ].
+	    mode == #readonly ifTrue:[
+		"redirect stdout of subprocess to write to pipe"
+		myFd := pipeFdArray at:1.
+		execFd := pipeFdArray at:2.
+		execFdArray at:2 put:execFd.
+	    ] ifFalse:[
+		"redirect stdin of subprocess to read from pipe"
+		myFd := pipeFdArray at:2.
+		execFd := pipeFdArray at:1.
+		execFdArray at:1 put:execFd.
+	    ].
+	].
     ].
 
     errorDisposition == #discard ifTrue:[
-        nullOutput := Filename nullDevice writeStream.
-        execFdArray at:3 put:nullOutput fileDescriptor
+	nullOutput := Filename nullDevice writeStream.
+	execFdArray at:3 put:nullOutput fileDescriptor
     ] ifFalse:[
-        (errorDisposition == #inline or:[errorDisposition == #stdout]) ifTrue:[
-            execFdArray at:3 put:1
-        ] ifFalse:[
+	(errorDisposition == #inline or:[errorDisposition == #stdout]) ifTrue:[
+	    execFdArray at:3 put:1
+	] ifFalse:[
 "/            errorDisposition isStream ifTrue:[
 "/self halt.
 "/            ].
-        ].
+	].
     ].
 
     "/ must block here, to avoid races due to early finishing
@@ -673,83 +673,83 @@
 
     "beware: pid may change if subprocess is fast"
     pid := resultPid :=  Processor
-               monitor:[
-                  OperatingSystem
-                      exec:shellPath
-                      withArguments:shellArgs
-                      environment:nil
-                      fileDescriptors:execFdArray
-                      fork:true
-                      newPgrp:true
-                      inDirectory:execDirectory.
-               ]
-               action:[:status |
-                  status stillAlive ifFalse:[
-                      exitStatus := status.
+	       monitor:[
+		  OperatingSystem
+		      exec:shellPath
+		      withArguments:shellArgs
+		      environment:nil
+		      fileDescriptors:execFdArray
+		      fork:true
+		      newPgrp:true
+		      inDirectory:execDirectory.
+	       ]
+	       action:[:status |
+		  status stillAlive ifFalse:[
+		      exitStatus := status.
 
-                      "writing doesn't make sense - there is no reader any longer"
-                      mode == #readwrite ifTrue:[
-                          "... but allow to read the rest of the command's output"
-                          self shutDownOutput.
-                      ] ifFalse:[mode == #writeonly ifTrue:[
-                          self closeFileDescriptor.
-                      ]].
+		      "writing doesn't make sense - there is no reader any longer"
+		      mode == #readwrite ifTrue:[
+			  "... but allow to read the rest of the command's output"
+			  self shutDownOutput.
+		      ] ifFalse:[mode == #writeonly ifTrue:[
+			  self closeFileDescriptor.
+		      ]].
 
-                      OperatingSystem closePid:pid.
-                      pid := nil.
-                      exitSema signal.
-                  ].
-               ].
+		      OperatingSystem closePid:pid.
+		      pid := nil.
+		      exitSema signal.
+		  ].
+	       ].
 
     "subprocess has been created.
      close unused filedescriptors"
 
     execFd notNil ifTrue:[
-        OperatingSystem closeFd:execFd.
+	OperatingSystem closeFd:execFd.
     ].
 
     nullOutput notNil ifTrue:[
-        nullOutput close
+	nullOutput close
     ].
 
     resultPid notNil ifTrue:[
-        "successfull creation of subprocesss"
-        OperatingSystem isVMSlike ifTrue:[
-            "/
-            "/ reopen the mailbox as a file ...
-            "/
-            mbxName := OperatingSystem mailBoxNameOf:mbx.
-            mbxName notNil ifTrue:[
-                super open:mbxName withMode:rwMode.
-                exitAction := [tmpComFile delete].
-            ].
-        ] ifFalse:[
-            self setFileDescriptor:myFd mode:rwMode.
-        ]
+	"successfull creation of subprocesss"
+	OperatingSystem isVMSlike ifTrue:[
+	    "/
+	    "/ reopen the mailbox as a file ...
+	    "/
+	    mbxName := OperatingSystem mailBoxNameOf:mbx.
+	    mbxName notNil ifTrue:[
+		super open:mbxName withMode:rwMode.
+		exitAction := [tmpComFile delete].
+	    ].
+	] ifFalse:[
+	    self setFileDescriptor:myFd mode:rwMode.
+	]
     ] ifFalse:[
-        "creation of subprocesss failed"
-        lastErrorNumber := OperatingSystem currentErrorNumber.
-        OperatingSystem isVMSlike ifTrue:[
-            OperatingSystem destroyMailBox:mbx.
-            tmpComFile delete.
-        ] ifFalse:[
-            OperatingSystem closeFd:myFd.
-        ].
+	"creation of subprocesss failed"
+	lastErrorNumber := OperatingSystem currentErrorNumber.
+	OperatingSystem isVMSlike ifTrue:[
+	    OperatingSystem destroyMailBox:mbx.
+	    tmpComFile delete.
+	] ifFalse:[
+	    OperatingSystem closeFd:myFd.
+	].
     ].
 
     blocked ifFalse:[
-        OperatingSystem unblockInterrupts
+	OperatingSystem unblockInterrupts
     ].
 
     (resultPid isNil or:[lastErrorNumber notNil]) ifTrue:[
-        "
-         the pipe open failed for some reason ...
-         ... this may be either due to an invalid command string,
-         or due to the system running out of memory (when forking
-         the unix process)
-        "
-        exitAction value.
-        ^ self openError
+	"
+	 the pipe open failed for some reason ...
+	 ... this may be either due to an invalid command string,
+	 or due to the system running out of memory (when forking
+	 the unix process)
+	"
+	exitAction value.
+	^ self openError
     ].
 
     commandString := realCmd.
@@ -795,7 +795,8 @@
 !PipeStream class methodsFor:'documentation'!
 
 version
-    ^ '$Id: PipeStream.st 10447 2009-06-14 13:09:55Z vranyj1 $'
+    ^ '$Id: PipeStream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 PipeStream initialize!
+
--- a/ProgrammingLanguage.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/ProgrammingLanguage.st	Thu Nov 05 14:41:30 2009 +0000
@@ -351,16 +351,17 @@
 !ProgrammingLanguage class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ProgrammingLanguage.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: ProgrammingLanguage.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ProgrammingLanguage.st,v 1.9 2009/10/08 12:00:30 fm Exp §'
+    ^ '$Id: ProgrammingLanguage.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_SVN
-    ^ '$Id: ProgrammingLanguage.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^'§Id: ProgrammingLanguage.st 10468 2009-08-22 08:34:50Z vranyj1 §'
 ! !
 
 ProgrammingLanguage initialize!
 
+
--- a/Project.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Project.st	Thu Nov 05 14:41:30 2009 +0000
@@ -52,11 +52,14 @@
 
 documentation
 "
-    this class is going to be obsoleted, before ever being finished.
-    All references to this class are being removed, and we are only
+    WARNING:
+        This class is almost completely obsolete (before even being finished)
+
+    Most references to this class are being removed, and we are only
     looking at PackageId and ProjectDefinition in the future.
-    
-    Please ignore everything below.
+    Please ignore everything regarding to packaging and building below.
+    Project instance(s) are still used to keep a reference to the current changeSet,
+    but even that may move to a projectDefinition in the future.
 
     This class is still under construction (especially the build features are unfinished).
     Currently, all it does is keep track of per-project views 
@@ -1614,12 +1617,13 @@
 !Project class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Project.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Project.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Project.st,v 1.206 2009/10/12 21:41:05 cg Exp §'
+    ^ '$Id: Project.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 Project initialize!
 
+
--- a/ProjectDefinition.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/ProjectDefinition.st	Thu Nov 05 14:41:30 2009 +0000
@@ -84,6 +84,103 @@
 
 !ProjectDefinition class methodsFor:'instance creation'!
 
+definitionClassForMonticelloPackage:aMonicelloPackagename
+    ^ self definitionClassForMonticelloPackage:aMonicelloPackagename createIfAbsent:false
+
+    "
+     self definitionClassForMonticelloPackage:'foobar'
+    "
+!
+
+definitionClassForMonticelloPackage:aMonicelloPackagename createIfAbsent:createIfAbsent
+    ^ self allSubclasses 
+        detect:[:eachProjectDefinition |
+            eachProjectDefinition monticelloPackageName = aMonicelloPackagename ]
+        ifNone:[
+            |dfn squeakPackageInfo|
+
+            createIfAbsent ifTrue:[
+                dfn := ApplicationDefinition 
+                    definitionClassForPackage:'mc:',aMonicelloPackagename createIfAbsent:true projectType:GUIApplicationType.
+
+                "/ if the squeak-stuff is loaded, use it.
+                squeakPackageInfo := PackageInfo allSubclasses 
+                                            detect:[:pi | pi new packageName = aMonicelloPackagename] ifNone:nil.
+
+                squeakPackageInfo notNil ifTrue:[
+                    dfn classNames:(squeakPackageInfo new classes collect:[:each | each name]).
+                ].
+            ] ifFalse:[
+                nil
+            ]
+        ]
+
+    "
+     self definitionClassForMonticelloPackage:'foobar'
+     self definitionClassForMonticelloPackage:'foobar' createIfAbsent:true
+    "
+!
+
+definitionClassForPackage:aPackageID
+    ^ self definitionClassForPackage:aPackageID createIfAbsent:false
+
+    "Modified: / 17-08-2006 / 14:33:35 / cg"
+!
+
+definitionClassForPackage:aPackageID createIfAbsent:doCreateIfAbsent
+    ^ self definitionClassForPackage:aPackageID createIfAbsent:doCreateIfAbsent projectType:nil
+
+    "Modified: / 23-08-2006 / 14:29:15 / cg"
+!
+
+definitionClassForPackage: aPackageID createIfAbsent: doCreateIfAbsent projectType:typeOrNil
+    |packageDefinitionClassName class|
+
+    packageDefinitionClassName := ProjectDefinition initialClassNameForDefinitionOf:aPackageID.
+    class := Smalltalk classNamed:packageDefinitionClassName.
+    class isNil ifTrue:[
+        doCreateIfAbsent ifTrue:[
+            class := self newForPackage:aPackageID.
+            "setup before prerequisites are defined"
+            class setupForType:typeOrNil.
+            "/ look what is there and include it; is this ok ?
+            class compileDescriptionMethods 
+        ].
+    ] ifFalse:[
+        typeOrNil notNil ifTrue:[
+            class projectType == typeOrNil ifFalse: [
+                class setupForType:typeOrNil.
+            ].
+        ].
+    ].
+    ^ class
+
+    "Created: / 23-08-2006 / 14:29:21 / cg"
+    "Modified: / 23-08-2006 / 15:35:26 / cg"
+!
+
+definitionClassForPackage:newProjectID projectType:typeOrNil createIfAbsent:createIfAbsent
+    ^ (self definitionClassForType:typeOrNil)
+            definitionClassForPackage:newProjectID 
+            createIfAbsent:createIfAbsent
+            projectType:typeOrNil
+
+    "Created: / 23-08-2006 / 14:28:53 / cg"
+!
+
+definitionClassForType: type
+    "answer the class that describes a give project type"
+
+    (type = LibraryType) ifTrue:[ ^ LibraryDefinition ].
+    (type = GUIApplicationType) ifTrue:[ ^ ApplicationDefinition ].
+    (type = NonGUIApplicationType) ifTrue:[ ^ ApplicationDefinition ].
+    (type = 'Application') ifTrue:[ ^ ApplicationDefinition ].     "/ temporary - for backward compat.
+    self error:'unknown project type'.
+
+    "Created: / 17-08-2006 / 14:46:28 / cg"
+    "Modified: / 23-08-2006 / 13:49:27 / cg"
+!
+
 newForPackage:packageID
     ^ self 
         newNamed:(self initialClassNameForDefinitionOf:packageID) 
@@ -116,32 +213,6 @@
 
 !ProjectDefinition class methodsFor:'accessing'!
 
-allDependentProjects
-
-    | allDependentProjects pendingProjects |
-    allDependentProjects := Set new.
-    pendingProjects := OrderedCollection withAll: self dependentProjects.
-    [ pendingProjects isEmpty ] whileFalse: [
-        | currentProject |
-        currentProject := pendingProjects removeFirst.
-        (allDependentProjects includes: currentProject) ifFalse:
-            [|prjDef|
-            allDependentProjects add: currentProject.
-            prjDef := Smalltalk at:(ProjectDefinition initialClassNameForDefinitionOf:self package) asSymbol.
-            pendingProjects addAll:
-                (prjDef dependentProjects)]
-
-        
-    ].
-    ^allDependentProjects
-    "
-        stx_goodies_libtool3 allDependentProjects     
-        stx_goodies_xmlsuite_core allDependentProjects
-    "
-
-    "Created: / 06-06-2008 / 12:50:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
-!
-
 allPreRequisites
     "answer all (recursive) prerequisite project ids of myself - in random order.
      If we exclude a project, but one of our prerequisite projects depends on it, "
@@ -238,20 +309,9 @@
     "
 !
 
-dependentProjects
-
-    ^(ProjectDefinition allSubclasses 
-        select:[:prjDef|prjDef preRequisites includes: self package])
-        collect:[:prjDef|prjDef package]
-
-    "
-        stx_goodies_libtool3 dependentProjects     
-    "
-
-    "Created: / 06-06-2008 / 12:39:13 / Jan Vrany <vranyj1@fel.cvut.cz>"
-!
-
 initialClassNameForDefinitionOf:aPackageId
+    "given a package-ID, return an appropriate class name for this package"
+
     |s|
 
     s := aPackageId asString copy replaceAny:':/' with:$_.
@@ -381,6 +441,12 @@
     "Modified: / 17-08-2006 / 14:13:51 / cg"
 !
 
+monticelloPackageName
+    "hook for packages which have been loaded from monticello"
+
+    ^ nil
+!
+
 msdosPathToPackage:toPackageID from:fromPackageID
     "Returns the path to the package defined by aPackageID relative to my path"
     
@@ -441,7 +507,7 @@
 
 packageDirectory
 
-    ^Smalltalk packageDirectoryForPackageId: self package
+    ^ Smalltalk packageDirectoryForPackageId: self package
 
     "Created: / 15-06-2009 / 12:01:18 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
@@ -768,6 +834,129 @@
     "Created: / 14-09-2006 / 14:59:53 / cg"
 ! !
 
+!ProjectDefinition class methodsFor:'accessing - packaging'!
+
+classNames:aCollectionOfClassNames
+    "set the set of classes"
+
+    self classNamesAndAttributes:aCollectionOfClassNames usingCompiler:nil
+!
+
+classNamesAndAttributes:newSpec usingCompiler:compilerOrNil
+    "set the set of classes. and attributes 
+     Because this requires compilation of my classList-method, a compiler can be passed in, 
+     which has to do the job.
+     (this is used by the systembrowser to pass in a CodeGeneratorTool with undo support)"
+
+    |oldSpec newCode|
+
+    oldSpec := self classNamesAndAttributes.
+    newSpec = oldSpec ifTrue: [^ self].
+
+    newCode := self classNamesAndAttributes_codeFor:newSpec.
+
+    (compilerOrNil ? self compilerClass)
+        compile:newCode
+        forClass:self theMetaclass
+        inCategory:'description - contents'.
+!
+
+excludeClasses:toExclude usingCompiler:compilerOrNil
+    "exclude (remove from classList) a number of classes. 
+     Because this requires compilation of my classList-method, a compiler can be passed in, 
+     which has to do the job.
+     (this is used by the systembrowser to pass in a CodeGeneratorTool with undo support)"
+
+    |newSpec|
+
+    newSpec := self classNamesAndAttributes copy.
+
+    toExclude do:[:eachClassToExclude |
+        |className|
+        className := eachClassToExclude theNonMetaclass name.
+        (self allClassNames includes:className) ifTrue:[
+            |idx|
+
+            idx := newSpec findFirst:[:entry | entry = className or:[entry first = className]].
+            idx ~~ 0 ifTrue:[
+                newSpec := newSpec copyWithoutIndex:idx.
+            ].
+        ].
+    ].
+    self classNamesAndAttributes:newSpec usingCompiler:compilerOrNil
+
+    "Created: / 30-08-2007 / 18:28:28 / cg"
+!
+
+includeClasses:toInclude usingCompiler:compilerOrNil
+    "include (add to classList) a number of classes. 
+     Because this requires compilation of my classList-method, a compiler can be passed in, 
+     which has to do the job.
+     (this is used by the systembrowser to pass in a CodeGeneratorTool with undo support)"
+
+    |oldSpec newSpec|
+
+    oldSpec := self classNamesAndAttributes.
+    newSpec := oldSpec copy.
+
+    toInclude do:[:eachClassToInclude |
+        |className|
+
+        className := eachClassToInclude theNonMetaclass name.
+        (self compiled_classNames includes:className) ifFalse:[
+            | idx entry|
+
+            idx := oldSpec findFirst:[:entry | entry = className or:[entry first = className]].
+            idx == 0 ifTrue:[
+                newSpec := newSpec copyWith:(Array with:className)
+            ] ifFalse:[
+                entry := newSpec at:idx.
+                entry isArray ifTrue:[
+                    entry := entry copyWithout:#autoload
+                ].
+                newSpec at:idx put:entry
+            ].
+        ].
+    ].
+
+    self classNamesAndAttributes:newSpec usingCompiler:compilerOrNil
+!
+
+makeClassesAutoloaded:toMakeAutoloaded usingCompiler:compilerOrNil
+    "include as autoloaded (add to classList) a number of classes. 
+     Because this requires compilation of my classList-method, a compiler can be passed in, 
+     which has to do the job.
+     (this is used by the systembrowser to pass in a CodeGeneratorTool with undo support)"
+
+    |newSpec|
+
+    newSpec := self classNamesAndAttributes copy.
+
+    toMakeAutoloaded do:[:eachClassToMakeAutoloaded |
+        |className|
+
+        className := eachClassToMakeAutoloaded theNonMetaclass name.
+        (self autoloaded_classNames includes:className) ifFalse:[
+            |idx entry|
+
+            idx := newSpec findFirst:[:entry | entry = className or:[entry first = className]].
+            idx == 0 ifTrue:[
+                newSpec := newSpec copyWith:(Array with:className with:#autoload)
+            ] ifFalse:[
+                entry := newSpec at:idx.
+                entry isArray ifTrue:[
+                    entry := (entry copyWithout:#autoload) copyWith:#autoload.
+                ] ifFalse:[
+                    entry := Array with:entry with:#autoload
+                ].
+                newSpec at:idx put:entry.
+            ].
+        ].
+    ].
+
+    self classNamesAndAttributes:newSpec usingCompiler:compilerOrNil
+! !
+
 !ProjectDefinition class methodsFor:'accessing - svn'!
 
 svnRevision
@@ -855,6 +1044,8 @@
 !
 
 installAutoloadedClasses
+    "install all of my autoloaded classes (if any)"
+
     (self classNamesForWhich:[:nm :attr | (attr includes:#autoload)]) 
         do:[:className |
             "/ 'install as autoloaded: ' errorPrint. className errorPrintCR.
@@ -994,14 +1185,13 @@
                                 attributes := eachClass isLoaded ifTrue:[ #() ] ifFalse:[ #(autoload) ].
                             ].
                         ].
-
                         "JV @ 2009-10-26
-                         Give a project definition to specify additional attributes
-                         for given class."
-                        (self additionalClassAttributesFor: eachClass) do:
-                            [:attr|
-                            (attributes includes: attr) 
-                                ifFalse:[attributes := attributes copyWith: attr]].
+                         Give a project definition to specify additional attributes for given class."
+                        (self additionalClassAttributesFor: eachClass) do:[:attr|
+                            (attributes includes: attr) ifFalse:[
+                                attributes := attributes copyWith: attr
+                            ]
+                        ].
                         newEntry := Array with:className.
                         attributes notEmptyOrNil ifTrue:[
                             newEntry := newEntry , attributes.
@@ -1196,27 +1386,27 @@
         forEachContentsMethodsCodeToCompileDo:aTwoArgBlock 
         ignoreOldDefinition:ignoreOldDefinition.
 
-    (self class implements:#description) ifFalse:[
+    (self class includesSelector:#description) ifFalse:[
         aTwoArgBlock 
             value: self description_code
             value: 'description - project information'.
     ].
-    (self class implements:#productName) ifFalse:[
+    (self class includesSelector:#productName) ifFalse:[
         aTwoArgBlock 
             value: self productName_code
             value: 'description - project information'.
     ].
-    (self class implements:#companyName) ifFalse:[
+    (self class includesSelector:#companyName) ifFalse:[
         aTwoArgBlock 
             value: self companyName_code
             value: 'description - project information'.
     ].
-    (self class implements:#legalCopyright) ifFalse:[
+    (self class includesSelector:#legalCopyright) ifFalse:[
         aTwoArgBlock 
             value: self legalCopyright_code
             value: 'description - project information'.
     ].
-    (self class implements:#applicationIconFileName) ifFalse:[
+    (self class includesSelector:#applicationIconFileName) ifFalse:[
         aTwoArgBlock 
             value: self applicationIconFileName_code
             value: 'description - project information'.
@@ -1388,9 +1578,29 @@
     ^ NonGUIApplicationType
 !
 
+projectTypeSelectors
+    "a list of possible project type selectors"
+
+    ^ #( libraryType guiApplicationType nonGuiApplicationType )
+
+    "
+     self libraryType
+     self guiApplicationType
+     self nonGuiApplicationType
+    "
+
+    "Created: / 23-08-2006 / 14:27:32 / cg"
+!
+
 projectTypes
+    "a list of possible project types"
+
     ^ self libraryTypes , self applicationTypes
 
+    "
+     self projectTypes
+    "
+
     "Created: / 23-08-2006 / 14:27:32 / cg"
 ! !
 
@@ -1415,20 +1625,6 @@
     "Modified: / 17-08-2006 / 19:49:40 / cg"
 !
 
-postLoadAction
-    "invoked after loading a project"
-
-    "/ intentionally left blank, to be redefined by subclasses (i.e. real projects)
-
-    "Modified: / 17-08-2006 / 19:59:17 / cg"
-!
-
-preLoadAction
-    "invoked before loading a project"
-
-    "/ intentionally left blank, to be redefined by subclasses (i.e. real projects)
-!
-
 preRequisites
     "list packages which are required as a prerequisite. This method is generated automatically,
      by searching along the inheritance chain of all of my classes.
@@ -1454,14 +1650,6 @@
     ^ self preRequisites
 !
 
-preUnloadAction
-    "invoked before unloading a project"
-
-    "/ intentionally left blank, to be redefined by subclasses (i.e. real projects)
-
-    "Modified: / 17-08-2006 / 19:59:26 / cg"
-!
-
 siblingsAreSubProjects
     ^ false
 !
@@ -1484,68 +1672,40 @@
     "Modified: / 17-08-2006 / 19:57:46 / cg"
 ! !
 
+!ProjectDefinition class methodsFor:'description - actions'!
+
+postLoadAction
+    "invoked after loading a project"
+
+    "/ intentionally left blank, to be redefined by subclasses (i.e. real projects)
+
+    "Modified: / 17-08-2006 / 19:59:17 / cg"
+!
+
+preLoadAction
+    "invoked before loading a project"
+
+    "/ intentionally left blank, to be redefined by subclasses (i.e. real projects)
+!
+
+preUnloadAction
+    "invoked before unloading a project"
+
+    "/ intentionally left blank, to be redefined by subclasses (i.e. real projects)
+
+    "Modified: / 17-08-2006 / 19:59:26 / cg"
+! !
+
 !ProjectDefinition class methodsFor:'description - classes'!
 
-additionalClassAttributesFor: aClass
-    "Answers additional set of class attributes for given class
-     Individual project definitions may override this method, but
-     overriding method should always merge its attributes with result
-     of 'super additionalClassAttributesFor: aClass'.
-
-     Here, we add #autoload attributes to all test cases and
-     test resources, as they are not neccessary for the package
-     and should not be compiled (because of unwanted dependency
-     on stx:goodies/sunit package)
-    "
-
-    (aClass inheritsFrom: TestCase) ifTrue:[^#(autoload)].
-    (aClass inheritsFrom: TestResource) ifTrue:[^#(autoload)].
-
-    ^#()"No additional attributes"
-
-    "
-        stx_libbasic additionalClassAttributesFor: Object 
-        stx_libtool additionalClassAttributesFor: Tools::NavigationHistoryTests
-        stx_goodies_sunit additionalClassAttributesFor: TestCase 
-
-
-        stx_libtool classNamesAndAttributes_code_ignoreOldEntries:true ignoreOldDefinition: true
-
-    "
-
-    "Created: / 26-10-2009 / 12:54:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
 additionalClassNamesAndAttributes
     ^ #()
 
     "Created: / 21-08-2006 / 19:53:04 / cg"
 !
 
-allClassNames          
-    ^ self classNamesForWhich:[:nm :attr | true ].
-!
-
-autoloaded_classNames          
-    ^ self classNamesForWhich:[:nm :attr | attr notEmptyOrNil and:[attr includes:#autoload]].
-
-    "Modified: / 07-08-2006 / 21:25:25 / fm"
-    "Created: / 30-08-2007 / 18:48:09 / cg"
-!
-
-classNames          
-    "answer an array containing all the class names of the project's classes"
-
-    ^ self classNamesAndAttributesAsSpecArray collect:[:entry | entry first].
-
-    "
-     stx_libhtml classNames
-     stx_libhtml classNamesAndAttributesAsSpecArray
-    "
-!
-
 classNamesAndAttributes
-    "a correponding method with real names is generated in my subclasses"
+    "a correponding method with real names must be present in my concrete subclasses"
 
     "/ should this be a subclassResponsibility here ?
     ^ #()
@@ -1555,119 +1715,11 @@
     "Modified: / 17-08-2006 / 20:47:20 / cg"
 !
 
-classNamesAndAttributesAsSpecArray
-    "given a classNamesAndAttributes array, make this a spec array (array of arrays).  
-     This decompresses class-name entries into a one-element array for easier processing"
-
-    ^ self classNamesAndAttributes
-        collect:[:entry |
-            entry isArray ifTrue:[
-                entry first isSymbol ifTrue:[
-                    entry
-                ] ifFalse:[
-                    (Array with:entry first asSymbol) , (entry copyFrom:2)
-                ].
-            ] ifFalse:[
-                Array with:entry asSymbol.
-            ]].
-
-    "Created: / 19-02-2007 / 16:11:53 / cg"
-!
-
-classNamesAndAttributesFromSpecArray:aSpecArray
-    "given a spec array (array of arrays), make this a classNamesAndAttributes array
-     as stored literally in the method.
-     This compresses single element array-elements into plain names
-     (to save code in the compiled binaries)"
-
-    ^ aSpecArray
-        collect:[:entry |
-            (entry isArray and:[entry size == 1]) ifTrue:[
-                entry first
-            ] ifFalse:[
-                entry
-            ]].
-
-    "Created: / 19-02-2007 / 16:12:32 / cg"
-!
-
-classNamesForWhich:aBlock          
-    "a correponding method with real names is generated in my subclasses"
-
-    |coll|
-
-    coll := OrderedCollection new.
-    self classNamesAndAttributesDo:[:nm :attributes |
-        (aBlock value:nm value:attributes) ifTrue:[
-            coll add:nm.
-        ].
-    ].
-    ^ coll
-
-    "Created: / 07-08-2006 / 19:02:57 / fm"
-    "Modified: / 07-08-2006 / 21:25:25 / fm"
-    "Modified: / 17-08-2006 / 20:47:20 / cg"
-!
-
-compiled_classNames          
-    ^ self classNamesForWhich:[:nm :attr | attr isEmptyOrNil or:[(attr includes:#autoload) not]].
-
-    "Created: / 07-08-2006 / 19:02:57 / fm"
-    "Modified: / 07-08-2006 / 21:25:25 / fm"
-    "Modified: / 21-08-2006 / 18:48:31 / cg"
-!
-
-compiled_classNamesForPlatform
-    "answer the classes to be compiled only for the current platformName"
-
-    ^ self compiled_classNamesForPlatform:OperatingSystem platformName
-!
-
-compiled_classNamesForPlatform:platformName
-    "answer the classes to be compiled only for platformName
-     platformName is one of #unix, #win32 (OperatingSystem platformName)"
-
-    ^ self 
-        classNamesForWhich:[:nm :attr | 
-            (attr includes:#autoload) not and:[attr includes:platformName]
-        ].
-
-    "Created: / 07-08-2006 / 19:02:57 / fm"
-    "Modified: / 07-08-2006 / 21:25:25 / fm"
-    "Modified: / 09-10-2006 / 13:30:08 / cg"
-!
-
-compiled_classNames_common
-    "classes to be compiled for any platform"
-
-    ^ self 
-        classNamesForWhich:[:nm :attr |
-            attr isEmptyOrNil
-        ].
-
-    "Created: / 18-08-2006 / 13:37:51 / cg"
-!
-
-compiled_classNames_unix
-    "class, only to be compiled under unix"
-    
-    ^ self compiled_classNamesForPlatform:#unix.
-
-    "Created: / 18-08-2006 / 13:37:51 / cg"
-!
-
-compiled_classNames_windows
-    "class, only to be compiled under windows"
-    
-    ^ self compiled_classNamesForPlatform:#win32.
-
-    "Created: / 18-08-2006 / 13:37:56 / cg"
-!
-
 extensionMethodNames
     "list class/selector pairs of extensions.
-     A correponding method with real names is generated in my subclasses"
-
+     A correponding method with real names must be present in my concrete subclasses"
+
+    "/ should this be a subclassResponsibility here ?
     ^ #()
 
     "Modified: / 17-08-2006 / 20:49:51 / cg"
@@ -2668,304 +2720,7 @@
     "Created: / 07-09-2006 / 17:07:00 / cg"
 ! !
 
-!ProjectDefinition class methodsFor:'file templates'!
-
-bc_dot_mak
-    "answer a template for the bc.mak makefile.
-     Any variable definition %(Variable) will be later replaced by the mapping.
-     $% characters have to be duplicated.
-     Only needed for WIN"
-
-    ^ self subclassResponsibility
-!
-
-bmake_dot_mak
-    "the template code for the bmake.bat file"
-
-    ^ 
-'@REM -------
-@REM make using borland bcc
-@REM type bmake, and wait...
-@REM do not edit - automatically generated from ProjectDefinition
-@REM -------
-make.exe -N -f bc.mak %%1 %%2
-
-%(SUBPROJECT_BMAKE_CALLS)
-'
-
-    "Created: / 17-08-2006 / 20:04:14 / cg"
-    "Modified: / 14-09-2006 / 19:46:40 / cg"
-!
-
-classLine_libInit_dot_cc
-
-^'_%(CLASS)_Init(pass,__pRT__,snd);'
-
-    "Created: / 08-08-2006 / 12:51:44 / fm"
-    "Modified: / 08-08-2006 / 15:46:05 / fm"
-!
-
-lcmake_dot_mak
-    "the template code for the lcmake.bat file"
-
-    ^ 
-'@REM -------
-@REM make using lcc compiler
-@REM type lcmake, and wait...
-@REM do not edit - automatically generated from ProjectDefinition
-@REM -------
-make.exe -N -f bc.mak USELCC=1 %%1 %%2
-
-%(SUBPROJECT_LCCMAKE_CALLS)
-'
-!
-
-make_dot_proto
-    "the template code for the make.proto file"
-
-    ^ self subclassResponsibility
-!
-
-make_dot_spec
-
-^ 
-'# $','Header','$
-#
-# DO NOT EDIT 
-# automagically generated from the projectDefinition: ',self name,'.
-#
-# Warning: once you modify this file, do not rerun
-# stmkmp or projectDefinition-build again - otherwise, your changes are lost.
-#
-# This file contains specifications which are common to all platforms.
-#
-
-# Do NOT CHANGE THESE DEFINITIONS
-# (otherwise, ST/X will have a hard time to find out the packages location from its packageID,
-#  to find the source code of a class and to find the library for a package)
-MODULE=%(MODULE)
-MODULE_DIR=%(MODULE_DIRECTORY)
-PACKAGE=$(MODULE):$(MODULE_DIR)
-
-
-# Argument(s) to the stc compiler (stc --usage).
-#  -H.         : create header files locally
-#                (if removed, they will be created as common
-#  -Pxxx       : defines the package
-#  -Zxxx       : a prefix for variables within the classLib
-#  -Dxxx       : defines passed to to CC for inline C-code
-#  -Ixxx       : include path passed to CC for inline C-code
-#  +optspace   : optimized for space
-#  +optspace2  : optimized more for space
-#  +optspace3  : optimized even more for space
-#  +optinline  : generate inline code for some ST constructs
-#  +inlineNew  : additionally inline new
-#  +inlineMath : additionally inline some floatPnt math stuff
-#
-# ********** OPTIONAL: MODIFY the next line(s) ***
-# STCLOCALOPTIMIZATIONS=+optinline +inlineNew
-# STCLOCALOPTIMIZATIONS=+optspace3
-STCLOCALOPTIMIZATIONS=%(STCOPTIMIZATIONOPTIONS)
-
-
-# Argument(s) to the stc compiler (stc --usage).
-#  -warn            : no warnings
-#  -warnNonStandard : no warnings about ST/X extensions
-#  -warnEOLComments : no warnings about EOL comment extension
-#  -warnPrivacy     : no warnings about privateClass extension
-#
-# ********** OPTIONAL: MODIFY the next line(s) ***
-# STCWARNINGS=-warn
-# STCWARNINGS=-warnNonStandard
-# STCWARNINGS=-warnEOLComments
-STCWARNINGS=%(STCWARNINGOPTIONS)
-
-%(OBJECTS)
-'
-
-    "Created: / 08-08-2006 / 19:31:29 / fm"
-    "Modified: / 09-08-2006 / 15:10:57 / fm"
-    "Modified: / 30-08-2006 / 19:07:26 / cg"
-!
-
-objectLine_make_dot_spec
-
-    ^'    $(OUTDIR)%(CLASSFILE).$(O) \'
-
-    "Created: / 08-08-2006 / 20:16:46 / fm"
-    "Modified: / 23-08-2006 / 11:11:38 / cg"
-!
-
-packageName_dot_rc
-    "the template code for the <libName>.rc file.
-     Only used for WIN"
-
-^ 
-'//
-// DO NOT EDIT 
-// automagically generated from the projectDefinition: ',self name,'.
-//
-VS_VERSION_INFO VERSIONINFO
-  FILEVERSION     %(FILE_VERSION_COMMASEPARATED)
-  PRODUCTVERSION  %(PRODUCT_VERSION_COMMASEPARATED)
-  FILEFLAGSMASK   VS_FF_DEBUG | VS_FF_PRERELEASE
-  FILEFLAGS       VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
-  FILEOS          VOS_NT_WINDOWS32
-  FILETYPE        %(FILETYPE)
-  FILESUBTYPE     VS_USER_DEFINED
-
-BEGIN
-  BLOCK "StringFileInfo"
-  BEGIN
-    BLOCK "040904E4"
-    BEGIN
-      VALUE "CompanyName", "%(COMPANY_NAME)\0"
-      VALUE "FileDescription", "%(FILE_DESCRIPTION)\0"
-      VALUE "FileVersion", "%(FILE_VERSION)\0"
-      VALUE "InternalName", "%(INTERNAL_NAME)\0"
-%(LEGAL_COPYRIGHT_LINE)
-      VALUE "ProductName", "%(PRODUCT_NAME)\0"
-      VALUE "ProductVersion", "%(PRODUCT_VERSION)\0"
-      VALUE "ProductDate", "%(PRODUCT_DATE)\0"
-    END
-
-  END
-
-  BLOCK "VarFileInfo"
-  BEGIN                               //  Language   |    Translation
-    VALUE "Translation", 0x409, 0x4E4 // U.S. English, Windows Multilingual
-  END
-END
-'
-    "
-     stx_libbasic3 packageName_dot_rc
-     stx_libbasic3 generate_packageName_dot_rc
-    "
-
-    "Created: / 08-08-2006 / 19:31:29 / fm"
-    "Modified: / 09-08-2006 / 15:10:57 / fm"
-    "Modified: / 23-08-2006 / 01:32:23 / cg"
-!
-
-vcmake_dot_mak
-    "the template code for the vcmake.bat file"
-
-    ^ 
-'@REM -------
-@REM make using microsoft visual c
-@REM type vcmake, and wait...
-@REM do not edit - automatically generated from ProjectDefinition
-@REM -------
-make.exe -N -f bc.mak USEVC=1 %%1 %%2
-
-%(SUBPROJECT_VCMAKE_CALLS)
-'
-! !
-
-!ProjectDefinition class methodsFor:'loading'!
-
-load
-    "load the project
-     Answer true, if new classes have been installed for this package, 
-     false if the package's classes have been already present."
-
-    ^ self loadAsAutoloaded:false.
-!
-
-loadAsAutoloaded:asAutoloaded
-    "load the project.
-     If asAutoloaded == true, install all new classes as autoloaded.
-     Answer true, if new classes have been installed for this package,
-     false if the package's classes have been already present."
-
-    |newStuffHasBeenLoaded meOrMySecondIncarnation|
-
-    self projectIsLoaded ifTrue:[^ false].
-    thisContext isRecursive ifTrue:[^ false].    "/ avoid endless loops
-
-    self checkPrerequisitesForLoading.
-
-    newStuffHasBeenLoaded := false.
-
-    (self infoPrinting and:[Smalltalk silentLoading not]) ifTrue:[
-        "/ thisContext fullPrintAll.
-        Transcript show:'loading '.
-        asAutoloaded ifTrue:[
-            Transcript show:'as autoloaded '.
-        ].
-        Transcript showCR:self name.
-    ].
-
-    self rememberOverwrittenExtensionMethods.
-
-    self activityNotification:'Executing pre-load action'.
-    self preLoadAction.
-
-    meOrMySecondIncarnation := self.
-
-    Class withoutUpdatingChangesDo:[
-        self activityNotification:'Loading prerequisities'.
-        self loadPreRequisitesAsAutoloaded:asAutoloaded.
-        asAutoloaded ifFalse:[
-            self loadClassLibrary.
-            "/ could have overloaded my first incarnation
-            meOrMySecondIncarnation := (Smalltalk at:(self name)) ? self.
-            meOrMySecondIncarnation ~~ self ifTrue:[
-                meOrMySecondIncarnation fetchSlotsFrom:self.
-            ].
-        ].
-
-        self activityNotification:'Loading extensions'.
-        newStuffHasBeenLoaded := newStuffHasBeenLoaded | meOrMySecondIncarnation loadExtensions.
-        self activityNotification:'Loading classes'.
-        newStuffHasBeenLoaded := newStuffHasBeenLoaded | (meOrMySecondIncarnation loadAllClassesAsAutoloaded:asAutoloaded).
-        self activityNotification:'Loading sub projects'.
-        meOrMySecondIncarnation loadSubProjectsAsAutoloaded:asAutoloaded.
-    ].
-    self activityNotification:'Executing post-load action'.
-    meOrMySecondIncarnation postLoadAction.
-
-    meOrMySecondIncarnation projectIsLoaded:true.
-
-    ^ newStuffHasBeenLoaded
-
-    "Created: / 17-08-2006 / 01:01:41 / cg"
-    "Modified: / 21-11-2006 / 15:07:09 / cg"
-    "Modified: / 30-10-2008 / 08:16:21 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 22-08-2009 / 12:02:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-unloadPackage
-    "unload the project.
-     Fails if there are still instances of any of my classes in the system"
-
-    self projectIsLoaded ifFalse:[^ false].
-    thisContext isRecursive ifTrue:[^ false].
-
-    (self infoPrinting and:[Smalltalk silentLoading not]) ifTrue:[
-        "/ thisContext fullPrintAll.
-        Transcript show:'unloading '; showCR:self name.
-    ].
-
-    self activityNotification:'Executing pre-unload action'.
-    self preUnloadAction.
-
-    self activityNotification:'Restoring original methods'.
-    self restoreOverwrittenExtensionMethods.
-
-    Class withoutUpdatingChangesDo:[
-        self activityNotification:'Unloading sunprojects'.
-        self unloadSubProjects.
-
-        self activityNotification:'Unloading classes'.
-        self unloadClassLibrary.
-        self unloadAllClasses.
-    ].
-    self projectIsLoaded:false.
-    ^ true
-! !
-
-!ProjectDefinition class methodsFor:'mappings'!
+!ProjectDefinition class methodsFor:'file mappings'!
 
 bc_dot_mak_mappings
     |d|
@@ -3130,7 +2885,7 @@
                 replaceAny:':' with:$_
 ! !
 
-!ProjectDefinition class methodsFor:'mappings support'!
+!ProjectDefinition class methodsFor:'file mappings support'!
 
 commonSymbolsFlag
     "only for libraries"
@@ -3678,6 +3433,327 @@
     ]
 ! !
 
+!ProjectDefinition class methodsFor:'file templates'!
+
+bc_dot_mak
+    "answer a template for the bc.mak makefile.
+     Any variable definition %(Variable) will be later replaced by the mapping.
+     $% characters have to be duplicated.
+     Only needed for WIN"
+
+    ^ self subclassResponsibility
+!
+
+bmake_dot_mak
+    "the template code for the bmake.bat file"
+
+    ^ 
+'@REM -------
+@REM make using borland bcc
+@REM type bmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+make.exe -N -f bc.mak %%1 %%2
+
+%(SUBPROJECT_BMAKE_CALLS)
+'
+
+    "Created: / 17-08-2006 / 20:04:14 / cg"
+    "Modified: / 14-09-2006 / 19:46:40 / cg"
+!
+
+classLine_libInit_dot_cc
+
+^'_%(CLASS)_Init(pass,__pRT__,snd);'
+
+    "Created: / 08-08-2006 / 12:51:44 / fm"
+    "Modified: / 08-08-2006 / 15:46:05 / fm"
+!
+
+lcmake_dot_mak
+    "the template code for the lcmake.bat file"
+
+    ^ 
+'@REM -------
+@REM make using lcc compiler
+@REM type lcmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+make.exe -N -f bc.mak USELCC=1 %%1 %%2
+
+%(SUBPROJECT_LCCMAKE_CALLS)
+'
+!
+
+make_dot_proto
+    "the template code for the make.proto file"
+
+    ^ self subclassResponsibility
+!
+
+make_dot_spec
+
+^ 
+'# $','Header','$
+#
+# DO NOT EDIT 
+# automagically generated from the projectDefinition: ',self name,'.
+#
+# Warning: once you modify this file, do not rerun
+# stmkmp or projectDefinition-build again - otherwise, your changes are lost.
+#
+# This file contains specifications which are common to all platforms.
+#
+
+# Do NOT CHANGE THESE DEFINITIONS
+# (otherwise, ST/X will have a hard time to find out the packages location from its packageID,
+#  to find the source code of a class and to find the library for a package)
+MODULE=%(MODULE)
+MODULE_DIR=%(MODULE_DIRECTORY)
+PACKAGE=$(MODULE):$(MODULE_DIR)
+
+
+# Argument(s) to the stc compiler (stc --usage).
+#  -H.         : create header files locally
+#                (if removed, they will be created as common
+#  -Pxxx       : defines the package
+#  -Zxxx       : a prefix for variables within the classLib
+#  -Dxxx       : defines passed to to CC for inline C-code
+#  -Ixxx       : include path passed to CC for inline C-code
+#  +optspace   : optimized for space
+#  +optspace2  : optimized more for space
+#  +optspace3  : optimized even more for space
+#  +optinline  : generate inline code for some ST constructs
+#  +inlineNew  : additionally inline new
+#  +inlineMath : additionally inline some floatPnt math stuff
+#
+# ********** OPTIONAL: MODIFY the next line(s) ***
+# STCLOCALOPTIMIZATIONS=+optinline +inlineNew
+# STCLOCALOPTIMIZATIONS=+optspace3
+STCLOCALOPTIMIZATIONS=%(STCOPTIMIZATIONOPTIONS)
+
+
+# Argument(s) to the stc compiler (stc --usage).
+#  -warn            : no warnings
+#  -warnNonStandard : no warnings about ST/X extensions
+#  -warnEOLComments : no warnings about EOL comment extension
+#  -warnPrivacy     : no warnings about privateClass extension
+#
+# ********** OPTIONAL: MODIFY the next line(s) ***
+# STCWARNINGS=-warn
+# STCWARNINGS=-warnNonStandard
+# STCWARNINGS=-warnEOLComments
+STCWARNINGS=%(STCWARNINGOPTIONS)
+
+%(OBJECTS)
+'
+
+    "Created: / 08-08-2006 / 19:31:29 / fm"
+    "Modified: / 09-08-2006 / 15:10:57 / fm"
+    "Modified: / 30-08-2006 / 19:07:26 / cg"
+!
+
+objectLine_make_dot_spec
+
+    ^'    $(OUTDIR)%(CLASSFILE).$(O) \'
+
+    "Created: / 08-08-2006 / 20:16:46 / fm"
+    "Modified: / 23-08-2006 / 11:11:38 / cg"
+!
+
+packageName_dot_rc
+    "the template code for the <libName>.rc file.
+     Only used for WIN"
+
+^ 
+'//
+// DO NOT EDIT 
+// automagically generated from the projectDefinition: ',self name,'.
+//
+VS_VERSION_INFO VERSIONINFO
+  FILEVERSION     %(FILE_VERSION_COMMASEPARATED)
+  PRODUCTVERSION  %(PRODUCT_VERSION_COMMASEPARATED)
+  FILEFLAGSMASK   VS_FF_DEBUG | VS_FF_PRERELEASE
+  FILEFLAGS       VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
+  FILEOS          VOS_NT_WINDOWS32
+  FILETYPE        %(FILETYPE)
+  FILESUBTYPE     VS_USER_DEFINED
+
+BEGIN
+  BLOCK "StringFileInfo"
+  BEGIN
+    BLOCK "040904E4"
+    BEGIN
+      VALUE "CompanyName", "%(COMPANY_NAME)\0"
+      VALUE "FileDescription", "%(FILE_DESCRIPTION)\0"
+      VALUE "FileVersion", "%(FILE_VERSION)\0"
+      VALUE "InternalName", "%(INTERNAL_NAME)\0"
+%(LEGAL_COPYRIGHT_LINE)
+      VALUE "ProductName", "%(PRODUCT_NAME)\0"
+      VALUE "ProductVersion", "%(PRODUCT_VERSION)\0"
+      VALUE "ProductDate", "%(PRODUCT_DATE)\0"
+    END
+
+  END
+
+  BLOCK "VarFileInfo"
+  BEGIN                               //  Language   |    Translation
+    VALUE "Translation", 0x409, 0x4E4 // U.S. English, Windows Multilingual
+  END
+END
+'
+    "
+     stx_libbasic3 packageName_dot_rc
+     stx_libbasic3 generate_packageName_dot_rc
+    "
+
+    "Created: / 08-08-2006 / 19:31:29 / fm"
+    "Modified: / 09-08-2006 / 15:10:57 / fm"
+    "Modified: / 23-08-2006 / 01:32:23 / cg"
+!
+
+vcmake_dot_mak
+    "the template code for the vcmake.bat file"
+
+    ^ 
+'@REM -------
+@REM make using microsoft visual c
+@REM type vcmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+make.exe -N -f bc.mak USEVC=1 %%1 %%2
+
+%(SUBPROJECT_VCMAKE_CALLS)
+'
+! !
+
+!ProjectDefinition class methodsFor:'loading'!
+
+ensureFullyLoaded
+    "ensure that all classes and extensions are loaded properly.
+     This is normally no problem for compiled classLibs - however, if a package
+     has only be installedAsAutoloaded, some classes might want to ensure that
+     when being loaded themself."
+
+    self hasAllExtensionsLoaded ifFalse:[
+        self halt.
+    ].
+    self hasAllClassesFullyLoaded ifFalse:[
+        self hasAllClassesLoaded ifFalse:[
+            self halt
+        ].
+        self classes do:[:cls | cls load ].
+    ].
+
+    "
+     stx_libbasic ensureFullyLoaded
+    "
+!
+
+load
+    "load the project
+     Answer true, if new classes have been installed for this package, 
+     false if the package's classes have been already present."
+
+    ^ self loadAsAutoloaded:false.
+!
+
+loadAsAutoloaded:asAutoloaded
+    "load the project.
+     If asAutoloaded == true, install all new classes as autoloaded.
+     Answer true, if new classes have been installed for this package,
+     false if the package's classes have been already present."
+
+    |newStuffHasBeenLoaded meOrMySecondIncarnation|
+
+    self projectIsLoaded ifTrue:[^ false].
+    thisContext isRecursive ifTrue:[^ false].    "/ avoid endless loops
+
+    self checkPrerequisitesForLoading.
+
+    newStuffHasBeenLoaded := false.
+
+    (self infoPrinting and:[Smalltalk silentLoading not]) ifTrue:[
+        "/ thisContext fullPrintAll.
+        Transcript show:'loading '.
+        asAutoloaded ifTrue:[
+            Transcript show:'as autoloaded '.
+        ].
+        Transcript showCR:self name.
+    ].
+
+    self rememberOverwrittenExtensionMethods.
+
+    self activityNotification:'Executing pre-load action'.
+    self preLoadAction.
+
+    meOrMySecondIncarnation := self.
+
+    Class withoutUpdatingChangesDo:[
+        self activityNotification:'Loading prerequisities'.
+        self loadPreRequisitesAsAutoloaded:asAutoloaded.
+        asAutoloaded ifFalse:[
+            self loadClassLibrary.
+            "/ could have overloaded my first incarnation
+            meOrMySecondIncarnation := (Smalltalk at:(self name)) ? self.
+            meOrMySecondIncarnation ~~ self ifTrue:[
+                meOrMySecondIncarnation fetchSlotsFrom:self.
+            ].
+        ].
+
+        self activityNotification:'Loading extensions'.
+        newStuffHasBeenLoaded := newStuffHasBeenLoaded | meOrMySecondIncarnation loadExtensions.
+        self activityNotification:'Loading classes'.
+        newStuffHasBeenLoaded := newStuffHasBeenLoaded | (meOrMySecondIncarnation loadAllClassesAsAutoloaded:asAutoloaded).
+        self activityNotification:'Loading sub projects'.
+        meOrMySecondIncarnation loadSubProjectsAsAutoloaded:asAutoloaded.
+    ].
+    self activityNotification:'Executing post-load action'.
+
+    "/ mhmh - already done for dll-loaded packages
+    "/ meOrMySecondIncarnation initializeAllClasses.
+    meOrMySecondIncarnation postLoadAction.
+
+    meOrMySecondIncarnation projectIsLoaded:true.
+
+    ^ newStuffHasBeenLoaded
+
+    "Created: / 17-08-2006 / 01:01:41 / cg"
+    "Modified: / 21-11-2006 / 15:07:09 / cg"
+    "Modified: / 30-10-2008 / 08:16:21 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 22-08-2009 / 12:02:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+unloadPackage
+    "unload the project.
+     Fails if there are still instances of any of my classes in the system"
+
+    self projectIsLoaded ifFalse:[^ false].
+    thisContext isRecursive ifTrue:[^ false].
+
+    (self infoPrinting and:[Smalltalk silentLoading not]) ifTrue:[
+        "/ thisContext fullPrintAll.
+        Transcript show:'unloading '; showCR:self name.
+    ].
+
+    self activityNotification:'Executing pre-unload action'.
+    self preUnloadAction.
+
+    self activityNotification:'Restoring original methods'.
+    self restoreOverwrittenExtensionMethods.
+
+    Class withoutUpdatingChangesDo:[
+        self activityNotification:'Unloading sunprojects'.
+        self unloadSubProjects.
+
+        self activityNotification:'Unloading classes'.
+        self unloadClassLibrary.
+        self unloadAllClasses.
+    ].
+    self projectIsLoaded:false.
+    ^ true
+! !
+
 !ProjectDefinition class methodsFor:'misc ui support'!
 
 iconInBrowserSymbol
@@ -3694,6 +3770,37 @@
 
 !ProjectDefinition class methodsFor:'private'!
 
+additionalClassAttributesFor: aClass
+    "Answers additional set of class attributes for given class
+     Individual project definitions may override this method, but
+     overriding method should always merge its attributes with result
+     of 'super additionalClassAttributesFor: aClass'.
+
+     Here, we add #autoload attributes to all test cases and
+     test resources, as they are not neccessary for the package
+     and should not be compiled (because of unwanted dependency
+     on stx:goodies/sunit package)
+    "
+
+    (aClass inheritsFrom: TestCase) ifTrue:[^#(autoload)].
+    (aClass inheritsFrom: TestResource) ifTrue:[^#(autoload)].
+
+    "No additional attributes"
+    ^#()
+
+    "
+        stx_libbasic additionalClassAttributesFor: Object 
+        stx_libtool additionalClassAttributesFor: Tools::NavigationHistoryTests
+        stx_goodies_sunit additionalClassAttributesFor: TestCase 
+
+
+        stx_libtool classNamesAndAttributes_code_ignoreOldEntries:true ignoreOldDefinition: true
+
+    "
+
+    "Created: / 26-10-2009 / 12:54:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 checkIfClassesArePresent
     "check if all classes defined by this project are present and
      offer a dialog to abort the current operation if not"
@@ -3733,12 +3840,48 @@
     ^ true
 !
 
+classNamesAndAttributesAsSpecArray
+    "given a classNamesAndAttributes array, make this a spec array (array of arrays).  
+     This decompresses class-name entries into a one-element array for easier processing"
+
+    ^ self classNamesAndAttributes
+        collect:[:entry |
+            entry isArray ifTrue:[
+                entry first isSymbol ifTrue:[
+                    entry
+                ] ifFalse:[
+                    (Array with:entry first asSymbol) , (entry copyFrom:2)
+                ].
+            ] ifFalse:[
+                Array with:entry asSymbol.
+            ]].
+
+    "Created: / 19-02-2007 / 16:11:53 / cg"
+!
+
 classNamesAndAttributesDo: aBlock
     self namesAndAttributesIn:(self classNamesAndAttributes) do: aBlock
 
     "Modified: / 22-08-2006 / 18:20:21 / cg"
 !
 
+classNamesAndAttributesFromSpecArray:aSpecArray
+    "given a spec array (array of arrays), make this a classNamesAndAttributes array
+     as stored literally in the method.
+     This compresses single element array-elements into plain names
+     (to save code in the compiled binaries)"
+
+    ^ aSpecArray
+        collect:[:entry |
+            (entry isArray and:[entry size == 1]) ifTrue:[
+                entry first
+            ] ifFalse:[
+                entry
+            ]].
+
+    "Created: / 19-02-2007 / 16:12:32 / cg"
+!
+
 compile:someCode categorized:category
     Class packageQuerySignal 
         answer:self package
@@ -4091,13 +4234,17 @@
     typeOrNil = GUIApplicationType ifTrue:[
         self compile:'isGUIApplication\    ^ true' withCRs
              categorized:'description'.
+        self superclass: ApplicationDefinition.
         ^ self
     ].
     typeOrNil = NonGUIApplicationType ifTrue:[
         self compile:'isGUIApplication\    ^ false' withCRs
              categorized:'description'.
+        self superclass: ApplicationDefinition.
         ^ self
-    ].
+    ].                
+    self theMetaclass removeSelector: #isGUIApplication.
+    self superclass: LibraryDefinition.
     ^ self.
 
     "Created: / 23-08-2006 / 14:26:10 / cg"
@@ -4245,6 +4392,7 @@
     classNamesToLoad := OrderedCollection new.
     classNamesToAutoload := OrderedCollection new.
 
+    hasClassesToLoad := false.
     self classNamesAndAttributesDo:[:eachClassname :eachAttributes | |eachClassnameSym isAutoload cls|
         eachClassnameSym := eachClassname asSymbol.
         isAutoload := asAutoloaded or:[eachAttributes includes:#autoload].
@@ -4334,7 +4482,7 @@
 
         loadedClasses do:[:eachLoadedClass |
             "do not initialize, if initialize method is inherited"
-            (eachLoadedClass theMetaclass implements:#initialize) ifTrue:[
+            (eachLoadedClass theMetaclass includesSelector:#initialize) ifTrue:[
                 eachLoadedClass initialize
             ].
         ].
@@ -4423,6 +4571,8 @@
 !ProjectDefinition class methodsFor:'private-prerequisites'!
 
 addReferencesToClassesFromGlobalsIn:aSetOfClasses to:usedClassReasons
+    "helper for searchForPreRequisites"
+
     aSetOfClasses
         do:[:aClass |
             self
@@ -4442,6 +4592,8 @@
 !
 
 addReferencesToClassesFromGlobalsInMethods:someMethods to:usedClassReasons
+    "helper for searchForPreRequisites"
+
     someMethods do:[:method |
         |resources|
 
@@ -4536,60 +4688,128 @@
 
 !ProjectDefinition class methodsFor:'queries'!
 
-definitionClassForPackage:aPackageID
-    ^ self definitionClassForPackage:aPackageID createIfAbsent:false
-
-    "Modified: / 17-08-2006 / 14:33:35 / cg"
-!
-
-definitionClassForPackage:aPackageID createIfAbsent:doCreateIfAbsent
-    ^ self definitionClassForPackage:aPackageID createIfAbsent:doCreateIfAbsent projectType:nil
-
-    "Modified: / 23-08-2006 / 14:29:15 / cg"
-!
-
-definitionClassForPackage: aPackageID createIfAbsent: doCreateIfAbsent projectType:typeOrNil
-    |packageDefinitionClassName class|
-
-    packageDefinitionClassName := ProjectDefinition initialClassNameForDefinitionOf:aPackageID.
-    class := Smalltalk classNamed:packageDefinitionClassName.
-    class isNil ifTrue:[
-        doCreateIfAbsent ifTrue:[
-            class := self newForPackage:aPackageID.
-            "setup before prerequisites are defined"
-            class setupForType:typeOrNil.
-        ].
-    ] ifFalse:[
-        typeOrNil notNil ifTrue:[
-            class setupForType:typeOrNil.
+allClassNames          
+    ^ self classNamesForWhich:[:nm :attr | true ].
+!
+
+autoloaded_classNames          
+    ^ self classNamesForWhich:[:nm :attr | attr notEmptyOrNil and:[attr includes:#autoload]].
+
+    "Modified: / 07-08-2006 / 21:25:25 / fm"
+    "Created: / 30-08-2007 / 18:48:09 / cg"
+!
+
+classNames          
+    "answer an array containing all the class names of the project's classes"
+
+    ^ self classNamesAndAttributesAsSpecArray collect:[:entry | entry first].
+
+    "
+     stx_libhtml classNames
+     stx_libhtml classNamesAndAttributesAsSpecArray
+    "
+!
+
+classNamesForWhich:aBlock          
+    "a correponding method with real names is generated in my subclasses"
+
+    |coll|
+
+    coll := OrderedCollection new.
+    self classNamesAndAttributesDo:[:nm :attributes |
+        (aBlock value:nm value:attributes) ifTrue:[
+            coll add:nm.
         ].
     ].
-    ^ class
-
-    "Created: / 23-08-2006 / 14:29:21 / cg"
-    "Modified: / 23-08-2006 / 15:35:26 / cg"
-!
-
-definitionClassForPackage:newProjectID projectType:typeOrNil createIfAbsent:createIfAbsent
-    ^ (self definitionClassForType:typeOrNil)
-        definitionClassForPackage:newProjectID 
-        createIfAbsent:createIfAbsent
-        projectType:typeOrNil
-
-    "Created: / 23-08-2006 / 14:28:53 / cg"
-!
-
-definitionClassForType: type
-    "answer the class that describes a give project type"
-
-    (type = LibraryType) ifTrue:[ ^ LibraryDefinition ].
-    (type = GUIApplicationType) ifTrue:[ ^ ApplicationDefinition ].
-    (type = NonGUIApplicationType) ifTrue:[ ^ ApplicationDefinition ].
-    (type = 'Application') ifTrue:[ ^ ApplicationDefinition ].
-    self error:'unknown project type'.
-
-    "Created: / 17-08-2006 / 14:46:28 / cg"
-    "Modified: / 23-08-2006 / 13:49:27 / cg"
+    ^ coll
+
+    "Created: / 07-08-2006 / 19:02:57 / fm"
+    "Modified: / 07-08-2006 / 21:25:25 / fm"
+    "Modified: / 17-08-2006 / 20:47:20 / cg"
+!
+
+classes
+    "list my classes.
+     Project must be loaded - otherwise an error is reported here.
+     Use #classNames if you are only interested in the names"
+
+    ^ self classNames collect:[:nm | Smalltalk at:nm ifAbsent:[self error:'Missing class']]
+
+    "
+     stx_libbasic3 classNames
+     stx_libbasic3 classes
+    "
+!
+
+compiled_classNames          
+    ^ self classNamesForWhich:[:nm :attr | attr isEmptyOrNil or:[(attr includes:#autoload) not]].
+
+    "Created: / 07-08-2006 / 19:02:57 / fm"
+    "Modified: / 07-08-2006 / 21:25:25 / fm"
+    "Modified: / 21-08-2006 / 18:48:31 / cg"
+!
+
+compiled_classNamesForPlatform
+    "answer the classes to be compiled only for the current platformName"
+
+    ^ self compiled_classNamesForPlatform:OperatingSystem platformName
+!
+
+compiled_classNamesForPlatform:platformName
+    "answer the classes to be compiled only for platformName
+     platformName is one of #unix, #win32 (OperatingSystem platformName)"
+
+    ^ self 
+        classNamesForWhich:[:nm :attr | 
+            (attr includes:#autoload) not and:[attr includes:platformName]
+        ].
+
+    "Created: / 07-08-2006 / 19:02:57 / fm"
+    "Modified: / 07-08-2006 / 21:25:25 / fm"
+    "Modified: / 09-10-2006 / 13:30:08 / cg"
+!
+
+compiled_classNames_common
+    "classes to be compiled for any platform"
+
+    ^ self 
+        classNamesForWhich:[:nm :attr |
+            attr isEmptyOrNil
+        ].
+
+    "Created: / 18-08-2006 / 13:37:51 / cg"
+!
+
+compiled_classNames_unix
+    "class, only to be compiled under unix"
+    
+    ^ self compiled_classNamesForPlatform:#unix.
+
+    "Created: / 18-08-2006 / 13:37:51 / cg"
+!
+
+compiled_classNames_windows
+    "class, only to be compiled under windows"
+    
+    ^ self compiled_classNamesForPlatform:#win32.
+
+    "Created: / 18-08-2006 / 13:37:56 / cg"
+!
+
+extensionMethods
+    "list my extension methods.
+     Project must be loaded - otherwise an error is reported here.
+     Use #extensionMethodsNames if you are only interested in the names"
+
+    ^ self extensionMethodNames 
+        pairWiseCollect:[:className :selector |
+            (Smalltalk classNamed:className) compiledMethodAt:selector.
+        ].
+
+    "
+     stx_libbasic2 extensionMethodNames
+     stx_libbasic2 extensionMethods
+    "
 !
 
 hasAllClassesFullyLoaded
@@ -4697,10 +4917,34 @@
     "Created: / 14-09-2006 / 14:19:35 / cg"
 !
 
+hasPostLoadAction
+    "/ true if postLoadAction has been redefined
+    ^ (self class whichClassIncludesSelector:#postLoadAction) theNonMetaclass isAbstract not
+!
+
+hasPostUnloadAction
+    "/ true if postUnloadAction has been redefined
+    ^ (self class whichClassIncludesSelector:#postUnloadAction) theNonMetaclass isAbstract not
+!
+
+hasPreLoadAction
+    "/ true if preLoadAction has been redefined
+    ^ (self class whichClassIncludesSelector:#preLoadAction) theNonMetaclass isAbstract not
+!
+
+hasPreUnloadAction
+    "/ true if preUnloadAction has been redefined
+    ^ (self class whichClassIncludesSelector:#preUnloadAction) theNonMetaclass isAbstract not
+!
+
 isFullyLoaded
     ^ self hasAllCompiledClassesFullyLoaded and:[self hasAllClassesLoaded and:[self hasAllExtensionsLoaded]]
 
     "Created: / 24-10-2006 / 23:52:23 / cg"
+!
+
+projectType
+    ^ self subclassResponsibility
 ! !
 
 !ProjectDefinition class methodsFor:'queries-privacy'!
@@ -4751,6 +4995,10 @@
 
 !ProjectDefinition class methodsFor:'testing'!
 
+isAbstract
+    ^ self == ProjectDefinition
+!
+
 isApplicationDefinition
     ^ false
 
@@ -4758,6 +5006,12 @@
     "Modified: / 20-09-2006 / 14:59:56 / cg"
 !
 
+isConsoleApplication
+    ^ false
+
+    "Created: / 20-09-2006 / 14:59:49 / cg"
+!
+
 isGUIApplication
     ^ false
 
@@ -4783,15 +5037,12 @@
 !ProjectDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ProjectDefinition.st 10474 2009-10-26 21:51:17Z vranyj1 $'
+    ^ '$Id: ProjectDefinition.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.258 2009/10/19 20:12:52 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: ProjectDefinition.st 10474 2009-10-26 21:51:17Z vranyj1 $'
+    ^ '$Id: ProjectDefinition.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 ProjectDefinition initialize!
+
--- a/Query.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Query.st	Thu Nov 05 14:41:30 2009 +0000
@@ -272,12 +272,13 @@
 !Query class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Query.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Query.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Query.st,v 1.13 2009/10/01 13:44:05 cg Exp §'
+    ^ '$Id: Query.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 Query initialize!
 
+
--- a/QuerySignal.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/QuerySignal.st	Thu Nov 05 14:41:30 2009 +0000
@@ -504,10 +504,11 @@
 !QuerySignal class methodsFor:'documentation'!
 
 version
-    ^ '$Id: QuerySignal.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: QuerySignal.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/QuerySignal.st,v 1.44 2009/10/01 07:27:33 cg Exp §'
+    ^ '$Id: QuerySignal.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/ReadStream.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/ReadStream.st	Thu Nov 05 14:41:30 2009 +0000
@@ -828,10 +828,11 @@
 !ReadStream class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ReadStream.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: ReadStream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ReadStream.st,v 1.63 2009/10/08 08:43:59 cg Exp §'
+    ^ '$Id: ReadStream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/SHA1Stream.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/SHA1Stream.st	Thu Nov 05 14:41:30 2009 +0000
@@ -682,12 +682,13 @@
 !SHA1Stream class methodsFor:'documentation'!
 
 version
-    ^ '$Id: SHA1Stream.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: SHA1Stream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SHA1Stream.st,v 1.16 2009/10/14 05:17:40 cg Exp §'
+    ^ '$Id: SHA1Stream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 SHA1Stream initialize!
 
+
--- a/SequenceableCollection.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/SequenceableCollection.st	Thu Nov 05 14:41:30 2009 +0000
@@ -638,7 +638,6 @@
     ^ self replaceFrom:start to:stop with:anArray startingAt:repStart
 ! !
 
-
 !SequenceableCollection methodsFor:'accessing'!
 
 after:anObject
@@ -3783,7 +3782,7 @@
     startIndex := 1.
     endIndex := sz.
 
-    [(startIndex < endIndex) and:[aCheckBlock value:(self at:startIndex)]] whileTrue:[
+    [(startIndex <= endIndex) and:[aCheckBlock value:(self at:startIndex)]] whileTrue:[
         startIndex := startIndex + 1
     ].
     [(endIndex > 1) and:[aCheckBlock value:(self at:endIndex)]] whileTrue:[
@@ -3798,7 +3797,8 @@
     ^ self copyFrom:startIndex to:endIndex
 
     "
-     '    foo    ' trimForWhich:[:ch | ch isSeparator]
+     '    foo    ' trimForWhich:[:ch | ch isSeparator]  
+     '           ' trimForWhich:[:ch | ch isSeparator]  
      #(0 0 0 1 2 3 0 0 0) trimForWhich:[:e | e = 0]
     "
 !
@@ -3974,33 +3974,6 @@
     "
 !
 
-collect:aBlock as:aClass
-    "like collect, but use an instance of aClass to collect the results.
-     Also avoids the need for an extra intermediate collection which is created with
-     the standard coding: 'self asXXXX collect:[...]"
-
-    |newCollection
-     sz  "{ Class:SmallInteger }"|
-
-    sz := self size.
-    newCollection := (aClass new:sz) grow:sz.
-    newCollection isSequenceable ifTrue:[
-        1 to:sz do:[:index |
-            newCollection at:index put:(aBlock value:(self at:index)).
-        ].
-    ] ifFalse:[
-        1 to:sz do:[:index |
-            newCollection add:(aBlock value:(self at:index)).
-        ].
-    ].
-    ^ newCollection
-
-    "
-     #(one two three four five six) collect:[:element | element asUppercase] as:OrderedCollection
-     'abcdef' collect:[:char | char digitValue] as:ByteArray
-    "
-!
-
 do:aBlock
     "evaluate the argument, aBlock for every element in the collection."
 
@@ -4462,7 +4435,11 @@
 pairWiseDo:aTwoArgBlock
     "evaluate the argument, aTwoArgBlock for every group of 2 elements in the collection.
      An error will be reported, if the number of elements in the receiver 
-     is not a multiple of 2."
+     is not a multiple of 2.
+     CONFUSION ATTACK: 
+        this is different from pairWiseDo:.
+        but the Squeak-pairsDo: does the same as our pairWiseDo: 
+        (sigh: but we were first, so they should have adapted...)"
 
     ^ self inGroupsOf:2 do:aTwoArgBlock
 
@@ -5875,7 +5852,6 @@
     "Created: 14.2.1997 / 16:13:03 / cg"
 ! !
 
-
 !SequenceableCollection methodsFor:'searching'!
 
 detect:aBlock startingAt:startIndex
@@ -7756,12 +7732,13 @@
 !SequenceableCollection class methodsFor:'documentation'!
 
 version
-    ^ '$Id: SequenceableCollection.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: SequenceableCollection.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SequenceableCollection.st,v 1.286 2009/10/19 10:20:21 cg Exp §'
+    ^ '$Id: SequenceableCollection.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 SequenceableCollection initialize!
 
+
--- a/Set.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Set.st	Thu Nov 05 14:41:30 2009 +0000
@@ -227,6 +227,19 @@
     "
      #(1 2 3 4 5 6 7) asSet copyWithoutAll:#(3 5 7 9)
     "
+!
+
+like:anObject
+    "Answer an object in the receiver that is equal to anObject,
+     nil if no such object is found. 
+     Relies heavily on hash properties (i.e. that two object's hashes are equal
+     if the two object compare equal)"
+
+    ^ self elementAt:anObject ifAbsent:[ nil ]
+
+    "
+     (Set withAll:#(10.0 20.0 30.0 40.0)) like:20
+    "
 ! !
 
 !Set methodsFor:'accessing'!
@@ -249,8 +262,7 @@
      This may seem confusing at first - however, it is useful with
      non-identitysets, to find an existing element, for a 
      given equal (but not identical) object.
-     This is the same functionality as provided by the goodies/KeyedSet
-     goody."
+     This is the same functionality as provided by the goodies/KeyedSet goody."
 
     ^ self elementAt:anObject ifAbsent:[^ self errorNotFound].
 
@@ -1121,7 +1133,12 @@
 !Set class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Set.st 10447 2009-06-14 13:09:55Z vranyj1 $'
+    ^ '$Id: Set.st 10477 2009-11-05 14:41:30Z vranyj1 $'
+!
+
+version_CVS
+    ^ '$Id: Set.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 Set initialize!
+
--- a/SharedPool.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/SharedPool.st	Thu Nov 05 14:41:30 2009 +0000
@@ -147,10 +147,11 @@
 !SharedPool class methodsFor:'documentation'!
 
 version
-    ^ '$Id: SharedPool.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: SharedPool.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SharedPool.st,v 1.8 2009/10/12 19:09:14 cg Exp §'
+    ^ '$Id: SharedPool.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/Signal.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Signal.st	Thu Nov 05 14:41:30 2009 +0000
@@ -982,10 +982,11 @@
 !Signal class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Signal.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Signal.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Signal.st,v 1.108 2009/10/01 07:38:26 cg Exp §'
+    ^ '$Id: Signal.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/SignalSet.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/SignalSet.st	Thu Nov 05 14:41:30 2009 +0000
@@ -332,10 +332,11 @@
 !SignalSet class methodsFor:'documentation'!
 
 version
-    ^ '$Id: SignalSet.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: SignalSet.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SignalSet.st,v 1.45 2009/10/01 07:38:40 cg Exp §'
+    ^ '$Id: SignalSet.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/Smalltalk.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Smalltalk.st	Thu Nov 05 14:41:30 2009 +0000
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 1988 by Claus Gittinger
-	      All Rights Reserved
+              All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -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
 "
 ! !
 
@@ -222,8 +222,8 @@
      right after startup, ususally immediately followed by Smalltalk>>start.
      [with error handling, via the initializeSystem]
      Notice:
-	this is not called when an image is restarted; in this
-	case the show starts in Smalltalk>>restart."
+        this is not called when an image is restarted; in this
+        case the show starts in Smalltalk>>restart."
 
     "/
     "/ start catching SIGSEGV and SIGBUS
@@ -254,12 +254,12 @@
 
     Compiler := ByteCodeCompiler.
     Compiler isNil ifTrue:[
-	"
-	 ByteCodeCompiler is not in the system (i.e. has not been linked in)
-	 this allows at least immediate evaluations for runtime systems without compiler
-	 NOTICE: a parser is always needed, otherwise we cannot read resource files etc.
-	"
-	Compiler := Parser
+        "
+         ByteCodeCompiler is not in the system (i.e. has not been linked in)
+         this allows at least immediate evaluations for runtime systems without compiler
+         NOTICE: a parser is always needed, otherwise we cannot read resource files etc.
+        "
+        Compiler := Parser
     ].
 
     "/
@@ -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,41 @@
 
 
     "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)
+        ].
+        langString := langString asLowercase.
+        terrString := terrString asLowercase.
+        (langString = 'c' or:[terrString = 'c']) ifTrue:[
+            ('Smalltalk [info]: ignoring wrong LANG setting (',langString,'_',terrString,') - using english') infoPrintCR.
+        ] ifFalse:[
+            Language := langString asSymbol.
+            LanguageTerritory := terrString asSymbol
+        ]
     ].
 
     "
@@ -378,7 +384,7 @@
     Stderr := NonPositionableExternalStream forStderr.
     Stdin := NonPositionableExternalStream forStdin.
     PrinterStream notNil ifTrue:[
-	Printer := PrinterStream defaultPrinter.
+        Printer := PrinterStream defaultPrinter.
     ].
     Transcript := Stderr
 
@@ -395,13 +401,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 +418,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.
     ].
 
     "
@@ -499,17 +505,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"
@@ -522,12 +528,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.
@@ -554,8 +560,8 @@
      This one is the very first entry into the smalltalk world,
      right after startup, ususally immediately followed by Smalltalk>>start.
      Notice:
-	this is not called when an image is restarted; in this
-	case the show starts in Smalltalk>>restart."
+        this is not called when an image is restarted; in this
+        case the show starts in Smalltalk>>restart."
 
     |idx|
 
@@ -566,7 +572,7 @@
     AbstractOperatingSystem initializeConcreteClass.
 
     CommandLineArguments isNil ifTrue:[
-	CommandLineArguments := #('stx').
+        CommandLineArguments := #('stx').
     ].
     CommandLine := CommandLineArguments copy.
     CommandLineArguments := CommandLineArguments asOrderedCollection.
@@ -577,39 +583,39 @@
     DebuggingStandAlone := false.
 
     StandAlone ifTrue:[
-	InfoPrinting := false.
-	ObjectMemory infoPrinting:false.
-
-	idx := CommandLineArguments indexOf:'--debug'.
-	idx ~~ 0 ifTrue:[
-	    DebuggingStandAlone := true.
-	].
-	DebuggingStandAlone ifTrue:[
-	    Inspector := MiniInspector.
-	    Debugger := MiniDebugger.
-	].
+        InfoPrinting := false.
+        ObjectMemory infoPrinting:false.
+
+        idx := CommandLineArguments indexOf:'--debug'.
+        idx ~~ 0 ifTrue:[
+            DebuggingStandAlone := true.
+        ].
+        DebuggingStandAlone ifTrue:[
+            Inspector := MiniInspector.
+            Debugger := MiniDebugger.
+        ].
     ] ifFalse:[
-	"/
-	"/ define low-level debugging tools - graphical classes are not prepared yet
-	"/ to handle things.
-	"/ This will bring us into the MiniDebugger when an error occurs during startup.
-	"/
-	Inspector := MiniInspector.
-	Debugger := MiniDebugger.
+        "/
+        "/ define low-level debugging tools - graphical classes are not prepared yet
+        "/ to handle things.
+        "/ This will bring us into the MiniDebugger when an error occurs during startup.
+        "/
+        Inspector := MiniInspector.
+        Debugger := MiniDebugger.
     ].
 
     Error handle:[:ex |
-	StandAlone ifTrue:[
-	    DebuggingStandAlone ifFalse:[
-		'Startup Error - use --debug command line argument for more info' errorPrintCR.
-		Smalltalk exit:1.
-	    ].
-	    'Startup Error' errorPrintCR.
-	    thisContext fullPrintAll.
-	].
-	ex reject.
+        StandAlone ifTrue:[
+            DebuggingStandAlone ifFalse:[
+                'Startup Error - use --debug command line argument for more info' errorPrintCR.
+                Smalltalk exit:1.
+            ].
+            'Startup Error' errorPrintCR.
+            thisContext fullPrintAll.
+        ].
+        ex reject.
     ] do:[
-	self basicInitializeSystem
+        self basicInitializeSystem
     ].
 !
 
@@ -661,6 +667,10 @@
 
 !
 
+hasClassNamed:aNameStringOrSymbol
+    ^ (self classNamed:aNameStringOrSymbol) notNil
+!
+
 isMorphic
     ^ false
 !
@@ -685,27 +695,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.
@@ -713,6 +723,19 @@
 
 !
 
+removeClassNamed: aName
+    "Invoked from fileouts:  if there is currently a class in the system named aName, then remove it.  
+     If anything untoward happens, report it in the Transcript.  "
+
+    | oldClass |
+
+    (oldClass := self at: aName asSymbol ifAbsent: [nil]) isNil ifTrue:[
+        Transcript showCR: 'Removal of class named ', aName, ' ignored because it does not exist.'.
+        ^ self
+    ].
+    oldClass removeFromSystem
+!
+
 renameClassNamed:oldName as:newName
     self renameClass:(self at:oldName) to:newName
 !
@@ -726,9 +749,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
+        ]
     ].
 !
 
@@ -739,20 +762,20 @@
 
     platformName := Screen current platformName.
     platformName = #WIN32 ifTrue:[
-	^ #Win32.
+        ^ #Win32.
     ].
     ^ platformName.
 
     "
      Smalltalk windowSystemName
-				-> 'Win32'
+                                -> 'Win32'
     "
 ! !
 
 !Smalltalk class methodsFor:'Compatibility-V''Age'!
 
 allClassesImplementing:aSelector
-    ^ self allClassesForWhich:[:cls | cls implements:aSelector].
+    ^ self allClassesForWhich:[:cls | cls includesSelector:aSelector].
 
     "Modified: / 10-08-2006 / 12:12:17 / cg"
 !
@@ -766,10 +789,10 @@
 
 declarePoolDictionary:poolDictionaryName
     SharedPool subclass:(poolDictionaryName asSymbol)
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	category:nil
+        instanceVariableNames:''
+        classVariableNames:''
+        poolDictionaries:''
+        category:nil
 ! !
 
 !Smalltalk class methodsFor:'Compatibility-VW5.4'!
@@ -791,17 +814,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.
 !
@@ -866,7 +889,7 @@
      the evaluation of aBlock."
 
     (self includesKey:aKey) ifTrue:[
-	^ self at:aKey
+        ^ self at:aKey
     ].
     ^ aBlock value
 
@@ -882,7 +905,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
 
@@ -903,23 +926,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.
 "/
@@ -951,7 +974,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
 
@@ -971,16 +994,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.
 
@@ -1040,9 +1063,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'
     ]
 
     "
@@ -1127,14 +1150,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).
+        ]
     ].
 
     "
@@ -1151,7 +1174,7 @@
 
 flushCachedClass:aClass
     CachedClasses notNil ifTrue:[
-	CachedClasses remove:aClass ifAbsent:[]
+        CachedClasses remove:aClass ifAbsent:[]
     ]
 !
 
@@ -1176,31 +1199,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"
@@ -1209,25 +1232,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
     ].
 
 
@@ -1256,31 +1279,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"
@@ -1301,24 +1324,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.
@@ -1329,8 +1352,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
@@ -1339,42 +1362,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.
@@ -1394,32 +1417,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 |
@@ -1442,85 +1465,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).
@@ -1586,7 +1609,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__();
@@ -1631,9 +1654,9 @@
     char *msg;
 
     if (__isString(aMessage))
-	msg = (char *) __stringVal(aMessage);
+        msg = (char *) __stringVal(aMessage);
     else
-	msg = "fatalAbort";
+        msg = "fatalAbort";
 
     __fatal0(__context, msg);
     /* NEVER RETURNS */
@@ -1665,11 +1688,13 @@
     |allCategories|
 
     allCategories := Set new.
-    Smalltalk allClassesDo:[:cls | |category|
-	category := cls category.
-	category notNil ifTrue:[
-	    allCategories add:category.
-	].
+    Smalltalk allClassesDo:[:cls | 
+        |category|
+
+        category := cls category.
+        category notNil ifTrue:[
+            allCategories add:category.
+        ].
     ].
 
     ^ allCategories.
@@ -1687,17 +1712,19 @@
     |already|
 
     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.
-	].
+    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.
+        ].
     ].
 !
 
@@ -1719,13 +1746,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"
@@ -1735,13 +1762,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]
     "
 !
 
@@ -1763,7 +1790,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
     ]
 
     "
@@ -1780,12 +1807,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
     ]
 
     "
@@ -1803,16 +1830,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.
+        ]
     ].
 
     "
@@ -1855,13 +1882,13 @@
 !
 
 allMethodCategories
-    "return a set of all method categories in the system"
+    "return a set of all method-categories (protocols) in the system"
 
     |allCategories|
 
     allCategories := Set new.
     Smalltalk allClassesDo:[:cls |
-	allCategories addAll:cls categories.
+        allCategories addAll:cls categories.
     ].
 
     ^ allCategories.
@@ -1872,22 +1899,23 @@
 !
 
 allMethodsDo:aBlock
-    "enumerate all methods in the Smalltalk namespace's classes"
+    "enumerate all methods in all classes"
 
     Smalltalk allClassesDo:[:eachClass |
-	eachClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
-	    aBlock value:mthd
-	]
-    ].
-!
-
-allMethodsWithSelectorDo:aBlock
-    "enumerate all methods in the Smalltalk namespace's classes"
+        eachClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
+            aBlock value:mthd
+        ]
+    ].
+!
+
+allMethodsWithSelectorDo:aTwoArgBlock
+    "enumerate all methods in all classes and evaluate aBlock 
+     with method and selector as arguments."
 
     Smalltalk allClassesDo:[:eachClass |
-	eachClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
-	    aBlock value:mthd value:sel
-	]
+        eachClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
+            aTwoArgBlock value:mthd value:sel
+        ]
     ].
 !
 
@@ -1896,7 +1924,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]"
@@ -1924,7 +1952,7 @@
     RETURN (self);
 %}.
     self keysDo:[:aKey |
-	aBlock value:(self at:aKey)
+        aBlock value:(self at:aKey)
     ]
 !
 
@@ -1932,7 +1960,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)
     ]
 !
 
@@ -1941,16 +1969,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]
     "
 !
 
@@ -1963,7 +1991,7 @@
     RETURN (self);
 %}.
     self basicKeys do:[:aKey |
-	aBlock value:aKey
+        aBlock value:aKey
     ]
 ! !
 
@@ -1971,7 +1999,8 @@
 !Smalltalk class methodsFor:'message control'!
 
 silentLoading
-    "returns the Silentloading class variable."
+    "returns the Silentloading class variable, which globally controls if compilation
+     messages are shown on the transcript during a fileIn."
 
      ^ SilentLoading ? false
 !
@@ -1980,7 +2009,7 @@
     "{ Pragma: +optSpace }"
 
     "allows access to the Silentloading class variable, which controls
-     messages from all kinds of system onto the transcript.
+     messages (especially during fileIn) onto the transcript.
      You can save a snapshot with this flag set to true, which makes
      the image come up silent. Can also be set, to read in files unlogged."
 
@@ -1989,6 +2018,17 @@
     prev := SilentLoading.
     SilentLoading := aBoolean.
     ^ prev
+!
+
+silentlyLoadingDo:aBlock
+    "evaluates aBlock with silent loading on - no compilation messages (except errors)
+     are shown on the transcript"
+
+    |sav|
+
+    sav := SilentLoading.
+    SilentLoading := true.
+    aBlock ensure:[ SilentLoading := sav ].
 ! !
 
 !Smalltalk class methodsFor:'misc accessing'!
@@ -2026,9 +2066,9 @@
      #aboutToQuit."
 
     ExitBlocks isNil ifTrue:[
-	ExitBlocks := OrderedCollection with:aBlock
+        ExitBlocks := OrderedCollection with:aBlock
     ] ifFalse:[
-	ExitBlocks add:aBlock
+        ExitBlocks add:aBlock
     ]
 !
 
@@ -2040,9 +2080,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"
@@ -2058,9 +2098,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"
@@ -2087,9 +2127,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"
@@ -2114,10 +2154,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"
     ].
 
     "
@@ -2125,24 +2165,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
 
@@ -2154,15 +2194,15 @@
 
     packageDir := packageDirOrString asFilename.
 
-    f := packageDir construct:'extensions.st'.
+    f := packageDir / '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
 !
@@ -2178,37 +2218,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 / 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.
@@ -2233,10 +2273,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.
@@ -2262,10 +2302,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.
@@ -2298,19 +2338,19 @@
     packageDir isNil ifTrue:[^ false].
 
     "/ abbrev.stc ?
-    abbrevFile := packageDir construct:'abbrev.stc'.
+    abbrevFile := packageDir / 'abbrev.stc'.
     abbrevFile exists ifFalse:[^ false].
 
     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
 
@@ -2336,7 +2376,7 @@
     "make certain, that some particular package is loaded into the system.
      Return true if loaded, false otherwise."
 
-    |packageDir def|
+    |packageDir def sourceCodeManager|
 
     "/ if there is a projectDefinition, let it load itself...
     def := aPackageId asPackageId projectDefinitionClass.
@@ -2352,10 +2392,19 @@
         ].
     ].
 
-    ^ self
+    (self
         loadPackageWithId:aPackageId
         fromDirectory:packageDir
-        asAutoloaded:doLoadAsAutoloaded.
+        asAutoloaded:doLoadAsAutoloaded) ifTrue: [^ true].
+
+    AbstractSourceCodeManager notNil ifTrue:[
+        sourceCodeManager := AbstractSourceCodeManager sourceCodeManagerForPackage: aPackageId.
+        sourceCodeManager notNil ifTrue:[
+            ^ sourceCodeManager loadPackageWithId: aPackageId fromRepositoryAsAutoloaded: doLoadAsAutoloaded
+        ].   
+    ].
+
+    ^ false
 
     "
      Smalltalk loadPackageWithId:'stx:libbasic'
@@ -2374,7 +2423,7 @@
      projectDefinitionClass projectDefinitionClassName silent somethingHasBeenLoaded|
 
     packageDirOrStringOrNil notNil ifTrue:[
-	packageDir := packageDirOrStringOrNil asFilename.
+        packageDir := packageDirOrStringOrNil asFilename.
     ].
     silent := SilentLoading or:[ StandAlone ].
 
@@ -2389,80 +2438,86 @@
 
     "if not, file it in ..."
     (projectDefinitionClass isNil and:[packageDir notNil]) ifTrue:[
-	projectDefinitionClassName := ProjectDefinition initialClassNameForDefinitionOf:aPackageId.
-	"/ try to load the project definition class
-	filename := (packageDir construct:projectDefinitionClassName) withSuffix:'st'.
-	filename exists ifFalse:[
-	    filename := ((packageDir construct:'source') construct:projectDefinitionClassName) withSuffix:'st'.
-	].
-	filename exists ifTrue:[
-	    Class withoutUpdatingChangesDo:[
-		filename fileIn.
-	    ].
-	    projectDefinitionClass := ProjectDefinition definitionClassForPackage:aPackageId.
-	].
+        projectDefinitionClassName := ProjectDefinition initialClassNameForDefinitionOf:aPackageId.
+        "/ try to load the project definition class
+        filename := (packageDir / projectDefinitionClassName) withSuffix:'st'.
+        filename exists ifFalse:[
+            filename := (packageDir / 'source' / projectDefinitionClassName) withSuffix:'st'.
+        ].
+        filename exists ifTrue:[
+            Class withoutUpdatingChangesDo:[
+                Smalltalk silentlyLoadingDo:[
+                    filename fileIn.
+                ].
+            ].
+            projectDefinitionClass := ProjectDefinition definitionClassForPackage:aPackageId.
+        ].
     ].
 
     projectDefinitionClass notNil ifTrue:[
-	projectDefinitionClass autoload.
-	somethingHasBeenLoaded := projectDefinitionClass loadAsAutoloaded:doLoadAsAutoloaded.
-	(silent not and:[somethingHasBeenLoaded]) ifTrue:[
-	    Transcript showCR:('Smalltalk [info]: loaded package: ' , aPackageId , ' from project definition').
-	].
-	^ true.
+        projectDefinitionClass autoload.
+        somethingHasBeenLoaded := projectDefinitionClass loadAsAutoloaded:doLoadAsAutoloaded.
+        (silent not and:[somethingHasBeenLoaded]) ifTrue:[
+            Transcript showCR:('Smalltalk [info]: loaded package: ' , aPackageId , ' from project definition').
+        ].
+        ^ true.
     ].
 
     "Is there a shared library (.dll or .so) ?"
     shLibName := aPackageId asPackageId libraryName , ObjectFileLoader sharedLibraryExtension.
 
-    filename := Filename currentDirectory construct:shLibName.
+    filename := Filename currentDirectory / shLibName.
     filename exists ifFalse:[
-	packageDir notNil ifTrue:[
-	    filename := packageDir construct:shLibName.
-	    filename exists ifFalse:[
-		filename := (packageDir construct:'objbc') construct:shLibName.
-	    ]
-	]
+        packageDir notNil ifTrue:[
+            filename := packageDir / shLibName.
+            filename exists ifFalse:[
+                "/ mhmh - is this a good idea ? (temporary kludge)
+                filename := packageDir / 'objbc' / shLibName.
+                filename exists ifFalse:[
+                    filename := packageDir / 'objvc' / shLibName.
+                ]
+            ]
+        ]
     ].
     filename exists ifTrue:[
-	(self loadPackage:aPackageId fromClassLibrary:filename) ifTrue:[
-	    silent ifFalse:[
-		Transcript showCR:('loaded package: ' , aPackageId , ' from binary classLib file: ' , filename pathName).
-	    ].
-	    doLoadAsAutoloaded ifFalse:[
-		"/ force autoloading...
-		Smalltalk allClassesDo:[:eachClass |
-		    eachClass package == aPackageId ifTrue:[eachClass autoload].
-		].
-	    ].
-	    ^ true
-	]
+        (self loadPackage:aPackageId fromClassLibrary:filename) ifTrue:[
+            silent ifFalse:[
+                Transcript showCR:('loaded package: ' , aPackageId , ' from binary classLib file: ' , filename pathName).
+            ].
+            doLoadAsAutoloaded ifFalse:[
+                "/ force autoloading...
+                Smalltalk allClassesDo:[:eachClass |
+                    eachClass package == aPackageId ifTrue:[eachClass autoload].
+                ].
+            ].
+            ^ true
+        ]
     ].
 
     packageDir isNil ifTrue:[
-	^ false.
+        ^ false.
     ].
 
 
     "/ loadAll ? - will be soon obsolete
-    filename := packageDir construct:'loadAll'.
+    filename := packageDir / 'loadAll'.
     filename exists ifFalse:[
-	filename := packageDir construct:'loadall'.
+        filename := packageDir / 'loadall'.
     ].
     filename exists ifTrue:[
-	(self loadPackage:aPackageId fromLoadAllFile:filename) ifTrue:[
-	    silent ifFalse:[
-		Transcript showCR:('loaded package: ' , aPackageId , ' from loadAll file: ' , filename pathName).
-	    ].
-	    ^ true
-	]
+        (self loadPackage:aPackageId fromLoadAllFile:filename) ifTrue:[
+            silent ifFalse:[
+                Transcript showCR:('loaded package: ' , aPackageId , ' from loadAll file: ' , filename pathName).
+            ].
+            ^ true
+        ]
     ].
 
     packageName := packageDir baseName.
 
 "/ zip-file loading no longer supported
 "/  "/ .zip ?
-"/    f := (packageDir construct:packageName) withSuffix:'zip'.
+"/    f := (packageDir / packageName) withSuffix:'zip'.
 "/    f exists ifTrue:[
 "/        (self loadPackage:aPackageId fromZIPArchive:f asAutoloaded:doLoadAsAutoloaded) ifTrue:[
 "/            silent ifFalse:[
@@ -2497,15 +2552,18 @@
 "/        ]
 "/    ].
 
-"/ source files-file loading no longer supported
-"/    self
-"/        recursiveInstallAutoloadedClassesFrom:packageDir
-"/        rememberIn:(Set new)
-"/        maxLevels:2
-"/        noAutoload:false
-"/        packageTop:packageDir
-"/        showSplashInLevels:0.
-"/
+"/    "/ source files-file loading no longer supported
+"/    "/ however, allow for autoload-stub loaded
+"/    doLoadAsAutoloaded ifTrue:[
+"/        self
+"/            recursiveInstallAutoloadedClassesFrom:packageDir
+"/            rememberIn:(Set new)
+"/            maxLevels:2
+"/            noAutoload:false
+"/            packageTop:packageDir
+"/            showSplashInLevels:0.
+"/    ].
+
 "/    doLoadAsAutoloaded ifFalse:[
 "/        "/ source files
 "/        (self loadPackage:aPackageId fromAllSourceFilesInDirectory:packageDir) ifTrue:[
@@ -2545,27 +2603,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
 
@@ -2588,8 +2646,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
 !
@@ -2600,13 +2658,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
+            ]
       ]
 
     "
@@ -2621,7 +2679,7 @@
 
     methods := OrderedCollection new.
     self allClassesDo:[:eachClass |
-	methods addAll:(eachClass extensionsFrom:aProjectID).
+        methods addAll:(eachClass extensionsFrom:aProjectID).
     ].
     ^ methods
 !
@@ -2631,12 +2689,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
 
@@ -2646,35 +2704,66 @@
     "
 !
 
+allLoadedProjectIDs
+
+    ^ self allProjectsIdsIncludingUnloadedClasses: false
+
+
+    "
+     Smalltalk allLoadedProjectIDs
+    "
+!
+
 allProjectIDs
+
+    ^ self allProjectsIdsIncludingUnloadedClasses: true
+
+
+    "
+     Smalltalk allProjectIDs
+    "
+!
+
+allProjectsIdsIncludingUnloadedClasses: includeUnloadedClasses
+    "Returns all projects ids.
+     Excludes projects coming from unloaded classes if includeUnloadedClasses is false.
+    "
+
     |allProjects|
 
     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|
+
+        (eachClass isRealNameSpace not) ifTrue:[
+            (includeUnloadedClasses or:[eachClass isLoaded]) ifTrue:[
+                cls := eachClass theNonMetaclass.
+                cls isPrivate ifTrue:[
+                    cls := cls topOwningClass
+                ].
+                pkg := cls package.
+                pkg 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
 
     "
-     Smalltalk allProjectIDs
+     Smalltalk allProjectsIdsIncludingUnloadedClasses: true
+     Smalltalk allProjectsIdsIncludingUnloadedClasses: false
     "
 !
 
@@ -2694,7 +2783,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
 
@@ -2720,45 +2809,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
@@ -2794,7 +2883,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
 !
@@ -2802,7 +2891,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
 
@@ -2833,7 +2922,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
 
@@ -2851,7 +2940,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:'.
@@ -2944,11 +3033,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.
 
@@ -2970,15 +3059,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
 
@@ -2999,7 +3088,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
 
@@ -3028,10 +3117,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
 
@@ -3042,8 +3131,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
 !
@@ -3052,8 +3141,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
 !
@@ -3062,8 +3151,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
 
@@ -3085,8 +3174,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.
@@ -3096,12 +3185,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.
 
@@ -3111,7 +3200,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
 !
@@ -3119,7 +3208,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
 
@@ -3219,10 +3308,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.
@@ -3230,9 +3319,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'.
@@ -3270,42 +3359,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.
@@ -3316,49 +3405,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.
 
@@ -3375,60 +3464,60 @@
     "/ 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
@@ -3440,13 +3529,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
@@ -3463,27 +3552,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"
@@ -3505,15 +3594,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|
@@ -3537,12 +3626,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.
     ].
 
     "/
@@ -3577,7 +3666,7 @@
     insp := Inspector.
     deb := Debugger.
     deb notNil ifTrue:[
-	deb reinitialize
+        deb reinitialize
     ].
     Inspector := MiniInspector.
     Debugger := MiniDebugger.
@@ -3590,7 +3679,7 @@
     "/ ObjectFileLoader; therefore, must reload before doing any notifications.
 
     ObjectFileLoader notNil ifTrue:[
-	ObjectFileLoader reloadAllRememberedObjectFiles.
+        ObjectFileLoader reloadAllRememberedObjectFiles.
     ].
 
     "/
@@ -3599,9 +3688,9 @@
     "/ a display during early startup.
 
     Screen notNil ifTrue:[
-	Screen allScreens do:[:aDisplay |
-	    aDisplay invalidateConnection
-	].
+        Screen allScreens do:[:aDisplay |
+            aDisplay invalidateConnection
+        ].
     ].
 
     ObjectMemory changed:#earlySystemInstallation.
@@ -3617,7 +3706,7 @@
     "/ (mostly view/GC/color & font stuff)
 
     ObjectMemory
-	changed:#earlyRestart; changed:#restarted.
+        changed:#earlyRestart; changed:#restarted.
 
     "/
     "/ start catching SIGINT and SIGQUIT
@@ -3630,75 +3719,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"
@@ -3725,11 +3814,11 @@
     int clr = 0;
 
     if (__isString(aMessageStringOrNil)) {
-	msg = __stringVal(aMessageStringOrNil);
+        msg = __stringVal(aMessageStringOrNil);
     }
     if (__isSmallInteger(rgbValueOrNil)) {
-	clr = __intVal(rgbValueOrNil);
-	__win32_splashMessageColor(clr);
+        clr = __intVal(rgbValueOrNil);
+        __win32_splashMessageColor(clr);
     }
     __win32_splashMessage(msg);
 #endif
@@ -3758,145 +3847,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
@@ -3911,23 +4000,23 @@
     |p|
 
     p :=
-	[
-	    |startBlocks|
-
-	    startBlocks := self startBlocks.
-	    startBlocks notNil ifTrue:[
-		startBlocks do:[:aBlock|
-		    aBlock value
-		].
-		startBlocks removeAll.
-	    ].
-	] newProcess.
+        [
+            |startBlocks|
+
+            startBlocks := self startBlocks.
+            startBlocks notNil ifTrue:[
+                startBlocks do:[:aBlock|
+                    aBlock value
+                ].
+                startBlocks removeAll.
+            ].
+        ] newProcess.
 
     p
-	priority:(Processor userSchedulingPriority);
-	name:'start block handler';
-	beGroupLeader;
-	resume.
+        priority:(Processor userSchedulingPriority);
+        name:'start block handler';
+        beGroupLeader;
+        resume.
 ! !
 
 !Smalltalk class methodsFor:'startup queries'!
@@ -3952,7 +4041,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.
 
@@ -4245,26 +4334,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 syncData; close.
@@ -4279,7 +4368,7 @@
      source reference"
 
     table keysAndValuesDo:[:aMethod :pos |
-	aMethod localSourceFilename:fileName position:pos.
+        aMethod localSourceFilename:fileName position:pos.
 "/        aMethod printCR.
     ].
 
@@ -4307,18 +4396,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 syncData; close.
@@ -4333,7 +4422,7 @@
      source reference"
 
     table keysAndValuesDo:[:aMethod :pos |
-	aMethod localSourceFilename:fileName position:pos.
+        aMethod localSourceFilename:fileName position:pos.
 "/        aMethod printCR.
     ].
 
@@ -4352,11 +4441,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
@@ -4371,36 +4460,36 @@
 
     "/ install if not already compiled-in
     (cls := self at:clsSym) isNil ifTrue:[
-	Autoload subclass:clsSym
-	    instanceVariableNames:''
-	    classVariableNames:''
-	    poolDictionaries:''
-	    category:cat
-	    inEnvironment:Smalltalk.
-
-	cls := self at:clsSym.
-	cls isNil ifTrue:[
-	    ('Smalltalk [warning]: failed to install ' , clsName , ' as autoloaded.') infoPrintCR.
-	] ifFalse:[
-	    cls package:package asSymbol.
-	    revisionOrNil notNil ifTrue:[
-		cls setBinaryRevision:revisionOrNil
-	    ]
-	]
+        Autoload subclass:clsSym
+            instanceVariableNames:''
+            classVariableNames:''
+            poolDictionaries:''
+            category:cat
+            inEnvironment:Smalltalk.
+
+        cls := self at:clsSym.
+        cls isNil ifTrue:[
+            ('Smalltalk [warning]: failed to install ' , clsName , ' as autoloaded.') infoPrintCR.
+        ] ifFalse:[
+            cls package:package asSymbol.
+            revisionOrNil notNil ifTrue:[
+                cls setBinaryRevision:revisionOrNil
+            ]
+        ]
     ] ifFalse:[
-	"/ class already present - however, if unloaded, check for category/package change
-	cls isLoaded ifFalse:[
-	    package ~= cls package ifTrue:[
-		cls withoutUpdatingChangesDo:[
-		    cls package:package asSymbol.
-		].
-	    ].
-	    cat ~= cls category ifTrue:[
-		cls withoutUpdatingChangesDo:[
-		    cls category:cat.
-		].
-	    ].
-	].
+        "/ class already present - however, if unloaded, check for category/package change
+        cls isLoaded ifFalse:[
+            package ~= cls package ifTrue:[
+                cls withoutUpdatingChangesDo:[
+                    cls package:package asSymbol.
+                ].
+            ].
+            cat ~= cls category ifTrue:[
+                cls withoutUpdatingChangesDo:[
+                    cls category:cat.
+                ].
+            ].
+        ].
     ].
     ^ cls.
 
@@ -4419,15 +4508,15 @@
 
     "/ along the package-path
     self packagePath do:[:eachPathComponent |
-	(dirsConsulted includes:eachPathComponent) ifFalse:[
-	    self
-		recursiveInstallAutoloadedClassesFrom:eachPathComponent
-		rememberIn:dirsConsulted
-		maxLevels:15
-		noAutoload:false
-		packageTop:eachPathComponent
-		showSplashInLevels:2.
-	]
+        (dirsConsulted includes:eachPathComponent) ifFalse:[
+            self
+                recursiveInstallAutoloadedClassesFrom:eachPathComponent
+                rememberIn:dirsConsulted
+                maxLevels:15
+                noAutoload:false
+                packageTop:eachPathComponent
+                showSplashInLevels:2.
+        ]
     ].
     self splashInfo:nil.
 
@@ -4449,15 +4538,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"].
     ]
 
     "
@@ -4476,76 +4565,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.
 "/                    ].
-		]
-	    ]
-	]
+                ]
+            ]
+        ]
     ]
 !
 
@@ -4562,11 +4651,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
 
@@ -4607,14 +4696,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
+            ]
+        ].
     ].
 
     "
@@ -4633,9 +4722,9 @@
      If a file called NOPACKAGES is found, no further searching is done in that directory or below."
 
     self
-	recursiveInstallAutoloadedClassesFrom:aDirectory rememberIn:dirsConsulted
-	maxLevels:maxLevels noAutoload:noAutoloadIn packageTop:packageTopPath
-	showSplashInLevels:0.
+        recursiveInstallAutoloadedClassesFrom:aDirectory rememberIn:dirsConsulted
+        maxLevels:maxLevels noAutoload:noAutoloadIn packageTop:packageTopPath
+        showSplashInLevels:0.
 
     "
      Smalltalk installAutoloadedClasses
@@ -4657,48 +4746,48 @@
 
     maxLevels == 0 ifTrue:[
 "/        'Smalltalk [warning]: max directory nesting reached.' infoPrintCR.
-	^ self
+        ^ self
     ].
 
     dir := aDirectory asFilename.
     dirName := dir pathName.
 
     (dirsConsulted includes:dirName) ifTrue:[
-	^ self
+        ^ self
     ].
     dirsConsulted add:dirName.
 
-    (dir construct:'NOPACKAGES') exists ifTrue:[
-	^ self.
-    ].
-    (dir construct:'NOSUBAUTOLOAD') exists ifTrue:[
-	^ self.
+    (dir / 'NOPACKAGES') exists ifTrue:[
+        ^ self.
+    ].
+    (dir / 'NOSUBAUTOLOAD') exists ifTrue:[
+        ^ self.
     ].
 
     noAutoloadHere := noAutoloadIn.
     noAutoloadHere ifFalse:[
-	(dir construct:'NOAUTOLOAD') exists ifTrue:[
-	    noAutoloadHere := true.
-	].
+        (dir / 'NOAUTOLOAD') exists ifTrue:[
+            noAutoloadHere := true.
+        ].
     ] ifTrue:[
-	(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.
-	].
-	pkgName := dirName copyFrom:(packageTopPath asFilename pathName) size + 1 + 1.
-	KnownPackages add:pkgName
+        (dir / 'AUTOLOAD') exists ifTrue:[
+            noAutoloadHere := false.
+        ].
+    ].
+
+    ((dir / 'loadAll') exists
+    or:[(dir / 'abbrev.stc') exists
+    ]) ifTrue:[
+        KnownPackages isNil ifTrue:[
+            KnownPackages := Set new.
+        ].
+        pkgName := dirName copyFrom:(packageTopPath asFilename pathName) size + 1 + 1.
+        KnownPackages add:pkgName
     ].
 
     showSplashInLevels >= 0 ifTrue:[
-	self showSplashMessage:('Smalltalk [info]: installing autoloaded classes found under "%1"...'
-				bindWith:(dirName contractAtBeginningTo:35)).
+        self showSplashMessage:('Smalltalk [info]: installing autoloaded classes found under "%1"...'
+                                bindWith:(dirName contractAtBeginningTo:35)).
     ].
 
     "/
@@ -4706,60 +4795,60 @@
     "/ 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 / '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
-			showSplashInLevels:showSplashInLevels - 1.
-		]
-	    ]
-	].
+        |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 / aFilename.
+                f isDirectory ifTrue:[
+                     self
+                        recursiveInstallAutoloadedClassesFrom:f
+                        rememberIn:dirsConsulted
+                        maxLevels:maxLevels-1
+                        noAutoload:noAutoloadHere
+                        packageTop:packageTopPath
+                        showSplashInLevels:showSplashInLevels - 1.
+                ]
+            ]
+        ].
     ].
 
     showSplashInLevels >= 0 ifTrue:[
-	self showSplashMessage:('Smalltalk [info]: installing autoloaded classes from "%1"...'
-				bindWith:(dirName contractAtBeginningTo:35)).
+        self showSplashMessage:('Smalltalk [info]: installing autoloaded classes from "%1"...'
+                                bindWith:(dirName contractAtBeginningTo:35)).
     ].
 
     "
@@ -4828,10 +4917,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
 
@@ -4902,10 +4991,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|
 
@@ -4916,42 +5005,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
 
@@ -4992,8 +5081,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 ...
@@ -5012,11 +5101,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"
 !
@@ -5037,9 +5126,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
 
@@ -5058,11 +5147,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"
 !
@@ -5074,11 +5163,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"
 !
@@ -5094,11 +5183,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"
 !
@@ -5110,11 +5199,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"
 !
@@ -5135,305 +5224,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:[
+        classFileName asFilename suffix notEmptyOrNil ifTrue:[
+            ok := self fileIn:classFileName lazy:loadLazy silent:beSilent.
+        ] ifFalse:[
             ok := self fileInSourceFile:classFileName 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:[
+        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.
                         (ok := self fileInSourceFile:filenameToSet lazy:loadLazy silent:beSilent)
-			ifFalse:[
-			    alternativeClassFileName notNil ifTrue:[
+                        ifFalse:[
+                            alternativeClassFileName notNil ifTrue:[
                                 filenameToSet := alternativeClassFileName.
                                 ok := self fileInSourceFile:filenameToSet lazy:loadLazy silent:beSilent
-			    ].
-			    ok ifFalse:[
-				"
-				 ... and in the standard source-directory
-				"
+                            ].
+                            ok ifFalse:[
+                                "
+                                 ... and in the standard source-directory
+                                "
                                 filenameToSet := 'source/' , classFileName.
                                 (ok := self fileInSourceFile:filenameToSet lazy:loadLazy silent:beSilent)
-				ifFalse:[
-				    alternativeClassFileName notNil ifTrue:[
+                                ifFalse:[
+                                    alternativeClassFileName notNil ifTrue:[
                                         filenameToSet := 'source/' , alternativeClassFileName.
                                         ok := self fileInSourceFile: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:[
+                                    ]
+                                ]
+                            ]
+                        ].
+                        "
+                         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 getPackageSourceFileName:(packageDir , '/source/' , classFileName).
-				packageFile isNil ifTrue:[
+                                packageFile isNil ifTrue:[
                                     packageFile := (packageDir , '/source/' , classFileName).
-				].
-				filenameToSet := packageFile.
+                                ].
+                                filenameToSet := packageFile.
                                 (ok := self fileInSourceFile:packageFile lazy:loadLazy silent:beSilent)
-				ifFalse:[
-				    alternativeClassFileName notNil ifTrue:[
+                                ifFalse:[
+                                    alternativeClassFileName notNil ifTrue:[
                                         packageFile := self getPackageSourceFileName:(packageDir , '/source/' , alternativeClassFileName).
-					packageFile isNil ifTrue:[
+                                        packageFile isNil ifTrue:[
                                             packageFile := (packageDir , '/source/' , alternativeClassFileName).
-					].
-					filenameToSet := packageFile.
+                                        ].
+                                        filenameToSet := packageFile.
                                         ok := self fileInSourceFile:packageFile lazy:loadLazy silent:beSilent
-				    ].
-				    ok ifFalse:[
+                                    ].
+                                    ok ifFalse:[
                                         packageFile := self getPackageSourceFileName:(packageDir , '/' , classFileName).
-					packageFile isNil ifTrue:[
+                                        packageFile isNil ifTrue:[
                                             packageFile := (packageDir , '/' , classFileName).
-					].
-					filenameToSet := packageFile.
+                                        ].
+                                        filenameToSet := packageFile.
                                         (ok := self fileInSourceFile:packageFile lazy:loadLazy silent:beSilent)
-					ifFalse:[
-					    alternativeClassFileName notNil ifTrue:[
+                                        ifFalse:[
+                                            alternativeClassFileName notNil ifTrue:[
                                                 packageFile := self getPackageFileName:(packageDir , '/' , alternativeClassFileName).
-						packageFile isNil ifTrue:[
+                                                packageFile isNil ifTrue:[
                                                     packageFile := (packageDir , '/' , alternativeClassFileName).
-						].
-						filenameToSet := packageFile.
+                                                ].
+                                                filenameToSet := packageFile.
                                                 ok := self fileInSourceFile:packageFile lazy:loadLazy silent:beSilent
-					    ].
-					    ok ifFalse:[
-						"
-						 ... and in the standard source-directory
-						"
+                                            ].
+                                            ok ifFalse:[
+                                                "
+                                                 ... and in the standard source-directory
+                                                "
                                                 filenameToSet := 'source/' , packageDir , '/' , classFileName.
                                                 (ok := self fileInSourceFile:filenameToSet lazy:loadLazy silent:beSilent)
-						ifFalse:[
-						    alternativeClassFileName notNil ifTrue:[
+                                                ifFalse:[
+                                                    alternativeClassFileName notNil ifTrue:[
                                                         filenameToSet := 'source/' , packageDir , '/' , alternativeClassFileName.
                                                         ok := self fileInSourceFile: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
-	    ]
-	].
+                                                    ]
+                                                ]
+                                            ]
+                                        ].
+                                    ].
+                                ].
+                            ]
+                        ].
+                        "
+                         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
@@ -5448,8 +5537,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|
 
@@ -5460,7 +5549,7 @@
 
     path := self getBinaryFileName:fn.
     path isNil ifTrue:[
-	path := self getSystemFileName:fn.
+        path := self getSystemFileName:fn.
     ].
     path isNil ifTrue:[^ false].
 
@@ -5479,8 +5568,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."
 
     |baseName handle libraryFilename packagePath|
 
@@ -5488,9 +5577,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].
     ].
 
     packagePath := self getPackageDirectoryForPackage:packageID.
@@ -5498,8 +5587,8 @@
     packagePath := packagePath asFilename.
     libraryFilename := packagePath / baseName.
     libraryFilename exists ifFalse:[
-	"in windows (with Borland compiler, DLLs in development environment are under objbc"
-	libraryFilename := packagePath / 'objbc' / baseName.
+        "in windows (with Borland compiler, DLLs in development environment are under objbc"
+        libraryFilename := packagePath / 'objbc' / baseName.
     ].
     libraryFilename exists ifFalse:[^ false].
 
@@ -5553,40 +5642,40 @@
     inStream := streamArg.
     inStream isNil ifTrue:[^ false].
     inStream := ChangeSet isNil
-		    ifTrue:[ inStream ]
-		    ifFalse:[ ChangeSet decodedStreamFor:inStream ].
+                    ifTrue:[ inStream ]
+                    ifFalse:[ ChangeSet decodedStreamFor:inStream ].
 
     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:[
+        (Class updateChangeFileQuerySignal , Class updateChangeListQuerySignal) answer:logged do:[
             "JV: Changed to give ProgrammingLanguage to choose
              proper reader"
             (ProgrammingLanguage forStream: inStream)
                 fileInStream: inStream
-	]
+        ]
     ] 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
 
@@ -5602,14 +5691,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
 
@@ -5650,8 +5739,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
 !
 
@@ -5663,9 +5752,9 @@
 
     wasSilent := self silentLoading:true.
     [
-	self fileIn:aFilename
+        self fileIn:aFilename
     ] ensure:[
-	self silentLoading:wasSilent
+        self silentLoading:wasSilent
     ]
 ! !
 
@@ -5681,7 +5770,7 @@
 
     aString := self getBitmapFileName:aFileName.
     aString notNil ifTrue:[
-	^ aString asFilename readStreamOrNil
+        ^ aString asFilename readStreamOrNil
     ].
     ^ nil
 !
@@ -5723,9 +5812,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].
 
@@ -5744,11 +5833,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]
     ].
 !
 
@@ -5762,7 +5851,7 @@
 
     aString := self getFileInFileName:aFileName.
     aString notNil ifTrue:[
-	^ aString asFilename readStreamOrNil
+        ^ aString asFilename readStreamOrNil
     ].
     ^ nil
 !
@@ -5773,6 +5862,18 @@
 
     |cls nonMetaclass nm nameWithPrefix nameWithoutPrefix|
 
+"/  This was added as an extension of libsvn - should be no longer needed
+"/    compatQuery := Smalltalk classNamed: 'SVN::CompatModeQuery'.
+"/    (compatQuery notNil 
+"/      and:[compatQuery isLoaded  
+"/        and:[compatQuery query not]]) ifTrue:[
+"/            nm := aClassOrClassName isBehavior
+"/                ifTrue:[aClassOrClassName name]
+"/                ifFalse:[aClassOrClassName].
+"/            nm := nm copyReplaceAll:$: with:$_.
+"/            ^nm
+"/    ].
+
     aClassOrClassName isBehavior ifTrue:[
         cls := aClassOrClassName.
     ] ifFalse:[
@@ -5834,7 +5935,7 @@
      to 14 chars)"
 
     CachedAbbreviations isNil ifTrue:[
-	self readAbbreviations
+        self readAbbreviations
     ].
     ^ CachedAbbreviations
 
@@ -5871,7 +5972,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
@@ -5901,56 +6002,56 @@
      then in the package directory if existing.
      Return a path 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
     "
 
     |f dir packageDir pF|
 
     ((f := aFileName asString) startsWith:'bitmaps/') ifTrue:[
-	f := f copyFrom:('bitmaps/' size + 1).
+        f := f copyFrom:('bitmaps/' size + 1).
     ].
 
     aPackageIDOrNil isNil ifTrue:[
-	"/ this will be an error in the future
+        "/ this will be an error in the future
 "/        'Smalltalk [warning]: bitmap file access without package: ' infoPrint. aFileName infoPrintCR.
 "/        self halt.
 
-	pF := self searchPath:(self realSystemPath) for:aFileName in:('bitmaps').
-	pF notNil ifTrue:[
-	    ^ pF.
-	].
-	f ~= aFileName ifTrue:[
-	    pF := self searchPath:(self realSystemPath) for:f in:('bitmaps').
-	    pF notNil ifTrue:[
-		^ pF.
-	    ].
-	].
-	^ nil
+        pF := self searchPath:(self realSystemPath) for:aFileName in:('bitmaps').
+        pF notNil ifTrue:[
+            ^ pF.
+        ].
+        f ~= aFileName ifTrue:[
+            pF := self searchPath:(self realSystemPath) for:f in:('bitmaps').
+            pF notNil ifTrue:[
+                ^ pF.
+            ].
+        ].
+        ^ nil
     ].
 
     dir := self projectDirectoryForPackage:aPackageIDOrNil.
     dir notNil ifTrue:[
-	pF := dir asFilename construct:f.
-	pF exists ifTrue:[
-	    ^ pF.
-	].
-	pF := (dir asFilename construct:'bitmaps') construct:f.
-	pF exists ifTrue:[
-	    ^ pF.
-	].
+        pF := dir asFilename / f.
+        pF exists ifTrue:[
+            ^ pF.
+        ].
+        pF := dir asFilename / 'bitmaps' /f.
+        pF exists ifTrue:[
+            ^ pF.
+        ].
     ].
 
     packageDir := aPackageIDOrNil copyReplaceAll:$: with:$/.
 
     pF := self searchPath:(self realSystemPath) for:aFileName in:('bitmaps/',packageDir).
     pF notNil ifTrue:[
-	^ pF.
+        ^ pF.
     ].
     pF := self searchPath:(self realSystemPath) for:aFileName in:('resources/',packageDir,'/bitmaps').
     pF notNil ifTrue:[
-	^ pF.
+        ^ pF.
     ].
 
     ^ nil
@@ -5972,7 +6073,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
@@ -5990,22 +6091,22 @@
     packageSubDirectory := aPackageID asPackageId directory.
 
     checkForPackageDirectory :=
-	[:moduleDir |
-	    |packageDir|
-
-	    moduleDir isDirectory ifTrue:[
-		packageDir := moduleDir construct:packageSubDirectory.
-		packageDir isDirectory ifTrue:[
-		    ^ packageDir
-		]
-	    ].
-	].
+        [:moduleDir |
+            |packageDir|
+
+            moduleDir isDirectory ifTrue:[
+                packageDir := moduleDir / packageSubDirectory.
+                packageDir isDirectory ifTrue:[
+                    ^ packageDir
+                ]
+            ].
+        ].
 
     self packagePath do:[:aPath |
-	|moduleDir|
-
-	moduleDir := aPath asFilename construct:module.
-	checkForPackageDirectory value:moduleDir.
+        |moduleDir|
+
+        moduleDir := aPath asFilename / module.
+        checkForPackageDirectory value:moduleDir.
     ].
 
     ^ nil
@@ -6029,20 +6130,20 @@
     "/ 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') and:[(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' , Filename separator)) ifTrue:[
+                f := '../..' asFilename / (aFileName copyFrom:5).
+                f exists ifTrue:[
+                    ^ f pathName
+                ].
+            ]
+        ].
     ].
     (f notNil and:[(f := f asFilename) exists]) ifTrue:[
-	^ f pathName
+        ^ f pathName
     ].
     ^ nil
 
@@ -6087,7 +6188,7 @@
     |pkgOrNil|
 
     aClassOrNil notNil ifTrue:[
-	pkgOrNil := aClassOrNil package.
+        pkgOrNil := aClassOrNil package.
     ].
     ^ self getResourceFileName:aFileName forPackage:pkgOrNil.
 
@@ -6102,57 +6203,52 @@
      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.
-	].
-    ].
+        dir := dir asFilename.
+
+        (pF := dir / 'resources' / f) exists ifTrue:[ ^ pF name ].
+        (pF := dir / 'styles' / f) exists ifTrue:[ ^ pF name ].
+
+        "resolve something like: 'ASN/definition.asn1'"
+        (pF := dir / f) exists ifTrue:[ ^ pF name ].
+    ].
+
     ^ nil
 
     "
@@ -6175,16 +6271,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
 
@@ -6211,23 +6307,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 / 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
 
@@ -6253,10 +6349,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
 
@@ -6271,16 +6367,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
 
@@ -6312,9 +6408,9 @@
     |aStream line words n aClassName|
 
     aClassOrClassName isBehavior ifTrue:[
-	aClassName := aClassOrClassName name
+        aClassName := aClassOrClassName name
     ] ifFalse:[
-	aClassName := aClassOrClassName
+        aClassName := aClassOrClassName
     ].
     aClassName := aClassName asString.
 
@@ -6322,26 +6418,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
@@ -6410,10 +6506,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
 
@@ -6449,10 +6545,10 @@
      sigh - all for those poor sys5.3 or MSDOS people with short filenames ..."
 
     self
-	withAbbreviationsFromStream:aStream
-	do:[:className :abbrev :pkg |
-	    self setFilename:abbrev forClass:className package:pkg.
-	].
+        withAbbreviationsFromStream:aStream
+        do:[:className :abbrev :pkg |
+            self setFilename:abbrev forClass:className package:pkg.
+        ].
 
     "Modified: / 13.12.1999 / 11:54:17 / cg"
 !
@@ -6464,32 +6560,32 @@
     |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 or:[(f isDirectory) and:[f isReadable]]
-	    ]
-	] ifFalse:[
-	    RealSystemPath := SystemPath
-		select:[:eachDirectoryName |  |f|
-		    f := eachDirectoryName asFilename.
-		    (f isDirectory) and:[f isReadable]
-		] thenCollect:[:eachDirectoryName|
-		    eachDirectoryName 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 or:[(f isDirectory) and:[f isReadable]]
+            ]
+        ] ifFalse:[
+            RealSystemPath := SystemPath
+                select:[:eachDirectoryName |  |f|
+                    f := eachDirectoryName asFilename.
+                    (f isDirectory) and:[f isReadable]
+                ] thenCollect:[:eachDirectoryName|
+                    eachDirectoryName asFilename pathName.
+                ].
+
+            "/ remove duplicates (but keep order)
+            nP := OrderedCollection new.
+            RealSystemPath do:[:p |
+                (nP includes:p) ifFalse:[
+                    nP add:p
+                ]
+            ].
+            RealSystemPath := nP.
+        ].
     ].
     ^ RealSystemPath
 !
@@ -6505,40 +6601,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 / '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 / aFilename.
+            f isDirectory ifTrue:[
+                self recursiveReadAllAbbreviationsFrom:f maxLevels:maxLevels-1
+            ]
+        ].
     ].
 !
 
@@ -6549,17 +6645,17 @@
     |prjDir rsrcDir|
 
     aPackage notNil ifTrue:[
-	prjDir := self projectDirectoryForPackage:aPackage.
-
-	(prjDir notNil
-	and:[(prjDir := prjDir asFilename) exists
-	and:[(rsrcDir := prjDir construct:'resources') exists]]) ifTrue:[
-	    ^ rsrcDir
-	].
-	rsrcDir := self getSystemFileName:('resources/' , (aPackage copyReplaceAll:$: with:$/)).
-	rsrcDir notNil ifTrue:[
-	    ^ rsrcDir asFilename
-	].
+        prjDir := self projectDirectoryForPackage:aPackage.
+
+        (prjDir notNil
+        and:[(prjDir := prjDir asFilename) exists
+        and:[(rsrcDir := prjDir / 'resources') exists]]) ifTrue:[
+            ^ rsrcDir
+        ].
+        rsrcDir := self getSystemFileName:('resources/' , (aPackage copyReplaceAll:$: with:$/)).
+        rsrcDir notNil ifTrue:[
+            ^ rsrcDir asFilename
+        ].
     ].
     ^ nil
 
@@ -6588,7 +6684,7 @@
 
     aString := self getResourceFileName:aFileName forClass:aClassOrNil.
     aString notNil ifTrue:[
-	^ aString asFilename readStreamOrNil
+        ^ aString asFilename readStreamOrNil
     ].
     ^ nil
 !
@@ -6601,30 +6697,30 @@
 
     ((f := aFileName asFilename) isAbsolute
     or:[f isExplicitRelative]) ifTrue:[
-	"/
-	"/ dont use path for absolute or explicit .-relative file names
-	"/
-	^ aFileName
+        "/
+        "/ dont use path for absolute or explicit .-relative file names
+        "/
+        ^ aFileName
     ].
 
     aPath notNil ifTrue:[
-	aPath do:[:dirName |
-	    |realName dir|
-
-	    dir := dirName asFilename.
-	    aDirName notNil ifTrue:[
-		realName := (dir construct:aDirName) construct:aFileName.
-	    ] ifFalse:[
-		realName := dir construct:aFileName.
-	    ].
-	    (realName isReadable) ifTrue:[
-		^ realName name
-	    ]
-	].
+        aPath do:[:dirName |
+            |realName dir|
+
+            dir := dirName asFilename.
+            aDirName notNil ifTrue:[
+                realName := dir / aDirName / aFileName.
+            ] ifFalse:[
+                realName := dir / aFileName.
+            ].
+            (realName isReadable) ifTrue:[
+                ^ realName name
+            ]
+        ].
     ].
 
 "/ not needed - executing dir is always in SearchPath
-"/    realName := Filename currentDirectory construct:aFileName.
+"/    realName := Filename currentDirectory / aFileName.
 "/    (realName isReadable) ifTrue:[
 "/        ^ realName name
 "/    ].
@@ -6637,55 +6733,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.
     ]
 !
 
@@ -6700,9 +6796,9 @@
     |aStream line words n aClassName|
 
     aClassOrClassName isBehavior ifTrue:[
-	aClassName := aClassOrClassName name
+        aClassName := aClassOrClassName name
     ] ifFalse:[
-	aClassName := aClassOrClassName
+        aClassName := aClassOrClassName
     ].
     aClassName := aClassName asString.
 
@@ -6710,26 +6806,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
@@ -6755,7 +6851,7 @@
 
     aString := self getSourceFileName:aFileName.
     aString notNil ifTrue:[
-	^ aString asFilename readStreamOrNil
+        ^ aString asFilename readStreamOrNil
     ].
     ^ nil
 !
@@ -6769,7 +6865,7 @@
 
     aString := self getSystemFileName:aFileName.
     aString notNil ifTrue:[
-	^ aString asFilename readStreamOrNil
+        ^ aString asFilename readStreamOrNil
     ].
     ^ nil
 !
@@ -6806,42 +6902,42 @@
 withAbbreviationsFromStream:aStream do:aBlock
     "read classname to filename mappings from aStream.
      Evaluate aBlock for each tuple:
-	class-name , abbrev-name, package
+        class-name , abbrev-name, package
      Sigh - all for those poor sys5.3 or MSDOS people with short filenames..."
 
     |line words nm abbrev pkg s w|
 
     [aStream atEnd] whileFalse:[
-	line := aStream nextLine.
-	line notNil ifTrue:[
-	    (line startsWith:'#') ifFalse:[
-
-		"/ must do it manually, caring for quoted strings.
+        line := aStream nextLine.
+        line notNil ifTrue:[
+            (line startsWith:'#') ifFalse:[
+
+                "/ must do it manually, caring for quoted strings.
 "/                words := line asCollectionOfWords.
 
-		words := OrderedCollection new.
-		s := line readStream.
-		[s atEnd] whileFalse:[
-		    s skipSeparators.
-		    s peek == $' ifTrue:[
-			s next.
-			w := s upTo:$'.
-			s skipSeparators.
-		    ] ifFalse:[
-			w := s upToSeparator
-		    ].
-		    words add:w
-		].
-		words size >= 3 ifTrue:[
-		    nm := (words at:1) withoutSeparators.
-		    abbrev := (words at:2) withoutSeparators.
-		    pkg := (words at:3) withoutSeparators.
-		    aBlock value:nm value:abbrev value:pkg.
-		] ifFalse:[
-		    ('Smalltalk [warning]: malformed line in ' , (aStream pathName)) infoPrintCR.
-		]
-	    ]
-	]
+                words := OrderedCollection new.
+                s := line readStream.
+                [s atEnd] whileFalse:[
+                    s skipSeparators.
+                    s peek == $' ifTrue:[
+                        s next.
+                        w := s upTo:$'.
+                        s skipSeparators.
+                    ] ifFalse:[
+                        w := s upToSeparator
+                    ].
+                    words add:w
+                ].
+                words size >= 3 ifTrue:[
+                    nm := (words at:1) withoutSeparators.
+                    abbrev := (words at:2) withoutSeparators.
+                    pkg := (words at:3) withoutSeparators.
+                    aBlock value:nm value:abbrev value:pkg.
+                ] ifFalse:[
+                    ('Smalltalk [warning]: malformed line in ' , (aStream pathName)) infoPrintCR.
+                ]
+            ]
+        ]
     ].
 
     "Modified: / 13.12.1999 / 11:54:17 / cg"
@@ -6926,7 +7022,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.
@@ -7013,7 +7109,7 @@
     exp = __MKUINT(__getExpirationTime());
 %}.
     exp == 0 ifTrue:[
-	^ nil
+        ^ nil
     ].
     ^ Timestamp new fromOSTime:(exp * 1000). "OSTime is ms since 1970"
 
@@ -7050,28 +7146,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.
@@ -7140,7 +7236,7 @@
       classes changes).
 
      ST/X revision Naming is:
-	<major>.<minor>.<revision>.<release>"
+        <major>.<minor>.<revision>.<release>"
 
     ^ 5
 
@@ -7160,7 +7256,7 @@
      classes need rework.
 
      ST/X revision Naming is:
-	<major>.<minor>.<revision>.<release>"
+        <major>.<minor>.<revision>.<release>"
 
     ^ 4
 
@@ -7197,7 +7293,7 @@
      their way to the outside world.
 
      ST/X revision Naming is:
-	<major>.<minor>.<revision>.<release>"
+        <major>.<minor>.<revision>.<release>"
 
     ^ 1
 
@@ -7218,7 +7314,7 @@
      to the outside world.
 
      ST/X revision Naming is:
-	<major>.<minor>.<revision>.<release>"
+        <major>.<minor>.<revision>.<release>"
 
     ^ 6
 
@@ -7311,10 +7407,9 @@
 !Smalltalk class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Smalltalk.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Smalltalk.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.893 2009/10/15 15:22:44 cg Exp §'
+    ^ '$Id: Smalltalk.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
-
--- a/SmalltalkChunkFileSourceReader.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/SmalltalkChunkFileSourceReader.st	Thu Nov 05 14:41:30 2009 +0000
@@ -47,14 +47,15 @@
 !SmalltalkChunkFileSourceReader class methodsFor:'documentation'!
 
 version
-    ^ '$Id: SmalltalkChunkFileSourceReader.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: SmalltalkChunkFileSourceReader.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SmalltalkChunkFileSourceReader.st,v 1.5 2009/10/08 11:56:01 fm Exp §'
+    ^ '$Id: SmalltalkChunkFileSourceReader.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_SVN
-    ^ '$Id: SmalltalkChunkFileSourceReader.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^'§Id: SmalltalkChunkFileSourceReader.st 10465 2009-08-16 17:14:23Z vranyj1 §'
 ! !
 
+
--- a/SmalltalkChunkFileSourceWriter.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/SmalltalkChunkFileSourceWriter.st	Thu Nov 05 14:41:30 2009 +0000
@@ -462,10 +462,11 @@
 !SmalltalkChunkFileSourceWriter class methodsFor:'documentation'!
 
 version
-    ^ '$Id: SmalltalkChunkFileSourceWriter.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: SmalltalkChunkFileSourceWriter.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SmalltalkChunkFileSourceWriter.st,v 1.12 2009/10/02 14:30:07 cg Exp §'
+    ^ '$Id: SmalltalkChunkFileSourceWriter.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/SmalltalkLanguage.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/SmalltalkLanguage.st	Thu Nov 05 14:41:30 2009 +0000
@@ -130,8 +130,9 @@
 !SmalltalkLanguage methodsFor:'testing'!
 
 isSmalltalk
+    "true iff I represent the smalltalk language"
 
-    ^true
+    ^ true
 
     "Created: / 16-08-2009 / 09:01:38 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
@@ -183,14 +184,15 @@
 !SmalltalkLanguage class methodsFor:'documentation'!
 
 version
-    ^ '$Id: SmalltalkLanguage.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: SmalltalkLanguage.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SmalltalkLanguage.st,v 1.9 2009/10/08 11:59:18 fm Exp §'
+    ^ '$Id: SmalltalkLanguage.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_SVN
-    ^ '$Id: SmalltalkLanguage.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^'§Id: SmalltalkLanguage.st 10468 2009-08-22 08:34:50Z vranyj1 §'
 ! !
 
+
--- a/StandaloneStartup.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/StandaloneStartup.st	Thu Nov 05 14:41:30 2009 +0000
@@ -45,7 +45,7 @@
 "
     a subclassable template class for a standalone GUI-application's startup;
     For your own stand alone programs, define a subclass of this, 
-    and redefine the #main method there.
+    and redefine the #main: method there.
     (of course, the other methods can also be redefined.)
 
     [author:]
@@ -670,7 +670,12 @@
 !StandaloneStartup class methodsFor:'documentation'!
 
 version
-    ^ '$Id: StandaloneStartup.st 10467 2009-08-19 16:14:36Z vranyj1 $'
+    ^ '$Id: StandaloneStartup.st 10477 2009-11-05 14:41:30Z vranyj1 $'
+!
+
+version_CVS
+    ^ '$Id: StandaloneStartup.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 StandaloneStartup initialize!
+
--- a/Stream.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Stream.st	Thu Nov 05 14:41:30 2009 +0000
@@ -560,16 +560,6 @@
      with externalStreams."
 !
 
-readWait
-    ^ self "/ never have to wait
-!
-
-readWaitWithTimeoutMs:millis
-    "Return true if a timeout occured (i.e. false, if data is available)."
-
-    ^ false "/ never have to wait
-!
-
 text
     "switch to text mode. 
      Ignored here, but added to make internalStreams protocol compatible 
@@ -577,14 +567,6 @@
 
     "Modified: 15.5.1996 / 17:38:36 / cg"
     "Created: 13.9.1996 / 18:33:26 / cg"
-!
-
-writeWait
-    ^ self
-!
-
-writeWaitWithTimeoutMs:millis
-    ^ false "/ never have to wait
 ! !
 
 !Stream methodsFor:'misc functions'!
@@ -794,7 +776,7 @@
              streams."
 
     |n "{Class: SmallInteger }"
-     dstIndex binary|
+     dstIndex binary b|
 
     dstIndex := initialIndex.
     n := 0.
@@ -805,10 +787,14 @@
             ^ n
         ].
         binary ifTrue:[
-            aCollection byteAt:dstIndex put:self nextByte.
+            b := self nextByte.
         ] ifFalse:[
-            aCollection at:dstIndex put:self next.
+            b := self next.
+            b isInteger ifFalse:[
+                b := b asInteger
+            ].
         ].
+        aCollection byteAt:dstIndex put:b.
         dstIndex := dstIndex + 1.
         n := n + 1.
     ].
@@ -2535,6 +2521,95 @@
     ^ aVisitor visitStream:self with:aParameter
 ! !
 
+!Stream methodsFor:'waiting for I/O'!
+
+readWait
+    "suspend the current process, until the receiver
+     becomes ready for reading. If data is already available,
+     return immediate.
+     The other threads are not affected by the wait."
+
+    ^ self readWaitWithTimeoutMs:nil
+!
+
+readWaitTimeoutMs:timeout
+    "ST-80 compatibility"
+    ^ self readWaitWithTimeoutMs:timeout
+!
+
+readWaitWithTimeout:seconds
+    "suspend the current process, until the receiver
+     becomes ready for reading or a timeout (in seconds) expired.
+     If data is already available, return immediate.
+     With nil seconds, wait forever.
+     Return true if a timeout occured (i.e. false, if data is available).
+     The other threads are not affected by the wait."
+
+    |ms|
+
+    seconds notNil ifTrue:[
+        ms := seconds * 1000
+    ].
+    ^ self readWaitWithTimeoutMs:ms
+!
+
+readWaitWithTimeoutMs:millis
+    "suspend the current process, until the receiver
+     becomes ready for reading or a timeout (in milliseconds) expired.
+     If data is already available, return immediate.
+     With nil millis, wait forever.
+     Return true if a timeout occured (i.e. false, if data is available).
+     The other threads are not affected by the wait."
+
+    ^ false "/ never have to wait
+!
+
+readWriteWait
+    "suspend the current process, until the receiver
+     becomes ready for writing or reading.
+     Return immediate if the receiver is already ready.
+     The other threads are not affected by the wait."
+
+    self readWriteWaitWithTimeoutMs:nil
+!
+
+readWriteWaitWithTimeoutMs:millis
+    ^ false "/ never have to wait
+!
+
+writeWait
+    "suspend the current process, until the receiver
+     becomes ready for writing.
+     Return immediate if the receiver is already ready.
+     The other threads are not affected by the wait."
+
+    self writeWaitWithTimeoutMs:nil
+!
+
+writeWaitTimeoutMs:timeout
+    "ST-80 compatibility"
+    ^ self writeWaitWithTimeoutMs:timeout
+!
+
+writeWaitWithTimeout:timeout
+    "suspend the current process, until the receiver
+     becomes ready for writing or a timeout (in seconds) expired.
+     Return true if a timeout occured (i.e. false, if data is available).
+     Return immediate if the receiver is already ready.
+     The other threads are not affected by the wait."
+
+    |ms|
+
+    timeout notNil ifTrue:[
+	ms := timeout * 1000
+    ].
+    ^ self writeWaitWithTimeoutMs:ms
+!
+
+writeWaitWithTimeoutMs:millis
+    ^ false "/ never have to wait
+! !
+
 !Stream methodsFor:'writing'!
 
 commit
@@ -3008,12 +3083,13 @@
 !Stream class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Stream.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Stream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Stream.st,v 1.175 2009/10/05 09:21:03 cg Exp §'
+    ^ '$Id: Stream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 Stream initialize!
 
+
--- a/String.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/String.st	Thu Nov 05 14:41:30 2009 +0000
@@ -466,6 +466,22 @@
     ^ LF
 !
 
+stringHash:aString initialHash:speciesHash
+    "for squeak compatibility only; this is NOT the same hash as my instances use"
+
+    | stringSize hash low |
+
+    stringSize := aString size.
+    hash := speciesHash bitAnd: 16rFFFFFFF.
+    1 to: stringSize do: [:pos |
+        hash := hash + (aString at: pos) asInteger.
+        "Begin hashMultiply"
+        low := hash bitAnd: 16383.
+        hash := (16r260D * low + ((16r260D * (hash bitShift: -14) + (16r0065 * low) bitAnd: 16383) * 16384)) bitAnd: 16r0FFFFFFF.
+    ].
+    ^ hash.
+!
+
 tab
     "return a string consisting of the tab-Character"
 
@@ -504,7 +520,6 @@
     "
 ! !
 
-
 !String methodsFor:'accessing'!
 
 at:index
@@ -3658,10 +3673,11 @@
 !String class methodsFor:'documentation'!
 
 version
-    ^ '$Id: String.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: String.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/String.st,v 1.265 2009/10/09 09:46:21 cg Exp §'
+    ^ '$Id: String.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/SystemChangeNotifier.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/SystemChangeNotifier.st	Thu Nov 05 14:41:30 2009 +0000
@@ -75,10 +75,19 @@
 
 isBroadcasting
     ^ silenceLevel = 0
+!
+
+noMoreNotificationsFor: aStakeHolder
+    "dummy for now "
+!
+
+notify:aStakeHolder ofSystemChangesOfItem:anItemSymbol change: changeTypeSymbol using: changeMessage
+    "dummy for now "
 ! !
 
 !SystemChangeNotifier class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SystemChangeNotifier.st,v 1.2 2009/10/12 21:45:23 cg Exp §'
+    ^ '$Id: SystemChangeNotifier.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
+
--- a/Timestamp.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Timestamp.st	Thu Nov 05 14:41:30 2009 +0000
@@ -2423,12 +2423,13 @@
 !Timestamp class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Timestamp.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Timestamp.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Timestamp.st,v 1.126 2009/10/09 07:03:39 stefan Exp §'
+    ^ '$Id: Timestamp.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 Timestamp initialize!
 
+
--- a/UninterpretedBytes.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/UninterpretedBytes.st	Thu Nov 05 14:41:30 2009 +0000
@@ -2494,10 +2494,11 @@
 !UninterpretedBytes class methodsFor:'documentation'!
 
 version
-    ^ '$Id: UninterpretedBytes.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: UninterpretedBytes.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/UninterpretedBytes.st,v 1.73 2009/10/13 10:04:18 cg Exp §'
+    ^ '$Id: UninterpretedBytes.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/UnixFilename.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/UnixFilename.st	Thu Nov 05 14:41:30 2009 +0000
@@ -166,7 +166,10 @@
     "return true, if the receiver represents a hidden file.
      On UNIX, a name starting with a period is considered hidden."
 
-    ^ self baseName startsWith:'.'
+    |baseName|
+
+    baseName := self baseName.
+    ^ ((baseName startsWith:'.') and:[baseName ~= '..'])
 !
 
 isImplicit
@@ -204,5 +207,10 @@
 !UnixFilename class methodsFor:'documentation'!
 
 version
-    ^ '$Id: UnixFilename.st 10447 2009-06-14 13:09:55Z vranyj1 $'
+    ^ '$Id: UnixFilename.st 10477 2009-11-05 14:41:30Z vranyj1 $'
+!
+
+version_CVS
+    ^ '$Id: UnixFilename.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
+
--- a/UserMessage.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/UserMessage.st	Thu Nov 05 14:41:30 2009 +0000
@@ -170,10 +170,11 @@
 !UserMessage class methodsFor:'documentation'!
 
 version
-    ^ '$Id: UserMessage.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: UserMessage.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/UserMessage.st,v 1.6 2009/10/02 00:08:10 cg Exp §'
+    ^ '$Id: UserMessage.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/UserNotification.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/UserNotification.st	Thu Nov 05 14:41:30 2009 +0000
@@ -142,12 +142,13 @@
 !UserNotification class methodsFor:'documentation'!
 
 version
-    ^ '$Id: UserNotification.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: UserNotification.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/UserNotification.st,v 1.15 2009/10/14 17:34:46 cg Exp §'
+    ^ '$Id: UserNotification.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 UserNotification initialize!
 
+
--- a/UserPreferences.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/UserPreferences.st	Thu Nov 05 14:41:30 2009 +0000
@@ -623,23 +623,6 @@
     ^ super at:key put:value
 ! !
 
-!UserPreferences methodsFor:'accessing - desktop'!
-
-editorCommand
-
-    ^self at:#'desktop.editor-command' ifAbsent:[ nil ]
-
-    "Created: / 11-08-2009 / 17:05:50 / Jan Vrany <vranyj1@fel.cvut.cz>"
-!
-
-editorCommand: aString
-
-    self at:#'desktop.editor-command' put: aString
-
-    "Created: / 11-08-2009 / 17:06:23 / Jan Vrany <vranyj1@fel.cvut.cz>"
-! !
-
-
 !UserPreferences methodsFor:'accessing-misc-communication'!
 
 dotNetBridgeRunsInIDE
@@ -2524,6 +2507,10 @@
 
 buildDirectory
     ^ self at:#buildDirectory ifAbsent:nil
+
+    "
+     UserPreferences current buildDirectory
+    "
 !
 
 buildDirectory:aFilenameStringOrNil
@@ -2746,7 +2733,71 @@
     ^ self at:#verboseBacktraceInDebugger put:aBoolean
 ! !
 
-
+!UserPreferences methodsFor:'accessing-subversion'!
+
+svnConfigurations
+    "subversion source control configurations"
+
+    ^(self at:#'libsvn.configurations' ifAbsent:#())
+        collect:[:cfg|cfg decodeAsLiteralArray]
+
+    "Created: / 03-10-2008 / 11:14:14 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 19-08-2009 / 12:08:44 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+svnConfigurations: aCollection
+    "subversion source control configurations"
+
+    (SVN::RepositoryManager notNil
+    and:[ SVN::RepositoryManager isLoaded ]) ifTrue:[
+        SVN::RepositoryManager allInstances do:[:e|
+            e configurations: aCollection
+        ]
+    ].
+
+    ^ self
+        at: #'libsvn.configurations'
+        put: (aCollection asArray collect:[:cfg|cfg literalArrayEncoding])
+
+    "
+     UserPreferences current svnConfigurations: #()
+    "
+
+    "Created: / 03-10-2008 / 11:14:01 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 19-08-2009 / 12:09:22 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+svnEnabled
+    "subversion source control is enabled"
+
+    ^self at:#svnEnabled ifAbsent:[true]
+
+    "Created: / 03-10-2008 / 11:11:39 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+svnEnabled: aBoolean
+    "subversion source control is enabled"
+
+    ^self at:#svnEnabled put: aBoolean
+
+    "Created: / 03-10-2008 / 11:13:14 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+svnVerbose
+    "verbose messages from subversion source control (if enabled)"
+
+    ^self at:#svnVerbose ifAbsent: false
+
+    "Created: / 19-03-2009 / 14:00:05 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+svnVerbose: aBoolean
+    "verbose messages from subversion source control (if enabled)"
+
+    ^self at:#svnVerbose put: aBoolean
+
+    "Created: / 19-03-2009 / 13:59:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
+! !
 !UserPreferences methodsFor:'default settings'!
 
 listOfPredefinedSyntaxColoringSchemes
@@ -2875,6 +2926,7 @@
     self at:#commentEmphasis          put:#italic.
     self at:#selectorColor            put:(Color blue:80).
     self at:#selectorEmphasis         put:#normal.
+    self at:#controlFlowSelectorEmphasis put:#bold.
     self at:#methodSelectorColor      put:(Color black).
     self at:#methodSelectorEmphasis   put:#bold.
     self at:#globalIdentifierEmphasis put:#bold.
@@ -2966,13 +3018,9 @@
 !UserPreferences class methodsFor:'documentation'!
 
 version
-    ^ '$Id: UserPreferences.st 10474 2009-10-26 21:51:17Z vranyj1 $'
+    ^ '$Id: UserPreferences.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/UserPreferences.st,v 1.233 2009/10/14 18:15:05 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: UserPreferences.st 10474 2009-10-26 21:51:17Z vranyj1 $'
 ! !
+
--- a/Warning.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Warning.st	Thu Nov 05 14:41:30 2009 +0000
@@ -155,12 +155,13 @@
 !Warning class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Warning.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Warning.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Warning.st,v 1.14 2009/10/14 17:34:52 cg Exp §'
+    ^ '$Id: Warning.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 Warning initialize!
 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Win32Constants.st	Thu Nov 05 14:41:30 2009 +0000
@@ -0,0 +1,38 @@
+"{ Package: 'stx:libbasic' }"
+
+SharedPool subclass:#Win32Constants
+	instanceVariableNames:''
+	classVariableNames:'FILE_ATTRIBUTE_HIDDEN FILE_ATTRIBUTE_NORMAL
+		FILE_ATTRIBUTE_TEMPORARY FILE_ATTRIBUTE_DIRECTORY
+		FILE_ATTRIBUTE_READONLY'
+	poolDictionaries:''
+	category:'OS-Windows'
+!
+
+!Win32Constants class methodsFor:'documentation'!
+
+documentation
+"
+    contains (will, eventually) win32 OS constants.
+"
+! !
+
+!Win32Constants class methodsFor:'initialization'!
+
+initialize
+    "Invoked at system start or when the class is dynamically loaded."
+
+    FILE_ATTRIBUTE_READONLY := 1.
+    FILE_ATTRIBUTE_HIDDEN := 2.
+    FILE_ATTRIBUTE_DIRECTORY := 16.
+    FILE_ATTRIBUTE_NORMAL := 128.
+    FILE_ATTRIBUTE_TEMPORARY := 256.
+! !
+
+!Win32Constants class methodsFor:'documentation'!
+
+version_CVS
+    ^ '$Id: Win32Constants.st 10477 2009-11-05 14:41:30Z vranyj1 $'
+! !
+
+Win32Constants initialize!
--- a/Win32OperatingSystem.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/Win32OperatingSystem.st	Thu Nov 05 14:41:30 2009 +0000
@@ -15,7 +15,7 @@
 AbstractOperatingSystem subclass:#Win32OperatingSystem
 	instanceVariableNames:''
 	classVariableNames:'Initialized HostName DomainName CurrentDirectory'
-	poolDictionaries:''
+	poolDictionaries:'Win32Constants'
 	category:'OS-Windows'
 !
 
@@ -5095,63 +5095,14 @@
 isHidden:aPathName
     "return true, if the given file is hidden"
 
-%{
-    int ret;
-
-    if (__isString(aPathName)) {
-#ifdef DO_WRAP_CALLS
-	char _aPathName[MAXPATHLEN];
-
-	strncpy(_aPathName, __stringVal(aPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
-	do {
-	    __threadErrno = 0;
-	    ret = STX_API_CALL1( "GetFileAttributes", GetFileAttributes, _aPathName);
-	} while ((ret < 0) && (__threadErrno == EINTR));
-#else
-	ret = GetFileAttributes((char *) __stringVal(aPathName));
-	if (ret < 0) {
-	    __threadErrno = __WIN32_ERR(GetLastError());
-	}
-#endif
-	if (ret < 0) {
-	    @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
-	    RETURN ( false );
-	}
-	RETURN ( (ret & FILE_ATTRIBUTE_HIDDEN) ? true : false);
-    }
-
-    if (__isUnicode16String(aPathName)) {
-	wchar_t _wPathName[MAXPATHLEN+1];
-	int i, l;
-
-	l = __unicode16StringSize(aPathName);
-	if (l > MAXPATHLEN) l = MAXPATHLEN;
-	for (i=0; i<l; i++) {
-	    _wPathName[i] = __unicode16StringVal(aPathName)[i];
-	}
-	_wPathName[i] = 0;
-#ifdef DO_WRAP_CALLS
-	do {
-	    __threadErrno = 0;
-	    ret = STX_API_CALL1( "GetFileAttributesW", GetFileAttributesW, _wPathName);
-	} while ((ret < 0) && (__threadErrno == EINTR));
-#else
-	ret = GetFileAttributesW(_wPathName);
-	if (ret < 0) {
-	    __threadErrno = __WIN32_ERR(GetLastError());
-	}
-#endif
-	if (ret < 0) {
-	    @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
-	    RETURN ( false );
-	}
-	RETURN ( (ret & FILE_ATTRIBUTE_HIDDEN) ? true : false);
-    }
-%}.
-    ^ self primitiveFailed
-
-    "
-     self isHidden:'.'
+    |attr|
+
+    attr := self primGetFileAttributes:aPathName.
+    attr notNil ifTrue:[^ attr bitTest: FILE_ATTRIBUTE_HIDDEN ].
+    ^ false
+
+    "
+     self isHidden:'.'     
      self isHidden:'.' asUnicode16String
     "
 !
@@ -5231,6 +5182,21 @@
     "
 !
 
+isTemporary:aPathName
+    "return true, if the given file is a temporary file"
+
+    |attr|
+
+    attr := self primGetFileAttributes:aPathName.
+    attr notNil ifTrue:[^ attr bitTest: FILE_ATTRIBUTE_TEMPORARY ].
+    ^ false
+
+    "
+     self isTemporary:'.'     
+     self isTemporary:'.' asUnicode16String   
+    "
+!
+
 isValidPath:aPathName
     "return true, if 'aPathName' is a valid path name
      (i.e. the file or directory exists)"
@@ -5297,73 +5263,24 @@
     "return true, if the given file is writable.
      For symbolic links, the pointed-to-file is checked.
 
-     In Windows, files can possibly be created in and deleted from directories marked as
-     read only. See http://support.microsoft.com/kb/326549. So we always return true
-     for directories."
-
-%{
-    int ret;
-
-    if (__isString(aPathName)) {
-#ifdef DO_WRAP_CALLS
-	char _aPathName[MAXPATHLEN];
-
-	strncpy(_aPathName, __stringVal(aPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
-	do {
-	    __threadErrno = 0;
-	    ret = STX_API_CALL1( "GetFileAttributes", GetFileAttributes, _aPathName);
-	} while ((ret < 0) && (__threadErrno == EINTR));
-#else
-	ret = GetFileAttributes((char *) __stringVal(aPathName));
-	if (ret < 0) {
-	    __threadErrno = __WIN32_ERR(GetLastError());
-	}
-#endif
-    } else if (__isUnicode16String(aPathName)) {
-	/*
-	 * under windows, all files are readable ...
-	 * so, only check for the files existence here.
-	 */
-	wchar_t _wPathName[MAXPATHLEN+1];
-	int i, l;
-
-	l = __unicode16StringSize(aPathName);
-	if (l > MAXPATHLEN) l = MAXPATHLEN;
-	for (i=0; i<l; i++) {
-	    _wPathName[i] = __unicode16StringVal(aPathName)[i];
-	}
-	_wPathName[i] = 0;
-#ifdef DO_WRAP_CALLS
-	do {
-	    __threadErrno = 0;
-	    ret = STX_API_CALL1( "GetFileAttributesW", GetFileAttributesW, _wPathName);
-	} while ((ret < 0) && (__threadErrno == EINTR));
-#else
-	ret = GetFileAttributesW(_wPathName);
-	if (ret < 0) {
-	    __threadErrno = __WIN32_ERR(GetLastError());
-	}
-#endif
-    } else {
-	goto fail;
-    }
-
-    if (ret < 0) {
-	@global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
-	RETURN (false);
-    }
-    RETURN ( (ret & (FILE_ATTRIBUTE_DIRECTORY|FILE_ATTRIBUTE_READONLY) == FILE_ATTRIBUTE_READONLY) ? false : true);
-
-fail:;
-%}.
-    ^ self primitiveFailed
-
-    "
-     self isWritable:'c:\windows'
-     self isWritable:'c:\Dokumente und Einstellungen\stefan\Eigene Dateien'
-     self isWritable:'.'
-     self isWritable:'.' asUnicode16String
-    "
+     In Windows, files can possibly be created in and deleted from directories marked as read only. 
+     See http://support.microsoft.com/kb/326549. 
+     So we always return true for directories."
+
+    |attr|
+
+    attr := self primGetFileAttributes:aPathName.
+    attr notNil ifTrue:[
+        ^ (attr bitAnd: (FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_READONLY ))
+            ~~ FILE_ATTRIBUTE_READONLY
+    ].
+    ^ false
+
+    "
+     self isWritable:'.'            
+     self isWritable:'.' asUnicode16String    
+     self isWritable:'' asUnicode16String
+    "                  
 !
 
 linkInfoOf:aPathName
@@ -5682,6 +5599,75 @@
     "
 !
 
+primGetFileAttributes:aPathName
+    "get the file-attributes"
+
+    |errorNumber|
+
+%{
+    int ret;
+
+    if (__isString(aPathName)) {
+#ifdef DO_WRAP_CALLS
+        char _aPathName[MAXPATHLEN];
+
+        strncpy(_aPathName, __stringVal(aPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
+        do {
+            __threadErrno = 0;
+            ret = STX_API_CALL1( "GetFileAttributes", GetFileAttributes, _aPathName);
+        } while ((ret < 0) && (__threadErrno == EINTR));
+#else
+        ret = GetFileAttributes((char *) __stringVal(aPathName));
+        if (ret < 0) {
+            __threadErrno = __WIN32_ERR(GetLastError());
+        }
+#endif
+        if (ret >= 0) {
+            RETURN ( __mkSmallInteger(ret) );
+        }
+        __threadErrno = __WIN32_ERR(GetLastError());
+        RETURN (nil);
+    }
+
+    if (__isUnicode16String(aPathName)) {
+        wchar_t _wPathName[MAXPATHLEN+1];
+        int i, l;
+
+        l = __unicode16StringSize(aPathName);
+        if (l > MAXPATHLEN) l = MAXPATHLEN;
+        for (i=0; i<l; i++) {
+            _wPathName[i] = __unicode16StringVal(aPathName)[i];
+        }
+        _wPathName[i] = 0;
+#ifdef DO_WRAP_CALLS
+        do {
+            __threadErrno = 0;
+            ret = STX_API_CALL1( "GetFileAttributesW", GetFileAttributesW, _wPathName);
+        } while ((ret < 0) && (__threadErrno == EINTR));
+#else
+        ret = GetFileAttributesW(_wPathName);
+        if (ret < 0) {
+            __threadErrno = __WIN32_ERR(GetLastError());
+        }
+#endif
+        if (ret >= 0) {
+            RETURN ( __mkSmallInteger(ret) );
+        }
+        __threadErrno = __WIN32_ERR(GetLastError());
+        RETURN (nil);
+    }
+%}.
+    ^ self primitiveFailed
+
+    "
+     self primGetFileAttributes:'.'
+     self primGetFileAttributes:'bc.mak'
+
+     self primGetFileAttributes:'.' asUnicodeString
+     self primGetFileAttributes:'bc.mak' asUnicodeString   
+    "
+!
+
 primIdOf:aPathName
     "the actual code to return the fileNumber (i.e. inode number) of a file."
 
@@ -5815,52 +5801,103 @@
     "Created: / 27-07-2006 / 14:47:12 / fm"
 !
 
-setHidden:aPathName
-    "return true, if the hidden attribute could be setted to true"
+primSetFileAttributes:aPathName to:anInteger
+    "set the file-attributes; return true if the set did happen"
+
+    |errorNumber|
 
 %{
     int ret;
 
-    if (__isString(aPathName)) {
-	char _aPathName[MAXPATHLEN];
-
-	strncpy(_aPathName, __stringVal(aPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
-	ret = STX_API_CALL2( "SetFileAttributes", SetFileAttributes, _aPathName, FILE_ATTRIBUTE_HIDDEN );
-
-	if (ret != 0) {
-	    __threadErrno = __WIN32_ERR(GetLastError());
-	}
-
-	RETURN (true);
+    if (__isString(aPathName) 
+     && __isSmallInteger(anInteger)) {
+#ifdef DO_WRAP_CALLS
+        char _aPathName[MAXPATHLEN];
+
+        strncpy(_aPathName, __stringVal(aPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
+        do {
+            __threadErrno = 0;
+            ret = STX_API_CALL2( "SetFileAttributesA", SetFileAttributesA, _aPathName, __intVal(anInteger) );
+        } while ((ret < 0) && (__threadErrno == EINTR));
+#else
+        ret = SetFileAttributesA((char *) __stringVal(aPathName), __intVal(anInteger));
+        if (ret < 0) {
+            __threadErrno = __WIN32_ERR(GetLastError());
+        }
+#endif
+        if (ret >= 0) {
+            RETURN ( true );
+        }
+        __threadErrno = __WIN32_ERR(GetLastError());
+        RETURN (false);
+    }
+
+    if (__isUnicode16String(aPathName)) {
+        wchar_t _wPathName[MAXPATHLEN+1];
+        int i, l;
+
+        l = __unicode16StringSize(aPathName);
+        if (l > MAXPATHLEN) l = MAXPATHLEN;
+        for (i=0; i<l; i++) {
+            _wPathName[i] = __unicode16StringVal(aPathName)[i];
+        }
+        _wPathName[i] = 0;
+#ifdef DO_WRAP_CALLS
+        do {
+            __threadErrno = 0;
+            ret = STX_API_CALL2( "SetFileAttributesW", SetFileAttributesW, _wPathName, __intVal(anInteger) );
+        } while ((ret < 0) && (__threadErrno == EINTR));
+#else
+        ret = SetFileAttributesW(_wPathName, __intVal(anInteger));
+        if (ret < 0) {
+            __threadErrno = __WIN32_ERR(GetLastError());
+        }
+#endif
+        if (ret >= 0) {
+            RETURN ( true );
+        }
+        __threadErrno = __WIN32_ERR(GetLastError());
+        RETURN (false);
     }
 %}.
     ^ self primitiveFailed
 !
 
+setHidden:aPathName
+    "set the hidden attribute. Return true if it is set"
+
+    |attr|
+
+    attr := self primGetFileAttributes:aPathName.
+    (attr bitTest:FILE_ATTRIBUTE_HIDDEN ) ifFalse:[
+        ^ self primSetFileAttributes:aPathName to:(attr bitOr:2).
+    ].
+    ^ true  "/ aready set
+!
+
 setNormal:aPathName
-    "
-    sets all file attributes to the normal state
-
-    e.g. set the hidden attribute to false (unhidden)
-    "
-
-%{
-    int ret;
-
-    if (__isString(aPathName)) {
-	char _aPathName[MAXPATHLEN];
-
-	strncpy(_aPathName, __stringVal(aPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
-	ret = STX_API_CALL2( "SetFileAttributes", SetFileAttributes, _aPathName, FILE_ATTRIBUTE_NORMAL );
-
-	if (ret != 0) {
-	    __threadErrno = __WIN32_ERR(GetLastError());
-	}
-
-	RETURN (true);
-    }
-%}.
-    ^ self primitiveFailed
+    " sets all file attributes to the normal state
+      e.g. set the hidden attribute to false (unhidden)"
+
+    |attr|
+
+    attr := self primGetFileAttributes:aPathName.
+    (attr bitTest:FILE_ATTRIBUTE_NORMAL ) ifFalse:[
+        ^ self primSetFileAttributes:aPathName to:(attr bitOr:2).
+    ].
+    ^ true  "/ aready set
+!
+
+setTemporary:aPathName
+    " set the temporary attribute of aPathName"
+
+    |attr|
+
+    attr := self primGetFileAttributes:aPathName.
+    (attr bitTest:FILE_ATTRIBUTE_TEMPORARY ) ifFalse:[
+        ^ self primSetFileAttributes:aPathName to:(attr bitOr:2).
+    ].
+    ^ true  "/ aready set
 !
 
 timeOfLastAccess:aPathName
@@ -16262,14 +16299,15 @@
 !Win32OperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Win32OperatingSystem.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: Win32OperatingSystem.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.378 2009/10/06 08:31:04 cg Exp §'
+    ^ '$Id: Win32OperatingSystem.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
 Win32OperatingSystem initialize!
 Win32OperatingSystem::PerformanceData initialize!
 Win32OperatingSystem::RegistryEntry initialize!
 
+
--- a/WriteStream.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/WriteStream.st	Thu Nov 05 14:41:30 2009 +0000
@@ -622,10 +622,11 @@
 !WriteStream class methodsFor:'documentation'!
 
 version
-    ^ '$Id: WriteStream.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: WriteStream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/WriteStream.st,v 1.71 2009/10/05 09:19:55 cg Exp §'
+    ^ '$Id: WriteStream.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+
--- a/abbrev.stc	Mon Oct 26 21:51:17 2009 +0000
+++ b/abbrev.stc	Thu Nov 05 14:41:30 2009 +0000
@@ -1,8 +1,6 @@
 Autoload Autoload stx:libbasic 'Kernel-Classes' 0
-CmdLineParserTest CmdLineParserTest stx:libbasic 'System-Support-Command line' 2
 Object Object stx:libbasic 'Kernel-Objects' 0
 ProtoObject ProtoObject stx:libbasic 'Kernel-Objects' 0
-AbstractDesktop AbstractDesktop stx:libbasic 'System-Desktop' 0
 AbstractOperatingSystem AbstractOperatingSystem stx:libbasic 'System-Support' 0
 AbstractSourceFileReader AbstractSourceFileReader stx:libbasic 'Kernel-Classes' 0
 BadRomanNumberFormatError BadRomanNumberFormatError stx:libbasic 'Magnitude-Numbers' 1
@@ -62,8 +60,6 @@
 CharacterEncoderImplementations::NEXT CharacterEncoderImplementations__NEXT stx:libbasic '* as yet unknown category *' 0
 ClassBuilder ClassBuilder stx:libbasic 'Kernel-Support' 0
 ClassCategoryReader ClassCategoryReader stx:libbasic 'Kernel-Support' 0
-CmdLineOption CmdLineOption stx:libbasic 'System-Support-Command line' 0
-CmdLineParser CmdLineParser stx:libbasic 'System-Support-Command line' 0
 Collection Collection stx:libbasic 'Collections-Abstract' 0
 Context Context stx:libbasic 'Kernel-Methods' 0
 Continuation Continuation stx:libbasic 'Kernel-Processes' 0
@@ -72,7 +68,7 @@
 ExternalAddress ExternalAddress stx:libbasic 'System-Support' 0
 FileDirectory FileDirectory stx:libbasic 'Obsolete' 0
 Filename Filename stx:libbasic 'System-Support' 0
-GenericException GenericException stx:libbasic 'Kernel-Exceptions' 0
+GenericException GenericException stx:libbasic 'Kernel-Exceptions' 1
 Geometric Geometric stx:libbasic 'Graphics-Geometry-Objects' 0
 ImaginaryResultError ImaginaryResultError stx:libbasic 'Kernel-Exceptions-Errors' 1
 Infinity Infinity stx:libbasic 'Magnitude-Numbers' 0
@@ -84,15 +80,14 @@
 Magnitude Magnitude stx:libbasic 'Magnitude-General' 0
 MappedExternalBytes MappedExternalBytes stx:libbasic 'System-Support' 0
 Message Message stx:libbasic 'Kernel-Methods' 0
-MethodOverridesTest MethodOverridesTest stx:libbasic 'Kernel-Tests' 2
 MetaNumber MetaNumber stx:libbasic 'Magnitude-Numbers' 0
 MiniDebugger MiniDebugger stx:libbasic 'System-Debugging-Support' 0
 MiniInspector MiniInspector stx:libbasic 'System-Debugging-Support' 0
 NaiveRomanNumberFormatNotification NaiveRomanNumberFormatNotification stx:libbasic 'Magnitude-Numbers' 1
 NameSpace NameSpace stx:libbasic 'Kernel-Classes' 0
 NotANumber NotANumber stx:libbasic 'Magnitude-Numbers' 0
-NumberConversionError NumberConversionError stx:libbasic 'Magnitude-Numbers' 0
-NumberFormatError NumberFormatError stx:libbasic 'Magnitude-Numbers' 0
+NumberConversionError NumberConversionError stx:libbasic 'Magnitude-Numbers' 1
+NumberFormatError NumberFormatError stx:libbasic 'Magnitude-Numbers' 1
 OSErrorHolder OSErrorHolder stx:libbasic 'OS-Support' 0
 ObjectMemory ObjectMemory stx:libbasic 'System-Support' 0
 OpenVMSFileHandle OpenVMSFileHandle stx:libbasic 'OS-OpenVMS' 0
@@ -101,34 +96,34 @@
 PackageId PackageId stx:libbasic 'System-Support-Projects' 0
 PluginSupport PluginSupport stx:libbasic 'System-Support' 0
 ProcessorScheduler ProcessorScheduler stx:libbasic 'Kernel-Processes' 0
-ProgrammingLanguage ProgrammingLanguage stx:libbasic 'Kernel-Languages' 0
+ProgrammingLanguage ProgrammingLanguage stx:libbasic 'Kernel-Languages' 1
 Project Project stx:libbasic 'System-Support' 0
-ProjectDefinition ProjectDefinition stx:libbasic 'System-Support-Projects' 0
+ProjectDefinition ProjectDefinition stx:libbasic 'System-Support-Projects' 3
 QualifiedName QualifiedName stx:libbasic 'Kernel-Support' 0
 ReadEvalPrintLoop ReadEvalPrintLoop stx:libbasic 'System-Support' 0
 RecursionLock RecursionLock stx:libbasic 'Kernel-Processes' 0
 Registry Registry stx:libbasic 'System-Support' 0
-RomanNumberFormatError RomanNumberFormatError stx:libbasic 'Magnitude-Numbers' 0
+RomanNumberFormatError RomanNumberFormatError stx:libbasic 'Magnitude-Numbers' 1
 Semaphore Semaphore stx:libbasic 'Kernel-Processes' 0
 SharedPool SharedPool stx:libbasic 'Kernel-Classes' 0
 Signal Signal stx:libbasic 'Kernel-Exceptions' 0
 Smalltalk Smalltalk stx:libbasic 'System-Support' 0
 SomeNumber SomeNumber stx:libbasic 'Magnitude-Numbers' 0
-StandaloneStartup StandaloneStartup stx:libbasic 'System-Support' 0
+StandaloneStartup StandaloneStartup stx:libbasic 'System-Support' 1
 Stream Stream stx:libbasic 'Streams' 0
 SystemNotification SystemNotification stx:libbasic 'Kernel-Exceptions-Notifications' 1
 TextCollectorStream TextCollectorStream stx:libbasic 'Streams-Misc' 0
 UnboundedExternalStream UnboundedExternalStream stx:libbasic 'Streams-External' 0
 UndefinedObject UndefinedObject stx:libbasic 'Kernel-Objects' 0
-UnixFileDescriptorHandle UnixFileDescriptorHandle stx:libbasic  'unknownCategory'  0
-UnixFileHandle UnixFileHandle stx:libbasic  'unknownCategory'  0
-UnixOperatingSystem UnixOperatingSystem stx:libbasic  'unknownCategory'  0
+UnixFileDescriptorHandle UnixFileDescriptorHandle stx:libbasic 'OS-Unix' 0
+UnixFileHandle UnixFileHandle stx:libbasic 'OS-Unix' 0
+UnixOperatingSystem UnixOperatingSystem stx:libbasic 'OS-Unix' 0
 UserMessage UserMessage stx:libbasic 'Interface-Internationalization' 0
 Visitor Visitor stx:libbasic 'System-Visiting' 0
 WeakValueIdentityDictionary WeakValueIdentityDictionary stx:libbasic 'Collections-Weak' 0
 Win32Process Win32Process stx:libbasic 'OS-Windows' 0
 AbstractTime AbstractTime stx:libbasic 'Magnitude-Time' 0
-ApplicationDefinition ApplicationDefinition stx:libbasic 'System-Support-Projects' 0
+ApplicationDefinition ApplicationDefinition stx:libbasic 'System-Support-Projects' 3
 ArithmeticValue ArithmeticValue stx:libbasic 'Magnitude-Numbers' 0
 AspectVisitor AspectVisitor stx:libbasic 'System-Visiting' 0
 AutoDeletedFilename AutoDeletedFilename stx:libbasic 'System-Support' 0
@@ -140,20 +135,20 @@
 CharacterEncoderImplementations::SingleByteEncoder CharacterEncoderImplementations__SingleByteEncoder stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::TwoByteEncoder CharacterEncoderImplementations__TwoByteEncoder stx:libbasic 'Collections-Text-Encodings' 0
 CompiledCode CompiledCode stx:libbasic 'Kernel-Methods' 0
-ControlInterrupt ControlInterrupt stx:libbasic 'Kernel-Exceptions-Control' 0
+ControlInterrupt ControlInterrupt stx:libbasic 'Kernel-Exceptions-Control' 1
 Date Date stx:libbasic 'Magnitude-Time' 0
-Exception Exception stx:libbasic 'Kernel-Exceptions' 0
+Exception Exception stx:libbasic 'Kernel-Exceptions' 1
 ExternalFunction ExternalFunction stx:libbasic 'System-Support' 0
 False False stx:libbasic 'Kernel-Objects' 0
 HandleRegistry HandleRegistry stx:libbasic 'System-Support' 0
 HashStream HashStream stx:libbasic 'System-Crypt-Streams' 0
 InlineObjectPrototype InlineObjectPrototype stx:libbasic 'Programming-Support' 0
 KeyedCollection KeyedCollection stx:libbasic 'Collections-Abstract' 0
-LibraryDefinition LibraryDefinition stx:libbasic 'System-Support-Projects' 0
+LibraryDefinition LibraryDefinition stx:libbasic 'System-Support-Projects' 3
 LookupKey LookupKey stx:libbasic 'Collections-Support' 0
 MessageSend MessageSend stx:libbasic 'Kernel-Methods' 0
-NoHandlerError NoHandlerError stx:libbasic 'Kernel-Exceptions-Errors' 0
-Notification Notification stx:libbasic 'Kernel-Exceptions' 0
+NoHandlerError NoHandlerError stx:libbasic 'Kernel-Exceptions-Errors' 1
+Notification Notification stx:libbasic 'Kernel-Exceptions' 1
 OSHandle OSHandle stx:libbasic 'Compatibility-ST80' 0
 PCFilename PCFilename stx:libbasic 'OS-Windows' 0
 PeekableStream PeekableStream stx:libbasic 'Streams' 0
@@ -163,15 +158,12 @@
 SequenceableCollection SequenceableCollection stx:libbasic 'Collections-Abstract' 0
 Set Set stx:libbasic 'Collections-Unordered' 0
 SmalltalkChunkFileSourceReader SmalltalkChunkFileSourceReader stx:libbasic 'Kernel-Classes' 0
-SmalltalkLanguage SmalltalkLanguage stx:libbasic 'Kernel-Languages' 0
-SmalltalkDesktop SmalltalkDesktop stx:libbasic 'System-Desktop' 0
+SmalltalkLanguage SmalltalkLanguage stx:libbasic 'Kernel-Languages' 1
 True True stx:libbasic 'Kernel-Objects' 0
-UnixDesktop UnixDesktop stx:libbasic 'System-Desktop' 0
 UnixFilename UnixFilename stx:libbasic 'OS-Unix' 0
-UserNotification UserNotification stx:libbasic 'Kernel-Exceptions-Notifications' 0
+UserNotification UserNotification stx:libbasic 'Kernel-Exceptions-Notifications' 1
 WeakInterestConverter WeakInterestConverter stx:libbasic 'Interface-Support-Models' 0
-ActivityNotification ActivityNotification stx:libbasic 'Kernel-Exceptions-Notifications' 0
-WindowsDesktop WindowsDesktop stx:libbasic 'System-Desktop' 0
+ActivityNotification ActivityNotification stx:libbasic 'Kernel-Exceptions-Notifications' 1
 ArrayedCollection ArrayedCollection stx:libbasic 'Collections-Abstract' 0
 Association Association stx:libbasic 'Collections-Support' 0
 Block Block stx:libbasic 'Kernel-Methods' 0
@@ -188,14 +180,14 @@
 CharacterEncoderImplementations::MS_Cyrillic CharacterEncoderImplementations__MS_Cyrillic stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::MS_Greek CharacterEncoderImplementations__MS_Greek stx:libbasic 'Collections-Text-Encodings' 0
 ClassDescription ClassDescription stx:libbasic 'Kernel-Classes' 0
-ControlRequest ControlRequest stx:libbasic 'Kernel-Exceptions-Control' 0
+ControlRequest ControlRequest stx:libbasic 'Kernel-Exceptions-Control' 1
 Dictionary Dictionary stx:libbasic 'Collections-Unordered' 0
 EncodedStream EncodedStream stx:libbasic 'Collections-Text-Encodings' 0
-EndOfStreamNotification EndOfStreamNotification stx:libbasic 'Kernel-Exceptions-Errors' 0
-Error Error stx:libbasic 'Kernel-Exceptions-Errors' 0
+EndOfStreamNotification EndOfStreamNotification stx:libbasic 'Kernel-Exceptions-Errors' 1
+Error Error stx:libbasic 'Kernel-Exceptions-Errors' 1
 ExternalFunctionCallback ExternalFunctionCallback stx:libbasic 'System-Support' 0
 ExternalLibraryFunction ExternalLibraryFunction stx:libbasic 'System-Support' 0
-HaltInterrupt HaltInterrupt stx:libbasic 'Kernel-Exceptions-Control' 0
+HaltInterrupt HaltInterrupt stx:libbasic 'Kernel-Exceptions-Control' 1
 IdentitySet IdentitySet stx:libbasic 'Collections-Unordered' 0
 LinkedList LinkedList stx:libbasic 'Collections-Linked' 0
 MD5Stream MD5Stream stx:libbasic 'System-Crypt-Streams' 0
@@ -207,33 +199,32 @@
 OrderedCollection OrderedCollection stx:libbasic 'Collections-Sequenceable' 0
 Point Point stx:libbasic 'Graphics-Geometry' 0
 PositionableStream PositionableStream stx:libbasic 'Streams' 0
-Query Query stx:libbasic 'Kernel-Exceptions' 0
+Query Query stx:libbasic 'Kernel-Exceptions' 1
 ReadOnlySequenceableCollection ReadOnlySequenceableCollection stx:libbasic 'Collections-Abstract' 0
-RecursiveStoreError RecursiveStoreError stx:libbasic 'Kernel-Exceptions' 0
+RecursiveStoreError RecursiveStoreError stx:libbasic 'Kernel-Exceptions' 1
 SHA1Stream SHA1Stream stx:libbasic 'System-Crypt-Streams' 0
 Time Time stx:libbasic 'Magnitude-Time' 0
 Timestamp Timestamp stx:libbasic 'Magnitude-Time' 0
-UserConfirmation UserConfirmation stx:libbasic 'Kernel-Exceptions-Notifications' 0
-UserInformation UserInformation stx:libbasic 'Kernel-Exceptions-Notifications' 0
-UserInterrupt UserInterrupt stx:libbasic 'Kernel-Exceptions-Control' 0
-Warning Warning stx:libbasic 'Kernel-Exceptions' 0
+UserConfirmation UserConfirmation stx:libbasic 'Kernel-Exceptions-Notifications' 1
+UserInformation UserInformation stx:libbasic 'Kernel-Exceptions-Notifications' 1
+UserInterrupt UserInterrupt stx:libbasic 'Kernel-Exceptions-Control' 1
+Warning Warning stx:libbasic 'Kernel-Exceptions' 1
 Win32Handle Win32Handle stx:libbasic 'OS-Windows' 0
 XDGDesktop XDGDesktop stx:libbasic 'System-Desktop' 0
-YesToAllConfirmation YesToAllConfirmation stx:libbasic 'Kernel-Exceptions-Notifications' 0
-stx_libbasic stx_libbasic stx:libbasic '* Projects & Packages *' 0
-AbortAllOperationRequest AbortAllOperationRequest stx:libbasic 'Kernel-Exceptions-Control' 0
+YesToAllConfirmation YesToAllConfirmation stx:libbasic 'Kernel-Exceptions-Notifications' 1
+stx_libbasic stx_libbasic stx:libbasic '* Projects & Packages *' 3
+AbortAllOperationRequest AbortAllOperationRequest stx:libbasic 'Kernel-Exceptions-Control' 1
 AbstractSourceFileWriter AbstractSourceFileWriter stx:libbasic 'Kernel-Classes' 0
 Array Array stx:libbasic 'Collections-Arrayed' 0
-BreakPointInterrupt BreakPointInterrupt stx:libbasic 'Kernel-Exceptions-Control' 0
+BreakPointInterrupt BreakPointInterrupt stx:libbasic 'Kernel-Exceptions-Control' 1
 CheapBlock CheapBlock stx:libbasic 'Kernel-Methods' 0
 Class Class stx:libbasic 'Kernel-Classes' 0
 CmdLineOptionError CmdLineOptionError stx:libbasic 'System-Support-Command line' 1
-ClassBuildError ClassBuildError stx:libbasic 'Kernel-Support' 0
+ClassBuildError ClassBuildError stx:libbasic 'Kernel-Support' 1
 DoubleArray DoubleArray stx:libbasic 'Collections-Arrayed' 0
-ElementBoundsError ElementBoundsError stx:libbasic 'Kernel-Exceptions-Errors' 0
+ElementBoundsError ElementBoundsError stx:libbasic 'Kernel-Exceptions-Errors' 1
 FloatArray FloatArray stx:libbasic 'Collections-Arrayed' 0
 Fraction Fraction stx:libbasic 'Magnitude-Numbers' 0
-GNOMEDesktop GNOMEDesktop stx:libbasic 'System-Desktop' 0
 IdentityDictionary IdentityDictionary stx:libbasic 'Collections-Unordered' 0
 InlineObjectClassDescription InlineObjectClassDescription stx:libbasic 'Programming-Support' 0
 Integer Integer stx:libbasic 'Magnitude-Numbers' 0
@@ -241,125 +232,126 @@
 LimitedPrecisionReal LimitedPrecisionReal stx:libbasic 'Magnitude-Numbers' 0
 MeasurementValue MeasurementValue stx:libbasic 'Magnitude-Numbers' 0
 Metaclass Metaclass stx:libbasic 'Kernel-Classes' 0
-OsError OsError stx:libbasic 'OS-Support' 0
-ProceedError ProceedError stx:libbasic 'Kernel-Exceptions-Errors' 0
-ProceedableError ProceedableError stx:libbasic 'Kernel-Exceptions-Errors' 0
-QueryWithoutDefault QueryWithoutDefault stx:libbasic 'Kernel-Exceptions' 0
+OsError OsError stx:libbasic 'OS-Support' 1
+ProceedError ProceedError stx:libbasic 'Kernel-Exceptions-Errors' 1
+ProceedableError ProceedableError stx:libbasic 'Kernel-Exceptions-Errors' 1
+QueryWithoutDefault QueryWithoutDefault stx:libbasic 'Kernel-Exceptions' 1
 ReadStream ReadStream stx:libbasic 'Streams' 0
-RecursionError RecursionError stx:libbasic 'Kernel-Exceptions-Errors' 0
-RecursiveExceptionError RecursiveExceptionError stx:libbasic 'Kernel-Exceptions-Errors' 0
-RestartProcessRequest RestartProcessRequest stx:libbasic 'Kernel-Exceptions-Control' 0
+RecursionError RecursionError stx:libbasic 'Kernel-Exceptions-Errors' 1
+RecursiveExceptionError RecursiveExceptionError stx:libbasic 'Kernel-Exceptions-Errors' 1
+RestartProcessRequest RestartProcessRequest stx:libbasic 'Kernel-Exceptions-Control' 1
 SemaphoreSet SemaphoreSet stx:libbasic 'Kernel-Processes' 0
 SignalSet SignalSet stx:libbasic 'Kernel-Exceptions' 0
-SnapshotError SnapshotError stx:libbasic 'System-Support' 0
+SnapshotError SnapshotError stx:libbasic 'System-Support' 1
 SortedCollection SortedCollection stx:libbasic 'Collections-Sequenceable' 0
 StringCollection StringCollection stx:libbasic 'Collections-Text' 0
-TerminateProcessRequest TerminateProcessRequest stx:libbasic 'Kernel-Exceptions-Control' 0
+TerminateProcessRequest TerminateProcessRequest stx:libbasic 'Kernel-Exceptions-Control' 1
 UninterpretedBytes UninterpretedBytes stx:libbasic 'Collections-Abstract' 0
-VMInternalError VMInternalError stx:libbasic 'Kernel-Exceptions-Errors' 0
+VMInternalError VMInternalError stx:libbasic 'Kernel-Exceptions-Errors' 1
 VarArgBlock VarArgBlock stx:libbasic 'Kernel-Methods' 0
 WeakArray WeakArray stx:libbasic 'Collections-Weak' 0
 WeakIdentitySet WeakIdentitySet stx:libbasic 'Collections-Weak' 0
 WeakValueDictionary WeakValueDictionary stx:libbasic 'Collections-Weak' 0
 Win32FILEHandle Win32FILEHandle stx:libbasic 'OS-Windows' 0
 WriteStream WriteStream stx:libbasic 'Streams' 0
-AbortOperationRequest AbortOperationRequest stx:libbasic 'Kernel-Exceptions-Control' 0
-AllocationFailure AllocationFailure stx:libbasic 'System-Support' 0
-ArithmeticError ArithmeticError stx:libbasic 'Kernel-Exceptions-Errors' 0
-AssertionFailedError AssertionFailedError stx:libbasic 'Kernel-Exceptions-Errors' 0
+AbortOperationRequest AbortOperationRequest stx:libbasic 'Kernel-Exceptions-Control' 1
+AllocationFailure AllocationFailure stx:libbasic 'System-Support' 1
+ArithmeticError ArithmeticError stx:libbasic 'Kernel-Exceptions-Errors' 1
+AssertionFailedError AssertionFailedError stx:libbasic 'Kernel-Exceptions-Errors' 1
 AutoloadMetaclass AutoloadMetaclass stx:libbasic 'Kernel-Classes' 0
 ByteArray ByteArray stx:libbasic 'Collections-Arrayed' 0
 CharacterWriteStream CharacterWriteStream stx:libbasic 'Streams' 0
-ContextError ContextError stx:libbasic 'Kernel-Methods' 0
-ConversionError ConversionError stx:libbasic 'Kernel-Exceptions-Errors' 0
-DeepCopyError DeepCopyError stx:libbasic 'Kernel-Methods' 0
+ContextError ContextError stx:libbasic 'Kernel-Methods' 1
+ConversionError ConversionError stx:libbasic 'Kernel-Exceptions-Errors' 1
+DeepCopyError DeepCopyError stx:libbasic 'Kernel-Methods' 1
 ExceptionHandlerSet ExceptionHandlerSet stx:libbasic 'Kernel-Exceptions' 0
-ExecutionError ExecutionError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 0
+ExecutionError ExecutionError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 1
 ExternalBytes ExternalBytes stx:libbasic 'System-Support' 0
 FixedPoint FixedPoint stx:libbasic 'Magnitude-Numbers' 0
 Float Float stx:libbasic 'Magnitude-Numbers' 0
 GetOpt GetOpt stx:libbasic 'System-Support' 0
 LargeInteger LargeInteger stx:libbasic 'Magnitude-Numbers' 0
 LongFloat LongFloat stx:libbasic 'Magnitude-Numbers' 0
-MessageNotUnderstood MessageNotUnderstood stx:libbasic 'Kernel-Exceptions-Errors' 0
-NotFoundError NotFoundError stx:libbasic 'Kernel-Exceptions-Errors' 0
-OSSignalInterrupt OSSignalInterrupt stx:libbasic 'Kernel-Exceptions-Control' 0
-OsIllegalOperation OsIllegalOperation stx:libbasic 'OS-Support' 0
-OsInaccessibleError OsInaccessibleError stx:libbasic 'OS-Support' 0
-OsInvalidArgumentsError OsInvalidArgumentsError stx:libbasic 'OS-Support' 0
-OsNeedRetryError OsNeedRetryError stx:libbasic 'OS-Support' 0
-OsNoResourcesError OsNoResourcesError stx:libbasic 'OS-Support' 0
-OsNotification OsNotification stx:libbasic 'OS-Support' 0
-OsTransferFaultError OsTransferFaultError stx:libbasic 'OS-Support' 0
+MessageNotUnderstood MessageNotUnderstood stx:libbasic 'Kernel-Exceptions-Errors' 1
+NotFoundError NotFoundError stx:libbasic 'Kernel-Exceptions-Errors' 1
+OSSignalInterrupt OSSignalInterrupt stx:libbasic 'Kernel-Exceptions-Control' 1
+OsIllegalOperation OsIllegalOperation stx:libbasic 'OS-Support' 1
+OsInaccessibleError OsInaccessibleError stx:libbasic 'OS-Support' 1
+OsInvalidArgumentsError OsInvalidArgumentsError stx:libbasic 'OS-Support' 1
+OsNeedRetryError OsNeedRetryError stx:libbasic 'OS-Support' 1
+OsNoResourcesError OsNoResourcesError stx:libbasic 'OS-Support' 1
+OsNotification OsNotification stx:libbasic 'OS-Support' 1
+OsTransferFaultError OsTransferFaultError stx:libbasic 'OS-Support' 1
 PrivateMetaclass PrivateMetaclass stx:libbasic 'Kernel-Classes' 0
 ReadWriteStream ReadWriteStream stx:libbasic 'Streams' 0
 ShortFloat ShortFloat stx:libbasic 'Magnitude-Numbers' 0
-SignalError SignalError stx:libbasic 'Kernel-Exceptions-Errors' 0
+SignalError SignalError stx:libbasic 'Kernel-Exceptions-Errors' 1
 SmallInteger SmallInteger stx:libbasic 'Magnitude-Numbers' 0
 SmalltalkChunkFileSourceWriter SmalltalkChunkFileSourceWriter stx:libbasic 'Kernel-Classes' 0
-StreamError StreamError stx:libbasic 'Kernel-Exceptions-Errors' 0
-SubclassResponsibilityError SubclassResponsibilityError stx:libbasic 'Kernel-Exceptions-Errors' 0
-TimeoutError TimeoutError stx:libbasic 'Kernel-Exceptions-Errors' 0
-UnimplementedFunctionalityError UnimplementedFunctionalityError stx:libbasic 'Kernel-Exceptions-Errors' 0
+StreamError StreamError stx:libbasic 'Kernel-Exceptions-Errors' 1
+SubclassResponsibilityError SubclassResponsibilityError stx:libbasic 'Kernel-Exceptions-Errors' 1
+TimeoutError TimeoutError stx:libbasic 'Kernel-Exceptions-Errors' 1
+UnimplementedFunctionalityError UnimplementedFunctionalityError stx:libbasic 'Kernel-Exceptions-Errors' 1
 UserPreferences UserPreferences stx:libbasic 'System-Support' 0
 VarArgCheapBlock VarArgCheapBlock stx:libbasic 'Kernel-Methods' 0
 WeakIdentityDictionary WeakIdentityDictionary stx:libbasic 'Collections-Weak' 0
-ArgumentError ArgumentError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 0
-CannotResumeError CannotResumeError stx:libbasic 'Kernel-Methods' 0
-CannotReturnError CannotReturnError stx:libbasic 'Kernel-Methods' 0
+ArgumentError ArgumentError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 1
+CannotResumeError CannotResumeError stx:libbasic 'Kernel-Methods' 1
+CannotReturnError CannotReturnError stx:libbasic 'Kernel-Methods' 1
 CharacterArray CharacterArray stx:libbasic 'Collections-Text' 0
-CharacterEncoderError CharacterEncoderError stx:libbasic 'Collections-Text-Encodings' 0
-DateConversionError DateConversionError stx:libbasic 'Magnitude-Time' 0
-DomainError DomainError stx:libbasic 'Kernel-Exceptions-Errors' 0
-EndOfStreamError EndOfStreamError stx:libbasic 'Kernel-Exceptions-Errors' 0
+CharacterEncoderError CharacterEncoderError stx:libbasic 'Collections-Text-Encodings' 1
+DateConversionError DateConversionError stx:libbasic 'Magnitude-Time' 1
+DomainError DomainError stx:libbasic 'Kernel-Exceptions-Errors' 1
+EndOfStreamError EndOfStreamError stx:libbasic 'Kernel-Exceptions-Errors' 1
 ExternalStream ExternalStream stx:libbasic 'Streams-External' 0
-ExternalStructure ExternalStructure stx:libbasic 'System-Support' 0
-IncompleteNextCountError IncompleteNextCountError stx:libbasic 'Kernel-Exceptions-Errors' 0
-IndexNotFoundError IndexNotFoundError stx:libbasic 'Kernel-Exceptions-Errors' 0
-InvalidCodeError InvalidCodeError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 0
-InvalidModeError InvalidModeError stx:libbasic 'Kernel-Exceptions-Errors' 0
-InvalidOperationError InvalidOperationError stx:libbasic 'Kernel-Exceptions-Errors' 0
-KeyNotFoundError KeyNotFoundError stx:libbasic 'Kernel-Exceptions-Errors' 0
-MallocFailure MallocFailure stx:libbasic 'System-Support' 0
-NonBooleanReceiverError NonBooleanReceiverError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 0
-OpenError OpenError stx:libbasic 'Kernel-Exceptions-Errors' 0
-PositionError PositionError stx:libbasic 'Kernel-Exceptions-Errors' 0
-PositionOutOfBoundsError PositionOutOfBoundsError stx:libbasic 'Kernel-Exceptions-Errors' 0
-PrimitiveFailure PrimitiveFailure stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 0
-RangeError RangeError stx:libbasic 'Kernel-Exceptions-Errors' 0
-ReadError ReadError stx:libbasic 'Kernel-Exceptions-Errors' 0
-StreamIOError StreamIOError stx:libbasic 'Kernel-Exceptions-Errors' 0
-StreamNotOpenError StreamNotOpenError stx:libbasic 'Kernel-Exceptions-Errors' 0
-TimeConversionError TimeConversionError stx:libbasic 'Magnitude-Time' 0
-UnorderedNumbersError UnorderedNumbersError stx:libbasic 'Kernel-Exceptions-Errors' 0
+ExternalStructure ExternalStructure stx:libbasic 'System-Support' 1
+IncompleteNextCountError IncompleteNextCountError stx:libbasic 'Kernel-Exceptions-Errors' 1
+IndexNotFoundError IndexNotFoundError stx:libbasic 'Kernel-Exceptions-Errors' 1
+InvalidCodeError InvalidCodeError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 1
+InvalidModeError InvalidModeError stx:libbasic 'Kernel-Exceptions-Errors' 1
+InvalidOperationError InvalidOperationError stx:libbasic 'Kernel-Exceptions-Errors' 1
+KeyNotFoundError KeyNotFoundError stx:libbasic 'Kernel-Exceptions-Errors' 1
+MallocFailure MallocFailure stx:libbasic 'System-Support' 1
+NonBooleanReceiverError NonBooleanReceiverError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 1
+OpenError OpenError stx:libbasic 'Kernel-Exceptions-Errors' 1
+PositionError PositionError stx:libbasic 'Kernel-Exceptions-Errors' 1
+PositionOutOfBoundsError PositionOutOfBoundsError stx:libbasic 'Kernel-Exceptions-Errors' 1
+PrimitiveFailure PrimitiveFailure stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 1
+RangeError RangeError stx:libbasic 'Kernel-Exceptions-Errors' 1
+ReadError ReadError stx:libbasic 'Kernel-Exceptions-Errors' 1
+StreamIOError StreamIOError stx:libbasic 'Kernel-Exceptions-Errors' 1
+StreamNotOpenError StreamNotOpenError stx:libbasic 'Kernel-Exceptions-Errors' 1
+TimeConversionError TimeConversionError stx:libbasic 'Magnitude-Time' 1
+UnorderedNumbersError UnorderedNumbersError stx:libbasic 'Kernel-Exceptions-Errors' 1
 UnprotectedExternalBytes UnprotectedExternalBytes stx:libbasic 'System-Support' 0
 WeakDependencyDictionary WeakDependencyDictionary stx:libbasic 'Collections-Weak' 0
 Win32OperatingSystem Win32OperatingSystem stx:libbasic 'OS-Windows' 0
-WriteError WriteError stx:libbasic 'Kernel-Exceptions-Errors' 0
-WrongProceedabilityError WrongProceedabilityError stx:libbasic 'Kernel-Exceptions-Errors' 0
-BadLiteralsError BadLiteralsError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 0
-DecodingError DecodingError stx:libbasic 'Collections-Text-Encodings' 0
-EncodingError EncodingError stx:libbasic 'Collections-Text-Encodings' 0
+WriteError WriteError stx:libbasic 'Kernel-Exceptions-Errors' 1
+WrongProceedabilityError WrongProceedabilityError stx:libbasic 'Kernel-Exceptions-Errors' 1
+BadLiteralsError BadLiteralsError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 1
+DecodingError DecodingError stx:libbasic 'Collections-Text-Encodings' 1
+EncodingError EncodingError stx:libbasic 'Collections-Text-Encodings' 1
 FileStream FileStream stx:libbasic 'Streams-External' 0
-InvalidByteCodeError InvalidByteCodeError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 0
-InvalidInstructionError InvalidInstructionError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 0
-InvalidReadError InvalidReadError stx:libbasic 'Kernel-Exceptions-Errors' 0
-InvalidWriteError InvalidWriteError stx:libbasic 'Kernel-Exceptions-Errors' 0
-NoByteCodeError NoByteCodeError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 0
-NonIntegerIndexError NonIntegerIndexError stx:libbasic 'Kernel-Exceptions-Errors' 0
+InvalidByteCodeError InvalidByteCodeError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 1
+InvalidInstructionError InvalidInstructionError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 1
+InvalidReadError InvalidReadError stx:libbasic 'Kernel-Exceptions-Errors' 1
+InvalidWriteError InvalidWriteError stx:libbasic 'Kernel-Exceptions-Errors' 1
+NoByteCodeError NoByteCodeError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 1
+NonIntegerIndexError NonIntegerIndexError stx:libbasic 'Kernel-Exceptions-Errors' 1
 NonPositionableExternalStream NonPositionableExternalStream stx:libbasic 'Streams-External' 0
-OverflowError OverflowError stx:libbasic 'Kernel-Exceptions-Errors' 0
+OverflowError OverflowError stx:libbasic 'Kernel-Exceptions-Errors' 1
 String String stx:libbasic 'Collections-Text' 0
-SubscriptOutOfBoundsError SubscriptOutOfBoundsError stx:libbasic 'Kernel-Exceptions-Errors' 0
+SubscriptOutOfBoundsError SubscriptOutOfBoundsError stx:libbasic 'Kernel-Exceptions-Errors' 1
 TwoByteString TwoByteString stx:libbasic 'Collections-Text' 0
-UnderflowError UnderflowError stx:libbasic 'Kernel-Exceptions-Errors' 0
-WrongNumberOfArgumentsError WrongNumberOfArgumentsError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 0
-ZeroDivide ZeroDivide stx:libbasic 'Kernel-Exceptions-Errors' 0
-CharacterRangeError CharacterRangeError stx:libbasic 'Collections-Text-Encodings' 0
+UnderflowError UnderflowError stx:libbasic 'Kernel-Exceptions-Errors' 1
+WrongNumberOfArgumentsError WrongNumberOfArgumentsError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 1
+ZeroDivide ZeroDivide stx:libbasic 'Kernel-Exceptions-Errors' 1
+CharacterRangeError CharacterRangeError stx:libbasic 'Collections-Text-Encodings' 1
 DirectoryStream DirectoryStream stx:libbasic 'Streams-External' 0
-InvalidEncodingError InvalidEncodingError stx:libbasic 'Collections-Text-Encodings' 0
+InvalidEncodingError InvalidEncodingError stx:libbasic 'Collections-Text-Encodings' 1
 PipeStream PipeStream stx:libbasic 'Streams-External' 0
 Symbol Symbol stx:libbasic 'Collections-Text' 0
 Unicode16String Unicode16String stx:libbasic 'Collections-Text' 0
 SystemChangeNotifier SystemChangeNotifier stx:libbasic 'Kernel-Classes' 0
+Win32Constants Win32Constants stx:libbasic 'OS-Windows' 0
 
--- a/bc.mak	Mon Oct 26 21:51:17 2009 +0000
+++ b/bc.mak	Thu Nov 05 14:41:30 2009 +0000
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/libbasic/bc.mak,v 1.156 2009/10/12 19:32:45 cg Exp $
+# $Header: /cvs/stx/stx/libbasic/bc.mak,v 1.158 2009/10/30 14:39:42 cg Exp $
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_libbasic.
@@ -138,9 +138,7 @@
 $(OUTDIR)SmalltalkLanguage.$(O) SmalltalkLanguage.$(H): SmalltalkLanguage.st $(INCLUDE_TOP)\stx\libbasic\ProgrammingLanguage.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)True.$(O) True.$(H): True.st $(INCLUDE_TOP)\stx\libbasic\Boolean.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)UnixFilename.$(O) UnixFilename.$(H): UnixFilename.st $(INCLUDE_TOP)\stx\libbasic\Filename.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)UserNotification.$(O) UserNotification.$(H): UserNotification.st $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)WeakInterestConverter.$(O) WeakInterestConverter.$(H): WeakInterestConverter.st $(INCLUDE_TOP)\stx\libbasic\InterestConverter.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)ActivityNotification.$(O) ActivityNotification.$(H): ActivityNotification.st $(INCLUDE_TOP)\stx\libbasic\UserNotification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)ArrayedCollection.$(O) ArrayedCollection.$(H): ArrayedCollection.st $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Association.$(O) Association.$(H): Association.st $(INCLUDE_TOP)\stx\libbasic\LookupKey.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Block.$(O) Block.$(H): Block.st $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -179,14 +177,13 @@
 $(OUTDIR)SHA1Stream.$(O) SHA1Stream.$(H): SHA1Stream.st $(INCLUDE_TOP)\stx\libbasic\HashStream.$(H) $(INCLUDE_TOP)\stx\libbasic\Stream.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Time.$(O) Time.$(H): Time.st $(INCLUDE_TOP)\stx\libbasic\AbstractTime.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Timestamp.$(O) Timestamp.$(H): Timestamp.st $(INCLUDE_TOP)\stx\libbasic\AbstractTime.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)UserConfirmation.$(O) UserConfirmation.$(H): UserConfirmation.st $(INCLUDE_TOP)\stx\libbasic\UserNotification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)UserInformation.$(O) UserInformation.$(H): UserInformation.st $(INCLUDE_TOP)\stx\libbasic\UserNotification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)UserInterrupt.$(O) UserInterrupt.$(H): UserInterrupt.st $(INCLUDE_TOP)\stx\libbasic\ControlInterrupt.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)Warning.$(O) Warning.$(H): Warning.st $(INCLUDE_TOP)\stx\libbasic\UserNotification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)UserNotification.$(O) UserNotification.$(H): UserNotification.st $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)YesToAllConfirmation.$(O) YesToAllConfirmation.$(H): YesToAllConfirmation.st $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)stx_libbasic.$(O) stx_libbasic.$(H): stx_libbasic.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)AbortAllOperationRequest.$(O) AbortAllOperationRequest.$(H): AbortAllOperationRequest.st $(INCLUDE_TOP)\stx\libbasic\ControlRequest.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)AbstractSourceFileWriter.$(O) AbstractSourceFileWriter.$(H): AbstractSourceFileWriter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\Query.$(H) $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(STCHDR)
+$(OUTDIR)ActivityNotification.$(O) ActivityNotification.$(H): ActivityNotification.st $(INCLUDE_TOP)\stx\libbasic\UserNotification.$(H) $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Array.$(O) Array.$(H): Array.st $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)BreakPointInterrupt.$(O) BreakPointInterrupt.$(H): BreakPointInterrupt.st $(INCLUDE_TOP)\stx\libbasic\HaltInterrupt.$(H) $(INCLUDE_TOP)\stx\libbasic\ControlInterrupt.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)CheapBlock.$(O) CheapBlock.$(H): CheapBlock.st $(INCLUDE_TOP)\stx\libbasic\Block.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -204,7 +201,6 @@
 $(OUTDIR)MeasurementValue.$(O) MeasurementValue.$(H): MeasurementValue.st $(INCLUDE_TOP)\stx\libbasic\Number.$(H) $(INCLUDE_TOP)\stx\libbasic\ArithmeticValue.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Metaclass.$(O) Metaclass.$(H): Metaclass.st $(INCLUDE_TOP)\stx\libbasic\ClassDescription.$(H) $(INCLUDE_TOP)\stx\libbasic\Behavior.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)OsError.$(O) OsError.$(H): OsError.st $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)ProceedError.$(O) ProceedError.$(H): ProceedError.st $(INCLUDE_TOP)\stx\libbasic\Warning.$(H) $(INCLUDE_TOP)\stx\libbasic\UserNotification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)ProceedableError.$(O) ProceedableError.$(H): ProceedableError.st $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)QueryWithoutDefault.$(O) QueryWithoutDefault.$(H): QueryWithoutDefault.st $(INCLUDE_TOP)\stx\libbasic\Query.$(H) $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)ReadStream.$(O) ReadStream.$(H): ReadStream.st $(INCLUDE_TOP)\stx\libbasic\PositionableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\PeekableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\Stream.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -218,8 +214,11 @@
 $(OUTDIR)StringCollection.$(O) StringCollection.$(H): StringCollection.st $(INCLUDE_TOP)\stx\libbasic\OrderedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)TerminateProcessRequest.$(O) TerminateProcessRequest.$(H): TerminateProcessRequest.st $(INCLUDE_TOP)\stx\libbasic\ControlRequest.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)UninterpretedBytes.$(O) UninterpretedBytes.$(H): UninterpretedBytes.st $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)UserConfirmation.$(O) UserConfirmation.$(H): UserConfirmation.st $(INCLUDE_TOP)\stx\libbasic\UserNotification.$(H) $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)UserInformation.$(O) UserInformation.$(H): UserInformation.st $(INCLUDE_TOP)\stx\libbasic\UserNotification.$(H) $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)VMInternalError.$(O) VMInternalError.$(H): VMInternalError.st $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)VarArgBlock.$(O) VarArgBlock.$(H): VarArgBlock.st $(INCLUDE_TOP)\stx\libbasic\Block.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Warning.$(O) Warning.$(H): Warning.st $(INCLUDE_TOP)\stx\libbasic\UserNotification.$(H) $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)WeakArray.$(O) WeakArray.$(H): WeakArray.st $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)WeakIdentitySet.$(O) WeakIdentitySet.$(H): WeakIdentitySet.st $(INCLUDE_TOP)\stx\libbasic\IdentitySet.$(H) $(INCLUDE_TOP)\stx\libbasic\Set.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)WeakValueDictionary.$(O) WeakValueDictionary.$(H): WeakValueDictionary.st $(INCLUDE_TOP)\stx\libbasic\Dictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Set.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -253,6 +252,7 @@
 $(OUTDIR)OsNotification.$(O) OsNotification.$(H): OsNotification.st $(INCLUDE_TOP)\stx\libbasic\OsError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)OsTransferFaultError.$(O) OsTransferFaultError.$(H): OsTransferFaultError.st $(INCLUDE_TOP)\stx\libbasic\OsError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PrivateMetaclass.$(O) PrivateMetaclass.$(H): PrivateMetaclass.st $(INCLUDE_TOP)\stx\libbasic\Metaclass.$(H) $(INCLUDE_TOP)\stx\libbasic\ClassDescription.$(H) $(INCLUDE_TOP)\stx\libbasic\Behavior.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)ProceedError.$(O) ProceedError.$(H): ProceedError.st $(INCLUDE_TOP)\stx\libbasic\Warning.$(H) $(INCLUDE_TOP)\stx\libbasic\UserNotification.$(H) $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)ReadWriteStream.$(O) ReadWriteStream.$(H): ReadWriteStream.st $(INCLUDE_TOP)\stx\libbasic\WriteStream.$(H) $(INCLUDE_TOP)\stx\libbasic\PositionableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\PeekableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\Stream.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)ShortFloat.$(O) ShortFloat.$(H): ShortFloat.st $(INCLUDE_TOP)\stx\libbasic\LimitedPrecisionReal.$(H) $(INCLUDE_TOP)\stx\libbasic\Number.$(H) $(INCLUDE_TOP)\stx\libbasic\ArithmeticValue.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SignalError.$(O) SignalError.$(H): SignalError.st $(INCLUDE_TOP)\stx\libbasic\ProceedableError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -325,9 +325,12 @@
 $(OUTDIR)CharacterEncoderImplementations__MS_Cyrillic.$(O) CharacterEncoderImplementations__MS_Cyrillic.$(H): CharacterEncoderImplementations__MS_Cyrillic.st $(INCLUDE_TOP)\stx\libbasic\CharacterEncoderImplementations__SingleByteEncoder.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterEncoder.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)CharacterEncoderImplementations__MS_Greek.$(O) CharacterEncoderImplementations__MS_Greek.$(H): CharacterEncoderImplementations__MS_Greek.st $(INCLUDE_TOP)\stx\libbasic\CharacterEncoderImplementations__SingleByteEncoder.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterEncoder.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PCFilename.$(O) PCFilename.$(H): PCFilename.st $(INCLUDE_TOP)\stx\libbasic\Filename.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Win32Constants.$(O) Win32Constants.$(H): Win32Constants.st $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Win32FILEHandle.$(O) Win32FILEHandle.$(H): Win32FILEHandle.st $(INCLUDE_TOP)\stx\libbasic\OSFileHandle.$(H) $(INCLUDE_TOP)\stx\libbasic\OSHandle.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Win32Handle.$(O) Win32Handle.$(H): Win32Handle.st $(INCLUDE_TOP)\stx\libbasic\OSHandle.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)Win32OperatingSystem.$(O) Win32OperatingSystem.$(H): Win32OperatingSystem.st $(INCLUDE_TOP)\stx\libbasic\AbstractOperatingSystem.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\Win32Handle.$(H) $(INCLUDE_TOP)\stx\libbasic\OSHandle.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(STCHDR)
+$(OUTDIR)Win32Process.$(O) Win32Process.$(H): Win32Process.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Win32OperatingSystem.$(O) Win32OperatingSystem.$(H): Win32OperatingSystem.st $(INCLUDE_TOP)\stx\libbasic\AbstractOperatingSystem.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Win32Handle.$(H) $(INCLUDE_TOP)\stx\libbasic\OSHandle.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
+
--- a/libInit.cc	Mon Oct 26 21:51:17 2009 +0000
+++ b/libInit.cc	Thu Nov 05 14:41:30 2009 +0000
@@ -1,5 +1,5 @@
 /*
- * $Header: /cvs/stx/stx/libbasic/libInit.cc,v 1.148 2009/10/12 19:32:49 cg Exp $
+ * $Header: /cvs/stx/stx/libbasic/libInit.cc,v 1.150 2009/10/30 14:39:46 cg Exp $
  *
  * DO NOT EDIT
  * automagically generated from the projectDefinition: stx_libbasic.
@@ -21,7 +21,6 @@
 _Autoload_Init(pass,__pRT__,snd);
 _Object_Init(pass,__pRT__,snd);
 _ProtoObject_Init(pass,__pRT__,snd);
-_AbstractDesktop_Init(pass,__pRT__,snd);
 _AbstractOperatingSystem_Init(pass,__pRT__,snd);
 _AbstractSourceFileReader_Init(pass,__pRT__,snd);
 _Behavior_Init(pass,__pRT__,snd);
@@ -29,8 +28,6 @@
 _CharacterEncoder_Init(pass,__pRT__,snd);
 _ClassBuilder_Init(pass,__pRT__,snd);
 _ClassCategoryReader_Init(pass,__pRT__,snd);
-_CmdLineOption_Init(pass,__pRT__,snd);
-_CmdLineParser_Init(pass,__pRT__,snd);
 _Collection_Init(pass,__pRT__,snd);
 _Context_Init(pass,__pRT__,snd);
 _Continuation_Init(pass,__pRT__,snd);
@@ -103,15 +100,10 @@
 _SequenceableCollection_Init(pass,__pRT__,snd);
 _Set_Init(pass,__pRT__,snd);
 _SmalltalkChunkFileSourceReader_Init(pass,__pRT__,snd);
-_SmalltalkDesktop_Init(pass,__pRT__,snd);
 _SmalltalkLanguage_Init(pass,__pRT__,snd);
 _True_Init(pass,__pRT__,snd);
-_UnixDesktop_Init(pass,__pRT__,snd);
 _UnixFilename_Init(pass,__pRT__,snd);
-_UserNotification_Init(pass,__pRT__,snd);
 _WeakInterestConverter_Init(pass,__pRT__,snd);
-_WindowsDesktop_Init(pass,__pRT__,snd);
-_ActivityNotification_Init(pass,__pRT__,snd);
 _ArrayedCollection_Init(pass,__pRT__,snd);
 _Association_Init(pass,__pRT__,snd);
 _Block_Init(pass,__pRT__,snd);
@@ -150,15 +142,13 @@
 _SHA1Stream_Init(pass,__pRT__,snd);
 _Time_Init(pass,__pRT__,snd);
 _Timestamp_Init(pass,__pRT__,snd);
-_UserConfirmation_Init(pass,__pRT__,snd);
-_UserInformation_Init(pass,__pRT__,snd);
 _UserInterrupt_Init(pass,__pRT__,snd);
-_Warning_Init(pass,__pRT__,snd);
-_XDGDesktop_Init(pass,__pRT__,snd);
+_UserNotification_Init(pass,__pRT__,snd);
 _YesToAllConfirmation_Init(pass,__pRT__,snd);
 _stx_137libbasic_Init(pass,__pRT__,snd);
 _AbortAllOperationRequest_Init(pass,__pRT__,snd);
 _AbstractSourceFileWriter_Init(pass,__pRT__,snd);
+_ActivityNotification_Init(pass,__pRT__,snd);
 _Array_Init(pass,__pRT__,snd);
 _BreakPointInterrupt_Init(pass,__pRT__,snd);
 _CheapBlock_Init(pass,__pRT__,snd);
@@ -168,7 +158,6 @@
 _ElementBoundsError_Init(pass,__pRT__,snd);
 _FloatArray_Init(pass,__pRT__,snd);
 _Fraction_Init(pass,__pRT__,snd);
-_GNOMEDesktop_Init(pass,__pRT__,snd);
 _IdentityDictionary_Init(pass,__pRT__,snd);
 _InlineObjectClassDescription_Init(pass,__pRT__,snd);
 _Integer_Init(pass,__pRT__,snd);
@@ -177,7 +166,6 @@
 _MeasurementValue_Init(pass,__pRT__,snd);
 _Metaclass_Init(pass,__pRT__,snd);
 _OsError_Init(pass,__pRT__,snd);
-_ProceedError_Init(pass,__pRT__,snd);
 _ProceedableError_Init(pass,__pRT__,snd);
 _QueryWithoutDefault_Init(pass,__pRT__,snd);
 _ReadStream_Init(pass,__pRT__,snd);
@@ -191,8 +179,11 @@
 _StringCollection_Init(pass,__pRT__,snd);
 _TerminateProcessRequest_Init(pass,__pRT__,snd);
 _UninterpretedBytes_Init(pass,__pRT__,snd);
+_UserConfirmation_Init(pass,__pRT__,snd);
+_UserInformation_Init(pass,__pRT__,snd);
 _VMInternalError_Init(pass,__pRT__,snd);
 _VarArgBlock_Init(pass,__pRT__,snd);
+_Warning_Init(pass,__pRT__,snd);
 _WeakArray_Init(pass,__pRT__,snd);
 _WeakIdentitySet_Init(pass,__pRT__,snd);
 _WeakValueDictionary_Init(pass,__pRT__,snd);
@@ -226,6 +217,7 @@
 _OsNotification_Init(pass,__pRT__,snd);
 _OsTransferFaultError_Init(pass,__pRT__,snd);
 _PrivateMetaclass_Init(pass,__pRT__,snd);
+_ProceedError_Init(pass,__pRT__,snd);
 _ReadWriteStream_Init(pass,__pRT__,snd);
 _ShortFloat_Init(pass,__pRT__,snd);
 _SignalError_Init(pass,__pRT__,snd);
@@ -300,6 +292,7 @@
 _UnixOperatingSystem_Init(pass,__pRT__,snd);
 #endif /* UNIX */
 #ifdef WIN32
+_Win32Process_Init(pass,__pRT__,snd);
 _PCFilename_Init(pass,__pRT__,snd);
 _CharacterEncoderImplementations__MS_137Baltic_Init(pass,__pRT__,snd);
 _CharacterEncoderImplementations__MS_137Cyrillic_Init(pass,__pRT__,snd);
@@ -307,6 +300,7 @@
 _Win32Handle_Init(pass,__pRT__,snd);
 _Win32FILEHandle_Init(pass,__pRT__,snd);
 _Win32OperatingSystem_Init(pass,__pRT__,snd);
+_Win32Constants_Init(pass,__pRT__,snd);
 #endif /* WIN32 */
 
 
--- a/libbasic.rc	Mon Oct 26 21:51:17 2009 +0000
+++ b/libbasic.rc	Thu Nov 05 14:41:30 2009 +0000
@@ -3,7 +3,7 @@
 // automagically generated from the projectDefinition: stx_libbasic.
 //
 VS_VERSION_INFO VERSIONINFO
-  FILEVERSION     5,4,1,63
+  FILEVERSION     5,4,1,65
   PRODUCTVERSION  5,4,6,1
   FILEFLAGSMASK   VS_FF_DEBUG | VS_FF_PRERELEASE
   FILEFLAGS       VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
@@ -18,12 +18,12 @@
     BEGIN
       VALUE "CompanyName", "eXept Software AG\0"
       VALUE "FileDescription", "Smalltalk/X Basic Classes (LIB)\0"
-      VALUE "FileVersion", "5.4.1.63\0"
+      VALUE "FileVersion", "5.4.1.65\0"
       VALUE "InternalName", "stx:libbasic\0"
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2009\nCopyright eXept Software AG 1998-2009\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "5.4.6.1\0"
-      VALUE "ProductDate", "Mon, 12 Oct 2009 19:31:01 GMT\0"
+      VALUE "ProductDate", "Fri, 30 Oct 2009 14:38:16 GMT\0"
     END
 
   END
@@ -34,3 +34,4 @@
   END
 END
 
+
--- a/stx_libbasic.st	Mon Oct 26 21:51:17 2009 +0000
+++ b/stx_libbasic.st	Thu Nov 05 14:41:30 2009 +0000
@@ -226,7 +226,7 @@
         (UserMessage autoload)
         Visitor
         (WeakValueIdentityDictionary autoload)
-        (Win32Process autoload)
+        (Win32Process win32)
         AbstractTime
         ApplicationDefinition
         ArithmeticValue
@@ -462,6 +462,7 @@
         Symbol
         Unicode16String
         SystemChangeNotifier
+        (Win32Constants win32)
     )
 !
 
@@ -504,10 +505,11 @@
 !stx_libbasic class methodsFor:'documentation'!
 
 version
-    ^ '$Id: stx_libbasic.st 10473 2009-10-24 15:48:19Z vranyj1 $'
+    ^ '$Id: stx_libbasic.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/stx_libbasic.st,v 1.64 2009/10/12 19:32:55 cg Exp §'
+    ^ '$Id: stx_libbasic.st 10477 2009-11-05 14:41:30Z vranyj1 $'
 ! !
 
+