Merged branch 'default' (CVS HEAD) jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Sat, 19 Jan 2013 01:30:00 +0000
branchjv
changeset 18011 deb0c3355881
parent 18006 4e8f3d37bdbf (current diff)
parent 14669 932dd50e11a7 (diff)
child 18012 115575f67788
Merged branch 'default' (CVS HEAD)
AbortAllOperationRequest.st
AbortAllOperationWantedQuery.st
AbstractClassInstantiationError.st
AbstractDesktop.st
AbstractNumberVector.st
AbstractOperatingSystem.st
AbstractSourceFileReader.st
AbstractSourceFileWriter.st
AbstractTime.st
AmbiguousMessage.st
Annotation.st
ApplicationDefinition.st
ArithmeticValue.st
Array.st
ArrayedCollection.st
Association.st
AutoDeletedFilename.st
Autoload.st
AutoloadMetaclass.st
Bag.st
Behavior.st
Block.st
BlockContext.st
Boolean.st
BuiltinLookup.st
ByteArray.st
Character.st
CharacterArray.st
CharacterEncoder.st
CharacterEncoderImplementations__EBCDIC.st
CharacterEncoderImplementations__ISO10646_to_UTF16BE.st
CharacterEncoderImplementations__ISO10646_to_UTF16LE.st
CharacterEncoderImplementations__ISO10646_to_UTF8.st
CharacterEncoderImplementations__ISO8859_1.st
CharacterEncoderImplementations__ISO8859_10.st
CharacterEncoderImplementations__ISO8859_13.st
CharacterEncoderImplementations__ISO8859_14.st
CharacterEncoderImplementations__ISO8859_15.st
CharacterEncoderImplementations__ISO8859_16.st
CharacterEncoderImplementations__ISO8859_3.st
CharacterEncoderImplementations__ISO8859_4.st
CharacterEncoderImplementations__ISO8859_5.st
CharacterEncoderImplementations__ISO8859_6.st
CharacterEncoderImplementations__ISO8859_7.st
CharacterEncoderImplementations__ISO8859_8.st
CharacterEncoderImplementations__ISO8859_9.st
CharacterEncoderImplementations__KOI7.st
CharacterEncoderImplementations__KOI8_R.st
CharacterEncoderImplementations__KOI8_U.st
CharacterEncoderImplementations__MAC_Roman.st
CharacterEncoderImplementations__MS_Ansi.st
CharacterEncoderImplementations__SingleByteEncoder.st
CharacterEncoderImplementations__TwoByteEncoder.st
CharacterWriteStream.st
Class.st
ClassBuildError.st
ClassBuilder.st
ClassCategoryReader.st
ClassDescription.st
CmdLineOption.st
CmdLineOptionError.st
CmdLineParser.st
CmdLineParserTest.st
Collection.st
CompiledCode.st
Complex.st
ConfigurableFeatures.st
Context.st
Date.st
Delay.st
Dictionary.st
DirectoryStream.st
DoubleArray.st
EncodedStream.st
Error.st
ExecutableFunction.st
ExternalAddress.st
ExternalBytes.st
ExternalFunction.st
ExternalFunctionCallback.st
ExternalLibrary.st
ExternalLibraryFunction.st
ExternalStream.st
False.st
FileDirectory.st
FileDoesNotExistException.st
FileStream.st
Filename.st
FixedPoint.st
Float.st
FloatArray.st
Fraction.st
GNOMEDesktop.st
GenericException.st
GetOpt.st
HashStream.st
IdentitySet.st
ImmutableArray.st
ImmutableByteArray.st
ImmutableString.st
Infinity.st
InlineObject.st
InlineObjectClassDescription.st
InlineObjectPrototype.st
Integer.st
InterestConverter.st
Interval.st
InvalidPatchError.st
InvalidTypeError.st
IsDebuggingQuery.st
KeyedCollection.st
LargeInteger.st
LibraryDefinition.st
LimitedPrecisionReal.st
LinkedList.st
LongFloat.st
Lookup.st
LookupKey.st
MD5Stream.st
Magnitude.st
Make.proto
Make.spec
Makefile
MeasurementValue.st
Message.st
MessageNotUnderstood.st
MessageSend.st
Metaclass.st
Method.st
MethodDictionary.st
MethodNotAppropriateError.st
MethodWithBreakpoints.st
MiniDebugger.st
MiniLogger.st
NameSpace.st
NamespaceAwareLookup.st
NoHandlerError.st
NoModificationError.st
NonPositionableExternalStream.st
Notification.st
Number.st
OSErrorHolder.st
OSProcess.st
Object.st
ObjectCoder.st
ObjectMemory.st
OpenError.st
OpenVMSOperatingSystem.st
OrderedCollection.st
PCFilename.st
PackageId.st
PeekableStream.st
PipeStream.st
PluginSupport.st
PositionableStream.st
ProceedableError.st
Process.st
ProcessorScheduler.st
ProgrammingLanguage.st
Project.st
ProjectDefinition.st
ProtoObject.st
Query.st
QuerySignal.st
ReadEvalPrintLoop.st
ReadStream.st
ReadWriteStream.st
Rectangle.st
RecursionLock.st
RecursiveStoreError.st
Registry.st
SHA1Stream.st
SameForAllNotification.st
Semaphore.st
SemaphoreSet.st
SequenceableCollection.st
Set.st
SharedPool.st
ShortFloat.st
Signal.st
SignalSet.st
SmallInteger.st
Smalltalk.st
SmalltalkChunkFileSourceReader.st
SmalltalkChunkFileSourceWriter.st
SmalltalkDesktop.st
SmalltalkLanguage.st
SortedCollection.st
StandaloneStartup.st
Stream.st
StreamError.st
String.st
StringCollection.st
SubclassResponsibilityError.st
Symbol.st
SystemChangeNotifier.st
Time.st
TimeoutNotification.st
Timestamp.st
True.st
TwoByteString.st
UndefinedObject.st
Unicode16String.st
UninterpretedBytes.st
UnixDesktop.st
UnixFileDescriptorHandle.st
UnixFilename.st
UnixOperatingSystem.st
UserInterrupt.st
UserMessage.st
UserNotification.st
UserPreferences.st
UtcTimestamp.st
VMInternalError.st
VarArgBlock.st
VarArgCheapBlock.st
Visitor.st
Warning.st
WeakArray.st
WeakDependencyDictionary.st
WeakIdentityDictionary.st
WeakIdentitySet.st
WeakInterestConverter.st
WeakValueDictionary.st
Win32Constants.st
Win32FILEHandle.st
Win32Handle.st
Win32OperatingSystem.st
Win32Process.st
WindowsDesktop.st
WriteStream.st
XDGDesktop.st
YesToAllConfirmation.st
abbrev.stc
autopackage/default.apspec
bc.mak
bmake.bat
lcmake.bat
libInit.cc
libbasic.rc
resources/de.rs
resources/es.rs
stx_libbasic.st
vcmake.bat
--- a/.cvsignore	Thu Dec 20 11:48:59 2012 +0000
+++ b/.cvsignore	Sat Jan 19 01:30:00 2013 +0000
@@ -1,4 +1,7 @@
+.svnversion
 notes
+Debug
+Release
 not_delivered
 not_delivered/*
 makefile
@@ -24,5 +27,7 @@
 classList.stc
 objbc
 objvc
-make0000.@@@
-MAKE0000.@@@
+objlc
+objtcc
+objmingw
+*.@@@
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.hgtags	Sat Jan 19 01:30:00 2013 +0000
@@ -0,0 +1,59 @@
+06dd24e0fb481e2c3c22e4e66fbf64a492a3d8b1 rel3_4_1_2
+070b1c3087bce29ac5dd6f8052058cb45fbd95a3 expeccoNET_1_6_0_0
+072b8829128736e70f539be0965995fcc560c2f7 expeccoNET_1_5_1rc1
+0acf49dc7d3943976a9c4d821ba96b2f2e4d5d37 expecco_2_1_0
+0bf923748b7364220ba94f6cdde8c75f82cccb30 expecco_1_6_0rc5
+0d70352a70bcc092c0e9a700e2538087c1597ec4 expecco_1_7_1rc1
+0d70352a70bcc092c0e9a700e2538087c1597ec4 expecco_1_7_1rc2
+0d70352a70bcc092c0e9a700e2538087c1597ec4 expecco_1_7_1rc3
+0d70352a70bcc092c0e9a700e2538087c1597ec4 expecco_1_7_1rc4
+0da06a13910551bb58139898b65c8d6c8bcaff5d rel3_6_1
+161b8aaf00eb5bdb0eb73c8f9af31b13763ca6b1 dtm2_1
+2346990ded7bef4768e9b591e4aede0acb30265d expeccoNET_1_6_8_0
+246cb9b21fdca908bbd336a4f95f1b5a94ebb107 expecco_2_4_0
+246cb9b21fdca908bbd336a4f95f1b5a94ebb107 stable
+27b02e64ef6a1e1362856458db1463ea6501496a expeccoNET_1_7_0_0
+29a49feab7992340985b5abfc0348cd9c326693f rel2_10_8_5
+2d6c911e474dad01fe3896267a33d04c1b4ee6b0 rel5_1_4
+301348f23939b2c69155fbc1d0325099741e326f rel5_4_6
+30909b044a03222f1f011a863fe50ea6c4491101 ecpecco_1_6_0
+37bd8fc58d5933d683b33c23312adaea79a06784 expecco_1_7_0rc1
+38800080caa28181285c9d8b61b189253a887bcf initialR
+3dc78835e119759ccc4ba073d8ec67d6b2f70d33 rel5_2_1
+40e71fa11ff77b8e81c47bc30b49f12144fea6b8 stable_expecco_sel
+45d070e53b953c93364b1a7713a21e20d7030430 stx_6_2_2
+498aaf09d52bbd5b750814e7e4452c8b9fbaa9b4 expecco_1_7_0b1
+498aaf09d52bbd5b750814e7e4452c8b9fbaa9b4 expecco_1_7_0b2
+4cfcb1c3d0cc3098ffb5af37a66b5789b3c9e14a rel5_1_3
+4cfcb1c3d0cc3098ffb5af37a66b5789b3c9e14a stx_513
+6516bfb2ae56ebcb9dee9ca2ccd2acb80a9a1e88 expecco_1_0_3
+66c655c1a7cbe4cff09bf03fd379abed2ee0c539 expecco_1_5_0
+6dcd44bc2ff92d95c87750dece318217585ea275 expeccoNET_1_4_0rc1
+751f95f1fff0e0772ea359d56aa7be91ad927ddd expecco_2_2_0
+78a0707fdf33e9e7f9e893c868634320e1e413d7 rel2_10_8_6_last_before_vmData_change
+78e389d28c00f544e29b4884b6655921fee588a0 expecco_1_7_0b3
+7a5d55f87cd78f48606c20a4f0dc6f34ff6a7ace rel4_1_7
+7a5d55f87cd78f48606c20a4f0dc6f34ff6a7ace release
+7b7c33b2b49355ef861356d188005fcc82f81593 expecco_2_2_5
+7ca269cbec09404ff7bcabb2e444dae4a5ebfe68 expecco_1_7_0rc5
+8014b817988bd61d05b6fff2a0610978b5dff1f9 rel3_4_3_1
+860d76b815aaff3f6785bb51123d6564a4b73b08 rel5_2_8
+8d56dc5fa8a867376a1827f6033abf9100b41455 expecco_1_7_0rc3
+9e28a6168468106ec6e30c582c941a2eff7f320a test
+a83d54a7d9774c4dcd71cea396b325fba7e78999 expecco_2_0_0_0
+a90d9830f2b2ae2bad2b5b72255c4873e48cb0a3 expecco_1_8_0rc1
+a98958f1c85f62ae7b71e97f9600b4c074fd24e4 rel4_1_3_1
+b41a49ae95552acc0965b03891db4198997f00d8 rel3_4_1_1
+b5ed6aa393f7611793628435dece006730411b2d expeccoNET_1_8_0_0
+bfd3073ef9d2b658a9747ac0076153d0131f1951 expecco_1_7_0rc8
+c46ce921fae264d7dbc746be6b987a2ca8f29acd rel2_10_8_6_last2
+c767911bff13d611ed1723ea8114efddba6d5073 expecco_1_6_0
+c94a8e0b02514d04e49b76ea83d7c3ada192cc0a rel3-1-2
+d3828897bd5b4cd2929526303bc64f7c408d251b expecco_1_9_1_iX
+df8d2b00ec391e4bba891268329e775795512b82 rel5_2_2
+e329b1ad8fe9fb881ba292bee6f3b0395d4bf745 rel3_6_4
+e5cf44cddc1e8ca0936233e922bbf54a2944bd68 expecco_1_7_2rc1
+ee643208df424c8f105bdb90f2392ec495b00791 expecco_2_0_0
+f692f6c62c02e675b824851e6ed9269a6df1e23f expeccoNET_1_5_0rc1
+f692f6c62c02e675b824851e6ed9269a6df1e23f expecco_1_8_2rc1
+f73fcb4b935bf575bdc4be3c19338bfe541d8238 expecco_1_3_4
--- a/AbortAllOperationRequest.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/AbortAllOperationRequest.st	Sat Jan 19 01:30:00 2013 +0000
@@ -85,18 +85,11 @@
 !AbortAllOperationRequest class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/AbortAllOperationRequest.st,v 1.8 2011/02/09 12:59:00 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbortAllOperationRequest.st,v 1.8 2011-02-09 12:59:00 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/AbortAllOperationRequest.st,v 1.8 2011/02/09 12:59:00 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: AbortAllOperationRequest.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbortAllOperationRequest.st,v 1.8 2011-02-09 12:59:00 cg Exp $'
 ! !
 
 AbortAllOperationRequest initialize!
-
-
-
--- a/AbortAllOperationWantedQuery.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/AbortAllOperationWantedQuery.st	Sat Jan 19 01:30:00 2013 +0000
@@ -67,9 +67,5 @@
 !AbortAllOperationWantedQuery class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/AbortAllOperationWantedQuery.st,v 1.2 2011/02/09 10:44:37 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: AbortAllOperationWantedQuery.st 10700 2011-09-29 15:44:37Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbortAllOperationWantedQuery.st,v 1.2 2011-02-09 10:44:37 cg Exp $'
 ! !
--- a/AbstractClassInstantiationError.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/AbstractClassInstantiationError.st	Sat Jan 19 01:30:00 2013 +0000
@@ -51,11 +51,11 @@
 !AbstractClassInstantiationError class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/AbstractClassInstantiationError.st,v 1.2 2012/11/02 16:40:18 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbstractClassInstantiationError.st,v 1.2 2012-11-02 16:40:18 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/AbstractClassInstantiationError.st,v 1.2 2012/11/02 16:40:18 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbstractClassInstantiationError.st,v 1.2 2012-11-02 16:40:18 cg Exp $'
 ! !
 
-AbstractClassInstantiationError initialize!
\ No newline at end of file
+AbstractClassInstantiationError initialize!
--- a/AbstractDesktop.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/AbstractDesktop.st	Sat Jan 19 01:30:00 2013 +0000
@@ -47,13 +47,6 @@
     Smalltalk at: #Desktop put:self current
 
     "Created: / 11-08-2009 / 17:09:52 / Jan Vrany <vranyj1@fel.cvut.cz>"
-!
-
-reinitialize
-
-    self initialize.
-
-    "Created: / 09-05-2012 / 11:57:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !AbstractDesktop class methodsFor:'instance creation'!
@@ -67,7 +60,7 @@
 best
 
     "
-        AbstractDesktop best
+        AbstractDesktop best 
     "
 
     (self allSubclasses asSortedCollection: [:a :b|a priority > b priority])
@@ -75,6 +68,7 @@
     ^nil "maybe error?"
 
     "Created: / 11-08-2009 / 17:09:52 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 28-06-2011 / 11:50:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 current
@@ -106,22 +100,6 @@
     "Created: / 11-08-2009 / 16:38:11 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
-!AbstractDesktop methodsFor:'accessing-directories'!
-
-desktopDirectory
-
-    ^OperatingSystem getDesktopDirectory
-
-    "Created: / 09-05-2012 / 11:48:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-documentsDirectory
-
-    ^OperatingSystem getDocumentsDirectory
-
-    "Created: / 09-05-2012 / 11:48:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
 !AbstractDesktop methodsFor:'operations'!
 
 edit: filenames
@@ -152,12 +130,12 @@
 
 !AbstractDesktop class methodsFor:'documentation'!
 
-version
-    ^'$Id: AbstractDesktop.st 10808 2012-05-09 15:04:12Z vranyj1 $'
+version_CVS
+    ^ '$Header: /cvs/stx/stx/libbasic/AbstractDesktop.st,v 1.1 2011-06-28 10:09:08 vrany Exp $'
 !
 
 version_SVN
-    ^ '$Id: AbstractDesktop.st 10808 2012-05-09 15:04:12Z vranyj1 $'
+    ^ ' Id: AbstractDesktop.st 10517 2010-04-26 18:26:38Z vranyj1  '
 ! !
 
 AbstractDesktop initialize!
--- a/AbstractNumberVector.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/AbstractNumberVector.st	Sat Jan 19 01:30:00 2013 +0000
@@ -46,16 +46,9 @@
 !AbstractNumberVector class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/AbstractNumberVector.st,v 1.2 2012/02/27 20:54:03 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbstractNumberVector.st,v 1.2 2012-02-27 20:54:03 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/AbstractNumberVector.st,v 1.2 2012/02/27 20:54:03 cg Exp §'
-!
-
-
-version_SVN
-    ^ '$Id: AbstractNumberVector.st 10792 2012-03-21 17:45:38Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbstractNumberVector.st,v 1.2 2012-02-27 20:54:03 cg Exp $'
 ! !
-
-
--- a/AbstractOperatingSystem.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/AbstractOperatingSystem.st	Sat Jan 19 01:30:00 2013 +0000
@@ -673,11 +673,15 @@
      (as kept in an osErrorHolder)."
 
     Resources isNil ifTrue:[
-	"/ do not care to load resource strings, if the error happens durig early initialization
+	"/ do not care to load resource strings, if the error happens during early initialization
 	Smalltalk isInitialized ifFalse:[
 	    ^ errorSymbol
 	].
-	self initResources.
+	"/ avoid endless recursion
+	Error handle:[:ex |
+	] do:[
+	    self initResources.
+	].
 	Resources isNil ifTrue:[
 	    ^ errorSymbol
 	]
@@ -1715,14 +1719,14 @@
      hardwiring any 'cd ..' command strings into your applictions."
 
      ^ self
-        executeCommand:aCommandString
-        inputFrom:nil
-        outputTo:outStreamOrNil
-        errorTo:nil
-        auxFrom:nil
-        inDirectory:aDirectory
-        lineWise:false
-        onError:[:status| false]
+	executeCommand:aCommandString
+	inputFrom:nil
+	outputTo:outStreamOrNil
+	errorTo:nil
+	auxFrom:nil
+	inDirectory:aDirectory
+	lineWise:false
+	onError:[:status| false]
 
     "
      OperatingSystem executeCommand:'tdump date.obj' inDirectory:'c:\winstx\stx\libbasic\objbc'.
@@ -1850,8 +1854,8 @@
      OperatingSystem canExecuteCommand:'cvs'
      OperatingSystem canExecuteCommand:'diff'
      OperatingSystem canExecuteCommand:'cvs.exe'
-     OperatingSystem canExecuteCommand:'hg' 
-     OperatingSystem pathOfCommand:'hg'  
+     OperatingSystem canExecuteCommand:'hg'
+     OperatingSystem pathOfCommand:'hg'
     "
 
     "Created: / 04-11-1995 / 19:13:54 / cg"
@@ -3223,10 +3227,12 @@
 %{  /* NOCONTEXT */
 #ifndef CC_DEFINE
 # ifdef WIN32
-#  ifdef __BORLANDC__
+#  if defined( __BORLANDC__ )
 #   define CC_DEFINE    "__BORLANDC__"
-#  else
-#   define CC_DEFINE     "__MSC__"
+#  elif defined( __VISUALC__ )
+#   define CC_DEFINE     "__VISUALC__"
+#  elif defined( __MINGW64__ )
+#   define CC_DEFINE     "__MINGW64__"
 #  endif
 # else
 #  ifdef __GNUC__
@@ -3281,6 +3287,9 @@
 #   ifdef __i386__
 #    define CPU_SYMBOL @symbol(i386)
 #   endif
+#   ifdef __x86_64__
+#    define CPU_SYMBOL @symbol(x86_64)
+#   endif
 #   ifdef __i860__
 #    define CPU_SYMBOL @symbol(i860)
 #   endif
@@ -3569,6 +3578,10 @@
 #    define OS_SYMBOL @symbol(osf)
 #   endif
 
+#   ifdef __osx__
+#    define OS_SYMBOL @symbol(osx)
+#   endif
+
     /*
      * no concrete info; become somewhat vague ...
      */
@@ -4110,7 +4123,7 @@
 
 !AbstractOperatingSystem class methodsFor:'path queries'!
 
-decodePath:encodedPathName 
+decodePath:encodedPathName
     "decode the pathName as returned by system calls.
      E.g. linux system calls return sigle byte strings only,
      so the pathName has been UTF-8 decoded."
@@ -4254,17 +4267,17 @@
     "/
     appPath := self pathOfSTXExecutable.
     appPath notNil ifTrue:[
-        appDir := appPath asFilename directory.
-        appPath := appDir pathName.
-        (sysPath includes:appPath) ifFalse:[
-            sysPath add:appPath.
-        ].
-        appDir baseName = 'bin' ifTrue:[
-            appPath := appDir directory pathName.
-            (sysPath includes:appPath) ifFalse:[
-                sysPath add:appPath.
-            ].
-        ].
+	appDir := appPath asFilename directory.
+	appPath := appDir pathName.
+	(sysPath includes:appPath) ifFalse:[
+	    sysPath add:appPath.
+	].
+	appDir baseName = 'bin' ifTrue:[
+	    appPath := appDir directory pathName.
+	    (sysPath includes:appPath) ifFalse:[
+		sysPath add:appPath.
+	    ].
+	].
     ].
 
     "/
@@ -4272,55 +4285,55 @@
     "/
     homePath := self getHomeDirectory.
     homePath notNil ifTrue:[
-        "/
-        "/ a users private smalltalk directory in its home (login) directory
-        "/
-        OperatingSystem isUNIXlike ifTrue:[
-            priv := '.smalltalk'.
-        ] ifFalse:[
-            priv := 'smalltalk'.
-        ].
-        userPrivateSTXDir := homePath asFilename construct:priv.
-        (userPrivateSTXDir isDirectory) ifTrue:[
-            userPrivateSTXDir := userPrivateSTXDir pathName.
-            (sysPath includes:userPrivateSTXDir) ifFalse:[
-                sysPath add:userPrivateSTXDir
-            ]
-        ].
+	"/
+	"/ a users private smalltalk directory in its home (login) directory
+	"/
+	OperatingSystem isUNIXlike ifTrue:[
+	    priv := '.smalltalk'.
+	] ifFalse:[
+	    priv := 'smalltalk'.
+	].
+	userPrivateSTXDir := homePath asFilename construct:priv.
+	(userPrivateSTXDir isDirectory) ifTrue:[
+	    userPrivateSTXDir := userPrivateSTXDir pathName.
+	    (sysPath includes:userPrivateSTXDir) ifFalse:[
+		sysPath add:userPrivateSTXDir
+	    ]
+	].
     ].
 
     "/
     "/ SMALLTALK_LIBDIR, STX_LIBDIR and STX_TOPDIR from the environment
     "/
     #(
-        'SMALLTALK_LIBDIR'
-        'STX_LIBDIR'
-        'STX_TOPDIR'
+	'SMALLTALK_LIBDIR'
+	'STX_LIBDIR'
+	'STX_TOPDIR'
      ) do:[:each |
-        p := OperatingSystem decodePath:(OperatingSystem getEnvironment:each).
-        p notNil ifTrue:[
-            p := p asFilename pathName.
-            (p asFilename isDirectory) ifTrue:[
-                (sysPath includes:p) ifFalse:[
-                     sysPath add:p
-                ]
-            ]
-        ].
+	p := OperatingSystem decodePath:(OperatingSystem getEnvironment:each).
+	p notNil ifTrue:[
+	    p := p asFilename pathName.
+	    (p asFilename isDirectory) ifTrue:[
+		(sysPath includes:p) ifFalse:[
+		     sysPath add:p
+		]
+	    ]
+	].
     ].
     ^ sysPath
 
     "
-        OperatingSystem defaultSystemPath
+	OperatingSystem defaultSystemPath
     "
 
     "Modified: / 24.12.1999 / 00:30:27 / cg"
 !
 
-encodePath:pathName 
+encodePath:pathName
     "encode the pathName for use with system calls.
      E.g. linux system calls accept sigle byte strings only,
      so the pathName has been UTF-8 encoded, before using it in a system call."
-    
+
     ^ pathName
 ! !
 
@@ -7146,11 +7159,12 @@
 !AbstractOperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/AbstractOperatingSystem.st,v 1.222 2012/12/13 13:52:25 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbstractOperatingSystem.st,v 1.224 2013-01-16 10:30:10 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/AbstractOperatingSystem.st,v 1.222 2012/12/13 13:52:25 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbstractOperatingSystem.st,v 1.224 2013-01-16 10:30:10 cg Exp $'
 ! !
 
+
 AbstractOperatingSystem initialize!
--- a/AbstractSourceFileReader.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/AbstractSourceFileReader.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1,14 +1,3 @@
-"
- COPYRIGHT (c) 2006 by eXept Software AG
-	      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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
-"
 "{ Package: 'stx:libbasic' }"
 
 Object subclass:#AbstractSourceFileReader
@@ -20,20 +9,6 @@
 
 !AbstractSourceFileReader class methodsFor:'documentation'!
 
-copyright
-"
- COPYRIGHT (c) 2006 by eXept Software AG
-	      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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
-"
-!
-
 documentation
 "
     Abstract common superclass for source file readers
@@ -79,13 +54,13 @@
 !AbstractSourceFileReader class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/AbstractSourceFileReader.st,v 1.6 2012/10/20 19:22:33 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbstractSourceFileReader.st,v 1.6 2012-10-20 19:22:33 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/AbstractSourceFileReader.st,v 1.6 2012/10/20 19:22:33 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbstractSourceFileReader.st,v 1.6 2012-10-20 19:22:33 cg Exp $'
 !
 
 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	Thu Dec 20 11:48:59 2012 +0000
+++ b/AbstractSourceFileWriter.st	Sat Jan 19 01:30:00 2013 +0000
@@ -194,9 +194,9 @@
 !AbstractSourceFileWriter class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/AbstractSourceFileWriter.st,v 1.8 2012/10/20 19:22:46 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbstractSourceFileWriter.st,v 1.8 2012-10-20 19:22:46 cg Exp $'
 !
 
 version_SVN
-    ^ '$ Id: AbstractSourceFileWriter.st 10643 2011-06-08 21:53:07Z vranyj1  $'
+    ^ '§ Id: AbstractSourceFileWriter.st 10643 2011-06-08 21:53:07Z vranyj1  §'
 ! !
--- a/AbstractTime.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/AbstractTime.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1197,16 +1197,9 @@
 !AbstractTime class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/AbstractTime.st,v 1.76 2012/11/05 12:59:57 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbstractTime.st,v 1.76 2012-11-05 12:59:57 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/AbstractTime.st,v 1.76 2012/11/05 12:59:57 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: AbstractTime.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbstractTime.st,v 1.76 2012-11-05 12:59:57 cg Exp $'
 ! !
-
-
-
--- a/AmbiguousMessage.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/AmbiguousMessage.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1,13 +1,27 @@
 "
- COPYRIGHT (c) 2006 by eXept Software AG
+ COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
               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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the 'Software'), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
 "
 "{ Package: 'stx:libbasic' }"
 
@@ -22,20 +36,38 @@
 
 copyright
 "
- COPYRIGHT (c) 2006 by eXept Software AG
+ COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
               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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the 'Software'), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
 "
 ! !
 
 !AmbiguousMessage class methodsFor:'documentation'!
 
+version_CVS
+    ^ '$Header: /cvs/stx/stx/libbasic/AmbiguousMessage.st,v 1.2 2011-07-03 15:01:04 cg Exp $'
+!
+
 version_SVN
-    ^ '$Id: AmbiguousMessage.st 10700 2011-09-29 15:44:37Z vranyj1 $'
+    ^ '§Id: AmbiguousMessage.st,v 1.1 2011/06/28 11:04:04 vrany Exp §'
 ! !
--- a/Annotation.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Annotation.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1,13 +1,27 @@
 "
- COPYRIGHT (c) 2006 by eXept Software AG
+ COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
               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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the 'Software'), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
 "
 "{ Package: 'stx:libbasic' }"
 
@@ -43,15 +57,29 @@
 
 copyright
 "
- COPYRIGHT (c) 2006 by eXept Software AG
+ COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
               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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the 'Software'), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
 "
 !
 
@@ -618,15 +646,15 @@
 !Annotation class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Annotation.st,v 1.14 2012/11/05 23:56:53 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Annotation.st,v 1.14 2012-11-05 23:56:53 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Annotation.st,v 1.14 2012/11/05 23:56:53 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/Annotation.st,v 1.14 2012-11-05 23:56:53 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: Annotation.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '§Id: Annotation.st,v 1.1 2011/06/28 11:04:04 vrany Exp §'
 ! !
 
 Annotation initialize!
--- a/ApplicationDefinition.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ApplicationDefinition.st	Sat Jan 19 01:30:00 2013 +0000
@@ -55,7 +55,7 @@
 
         buildTarget             name of the generated exe-file
 
-
+        
     should redefine:
         preRequisites           list of required packages
 
@@ -73,7 +73,7 @@
         applicationName         app name; shown by windows explorer
 
 
-    might redefine:
+    might redefine:    
         isConsoleApplication    if true, windows-build generates a console app.
 
         isGUIApplication        if true, the GUI framework is linked in
@@ -98,7 +98,7 @@
 appSourcesProjects
     "Returns only the application projects (which are included in the application module)"
 
-    ^self preRequisites select:[:each |
+    ^self preRequisites select:[:each | 
         (self moduleFor: each) = self module
     ].
 
@@ -112,8 +112,8 @@
 
     |cls|
 
-    Error
-        handle:[:ex | ]
+    Error 
+        handle:[:ex | ] 
         do:[
             |clsName|
 
@@ -128,7 +128,7 @@
 stxSourcesProjects
     "Returns only the required STX projects (which are included in the STX module)"
 
-    ^self effectivePreRequisites select:[:each |
+    ^self effectivePreRequisites select:[:each | 
         (self moduleFor: each) = (self moduleFor: #'stx')
     ].
 
@@ -138,16 +138,16 @@
 
     "
     #(
-       'libbasic'
-       'libbasic2'
-       'libcomp'
-       'libview'
+       'libbasic' 
+       'libbasic2' 
+       'libcomp' 
+       'libview' 
        'libview2'
-       'libwidg'
-       'libwidg2'
-       'libtool'
-       'libtool2'
-       'libhtml'
+       'libwidg' 
+       'libwidg2' 
+       'libtool' 
+       'libtool2' 
+       'libhtml' 
        'libui'
     )
     "
@@ -158,25 +158,25 @@
 forEachMethodsCodeToCompileDo:aTwoArgBlock ignoreOldDefinition:ignoreOldDefinition
     super forEachMethodsCodeToCompileDo:aTwoArgBlock ignoreOldDefinition:ignoreOldDefinition.
 
-    aTwoArgBlock
+    aTwoArgBlock 
         value:self subProjects_code
         value:'description'.
 
-    aTwoArgBlock
+    aTwoArgBlock 
         value:self preRequisites_code
         value:'description'.
 
-    aTwoArgBlock
+    aTwoArgBlock 
         value:self excludedFromPreRequisites_code
         value:'description'.
 
     (self class includesSelector:#startupClassName) ifFalse:[
-        aTwoArgBlock
+        aTwoArgBlock 
             value:self startupClassName_code
             value:'description - startup'.
     ].
     (self class includesSelector:#startupSelector) ifFalse:[
-        aTwoArgBlock
+        aTwoArgBlock 
             value:self startupSelector_code
             value:'description - startup'.
     ].
@@ -188,8 +188,8 @@
 startupClassName_code
     |classes startClasses mainClasses appClasses|
 
-    classes := self classNamesAndAttributes
-                collect:[:nm | Smalltalk classNamed:nm]
+    classes := self classNamesAndAttributes 
+                collect:[:nm | Smalltalk classNamed:nm] 
                 thenSelect:[:cls | cls notNil and:[cls isProjectDefinition not ]].
 
     mainClasses := classes select:[:each | each theMetaclass includesSelector:#main ].
@@ -209,7 +209,7 @@
         ]
     ].
 
-    ^
+    ^ 
 'startupClassName
     "the name of the class which starts the show in its <startupSelector> method.
      Usually, the name of a subclass of StandAloneStartup."
@@ -222,7 +222,7 @@
 !
 
 startupClassName_codeFor:aClassName
-    ^
+    ^ 
 'startupClassName
     "the class that starts the show in its startupSelector method"
 
@@ -238,8 +238,8 @@
 
     |clsName cls sel|
 
-    Error
-        handle:[:ex | ]
+    Error 
+        handle:[:ex | ] 
         do:[
             clsName := self startupClassName.
             cls := Smalltalk classNamed:clsName.
@@ -258,21 +258,21 @@
 !
 
 startupSelector_codeFor:aSelector
-    ^
+    ^ 
 'startupSelector
     "the message that is sent to the startupClass to start the show"
 
-    ^ #''',aSelector,'''
+    ^ #''',aSelector,'''        
 '
 
     "Created: / 05-09-2006 / 13:41:01 / cg"
     "Modified: / 15-12-2006 / 14:10:11 / cg"
 !
 
-subProjects_code
+subProjects_code        
     |subProjects|
 
-    subProjects :=
+    subProjects := 
         (self siblingsAreSubProjects)
             ifTrue:[ self searchForSiblingProjects ]
             ifFalse:[ self searchForSubProjects ].
@@ -282,13 +282,13 @@
     ^ String streamContents:[:s |
         s nextPutLine:'subProjects'.
         s nextPutLine:'    "list packages which are known as subprojects.'.
-        s nextPutLine:'     This method is generated automatically; however, when generating automatically,'.
+        s nextPutLine:'     This method is generated automatically; however, when generating automatically,'. 
         s nextPutLine:'     packages are only added - never removed, unless listed in #excludedFromSubProjects."'.
         s nextPutLine:''.
         s nextPutLine:'    ^ #('.
-        subProjects do:[:eachPackageID |
+        subProjects do:[:eachPackageID |    
             s nextPutLine:eachPackageID asString storeString
-        ].
+        ].      
         s nextPutLine:')'
     ].
 
@@ -326,7 +326,7 @@
 !
 
 guiClassFileNames_unix
-    ^ self guiClasses_unix
+    ^ self guiClasses_unix 
         collect:[:cls | (cls classBaseFilename asFilename withSuffix:'so') baseName].
 
     "Created: / 14-09-2006 / 18:13:22 / cg"
@@ -334,7 +334,7 @@
 !
 
 guiClassFileNames_win32
-    ^ self guiClasses_win32
+    ^ self guiClasses_win32 
         collect:[:cls | (cls classBaseFilename asFilename withSuffix:'dll') baseName].
 
     "Created: / 07-09-2006 / 17:23:13 / cg"
@@ -360,7 +360,7 @@
      needs resources to be installed. This is normally true.
      Even non-GUI apps need some (libbasic/resources)"
 
-    ^ true
+    ^ true 
 ! !
 
 !ApplicationDefinition class methodsFor:'description'!
@@ -409,8 +409,8 @@
     ^ self applicationNameFromPackage
 
     "
-     bosch_dapasx_application applicationName
-     stx_projects_smalltalk applicationName
+     bosch_dapasx_application applicationName     
+     stx_projects_smalltalk applicationName     
     "
 
     "Created: / 08-08-2006 / 20:25:39 / fm"
@@ -439,9 +439,9 @@
     ^ path last
 
     "
-     bosch_dapasx_application applicationName
-     stx_projects_smalltalk applicationName
-     alspa_batch_application applicationName
+     bosch_dapasx_application applicationName     
+     stx_projects_smalltalk applicationName     
+     alspa_batch_application applicationName    
     "
 
     "Created: / 08-08-2006 / 20:25:39 / fm"
@@ -457,16 +457,16 @@
     ^self module, ':', self applicationNameFromPackage
 
     "
-     bosch_dapasx_application applicationPackage
-     stx_projects_smalltalk applicationPackage
-     alspa_batch_application applicationPackage
+     bosch_dapasx_application applicationPackage     
+     stx_projects_smalltalk applicationPackage     
+     alspa_batch_application applicationPackage            
     "
 
     "Created: / 08-08-2006 / 20:25:39 / fm"
     "Modified: / 30-08-2006 / 19:29:25 / cg"
 !
 
-applicationType
+applicationType 
 
     ^self isGUIApplication
         ifTrue:['GUI_APPLICATION']
@@ -482,7 +482,7 @@
         '"symbols.stc"'
         '"*.stx"'
         '"*.rc"'
-        '/r "resources"'
+        '/r /x CVS /x ".*" resources'
     )
 
     "Created: / 01-03-2007 / 20:05:40 / cg"
@@ -506,20 +506,20 @@
     ^ nil       "the default, nil means: all prerequisites should be loaded initially"
 
 "/    ^ #(
-"/        #'stx:libbasic'
-"/        #'stx:libbasic2'
+"/        #'stx:libbasic'  
+"/        #'stx:libbasic2'   
 "/        #'stx:libcomp'
 "/    )
 !
 
 isConsoleApplication
     "Used with WIN32 only (i.e. affects bc.mak).
-     Return true, if this is a console application.
+     Return true, if this is a console application. 
      Console applications have stdout and stderr and open up a command-window
      when started. Only console applications can interact with the user in the
      command line window.
      By default, GUI apps are compiled as non-console apps.
-     If you need both (as in expecco), redefine this as true AND in addition redefine
+     If you need both (as in expecco), redefine this as true AND in addition redefine 
      makeConsoleApplication to return true."
 
     ^ self isGUIApplication not
@@ -528,7 +528,7 @@
 !
 
 isGUIApplication
-    "Return true, if this is a GUI app.
+    "Return true, if this is a GUI app. 
      Redefine to return false for non-GUI applications (affects inclusion of Display classes)."
 
     ^true
@@ -538,7 +538,7 @@
 !
 
 isSingleThreadedApplication
-    "Return true, if this should be started without multiple threads.
+    "Return true, if this should be started without multiple threads. 
      (not possible with gui applications)"
 
     ^false
@@ -657,12 +657,12 @@
 basicFileNamesToGenerate
     "answer a dictionary (filename -> generator method) with all the files, that have to be generated for this
      package"
-
+    
     |dict|
 
     dict := super basicFileNamesToGenerate.
 
-    dict
+    dict 
         at:'modules.stx'        put:#'generate_modules_dot_stx';
         at:'modules.c'          put:#'generate_modules_dot_c';
         at:self rcFilename      put:#'generate_packageName_dot_rc';
@@ -697,7 +697,7 @@
 
 generate_modules_dot_c
 
-    ^self replaceMappings: self modules_dot_c_mappings
+    ^self replaceMappings: self modules_dot_c_mappings 
             in: self modules_dot_c
 
     "
@@ -709,7 +709,7 @@
 
 generate_modules_dot_stx
 
-    ^self replaceMappings: self modules_dot_stx_mappings
+    ^self replaceMappings: self modules_dot_stx_mappings 
             in: self modules_dot_stx
 
 "
@@ -723,8 +723,8 @@
 
 generate_packageName_dot_nsi
 
-    ^self
-        replaceMappings: self packageName_dot_nsi_mappings
+    ^self 
+        replaceMappings: self packageName_dot_nsi_mappings 
         in: self packageName_dot_nsi
 
     "
@@ -756,11 +756,11 @@
 
 !ApplicationDefinition class methodsFor:'file mappings'!
 
-additionalFilesToInstall_dot_nsi:bindings
-    ^ String
-        streamContents:[:s |
-            self additionalFilesToInstall do:[:pattern |
-                s nextPutLine:((self installFileLine_nsi_for:pattern)
+additionalFilesToInstall_dot_nsi:bindings 
+    ^ String 
+        streamContents:[:s | 
+            self additionalFilesToInstall do:[:pattern | 
+                s nextPutLine:((self installFileLine_nsi_for:pattern) 
                             expandPlaceholdersWith:bindings)
             ].
         ].
@@ -821,24 +821,24 @@
         at: 'APPLICATION_TYPE' put: self applicationType;
         yourself.
 
-    self offerSmalltalkSourceCode ifTrue:[
+    self offerSmalltalkSourceCode ifTrue:[ 
 "/        mappings
-"/            at: 'STX_SOURCE_RULES' put: ( self replaceMappings: mappings
+"/            at: 'STX_SOURCE_RULES' put: ( self replaceMappings: mappings 
 "/                                            in: self make_dot_proto_stx_source_rules).
     ].
 
-    self offerApplicationSourceCode ifTrue:[
+    self offerApplicationSourceCode ifTrue:[  
 "/        mappings
-"/            at: 'SOURCE_RULES' put:( self replaceMappings: 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
+"/            at: 'RESOURCE_RULES' put:( self replaceMappings: mappings 
 "/                                            in: self make_dot_proto_resource_rules );
-"/            at: 'STX_RESOURCE_RULES' put: ( self replaceMappings: mappings
+"/            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.
@@ -855,7 +855,7 @@
     |d|
 
     d := super bc_dot_mak_mappings.
-    d
+    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:'');
@@ -869,32 +869,32 @@
         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: '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: '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
+        d 
+            at: 'RESOURCE_RULES' put:( self replaceMappings: d 
                                             in: self bc_dot_mak_resource_rules );
-            at: 'STX_RESOURCE_RULES' put: ( self replaceMappings: d
+            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
+        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
+        d 
+            at: 'APP_SOURCE_RULES' put: ( self replaceMappings: d 
                                                in: self bc_dot_mak_app_source_rules);
             yourself
     ].
@@ -907,8 +907,8 @@
     |d|
 
     d := Dictionary new.
-    d
-        at: 'BUILDDATE' put: (Timestamp now printStringRFC1123Format ).
+    d 
+        at: 'BUILDDATE' put: (Timestamp now printStringRFC1123Format ). 
 
     ^ d
 
@@ -916,11 +916,11 @@
     "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)
+commonFilesToInstall_dot_nsi:bindings 
+    ^ String 
+        streamContents:[:s | 
+            self commonFilesToInstall do:[:pattern | 
+                s nextPutLine:((self installFileLine_nsi_for:pattern) 
                             expandPlaceholdersWith:bindings)
             ].
         ].
@@ -968,33 +968,33 @@
         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_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: 'SUBPROJECTS_LIBS' put: (self generateSubProjectLines_make_dot_proto ); 
         at: 'REQUIRED_SUPPORT_DIRS' put: (self extraTargets asStringWith:' ');
         at: 'BUILD_TARGET' put: (self buildTarget ).
 
-    self offerSmalltalkSourceCode ifTrue:[
+    self offerSmalltalkSourceCode ifTrue:[ 
         mappings
-            at: 'STX_SOURCE_RULES' put: ( self replaceMappings: mappings
+            at: 'STX_SOURCE_RULES' put: ( self replaceMappings: mappings 
                                             in: self make_dot_proto_stx_source_rules).
     ].
 
-    self offerApplicationSourceCode ifTrue:[
+    self offerApplicationSourceCode ifTrue:[  
         mappings
-            at: 'SOURCE_RULES' put:( self replaceMappings: mappings
+            at: 'SOURCE_RULES' put:( self replaceMappings: mappings 
                                             in: self make_dot_proto_app_source_rules ).
     ].
 
     self needResources ifTrue:[
         mappings
-            at: 'RESOURCE_RULES' put:( self replaceMappings: mappings
+            at: 'RESOURCE_RULES' put:( self replaceMappings: mappings 
                                             in: self make_dot_proto_resource_rules );
-            at: 'STX_RESOURCE_RULES' put: ( self replaceMappings: mappings
+            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.
@@ -1009,11 +1009,11 @@
     |d|
 
     d := Dictionary new.
-    d
-        at: 'INIT_LIST' put:
-            ((self generateClassLines:(self classLine_modules_dot_c)) ,
+    d 
+        at: 'INIT_LIST' put: 
+            ((self generateClassLines:(self classLine_modules_dot_c)) , 
              (self generateExtensionLine:(self extensionsLine_modules_dot_c)));
-        at: 'EXTERN_INIT_NAME_LIST' put:
+        at: 'EXTERN_INIT_NAME_LIST' put: 
             ((self generateClassLines:(self classLine_modules_dot_c_extern)),
              (self generateExtensionLine:(self extensionsLine_modules_dot_c_extern)));
         yourself.
@@ -1032,10 +1032,10 @@
     |d|
 
     d := Dictionary new.
-    d
+    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  ).
+        at: 'SUBPROJECT_LIBS' put: (self generateSubProjectLines_modules_dot_stx  ). 
 
     ^ d
 
@@ -1052,7 +1052,7 @@
 
 nsiDeliveredExecutables
     "by default, an executable named after the application.
-     Redefine, if thats not the case. If multiple have to be delivered,
+     Redefine, if thats not the case. If multiple have to be delivered, 
      return a string containing each individually double-quoted."
 
     |s|
@@ -1080,8 +1080,8 @@
         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: '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);
@@ -1123,7 +1123,7 @@
         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.
@@ -1164,12 +1164,12 @@
     "Modified: / 12-10-2012 / 11:44:32 / sr"
 !
 
-preRequisiteLine_bc_dot_mak_mappings: aProjectID
+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);
+        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"
@@ -1181,19 +1181,19 @@
     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;
+        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
+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);
+        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
 !
 
@@ -1203,8 +1203,8 @@
     relPath := (PackageId from:aClass package) directory.
 
     ^ Dictionary new
-        at: 'FILE_NAME' put: ( aClass classBaseFilename asFilename withoutSuffix baseName );
-        at: 'MODULE_DIRECTORY' put:relPath;
+        at: 'FILE_NAME' put: ( aClass classBaseFilename asFilename withoutSuffix baseName );  
+        at: 'MODULE_DIRECTORY' put:relPath;     
         yourself
 
     "Modified: / 09-02-2007 / 16:28:12 / cg"
@@ -1259,21 +1259,21 @@
     "Created: / 15-10-2006 / 12:59:03 / cg"
 !
 
-subProjectLine_bc_dot_mak_mappings: aProjectID
+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);
+        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
+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);
+        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"
@@ -1283,7 +1283,7 @@
 
 generateAllPreRequisiteLibs_modules_dot_stx
     ^ String streamContents:[:s |
-        self allPreRequisitesSorted do:[:projectID |
+        self allPreRequisitesSorted do:[:projectID | 
             (self shouldBeLoadedInitially:projectID) ifFalse:[
                 s nextPut:$*.
             ].
@@ -1308,8 +1308,8 @@
     ^self hasExtensionMethods
         ifFalse:['']
         ifTrue:[
-            self replaceMappings:
-                (Dictionary new
+            self replaceMappings: 
+                (Dictionary new 
                     at: 'CLASS' put:( self st2c:(self package copy asString replaceAny:':/' with:$_) );
                     yourself)
                 in: extensionLineTemplate
@@ -1320,7 +1320,7 @@
 
 generatePreRequisiteLibs_modules_dot_stx
     ^ String streamContents:[:s |
-        self effectivePreRequisites do:[:projectID |
+        self effectivePreRequisites do:[:projectID | 
             (self shouldBeLoadedInitially:projectID) ifFalse:[
                 s nextPut:$*.
             ].
@@ -1340,7 +1340,7 @@
     "Modified: / 07-09-2006 / 17:22:58 / cg"
 !
 
-generatePreRequisiteLines_bc_dot_mak
+generatePreRequisiteLines_bc_dot_mak         
 
     ^ String streamContents:[:s |
         self allPreRequisitesSorted do:[:eachPackage |
@@ -1348,28 +1348,28 @@
             mappings := self preRequisiteLine_bc_dot_mak_mappings: eachPackage.
             newObjectLine := self replaceMappings: mappings
                                 in: self preRequisiteLine_bc_dot_mak.
-            s nextPutAll:newObjectLine.
-            s cr.
+            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.
+            s nextPutAll:newObjectLine. 
+            s cr. 
         ].
     ]
 
     "
-     bosch_dapasx_application generatePreRequisiteLines_bc_dot_mak
+     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
+generatePreRequisiteLines_make_dot_proto        
 
     ^ String streamContents:[:s |
         self allPreRequisitesSorted do:[:eachPackage |
@@ -1377,21 +1377,21 @@
             mappings := self preRequisiteLine_make_dot_proto_mappings: eachPackage.
             newObjectLine := self replaceMappings: mappings
                                 in: self preRequisiteLine_make_dot_proto.
-            s nextPutAll:newObjectLine.
-            s cr.
+            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.
+            s nextPutAll:newObjectLine. 
+            s cr. 
         ].
     ]
 
     "
-     bosch_dapasx_application generatePreRequisiteLines_bc_dot_mak
+     bosch_dapasx_application generatePreRequisiteLines_bc_dot_mak 
     "
 
     "Created: / 09-08-2006 / 11:24:39 / fm"
@@ -1412,17 +1412,17 @@
     ].
 
     "
-     alspa_batch_application generateRequiredLibobjs_make_dot_proto
+     alspa_batch_application generateRequiredLibobjs_make_dot_proto      
     "
 !
 
 generateRequiredLibs_bc_dot_mak
     ^ String streamContents:[:s |
         s nextPutLine:' \'.
-        self allPreRequisitesSorted do:[:projectID |
+        self allPreRequisitesSorted do:[:projectID | 
             s space; nextPutAll:(self libraryNameFor:projectID),'.dll'; nextPutLine:' \'.
         ].
-        self subProjects do:[:projectID |
+        self subProjects do:[:projectID | 
             s space; nextPutAll:(self libraryNameFor:projectID),'.dll'; nextPutLine:' \'.
         ].
 
@@ -1431,14 +1431,14 @@
                 s space; nextPutAll:eachFilename; nextPutLine:' \'.
             ].
         ].
-"/        self subProjects do:[:projectID |
+"/        self subProjects do:[:projectID | 
 "/            s space; nextPutAll:(self libraryNameFor:projectID),'.dll'; nextPutLine:' \'.
 "/        ].
         s cr.
     ].
 
     "
-     bosch_dapasx_application generateRequiredLibs_bc_dot_mak
+     bosch_dapasx_application generateRequiredLibs_bc_dot_mak      
     "
 
     "Modified: / 07-09-2006 / 17:22:51 / cg"
@@ -1447,10 +1447,10 @@
 generateRequiredLibs_make_dot_proto
     "/ cg: why not (self libraryNameFor:projectID),'.so'; ???
     ^ String streamContents:[:s |
-        self allPreRequisitesSorted do:[:projectID |
+        self allPreRequisitesSorted do:[:projectID | 
             s space; nextPutAll:(self libraryNameFor:projectID); nextPutLine:' \'.
         ].
-        self subProjects do:[:projectID |
+        self subProjects do:[:projectID | 
             s space; nextPutAll:(self libraryNameFor:projectID); nextPutLine:' \'.
         ].
 
@@ -1459,21 +1459,21 @@
                 s space; nextPutAll:eachFilename; nextPutLine:' \'.
             ].
         ].
-"/        self subProjects do:[:projectID |
+"/        self subProjects do:[:projectID | 
 "/            s space; nextPutAll:(self libraryNameFor:projectID); nextPutLine:' \'.
 "/        ].
         s cr.
     ].
 
     "
-     alspa_batch_application generateRequiredLibs_make_dot_proto
+     alspa_batch_application generateRequiredLibs_make_dot_proto      
     "
 !
 
 generateRequiredLinkLibobjs_make_dot_proto
 
     ^ String streamContents:[:s |
-        self allPreRequisitesSorted do:[:projectID |
+        self allPreRequisitesSorted do:[:projectID | 
             s space; nextPutAll:(self libraryNameFor:projectID),'$(O_EXT)'; nextPutLine:' \'.
         ].
 
@@ -1482,18 +1482,18 @@
                 s space; nextPutAll:eachFilename,'$(O_EXT)'; nextPutLine:' \'.
             ].
         ].
-"/        self subProjects do:[:projectID |
+"/        self subProjects do:[:projectID | 
 "/            s space; nextPutAll:(self libraryNameFor:projectID),'$(O_EXT)'; nextPutLine:' \'.
 "/        ].
         s cr.
     ].
 
     "
-     alspa_batch_application generateRequiredLinkLibobjs_make_dot_proto
+     alspa_batch_application generateRequiredLinkLibobjs_make_dot_proto      
     "
 !
 
-generateSubProjectLines_bc_dot_mak
+generateSubProjectLines_bc_dot_mak         
 
     ^ String streamContents:[:s |
         self subProjects do:[:projectID |
@@ -1502,21 +1502,21 @@
             mappings := self subProjectLine_bc_dot_mak_mappings: projectID.
             newObjectLine := self replaceMappings: mappings
                                 in: self subProjectLine_bc_dot_mak.
-            s nextPutAll:newObjectLine.
-            s cr.
+            s nextPutAll:newObjectLine. 
+            s cr. 
         ]
     ]
 
     "
-     bosch_dapasx_application generateSubProjectLines_bc_dot_mak
-     cg_newCompiler_driver_stc generateSubProjectLines_bc_dot_mak
+     bosch_dapasx_application generateSubProjectLines_bc_dot_mak 
+     cg_newCompiler_driver_stc generateSubProjectLines_bc_dot_mak 
     "
 
     "Created: / 09-08-2006 / 11:24:39 / fm"
     "Modified: / 14-09-2006 / 18:46:09 / cg"
 !
 
-generateSubProjectLines_make_dot_proto
+generateSubProjectLines_make_dot_proto         
 
     ^ String streamContents:[:s |
         self subProjects do:[:projectID |
@@ -1525,13 +1525,13 @@
             mappings := self subProjectLine_make_dot_proto_mappings: projectID.
             newObjectLine := self replaceMappings: mappings
                                 in: self subProjectLine_bc_dot_mak.
-            s nextPutAll:newObjectLine.
-            s cr.
+            s nextPutAll:newObjectLine. 
+            s cr. 
         ]
     ]
 
     "
-     bosch_dapasx_application generateSubProjectLines_make_dot_proto
+     bosch_dapasx_application generateSubProjectLines_make_dot_proto 
      cg_newCompiler_driver_stc generateSubProjectLines_make_dot_proto
     "
 
@@ -1543,7 +1543,7 @@
     |string|
 
     string := String streamContents:[:s |
-            self subProjects do:[:projectID |
+            self subProjects do:[:projectID | 
                     (self shouldBeLoadedInitially:projectID) ifFalse:[
                         s nextPut:$*.
                     ].
@@ -1566,7 +1566,7 @@
 bc_dot_def
     "the template code for the bc.def file"
 
-^
+^ 
 'DESCRIPTION     %(DESCRIPTION)
 CODE            PRELOAD MOVEABLE DISCARDABLE
 SEGMENTS
@@ -1585,20 +1585,20 @@
 
 ^ '# $','Header','$
 #
-# DO NOT EDIT
+# DO NOT EDIT 
 # automagically generated from the projectDefinition: ',self name",' at ',Timestamp now printString",'.
 #
 # Warning: once you modify this file, do not rerun
 # stmkmp or projectDefinition-build again - otherwise, your changes are lost.
 #
 # Historic Note:
-#  this used to contain only rules to make with borland
+#  this used to contain only rules to make with borland 
 #    (called via bmake, by "make.exe -f bc.mak")
 #  this has changed; it is now also possible to build using microsoft visual c
 #    (called via vcmake, by "make.exe -f bc.mak -DUSEVC")
 #
 
-TOP=%(TOP)
+TOP=%(TOP)       
 INCLUDE_TOP=$(TOP)\..
 
 CFLAGS_LOCAL=$(CFLAGS_APPTYPE) \
@@ -1646,12 +1646,12 @@
 
 REQUIRED_SUPPORT_DIRS=%(REQUIRED_SUPPORT_DIRS)
 
-target: %(BUILD_TARGET) postBuildCleanup
+target: %(BUILD_TARGET) postBuildCleanup 
 
 # the executable, all required files and a self-installing-installer-exe
-ALL:: prereq exe $(REQUIRED_SUPPORT_DIRS) %(ADDITIONAL_TARGETS) postBuildCleanup setup
-
-exe:  newBuildDate %(NOCONSOLE_APPLICATION_OR_EMPTY) %(CONSOLE_APPLICATION_OR_EMPTY)
+ALL:: prereq exe $(REQUIRED_SUPPORT_DIRS) %(ADDITIONAL_TARGETS) postBuildCleanup setup 
+
+exe:  newBuildDate %(NOCONSOLE_APPLICATION_OR_EMPTY) %(CONSOLE_APPLICATION_OR_EMPTY) 
 
 # the executable only
 # with console
@@ -1675,7 +1675,7 @@
                 CRT_STARTUP=" $(CRT_STARTUP_NOCONSOLE)" theExe
 
 # the executable only (internal target; needs some defines)
-theExe: $(OUTDIR) $(OBJS) $(REQUIRED_FILES) show $(PROJECT)
+theExe: $(OUTDIR) $(OBJS) $(REQUIRED_FILES) show $(PROJECT) 
 
 # build all prerequisite packages for this package
 prereq:
@@ -1702,10 +1702,10 @@
 %(APP_SOURCE_RULES)
 %(STX_SOURCE_RULES)
 
-%(PREREQUISITES_LIBS)
+%(PREREQUISITES_LIBS)      
 %(SUBPROJECTS_LIBS)
 
-sources\NUL:
+sources\NUL: 
         mkdir sources
 
 show:
@@ -1759,7 +1759,7 @@
         $(APP_LINKER) $(LFLAGS) $(LFLAGS_APPTYPE) $(CRT_STARTUP) $(ALLOBJ) -o "$(PROJECT_NOCONSOLE)" $(ALLLIB) $(RESFILES)
 
 !!   else
-!!    ifdef USEMINGW
+!!    if defined(USEMINGW32) || defined(USEMINGW64)
 
 $(PROJECT_CONSOLE): $(ALLOBJFILES) $(OBJS) $(RESFILES) $(DEFFILE) $(LIBFILES) show
         $(APP_LINKER) $(LFLAGS) $(LFLAGS_APPTYPE) $(CRT_STARTUP) $(ALLOBJ) -o "$(PROJECT_CONSOLE)" $(ALLLIB) $(RESFILES)
@@ -1840,7 +1840,6 @@
 %(ADDITIONAL_RULES_HG)'.
 
     "Modified: / 22-11-2012 / 17:18:28 / cg"
-    "Modified: / 28-11-2012 / 10:18:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 bc_dot_mak_app_source_rules
@@ -1982,7 +1981,7 @@
 libtool2_RESOURCES: resources\stx\libtool2\NUL
         -copy $(TOP)\libtool2\resources\*.rs resources\stx\libtool2\*.*
 
-libview_RESOURCES: resources\stx\libview\NUL
+libview_RESOURCES: resources\stx\libview\NUL 
         -copy $(TOP)\libview\resources\*.rs resources\stx\libview\*.*
 
 libview2_RESOURCES: resources\stx\libview2\NUL
@@ -2059,7 +2058,7 @@
 buildDate_dot_h
     "the template code for the buildDate.h file"
 
-^
+^ 
 '#define BUILD_DATE "%(BUILDDATE)"'
 
     "Created: / 30-08-2006 / 19:18:34 / cg"
@@ -2083,8 +2082,8 @@
 
 defineAPPSourceLine_nsi_for: projectID
 
-^
-'
+^      
+'   
     SetOutPath "$INSTDIR\sources\',(self moduleFor: projectID),'\',(self moduleDirectory_win32For:projectID) ,'"
     File /r "${STX_ROOT}\', (self moduleFor: projectID) ,'\',(self moduleDirectory_win32For:projectID) ,'\*.st"'
 
@@ -2101,8 +2100,8 @@
 
 defineSTXSourceLine_nsi_for: projectID
 
-^
-'
+^      
+'  
     SetOutPath "$INSTDIR\sources\stx\', (self moduleDirectory_win32For:projectID),'"
     File /r "${STX_ROOT}\stx\', (self moduleDirectory_win32For:projectID),'\*.st"'
 
@@ -2128,7 +2127,7 @@
 
     (filePattern startsWith:'SetOutPath ') ifTrue:[
         ^ filePattern.
-    ].
+    ].        
 
     ^  '  File ', filePattern
 
@@ -2206,6 +2205,9 @@
 exe:    %(APPLICATION) $(REQUIRED_SUPPORT_DIRS)
 
 %(APPLICATION): $(APP_DIRS_TO_MAKE) $(APP_LIBOBJS) $(OBJS)
+        $(MAKE) link_%(APPLICATION)
+
+link_%(APPLICATION):
         $(MAKE) %(APPLICATION_TYPE) \
                     TARGET=%(APPLICATION) \
                     APPLICATION_CLASSES="$(COMMON_CLASSES) $(UNIX_CLASSES)" \
@@ -2303,11 +2305,11 @@
 make_dot_proto_resource_rules
     ^ String streamContents:[:s |
         s nextPutAll:'
-%(APPLICATION)_RESOURCES:
+%(APPLICATION)_RESOURCES: 
         mkdir -p resources/%(MODULE)/%(MODULE_PATH)
         -cp ../resources/*.rs ../resources/*.style resources/%(MODULE)/%(MODULE_PATH)/..
 
-%(APPLICATION)_BITMAPS:
+%(APPLICATION)_BITMAPS: 
         mkdir -p resources/%(MODULE)/%(MODULE_PATH)/bitmaps
         -cp *.ico *.gif *.png resources/%(MODULE)/%(MODULE_PATH)/bitmaps
 '.
@@ -2343,7 +2345,7 @@
 display.rc: $(TOP)/projects/smalltalk/display.rc
         cp $(TOP)/projects/smalltalk/display.rc .
 
-stx_STYLES:
+stx_STYLES: 
         mkdir -p resources/stx/libview
         mkdir -p resources/stx/libview/styles
         cp $(TOP)/libview/styles/*.common resources/stx/libview/styles
@@ -2352,27 +2354,27 @@
 stx_BITMAPS: \
         libwidg_BITMAPS
 
-libwidg_BITMAPS:
+libwidg_BITMAPS: 
         mkdir -p resources/stx/libwidg/bitmaps
         -cp $(TOP)/libwidg/bitmaps/*.* resources/stx/libwidg/bitmaps
 
-libbasic_RESOURCES:
+libbasic_RESOURCES: 
         mkdir -p resources/stx/libbasic
         -cp $(TOP)/libbasic/resources/*.* resources/stx/libbasic
 
-libtool_RESOURCES:
+libtool_RESOURCES: 
         mkdir -p resources/stx/libtool
         -cp $(TOP)/libtool/resources/*.* resources/stx/libtool
 
-libtool2_RESOURCES:
+libtool2_RESOURCES: 
         mkdir -p resources/stx/libtool2
         -cp $(TOP)/libtool2/resources/*.* resources/stx/libtool2
 
-libview_RESOURCES:
+libview_RESOURCES: 
         mkdir -p resources/stx/libview
         -cp $(TOP)/libview/resources/*.* resources/stx/libview
 
-libview2_RESOURCES:
+libview2_RESOURCES: 
         mkdir -p resources/stx/libview2
         -cp $(TOP)/libview2/resources/*.* resources/stx/libview2
 
@@ -2416,10 +2418,10 @@
 
 modules_dot_c
 
-^
+^ 
 '/* $','Header','$
  *
- * DO NOT EDIT
+ * DO NOT EDIT 
  * automagically generated from the projectDefinition: ',self name,'.
  *
  * Warning: once you modify this file, do not rerun
@@ -2442,10 +2444,10 @@
 
 modules_dot_stx
 
-^
+^ 
 '# $','Header','$
 #
-# DO NOT EDIT
+# DO NOT EDIT 
 # automagically generated from the projectDefinition: ',self name,'.
 #
 # Warning: once you modify this file, do not rerun
@@ -2475,7 +2477,7 @@
 
 |docDirPath|
 
-^
+^ 
 '; $','Header','$
 ; Script generated by ProjectDefinition.
 
@@ -2513,7 +2515,7 @@
 ; License page
 ; !!define MUI_LICENSEPAGE_CHECKBOX
 
-',(self hasLicenceToAcceptDuringInstallation
+',(self hasLicenceToAcceptDuringInstallation 
     ifTrue:['!!insertmacro MUI_PAGE_LICENSE $(license)']
     ifFalse:['']),'
 !!insertmacro MUI_PAGE_COMPONENTS
@@ -2591,7 +2593,7 @@
 ;;   SetOverwrite ifnewer
 ;; ;   File /r /x CVS "${STX_ROOT}\%(MODULE)\%(APPLICATION)\examples\*"
 ;; SectionEnd
-;;
+;; 
 ;; Section "%(PRODUCT_NAME) Reports and Printing" Section4
 ;;   SectionIn 1
 ;;   SetOutPath "$INSTDIR\reportGenerator"
@@ -2625,7 +2627,7 @@
   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
 SectionEnd
 
-LangString appOpen ${LANG_GERMAN}  "Mit %(PRODUCT_NAME) ffnen"
+LangString appOpen ${LANG_GERMAN}  "Mit %(PRODUCT_NAME) öffnen"
 LangString appOpen ${LANG_ENGLISH} "Open with %(PRODUCT_NAME)"
 
 LangString DESC_Section1 ${LANG_ENGLISH} "Program components of %(PRODUCT_NAME)"
@@ -2659,7 +2661,7 @@
 
 Function un.onInit
 !!insertmacro MUI_UNGETLANGUAGE
-  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Mchten Sie %(PRODUCT_NAME) und alle seine Komponenten deinstallieren?" IDYES +2
+  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Möchten Sie %(PRODUCT_NAME) und alle seine Komponenten deinstallieren?" IDYES +2
   Abort
 FunctionEnd
 
@@ -2697,9 +2699,9 @@
 packageName_dot_rc
     "the template code for the <appname>.rc file"
 
-^
+^ 
 '//
-// DO NOT EDIT
+// DO NOT EDIT 
 // automagically generated from the projectDefinition: ',self name,'.
 //
 #define IDR_MAINFRAME   128
@@ -2806,7 +2808,7 @@
 undefineExtenionLine_nsi_for:extension
     "the template code for a single extenions undefinition line in the <appname>.nsi file"
 
-^
+^ 
 '  DeleteRegKey HKCR ".',extension,'"'
 
     "Created: / 15-10-2006 / 12:51:00 / cg"
@@ -2860,15 +2862,15 @@
 "/        startupSelector
     ) do:[:sel |
         (self theMetaclass includesSelector:sel) ifFalse:[
-            Dialog
-                warn:('The %1-method is missing from the description %2!!'
+            Dialog 
+                warn:('The %1-method is missing from the description %2!!' 
                         bindWith:sel allBold
                         with:self name allBold).
             AbortSignal raise.
         ].
         (Error catch:[ self perform:sel ]) ifTrue:[
-            (Dialog
-                confirm:('The %1-method needs to be edited in the description %2!!\\Continue anyway?'
+            (Dialog 
+                confirm:('The %1-method needs to be edited in the description %2!!\\Continue anyway?' 
                         bindWith:sel allBold
                         with:self name allBold) withCRs) ifFalse:[
                 AbortSignal raise.
@@ -2902,14 +2904,14 @@
 !ApplicationDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ApplicationDefinition.st 10885 2012-12-08 00:50:06Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.211 2013-01-17 21:06:02 cg Exp $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.208 2012/11/22 16:20:01 cg Exp '
+    ^ '$Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.211 2013-01-17 21:06:02 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id:: ApplicationDefinition.st 10885 2012-12-08 00:50:06Z vranyj1                                                            $'
+    ^ '§ Id: ApplicationDefinition.st 10645 2011-06-09 15:28:45Z vranyj1  §'
 ! !
 
--- a/ArithmeticValue.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ArithmeticValue.st	Sat Jan 19 01:30:00 2013 +0000
@@ -203,6 +203,7 @@
     ^ self == ArithmeticValue
 ! !
 
+
 !ArithmeticValue methodsFor:'arithmetic'!
 
 * something
@@ -1339,15 +1340,11 @@
 !ArithmeticValue class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ArithmeticValue.st,v 1.90 2012/11/05 17:05:58 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ArithmeticValue.st,v 1.90 2012-11-05 17:05:58 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ArithmeticValue.st,v 1.90 2012/11/05 17:05:58 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: ArithmeticValue.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ArithmeticValue.st,v 1.90 2012-11-05 17:05:58 cg Exp $'
 ! !
 
 ArithmeticValue initialize!
--- a/Array.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Array.st	Sat Jan 19 01:30:00 2013 +0000
@@ -36,24 +36,24 @@
 
 documentation
 "
-    Instances of Array store general objects; the arrays size is fixed, 
-    therefore add:/remove: are not allowed. 
-    (actually, #add: is implemented for compatibility with smalltalks which 
+    Instances of Array store general objects; the arrays size is fixed,
+    therefore add:/remove: are not allowed.
+    (actually, #add: is implemented for compatibility with smalltalks which
      provide it, but it is very slow and outputs an annoying warning message ...)
 
     Access to the individual elements is via an integer index,
     using the well-known access messages #at: and #at:put:.
 
     Since Arrays are used very often in the system (either directly or a data-container
-    of more complex collection classes), some methods have been tuned by reimplementing 
-    them as primitives. Also, the compiler inline-codes some operations 
+    of more complex collection classes), some methods have been tuned by reimplementing
+    them as primitives. Also, the compiler inline-codes some operations
     (especially: the above accessing messages).
 
-    Notice that Array is a built-in class 
-    (i.e. the VM knows about its representation). 
-    Therefore it is NOT possible to add named instance variables or change 
-    Arrays inheritance. 
-    However, subclassing is allowed of course 
+    Notice that Array is a built-in class
+    (i.e. the VM knows about its representation).
+    Therefore it is NOT possible to add named instance variables or change
+    Arrays inheritance.
+    However, subclassing is allowed of course
     - even with added named instance variables.
 
     Literal arrays (i.e. array-constants) are entered in source as:
@@ -120,27 +120,20 @@
 		__InstPtr(newobj)->o_class = self;
 		__qSTORE(newobj, self);
 
-#if defined(memset4) && defined(FAST_ARRAY_MEMSET4)
+#if (POINTER_SIZE == 4) && defined(memset4) && defined(FAST_ARRAY_MEMSET4)
 		memset4(__InstPtr(newobj)->i_instvars, nil, nInstVars);
 #else
 # if !defined(NEGATIVE_ADDRESSES)
 		/*
 		 * knowing that nil is 0
 		 */
-#ifdef XXmips
-# undef FAST_ARRAY_MEMSET_DOUBLES_UNROLLED
-# undef FAST_ARRAY_MEMSET_LONGLONG_UNROLLED
-/* seems to be slightly faster */
-# define FAST_ARRAY_MEMSET
-#endif
+#  ifdef __sparc__
+#   define FAST_ARRAY_MEMSET_DOUBLES_UNROLLED
+#  endif
 
-#ifdef __sparc__
-# define FAST_ARRAY_MEMSET_DOUBLES_UNROLLED
-#endif
-
-#ifdef __VMS__
-# define FAST_ARRAY_MEMSET_LONGLONG_UNROLLED
-#endif
+#  ifdef __VMS__
+#   define FAST_ARRAY_MEMSET_LONGLONG_UNROLLED
+#  endif
 
 #  if defined(FAST_ARRAY_MEMSET_DOUBLES_UNROLLED)
 		op = __InstPtr(newobj)->i_instvars;
@@ -161,7 +154,7 @@
 		    nInstVars--;
 		}
 #  else
-#   if defined(FAST_ARRAY_MEMSET_LONGLONG_UNROLLED)
+#   if (POINTER_SIZE == 4) && defined(FAST_ARRAY_MEMSET_LONGLONG_UNROLLED)
 #    ifdef INT64
 #     define LONGLONG INT64
 #    else
@@ -190,7 +183,7 @@
 		memset(__InstPtr(newobj)->i_instvars, 0, instsize - OHDR_SIZE);
 #    else
 		op = __InstPtr(newobj)->i_instvars;
-#     if defined(INT64)
+#     if (POINTER_SIZE == 4) && defined(INT64)
 		while (nInstVars > 1) {
 		    *((INT64 *)op) = 0;
 		    nInstVars -= 2;
@@ -248,8 +241,8 @@
     "
      memory allocation failed.
      When we arrive here, there was no memory, even after
-     a garbage collect. 
-     This means, that the VM wanted to get some more memory from the 
+     a garbage collect.
+     This means, that the VM wanted to get some more memory from the
      Operatingsystem, which was not kind enough to give it.
      Bad luck - you should increase the swap space on your machine.
     "
@@ -283,7 +276,7 @@
 at:index
     "return the indexed instance variable with index, anInteger.
      Reimplemented here to avoid the additional at:->basicAt: send
-     (which we can do here, since when arriving here, #at: is obviously not 
+     (which we can do here, since when arriving here, #at: is obviously not
       redefined in a subclass).
      This method is the same as basicAt:."
 
@@ -450,7 +443,7 @@
 
 copyWith:something
     "return a new collection containing the receivers elements
-     and the single new element, newElement. 
+     and the single new element, newElement.
      This is different from concatentation, which expects another collection
      as argument, but equivalent to copy-and-addLast.
      Reimplemented for speed if receiver is an Array.
@@ -465,59 +458,59 @@
     REGISTER int spc;
 
     if (__qClass(self) == Array) {
-        sz = __qSize(self) + sizeof(OBJ);
-        __PROTECT2__(something, self);
-        __qAlignedNew(nObj, sz);        /* OBJECT ALLOCATION */
-        __UNPROTECT2__(self, something);
+	sz = __qSize(self) + sizeof(OBJ);
+	__PROTECT2__(something, self);
+	__qAlignedNew(nObj, sz);        /* OBJECT ALLOCATION */
+	__UNPROTECT2__(self, something);
 
-        if (nObj) {
-            __InstPtr(nObj)->o_class = Array;
-            __qSTORE(nObj, Array);
+	if (nObj) {
+	    __InstPtr(nObj)->o_class = Array;
+	    __qSTORE(nObj, Array);
 
-            nIndex = __BYTES2OBJS__(sz - OHDR_SIZE - sizeof(OBJ));
-            /* 
-             * sorry: 
-             *   cannot use bcopy, since we must take care of stores ... 
-             *   could check for: notRemembered + inOld + notLifoRem
-             *                  + not incrGCRunning
-             * but: copyWith is not heavily used by real programmers ...
-             */
-            spc = __qSpace(nObj);
-            srcP = __arrayVal(self);
-            dstP = __arrayVal(nObj);
+	    nIndex = __BYTES2OBJS__(sz - OHDR_SIZE - sizeof(OBJ));
+	    /*
+	     * sorry:
+	     *   cannot use bcopy, since we must take care of stores ...
+	     *   could check for: notRemembered + inOld + notLifoRem
+	     *                  + not incrGCRunning
+	     * but: copyWith is not heavily used by real programmers ...
+	     */
+	    spc = __qSpace(nObj);
+	    srcP = __arrayVal(self);
+	    dstP = __arrayVal(nObj);
 
 #ifdef __UNROLL_LOOPS__
-            while (nIndex >= 4) {
-                OBJ element;
+	    while (nIndex >= 4) {
+		OBJ element;
 
-                element = srcP[0];
-                dstP[0] = element;
-                __STORE_SPC(nObj, element, spc);
-                element = srcP[1];
-                dstP[1] = element;
-                __STORE_SPC(nObj, element, spc);
-                element = srcP[2];
-                dstP[2] = element;
-                __STORE_SPC(nObj, element, spc);
-                element = srcP[3];
-                dstP[3] = element;
-                __STORE_SPC(nObj, element, spc);
-                srcP += 4;
-                dstP += 4;
-                nIndex -= 4;
-            }
+		element = srcP[0];
+		dstP[0] = element;
+		__STORE_SPC(nObj, element, spc);
+		element = srcP[1];
+		dstP[1] = element;
+		__STORE_SPC(nObj, element, spc);
+		element = srcP[2];
+		dstP[2] = element;
+		__STORE_SPC(nObj, element, spc);
+		element = srcP[3];
+		dstP[3] = element;
+		__STORE_SPC(nObj, element, spc);
+		srcP += 4;
+		dstP += 4;
+		nIndex -= 4;
+	    }
 #endif
-            while (nIndex--) {
-                OBJ element;
+	    while (nIndex--) {
+		OBJ element;
 
-                element = *srcP++;
-                *dstP++ = element;
-                __STORE_SPC(nObj, element, spc);
-            }
-            *dstP = something;
-            __STORE_SPC(nObj, something, spc);
-            RETURN ( nObj );
-        }
+		element = *srcP++;
+		*dstP++ = element;
+		__STORE_SPC(nObj, element, spc);
+	    }
+	    *dstP = something;
+	    __STORE_SPC(nObj, something, spc);
+	    RETURN ( nObj );
+	}
     }
 %}.
     ^ super copyWith:something
@@ -534,11 +527,11 @@
 
     stop := self size.
     1 to:stop do:[:idx |
-        |each|
-        each := self at:idx.
-        each notNil ifTrue:[
-            aCollection add:each.
-        ].
+	|each|
+	each := self at:idx.
+	each notNil ifTrue:[
+	    aCollection add:each.
+	].
     ].
     ^ aCollection
 
@@ -556,7 +549,7 @@
 
     stop := self size.
     1 to:stop do:[:idx |
-        aCollection add:(self at:idx)
+	aCollection add:(self at:idx)
     ].
     ^ aCollection
 !
@@ -746,9 +739,9 @@
 			__interpret(aBlock, 1, nil, IBLOCK_ARG, nil, nil, __InstPtr(self)->i_instvars[index]);
 #endif
 		    } else {
-			(*val.ilc_func)(aBlock, 
-					    @symbol(value:), 
-					    nil, &val, 
+			(*val.ilc_func)(aBlock,
+					    @symbol(value:),
+					    nil, &val,
 					    __InstPtr(self)->i_instvars[index]);
 		    }
 		}
@@ -765,15 +758,15 @@
 	 */
 	for (; index < nIndex; index++) {
 	    if (InterruptPending != nil) __interruptL(@line);
-
-	    (*val.ilc_func)(aBlock, 
-				@symbol(value:), 
-				nil, &val, 
+	    // console_printf("el%d -> %"_lx_"\n", index, (long)(__InstPtr(self)->i_instvars[index]));
+	    (*val.ilc_func)(aBlock,
+				@symbol(value:),
+				nil, &val,
 				__InstPtr(self)->i_instvars[index]);
 	}
 	RETURN ( self );
     }
-    /* 
+    /*
      * I am something, not handled here
      */
 %}.
@@ -1024,9 +1017,9 @@
 			    __interpret(aBlock, 1, nil, IBLOCK_ARG, nil, nil, el);
 #endif
 			} else {
-			    (*val.ilc_func)(aBlock, 
-					    @symbol(value:), 
-					    nil, &val, 
+			    (*val.ilc_func)(aBlock,
+					    @symbol(value:),
+					    nil, &val,
 					    el);
 			}
 		    }
@@ -1046,9 +1039,9 @@
 	    while (n > 0) {
 		if (InterruptPending != nil) __interruptL(@line);
 
-		(*val.ilc_func)(aBlock, 
-				@symbol(value:), 
-				nil, &val, 
+		(*val.ilc_func)(aBlock,
+				@symbol(value:),
+				nil, &val,
 				__InstPtr(self)->i_instvars[index]);
 		n--;
 		index++;
@@ -1113,9 +1106,9 @@
 			    __interpret(aBlock, 1, nil, IBLOCK_ARG, nil, nil, __InstPtr(self)->i_instvars[index]);
 #endif
 			} else {
-			    (*val.ilc_func)(aBlock, 
-					    @symbol(value:), 
-					    nil, &val, 
+			    (*val.ilc_func)(aBlock,
+					    @symbol(value:),
+					    nil, &val,
 					    __InstPtr(self)->i_instvars[index]);
 			}
 		    }
@@ -1133,9 +1126,9 @@
 	    for (index=indexHigh; index >= indexLow; index--) {
 		if (InterruptPending != nil) __interruptL(@line);
 
-		(*val.ilc_func)(aBlock, 
-				@symbol(value:), 
-				nil, &val, 
+		(*val.ilc_func)(aBlock,
+				@symbol(value:),
+				nil, &val,
 				__InstPtr(self)->i_instvars[index]);
 	    }
 	    RETURN ( self );
@@ -1202,7 +1195,7 @@
 			    RETURN (self);
 
 		interruptX:
-			    __interruptL(@line); 
+			    __interruptL(@line);
 			    el = __InstPtr(self)->i_instvars[index];
 			    goto continueX;
 			}
@@ -1251,9 +1244,9 @@
 			    __interpret(aBlock, 2, nil, IBLOCK_ARG, nil, nil, __mkSmallInteger(index), el);
 #endif
 			} else {
-			    (*val2.ilc_func)(aBlock, 
-						@symbol(value:value:), 
-						nil, &val2, 
+			    (*val2.ilc_func)(aBlock,
+						@symbol(value:value:),
+						nil, &val2,
 						__mkSmallInteger(index),
 						el);
 			}
@@ -1276,9 +1269,9 @@
 
 		el = __InstPtr(self)->i_instvars[index];
 		index++;
-		(*val2.ilc_func)(aBlock, 
-				    @symbol(value:value:), 
-				    nil, &val2, 
+		(*val2.ilc_func)(aBlock,
+				    @symbol(value:value:),
+				    nil, &val2,
 				    __mkSmallInteger(index),
 				    el);
 	    }
@@ -1289,35 +1282,35 @@
     ^ super keysAndValuesDo:aBlock
 !
 
-modifyingTraverse:aBlock 
-    "Evaluate aBlock for every element that is not an Array, 
+modifyingTraverse:aBlock
+    "Evaluate aBlock for every element that is not an Array,
      and recursively traverse Arrays.
 
      aBlock may return the original element or a new element.
      If a new element is returned, the element is changed to the new element."
-    
-    self 
-        keysAndValuesDo:[:eachIndex :eachElement | 
-            eachElement isArray ifTrue:[
-                eachElement modifyingTraverse:aBlock
-            ] ifFalse:[
-                |newElement|
 
-                newElement := aBlock value:eachElement.
-                newElement ~~ eachElement ifTrue:[
-                    self at:eachIndex put:newElement.
-                ].
-            ]
-        ].
+    self
+	keysAndValuesDo:[:eachIndex :eachElement |
+	    eachElement isArray ifTrue:[
+		eachElement modifyingTraverse:aBlock
+	    ] ifFalse:[
+		|newElement|
+
+		newElement := aBlock value:eachElement.
+		newElement ~~ eachElement ifTrue:[
+		    self at:eachIndex put:newElement.
+		].
+	    ]
+	].
 
     "
      example: replace all elements which are 10 with: 'changed'
 
-     #(1 2 (3 (4 5 (6 7) 8) 9 10) 11 (12 (13)) 14) copy 
-         modifyingTraverse:[:el |
-            el = 10 ifTrue:['changed'] ifFalse:[el]
-         ];
-         inspect
+     #(1 2 (3 (4 5 (6 7) 8) 9 10) 11 (12 (13)) 14) copy
+	 modifyingTraverse:[:el |
+	    el = 10 ifTrue:['changed'] ifFalse:[el]
+	 ];
+	 inspect
     "
 !
 
@@ -1374,9 +1367,9 @@
 			    __interpret(aBlock, 1, nil, IBLOCK_ARG, nil, nil, __InstPtr(self)->i_instvars[index]);
 #endif
 			} else {
-			    (*val.ilc_func)(aBlock, 
-					    @symbol(value:), 
-					    nil, &val, 
+			    (*val.ilc_func)(aBlock,
+					    @symbol(value:),
+					    nil, &val,
 					    __InstPtr(self)->i_instvars[index]);
 			}
 		    }
@@ -1394,9 +1387,9 @@
 	    for (index=nIndex-1; index >= endIndex; index--) {
 		if (InterruptPending != nil) __interruptL(@line);
 
-		(*val.ilc_func)(aBlock, 
-				@symbol(value:), 
-				nil, &val, 
+		(*val.ilc_func)(aBlock,
+				@symbol(value:),
+				nil, &val,
 				__InstPtr(self)->i_instvars[index]);
 	    }
 	    RETURN ( self );
@@ -1407,7 +1400,7 @@
 !
 
 traverse:aBlock
-    "Evaluate aBlock for every element that is not an Array, 
+    "Evaluate aBlock for every element that is not an Array,
      and recursively traverse Arrays.
      Implemented here to support better search for selectors in
      literal arrays - might be a good idea to move it up in the collection
@@ -1426,12 +1419,12 @@
 
      s := WriteStream on:Array new.
      #(1 2 (3 (4 5 (6 7) 8) 9 10) 11 (12 (13)) 14) traverse:[:el | s nextPut:el].
-     s contents 
+     s contents
     "
     "
      example: deep search
 
-     #(1 2 (3 (4 5 (6 7) 8) 9 10) 11 (12 (13)) 14) traverse:[:el | 
+     #(1 2 (3 (4 5 (6 7) 8) 9 10) 11 (12 (13)) 14) traverse:[:el |
 	el == 10 ifTrue:[Transcript showCR:'found']
      ]
     "
@@ -1470,7 +1463,7 @@
 # ifdef FAST_MEMSET
 		if ((INT)anObject == 0) {
 		    memset(dst, 0, __OBJS2BYTES__(endIndex-index+1));
-		} else 
+		} else
 # endif
 		{
 # ifdef __UNROLL_LOOPS__
@@ -1517,7 +1510,7 @@
     REGISTER OBJ t;
     REGISTER int count;
     OBJ myClass;
-    
+
     if (
 	(__ClassInstPtr((myClass = __qClass(self)))->c_ninstvars == __mkSmallInteger(0))
      && __isNonNilObject(aCollection)
@@ -1540,12 +1533,12 @@
 			src = &(__InstPtr(aCollection)->i_instvars[repStartIndex]);
 			dst = &(__InstPtr(self)->i_instvars[startIndex]);
 			if (aCollection == self) {
-			    /* 
+			    /*
 			     * no need to check stores if copying
 			     * from myself
 			     */
 
-			    /* 
+			    /*
 			     * take care of overlapping copy
 			     * do not depend on memset being smart enough
 			     * (some are not ;-)
@@ -1577,7 +1570,7 @@
 			    {
 				OBJ t1;
 
-				/* 
+				/*
 				 * the loop below fetches one longWord behind
 				 * this should not be a problem
 				 */
@@ -1666,7 +1659,7 @@
 
 displayStringName
     self class == Array ifTrue:[
-        ^ '#'
+	^ '#'
     ].
     ^ super displayStringName.
 !
@@ -1675,55 +1668,55 @@
     "append a printed representation of the receiver to aStream"
 
     self isLiteral ifTrue:[
-        |limit firstOne s|
+	|limit firstOne s|
 
-        thisContext isRecursive ifTrue:[
-            'Array [error]: printOn: of self referencing collection.' errorPrintCR.
-            aStream nextPutAll:'#("recursive")'.
-            ^ self
-        ].
+	thisContext isRecursive ifTrue:[
+	    'Array [error]: printOn: of self referencing collection.' errorPrintCR.
+	    aStream nextPutAll:'#("recursive")'.
+	    ^ self
+	].
 
-        aStream nextPutAll:'#('.
-        firstOne := true.
+	aStream nextPutAll:'#('.
+	firstOne := true.
 
-        "
-         if aStream is not positionable, create an temporary positionable stream
-         (needed for limit calculation)
-        "
-        aStream isPositionable ifTrue:[
-            s := aStream.
-        ] ifFalse:[
-            s := WriteStream on:(String uninitializedNew:50).
-        ].
-        limit := s position1Based + self maxPrint.
+	"
+	 if aStream is not positionable, create an temporary positionable stream
+	 (needed for limit calculation)
+	"
+	aStream isPositionable ifTrue:[
+	    s := aStream.
+	] ifFalse:[
+	    s := WriteStream on:(String uninitializedNew:50).
+	].
+	limit := s position1Based + self maxPrint.
 
-        self printElementsDo:[:element |
-            firstOne ifFalse:[
-                s space
-            ] ifTrue:[
-                firstOne := false
-            ].
-            (s position1Based >= limit) ifTrue:[
-                s ~~ aStream ifTrue:[
-                    aStream nextPutAll:(s contents).
-                ].
-                aStream nextPutAll:'...etc...)'.
-                ^ self
-            ] ifFalse:[
-                element printOn:s.
-            ].
-        ].
-        s ~~ aStream ifTrue:[
-            aStream nextPutAll:(s contents).
-        ].
-        aStream nextPut:$)
+	self printElementsDo:[:element |
+	    firstOne ifFalse:[
+		s space
+	    ] ifTrue:[
+		firstOne := false
+	    ].
+	    (s position1Based >= limit) ifTrue:[
+		s ~~ aStream ifTrue:[
+		    aStream nextPutAll:(s contents).
+		].
+		aStream nextPutAll:'...etc...)'.
+		^ self
+	    ] ifFalse:[
+		element printOn:s.
+	    ].
+	].
+	s ~~ aStream ifTrue:[
+	    aStream nextPutAll:(s contents).
+	].
+	aStream nextPut:$)
     ] ifFalse:[
-        super printOn:aStream
+	super printOn:aStream
     ]
 
     "
-     #(1 2 $a 'hello' sym kewordSymbol:with: #'funny symbol') printString 
-     #(1 2 $a [1 2 3] true false nil #true #false #nil) printString 
+     #(1 2 $a 'hello' sym kewordSymbol:with: #'funny symbol') printString
+     #(1 2 $a [1 2 3] true false nil #true #false #nil) printString
     "
 
     "Created: 20.11.1995 / 11:16:58 / cg"
@@ -1733,18 +1726,18 @@
     "Store as element of an array. Omit the leading '#'"
 
     self isLiteral ifTrue:[
-        aStream nextPut:$(.
-        self 
-            do:[:element | element storeArrayElementOn:aStream]
-            separatedBy:[aStream space].
-        aStream nextPut:$).
-        ^ self.
+	aStream nextPut:$(.
+	self
+	    do:[:element | element storeArrayElementOn:aStream]
+	    separatedBy:[aStream space].
+	aStream nextPut:$).
+	^ self.
     ].
     super storeArrayElementOn:aStream
 
     "
-     #(1 2 3 4 5) storeOn:Transcript   
-     #(1 2 3 4 5) storeArrayElementOn:Transcript   
+     #(1 2 3 4 5) storeOn:Transcript
+     #(1 2 3 4 5) storeArrayElementOn:Transcript
     "
 !
 
@@ -1754,17 +1747,17 @@
      Redefined to output a somewhat more user friendly string."
 
     self isLiteral ifTrue:[
-        aStream nextPutAll:'#('.
-        self do:[:element | element storeArrayElementOn:aStream]
-             separatedBy:[aStream space].
-        aStream nextPut:$)
+	aStream nextPutAll:'#('.
+	self do:[:element | element storeArrayElementOn:aStream]
+	     separatedBy:[aStream space].
+	aStream nextPut:$)
     ] ifFalse:[
-        super storeOn:aStream
+	super storeOn:aStream
     ]
 
     "
-     #(1 2 $a 'hello' sym kewordSymbol:with: #'funny symbol') storeString 
-     #(1 2 $a [1 2 3] true false nil #true #false #nil) storeString 
+     #(1 2 $a 'hello' sym kewordSymbol:with: #'funny symbol') storeString
+     #(1 2 $a [1 2 3] true false nil #true #false #nil) storeString
     "
 
     "Created: 20.11.1995 / 11:16:58 / cg"
@@ -1786,7 +1779,7 @@
     "return true if the receiver or recursively any array element in the
      receiver referes to aLiteral (i.e. a deep search)"
 
-    self do: [ :el | 
+    self do: [ :el |
 	el == aLiteral ifTrue:[^true].
 	el class == Array ifTrue:[
 	    (el refersToLiteral: aLiteral) ifTrue: [^true]
@@ -1795,9 +1788,9 @@
     ^ false
 
     "
-     #(1 2 3) refersToLiteral:#foo  
-     #(1 2 3 foo bar baz) refersToLiteral:#foo 
-     #(1 2 3 (((bar foo))) bar baz) refersToLiteral:#foo  
+     #(1 2 3) refersToLiteral:#foo
+     #(1 2 3 foo bar baz) refersToLiteral:#foo
+     #(1 2 3 (((bar foo))) bar baz) refersToLiteral:#foo
     "
 
     "Modified: / 18.8.2000 / 21:18:14 / cg"
@@ -1807,18 +1800,18 @@
     "return true if the receiver or recursively any array element in the
      receiver is symbolic and matches aMatchPattern (i.e. a deep search)"
 
-    self do:[ :el | 
-        (el isSymbol and:[ aMatchPattern match: el]) ifTrue:[^true].
-        el class == Array ifTrue:[
-            (el refersToLiteralMatching: aMatchPattern) ifTrue: [^true]
-        ]
+    self do:[ :el |
+	(el isSymbol and:[ aMatchPattern match: el]) ifTrue:[^true].
+	el class == Array ifTrue:[
+	    (el refersToLiteralMatching: aMatchPattern) ifTrue: [^true]
+	]
     ].
     ^ false
 
     "
-     #(1 2 3) refersToLiteralMatching:#foo  
-     #(1 2 3 foo bar baz) refersToLiteralMatching:#foo 
-     #(1 2 3 (((bar foo))) bar baz) refersToLiteralMatching:#foo  
+     #(1 2 3) refersToLiteralMatching:#foo
+     #(1 2 3 foo bar baz) refersToLiteralMatching:#foo
+     #(1 2 3 (((bar foo))) bar baz) refersToLiteralMatching:#foo
     "
 
     "Modified: / 18-08-2000 / 21:18:14 / cg"
@@ -1841,8 +1834,8 @@
 
 !Array methodsFor:'searching'!
 
-identityIndexOf:anElement or:alternative 
-    "search the array for anElement or alternative; 
+identityIndexOf:anElement or:alternative
+    "search the array for anElement or alternative;
      return the index of anElement if found, or the index of anAlternative,
      if not found. If anAlternative is also not found, return 0.
      This is a special interface for high-speed searching in an array
@@ -1863,7 +1856,7 @@
     nInsts = __intVal(__ClassInstPtr(__qClass(self))->c_ninstvars);
     index += nInsts;
     nIndex = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
-    el1 = anElement; el2 = alternative; 
+    el1 = anElement; el2 = alternative;
     op = & (__InstPtr(self)->i_instvars[index]);
     while (index++ < nIndex) {
 	if ((o = *op++) == el1) {
@@ -1883,11 +1876,11 @@
      #(1 2 3 4 5 6 7 8 9) identityIndexOf:3 or:5
      #(1 2 0 4 5 6 7 8 9) identityIndexOf:3 or:5
      #(1 2 0 4 5 6 7 3 9) identityIndexOf:3 or:5
-     #(1 2 3 4 5 nil 7 3 9) identityIndexOf:3 or:nil 
-     #(1 2 nil 4 5 6 7 3 9) identityIndexOf:3 or:nil  
-     #(1 2 nil 4 5 6 7 8 9) identityIndexOf:3 or:nil 
-     #() identityIndexOf:3 or:nil        
-     #(1 2) identityIndexOf:3 or:nil 
+     #(1 2 3 4 5 nil 7 3 9) identityIndexOf:3 or:nil
+     #(1 2 nil 4 5 6 7 3 9) identityIndexOf:3 or:nil
+     #(1 2 nil 4 5 6 7 8 9) identityIndexOf:3 or:nil
+     #() identityIndexOf:3 or:nil
+     #(1 2) identityIndexOf:3 or:nil
     "
 !
 
@@ -1919,7 +1912,7 @@
 		p = memsrch4(op, (INT)el, (nIndex - index));
 		if (p) {
 		    index += (p - op + 1);
-		    RETURN ( __mkSmallInteger(index) ); 
+		    RETURN ( __mkSmallInteger(index) );
 		}
 	    }
 #else
@@ -1946,7 +1939,7 @@
 		 */
 
 		unsigned int i8;
-                
+
 		while ((i8 = index + 8) < nIndex) {
 		    if (op[0] == el) goto found1;
 		    if (op[1] == el) goto found2;
@@ -1997,7 +1990,7 @@
 !
 
 identityIndexOf:anElement startingAt:start endingAt:stop
-    "search the array for anElement in the range start..stop; 
+    "search the array for anElement in the range start..stop;
      return the index if found, 0 otherwise.
      - reimplemented for speed when searching in OrderedCollections"
 
@@ -2030,7 +2023,7 @@
 		p = memsrch4(op, (INT)el, (lastIndex - index));
 		if (p) {
 		    index += (p - op + 1);
-		    RETURN ( __mkSmallInteger(index) ); 
+		    RETURN ( __mkSmallInteger(index) );
 		}
 	    }
 #else
@@ -2104,127 +2097,127 @@
 
     myClass = __qClass(self);
     if ( __isSmallInteger(start) ) {
-        index = __intVal(start) - 1;
-        if (index >= 0) {
-            nInsts = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
-            index += nInsts;
-            nIndex = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
+	index = __intVal(start) - 1;
+	if (index >= 0) {
+	    nInsts = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
+	    index += nInsts;
+	    nIndex = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
 
-            e = anElement;
-            if (e != nil) {
-                /*
-                 * special kludge to search for a string;
-                 * this is so common, that its worth a special case
-                 */
+	    e = anElement;
+	    if (e != nil) {
+		/*
+		 * special kludge to search for a string;
+		 * this is so common, that its worth a special case
+		 */
 #define SPECIAL_STRING_OPT
 #ifdef SPECIAL_STRING_OPT
-                if (__isStringLike(e)) {
-                    while (index < nIndex) {
-                        element = __InstPtr(self)->i_instvars[index++];
-                        if (__isNonNilObject(element)) {
-                            if (element == e) {
-                                RETURN ( __mkSmallInteger(index - nInsts) );
-                            }
-                            if (__qClass(element) == @global(String)) {
-                                if (strcmp(__stringVal(e), __stringVal(element)) == 0) {
-                                    RETURN ( __mkSmallInteger(index - nInsts) );
-                                }
-                            } else {
-                                if ((*eq.ilc_func)(e, @symbol(=), nil,&eq, element) == true) {
-                                    RETURN ( __mkSmallInteger(index - nInsts) );
-                                }
-                                /*
-                                 * send of #= could have lead to a GC - refetch e
-                                 */
-                                e = anElement;
-                            }
-                        }
-                    }
-                    RETURN (__mkSmallInteger(0));
-                }
+		if (__isStringLike(e)) {
+		    while (index < nIndex) {
+			element = __InstPtr(self)->i_instvars[index++];
+			if (__isNonNilObject(element)) {
+			    if (element == e) {
+				RETURN ( __mkSmallInteger(index - nInsts) );
+			    }
+			    if (__qClass(element) == @global(String)) {
+				if (strcmp(__stringVal(e), __stringVal(element)) == 0) {
+				    RETURN ( __mkSmallInteger(index - nInsts) );
+				}
+			    } else {
+				if ((*eq.ilc_func)(e, @symbol(=), nil,&eq, element) == true) {
+				    RETURN ( __mkSmallInteger(index - nInsts) );
+				}
+				/*
+				 * send of #= could have lead to a GC - refetch e
+				 */
+				e = anElement;
+			    }
+			}
+		    }
+		    RETURN (__mkSmallInteger(0));
+		}
 #endif
 #ifdef MAKES_IT_SLOWER_BUT_WHY
-                if (__isSmallInteger(e)) {
-                    /* search for a small number */
-                    while (index < nIndex) {
-                        element = __InstPtr(self)->i_instvars[index++];
-                        if (element == e) {
-                            RETURN ( __mkSmallInteger(index - nInsts) );
-                        }
-                        if (!__isSmallInteger(element)) {
-                            if (element != nil) {
-                                if ((*eq.ilc_func)(e,
-                                                   @symbol(=), 
-                                                   nil,&eq,
-                                                   element) == true) {
-                                    RETURN ( __mkSmallInteger(index - nInsts) );
-                                }
-                                /*
-                                 * send of #= could have lead to a GC - refetch e
-                                 */
-                                e = anElement;
-                            }
-                        }
-                    }
-                    RETURN (__mkSmallInteger(0));
-                }
+		if (__isSmallInteger(e)) {
+		    /* search for a small number */
+		    while (index < nIndex) {
+			element = __InstPtr(self)->i_instvars[index++];
+			if (element == e) {
+			    RETURN ( __mkSmallInteger(index - nInsts) );
+			}
+			if (!__isSmallInteger(element)) {
+			    if (element != nil) {
+				if ((*eq.ilc_func)(e,
+						   @symbol(=),
+						   nil,&eq,
+						   element) == true) {
+				    RETURN ( __mkSmallInteger(index - nInsts) );
+				}
+				/*
+				 * send of #= could have lead to a GC - refetch e
+				 */
+				e = anElement;
+			    }
+			}
+		    }
+		    RETURN (__mkSmallInteger(0));
+		}
 #endif /* MAKES_IT_SLOWER_BUT_WHY */
 
-                while (index < nIndex) {
-                    element = __InstPtr(self)->i_instvars[index++];
-                    if (element != nil) {
-                        if ((element == e) 
-                         || ((*eq.ilc_func)(e,
-                                            @symbol(=), 
-                                            nil,&eq,
-                                            element) == true)) {
-                            RETURN ( __mkSmallInteger(index - nInsts) );
-                        }
-                        /*
-                         * send of #= could have lead to a GC - refetch e
-                         */
-                        e = anElement;
-                    }
-                }
-            } else {
-                OBJ slf = self;
+		while (index < nIndex) {
+		    element = __InstPtr(self)->i_instvars[index++];
+		    if (element != nil) {
+			if ((element == e)
+			 || ((*eq.ilc_func)(e,
+					    @symbol(=),
+					    nil,&eq,
+					    element) == true)) {
+			    RETURN ( __mkSmallInteger(index - nInsts) );
+			}
+			/*
+			 * send of #= could have lead to a GC - refetch e
+			 */
+			e = anElement;
+		    }
+		}
+	    } else {
+		OBJ slf = self;
 
-                /* 
-                 * search for nil - do an identity-search
-                 */
+		/*
+		 * search for nil - do an identity-search
+		 */
 #ifdef __UNROLL_LOOPS__
-                {
-                    unsigned int i8;
+		{
+		    unsigned int i8;
 
-                    while ((i8 = index + 8) < nIndex) {
-                        if (__InstPtr(slf)->i_instvars[index] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 1) ); }
-                        if (__InstPtr(slf)->i_instvars[index+1] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 2) ); }
-                        if (__InstPtr(slf)->i_instvars[index+2] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 3) ); }
-                        if (__InstPtr(slf)->i_instvars[index+3] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 4) ); }
-                        if (__InstPtr(slf)->i_instvars[index+4] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 5) ); }
-                        if (__InstPtr(slf)->i_instvars[index+5] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 6) ); }
-                        if (__InstPtr(slf)->i_instvars[index+6] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 7) ); }
-                        if (__InstPtr(slf)->i_instvars[index+7] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 8) ); }
-                        index = i8;
-                    }
-                }
+		    while ((i8 = index + 8) < nIndex) {
+			if (__InstPtr(slf)->i_instvars[index] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 1) ); }
+			if (__InstPtr(slf)->i_instvars[index+1] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 2) ); }
+			if (__InstPtr(slf)->i_instvars[index+2] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 3) ); }
+			if (__InstPtr(slf)->i_instvars[index+3] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 4) ); }
+			if (__InstPtr(slf)->i_instvars[index+4] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 5) ); }
+			if (__InstPtr(slf)->i_instvars[index+5] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 6) ); }
+			if (__InstPtr(slf)->i_instvars[index+6] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 7) ); }
+			if (__InstPtr(slf)->i_instvars[index+7] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 8) ); }
+			index = i8;
+		    }
+		}
 #endif
 
-                while (index < nIndex) {
-                    if (__InstPtr(slf)->i_instvars[index++] == nil) {
-                        RETURN ( __mkSmallInteger(index - nInsts) );
-                    }
-                }
-            }
-        }
-        RETURN (__mkSmallInteger(0));
+		while (index < nIndex) {
+		    if (__InstPtr(slf)->i_instvars[index++] == nil) {
+			RETURN ( __mkSmallInteger(index - nInsts) );
+		    }
+		}
+	    }
+	}
+	RETURN (__mkSmallInteger(0));
     }
 %}.
     ^ super indexOf:anElement startingAt:start
 !
 
 indexOf:anElement startingAt:start endingAt:stop
-    "search the array for anElement in the range start..stop; 
+    "search the array for anElement in the range start..stop;
      Return the index if found, 0 otherwise.
      - reimplemented for speed when searching in OrderedCollections"
 
@@ -2238,117 +2231,117 @@
 
     myClass = __qClass(self);
     if ( __bothSmallInteger(start, stop) ) {
-        index = __intVal(start) - 1;
-        if (index >= 0) {
-            nInsts = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
-            index += nInsts;
-            lastIndex = nInsts + __intVal(stop);
-            nIndex = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
-            if (nIndex < lastIndex) {
-                lastIndex = nIndex;
-            }
+	index = __intVal(start) - 1;
+	if (index >= 0) {
+	    nInsts = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
+	    index += nInsts;
+	    lastIndex = nInsts + __intVal(stop);
+	    nIndex = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
+	    if (nIndex < lastIndex) {
+		lastIndex = nIndex;
+	    }
 
-            e = anElement;
+	    e = anElement;
 
-            if (e != nil) {
-                /*
-                 * special kludge to search for a string;
-                 * this is so common, that its worth a special case
-                 */
+	    if (e != nil) {
+		/*
+		 * special kludge to search for a string;
+		 * this is so common, that its worth a special case
+		 */
 #define SPECIAL_STRING_OPT
 #ifdef SPECIAL_STRING_OPT
-                if (__isStringLike(e)) {
-                    while (index < lastIndex) {
-                        element = __InstPtr(self)->i_instvars[index++];
-                        if (__isNonNilObject(element)) {
-                            if (element == e) {
-                                RETURN ( __mkSmallInteger(index - nInsts) );
-                            }
-                            if (__qClass(element) == @global(String)) {
-                                if (strcmp(__stringVal(e), __stringVal(element)) == 0) {
-                                    RETURN ( __mkSmallInteger(index - nInsts) );
-                                }
-                            } else {
-                                if ((*eq.ilc_func)(e, @symbol(=), nil,&eq, element) == true) {
-                                    RETURN ( __mkSmallInteger(index - nInsts) );
-                                }
-                                /*
-                                 * send of #= could have lead to a GC - refetch e
-                                 */
-                                e = anElement;
-                            }
-                        }
-                    }
-                    RETURN (__mkSmallInteger(0));
-                }
+		if (__isStringLike(e)) {
+		    while (index < lastIndex) {
+			element = __InstPtr(self)->i_instvars[index++];
+			if (__isNonNilObject(element)) {
+			    if (element == e) {
+				RETURN ( __mkSmallInteger(index - nInsts) );
+			    }
+			    if (__qClass(element) == @global(String)) {
+				if (strcmp(__stringVal(e), __stringVal(element)) == 0) {
+				    RETURN ( __mkSmallInteger(index - nInsts) );
+				}
+			    } else {
+				if ((*eq.ilc_func)(e, @symbol(=), nil,&eq, element) == true) {
+				    RETURN ( __mkSmallInteger(index - nInsts) );
+				}
+				/*
+				 * send of #= could have lead to a GC - refetch e
+				 */
+				e = anElement;
+			    }
+			}
+		    }
+		    RETURN (__mkSmallInteger(0));
+		}
 #endif
-                if (__isSmallInteger(e)) {
-                    /* search for a small number */
-                    while (index < lastIndex) {
-                        element = __InstPtr(self)->i_instvars[index++];
-                        if (element == e) {
-                            RETURN ( __mkSmallInteger(index - nInsts) );
-                        }
-                        if (!__isSmallInteger(element)) {
-                            if ((*eq.ilc_func)(e,
-                                                @symbol(=), 
-                                                nil,&eq,
-                                                element) == true) {
-                                RETURN ( __mkSmallInteger(index - nInsts) );
-                            }
-                            /*
-                             * send of #= could have lead to a GC - refetch e
-                             */
-                            e = anElement;
-                        }
-                    }
-                    RETURN (__mkSmallInteger(0));
-                }
+		if (__isSmallInteger(e)) {
+		    /* search for a small number */
+		    while (index < lastIndex) {
+			element = __InstPtr(self)->i_instvars[index++];
+			if (element == e) {
+			    RETURN ( __mkSmallInteger(index - nInsts) );
+			}
+			if (!__isSmallInteger(element)) {
+			    if ((*eq.ilc_func)(e,
+						@symbol(=),
+						nil,&eq,
+						element) == true) {
+				RETURN ( __mkSmallInteger(index - nInsts) );
+			    }
+			    /*
+			     * send of #= could have lead to a GC - refetch e
+			     */
+			    e = anElement;
+			}
+		    }
+		    RETURN (__mkSmallInteger(0));
+		}
 
-                while (index < lastIndex) {
-                    element = __InstPtr(self)->i_instvars[index++];
-                    if (element != nil) {
-                        e = anElement;
-                        if ((element == e) 
-                         || ((*eq.ilc_func)(e,
-                                            @symbol(=), 
-                                            nil,&eq,
-                                            element) == true)) {
-                            RETURN ( __mkSmallInteger(index - nInsts) );
-                        }
-                    }
-                }
-            } else {
-                OBJ slf = self;
+		while (index < lastIndex) {
+		    element = __InstPtr(self)->i_instvars[index++];
+		    if (element != nil) {
+			e = anElement;
+			if ((element == e)
+			 || ((*eq.ilc_func)(e,
+					    @symbol(=),
+					    nil,&eq,
+					    element) == true)) {
+			    RETURN ( __mkSmallInteger(index - nInsts) );
+			}
+		    }
+		}
+	    } else {
+		OBJ slf = self;
 
-                /* 
-                 * search for nil - do an identity-search
-                 */
+		/*
+		 * search for nil - do an identity-search
+		 */
 #ifdef __UNROLL_LOOPS__
-                {
-                    unsigned int i8;
+		{
+		    unsigned int i8;
 
-                    while ((i8 = index + 8) < lastIndex) {
-                        if (__InstPtr(slf)->i_instvars[index] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 1) ); }
-                        if (__InstPtr(slf)->i_instvars[index+1] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 2) ); }
-                        if (__InstPtr(slf)->i_instvars[index+2] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 3) ); }
-                        if (__InstPtr(slf)->i_instvars[index+3] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 4) ); }
-                        if (__InstPtr(slf)->i_instvars[index+4] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 5) ); }
-                        if (__InstPtr(slf)->i_instvars[index+5] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 6) ); }
-                        if (__InstPtr(slf)->i_instvars[index+6] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 7) ); }
-                        if (__InstPtr(slf)->i_instvars[index+7] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 8) ); }
-                        index = i8;
-                    }
-                }
+		    while ((i8 = index + 8) < lastIndex) {
+			if (__InstPtr(slf)->i_instvars[index] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 1) ); }
+			if (__InstPtr(slf)->i_instvars[index+1] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 2) ); }
+			if (__InstPtr(slf)->i_instvars[index+2] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 3) ); }
+			if (__InstPtr(slf)->i_instvars[index+3] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 4) ); }
+			if (__InstPtr(slf)->i_instvars[index+4] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 5) ); }
+			if (__InstPtr(slf)->i_instvars[index+5] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 6) ); }
+			if (__InstPtr(slf)->i_instvars[index+6] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 7) ); }
+			if (__InstPtr(slf)->i_instvars[index+7] == nil) { RETURN ( __mkSmallInteger(index - nInsts + 8) ); }
+			index = i8;
+		    }
+		}
 #endif
-                while (index < lastIndex) {
-                    if (__InstPtr(slf)->i_instvars[index++] == nil) {
-                        RETURN ( __mkSmallInteger(index - nInsts) );
-                    }
-                }
-            }
-        }
-        RETURN (__mkSmallInteger(0));
+		while (index < lastIndex) {
+		    if (__InstPtr(slf)->i_instvars[index++] == nil) {
+			RETURN ( __mkSmallInteger(index - nInsts) );
+		    }
+		}
+	    }
+	}
+	RETURN (__mkSmallInteger(0));
     }
 %}.
     ^ super indexOf:anElement startingAt:start endingAt:stop
@@ -2363,7 +2356,7 @@
     |element|
 
 %{  /* NOCONTEXT */
-    /* 
+    /*
      * first, do a quick check using ==
      * this does not need a context or message send.
      * In many cases this will already find a match.
@@ -2459,11 +2452,11 @@
     unsigned int nIndex;
     static struct inlineCache eq = _ILC1;
 
-    /* 
+    /*
      * then do a slow(er) check using =
      */
 
-    /* 
+    /*
      * sorry: cannot access the stuff from above ...
      */
     nIndex = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
@@ -2525,7 +2518,7 @@
      (i.e. can be used in constant arrays)"
 
     "/ no, simply returning true here is a mistake:
-    "/ it could be a subclass of Array 
+    "/ it could be a subclass of Array
     "/ (of which the compiler does not know at all ...)
 
     self class == Array ifFalse:[^ false].
@@ -2566,16 +2559,9 @@
 !Array class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Array.st,v 1.152 2012/10/10 16:30:53 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Array.st,v 1.155 2013-01-16 10:30:10 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Array.st,v 1.152 2012/10/10 16:30:53 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Array.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Array.st,v 1.155 2013-01-16 10:30:10 cg Exp $'
 ! !
-
-
-
--- a/ArrayedCollection.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ArrayedCollection.st	Sat Jan 19 01:30:00 2013 +0000
@@ -355,7 +355,7 @@
 !ArrayedCollection methodsFor:'copying'!
 
 copyEmptyAndGrow:size
-    "return a new instance of the receivers species with size
+    "return a new instance of the receiver's species with size
      nilled elements and any named instance variables copied."
 
     "Performance optimization for classes like Array, String, ...,
@@ -502,13 +502,6 @@
 !ArrayedCollection class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ArrayedCollection.st,v 1.63 2012/04/21 15:45:38 stefan Exp $'
-!
-
-version_SVN
-    ^ '$Id: ArrayedCollection.st 10807 2012-05-05 21:58:24Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ArrayedCollection.st,v 1.64 2012-12-21 11:58:50 cg Exp $'
 ! !
 
-
-
-
--- a/Association.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Association.st	Sat Jan 19 01:30:00 2013 +0000
@@ -184,16 +184,9 @@
 !Association class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Association.st,v 1.24 2012/04/24 12:00:50 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Association.st,v 1.24 2012-04-24 12:00:50 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Association.st,v 1.24 2012/04/24 12:00:50 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: Association.st 10807 2012-05-05 21:58:24Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Association.st,v 1.24 2012-04-24 12:00:50 stefan Exp $'
 ! !
-
-
-
--- a/AutoDeletedFilename.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/AutoDeletedFilename.st	Sat Jan 19 01:30:00 2013 +0000
@@ -137,12 +137,5 @@
 !AutoDeletedFilename class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/AutoDeletedFilename.st,v 1.8 2012/11/06 17:47:54 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: AutoDeletedFilename.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AutoDeletedFilename.st,v 1.8 2012-11-06 17:47:54 cg Exp $'
 ! !
-
-
-
--- a/Autoload.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Autoload.st	Sat Jan 19 01:30:00 2013 +0000
@@ -797,18 +797,11 @@
 !Autoload class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.162 2012/11/06 00:23:36 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.162 2012-11-06 00:23:36 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.162 2012/11/06 00:23:36 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Autoload.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.162 2012-11-06 00:23:36 cg Exp $'
 ! !
 
 Autoload initialize!
-
-
-
--- a/AutoloadMetaclass.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/AutoloadMetaclass.st	Sat Jan 19 01:30:00 2013 +0000
@@ -101,16 +101,9 @@
 !AutoloadMetaclass class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/AutoloadMetaclass.st,v 1.8 2010/04/03 10:47:04 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AutoloadMetaclass.st,v 1.8 2010-04-03 10:47:04 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/AutoloadMetaclass.st,v 1.8 2010/04/03 10:47:04 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: AutoloadMetaclass.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AutoloadMetaclass.st,v 1.8 2010-04-03 10:47:04 cg Exp $'
 ! !
-
-
-
--- a/Bag.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Bag.st	Sat Jan 19 01:30:00 2013 +0000
@@ -416,16 +416,9 @@
 !Bag class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Bag.st,v 1.41 2010/03/30 13:38:23 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Bag.st,v 1.41 2010-03-30 13:38:23 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Bag.st,v 1.41 2010/03/30 13:38:23 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: Bag.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Bag.st,v 1.41 2010-03-30 13:38:23 stefan Exp $'
 ! !
-
-
-
--- a/Behavior.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Behavior.st	Sat Jan 19 01:30:00 2013 +0000
@@ -20,6 +20,10 @@
 
 !Behavior class methodsFor:'documentation'!
 
+VS
+    ^ '§Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.315 2011/11/29 10:20:21 cg Exp §'
+!
+
 copyright
 "
  COPYRIGHT (c) 1988 by Claus Gittinger
@@ -1183,22 +1187,26 @@
 ! !
 
 
+
 !Behavior methodsFor:'accessing'!
 
 addSelector:newSelector withMethod:newMethod
     "add the method given by 2nd argument under the selector given by
      1st argument to the methodDictionary. Flushes all caches."
 
-    |oldMethod ns selector |
+    |oldMethod ns selector newLookupObject|
 
     (newSelector isMemberOf:Symbol) ifFalse:[
         self error:'invalid selector'.
     ].
 
     ns := newMethod nameSpace.
-    selector := (ns isNil or:[ns == self programmingLanguage])
-                    ifTrue:[newSelector]
-                    ifFalse:[(':' , ns name , '::' , newSelector) asSymbol].
+    (ns notNil and:[ns ~= self programmingLanguage defaultSelectorNameSpacePrefix]) ifTrue:[
+        selector := (':' , ns , '::' , newSelector) asSymbol.
+        newLookupObject := Smalltalk at: #NamespaceAwareLookup. "/ so it can be nilled to disable that feature
+    ] ifFalse:[
+        selector := newSelector
+    ].
 
     "/ Q (cg): isn't that something that the caller should decide?
     oldMethod := self compiledMethodAt:selector.
@@ -1209,11 +1217,9 @@
 
     (self primAddSelector:selector withMethod:newMethod) ifFalse:[^ false].
 
-    (Smalltalk at: #NamespaceAwareLookup) notNil ifTrue:[
-        lookupObject ~= NamespaceAwareLookup ifTrue:[
-            selector isNameSpaceSelector ifTrue:[
-                self lookupObject: NamespaceAwareLookup
-            ]
+    newLookupObject notNil ifTrue:[
+        lookupObject ~= newLookupObject ifTrue:[
+            self lookupObject: newLookupObject
         ]
     ].
 
@@ -1442,6 +1448,7 @@
     "Created: 16.4.1996 / 16:27:16 / cg"
 ! !
 
+
 !Behavior methodsFor:'compiler interface'!
 
 browserClass
@@ -4428,17 +4435,17 @@
 
     cls := self.
     [cls notNil] whileTrue:[
-        m := cls compiledMethodAt:aSelector.
-        m notNil ifTrue:[^ m].
-        cls hasMultipleSuperclasses ifTrue:[
-            cls superclasses do:[:aSuperClass |
-                m := aSuperClass lookupMethodFor:aSelector.
-                m notNil ifTrue:[^ m].
-            ].
-            ^ nil
-        ] ifFalse:[
-            cls := cls superclass
-        ]
+	m := cls compiledMethodAt:aSelector.
+	m notNil ifTrue:[^ m].
+	cls hasMultipleSuperclasses ifTrue:[
+	    cls superclasses do:[:aSuperClass |
+		m := aSuperClass lookupMethodFor:aSelector.
+		m notNil ifTrue:[^ m].
+	    ].
+	    ^ nil
+	] ifFalse:[
+	    cls := cls superclass
+	]
     ].
     ^ nil
 
@@ -4826,13 +4833,9 @@
 !Behavior class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.327 2012/11/25 09:52:30 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.329 2012-12-11 17:26:07 cg Exp $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.327 2012/11/25 09:52:30 cg Exp '
-!
-
-version_SVN
-    ^ '$Id: Behavior.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.329 2012-12-11 17:26:07 cg Exp $'
 ! !
--- a/Block.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Block.st	Sat Jan 19 01:30:00 2013 +0000
@@ -11,7 +11,7 @@
 "
 "{ Package: 'stx:libbasic' }"
 
-CompiledCode subclass:#Block
+CompiledCode variableSubclass:#Block
 	instanceVariableNames:'home nargs sourcePos initialPC'
 	classVariableNames:'InvalidNewSignal'
 	poolDictionaries:''
@@ -370,6 +370,7 @@
     "Modified: 23.4.1996 / 15:55:58 / cg"
 ! !
 
+
 !Block methodsFor:'Compatibility-ANSI'!
 
 argumentCount
@@ -628,6 +629,7 @@
     "Created: / 28-08-2010 / 14:41:15 / cg"
 ! !
 
+
 !Block methodsFor:'accessing'!
 
 home
@@ -685,6 +687,7 @@
     ^ nargs
 ! !
 
+
 !Block methodsFor:'compatibility-Cola & Pepsi'!
 
 arity
@@ -2301,6 +2304,7 @@
     "
 ! !
 
+
 !Block methodsFor:'looping'!
 
 doUntil:aBlock
@@ -3024,15 +3028,11 @@
 !Block class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Block.st,v 1.189 2012/11/24 12:51:52 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Block.st,v 1.189 2012-11-24 12:51:52 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Block.st,v 1.189 2012/11/24 12:51:52 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: Block.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Block.st,v 1.189 2012-11-24 12:51:52 stefan Exp $'
 ! !
 
 Block initialize!
--- a/BlockContext.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/BlockContext.st	Sat Jan 19 01:30:00 2013 +0000
@@ -53,7 +53,6 @@
 "
 ! !
 
-
 !BlockContext methodsFor:'accessing'!
 
 canReturn
@@ -255,16 +254,9 @@
 !BlockContext class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/BlockContext.st,v 1.35 2012/07/19 09:24:00 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/BlockContext.st,v 1.35 2012-07-19 09:24:00 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/BlockContext.st,v 1.35 2012/07/19 09:24:00 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: BlockContext.st 10829 2012-07-25 08:45:15Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/BlockContext.st,v 1.35 2012-07-19 09:24:00 cg Exp $'
 ! !
-
-
-
--- a/Boolean.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Boolean.st	Sat Jan 19 01:30:00 2013 +0000
@@ -232,16 +232,9 @@
 !Boolean class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Boolean.st,v 1.42 2011/09/29 13:24:33 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Boolean.st,v 1.42 2011-09-29 13:24:33 cg Exp $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/Boolean.st,v 1.42 2011/09/29 13:24:33 cg Exp '
-!
-
-version_SVN
-    ^ '$Id: Boolean.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Boolean.st,v 1.42 2011-09-29 13:24:33 cg Exp $'
 ! !
-
-
-
--- a/BuiltinLookup.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/BuiltinLookup.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1,13 +1,27 @@
 "
- COPYRIGHT (c) 2006 by eXept Software AG
+ COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
               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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the 'Software'), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
 "
 "{ Package: 'stx:libbasic' }"
 
@@ -15,22 +29,36 @@
 	instanceVariableNames:''
 	classVariableNames:'Instance'
 	poolDictionaries:''
-	category:'Kernel-Classes'
+	category:'Kernel-Extensions'
 !
 
 !BuiltinLookup class methodsFor:'documentation'!
 
 copyright
 "
- COPYRIGHT (c) 2006 by eXept Software AG
+ COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
               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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the 'Software'), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
 "
 ! !
 
@@ -56,6 +84,10 @@
 
 !BuiltinLookup class methodsFor:'documentation'!
 
+version_CVS
+    ^ '$Header: /cvs/stx/stx/libbasic/BuiltinLookup.st,v 1.2 2011-06-28 11:04:06 cg Exp $'
+!
+
 version_SVN
-    ^ '$Id: BuiltinLookup.st 10700 2011-09-29 15:44:37Z vranyj1 $'
+    ^ '§Id: BuiltinLookup.st,v 1.1 2011/06/28 10:51:38 vrany Exp §'
 ! !
--- a/ByteArray.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ByteArray.st	Sat Jan 19 01:30:00 2013 +0000
@@ -11,7 +11,7 @@
 "
 "{ Package: 'stx:libbasic' }"
 
-UninterpretedBytes subclass:#ByteArray
+UninterpretedBytes variableByteSubclass:#ByteArray
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -161,6 +161,7 @@
     ^ self basicNew:anInteger
 ! !
 
+
 !ByteArray class methodsFor:'queries'!
 
 elementByteSize
@@ -920,6 +921,7 @@
     "
 ! !
 
+
 !ByteArray methodsFor:'comparing'!
 
 = aByteArray
@@ -1041,12 +1043,12 @@
     "convert myself to an integer - the first byte is most significant.
      This is also in Squeak."
 
-    ^ (LargeInteger digitBytes:self MSB:true) normalize
+    ^ (LargeInteger digitBytes:self MSB:true) compressed
 
     "
-	#[ 2 ] asInteger hexPrintString
-	#[ 16r1 16r2 ] asInteger hexPrintString
-	#[4 0 0 0 0 0 0 0] asInteger hexPrintString
+        #[ 2 ] asInteger hexPrintString
+        #[ 16r1 16r2 ] asInteger hexPrintString
+        #[4 0 0 0 0 0 0 0] asInteger hexPrintString
     "
 !
 
@@ -1054,13 +1056,13 @@
     "convert myself to an integer - the first byte is most significant.
      This is also in Squeak."
 
-    ^ (LargeInteger digitBytes:self MSB:isMSBFirst) normalize
+    ^ (LargeInteger digitBytes:self MSB:isMSBFirst) compressed
 
     "
-	(#[ 2 ] asIntegerMSB:true) hexPrintString
-	(#[ 16r1 16r2 ] asIntegerMSB:true) hexPrintString
-	(#[ 16r1 16r2 ] asIntegerMSB:false) hexPrintString
-	(#[4 0 0 0 0 0 0 0] asIntegerMSB:true) hexPrintString
+        (#[ 2 ] asIntegerMSB:true) hexPrintString
+        (#[ 16r1 16r2 ] asIntegerMSB:true) hexPrintString
+        (#[ 16r1 16r2 ] asIntegerMSB:false) hexPrintString
+        (#[4 0 0 0 0 0 0 0] asIntegerMSB:true) hexPrintString
     "
 !
 
@@ -2537,6 +2539,7 @@
     "
 ! !
 
+
 !ByteArray methodsFor:'printing & storing'!
 
 displayOn:aGCOrStream
@@ -2745,23 +2748,23 @@
     REGISTER int index, max;
     int len;
 
-    if (__qClass(self) == @global(ByteArray)) {
-	max = 0;
-	index = 0;
-	len = __qSize(self) - OHDR_SIZE;
-	cp = &(__ByteArrayInstPtr(self)->ba_element[0]);
-
-	while (++index <= len) {
-	    unsigned int byte;
-
-	    byte = *cp;
-	    cp++;
-	    if (byte > max) {
-		max = byte;
-		if (byte == 255) break;
-	    }
-	}
-	RETURN ( __mkSmallInteger(max) );
+    if (__isByteArrayLike(self)) {
+        max = 0;
+        index = 0;
+        len = __qSize(self) - OHDR_SIZE;
+        cp = &(__ByteArrayInstPtr(self)->ba_element[0]);
+
+        while (++index <= len) {
+            unsigned int byte;
+
+            byte = *cp;
+            cp++;
+            if (byte > max) {
+                max = byte;
+                if (byte == 255) break;
+            }
+        }
+        RETURN ( __mkSmallInteger(max) );
     }
 %}.
     ^ super max
@@ -2966,7 +2969,7 @@
     ^ super indexOf:aByte startingAt:start
 
     "
-     #[1 2 3 4 5 6 7 8 9 0 1 2 3 4 5] indexOf:0
+     #[1 2 3 4 5 6 7 8 9 0 1 2 3 4 5] indexOf:0 startingAt:1
     "
 ! !
 
@@ -2997,13 +3000,9 @@
 !ByteArray class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ByteArray.st,v 1.208 2012/10/10 17:00:30 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ByteArray.st,v 1.208 2012-10-10 17:00:30 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ByteArray.st,v 1.208 2012/10/10 17:00:30 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: ByteArray.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ByteArray.st,v 1.208 2012-10-10 17:00:30 cg Exp $'
 ! !
--- a/Character.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Character.st	Sat Jan 19 01:30:00 2013 +0000
@@ -645,7 +645,26 @@
     "Modified: 27.6.1996 / 12:34:51 / cg"
 !
 
-
+- aMagnitude
+    "Return the Character that is <aMagnitude> lower than the receiver.
+     Wrap if the resulting value is not a legal Character value. (JS)
+     claus:
+	modified to return the difference as integer, if the argument
+	is another character. If the argument is a number, a character is
+	returned."
+
+    aMagnitude isCharacter ifTrue:[
+	^ asciivalue - aMagnitude asInteger
+    ].
+    ^ Character codePoint:((asciivalue - aMagnitude asInteger) \\ 16r3FFFFFFF)
+
+    "
+     $z - $a
+     $d - 3
+    "
+
+    "Modified: 27.6.1996 / 12:35:34 / cg"
+!
 
 // aMagnitude
     "Return the Character who's value is the receiver divided by <aMagnitude>.
@@ -661,6 +680,7 @@
     ^ Character codePoint:(asciivalue \\ aMagnitude asInteger \\ 16r3FFFFFFF)
 ! !
 
+
 !Character methodsFor:'comparing'!
 
 < aMagnitude
@@ -734,6 +754,10 @@
 
     self == aCharacter ifTrue:[^ true].
     ^ self asLowercase = aCharacter asLowercase
+
+    "
+      (Character value:345) sameAs:(Character value:345)
+    "
 !
 
 ~= aCharacter
@@ -1372,7 +1396,7 @@
     ^ s contents
 
     "
-        '' utf8Encoded
+        'ä' utf8Encoded
     "
 ! !
 
@@ -1454,6 +1478,7 @@
     "
 ! !
 
+
 !Character methodsFor:'obsolete'!
 
 asciiValue
@@ -1493,8 +1518,6 @@
     aGCOrStream nextPut:$".
 !
 
-
-
 isLiteral
     "return true, if the receiver can be used as a literal constant in ST syntax
      (i.e. can be used in constant arrays)"
@@ -2787,13 +2810,10 @@
 !Character class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Character.st,v 1.143 2012/04/24 12:03:06 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Character.st,v 1.144 2013-01-16 14:10:58 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Character.st,v 1.143 2012/04/24 12:03:06 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: Character.st 10807 2012-05-05 21:58:24Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Character.st,v 1.144 2013-01-16 14:10:58 stefan Exp $'
 ! !
+
--- a/CharacterArray.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterArray.st	Sat Jan 19 01:30:00 2013 +0000
@@ -11,7 +11,7 @@
 "
 "{ Package: 'stx:libbasic' }"
 
-ByteArray subclass:#CharacterArray
+UninterpretedBytes variableByteSubclass:#CharacterArray
 	instanceVariableNames:''
 	classVariableNames:'PreviousMatch DecoderTables EncoderTables DecodingFailedSignal
 		EncodingFailedSignal LastString LastShiftTable'
@@ -326,6 +326,7 @@
     "
 ! !
 
+
 !CharacterArray class methodsFor:'pattern matching'!
 
 matchEscapeCharacter
@@ -677,6 +678,7 @@
     ^ self == CharacterArray
 ! !
 
+
 !CharacterArray methodsFor:'Compatibility-ANSI'!
 
 addLineDelimiters
@@ -1012,12 +1014,6 @@
     "
 !
 
-isWideString
-    ^ self bitsPerCharacter > 8
-
-    "Created: / 05-09-2011 / 23:13:16 / cg"
-!
-
 lastSpacePosition
     "return the index of the last space character; 0 if there is none"
 
@@ -1559,6 +1555,7 @@
 ! !
 
 
+
 !CharacterArray methodsFor:'character searching'!
 
 includesMatchCharacters
@@ -1818,18 +1815,16 @@
      therefore 'foo' = 'Foo' will return false.
      Since this is incompatible to ST-80 (at least, V2.x) , this may change."
 
-    |mySize    "{ Class: SmallInteger }"
-     otherSize |
+    |mySize    "{ Class: SmallInteger }"|
 
     (aString isString or:[aString species == self species]) ifFalse:[
-	^ false
+        ^ false
     ].
     mySize := self size.
-    otherSize := aString size.
-    mySize == otherSize ifFalse:[^ false].
+    mySize ~~ (aString size) ifTrue:[^ false].
 
     1 to:mySize do:[:index |
-	(self at:index) = (aString at:index) ifFalse:[^ false].
+        (self at:index) = (aString at:index) ifFalse:[^ false].
     ].
     ^ true
 
@@ -1870,6 +1865,21 @@
     "Modified: 22.4.1996 / 15:55:00 / cg"
 !
 
+after:aString
+    "Compare the receiver with the argument and return true if the
+     receiver should come after the argument in a sorted list.
+     Otherwise return false.
+     NOTE: The comparison should be language specific, depending on the value of
+            LC_COLLATE, which is initialized from the environment.
+
+            Currently it is for Strings, but not for UnicodeStrings...
+
+     STUPID:
+        #after has a completely different meaning in SeqColl ..."
+
+    ^ (self compareCollatingWith:aString) > 0
+!
+
 compareCaselessWith:aString
     "Compare the receiver against the argument, ignoreing case.
      Return 1 if the receiver is greater, 0 if equal and -1 if less than the argument.
@@ -1900,6 +1910,23 @@
     "Modified: 22.4.1996 / 15:56:07 / cg"
 !
 
+compareCollatingWith:aString
+    "Compare the receiver with the argument and return 1 if the receiver is
+     greater, 0 if equal and -1 if less than the argument in a sorted list.
+     The comparison is language specific, depending on the value of
+     LC_COLLATE, which is in the shell environment."
+
+    "TODO not yet defined for unicode"
+    <resource: #todo>
+
+    |s|
+
+    (s := self string) ~~ self ifTrue:[
+        ^ s compareCollatingWith:aString
+    ].
+    ^ self compareWith:aString
+!
+
 compareWith:aString
     "Compare the receiver with the argument and return 1 if the receiver is
      greater, 0 if equal and -1 if less than the argument.
@@ -1971,8 +1998,18 @@
 
     "/ immediately after any change, execute (maybe in a debugger):
     "/      Set allSubInstancesDo:[:s | s rehash]
-    ^ self hash_dragonBook
-    "/ ^ self hash_sdbm.
+    "/ ^ self hash_dragonBook
+
+    |h|
+
+    "/
+    "/ this is the sdbm algorithm
+    "/
+    h := 0.
+    self do:[:char |
+        h := (65599 times:h) plus:char codePoint.
+    ].
+    ^ h 
 
     "
      'a' hash
@@ -1985,6 +2022,44 @@
      'ab' asArray hash
     "
 
+    "
+        |syms ms|
+
+        syms := Symbol allInstances.
+        Transcript show:'syms: '; showCR:syms size.
+        Transcript show:'sdbm hashes: '; showCR:(syms collect:[:s| s hash]) asSet size.
+        Transcript show:'dragonBook hashes: '; showCR:(syms collect:[:s| s hash_dragonBook]) asSet size.
+
+        ms := Time millisecondsToRun:[
+            10 timesRepeat:[
+                syms do:[:each| each hash].
+            ].
+        ].
+        Transcript show:'sdbm hash: '; showCR:ms.
+
+        ms := Time millisecondsToRun:[
+            10 timesRepeat:[
+                syms do:[:each| each hash_dragonBook].
+            ].
+        ].
+        Transcript show:'dragonBook: '; showCR:ms.
+
+        syms := syms collect:[:each| each asUnicode16String].
+        ms := Time millisecondsToRun:[
+            10 timesRepeat:[
+                syms do:[:each| each hash].
+            ].
+        ].
+        Transcript show:'unicode sdbm hash: '; showCR:ms.
+
+        ms := Time millisecondsToRun:[
+            10 timesRepeat:[
+                syms do:[:each| each hash_dragonBook].
+            ].
+        ].
+        Transcript show:'unicode dragonBook:'; showCR:ms.
+    "
+
     "Modified: / 26-12-2011 / 14:09:07 / cg"
 !
 
@@ -2000,21 +2075,20 @@
     self reverseDo:[:char |
 "/ Sorry, stc cannot compile this (as of 10.9.2007)
 "/        h := (h bitShift:4) + char asciiValue.
-	h := (h bitShift:4).
-	h:= h + char codePoint.
-	h := h bitAnd:16rFFFFFFFF.
-	g := (h bitAnd: 16rF0000000).
-	g ~~ 0 ifTrue:[
-	    h := h bitXor:(g bitShift:-24).
-	    h := h bitXor:g.
-	].
+        h := (h bitShift:4).
+        h := h + char codePoint.
+        h := h bitAnd:16rFFFFFFFF.
+        g := (h bitAnd: 16rF0000000).
+        g ~~ 0 ifTrue:[
+            h := h bitXor:(g bitShift:-24).
+            h := h bitXor:g.
+        ].
     ].
     "/
     "/ multiply by large prime to spread values
     "/ This speeds up Set and Dictionary by a factor of 10!!
     "/
-    h := h * 31415821.
-    h := h bitAnd:16r3fffffff.
+    h := h times:31415821.
     ^ h
 
     "
@@ -2031,30 +2105,6 @@
     "Created: / 26-12-2011 / 13:46:06 / cg"
 !
 
-hash_sdbm
-    "return an integer useful as a hash-key"
-
-    |h|
-
-    "/
-    "/ this is the sdbm algorithm
-    "/
-    h := 0.
-    self do:[:char |
-	h := (h * 65599) + char codePoint.
-	h := h bitAnd:16r3FFFFFFF.
-    ].
-    ^ h
-
-    "
-     'a' hash_sdbm
-     'aa' hash_sdbm
-     'ab' hash_sdbm
-    "
-
-    "Created: / 26-12-2011 / 13:48:13 / cg"
-!
-
 levenshteinTo:aString
     "return the levenshtein distance to the argument, aString;
      this value corresponds to the number of replacements that have to be
@@ -2361,11 +2411,12 @@
 !
 
 asByteArray
-    |bytes sz bytesPerCharacter idx|
-
-    self string ~~ self ifTrue:[
-	"/ for text and other wrappers
-	^ self string asByteArray
+    |bytes sz bytesPerCharacter idx str|
+
+    str := self string.
+    str ~~ self ifTrue:[
+        "/ for text and other wrappers
+        ^ str asByteArray
     ].
 
     "/ for real strings, a fallback
@@ -2374,19 +2425,19 @@
     bytes := ByteArray new:(sz * bytesPerCharacter).
     idx := 1.
     self do:[:char |
-	|code|
-
-	code := char codePoint.
-	bytesPerCharacter == 2 ifTrue:[
-	    bytes unsignedShortAt:idx put:code
-	] ifFalse:[
-	    bytesPerCharacter == 4 ifTrue:[
-		bytes unsignedLongAt:idx put:code
-	    ] ifFalse:[
-		bytes at:idx put:code
-	    ].
-	].
-	idx := idx + bytesPerCharacter.
+        |code|
+
+        code := char codePoint.
+        bytesPerCharacter == 2 ifTrue:[
+            bytes unsignedShortAt:idx put:code
+        ] ifFalse:[
+            bytesPerCharacter == 4 ifTrue:[
+                bytes unsignedLongAt:idx put:code
+            ] ifFalse:[
+                bytes at:idx put:code
+            ].
+        ].
+        idx := idx + bytesPerCharacter.
     ].
     ^ bytes
 
@@ -2758,11 +2809,12 @@
     bitsPerCharacter := newStr bitsPerCharacter.
 
     1 to:mySize do:[:i |
-	c := (self at:i) asLowercase.
-	c bitsPerCharacter > bitsPerCharacter ifTrue:[
-	    newStr := c stringSpecies fromString:newStr.
-	].
-	newStr at:i put:c
+        c := (self at:i) asLowercase.
+        (c bitsPerCharacter > bitsPerCharacter 
+         and:[c stringSpecies ~= newStr stringSpecies]) ifTrue:[
+            newStr := c stringSpecies fromString:newStr.
+        ].
+        newStr at:i put:c
     ].
     ^ newStr
 
@@ -2883,7 +2935,7 @@
     "if possible, return the receiver converted to a 'normal' string.
      It is only possible, if there are no characters with codePoints above 255 in the receiver."
 
-    self bitsPerCharacter == 8 ifTrue:[^ self].
+    self isWideString ifFalse:[^ self].
     (self contains:[:char | char codePoint > 255]) ifFalse:[^ self asSingleByteString].
     ^ self
 
@@ -3192,14 +3244,6 @@
     ^ self
 
     "Modified: 27.4.1996 / 13:29:30 / cg"
-!
-
-writeStream
-    "return a stream for writing onto the receiver.
-     Redefined to return a CharacterWriteStream which automatically checks for the bytesPerCharacter
-     and replaces the stream-buffer as required."
-
-    ^ CharacterWriteStream on:self
 ! !
 
 !CharacterArray methodsFor:'copying'!
@@ -3796,14 +3840,16 @@
 utf8Decoded
     "Interpreting myself as an UTF-8 representation, decode and return the decoded string."
 
-    |in out is16Bit c|
-
-    is16Bit := false.
+    |in out|
+
+    (self isWideString or:[self contains8BitCharacters]) ifFalse:[
+        "speed up common case"
+        ^ self.
+    ].
     out := CharacterWriteStream on:(String uninitializedNew:self size).
     in := self readStream.
     [in atEnd] whileFalse:[
-	c := Character utf8DecodeFrom:in.
-	out nextPut:c.
+        out nextPut:(Character utf8DecodeFrom:in).
     ].
     ^ out contents
 
@@ -3821,12 +3867,12 @@
       |utf8Encoding original readBack|
 
       1 to:16rFFFF do:[:ascii |
-	original := (Character value:ascii) asString.
-	utf8Encoding := original utf8Encoded.
-	readBack := utf8Encoding utf8Decoded.
-	readBack = original ifFalse:[
-	    self halt
-	]
+        original := (Character value:ascii) asString.
+        utf8Encoding := original utf8Encoded.
+        readBack := utf8Encoding utf8Decoded.
+        readBack = original ifFalse:[
+            self halt
+        ]
       ]
     "
 !
@@ -3858,19 +3904,27 @@
 utf8Encoded
     "Return my UTF-8 representation as a new String"
 
-    |s|
-
-    s := WriteStream on:(String uninitializedNew:self size).
+    |s sz|
+
+    (self isWideString or:[self contains8BitCharacters]) ifFalse:[
+        "speed up common case"
+        ^ self.
+    ].
+    "We already know, that we need more space, just a rough estimation"
+    sz := self size.
+    s := WriteStream on:(String uninitializedNew:(sz+2+(sz//3))).
     s nextPutAllUtf8:self.
     ^ s contents
 
     "
-     'abcde' utf8Encoded
+     'abcde1234' utf8Encoded
+     'abcdeäöüß' utf8Encoded
     "
 
     "Modified: / 11-05-2010 / 19:12:37 / cg"
 ! !
 
+
 !CharacterArray methodsFor:'matching - glob expressions'!
 
 compoundMatch:aString
@@ -4314,6 +4368,8 @@
     "Created: / 08-03-2012 / 03:11:11 / cg"
 ! !
 
+
+
 !CharacterArray methodsFor:'padded copying'!
 
 centerPaddedTo:newSize
@@ -4567,6 +4623,7 @@
     "
 ! !
 
+
 !CharacterArray methodsFor:'queries'!
 
 bitsPerCharacter
@@ -4576,12 +4633,12 @@
     |string max|
 
     (string := self string) ~~ self ifTrue:[
-	^ string bitsPerCharacter
+        ^ string bitsPerCharacter
     ].
 
     max := 8.
     self do:[:eachCharacter |
-	max := max max:(eachCharacter bitsPerCharacter)
+        max := max max:(eachCharacter bitsPerCharacter)
     ].
     ^ max
 
@@ -4837,6 +4894,7 @@
     "Modified: 17.4.1997 / 12:50:23 / cg"
 ! !
 
+
 !CharacterArray methodsFor:'special string converting'!
 
 expandPlaceholdersWith:argArrayOrDictionary
@@ -5641,6 +5699,7 @@
     "
 ! !
 
+
 !CharacterArray methodsFor:'substring searching'!
 
 findString:subString
@@ -6044,6 +6103,10 @@
     "
 !
 
+isWideString
+    ^ self bitsPerCharacter > 8
+!
+
 numArgs
     "treating the receiver as a message selector, return how many arguments would it take"
 
@@ -6076,7 +6139,11 @@
 !
 
 partsIfSelector
-    "treat the receiver as a message selector, return a collection of parts."
+    "treat the receiver as a message selector, return a collection of parts.
+     Notice: this is more tolerant than Smalltalk's syntax would suggest;
+     especially it allows for empty keyword parts between colons.
+     This is not (and should not be checked here), to allow parsing of
+     degenerate selectors as appearing with objectiveC."
 
     |idx1 "{ Class: SmallInteger }"
      coll idx2 sz|
@@ -6085,19 +6152,21 @@
     idx1 := 1.
     sz := self size.
     [true] whileTrue:[
-	idx2 := self indexOf:$: startingAt:idx1 + 1.
-	(idx2 == 0 or:[idx2 == sz]) ifTrue:[
-	    coll add:(self copyFrom:idx1).
-	    ^ coll
-	].
-	coll add:(self copyFrom:idx1 to:idx2).
-	idx1 := idx2 + 1
+        idx2 := self indexOf:$: startingAt:idx1.
+        (idx2 == 0 or:[idx2 == sz]) ifTrue:[
+            coll add:(self copyFrom:idx1).
+            ^ coll
+        ].
+        coll add:(self copyFrom:idx1 to:idx2).
+        idx1 := idx2 + 1
     ].
 
     "
-     'foo:bar:' partsIfSelector
-     #foo:bar: partsIfSelector
-     'hello' partsIfSelector
+     'foo:' partsIfSelector            
+     'foo:bar:' partsIfSelector    
+     'foo::::' partsIfSelector     
+     #foo:bar: partsIfSelector     
+     'hello' partsIfSelector       
      '+' partsIfSelector
     "
 ! !
@@ -6122,15 +6191,12 @@
 !CharacterArray class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.481 2012/10/31 19:10:50 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.491 2013-01-16 12:31:17 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.481 2012/10/31 19:10:50 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: CharacterArray.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.491 2013-01-16 12:31:17 stefan Exp $'
 ! !
 
+
 CharacterArray initialize!
--- a/CharacterEncoder.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoder.st	Sat Jan 19 01:30:00 2013 +0000
@@ -836,14 +836,14 @@
 
     oldEncoding == #'unicode' ifTrue:[
         newEncoding == #'iso8859-1' ifTrue:[
-            aString bitsPerCharacter == 8 ifTrue:[
+            aString isWideString ifFalse:[
                 ^ aString
             ]
         ]
     ].
     newEncoding == #'unicode' ifTrue:[
         oldEncoding == #'iso8859-1' ifTrue:[
-            aString bitsPerCharacter == 8 ifTrue:[
+            aString isWideString ifFalse:[
                 ^ aString
             ]
         ]
@@ -1672,18 +1672,11 @@
 !CharacterEncoder class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoder.st,v 1.119 2012/11/22 12:39:56 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoder.st,v 1.120 2012-12-12 22:57:59 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/CharacterEncoder.st,v 1.119 2012/11/22 12:39:56 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: CharacterEncoder.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoder.st,v 1.120 2012-12-12 22:57:59 stefan Exp $'
 ! !
 
 CharacterEncoder initialize!
-
-
-
--- a/CharacterEncoderImplementations__EBCDIC.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__EBCDIC.st	Sat Jan 19 01:30:00 2013 +0000
@@ -623,9 +623,5 @@
 !EBCDIC class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__EBCDIC.st,v 1.1 2010/09/20 15:26:46 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: CharacterEncoderImplementations__EBCDIC.st 10700 2011-09-29 15:44:37Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__EBCDIC.st,v 1.1 2010-09-20 15:26:46 cg Exp $'
 ! !
--- a/CharacterEncoderImplementations__ISO10646_to_UTF16BE.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__ISO10646_to_UTF16BE.st	Sat Jan 19 01:30:00 2013 +0000
@@ -13,7 +13,7 @@
 
 "{ NameSpace: CharacterEncoderImplementations }"
 
-CharacterEncoderImplementations::TwoByteEncoder subclass:#'ISO10646_to_UTF16BE'
+TwoByteEncoder subclass:#ISO10646_to_UTF16BE
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -270,13 +270,9 @@
 !ISO10646_to_UTF16BE class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO10646_to_UTF16BE.st,v 1.6 2012/07/12 18:07:54 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO10646_to_UTF16BE.st,v 1.6 2012-07-12 18:07:54 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO10646_to_UTF16BE.st,v 1.6 2012/07/12 18:07:54 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: CharacterEncoderImplementations__ISO10646_to_UTF16BE.st 10824 2012-07-18 16:55:48Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO10646_to_UTF16BE.st,v 1.6 2012-07-12 18:07:54 cg Exp $'
 ! !
--- a/CharacterEncoderImplementations__ISO10646_to_UTF16LE.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__ISO10646_to_UTF16LE.st	Sat Jan 19 01:30:00 2013 +0000
@@ -91,9 +91,5 @@
 !ISO10646_to_UTF16LE class methodsFor:'documentation'!
 
 version
-    ^ '$Id: CharacterEncoderImplementations__ISO10646_to_UTF16LE.st 10842 2012-09-07 10:49:18Z vranyj1 $'
-!
-
-version_SVN
-    ^ '$Id:: CharacterEncoderImplementations__ISO10646_to_UTF16LE.st 10842 2012-09-07 10:49:18Z vranyj1                             $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO10646_to_UTF16LE.st,v 1.3 2012-07-10 07:55:26 stefan Exp $'
 ! !
--- a/CharacterEncoderImplementations__ISO10646_to_UTF8.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__ISO10646_to_UTF8.st	Sat Jan 19 01:30:00 2013 +0000
@@ -45,7 +45,7 @@
   Decoding (utf8 to unicode):
      |t|
 
-     t := ISO10646_to_UTF8 encodeString:'Hello'.
+     t := ISO10646_to_UTF8 encodeString:'Helloœ'.
      ISO10646_to_UTF8 decodeString:t.
 "
 ! !
@@ -458,12 +458,5 @@
 !ISO10646_to_UTF8 class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO10646_to_UTF8.st,v 1.17 2012/07/10 07:55:50 stefan Exp $'
-!
-
-version_SVN
-    ^ '$Id: CharacterEncoderImplementations__ISO10646_to_UTF8.st 10824 2012-07-18 16:55:48Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO10646_to_UTF8.st,v 1.17 2012-07-10 07:55:50 stefan Exp $'
 ! !
-
-
-
--- a/CharacterEncoderImplementations__ISO8859_1.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__ISO8859_1.st	Sat Jan 19 01:30:00 2013 +0000
@@ -464,12 +464,5 @@
 !ISO8859_1 class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO8859_1.st,v 1.5 2012/07/11 16:42:55 stefan Exp $'
-!
-
-version_SVN
-    ^ '$Id: CharacterEncoderImplementations__ISO8859_1.st 10824 2012-07-18 16:55:48Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO8859_1.st,v 1.5 2012-07-11 16:42:55 stefan Exp $'
 ! !
-
-
-
--- a/CharacterEncoderImplementations__ISO8859_10.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__ISO8859_10.st	Sat Jan 19 01:30:00 2013 +0000
@@ -739,9 +739,5 @@
 !ISO8859_10 class methodsFor:'documentation'!
 
 version
-    ^ '$Id: CharacterEncoderImplementations__ISO8859_10.st 10842 2012-09-07 10:49:18Z vranyj1 $'
-!
-
-version_SVN
-    ^ '$Id:: CharacterEncoderImplementations__ISO8859_10.st 10842 2012-09-07 10:49:18Z vranyj1                                      $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO8859_10.st,v 1.5 2012-07-11 16:42:51 stefan Exp $'
 ! !
--- a/CharacterEncoderImplementations__ISO8859_13.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__ISO8859_13.st	Sat Jan 19 01:30:00 2013 +0000
@@ -742,9 +742,5 @@
 !ISO8859_13 class methodsFor:'documentation'!
 
 version
-    ^ '$Id: CharacterEncoderImplementations__ISO8859_13.st 10842 2012-09-07 10:49:18Z vranyj1 $'
-!
-
-version_SVN
-    ^ '$Id:: CharacterEncoderImplementations__ISO8859_13.st 10842 2012-09-07 10:49:18Z vranyj1                                      $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO8859_13.st,v 1.5 2012-07-11 16:43:18 stefan Exp $'
 ! !
--- a/CharacterEncoderImplementations__ISO8859_14.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__ISO8859_14.st	Sat Jan 19 01:30:00 2013 +0000
@@ -785,9 +785,5 @@
 !ISO8859_14 class methodsFor:'documentation'!
 
 version
-    ^ '$Id: CharacterEncoderImplementations__ISO8859_14.st 10842 2012-09-07 10:49:18Z vranyj1 $'
-!
-
-version_SVN
-    ^ '$Id:: CharacterEncoderImplementations__ISO8859_14.st 10842 2012-09-07 10:49:18Z vranyj1                                      $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO8859_14.st,v 1.5 2012-07-11 16:43:17 stefan Exp $'
 ! !
--- a/CharacterEncoderImplementations__ISO8859_15.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__ISO8859_15.st	Sat Jan 19 01:30:00 2013 +0000
@@ -644,12 +644,5 @@
 !ISO8859_15 class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO8859_15.st,v 1.5 2012/07/11 16:42:49 stefan Exp $'
-!
-
-version_SVN
-    ^ '$Id: CharacterEncoderImplementations__ISO8859_15.st 10824 2012-07-18 16:55:48Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO8859_15.st,v 1.5 2012-07-11 16:42:49 stefan Exp $'
 ! !
-
-
-
--- a/CharacterEncoderImplementations__ISO8859_16.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__ISO8859_16.st	Sat Jan 19 01:30:00 2013 +0000
@@ -728,9 +728,5 @@
 !ISO8859_16 class methodsFor:'documentation'!
 
 version
-    ^ '$Id: CharacterEncoderImplementations__ISO8859_16.st 10842 2012-09-07 10:49:18Z vranyj1 $'
-!
-
-version_SVN
-    ^ '$Id:: CharacterEncoderImplementations__ISO8859_16.st 10842 2012-09-07 10:49:18Z vranyj1                                      $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO8859_16.st,v 1.5 2012-07-11 16:43:10 stefan Exp $'
 ! !
--- a/CharacterEncoderImplementations__ISO8859_3.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__ISO8859_3.st	Sat Jan 19 01:30:00 2013 +0000
@@ -703,9 +703,5 @@
 !ISO8859_3 class methodsFor:'documentation'!
 
 version
-    ^ '$Id: CharacterEncoderImplementations__ISO8859_3.st 10842 2012-09-07 10:49:18Z vranyj1 $'
-!
-
-version_SVN
-    ^ '$Id:: CharacterEncoderImplementations__ISO8859_3.st 10842 2012-09-07 10:49:18Z vranyj1                                       $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO8859_3.st,v 1.5 2012-07-11 16:43:09 stefan Exp $'
 ! !
--- a/CharacterEncoderImplementations__ISO8859_4.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__ISO8859_4.st	Sat Jan 19 01:30:00 2013 +0000
@@ -754,9 +754,5 @@
 !ISO8859_4 class methodsFor:'documentation'!
 
 version
-    ^ '$Id: CharacterEncoderImplementations__ISO8859_4.st 10842 2012-09-07 10:49:18Z vranyj1 $'
-!
-
-version_SVN
-    ^ '$Id:: CharacterEncoderImplementations__ISO8859_4.st 10842 2012-09-07 10:49:18Z vranyj1                                       $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO8859_4.st,v 1.5 2012-07-11 16:43:07 stefan Exp $'
 ! !
--- a/CharacterEncoderImplementations__ISO8859_5.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__ISO8859_5.st	Sat Jan 19 01:30:00 2013 +0000
@@ -632,12 +632,5 @@
 !ISO8859_5 class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO8859_5.st,v 1.5 2012/07/11 16:42:52 stefan Exp $'
-!
-
-version_SVN
-    ^ '$Id: CharacterEncoderImplementations__ISO8859_5.st 10824 2012-07-18 16:55:48Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO8859_5.st,v 1.5 2012-07-11 16:42:52 stefan Exp $'
 ! !
-
-
-
--- a/CharacterEncoderImplementations__ISO8859_6.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__ISO8859_6.st	Sat Jan 19 01:30:00 2013 +0000
@@ -551,9 +551,5 @@
 !ISO8859_6 class methodsFor:'documentation'!
 
 version
-    ^ '$Id: CharacterEncoderImplementations__ISO8859_6.st 10842 2012-09-07 10:49:18Z vranyj1 $'
-!
-
-version_SVN
-    ^ '$Id:: CharacterEncoderImplementations__ISO8859_6.st 10842 2012-09-07 10:49:18Z vranyj1                                       $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO8859_6.st,v 1.5 2012-07-11 16:43:13 stefan Exp $'
 ! !
--- a/CharacterEncoderImplementations__ISO8859_7.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__ISO8859_7.st	Sat Jan 19 01:30:00 2013 +0000
@@ -674,12 +674,5 @@
 !ISO8859_7 class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO8859_7.st,v 1.5 2012/07/11 16:42:54 stefan Exp $'
-!
-
-version_SVN
-    ^ '$Id: CharacterEncoderImplementations__ISO8859_7.st 10824 2012-07-18 16:55:48Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO8859_7.st,v 1.5 2012-07-11 16:42:54 stefan Exp $'
 ! !
-
-
-
--- a/CharacterEncoderImplementations__ISO8859_8.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__ISO8859_8.st	Sat Jan 19 01:30:00 2013 +0000
@@ -555,9 +555,5 @@
 !ISO8859_8 class methodsFor:'documentation'!
 
 version
-    ^ '$Id: CharacterEncoderImplementations__ISO8859_8.st 10842 2012-09-07 10:49:18Z vranyj1 $'
-!
-
-version_SVN
-    ^ '$Id:: CharacterEncoderImplementations__ISO8859_8.st 10842 2012-09-07 10:49:18Z vranyj1                                       $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO8859_8.st,v 1.5 2012-07-11 16:43:21 stefan Exp $'
 ! !
--- a/CharacterEncoderImplementations__ISO8859_9.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__ISO8859_9.st	Sat Jan 19 01:30:00 2013 +0000
@@ -450,9 +450,5 @@
 !ISO8859_9 class methodsFor:'documentation'!
 
 version
-    ^ '$Id: CharacterEncoderImplementations__ISO8859_9.st 10842 2012-09-07 10:49:18Z vranyj1 $'
-!
-
-version_SVN
-    ^ '$Id:: CharacterEncoderImplementations__ISO8859_9.st 10842 2012-09-07 10:49:18Z vranyj1                                       $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO8859_9.st,v 1.5 2012-07-11 16:43:15 stefan Exp $'
 ! !
--- a/CharacterEncoderImplementations__KOI7.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__KOI7.st	Sat Jan 19 01:30:00 2013 +0000
@@ -386,8 +386,5 @@
 !KOI7 class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__KOI7.st,v 1.4 2012/07/11 16:43:12 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__KOI7.st,v 1.4 2012-07-11 16:43:12 stefan Exp $'
 ! !
-
-
-
--- a/CharacterEncoderImplementations__KOI8_R.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__KOI8_R.st	Sat Jan 19 01:30:00 2013 +0000
@@ -13,7 +13,7 @@
 
 "{ NameSpace: CharacterEncoderImplementations }"
 
-CharacterEncoderImplementations::SingleByteEncoder subclass:#'KOI8_R'
+SingleByteEncoder subclass:#KOI8_R
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -858,9 +858,5 @@
 !KOI8_R class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__KOI8_R.st,v 1.4 2012/07/11 16:42:56 stefan Exp $'
-!
-
-version_SVN
-    ^ '$Id: CharacterEncoderImplementations__KOI8_R.st 10824 2012-07-18 16:55:48Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__KOI8_R.st,v 1.4 2012-07-11 16:42:56 stefan Exp $'
 ! !
--- a/CharacterEncoderImplementations__KOI8_U.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__KOI8_U.st	Sat Jan 19 01:30:00 2013 +0000
@@ -416,9 +416,5 @@
 !KOI8_U class methodsFor:'documentation'!
 
 version
-    ^ '$Id: CharacterEncoderImplementations__KOI8_U.st 10842 2012-09-07 10:49:18Z vranyj1 $'
-!
-
-version_SVN
-    ^ '$Id:: CharacterEncoderImplementations__KOI8_U.st 10842 2012-09-07 10:49:18Z vranyj1                                          $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__KOI8_U.st,v 1.4 2012-07-11 16:43:20 stefan Exp $'
 ! !
--- a/CharacterEncoderImplementations__MAC_Roman.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__MAC_Roman.st	Sat Jan 19 01:30:00 2013 +0000
@@ -965,12 +965,9 @@
 !MAC_Roman class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__MAC_Roman.st,v 1.4 2011/01/29 20:33:33 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__MAC_Roman.st,v 1.4 2011-01-29 20:33:33 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__MAC_Roman.st,v 1.4 2011/01/29 20:33:33 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__MAC_Roman.st,v 1.4 2011-01-29 20:33:33 cg Exp $'
 ! !
-
-
-
--- a/CharacterEncoderImplementations__MS_Ansi.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__MS_Ansi.st	Sat Jan 19 01:30:00 2013 +0000
@@ -612,8 +612,8 @@
     ^ aStringOrUnicodeString.
 ].
 
-    aStringOrUnicodeString bitsPerCharacter == 8 ifTrue:[
-        "/ all between 0 and FF
+    aStringOrUnicodeString isWideString ifFalse:[
+        "/ all between 0 and FF ?
         (aStringOrUnicodeString contains8BitCharacters) ifFalse:[
              ^ aStringOrUnicodeString
         ]
@@ -626,16 +626,9 @@
 !MS_Ansi class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__MS_Ansi.st,v 1.9 2012/07/12 12:48:10 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__MS_Ansi.st,v 1.10 2012-12-12 22:58:30 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__MS_Ansi.st,v 1.9 2012/07/12 12:48:10 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: CharacterEncoderImplementations__MS_Ansi.st 10824 2012-07-18 16:55:48Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__MS_Ansi.st,v 1.10 2012-12-12 22:58:30 stefan Exp $'
 ! !
-
-
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CharacterEncoderImplementations__SJIS.st	Sat Jan 19 01:30:00 2013 +0000
@@ -0,0 +1,347 @@
+"
+ COPYRIGHT (c) 2004 by eXept Software AG
+              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
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+"{ Package: 'stx:libbasic' }"
+
+"{ NameSpace: CharacterEncoderImplementations }"
+
+TwoByteEncoder subclass:#JIS0208_to_SJIS
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Collections-Text-Encodings'
+!
+
+!JIS0208_to_SJIS class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2004 by eXept Software AG
+              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
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+! !
+
+!JIS0208_to_SJIS class methodsFor:'mapping'!
+
+mapFileURL1_relativePathName
+    ^ 'OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT'
+! !
+
+!JIS0208_to_SJIS class methodsFor:'queries'!
+
+nameOfDecodedCode
+    "I encode sjis into jis"
+
+    ^ #'jis0208'
+! !
+
+!JIS0208_to_SJIS methodsFor:'encoding & decoding'!
+
+decodeString:aString
+    "return a new JIS-Encoded-String containing the characters from aString,
+     which are interpreted as Shift-JIS encoded singleByte chars.
+     Shift-JIS is a leadyByte code, with a variable-length encoding."
+
+    |newString char1 char2
+     sz         "{ Class: SmallInteger }"
+     dstIdx     "{ Class: SmallInteger }"
+     srcIdx     "{ Class: SmallInteger }"
+     b1         "{ Class: SmallInteger }"
+     b2         "{ Class: SmallInteger }"
+     val        "{ Class: SmallInteger }"
+     any16bit romans|
+
+    sz := aString size.
+    sz == 0 ifTrue:[^ aString].
+
+    newString := TwoByteString new:sz.
+    any16bit := false.
+    dstIdx := 1.
+    srcIdx := 1.
+
+    romans := CharacterEncoderImplementations::JIS0208 romanTable.
+
+%{
+    if (__isStringLike(aString)
+     && (__Class(newString) == @global(TwoByteString))) {
+        INT _dstIdx = 0, _srcIdx = 0;
+        int _sz = __intVal(sz);
+        unsigned char *_cp = __stringVal(aString);
+        unsigned char _c1, _c2;
+        unsigned short *_jcp = (unsigned short *)__stringVal(newString);
+
+        while (_srcIdx < _sz) {
+            int _val;
+
+            _c1 = _cp[_srcIdx];
+            _srcIdx++;
+
+            if ((_srcIdx < _sz)
+             && (((_c1 >= 129) && (_c1 <= 159))
+                 || ((_c1 >= 224) && (_c1 <= 239)))) {
+                _c2 = _cp[_srcIdx];
+                _srcIdx++;
+                if ((_c2 >= 64) && (_c2 <= 252)) {
+                    int _adjust, _rowOffs, _cellOffs;
+                    int _b1, _b2;
+
+                    _adjust = (_c2 < 159) ? 1 : 0;
+                    _rowOffs = (_c1 < 160) ? 112 : 176;
+                    if (_adjust) {
+                        _cellOffs = 31 + ((_c2 > 127) ? 1 : 0);
+                    } else {
+                        _cellOffs = 126;
+                    }
+                    _b1 = ((_c1 - _rowOffs) << 1) - _adjust;
+                    _b2 = (_c2 - _cellOffs);
+                    _val = (_b1<<8) + _b2;
+                    if (_val <= 0) {
+                        /* decoder error - let smalltalk handle that */
+                        _srcIdx -= 2;
+                        goto getOutOfHere;
+                    }
+                    if (_val > 0xFF) any16bit = true;
+                    _jcp[_dstIdx] = _val;
+                } else {
+                    /* mhmh - append untranslated */
+
+                    _jcp[_dstIdx] = _c1;
+                    _dstIdx++;
+                    _jcp[_dstIdx] = _c2;
+                }
+            } else {
+                if ((_c1 >= 0xA1 /* 161 */) && (_c1 <= 0xDF /* 223 */)) {
+                    /* HALFWIDTH KATAKANA
+                     * map half-width katakana to 8E:xx
+                     */
+                    _val = _c1 - 128;
+                    _val = _val + 0x8E00;
+                    any16bit = true;
+                    _jcp[_dstIdx] = _val;
+                } else {
+                    /* roman characters are translated as per romanTable */
+                    _jcp[_dstIdx] = _c1;
+                    if ((romans != nil) 
+                     && (__isArray(romans))
+                     && ((_c1 - 0x20) < __arraySize(romans))) {
+                        any16bit = true;
+                        _jcp[_dstIdx] = __intVal(__ArrayInstPtr(romans)->a_element[(_c1 - 0x20)]);
+                    }
+                }
+            }
+            _dstIdx++;
+        }
+    getOutOfHere: ;
+        dstIdx = __mkSmallInteger(_dstIdx+1);
+        srcIdx = __mkSmallInteger(_srcIdx+1);
+    }
+%}.
+
+    [srcIdx <= sz] whileTrue:[
+        "/
+        "/ scan for next character in 129..159 or 224..239
+        "/
+        char1 := aString at:srcIdx.
+        srcIdx := srcIdx + 1.
+        b1 := char1 codePoint.
+
+        ((srcIdx <= sz) 
+        and:[(b1 >= 16r81"129" and:[b1 <= 16r9F"159"])                 "/ SJIS1 81 .. 9F
+             or:[b1 >= 16rE0"224" and:[b1 <= 16rEF"239"]]]) ifTrue:[   "/       E0 .. EF
+            char2 := aString at:srcIdx.
+            srcIdx := srcIdx + 1.
+            b2 := char2 codePoint.
+            (b2 >= 16r40"64" and:[b2 <= 16rFC"252"]) ifTrue:[          "/ SJIS2 40 .. FC
+                |adjust rowOffs cellOffs|
+
+                adjust := (b2 < 16r9F"159") ifTrue:[1] ifFalse:[0].
+                rowOffs := b1 < 16rA0"160" ifTrue:[112] ifFalse:[176].
+                adjust == 1 ifTrue:[
+                    cellOffs := 31 + (b2 > 127 ifTrue:[1] ifFalse:[0]).
+                ] ifFalse:[
+                    cellOffs := 126.
+                ].
+                b1 := ((b1 - rowOffs) bitShift:1) - adjust.
+                b2 := (b2 - cellOffs).
+                val := (b1 bitShift:8) + b2.
+                val <= 0 ifTrue:[
+                    DecodingError
+                            raiseWith:aString
+                            errorString:'SJIS decoding failed (not SJIS encoded ?)'.
+                    newString at:dstIdx put:char1.
+                    dstIdx := dstIdx + 1.
+                    newString at:dstIdx put:char2.
+                ] ifFalse:[
+                    val > 16rFF ifTrue:[any16bit := true].
+                    newString at:dstIdx put:(Character value:val).
+                ]
+            ] ifFalse:[
+                "/ mhmh - append untranslated
+
+                newString at:dstIdx put:char1.
+                dstIdx := dstIdx + 1.
+                newString at:dstIdx put:char2.
+            ]
+        ] ifFalse:[    
+            (b1 >= 16rA1 "161" and:[b1 <= 16rDF "223"]) ifTrue:[     "/ HALFWIDTH KATAKANA
+                "/ map half-width katakan to 8E:xx
+                val := b1 - 128.
+                val := val + (16r8E"142" bitShift:8).
+                any16bit := true.
+                newString at:dstIdx put:(Character value:val).
+            ] ifFalse:[    
+                "/ roman characters translated as per romanTable
+                newString at:dstIdx put:char1
+                romans isArray ifTrue:[
+                    char1 codePoint < romans size ifTrue:[
+                        any16bit := true.
+                        newString at:dstIdx put:(Character value:(romans at:char1 codePoint-32+1)).
+                    ]
+                ]
+            ]
+        ].
+        dstIdx := dstIdx + 1.
+    ].
+    any16bit ifFalse:[
+        newString := String fromString:newString 
+    ].
+
+    (dstIdx-1) ~~ sz ifTrue:[
+        newString := newString copyTo:dstIdx - 1.
+    ].
+
+    ^ newString
+
+    "simple:
+
+     CharacterEncoderImplementations::JIS0208_to_SJIS decodeString:'hello'  
+     (CharacterEncoder encoderFor:#sjis) decodeString:'hello'         
+
+     CharacterEncoderImplementations::JIS0208_to_SJIS decodeString:('../../doc/online/japanese/TOP.html' asFilename contents asString)  
+
+     '../../doc/online/japanese/TOP.html' asFilename contents asString
+                decodeFrom:#sjis  
+    "
+!
+
+encodeString:aJISString
+    "return a new string with aJISStrings characters as SJIS encoded 8bit string.
+     The resulting string is only useful to be stored on some external file,
+     not for being displayed in an ST/X view."
+
+    |sz "{ Class: SmallInteger }"
+     rval "{ Class: SmallInteger }"
+     val  "{ Class: SmallInteger }"
+     romans c out isSJIS|
+
+    romans := JIS0208 romanTable.
+
+    sz := aJISString size.
+    sz == 0 ifTrue:[^ ''].
+
+    out := WriteStream on:(String new:(sz * 2)).
+
+    1 to:sz do:[:srcIndex |
+        val := (c := aJISString at:srcIndex) codePoint.
+        (val <= 128) ifTrue:[
+            "/ a control or ascii character    
+            out nextPut:c.
+        ] ifFalse:[
+            (val == 16rFFFF "invalid-char") ifTrue:[
+                out nextPut:Character space.
+            ] ifFalse:[
+                (val > 150 and:[val < 224]) ifTrue:[
+                    "/ ascii subset
+                    out nextPut:c.
+                ] ifFalse:[
+                    "/ should not happen ...
+                    val <= 255 ifTrue:[
+                        out nextPut:c.
+                    ] ifFalse:[
+                        isSJIS := true.
+
+                        "/ check for HALFWIDTH KATAKANA
+                        "/ 8E:xx
+                        "/ NO: halfwidth katakana no longer generated
+                        "/     remains there as full-width katakana
+
+"/                        (val bitAnd:16rFF00) == 16r8E00 ifTrue:[
+"/                            |b|
+"/
+"/                            b := (val bitAnd:16rFF) + 128.
+"/                            (b >= 16rA1 "161" and:[b <= 16rDF "223"]) ifTrue:[
+"/                                out nextPut:(Character value:b).
+"/                                isSJIS := false.
+"/                            ].
+"/                        ].
+
+                        isSJIS ifTrue:[
+                            "/ check for a roman character
+                            (val between:"romanTable min" 16r2121 and:"romanTable max" 16r2573) ifTrue:[
+                                rval := romans indexOf:val.
+                                rval ~~ 0 ifTrue:[
+                                    rval := rval - 1 + 32.
+                                    rval <= 16r7F ifTrue:[ "/ do not translate halfwidth katakana
+                                        out nextPut:(Character value:rval).
+                                        isSJIS := false.
+                                    ]
+                                ].
+                            ].
+                        ].
+
+                        isSJIS ifTrue:[
+                            |b1 b2 rowOffset cellOffset|
+
+                            b1 := (val bitShift:-8).
+                            b2 := (val bitAnd:16rFF).
+                            rowOffset := (b1 < 95) ifTrue:[112] ifFalse:[176].
+                            cellOffset := b1 odd ifTrue:[(b2 > 95) ifTrue:[32] ifFalse:[31]]
+                                                 ifFalse:[126].
+
+                            out nextPut:(Character value:(((b1 + 1) bitShift:-1) + rowOffset)).
+                            out nextPut:(Character value:b2 + cellOffset).
+                        ]
+                    ]
+                ]
+            ]
+        ].
+    ].
+    ^ out contents
+! !
+
+!JIS0208_to_SJIS methodsFor:'private'!
+
+newString:size
+    ^ JISEncodedString new:size
+! !
+
+!JIS0208_to_SJIS methodsFor:'queries'!
+
+nameOfEncoding
+    ^ #'sjis'
+! !
+
+!JIS0208_to_SJIS class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__SJIS.st,v 1.12 2009-11-05 16:26:27 stefan Exp $'
+!
+
+version_CVS
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__SJIS.st,v 1.12 2009-11-05 16:26:27 stefan Exp $'
+! !
--- a/CharacterEncoderImplementations__SingleByteEncoder.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__SingleByteEncoder.st	Sat Jan 19 01:30:00 2013 +0000
@@ -73,16 +73,9 @@
 !SingleByteEncoder class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__SingleByteEncoder.st,v 1.9 2009/12/11 16:54:15 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__SingleByteEncoder.st,v 1.9 2009-12-11 16:54:15 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__SingleByteEncoder.st,v 1.9 2009/12/11 16:54:15 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: CharacterEncoderImplementations__SingleByteEncoder.st 10807 2012-05-05 21:58:24Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__SingleByteEncoder.st,v 1.9 2009-12-11 16:54:15 cg Exp $'
 ! !
-
-
-
--- a/CharacterEncoderImplementations__TwoByteEncoder.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterEncoderImplementations__TwoByteEncoder.st	Sat Jan 19 01:30:00 2013 +0000
@@ -79,16 +79,9 @@
 !TwoByteEncoder class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__TwoByteEncoder.st,v 1.6 2009/11/04 00:47:35 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__TwoByteEncoder.st,v 1.6 2009-11-04 00:47:35 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__TwoByteEncoder.st,v 1.6 2009/11/04 00:47:35 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: CharacterEncoderImplementations__TwoByteEncoder.st 10807 2012-05-05 21:58:24Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__TwoByteEncoder.st,v 1.6 2009-11-04 00:47:35 cg Exp $'
 ! !
-
-
-
--- a/CharacterWriteStream.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CharacterWriteStream.st	Sat Jan 19 01:30:00 2013 +0000
@@ -68,6 +68,17 @@
 "
 ! !
 
+!CharacterWriteStream methodsFor:'accessing'!
+
+reset
+    "reset the stream; write anew.
+     See the comment in WriteStream>>contents"
+
+    collection := String new:collection size.
+    currentCharacterSize := collection bitsPerCharacter.
+    super resetPosition.
+! !
+
 !CharacterWriteStream methodsFor:'private'!
 
 characterSizeChanged:aCharacterOrString
@@ -240,16 +251,10 @@
 !CharacterWriteStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterWriteStream.st,v 1.9 2009/10/05 09:20:25 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterWriteStream.st,v 1.10 2012-12-18 21:35:06 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/CharacterWriteStream.st,v 1.9 2009/10/05 09:20:25 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: CharacterWriteStream.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterWriteStream.st,v 1.10 2012-12-18 21:35:06 stefan Exp $'
 ! !
 
-
-
--- a/Class.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Class.st	Sat Jan 19 01:30:00 2013 +0000
@@ -30,7 +30,8 @@
 
 Object subclass:#ClassAttributes
 	instanceVariableNames:'primitiveDefinitions primitiveVariables primitiveFunctions
-		sharedPools traitComposition localSelectors vGuid fGuid'
+		sharedPools traitComposition localSelectors vGuid fGuid
+		projectDirectory'
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Class
@@ -343,10 +344,10 @@
     "/ care for standAlone apps which have no CVS (libbasic3) included
     "/
     mgr isNil ifTrue:[
-	AbstractSourceCodeManager notNil ifTrue:[
-	    ^ CVSVersionInfo fromRCSString:aString
-	].
-	^ nil
+        AbstractSourceCodeManager notNil ifTrue:[
+            ^ CVSVersionInfo fromRCSString:aString 
+        ].
+        ^ nil
     ].
     ^ mgr revisionInfoFromString:aString.
 
@@ -363,26 +364,25 @@
 
     lines := aMethodSourceString asCollectionOfLines.
     lines do:[:l |
-        |i|
-
-        i := l indexOfSubCollection:'$Header: '.
-        "JV @ 2009-12-13: Also search for '$Id: ' (because of SVN-only classes)"
-        i == 0 ifTrue:[
-        i := l indexOfSubCollection:'$Id:'].
-        i ~~ 0 ifTrue:[
-            line := l copyFrom:i.
-            i := line lastIndexOf:$$.
-            i > 1 ifTrue:[
-                line := line copyTo:i.
-            ].
-            ^ line
-        ]
+	|i|
+
+	i := l indexOfSubCollection:'$Header: '.
+	"JV @ 2009-12-13: Also search for '$Id: ' (because of SVN-only classes)"
+	i == 0 ifTrue:[
+	i := l indexOfSubCollection:'$Id: '].
+	i ~~ 0 ifTrue:[
+	    line := l copyFrom:i.
+	    i := line lastIndexOf:$$.
+	    i > 1 ifTrue:[
+		line := line copyTo:i.
+	    ].
+	    ^ line
+	]
     ].
     ^ nil
 
     "Created: / 15-10-1996 / 18:57:57 / cg"
     "Modified: / 22-10-2008 / 20:29:50 / cg"
-    "Modified: / 29-03-2012 / 21:37:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !Class class methodsFor:'misc'!
@@ -448,8 +448,6 @@
 ! !
 
 
-
-
 !Class methodsFor:'Compatibility-Dolphin'!
 
 defaultCategoryForDolphinClasses
@@ -1055,7 +1053,7 @@
 !
 
 package
-    "return the package-ID-Symbol of the class."
+    "return the package-symbol of the class."
 
     |owner|
 
@@ -1071,21 +1069,21 @@
 !
 
 package:aSymbol
-    "set the package-ID.Symbol of the class."
+    "set the package-symbol of the class."
 
     |newPackage oldPackage|
 
     aSymbol == PackageId noProjectID ifTrue:[
-	newPackage := nil
+        newPackage := nil
     ] ifFalse:[
-	newPackage := aSymbol
+        newPackage := aSymbol
     ].
     package ~= newPackage ifTrue:[
-	oldPackage := package.
-	package := newPackage.
-
-	self changed:#package.
-	Smalltalk changed:#projectOrganization with:(Array with:self with:oldPackage).
+        oldPackage := package.
+        package := newPackage.
+
+        self changed:#package.
+        Smalltalk changed:#projectOrganization with:(Array with:self with:oldPackage).
     ].
 
     "Modified: / 09-08-2006 / 17:58:53 / fm"
@@ -1302,7 +1300,7 @@
     "return a collection of my direct private classes (if any)
      or direct plus indirect private classes (if allOfThem).
      An empty collection if there are none.
-     The classes are in any order."
+     The classes are in no particular order."
 
     |classes myName myNamePrefix myNamePrefixLen|
 
@@ -1335,7 +1333,8 @@
      UILayoutTool privateClassesOrAll:false
     "
 
-    "Modified: / 29.5.1998 / 23:23:18 / cg"
+    "Modified: / 29-05-1998 / 23:23:18 / cg"
+    "Modified (comment): / 18-07-2011 / 09:15:39 / cg"
 !
 
 privateClassesSorted
@@ -1415,14 +1414,14 @@
 
     poolNames := self sharedPoolNames.
     (ns := self topNameSpace) notNil ifTrue:[
-	^ poolNames
-		collect:[:nm |
-		    |p|
-		    (p := ns at:nm asSymbol) notNil ifTrue:[
-			p name
-		    ] ifFalse:[
-			nm
-		    ]].
+        ^ poolNames
+                collect:[:nm |
+                    |p|
+                    (p := ns at:nm asSymbol) notNil ifTrue:[
+                        p name
+                    ] ifFalse:[
+                        nm
+                    ]].
     ].
     ^ poolNames
 
@@ -1633,7 +1632,7 @@
     "
      Croquet::OpenGL sharedPools
      OpenGLRenderingContext sharedPools
-     Character sharedPools
+     Character sharedPools           
      Win32OperatingSystem sharedPools
     "
 
@@ -1647,18 +1646,18 @@
 
     "/ for backward compatibility..
     aCollection isString ifTrue:[
-	Transcript showCR:'warning: string passed to sharedPools:'.
-	self sharedPoolNames:(aCollection asCollectionOfWords collect:[:each | each asSymbol]).
-	^ self.
+        Transcript showCR:'warning: string passed to sharedPools:'.
+        self sharedPoolNames:(aCollection asCollectionOfWords collect:[:each | each asSymbol]).
+        ^ self.
     ].
     self sharedPoolNames:
-	(aCollection
-	    collect:[:each |
-		each isString
-		    ifTrue:[ each asSymbol ]
-		    ifFalse:[ each name ]
-	    ]
-	).
+        (aCollection 
+            collect:[:each | 
+                each isString 
+                    ifTrue:[ each asSymbol ] 
+                    ifFalse:[ each name ]
+            ]
+        ).
 
     "Modified: / 03-10-2011 / 10:30:30 / cg"
 !
@@ -1848,10 +1847,22 @@
     ]
 
     "Modified: / 20.6.1998 / 18:17:37 / cg"
+!
+
+withAllPrivateClasses
+    "return a collection containing the receiver plus all of my private classes (if any).
+     This also inclueds all private classes of private classes, recursively.
+     Elements are in no particular order."
+
+    |coll|
+
+    coll := OrderedCollection new.
+    self withAllPrivateClassesDo:[:cls | coll add:cls].
+    ^ coll
+
+    "Created: / 18-07-2011 / 09:14:38 / cg"
 ! !
 
-
-
 !Class methodsFor:'adding & removing'!
 
 removeFromSystem
@@ -1947,15 +1958,15 @@
 
     "add a category change"
 
-    Class updateChangeFileQuerySignal query ifTrue:[
-	self writingChangePerform:#addChangeRecordForChangeCategory:to: with:category.
+    UpdateChangeFileQuerySignal query ifTrue:[
+        self writingChangePerform:#addChangeRecordForChangeCategory:to: with:category.
     ].
 
     "this test allows a smalltalk without Projects/ChangeSets"
     Project notNil ifTrue:[
-	UpdateChangeListQuerySignal query ifTrue:[
-	    Project addClassDefinitionChangeFor:self
-	]
+        UpdateChangeListQuerySignal query ifTrue:[
+            Project addClassDefinitionChangeFor:self
+        ]
     ]
 !
 
@@ -2634,13 +2645,14 @@
     self printClassNameOn:aStream.
     aStream nextPutAll:' comment:'.
     (comment := self comment) isNil ifTrue:[
-	s := ''''''
+        s := ''''''
     ] ifFalse:[
-	s := comment storeString
+        s := comment storeString
     ].
     aStream nextPutAllAsChunk:s.
     aStream nextPutChunkSeparator.
-    aStream cr
+    aStream cr.
+    aStream cr.
 
     "Modified: 21.12.1996 / 13:36:01 / cg"
 !
@@ -2746,16 +2758,14 @@
 
     |encoder any16Bit|
 
-    any16Bit := false.
-    self withAllPrivateClassesDo:[:cls |
-        cls instAndClassMethods contains:
-            [:m |
-                | src |
-
-                src := m source ? ''.
-                any16Bit := any16Bit or:[src contains:[:ch | ch codePoint > 16rFF]]
-            ]
-    ].
+    any16Bit := self withAllPrivateClasses contains:[:cls |
+                 cls instAndClassMethods contains:
+                    [:m |
+                        |src|
+
+                        src := m source.
+                        src notNil and:[src isWideString]
+                    ]].
 
     any16Bit ifTrue:[
         encoder := CharacterEncoder encoderForUTF8.
@@ -2768,7 +2778,7 @@
         methodFilter:methodFilter
         encoder:encoder
 
-    "Modified: / 01-11-2011 / 13:59:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-07-2011 / 09:17:17 / cg"
 !
 
 fileOutOn:outStreamArg withTimeStamp:stampIt withInitialize:initIt withDefinition:withDefinition methodFilter:methodFilter encoder:encoderOrNil
@@ -2820,6 +2830,23 @@
     "Modified: 8.1.1997 / 17:45:40 / cg"
 !
 
+fileOutPrimitiveFunctionsOn:aStream
+    |s|
+
+    "
+     primitive functions - if any
+    "
+    (s := self primitiveFunctionsString) notNil ifTrue:[
+        aStream nextPutChunkSeparator.
+        self printClassNameOn:aStream.
+        aStream nextPutAll:' primitiveFunctions';
+                nextPutChunkSeparator;
+                cr.
+        aStream nextPutAll:s.
+        aStream nextPutChunkSeparator; space; nextPutChunkSeparator; cr; cr
+    ].
+!
+
 fileOutPrimitiveSpecsOn:aStream
     "append primitive defs (if any) to aStream."
 
@@ -2833,13 +2860,7 @@
      primitive functions - if any
     "
     (s := self primitiveFunctionsString) notNil ifTrue:[
-	aStream nextPutChunkSeparator.
-	self printClassNameOn:aStream.
-	aStream nextPutAll:' primitiveFunctions';
-		nextPutChunkSeparator;
-		cr.
-	aStream nextPutAll:s.
-	aStream nextPutChunkSeparator; space; nextPutChunkSeparator; cr; cr
+        self fileOutPrimitiveFunctionsOn:aStream
     ].
 
     "Modified: 8.1.1997 / 17:45:51 / cg"
@@ -3286,7 +3307,6 @@
     "
 ! !
 
-
 !Class methodsFor:'printOut'!
 
 htmlDocumentation
@@ -5193,14 +5213,14 @@
      versionFromCode versionFromSource oldPos pos src rev|
 
     ValidateSourceOnlyOnce == true ifTrue:[
-        ValidatedClasses notNil ifTrue:[
-            (ValidatedClasses includes:self) ifTrue:[
-                Transcript showCR:'trust validated'.
-                ^ true
-            ].
-        ] ifFalse:[
-            ValidatedClasses := WeakIdentitySet new.
-        ].
+	ValidatedClasses notNil ifTrue:[
+	    (ValidatedClasses includes:self) ifTrue:[
+		Transcript showCR:'trust validated'.
+		^ true
+	    ].
+	] ifFalse:[
+	    ValidatedClasses := WeakIdentitySet new.
+	].
     ].
 
     meta := self theMetaclass.
@@ -5210,86 +5230,80 @@
 
     versionMethod := self findVersionMethod.
     versionMethod isNil ifTrue:[
-        cannotCheckReason := 'no valid version method'.
+	cannotCheckReason := 'no valid version method'.
     ] ifFalse:[
-        "/
-        "/ if its a method returning the string,
-        "/ thats the returned value
-        "/
-        versionFromCode := versionMethod valueWithReceiver:cls arguments:#().
-        versionFromCode isString ifFalse:[
-            cannotCheckReason := 'version method does not return a string'
-        ].
+	"/
+	"/ if its a method returning the string,
+	"/ thats the returned value
+	"/
+	versionFromCode := versionMethod valueWithReceiver:cls arguments:#().
+	versionFromCode isString ifFalse:[
+	    cannotCheckReason := 'version method does not return a string'
+	].
     ].
 
     versionMethod notNil ifTrue:[
-        pos := versionMethod sourcePosition.
-        pos isInteger ifFalse:[
-            "/ mhmh - either no version method,
-            "/ or updated due to a checkin.
-            "/ in any case, this should be a good source.
-
-            ^ true.
-            "/ cannotCheckReason := 'no source position for version-method'
-        ]
+	pos := versionMethod sourcePosition.
+	pos isInteger ifFalse:[
+	    "/ mhmh - either no version method,
+	    "/ or updated due to a checkin.
+	    "/ in any case, this should be a good source.
+
+	    ^ true.
+	    "/ cannotCheckReason := 'no source position for version-method'
+	]
     ].
 
     cannotCheckReason notNil ifTrue:[
-        ('Class [warning]: ' , cannotCheckReason , ' in ' , self name) infoPrintCR.
-        'Class [info]: cannot validate source; trusting source' infoPrintCR.
-        ^ true
+	('Class [warning]: ' , cannotCheckReason , ' in ' , self name) infoPrintCR.
+	'Class [info]: cannot validate source; trusting source' infoPrintCR.
+	^ true
     ].
 
     oldPos := aStream position.
     Stream positionErrorSignal handle:[:ex |
-        'Class [info]: position error when accessing source' infoPrintCR.
-        self breakPoint: #jv.
-        ^ false
+	'Class [info]: position error when accessing source' infoPrintCR.
+	^ false
     ] do:[
-        aStream position1Based:pos.
+	aStream position1Based:pos.
     ].
     src := aStream nextChunk.
     aStream position:oldPos.
 
     (src isEmptyOrNil) ifTrue:[
-        'Class [info]: empty source for version-method' infoPrintCR.
-        self breakPoint: #jv.
-        ^ false
+	'Class [info]: empty source for version-method' infoPrintCR.
+	^ false
     ].
     (src startsWith:'version') ifFalse:[
-        'Class [info]: corrupted source (source does not correspond to binary)' infoPrintCR.
-        self breakPoint: #jv.            
-        ^ false
+	'Class [info]: corrupted source (source does not correspond to binary)' infoPrintCR.
+	^ false
     ].
 
     versionFromSource := Class revisionStringFromSource:src.
     versionFromSource = versionFromCode ifTrue:[
-        ValidatedClasses notNil ifTrue:[ ValidatedClasses add:self ].
-        ^ true
+	ValidatedClasses notNil ifTrue:[ ValidatedClasses add:self ].
+	^ true
     ].
 
     versionFromSource isNil ifTrue:[
-        'Class [info]: version-from source is nil' infoPrintCR.
-        self breakPoint: #jv.
-        ^ false
+	'Class [info]: version-from source is nil' infoPrintCR.
+	^ false
     ].
 
     "/ mhmh - check my binary version ...
 
     info := Class revisionInfoFromString:versionFromSource.
     info notNil ifTrue:[
-        rev := info at:#revision.
-        rev = self binaryRevision ifTrue:[
-            ValidatedClasses notNil ifTrue:[ ValidatedClasses add:self ].
-            ^ true
-        ].
+	rev := info at:#revision.
+	rev = self binaryRevision ifTrue:[
+	    ValidatedClasses notNil ifTrue:[ ValidatedClasses add:self ].
+	    ^ true
+	].
     ].
     'Class [info]: source-version is different from binaryRevision' infoPrintCR.
-    self breakPoint: #jv.
     ^ false
 
     "Modified: / 29-09-2011 / 14:29:55 / cg"
-    "Modified: / 02-11-2011 / 21:02:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 versionMethodTemplateForSourceCodeManager:aSourceCodeManager
@@ -5374,6 +5388,14 @@
     primitiveVariables := something.
 !
 
+projectDirectory
+    ^ projectDirectory
+!
+
+projectDirectory:something
+    projectDirectory := something.
+!
+
 sharedPools
     ^ sharedPools
 !
@@ -5560,13 +5582,14 @@
 !Class class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Class.st 10842 2012-09-07 10:49:18Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.612 2012-12-21 18:42:10 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Class.st,v 1.607 2012/07/22 09:10:54 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.612 2012-12-21 18:42:10 stefan Exp $'
 !
 
 version_SVN
-    ^ '$Id:: Class.st 10842 2012-09-07 10:49:18Z vranyj1                                                                            $'
+    ^ '§ Id: Class.st 10643 2011-06-08 21:53:07Z vranyj1  §'
 ! !
+
--- a/ClassBuildError.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ClassBuildError.st	Sat Jan 19 01:30:00 2013 +0000
@@ -37,16 +37,9 @@
 !ClassBuildError class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ClassBuildError.st,v 1.2 2009/09/29 19:32:30 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ClassBuildError.st,v 1.2 2009-09-29 19:32:30 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ClassBuildError.st,v 1.2 2009/09/29 19:32:30 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: ClassBuildError.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ClassBuildError.st,v 1.2 2009-09-29 19:32:30 cg Exp $'
 ! !
-
-
-
--- a/ClassBuilder.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ClassBuilder.st	Sat Jan 19 01:30:00 2013 +0000
@@ -284,19 +284,7 @@
 
     |privateClassNames|
 
-    "JV@2012-10-31: Caching disable as it sometimes does not
-     work. I dunno why - looks like synchronization problem
-     or something. If I put breakpoint here, it works. If I don't
-     it doesn't.
-
-     Temporarily disabled to allow expecco a CellStore development,
-
-     !!!!!! SHOULD NOT BE MERGED TO UPSTREAM !!!!!!    
-
-    "
-
-"/    aNamespace name = LastNamespaceName ifTrue:[
-    false ifTrue:[
+    aNamespace name = LastNamespaceName ifTrue:[
         privateClassNames := LastClassNamesInNameSpace
     ] ifFalse:[
         privateClassNames := aNamespace allPrivateClasses 
@@ -333,7 +321,6 @@
     ].
 
     "Modified: / 24-08-2011 / 13:32:22 / cg"
-    "Modified: / 31-10-2012 / 17:23:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 recompileMachineCodeMethodsIn:aClass
@@ -2043,20 +2030,7 @@
     superClass isNil ifTrue:[
         superFlags := 0
     ] ifFalse:[
-        | flags |
-
-        "JV@2012-09-07: Certain classes define class method #flags which
-         returns something different than behavior's flag bits.
-         Obtaing superclass's flags by
-
-            superClass flags
-
-          won't then work as expected. Ask JV for details
-
-          Hence this hack :-(
-         "
-        flags := (Behavior compiledMethodAt: #flags) valueWithReceiver: superClass arguments: #().
-        superFlags := flags bitAnd:(Behavior maskIndexType bitInvert). "preserve other bits"
+        superFlags := superClass flags bitAnd:(Behavior maskIndexType bitInvert). "preserve other bits"
     ].
 
     oldClass notNil ifTrue:[
@@ -2075,7 +2049,6 @@
     ].
     oldClass notNil ifTrue:[
         "/ setting first will make new class clear obsolete classvars
-        newClass setLookupObject: (oldClass lookupObject).
         newClass setClassVariableString:(oldClass classVariableString).
         newClass setSharedPoolNames:(oldClass sharedPoolNames).
         newClass setClassFilename:(oldClass getClassFilename).
@@ -2086,7 +2059,6 @@
     newClass setClassVariableString:classVariableNames.
 
     "Modified: / 18-01-2011 / 20:44:04 / cg"
-    "Modified: / 07-09-2012 / 13:44:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ClassBuilder methodsFor:'checks'!
@@ -2376,10 +2348,10 @@
         conflicts := classVarNames intersect:privateClassNames.
         conflicts notEmpty ifTrue:[
             conflicts size == 1 ifTrue:[
-                self warn:('Class variable "%1"\conflicts with corresponding private classes name.'
+                self warn:('Class variable "%1"\conflicts with corresponding private classes name.\The name will refer to the class variable.'
                             bindWith:conflicts first) withCRs.
             ] ifFalse:[
-                self warn:('Some class variables conflict with corresponding private classes name.').
+                self warn:('Some class variables conflict with corresponding private classes name.\Names will refer to the class variable.').
             ].
             ^ true.
         ]
@@ -2387,22 +2359,18 @@
 
     ^ true
 
-    "Created: 8.1.1997 / 21:09:14 / cg"
-    "Modified: 9.1.1997 / 02:10:02 / cg"
+    "Created: / 08-01-1997 / 21:09:14 / cg"
+    "Modified: / 11-05-2012 / 09:26:27 / cg"
 ! !
 
 !ClassBuilder class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ClassBuilder.st 10859 2012-10-31 17:41:30Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ClassBuilder.st,v 1.117 2012-10-25 12:15:54 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ClassBuilder.st,v 1.117 2012/10/25 12:15:54 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: ClassBuilder.st 10859 2012-10-31 17:41:30Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ClassBuilder.st,v 1.117 2012-10-25 12:15:54 cg Exp $'
 ! !
 
 ClassBuilder initialize!
--- a/ClassCategoryReader.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ClassCategoryReader.st	Sat Jan 19 01:30:00 2013 +0000
@@ -169,7 +169,7 @@
 !ClassCategoryReader class methodsFor:'others'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ClassCategoryReader.st,v 1.53 2011/07/31 07:30:26 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/ClassCategoryReader.st,v 1.53 2011-07-31 07:30:26 cg Exp $'
 ! !
 
 !ClassCategoryReader methodsFor:'fileIn'!
@@ -326,23 +326,14 @@
                     (compiler respondsTo:#compile:forClass:inCategory:notifying:install:skipIfSame:silent:)
                     ifTrue:[
                         "/ ST/X's compiler
-
-                         "JV@2012-10-31: Here, we don't want to correct nor define
-                          undeclared variable, When a code is loaded from a Workspace,
-                          all not-yet-loaded classes in namespace would become
-                          Workspace variables which is wrong!!"
-                        [
-                            method := compiler
-                                         compile:aString
-                                         forClass:myClass
-                                         inCategory:myCategory
-                                         notifying:requestor
-                                         install:true
-                                         skipIfSame:SkipUnchangedMethods
-                                         silent:silent.
-                        ] on: Parser undefinedVariableNotification do:[:ex|
-                            ex proceedWith: false "No, do not correct!!"
-                        ].
+                        method := compiler
+                                     compile:aString
+                                     forClass:myClass
+                                     inCategory:myCategory
+                                     notifying:requestor
+                                     install:true
+                                     skipIfSame:SkipUnchangedMethods
+                                     silent:silent.
 
                         (method notNil and:[method ~~ #Error]) ifTrue:[
                             canMakeSourceRef ifTrue:[
@@ -390,8 +381,6 @@
     "Modified: / 23-01-1998 / 15:25:01 / stefan"
     "Created: / 17-05-1998 / 19:56:32 / cg"
     "Modified: / 31-07-2011 / 09:30:07 / cg"
-    "Modified: / 26-10-2012 / 12:55:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 31-10-2012 / 18:10:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 fileInFrom:aStream silent:beSilent
@@ -451,11 +440,7 @@
 !ClassCategoryReader class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ClassCategoryReader.st 10861 2012-10-31 18:09:01Z vranyj1 $'
-!
-
-version_SVN
-    ^ '$Id: ClassCategoryReader.st 10861 2012-10-31 18:09:01Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ClassCategoryReader.st,v 1.53 2011-07-31 07:30:26 cg Exp $'
 ! !
 
 ClassCategoryReader initialize!
--- a/ClassDescription.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ClassDescription.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1847,6 +1847,9 @@
         mustCompile := nil.
 
         source := aMethod source.
+        source isNil ifTrue:[
+            self error:('Cannot recompile, source is missing for ', aMethod displayString).    
+        ].
 
         "/ avoid parsing, if possible
         superBoolean ifFalse:[
@@ -2479,7 +2482,27 @@
 
 !ClassDescription methodsFor:'misc'!
 
- !
+iconInBrowserForVariableNamed: varName
+    "variables for which an entry is found in the xml-spec (if any) are marked
+     with an <xml>-icon. 
+     For now, this is expecco-specific, but should be somehow lifted to the base system"
+
+    (Expecco::ExpeccoXMLDecoder notNil 
+    and:[self canUnderstand: #xmlSpecFor:]) ifTrue:[
+        Error handle:[:ex |
+        ] do:[
+            (Expecco::ExpeccoXMLDecoder xmlSpecForObject:self basicNew)
+                do:[:spec | spec getter = varName ifTrue:[
+                                ^ SystemBrowser instVarOverlayXmlSpec
+                            ]
+                ].
+        ].
+    ].
+    ^ nil
+
+    "Created: / 12-04-2011 / 16:04:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 13-07-2011 / 15:31:38 / cg"
+! !
 
 !ClassDescription methodsFor:'printOut'!
 
@@ -2721,7 +2744,7 @@
 !
 
 printOutCategory:aCategory on:aPrintStream
-    "print out all methods in aCategory on aPrintStream, which should be understanf emphasis"
+    "print out all methods in aCategory on aPrintStream, which should understand emphasis"
 
     |interestingMethods|
 
@@ -2732,8 +2755,10 @@
         aPrintStream normal.
         aPrintStream cr; cr.
         interestingMethods do:[:aMethod |
-            self printOutSource:(aMethod source) on:aPrintStream.
-            aPrintStream cr; cr
+            aMethod source notEmptyOrNil ifTrue:[
+                self printOutSource:(aMethod source) on:aPrintStream.
+                aPrintStream cr; cr.
+            ].
         ].
         aPrintStream cr
     ]
@@ -2807,7 +2832,7 @@
             nextPutAll:self owningClass name;
             nextPut:$).
     ] ifFalse:[
-        aGCOrStream nextPutAll:self name.
+        aGCOrStream nextPutAll:self name ? '*unnamed*'.
     ].
 
     cat := self category.
@@ -3101,16 +3126,17 @@
 
     |source comment|
 
-    source := aMethod source asStringCollection.
-    (source size < 1) ifTrue:[^self].
+    source := aMethod source.
+    source isEmptyOrNil ifTrue:[^self].
+    source := source asStringCollection.
     aPrintStream bold.
     aPrintStream nextPutLine:(source at:1).
     (source size >= 2) ifTrue:[
-	(comment := aMethod comment) notNil ifTrue:[
-	    aPrintStream italic.
-	    aPrintStream spaces:((source at:2) indexOfNonSeparatorStartingAt:1).
-	    aPrintStream nextPutLine:comment.
-	]
+        (comment := aMethod comment) notNil ifTrue:[
+            aPrintStream italic.
+            aPrintStream spaces:((source at:2) indexOfNonSeparatorStartingAt:1).
+            aPrintStream nextPutLine:comment.
+        ]
     ].
     aPrintStream normal
 
@@ -4203,17 +4229,14 @@
 !ClassDescription class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ClassDescription.st,v 1.227 2012/11/08 00:17:13 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ClassDescription.st,v 1.230 2013-01-03 09:20:11 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ClassDescription.st,v 1.227 2012/11/08 00:17:13 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: ClassDescription.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ClassDescription.st,v 1.230 2013-01-03 09:20:11 cg Exp $'
 ! !
 
-ClassDescription::MethodRedefinitionNotification initialize!
+
 ClassDescription initialize!
+ClassDescription::MethodRedefinitionNotification initialize!
 ClassDescription::ClassRedefinitionNotification initialize!
--- a/CmdLineOption.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CmdLineOption.st	Sat Jan 19 01:30:00 2013 +0000
@@ -138,10 +138,9 @@
 !CmdLineOption class methodsFor:'documentation'!
 
 version
-    ^'$Header: /cvs/stx/stx/libbasic/CmdLineOption.st,v 1.3 2012/01/13 10:58:29 vrany Exp $'
+    ^'$Header: /cvs/stx/stx/libbasic/CmdLineOption.st,v 1.3 2012-01-13 10:58:29 vrany Exp $'
 !
 
 version_SVN
-    ^ '$Id: CmdLineOption.st 10758 2012-01-19 10:06:02Z vranyj1 $'
+    ^ '§Id: CmdLineOption.st 10737 2011-11-06 21:23:48Z vranyj1 §'
 ! !
-
--- a/CmdLineOptionError.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CmdLineOptionError.st	Sat Jan 19 01:30:00 2013 +0000
@@ -37,10 +37,9 @@
 !CmdLineOptionError class methodsFor:'documentation'!
 
 version
-    ^'$Header: /cvs/stx/stx/libbasic/CmdLineOptionError.st,v 1.3 2012/01/13 10:58:08 vrany Exp $'
+    ^'$Header: /cvs/stx/stx/libbasic/CmdLineOptionError.st,v 1.3 2012-01-13 10:58:08 vrany Exp $'
 !
 
 version_SVN
-    ^ '$Id: CmdLineOptionError.st 10758 2012-01-19 10:06:02Z vranyj1 $'
+    ^ '§Id: CmdLineOptionError.st 10717 2011-10-11 15:53:59Z vranyj1 §'
 ! !
-
--- a/CmdLineParser.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CmdLineParser.st	Sat Jan 19 01:30:00 2013 +0000
@@ -275,10 +275,9 @@
 !CmdLineParser class methodsFor:'documentation'!
 
 version
-    ^'$Header: /cvs/stx/stx/libbasic/CmdLineParser.st,v 1.3 2012/01/13 10:58:19 vrany Exp $'
+    ^'$Header: /cvs/stx/stx/libbasic/CmdLineParser.st,v 1.3 2012-01-13 10:58:19 vrany Exp $'
 !
 
 version_SVN
-    ^ '$Id: CmdLineParser.st 10758 2012-01-19 10:06:02Z vranyj1 $'
+    ^ '§Id: CmdLineParser.st 10737 2011-11-06 21:23:48Z vranyj1 §'
 ! !
-
--- a/CmdLineParserTest.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CmdLineParserTest.st	Sat Jan 19 01:30:00 2013 +0000
@@ -181,10 +181,5 @@
 !CmdLineParserTest class methodsFor:'documentation'!
 
 version
-    ^'$Header: /cvs/stx/stx/libbasic/CmdLineParserTest.st,v 1.3 2012/01/13 10:58:40 vrany Exp $'
-!
-
-version_SVN
-    ^'$Id: CmdLineParserTest.st 10758 2012-01-19 10:06:02Z vranyj1 $'
+    ^'$Header: /cvs/stx/stx/libbasic/CmdLineParserTest.st,v 1.3 2012-01-13 10:58:40 vrany Exp $'
 ! !
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CodeComponent.st	Sat Jan 19 01:30:00 2013 +0000
@@ -0,0 +1,95 @@
+"{ Package: 'stx:libbasic' }"
+
+Object subclass:#CodeComponent
+	instanceVariableNames:'type name properties'
+	classVariableNames:'KnownComponents'
+	poolDictionaries:''
+	category:'System-Support-Projects'
+!
+
+!CodeComponent class methodsFor:'documentation'!
+
+documentation
+"
+    for visualworks compatibility
+
+    [author:]
+        cg (cg@CG-PC)
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!CodeComponent class methodsFor:'initialization'!
+
+initialize
+    KnownComponents := IdentityDictionary new.
+! !
+
+!CodeComponent class methodsFor:'instance creation'!
+
+type:typeSymbol named:aString
+    ^ (KnownComponents at:typeSymbol ifAbsentPut:[Dictionary new])
+        at:aString ifAbsentPut:[self new]
+
+    "
+     CodeComponent type: #package named: 'JavaConnect-Core' 
+    "
+!
+
+type:typeSymbol named:aString property:propertySymbol value:propertyValue
+    (self type:typeSymbol named:aString) property:propertySymbol value:propertyValue
+
+    "
+     CodeComponent type: #package named: 'JavaConnect-Core' property: #postLoadBlock value: '[:package | (Root bindingFor: #JavaWorld) == nil ifTrue:[JavaConnect.JavaPackage initializeJavaWorld.]]'
+    "
+! !
+
+!CodeComponent methodsFor:'accessing'!
+
+addPropertie:aPropertie
+    "add a Propertie"
+
+    properties isNil ifTrue:[
+        properties := OrderedCollection new.
+    ].
+    properties add: aPropertie
+!
+
+name
+    ^ name
+!
+
+name:something
+    name := something.
+!
+
+property:aPropertySymbol value:anObject
+    "add a property"
+
+    properties isNil ifTrue:[
+        properties := IdentityDictionary new.
+    ].
+    properties at:aPropertySymbol put:anObject
+!
+
+type
+    ^ type
+!
+
+type:something
+    type := something.
+! !
+
+!CodeComponent class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/libbasic/CodeComponent.st,v 1.1 2009-09-25 08:40:44 cg Exp $'
+! !
+
+CodeComponent initialize!
--- a/Collection.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Collection.st	Sat Jan 19 01:30:00 2013 +0000
@@ -287,6 +287,20 @@
     ^ ValueNotFoundSignal
 ! !
 
+!Collection class methodsFor:'instance creation-streaming'!
+
+writeStreamClass
+    "the type of stream used in writeStream"
+
+    ^ WriteStream
+
+    "
+     OrderedCollection writeStreamClass
+    "
+
+    "Created: / 09-01-2011 / 10:37:15 / cg"
+! !
+
 !Collection class methodsFor:'misc ui support'!
 
 iconInBrowserSymbol
@@ -1598,7 +1612,7 @@
 !
 
 asSortedStrings
-    "Create & return a SortedCollection that sorts the receivers
+    "Create & return a SortedCollection that sorts the receiver's
      elements according to the locales collating policy.
      This is currently not really support - strings are sorted
      without caring for the locale."
@@ -1614,7 +1628,7 @@
 !
 
 asSortedStrings:sortBlock
-    "Create & return a SortedCollection that sorts the receivers
+    "Create & return a SortedCollection that sorts the receiver's
      elements using sortBlock and according to the locales collating policy,
      which is passed as first arg to sortBlock.
      This is currently not really support - strings are sorted
@@ -1632,7 +1646,7 @@
 !
 
 asSortedStrings:sortBlock with:aCollationPolicy
-    "Create & return a SortedCollection that sorts the receivers
+    "Create & return a SortedCollection that sorts the receiver's
      elements using sortBlock and according to the specified locales collating policy.
      This is currently not really support - strings are sorted
      without caring for the locale."
@@ -1649,7 +1663,7 @@
 !
 
 asSortedStringsWith: aCollationPolicy
-    "Create & return a SortedCollection that sorts the receivers
+    "Create & return a SortedCollection that sorts the receiver's
      elements according to the specified locales collating policy.
      This is currently not really support - strings are sorted
      without caring for the locale."
@@ -1873,7 +1887,7 @@
 writeStream
     "return a stream for writing onto the receiver"
 
-    ^ WriteStream on:self
+    ^ self class writeStreamClass on:self
 
     "
      |s|
@@ -2451,6 +2465,7 @@
      (1 to:15) reduce:[:x :y| '(', x printString, '+', y printString, ')']
      #('if' 'it' 'is' 'to' 'be' 'it' 'is' 'up' 'to' 'me') fold: [:a :b | a, ' ', b]
      #('if' 'it' 'is' 'to' 'be' 'it' 'is' 'up' 'to' 'me') reduce: [:a :b | a, ' ', b]
+     #() fold: [:a :b | a, ' ', b] -- raises an error
     "
 
     "Created: / 14-09-2011 / 16:29:53 / cg"
@@ -3134,8 +3149,9 @@
 !
 
 emptyCollectionError
-    "report an error that the operation is not allowed for
-     empty collections"
+    "report an error that the operation is not allowed for empty collections"
+
+    <resource: #skipInDebuggersWalkBack>
 
     ^ EmptyCollectionSignal raise
 !
@@ -3143,18 +3159,24 @@
 errorInvalidKey:aKey
     "report an error that the given key was invalid"
 
+    <resource: #skipInDebuggersWalkBack>
+
     ^ InvalidKeySignal raiseRequestWith:aKey
 !
 
 errorNotKeyed
     "report an error that keyed access methods are not allowed"
 
+    <resource: #skipInDebuggersWalkBack>
+
     ^ self error:(self class name, 's do not respond to keyed accessing messages')
 !
 
 errorValueNotFound:anObject
     "report an error that an object was not found in the collection"
 
+    <resource: #skipInDebuggersWalkBack>
+
     ^ ValueNotFoundSignal raiseRequestWith:anObject
 
     "Modified: / 30.10.1997 / 15:52:18 / cg"
@@ -3166,7 +3188,9 @@
 
     |creator msg context|
 
-    creator := Method allSubInstances detect:[:aMethod | (aMethod referencesGlobal:self)] ifNone:nil.
+    creator := Method allSubInstances 
+                detect:[:aMethod | (aMethod referencesGlobal:self)] 
+                ifNone:nil.
     creator notNil ifTrue:[
         msg := ' (' , creator whoString , ')'
     ].
@@ -3190,6 +3214,8 @@
     "report an error that the operation is not allowed,  
      since not enough elements are in the collection"
 
+    <resource: #skipInDebuggersWalkBack>
+
     ^ NotEnoughElementsSignal raise
 ! !
 
@@ -3210,7 +3236,7 @@
 !
 
 grow:howBig
-    "change the receivers size"
+    "change the receiver's size"
 
     ^ self subclassResponsibility
 !
@@ -4268,8 +4294,8 @@
 !
 
 isEmptyOrNil
-    "return true if I am nil or an empty collection - true here, if the receivers size is 0,
-     (from Sqeak)"
+    "return true if I am nil or an empty collection - true here, if the receiver's size is 0,
+     (from Squeak)"
 
     ^ self isEmpty
 
@@ -4429,15 +4455,12 @@
 !Collection class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.283 2012/11/23 16:35:50 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.286 2012-12-21 11:58:02 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Collection.st,v 1.283 2012/11/23 16:35:50 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: Collection.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.286 2012-12-21 11:58:02 cg Exp $'
 ! !
 
+
 Collection initialize!
--- a/CompiledCode.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/CompiledCode.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1871,16 +1871,13 @@
 !CompiledCode class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CompiledCode.st,v 1.120 2012/11/04 14:13:28 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CompiledCode.st,v 1.120 2012-11-04 14:13:28 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/CompiledCode.st,v 1.120 2012/11/04 14:13:28 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/CompiledCode.st,v 1.120 2012-11-04 14:13:28 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: CompiledCode.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '§ Id: CompiledCode.st 10643 2011-06-08 21:53:07Z vranyj1  §'
 ! !
-
-
-
--- a/Complex.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Complex.st	Sat Jan 19 01:30:00 2013 +0000
@@ -17,6 +17,7 @@
  ST/X license. It has been packaged with the ST/X distribution to
  make your live easier instead. NO WARRANTY.
 "
+
 "{ Package: 'stx:libbasic' }"
 
 ArithmeticValue subclass:#Complex
@@ -763,12 +764,5 @@
 !Complex class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Complex.st,v 1.14 2011/08/04 20:46:43 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: Complex.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Complex.st,v 1.14 2011-08-04 20:46:43 cg Exp $'
 ! !
-
-
-
--- a/ConfigurableFeatures.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ConfigurableFeatures.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1,14 +1,3 @@
-"
- COPYRIGHT (c) 2006 by eXept Software AG
-	      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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
-"
 "{ Package: 'stx:libbasic' }"
 
 Object subclass:#ConfigurableFeatures
@@ -20,20 +9,6 @@
 
 !ConfigurableFeatures class methodsFor:'documentation'!
 
-copyright
-"
- COPYRIGHT (c) 2006 by eXept Software AG
-	      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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
-"
-!
-
 documentation
 "
     being tired of finding '(Smalltalk at:someClass) notNil' all over the place,
@@ -278,13 +253,9 @@
 !ConfigurableFeatures class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ConfigurableFeatures.st,v 1.9 2012/07/23 11:37:32 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ConfigurableFeatures.st,v 1.9 2012-07-23 11:37:32 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ConfigurableFeatures.st,v 1.9 2012/07/23 11:37:32 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: ConfigurableFeatures.st 10829 2012-07-25 08:45:15Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ConfigurableFeatures.st,v 1.9 2012-07-23 11:37:32 cg Exp $'
 ! !
--- a/Context.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Context.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1497,7 +1497,7 @@
     s isNil ifTrue:[
         ^ '**************** nil displayString of ',(someObject class name ? '??')
     ].
-    s bitsPerCharacter > 8 ifTrue:[
+    s isWideString ifTrue:[
         "make sure that the object really returns something we can stream into a string"
         s := someObject storeString.
     ].
@@ -2465,20 +2465,15 @@
 !Context class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.177 2012/11/24 12:52:13 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.178 2012-12-12 22:59:00 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Context.st,v 1.177 2012/11/24 12:52:13 stefan Exp §'
-!
-
-version_HG
-
-    ^ '$Changeset: <not expanded> $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.178 2012-12-12 22:59:00 stefan Exp $'
 !
 
 version_SVN
-    ^ '§Id§'
+    ^ '§ Id: Context.st 10643 2011-06-08 21:53:07Z vranyj1  §'
 ! !
 
 Context initialize!
--- a/Date.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Date.st	Sat Jan 19 01:30:00 2013 +0000
@@ -186,7 +186,9 @@
 
     lang := language asSymbol.
     lang ~~ #'en' ifTrue:[
-        resources := ResourcePack forPackage:'stx:libbasic' resourceFileName:(language,'.rs') cached:false.
+	ResourcePack notNil ifTrue:[ "/ guard for tinytalk (no libview)
+            resources := ResourcePack forPackage:'stx:libbasic' resourceFileName:(language,'.rs') cached:false.
+	].
         resources notNil ifTrue:[
             enDayNames := DayNames at:#'en'.
             enDayAbbrevs := DayAbbrevs at:#'en'.
@@ -585,10 +587,10 @@
      Date readFrom:'30.01' printFormat:'%d %m' onError:'fail'     
 
      Date readFrom:'3-3-1995' printFormat:'%d %m %y' language: #de onError:'fail'          
-     Date readFrom:'3-Mrz-1995' printFormat:'%d %monthName %y' language: #de onError:'fail'          
-     Date readFrom:'3-mr-1995' printFormat:'%d %shortMonthName %y' language: #de onError:'fail'   
-     Date readFrom:'3/mr/1995' printFormat:'%d %shortMonthName %y' language: #de onError:'fail'  
-     Date readFrom:'3/mr/1995' printFormat:'%d-%shortMonthName-%y' language: #de onError:'fail'          
+     Date readFrom:'3-März-1995' printFormat:'%d %monthName %y' language: #de onError:'fail'          
+     Date readFrom:'3-mär-1995' printFormat:'%d %shortMonthName %y' language: #de onError:'fail'   
+     Date readFrom:'3/mär/1995' printFormat:'%d %shortMonthName %y' language: #de onError:'fail'  
+     Date readFrom:'3/mär/1995' printFormat:'%d-%shortMonthName-%y' language: #de onError:'fail'          
      Date readFrom:'3-dez-1995' printFormat:'%d %shortMonthName %y' language: #de onError:'fail'          
      Date readFrom:'3-Dez-1995' printFormat:'%d %shortMonthName %y' language: #de onError:'fail'          
      Date readFrom:'3-Dezember-1995' printFormat:'%d %monthName %y' language: #de onError:'fail'          
@@ -1385,13 +1387,13 @@
 
 !Date class methodsFor:'private'!
 
-abbreviatedMonthNamesForLanguage:language
+abbreviatedMonthNamesForLanguage:languageOrNilForDefault
     |langMonthAbbrevs lang|
 
     (MonthAbbrevs isNil or:[EnvironmentChange]) ifTrue:[
         self initNames
     ].
-    lang := language ? Smalltalk language.
+    lang := languageOrNilForDefault notNil ifTrue:[languageOrNilForDefault] ifFalse:[Smalltalk language].
     langMonthAbbrevs := MonthAbbrevs at:lang ifAbsent:nil.
 
     "/ If language is not found, try to initialize it from the resources and try again
@@ -1408,15 +1410,17 @@
      self abbreviatedMonthNamesForLanguage:#fr
      self abbreviatedMonthNamesForLanguage:#es
     "
+
+    "Modified (format): / 18-07-2011 / 09:34:20 / cg"
 !
 
-dayAbbrevsForLanguage:language
+dayAbbrevsForLanguage:languageOrNilForDefault
     |langDayAbbrevs lang|
 
     (DayAbbrevs isNil or:[EnvironmentChange]) ifTrue:[
         self initNames
     ].
-    lang := language ? Smalltalk language.
+    lang := languageOrNilForDefault notNil ifTrue:[languageOrNilForDefault] ifFalse:[Smalltalk language].
     langDayAbbrevs := DayAbbrevs at:lang ifAbsent:nil.
 
     "/ If language is not found, try to initialize it from the resources and try again
@@ -1433,15 +1437,17 @@
      self dayAbbrevsForLanguage:#fr
      self dayAbbrevsForLanguage:#es
     "
+
+    "Modified (format): / 18-07-2011 / 09:34:14 / cg"
 !
 
-dayNamesForLanguage:language
+dayNamesForLanguage:languageOrNilForDefault
     |langDayNames lang|
 
     (DayNames isNil or:[EnvironmentChange]) ifTrue:[
         self initNames
     ].
-    lang := language ? Smalltalk language.
+    lang := languageOrNilForDefault notNil ifTrue:[languageOrNilForDefault] ifFalse:[Smalltalk language].
     langDayNames := DayNames at:lang ifAbsent:nil.
 
     "/ If language is not found, try to initialize it from the resources and try again
@@ -1458,6 +1464,8 @@
      self dayNamesForLanguage:#fr
      self dayNamesForLanguage:#es
     "
+
+    "Modified (format): / 18-07-2011 / 09:34:08 / cg"
 !
 
 daysInMonthIndex: monthIndex forYear: yearInteger
@@ -1534,13 +1542,13 @@
     ^ self abbreviatedMonthNamesForLanguage:language
 !
 
-monthNamesForLanguage:language
+monthNamesForLanguage:languageOrNilForDefault
     |langMonthNames lang|
 
     (MonthNames isNil or:[EnvironmentChange]) ifTrue:[
         self initNames
     ].
-    lang := language ? Smalltalk language.
+    lang := languageOrNilForDefault notNil ifTrue:[languageOrNilForDefault] ifFalse:[Smalltalk language].
     langMonthNames := MonthNames at:lang ifAbsent:nil.
 
     "/ If language is not found, try to initialize it from the resources and try again
@@ -1550,6 +1558,8 @@
         langMonthNames := MonthNames at:lang ifAbsent:[MonthNames at:#en.].
     ].
     ^ langMonthNames
+
+    "Modified: / 18-07-2011 / 09:34:32 / cg"
 ! !
 
 !Date class methodsFor:'private-encoding/decoding'!
@@ -3149,15 +3159,11 @@
 !Date class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Date.st,v 1.143 2012/11/05 21:05:45 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Date.st,v 1.144 2013-01-02 12:35:40 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Date.st,v 1.143 2012/11/05 21:05:45 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Date.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Date.st,v 1.144 2013-01-02 12:35:40 cg Exp $'
 ! !
 
 Date initialize!
--- a/Delay.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Delay.st	Sat Jan 19 01:30:00 2013 +0000
@@ -363,16 +363,9 @@
 !Delay class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Delay.st,v 1.45 2011/10/27 16:43:56 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Delay.st,v 1.45 2011-10-27 16:43:56 stefan Exp $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/Delay.st,v 1.45 2011/10/27 16:43:56 stefan Exp '
-!
-
-version_SVN
-    ^ '$Id: Delay.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Delay.st,v 1.45 2011-10-27 16:43:56 stefan Exp $'
 ! !
-
-
-
--- a/Dictionary.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Dictionary.st	Sat Jan 19 01:30:00 2013 +0000
@@ -13,7 +13,7 @@
 
 Set subclass:#Dictionary
 	instanceVariableNames:'valueArray'
-	classVariableNames:'NilKey'
+	classVariableNames:''
 	poolDictionaries:''
 	category:'Collections-Unordered'
 !
@@ -50,16 +50,16 @@
 
     [Instance variables:]
 
-        keyArray        <Array>         (from Set) the keys
+	keyArray        <Array>         (from Set) the keys
 
-        valueArray      <Array>         the values ('valueArray at:index' corresponds
-                                        to the value stored under 'keyArray at:index')
+	valueArray      <Array>         the values ('valueArray at:index' corresponds
+					to the value stored under 'keyArray at:index')
 
-    Performance hints: 
+    Performance hints:
       since the dictionary does not really store associations internally,
       it is less efficient, to store/retrieve associations. The reason is
-      that these assocs are created temporarily in some extract methods. 
-      I.e. 'at:key put:value' is faster than 'add:anAssoc' 
+      that these assocs are created temporarily in some extract methods.
+      I.e. 'at:key put:value' is faster than 'add:anAssoc'
       and 'keysAndValuesDo:' is faster than 'associationsDo:' etc.
 
       If only symbols or smallIntegers are used as keys, use IdentityDictionaries
@@ -79,51 +79,51 @@
       which is converted back to nil whenever keys are accessed.
 
     [See also:]
-        Set, IdentityDictionary, IdentitySet, WeakIdentitySet and
-        WeakIdentityDictionary
+	Set, IdentityDictionary, IdentitySet, WeakIdentitySet and
+	WeakIdentityDictionary
 
     [author:]
-        Claus Gittinger
+	Claus Gittinger
 "
 !
 
 examples
 "
-                                                                        [exBegin]
+									[exBegin]
     |d|
 
     d := Dictionary new.
     d at:'1' put:'one'.
     d at:2 put:'two'.
-    d at:2    
-                                                                        [exEnd]
+    d at:2
+									[exEnd]
 
-                                                                        [exBegin]
+									[exBegin]
     |d|
 
     d := Dictionary new.
     d at:'1' put:'one'.
     d at:2   put:nil.
     d.
-    d at:2  
-                                                                        [exEnd]
+    d at:2
+									[exEnd]
 
-                                                                        [exBegin]
+									[exBegin]
     |d|
 
     d := Dictionary new.
     d at:'1' put:'one'.
     d at:2   put:nil.
-    d includes:nil.  
-                                                                        [exEnd]
+    d includes:nil.
+									[exEnd]
 
-                                                                        [exBegin]
+									[exBegin]
     |d|
 
     d := Dictionary new.
     d at:'1' put:'one'.
-    d includes:nil.  
-                                                                        [exEnd]
+    d includes:nil.
+									[exEnd]
 "
 ! !
 
@@ -132,24 +132,24 @@
 decodeFromLiteralArray:anArray
     "create & return a new instance from information encoded in anArray."
 
-    |dictionary 
+    |dictionary
      sz "{ Class: SmallInteger }"|
 
     sz := anArray size.
     dictionary := self new:sz//2.
     2 to:sz by:2 do:[:idx | |key val|
-        key := (anArray at:idx) decodeAsLiteralArray.
-        val := (anArray at:idx+1) decodeAsLiteralArray.
-        dictionary at:key put:val 
+	key := (anArray at:idx) decodeAsLiteralArray.
+	val := (anArray at:idx+1) decodeAsLiteralArray.
+	dictionary at:key put:val
     ].
     ^ dictionary
 
     "
      (Dictionary new
-         at:1 put:'one';
-         at:2 put:'two';
-         yourself
-     ) literalArrayEncoding decodeAsLiteralArray    
+	 at:1 put:'one';
+	 at:2 put:'two';
+	 yourself
+     ) literalArrayEncoding decodeAsLiteralArray
     "
 !
 
@@ -161,16 +161,16 @@
     sz := aCollectionOfAsociations size.
     newDict := self new:sz.
     aCollectionOfAsociations do:[:assoc |
-        newDict at:assoc key put:assoc value
+	newDict at:assoc key put:assoc value
     ].
     ^ newDict
 
     "
-     Dictionary withAssociations:(Array 
-                                    with:#'one'->1 
-                                    with:#'two'->2 
-                                    with:#'three'->3 
-                                    with:#'four'->4)
+     Dictionary withAssociations:(Array
+				    with:#'one'->1
+				    with:#'two'->2
+				    with:#'three'->3
+				    with:#'four'->4)
     "
 
     "Created: / 11.2.2000 / 10:05:54 / cg"
@@ -222,7 +222,7 @@
 
     "
      Dictionary newFrom:(Array with:#foo->#Foo
-                               with:#bar->#Bar)
+			       with:#bar->#Bar)
     "
 ! !
 
@@ -232,18 +232,19 @@
     ^ self = aDictionary
 ! !
 
+
 !Dictionary methodsFor:'accessing'!
 
 associationAt:aKey
-    "return an association consisting of aKey and the element indexed 
-     by aKey - 
+    "return an association consisting of aKey and the element indexed
+     by aKey -
      report an error, if no element is stored under aKey"
 
     ^ Association key:aKey value:(self at:aKey)
 !
 
 associationAt:aKey ifAbsent:exceptionBlock
-    "return an association consisting of aKey and the element indexed by aKey - 
+    "return an association consisting of aKey and the element indexed by aKey -
      return result of exceptionBlock if no element is stored under aKey"
 
     ^ Association key:aKey value:(self at:aKey ifAbsent:[^ exceptionBlock value])
@@ -382,7 +383,7 @@
     "if the receiver contains an element stored under aKey,
      retrieve it and evaluate aBlock passing the element as argument,
      return the blocks value.
-     If not, store aValue under the key. 
+     If not, store aValue under the key.
      Use this with an error-reporting block, to ensure that no keys are reused"
 
     (self includesKey:aKey) ifTrue: [ ^ aBlock value ].
@@ -402,7 +403,7 @@
      to the argument, nil if none found.
      This is a slow access, since there is no fast reverse mapping.
      NOTICE:
-	The value is searched using equality compare; 
+	The value is searched using equality compare;
 	use #keyAtValue: to compare for identity."
 
     ^ self keyAtEqualValue:aValue ifAbsent:[nil]
@@ -441,8 +442,8 @@
      to the argument, nil if none found.
      This is a slow access, since there is no fast reverse mapping.
      NOTICE:
-        The value is searched using identity compare; 
-        use #keyAtEqualValue: to compare for equality."
+	The value is searched using identity compare;
+	use #keyAtEqualValue: to compare for equality."
 
     ^ self keyAtIdentityValue:aValue ifAbsent:[nil]
 !
@@ -480,19 +481,19 @@
      to the argument, nil if none found.
      This is a slow access, since there is no fast reverse mapping.
      NOTICE:
-        The value is searched using identity compare; 
-        use #keyAtEqualValue: to compare for equality."
+	The value is searched using identity compare;
+	use #keyAtEqualValue: to compare for equality."
 
     ^ self keyAtIdentityValue:aValue ifAbsent:[nil]
 !
 
 keyAtValue:aValue ifAbsent:exceptionBlock
-    "return the key whose value is identical (i.e. using #== for compare) 
+    "return the key whose value is identical (i.e. using #== for compare)
      to the argument, if not found, return the value of exceptionBlock.
      This is a slow access, since there is no fast reverse mapping.
      NOTICE:
-        The value is searched using identity compare; 
-        use #keyAtEqualValue:ifAbsent: to compare for equality."
+	The value is searched using identity compare;
+	use #keyAtEqualValue:ifAbsent: to compare for equality."
 
     ^ self keyAtIdentityValue:aValue ifAbsent:exceptionBlock
 !
@@ -541,34 +542,34 @@
 !
 
 addAll:aCollection
-    "ANSI 5.7.2.1: 
+    "ANSI 5.7.2.1:
      Message:  addAll: dictionary
       Synopsis
-        Store the elements of dictionary in the receiver at the
-        corresponding keys from dictionary.
+	Store the elements of dictionary in the receiver at the
+	corresponding keys from dictionary.
       Definition: <abstractDictionary>
-        This message is equivalent to repeatedly sending the #at:put:
-        message to the receiver with each of the keys and elements in
-        dictionary in turn.  If a key in dictionary is key equivalent
-        to a key in the receiver, the associated element in dictionary
-        replaces the element in the receiver.
+	This message is equivalent to repeatedly sending the #at:put:
+	message to the receiver with each of the keys and elements in
+	dictionary in turn.  If a key in dictionary is key equivalent
+	to a key in the receiver, the associated element in dictionary
+	replaces the element in the receiver.
 
      Returns the argument, aCollection (sigh).
 
      WARNING: do not add elements while iterating over the receiver.
-              Iterate over a copy to do this."
+	      Iterate over a copy to do this."
 
 
     self ~~ aCollection ifTrue:[
-        aCollection isSequenceable ifTrue:[
-            aCollection do:[:eachPair |
-                self at:eachPair key put:eachPair value.
-            ].
-        ] ifFalse:[
-            aCollection keysAndValuesDo:[:eachKey :eachValue |
-                self at:eachKey put:eachValue.
-            ]
-        ].
+	aCollection isSequenceable ifTrue:[
+	    aCollection do:[:eachPair |
+		self at:eachPair key put:eachPair value.
+	    ].
+	] ifFalse:[
+	    aCollection keysAndValuesDo:[:eachKey :eachValue |
+		self at:eachKey put:eachValue.
+	    ]
+	].
     ].
     ^ aCollection
 
@@ -582,7 +583,7 @@
      d2 at:3 put:'three'.
      d2 at:4 put:'four'.
      d1 addAll:d2.
-     d1.  
+     d1.
     "
 !
 
@@ -590,7 +591,7 @@
     "merge consecutive key-value pairs from aSequenceableCollection into the receiver."
 
     aSequenceableCollection pairWiseDo:[:key :value |
-        self at:key put:value.
+	self at:key put:value.
     ]
 
     "
@@ -601,7 +602,7 @@
      d1 at:2 put:'two'.
      arr := #(3 'three'  4 'four').
      d1 addPairsFrom:arr.
-     d1.               
+     d1.
     "
 
     "Modified: 1.3.1996 / 21:24:03 / cg"
@@ -614,17 +615,17 @@
      as the value of the new dictionary.
 
      Stubidity Notice:
-         Incompatibility with #declareAllFrom:, where the other values are
-         defined unconditionally.
+	 Incompatibility with #declareAllFrom:, where the other values are
+	 defined unconditionally.
 
      WARNING: do not add elements while iterating over the receiver.
-              Iterate over a copy to do this."
+	      Iterate over a copy to do this."
 
     |value|
 
     (self includesKey:key) ifFalse:[
-        value := aDictionary at:key ifAbsent:nil.
-        self at:key put:value.
+	value := aDictionary at:key ifAbsent:nil.
+	self at:key put:value.
     ]
 
     "Modified: 1.3.1996 / 21:24:03 / cg"
@@ -634,18 +635,18 @@
     "merge all key-value pairs from aDictionary into the receiver.
 
      sigh:
-        For compatibility with #declare:from: the behavior should be changed as following:
-        If the receiver already contains a key, the existing value is retained.
-        To keep the compatibility with other smalltalks, the semantics of this remains
-        as is, and #declareAllNewFrom: was added for convenience.
-        See #declareAllNewFrom: which does exactly what this name implies."
+	For compatibility with #declare:from: the behavior should be changed as following:
+	If the receiver already contains a key, the existing value is retained.
+	To keep the compatibility with other smalltalks, the semantics of this remains
+	as is, and #declareAllNewFrom: was added for convenience.
+	See #declareAllNewFrom: which does exactly what this name implies."
 
     self ~~ aDictionaryOrNil ifTrue:[
-        aDictionaryOrNil notNil ifTrue:[
-            aDictionaryOrNil keysAndValuesDo:[:key :value |
-                self at:key put:value.
-            ].
-        ]
+	aDictionaryOrNil notNil ifTrue:[
+	    aDictionaryOrNil keysAndValuesDo:[:key :value |
+		self at:key put:value.
+	    ].
+	]
     ]
 
     "Modified: / 18-09-2006 / 22:01:12 / cg"
@@ -657,13 +658,13 @@
      See also #declareAllFrom:"
 
     self ~~ aDictionaryOrNil ifTrue:[
-        aDictionaryOrNil notNil ifTrue:[
-            aDictionaryOrNil keysAndValuesDo:[:key :value |
-                (self includesKey:key) ifFalse:[
-                    self at:key put:value.
-                ].
-            ]
-        ]
+	aDictionaryOrNil notNil ifTrue:[
+	    aDictionaryOrNil keysAndValuesDo:[:key :value |
+		(self includesKey:key) ifFalse:[
+		    self at:key put:value.
+		].
+	    ]
+	]
     ]
 
     "Created: / 18-09-2006 / 21:58:54 / cg"
@@ -687,10 +688,10 @@
      If it was not in the collection report an error.
 
      WARNING: do not remove elements while iterating over the receiver.
-              See #saveRemoveKey: to do this."
+	      See #saveRemoveKey: to do this."
 
     aKeyCollection do:[:eachKey |
-        self removeKey:eachKey ifAbsent:[self errorKeyNotFound:eachKey]
+	self removeKey:eachKey ifAbsent:[self errorKeyNotFound:eachKey]
     ].
 !
 
@@ -699,10 +700,10 @@
      If it was not in the collection return the result from evaluating aBlock.
 
      WARNING: do not remove elements while iterating over the receiver.
-              See #saveRemoveKey: to do this."
+	      See #saveRemoveKey: to do this."
 
     aKeyCollection do:[:eachKey |
-        self removeKey:eachKey ifAbsent:aBlock
+	self removeKey:eachKey ifAbsent:aBlock
     ].
 !
 
@@ -797,7 +798,7 @@
      therefore be slow for big dictionaries.
 
      WARNING: do not remove elements while iterating over the receiver.
-             See #saveRemoveValue: to do this."
+	     See #saveRemoveValue: to do this."
 
     ^ self removeValue:aValue ifAbsent:[self errorValueNotFound:aValue]
 
@@ -809,7 +810,7 @@
      d at:2 put:'two'.
      d at:3 put:'three'.
      d removeValue:'two'.
-     d   
+     d
     "
 !
 
@@ -1058,14 +1059,14 @@
 !Dictionary methodsFor:'comparing'!
 
 = aCollection
-    "return true, if the argument is a Dictionary containing the same 
+    "return true, if the argument is a Dictionary containing the same
      key-value pairs as I do"
 
     aCollection species == self species ifFalse:[^ false].
     aCollection size == self size ifFalse:[^ false].
     "/ all of of my key-value associations must be in the other collection ...
     self keysAndValuesDo:[:key :value |
-        ((aCollection at:key ifAbsent:[^ false]) = value) ifFalse:[^ false]
+	((aCollection at:key ifAbsent:[^ false]) = value) ifFalse:[^ false]
     ].
     ^ true
 
@@ -1083,7 +1084,7 @@
      d2 at:'one' put:1.
      d2 at:2 put:#two.
      d2 at:'two' put:2.
-     d1 = d2     
+     d1 = d2
     "
 
     "
@@ -1100,7 +1101,7 @@
      d2 at:'one' put:1.
      d2 at:2 put:#two.
      d2 at:'two' put:2.
-     d1 = d2     
+     d1 = d2
     "
 
     "
@@ -1117,7 +1118,7 @@
      d2 at:'one' put:1.
      d2 at:2 put:#two.
      d2 at:'two' put:2.
-     d1 = d2       
+     d1 = d2
     "
 
 
@@ -1153,15 +1154,15 @@
 
 fromLiteralArrayEncoding:encoding
     "read my values from an encoding.
-     The encoding is supposed to be of the form: 
-        (Dictionary key1 val1 ... keyN valN)"
+     The encoding is supposed to be of the form:
+	(Dictionary key1 val1 ... keyN valN)"
 
     2 to:encoding size by:2 do:[:i |
-        |key val|
+	|key val|
 
-        key := encoding at:i.
-        val := encoding at:i+1.
-        self at:key put:val
+	key := encoding at:i.
+	val := encoding at:i+1.
+	self at:key put:val
     ].
 
     "
@@ -1178,10 +1179,10 @@
     literalArrray at:1 put:self class name.
     idx := 2.
     self keysAndValuesDo:[:eachKey :eachValue |
-        literalArrray 
-            at:idx   put:eachKey literalArrayEncoding;    
-            at:idx+1 put:eachValue literalArrayEncoding.
-        idx := idx + 2.
+	literalArrray
+	    at:idx   put:eachKey literalArrayEncoding;
+	    at:idx+1 put:eachValue literalArrayEncoding.
+	idx := idx + 2.
     ].
     ^ literalArrray
 
@@ -1209,7 +1210,7 @@
 , anotherDictionaryOrAssociation
     "return a new dictionary containing a merged set of associations.
      If anotherDictionaryOrAssociation includes any of the receiver's keys,
-     the value from anotherDictionaryOrAssociation will be placed into the 
+     the value from anotherDictionaryOrAssociation will be placed into the
      returned result."
 
     |newDictionary|
@@ -1268,21 +1269,21 @@
      and return a collection with the results.
 
      See also:
-        #keysAndValuesCollect: (which passes separate keys & values)
-        #collect:              (which only passes values)
+	#keysAndValuesCollect: (which passes separate keys & values)
+	#collect:              (which only passes values)
 
      This is much like #keysAndValuesCollect:, but aBlock gets the
      key and value as a single association argument.
      #keysAndValuesCollect: and is a bit faster therefore (no intermediate objects).
 
      WARNING: do not add/remove elements while iterating over the receiver.
-              Iterate over a copy to do this."
+	      Iterate over a copy to do this."
 
     |newCollection|
 
     newCollection := OrderedCollection new.
     self keysAndValuesDo:[:key :value |
-        newCollection add:(aBlock value:(Association key:key value:value))
+	newCollection add:(aBlock value:(Association key:key value:value))
     ].
     ^ newCollection
 
@@ -1294,8 +1295,8 @@
      ages at:'ca' put:33.
      ages at:'sv' put:36.
      ages at:'tk' put:28.
-     ages associationsCollect:[:assoc | 
-                assoc key , '''s age is ' , assoc value printString]
+     ages associationsCollect:[:assoc |
+		assoc key , '''s age is ' , assoc value printString]
     "
 
     "Modified: 20.4.1996 / 11:31:27 / cg"
@@ -1387,26 +1388,26 @@
 
 associationsSelect:aBlock
     "return a new collection with all elements from the receiver, for which
-     the argument aBlock evaluates to true. 
+     the argument aBlock evaluates to true.
      The block gets keys and values as an association argument.
 
      See also: #keysAndValuesSelect: (which is slightly faster),
-               #select: (which only passes the value)
+	       #select: (which only passes the value)
 
      This is much like #keysAndValuesSelect:, but aBlock gets the
      key and value as a single association argument.
      #keysAndValuesSelect: and is a bit faster therefore (no intermediate objects).
 
      WARNING: do not add/remove elements while iterating over the receiver.
-              Iterate over a copy to do this."
+	      Iterate over a copy to do this."
 
     |newCollection|
 
     newCollection := self species new.
     self keysAndValuesDo:[:key :value |
-        (aBlock value:(Association key:key value:value)) ifTrue:[
-            newCollection at:key put:value
-        ]
+	(aBlock value:(Association key:key value:value)) ifTrue:[
+	    newCollection at:key put:value
+	]
     ].
     ^ newCollection
 
@@ -1419,8 +1420,8 @@
      ages at:'sv' put:36.
      ages at:'tk' put:28.
 
-     ages associationsSelect:[:assoc | 
-                (assoc key startsWith:'c') or:[assoc value < 30]].
+     ages associationsSelect:[:assoc |
+		(assoc key startsWith:'c') or:[assoc value < 30]].
     "
 
     "Modified: 20.4.1996 / 11:31:15 / cg"
@@ -1431,17 +1432,17 @@
      and return a Bag with the results.
 
      See also:
-        #associationsCollect:   (which passes key-value associations)
-        #keysAndValuesCollect:  (which passes keys & values separately)
+	#associationsCollect:   (which passes key-value associations)
+	#keysAndValuesCollect:  (which passes keys & values separately)
 
      WARNING: do not add/remove elements while iterating over the receiver.
-              Iterate over a copy to do this."
+	      Iterate over a copy to do this."
 
     |newCollection|
 
     newCollection := Bag new.
     self do:[:each |
-        newCollection add:(aBlock value:each)
+	newCollection add:(aBlock value:each)
     ].
     ^ newCollection
 
@@ -1452,12 +1453,12 @@
     "perform the block for all values in the collection.
 
      See also:
-        #associationsDo:   (which passes key-value associations)
-        #keysAndValuesDo:  (which passes keys & values separately)
-        #keysDo:           (which passes keys only)
+	#associationsDo:   (which passes key-value associations)
+	#keysAndValuesDo:  (which passes keys & values separately)
+	#keysDo:           (which passes keys only)
 
      WARNING: do not add/remove elements while iterating over the receiver.
-              Iterate over a copy to do this."
+	      Iterate over a copy to do this."
 
     |key n "{ Class: SmallInteger }"
      deletedEntry|
@@ -1466,10 +1467,10 @@
     n := keyArray basicSize.
     deletedEntry := DeletedEntry.
     1 to:n do:[:index |
-        key := keyArray basicAt:index.
-        (key notNil and:[key ~~ deletedEntry]) ifTrue:[
-            aBlock value:(valueArray basicAt:index)
-        ].
+	key := keyArray basicAt:index.
+	(key notNil and:[key ~~ deletedEntry]) ifTrue:[
+	    aBlock value:(valueArray basicAt:index)
+	].
     ]
 
     "Modified: 20.4.1996 / 11:32:11 / cg"
@@ -1512,28 +1513,28 @@
 
 keysAndValuesSelect:aBlock
     "return a new collection with all elements from the receiver, for which
-     the argument aBlock evaluates to true. 
+     the argument aBlock evaluates to true.
      The block gets keys and values as separate arguments.
 
-     See also: 
-        #associationsSelect:    (which passes key-value pairs),
-        #keysSelect:            (which passes key values),
-        #select:                (which only passes the value)
+     See also:
+	#associationsSelect:    (which passes key-value pairs),
+	#keysSelect:            (which passes key values),
+	#select:                (which only passes the value)
 
      This is much like #associationsSelect:, but aBlock gets the
      key and value as two separate arguments.
      #associationsSelect: is a bit slower.
 
      WARNING: do not add/remove elements while iterating over the receiver.
-              Iterate over a copy to do this."
+	      Iterate over a copy to do this."
 
     |newCollection|
 
     newCollection := self species new.
     self keysAndValuesDo:[:key :value |
-        (aBlock value:key value:value) ifTrue:[
-            newCollection at:key put:value
-        ]
+	(aBlock value:key value:value) ifTrue:[
+	    newCollection at:key put:value
+	]
     ].
     ^ newCollection
 
@@ -1546,8 +1547,8 @@
      ages at:'sv' put:36.
      ages at:'tk' put:28.
 
-     ages keysAndValuesSelect:[:name :age | 
-                (name startsWith:'c') or:[age < 30]].
+     ages keysAndValuesSelect:[:name :age |
+		(name startsWith:'c') or:[age < 30]].
     "
 
     "Modified: 20.4.1996 / 11:34:29 / cg"
@@ -1583,24 +1584,24 @@
 
 keysSelect:aBlock
     "return a new collection with all elements from the receiver, for which
-     the argument aBlock evaluates to true. 
+     the argument aBlock evaluates to true.
      The block gets the individual keys as its single argument.
 
-     See also: 
-        #associationsSelect:            (which passes key->value associations),
-        #keysAndValuesSelect:           (which passes key & value args)
-        #select:                        (which passes values as arg),
+     See also:
+	#associationsSelect:            (which passes key->value associations),
+	#keysAndValuesSelect:           (which passes key & value args)
+	#select:                        (which passes values as arg),
 
      WARNING: do not add/remove elements while iterating over the receiver.
-              Iterate over a copy to do this."
+	      Iterate over a copy to do this."
 
     |newCollection|
 
     newCollection := self species new.
     self keysAndValuesDo:[:key :value |
-        (aBlock value:key) ifTrue:[
-            newCollection at:key put:value
-        ]
+	(aBlock value:key) ifTrue:[
+	    newCollection at:key put:value
+	]
     ].
     ^ newCollection
 
@@ -1620,24 +1621,24 @@
 
 select:aBlock
     "return a new collection with all elements from the receiver, for which
-     the argument aBlock evaluates to true. 
+     the argument aBlock evaluates to true.
      The block gets the individual values as its single argument.
 
-     See also: 
-        #associationsSelect:            (which passes key->value associations),
-        #keysAndValuesSelect:           (which passes key & value args)
-        #keysSelect:                    (which passes key values),
+     See also:
+	#associationsSelect:            (which passes key->value associations),
+	#keysAndValuesSelect:           (which passes key & value args)
+	#keysSelect:                    (which passes key values),
 
      WARNING: do not add/remove elements while iterating over the receiver.
-              Iterate over a copy to do this."
+	      Iterate over a copy to do this."
 
     |newCollection|
 
     newCollection := self species new.
     self keysAndValuesDo:[:key :value |
-        (aBlock value:value) ifTrue:[
-            newCollection at:key put:value
-        ]
+	(aBlock value:value) ifTrue:[
+	    newCollection at:key put:value
+	]
     ].
     ^ newCollection
 
@@ -1662,6 +1663,7 @@
     ^ self do:aBlock
 ! !
 
+
 !Dictionary methodsFor:'printing & storing'!
 
 printElementsDo:aBlock
@@ -1679,10 +1681,10 @@
     |isEmpty|
 
     thisContext isRecursive ifTrue:[
-        Object recursiveStoreStringSignal raiseRequestWith:self.
-        ('Dictionary [error]: storeOn: of self referencing collection.') errorPrintCR.
-        aStream nextPutAll:'#recursive'.
-        ^ self
+	Object recursiveStoreStringSignal raiseRequestWith:self.
+	('Dictionary [error]: storeOn: of self referencing collection.') errorPrintCR.
+	aStream nextPutAll:'#recursive'.
+	^ self
     ].
 
     aStream nextPutAll:'('.
@@ -1690,12 +1692,12 @@
     aStream nextPutAll:' new'.
     isEmpty := true.
     self keysAndValuesDo:[:key :value |
-        aStream nextPutAll:' at:'.
-        key storeOn:aStream.
-        aStream nextPutAll:' put:'.
-        value storeOn:aStream.
-        aStream nextPutAll:'; '.
-        isEmpty := false
+	aStream nextPutAll:' at:'.
+	key storeOn:aStream.
+	aStream nextPutAll:' put:'.
+	value storeOn:aStream.
+	aStream nextPutAll:'; '.
+	isEmpty := false
     ].
     isEmpty ifFalse:[aStream nextPutAll:' yourself'].
     aStream nextPut:$)
@@ -1755,7 +1757,7 @@
      (which is done by re-adding all elements to a new, empty key/value array pair)."
 
     |key deletedEntry oldKeyArray oldValueArray n
-     oldSize  "{ Class:SmallInteger }" 
+     oldSize  "{ Class:SmallInteger }"
      newIndex "{ Class:SmallInteger }" |
 
     oldKeyArray := keyArray.
@@ -1783,7 +1785,7 @@
 rehash
     "rehash contents - is done by re-adding all elements to a new, empty key/value array pair)."
 
-    | oldKeyArray oldValueArray key 
+    | oldKeyArray oldValueArray key
       n        "{ Class:SmallInteger }"
       newIndex "{ Class:SmallInteger }" |
 
@@ -1806,8 +1808,8 @@
 
 rehashFrom:startIndex
     "rehash elements starting at index - after a remove.
-     NOTE: this method is no longer needed; 
-	   the trick using DeletedEntry avoids the need to do this time 
+     NOTE: this method is no longer needed;
+	   the trick using DeletedEntry avoids the need to do this time
 	   consuming operation, making remove pretty fast :-)
     "
 
@@ -1846,11 +1848,11 @@
 
     n := self class goodSizeFrom:count.
     n == keyArray size ifTrue:[
-        keyArray atAllPut:nil.
-        valueArray atAllPut:nil.
+	keyArray atAllPut:nil.
+	valueArray atAllPut:nil.
     ] ifFalse:[
-        keyArray := self keyContainerOfSize:n.
-        valueArray := self valueContainerOfSize:n.
+	keyArray := self keyContainerOfSize:n.
+	valueArray := self valueContainerOfSize:n.
     ].
     tally := 0
 
@@ -1871,7 +1873,7 @@
      returns true; return nil if none is detected."
 
     self keysDo:[:key |
-        (aBlock value:key) ifTrue:[^ key].
+	(aBlock value:key) ifTrue:[^ key].
     ].
     ^ nil
 
@@ -1916,8 +1918,8 @@
      reverse mapping fast."
 
     aValue isNil ifTrue:[
-        "/ need a special case for that ...
-        ^ self includesIdenticalValue:aValue.
+	"/ need a special case for that ...
+	^ self includesIdenticalValue:aValue.
     ].
 
     ^ valueArray includes:aValue
@@ -1927,7 +1929,7 @@
 
      d := Dictionary new.
      d at:'1' put:'one'.
-     d includes:nil.   
+     d includes:nil.
     "
 
     "
@@ -1936,7 +1938,7 @@
      d := Dictionary new.
      d at:'1' put:'one'.
      d at:2 put:nil.
-     d includes:nil.   
+     d includes:nil.
     "
 
 !
@@ -1952,13 +1954,13 @@
     |idx|
 
     aValue isNil ifTrue:[
-        "/ need a special case for that ...
-        idx := 0.
-        [true] whileTrue:[
-            idx := valueArray identityIndexOf:nil startingAt:idx+1.
-            idx == 0 ifTrue:[^ false].
-            (keyArray at:idx) notNil ifTrue:[^ true].
-        ]
+	"/ need a special case for that ...
+	idx := 0.
+	[true] whileTrue:[
+	    idx := valueArray identityIndexOf:nil startingAt:idx+1.
+	    idx == 0 ifTrue:[^ false].
+	    (keyArray at:idx) notNil ifTrue:[^ true].
+	]
     ].
 
     ^ valueArray includesIdentical:aValue
@@ -1968,7 +1970,7 @@
 
      d := Dictionary new.
      d at:'1' put:'one'.
-     d includes:nil.   
+     d includes:nil.
     "
 
     "
@@ -1977,7 +1979,7 @@
      d := Dictionary new.
      d at:'1' put:'one'.
      d at:2 put:nil.
-     d includes:nil.   
+     d includes:nil.
     "
 
 !
@@ -2009,16 +2011,16 @@
     |idx count|
 
     anObject isNil ifTrue:[
-        "/ need a special case for that ...
-        idx := 0.
-        count := 0.
-        [true] whileTrue:[
-            idx := valueArray identityIndexOf:nil startingAt:idx+1.
-            idx == 0 ifTrue:[^ count].
-            (keyArray at:idx) notNil ifTrue:[
-                count := count + 1
-            ]
-        ]
+	"/ need a special case for that ...
+	idx := 0.
+	count := 0.
+	[true] whileTrue:[
+	    idx := valueArray identityIndexOf:nil startingAt:idx+1.
+	    idx == 0 ifTrue:[^ count].
+	    (keyArray at:idx) notNil ifTrue:[
+		count := count + 1
+	    ]
+	]
     ].
 
     ^ valueArray occurrencesOf:anObject
@@ -2028,7 +2030,7 @@
 
      d := Dictionary new.
      d at:'1' put:'one'.
-     d occurrencesOf:nil.   
+     d occurrencesOf:nil.
     "
 
     "
@@ -2038,7 +2040,7 @@
      d at:'1' put:'one'.
      d at:2 put:nil.
      d at:5 put:nil.
-     d occurrencesOf:nil.   
+     d occurrencesOf:nil.
     "
 
 ! !
@@ -2053,13 +2055,9 @@
 !Dictionary class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Dictionary.st,v 1.108 2012/08/14 07:05:43 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Dictionary.st,v 1.108 2012-08-14 07:05:43 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Dictionary.st,v 1.108 2012/08/14 07:05:43 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: Dictionary.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Dictionary.st,v 1.108 2012-08-14 07:05:43 stefan Exp $'
 ! !
--- a/DirectoryStream.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/DirectoryStream.st	Sat Jan 19 01:30:00 2013 +0000
@@ -77,6 +77,7 @@
 # endif
 
 # undef INT
+# undef UINT
 # undef Array
 # undef Number
 # undef Method
@@ -133,7 +134,9 @@
 # ifdef __DEF_Processor
 #  define Processor __DEF_Processor
 # endif
-# define INT int
+
+# define INT STX_INT
+# define UINT STX_UINT
 
 # define __HANDLEVal(o)  (HANDLE)__externalAddressVal(o)
 #endif /* WIN32 */
@@ -143,6 +146,297 @@
 %}
 ! !
 
+!DirectoryStream primitiveFunctions!
+%{
+
+#ifndef HAS_OPENDIR
+
+# if defined(__VMS__)
+
+#  define lib$find_file LIB$FIND_FILE
+
+/*
+**  VMS readdir() routines.
+**  Written by Rich $alz, <rsalz@bbn.com> in August, 1990.
+**  This code has no copyright.
+*/
+
+/* 12-NOV-1990 added d_namlen field and special case "." name -GJC@MITECH.COM
+ */
+
+#   ifndef _STDIO_H_INCLUDED_
+#    include <stdio.h>
+#    define _STDIO_H_INCLUDED_
+#   endif
+
+#   ifndef _CTYPE_H_INCLUDED_
+#    include <ctype.h>
+#    define _CTYPE_H_INCLUDED_
+#   endif
+
+#   ifndef _ERRNO_H_INCLUDED_
+#    include <errno.h>
+#    define _ERRNO_H_INCLUDED_
+#   endif
+
+#   ifndef _DESCRIP_H_INCLUDED_
+#    include <descrip.h>
+#    define _DESCRIP_H_INCLUDED_
+#   endif
+
+#   ifndef _RMSDEF_H_INCLUDED_
+#    include <rmsdef.h>
+#    define _RMSDEF_H_INCLUDED_
+#   endif
+
+/*
+ * actually, the following has to go into dirent.h ...
+ */
+/* BEGIN included dirent.h
+ *
+**  Header file for VMS readdir() routines.
+**  Written by Rich $alz, <rsalz@bbn.com> in August, 1990.
+**  This code has no copyright.
+**
+**  You must #include <descrip.h> before this file.
+*/
+
+/* 12-NOV-1990 added d_namlen field -GJC@MITECH.COM */
+
+    /* Data structure returned by READDIR(). */
+struct dirent {
+    char        d_name[100];            /* File name            */
+    int         d_namlen;
+    int         vms_verscount;          /* Number of versions   */
+    int         vms_versions[20];       /* Version numbers      */
+};
+
+    /* Handle returned by opendir(), used by the other routines.  You
+     * are not supposed to care what's inside this structure. */
+typedef struct _dirdesc {
+    long                        context;
+    int                         vms_wantversions;
+    char                        *pattern;
+    struct dirent               entry;
+    struct dsc$descriptor_s     pat;
+} DIR;
+
+
+#define rewinddir(dirp)                 seekdir((dirp), 0L)
+
+
+extern DIR              *opendir();
+extern struct dirent    *readdir();
+extern long             telldir();
+extern void             seekdir();
+extern void             closedir();
+extern void             vmsreaddirversions();
+/*
+ * END dirent.h
+ */
+#define _DIRENT_H_INCLUDED_
+
+
+    /* Number of elements in vms_versions array */
+#define VERSIZE(e)      (sizeof e->vms_versions / sizeof e->vms_versions[0])
+
+    /* Linked in later. */
+extern char     *strrchr();
+extern char     *strcpy();
+/*  Don't need this when all these programs are lumped together.    RLD
+extern char     *malloc();
+*/
+
+/*
+**  Open a directory, return a handle for later use.
+*/
+DIR *
+opendir(name)
+    char        *name;
+{
+    DIR                 *dd;
+
+    /* Get memory for the handle, and the pattern. */
+    if ((dd = (DIR *)malloc(sizeof *dd)) == NULL) {
+	__threadErrno = ENOMEM;
+	return NULL;
+    }
+
+    if (strcmp(".",name) == 0) name = "";
+
+    dd->pattern = malloc((unsigned int)(strlen(name) + sizeof "*.*" + 1));
+    if (dd->pattern == NULL) {
+	free((char *)dd);
+	__threadErrno = ENOMEM;
+	return NULL;
+    }
+
+    /* Fill in the fields; mainly playing with the descriptor. */
+    (void)sprintf(dd->pattern, "%s*.*", name);
+    dd->context = 0;
+    dd->vms_wantversions = 0;
+    dd->pat.dsc$a_pointer = dd->pattern;
+    dd->pat.dsc$w_length = strlen(dd->pattern);
+    dd->pat.dsc$b_dtype = DSC$K_DTYPE_T;
+    dd->pat.dsc$b_class = DSC$K_CLASS_S;
+
+    return dd;
+}
+
+/*
+**  Set the flag to indicate we want versions or not.
+*/
+void
+vmsreaddirversions(dd, flag)
+    DIR                 *dd;
+    int                 flag;
+{
+    dd->vms_wantversions = flag;
+}
+
+/*
+**  Free up an opened directory.
+*/
+void
+closedir(dd)
+    DIR                 *dd;
+{
+    free(dd->pattern);
+    free((char *)dd);
+}
+
+/*
+**  Collect all the version numbers for the current file.
+*/
+static void
+collectversions(dd)
+    DIR                                 *dd;
+{
+    struct dsc$descriptor_s     pat;
+    struct dsc$descriptor_s     res;
+    struct dirent               *e;
+    char                        *p;
+    char                        buff[sizeof dd->entry.d_name];
+    int                                 i;
+    char                        *text;
+    long                        context;
+
+    /* Convenient shorthand. */
+    e = &dd->entry;
+
+    /* Add the version wildcard, ignoring the "*.*" put on before */
+    i = strlen(dd->pattern);
+    text = malloc((unsigned int)(i + strlen(e->d_name)+ 2 + 1));
+    if (text == NULL)
+	return;
+    (void)strcpy(text, dd->pattern);
+    (void)sprintf(&text[i - 3], "%s;*", e->d_name);
+
+    /* Set up the pattern descriptor. */
+    pat.dsc$a_pointer = text;
+    pat.dsc$w_length = strlen(text);
+    pat.dsc$b_dtype = DSC$K_DTYPE_T;
+    pat.dsc$b_class = DSC$K_CLASS_S;
+
+    /* Set up result descriptor. */
+    res.dsc$a_pointer = buff;
+    res.dsc$w_length = sizeof buff - 2;
+    res.dsc$b_dtype = DSC$K_DTYPE_T;
+    res.dsc$b_class = DSC$K_CLASS_S;
+
+    /* Read files, collecting versions. */
+    for (context = 0; e->vms_verscount < VERSIZE(e); e->vms_verscount++) {
+	if (lib$find_file(&pat, &res, &context) == RMS$_NMF || context == 0)
+	    break;
+	buff[sizeof buff - 1] = '\0';
+	if (p = strchr(buff, ';'))
+	    e->vms_versions[e->vms_verscount] = atoi(p + 1);
+	else
+	    e->vms_versions[e->vms_verscount] = -1;
+    }
+
+    free(text);
+}
+
+/*
+**  Read the next entry from the directory.
+*/
+struct dirent *
+readdir(dd)
+    DIR *dd;
+{
+    struct dsc$descriptor_s res;
+    char                    *p;
+    char                    buff[sizeof dd->entry.d_name + 10];
+    int                     i;
+
+    /* Set up result descriptor, and get next file. */
+    res.dsc$a_pointer = buff;
+    res.dsc$w_length = sizeof buff - 2;
+    res.dsc$b_dtype = DSC$K_DTYPE_T;
+    res.dsc$b_class = DSC$K_CLASS_S;
+    if (lib$find_file(&dd->pat, &res, &dd->context) == RMS$_NMF
+     || dd->context == 0L)
+	/* None left... */
+	return NULL;
+
+    /* Force the buffer to end with a NUL. */
+    buff[sizeof buff - 1] = '\0';
+    for (p = buff; !isspace(*p); p++)
+	;
+    *p = '\0';
+
+    /* Skip any directory component and just copy the name. */
+    if (p = strchr(buff, ']'))
+	(void)strcpy(dd->entry.d_name, p + 1);
+    else
+	(void)strcpy(dd->entry.d_name, buff);
+
+    /* Clobber the version. */
+    if (p = strchr(dd->entry.d_name, ';'))
+	*p = '\0';
+
+    /* claus: empty dirs seems to leave *.* in the buffer ... */
+    if (strcmp(dd->entry.d_name, "*.*") == 0) {
+	return NULL;
+    }
+
+    dd->entry.d_namlen = strlen(dd->entry.d_name);
+
+    dd->entry.vms_verscount = 0;
+    if (dd->vms_wantversions)
+	collectversions(dd);
+    return &dd->entry;
+}
+
+/*
+**  Return something that can be used in a seekdir later.
+*/
+long
+telldir(dd)
+    DIR  *dd;
+{
+    return dd->context;
+}
+
+/*
+**  Return to a spot where we used to be.
+*/
+void
+seekdir(dd, pos)
+    DIR  *dd;
+    long pos;
+{
+    dd->context = pos;
+}
+
+#  define HAS_OPENDIR
+
+# endif /* __VMS__ */
+#endif /* not HAS_OPENDIR */
+%}
+! !
+
 !DirectoryStream class methodsFor:'documentation'!
 
 copyright
@@ -284,13 +578,7 @@
     lastErrorNumber notNil ifTrue:[^ self ioError].
     nextEntry notNil ifTrue:[
 	isUnix == true ifTrue:[
-	    "linux strings are in UTF8 (in contemporary linux versions)"
-	    [
-		nextEntry := nextEntry utf8Decoded.
-	    ] on:InvalidEncodingError do:[:ex|
-		"maybe there are old filenames in ISO8859-x,
-		 just keep them untranslated"
-	    ].
+	    nextEntry := OperatingSystem decodePath:nextEntry.
 	] ifFalse:[
 	    nextEntry := nextEntry asSingleByteStringIfPossible.
 	]
@@ -313,7 +601,7 @@
     ]
 ! !
 
-!DirectoryStream methodsFor:'instance release'!
+!DirectoryStream protectedMethodsFor:'instance release'!
 
 closeFile
     "low level close of a directoryStream"
@@ -343,8 +631,9 @@
 openForReading
     "open the file for readonly"
 
-    |ok entry|
+    |ok entry encodedPathName|
 
+    encodedPathName := OperatingSystem encodePath:pathName.
     mode := #readonly.
 %{
 #ifdef HAS_OPENDIR
@@ -353,106 +642,104 @@
 
     ok = false;
     if (__INST(dirPointer) == nil) {
-        path = __INST(pathName);
-        if (__isStringLike(path)) {
-            __BEGIN_INTERRUPTABLE__
-            __threadErrno = 0;
-            do {
-                path = __INST(pathName);
-                d = opendir((char *) __stringVal(path));
-            } while ((d == NULL) && (__threadErrno == EINTR));
-            __END_INTERRUPTABLE__
+	if (__isStringLike(encodedPathName)) {
+	    __BEGIN_INTERRUPTABLE__
+	    __threadErrno = 0;
+	    do {
+		d = opendir((char *) __stringVal(encodedPathName));
+	    } while ((d == NULL) && (__threadErrno == EINTR));
+	    __END_INTERRUPTABLE__
 
-            if (d == NULL) {
-                __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-            } else {
-                dp = __MKEXTERNALADDRESS(d); __INST(dirPointer) = dp; __STORE(self, dp);
-                ok = true;
-            }
-        }
+	    if (d == NULL) {
+		__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+	    } else {
+		dp = __MKEXTERNALADDRESS(d); __INST(dirPointer) = dp; __STORE(self, dp);
+		ok = true;
+	    }
+	}
     }
 #else
 # ifdef WIN32
     HANDLE d;
     OBJ path, dp;
     union {
-        char pattern[MAXPATHLEN];
-        wchar_t wpattern[MAXPATHLEN];
+	char pattern[MAXPATHLEN];
+	wchar_t wpattern[MAXPATHLEN];
     } uP;
     union {
-        WIN32_FIND_DATAA data;
-        WIN32_FIND_DATAW wdata;
+	WIN32_FIND_DATAA data;
+	WIN32_FIND_DATAW wdata;
     } uD;
 
     ok = false;
     if (__INST(dirPointer) == nil) {
-        path = __INST(pathName);
-        if (__isStringLike(path)) {
-            int l = __stringSize(path);
+	path = __INST(pathName);
+	if (__isStringLike(path)) {
+	    int l = __stringSize(path);
 
-            if (l < (MAXPATHLEN-4)) {
-                strncpy(uP.pattern, __stringVal(path), l);
-                strcpy(uP.pattern+l, "\\*");
+	    if (l < (MAXPATHLEN-4)) {
+		strncpy(uP.pattern, __stringVal(path), l);
+		strcpy(uP.pattern+l, "\\*");
 
-                do {
-                    __threadErrno = 0;
-                    d = STX_API_NOINT_CALL2( "FindFirstFileA", FindFirstFileA, uP.pattern, &uD.data );
-                } while ((d < 0) && (__threadErrno == EINTR));
+		do {
+		    __threadErrno = 0;
+		    d = STX_API_NOINT_CALL2( "FindFirstFileA", FindFirstFileA, uP.pattern, &uD.data );
+		} while ((d < 0) && (__threadErrno == EINTR));
 
-                if (d == INVALID_HANDLE_VALUE) {
-                    __INST(lastErrorNumber) = __mkSmallInteger(GetLastError());
-                } else {
-                    dp = __MKEXTERNALADDRESS(d); __INST(dirPointer) = dp; __STORE(self, dp);
-                    entry = __MKSTRING( uD.data.cFileName );
-                    ok = true;
-                }
-            }
-        }
-        else if (__isUnicode16String(path)) {
-            int l = __unicode16StringSize(path);
-            int i;
+		if (d == INVALID_HANDLE_VALUE) {
+		    __INST(lastErrorNumber) = __mkSmallInteger(GetLastError());
+		} else {
+		    dp = __MKEXTERNALADDRESS(d); __INST(dirPointer) = dp; __STORE(self, dp);
+		    entry = __MKSTRING( uD.data.cFileName );
+		    ok = true;
+		}
+	    }
+	}
+	else if (__isUnicode16String(path)) {
+	    int l = __unicode16StringSize(path);
+	    int i;
 
-            if (l < (MAXPATHLEN-4)) {
-                for (i=0; i<l; i++) {
-                    uP.wpattern[i] = __unicode16StringVal(path)[i];
-                }
-                uP.wpattern[i++] = '\\';
-                uP.wpattern[i++] = '*';
-                uP.wpattern[i] = 0;
+	    if (l < (MAXPATHLEN-4)) {
+		for (i=0; i<l; i++) {
+		    uP.wpattern[i] = __unicode16StringVal(path)[i];
+		}
+		uP.wpattern[i++] = '\\';
+		uP.wpattern[i++] = '*';
+		uP.wpattern[i] = 0;
 
-                do {
-                    __threadErrno = 0;
-                    d = STX_API_NOINT_CALL2( "FindFirstFileW", FindFirstFileW, uP.wpattern, &uD.wdata );
-                } while ((d < 0) && (__threadErrno == EINTR));
+		do {
+		    __threadErrno = 0;
+		    d = STX_API_NOINT_CALL2( "FindFirstFileW", FindFirstFileW, uP.wpattern, &uD.wdata );
+		} while ((d < 0) && (__threadErrno == EINTR));
 
-                if (d == INVALID_HANDLE_VALUE) {
-                    __INST(lastErrorNumber) = __mkSmallInteger(GetLastError());
-                } else {
-                    dp = __MKEXTERNALADDRESS(d); __INST(dirPointer) = dp; __STORE(self, dp);
-                    entry = __MKU16STRING( uD.wdata.cFileName );
-                    ok = true;
-                }
-            }
-        }
+		if (d == INVALID_HANDLE_VALUE) {
+		    __INST(lastErrorNumber) = __mkSmallInteger(GetLastError());
+		} else {
+		    dp = __MKEXTERNALADDRESS(d); __INST(dirPointer) = dp; __STORE(self, dp);
+		    entry = __MKU16STRING( uD.wdata.cFileName );
+		    ok = true;
+		}
+	    }
+	}
     }
 # endif
 #endif
 %}.
     ok isNil ifTrue:[
-        "
-         opendir not avalable - use slower pipe
-        "
-        ^ PipeStream readingFrom:('cd ' , pathName , '; ls -a')
+	"
+	 opendir not avalable - use slower pipe
+	"
+	^ PipeStream readingFrom:('cd ' , pathName , '; ls -a')
     ].
 
     (ok == true) ifTrue:[
-        Lobby register:self.
-        entry isNil ifTrue:[
-            self nextLine. "read 1st entry into readAheadEntry buffer"
-        ] ifFalse:[
-            readAheadEntry := entry.
-        ].
-        ^ self
+	Lobby register:self.
+	entry isNil ifTrue:[
+	    self nextLine. "read 1st entry into readAheadEntry buffer"
+	] ifFalse:[
+	    readAheadEntry := entry.
+	].
+	^ self
     ].
     dirPointer notNil ifTrue:[^ self errorAlreadyOpen].
     lastErrorNumber notNil ifTrue:[^ self openError:lastErrorNumber].
@@ -501,13 +788,9 @@
 !DirectoryStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/DirectoryStream.st,v 1.76 2012/10/26 09:53:04 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/DirectoryStream.st,v 1.78 2013-01-10 11:43:30 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/DirectoryStream.st,v 1.76 2012/10/26 09:53:04 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: DirectoryStream.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/DirectoryStream.st,v 1.78 2013-01-10 11:43:30 cg Exp $'
 ! !
--- a/DoubleArray.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/DoubleArray.st	Sat Jan 19 01:30:00 2013 +0000
@@ -102,13 +102,5 @@
 !DoubleArray class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/DoubleArray.st,v 1.21 2011/11/25 15:38:12 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: DoubleArray.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/DoubleArray.st,v 1.21 2011-11-25 15:38:12 cg Exp $'
 ! !
-
-
-
-
--- a/EncodedStream.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/EncodedStream.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 2004 by eXept Software AG
-	      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
@@ -23,7 +23,7 @@
 copyright
 "
  COPYRIGHT (c) 2004 by eXept Software AG
-	      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
@@ -46,17 +46,17 @@
     |encoding decoder decodedStream|
 
     aStream isPositionable ifTrue:[
-	encoding := CharacterEncoder guessEncodingOfStream:aStream.
-	(encoding notNil
-	and:[ encoding ~= #'iso8859-1'
-	and:[ encoding ~= #'ascii' ]]) ifTrue:[
-	    decoder := CharacterEncoder encoderFor:encoding.
-	].
+        encoding := CharacterEncoder guessEncodingOfStream:aStream.
+        (encoding notNil
+        and:[ encoding ~= #'iso8859-1' 
+        and:[ encoding ~= #'ascii' ]]) ifTrue:[
+            decoder := CharacterEncoder encoderFor:encoding.
+        ].
     ].
     decoder isNil ifTrue:[
-	"/ setup for no-encoding; allows for a later switch to a real encoder,
-	"/ whenever an encoding pragma is encountered later.
-	decoder := CharacterEncoder nullEncoderInstance.
+        "/ setup for no-encoding; allows for a later switch to a real encoder,
+        "/ whenever an encoding pragma is encountered later.
+        decoder := CharacterEncoder nullEncoderInstance.
     ].
     decodedStream := self stream:aStream encoder:decoder.
     decodedStream skipEncodingChunk.
@@ -88,7 +88,7 @@
     "if our base stream hat a pathname, delegate..."
 
     stream isNil ifTrue:[
-	^ nil.
+        ^ nil.
     ].
     ^ stream pathName.
 !
@@ -118,10 +118,10 @@
 contents
 
     ^String streamContents:
-	[:s|
-	[ stream atEnd ] whileFalse:
-	    [s nextPut: stream next]
-	]
+        [:s|
+        [ stream atEnd ] whileFalse:
+            [s nextPut: stream next]
+        ]
 
     "Created: / 25-02-2010 / 23:34:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -255,14 +255,14 @@
     |pos chunk token|
 
     stream isPositionable ifFalse:[
-	^ self
+        ^ self
     ].
 
     pos := self position.
     chunk := self nextChunk.
     [
-	"/ if this is a valid chunk (i.e. not a comment or encoding-directive),
-	"/ then position back, so it will be processed as usual.
+        "/ if this is a valid chunk (i.e. not a comment or encoding-directive),
+        "/ then position back, so it will be processed as usual.
 "/ We could parse here, but this is overkill, since we are only interested in the fact,
 "/ that there is anything else than a comment in the chunk.
 "/        result := (Parser for:chunk)
@@ -270,19 +270,19 @@
 "/            ignoreWarnings:true;
 "/            parseMethodBody.
 
-	token := (Scanner for:chunk)
-		     ignoreErrors:true;
-		     ignoreWarnings:true;
-		     nextToken.
+        token := (Scanner for:chunk)
+                     ignoreErrors:true;
+                     ignoreWarnings:true;
+                     nextToken.
 
-	token ~= #EOF ifTrue:[
-	    self position:pos
-	].
+        token ~= #EOF ifTrue:[
+            self position:pos
+        ].
     ] on:Parser parseWarningSignal do:[:ex|
-	"really ignore any error.
-	 Even setting ignorError will output diagnostics here
-	 during standalone startup when debugging"
-	ex proceedWith:#ignore.
+        "really ignore any error.
+         Even setting ignorError will output diagnostics here
+         during standalone startup when debugging"
+        ex proceedWith:#ignore.
     ].
 
     "Modified: / 29-07-2011 / 17:42:11 / cg"
@@ -291,13 +291,13 @@
 !EncodedStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/EncodedStream.st,v 1.26 2012/08/31 18:01:03 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/EncodedStream.st,v 1.26 2012-08-31 18:01:03 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/EncodedStream.st,v 1.26 2012/08/31 18:01:03 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/EncodedStream.st,v 1.26 2012-08-31 18:01:03 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: EncodedStream.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '§ Id: EncodedStream.st 10643 2011-06-08 21:53:07Z vranyj1  §'
 ! !
--- a/Error.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Error.st	Sat Jan 19 01:30:00 2013 +0000
@@ -85,18 +85,11 @@
 !Error class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Error.st,v 1.11 2010/11/17 16:53:31 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Error.st,v 1.11 2010-11-17 16:53:31 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Error.st,v 1.11 2010/11/17 16:53:31 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Error.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Error.st,v 1.11 2010-11-17 16:53:31 cg Exp $'
 ! !
 
 Error initialize!
-
-
-
--- a/ExecutableFunction.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ExecutableFunction.st	Sat Jan 19 01:30:00 2013 +0000
@@ -416,16 +416,9 @@
 !ExecutableFunction class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ExecutableFunction.st,v 1.57 2012/07/26 14:34:24 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExecutableFunction.st,v 1.57 2012-07-26 14:34:24 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ExecutableFunction.st,v 1.57 2012/07/26 14:34:24 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: ExecutableFunction.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExecutableFunction.st,v 1.57 2012-07-26 14:34:24 cg Exp $'
 ! !
-
-
-
--- a/ExternalAddress.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ExternalAddress.st	Sat Jan 19 01:30:00 2013 +0000
@@ -142,6 +142,7 @@
     "
 ! !
 
+
 !ExternalAddress methodsFor:'Compatibility-Squeak'!
 
 beNull
@@ -196,7 +197,7 @@
      C pointer"
 
 %{  /* NOCONTEXT */
-    if (__isExternalAddress(anExternalAddress)
+    if ((__Class(anExternalAddress) == __Class(self))
      && (__externalAddressVal(self) == __externalAddressVal(anExternalAddress))) {
 	RETURN (true);
     }
@@ -332,16 +333,9 @@
 !ExternalAddress class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ExternalAddress.st,v 1.30 2010/12/24 09:28:27 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalAddress.st,v 1.31 2013-01-11 11:46:17 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ExternalAddress.st,v 1.30 2010/12/24 09:28:27 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: ExternalAddress.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalAddress.st,v 1.31 2013-01-11 11:46:17 cg Exp $'
 ! !
-
-
-
--- a/ExternalBytes.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ExternalBytes.st	Sat Jan 19 01:30:00 2013 +0000
@@ -56,7 +56,7 @@
 	    }
 	}
 	if (! found) {
-	    console_printf("ExternalBytes [warning]: **** free: alien %lx (allocated somewhere else ?))\n", (long)ptr);
+	    console_printf("ExternalBytes [warning]: **** free: alien %"_lx_" (allocated somewhere else ?))\n", (INT)ptr);
 	}
     }
 }
@@ -75,7 +75,7 @@
 	found = 0;
 	for (this=mallocList; this; this=this->next) {
 	    if (this->chunk == ptr) {
-		console_printf("ExternalBytes [warning]: **** %016lx already allocated (freed somewhere else ?)\n", (long)ptr);
+		console_printf("ExternalBytes [warning]: **** %016"_lx_" already allocated (freed somewhere else ?)\n", (INT)ptr);
 		found++;
 	    }
 	}
@@ -98,7 +98,7 @@
 	ptr = malloc(nBytes);
 
 	if (@global(TraceMalloc) == true) {
-	    console_printf("ExternalBytes [info]: allocated %d bytes at: %016lx\n", nBytes, (long)ptr);
+	    console_printf("ExternalBytes [info]: allocated %d bytes at: %016"_lx_"\n", nBytes, (INT)ptr);
 	}
 
 	addToMallocList(ptr, nBytes);
@@ -129,7 +129,7 @@
 	addToMallocList(newPtr, nBytes);
 
 	if (@global(TraceMalloc) == true) {
-	    console_printf("ExternalBytes [info]: realloc %d bytes for %016lx at: %016lx\n", nBytes, (long)ptr, (long)newPtr);
+	    console_printf("ExternalBytes [info]: realloc %d bytes for %016"_lx_" at: %016"_lx_"\n", nBytes, (INT)ptr, (INT)newPtr);
 	}
 	return newPtr;
 }
@@ -483,7 +483,7 @@
     struct mallocList *entry;
 
     for (entry = mallocList; entry; entry=entry->next) {
-	console_printf("  %lx (%d)\n", (long)entry->chunk, entry->size);
+	console_printf("  %"_lx_" (%d)\n", (INT)(entry->chunk), entry->size);
     }
 %}
     "
@@ -509,7 +509,7 @@
 
     while ((entry = mallocList) != (struct mallocList *)0) {
 	if (@global(TraceMalloc) == true ) {
-	    console_printf("ExternalBytes [info]: **** forced free of %lx (%d)\n", (long)entry->chunk, entry->size);
+	    console_printf("ExternalBytes [info]: **** forced free of %"_lx_" (%d)\n", (INT)entry->chunk, entry->size);
 	}
 	__stx_free(entry->chunk);
     }
@@ -816,131 +816,131 @@
     if ((__isBytes(aCollection) || __isWords(aCollection) || __isExternalBytesLike(aCollection))
      && __bothSmallInteger(start, stop)
      && __isSmallInteger(repStart)) {
-        startIndex = __intVal(start) - 1;
-        if (startIndex >= 0) {
-            dst = (unsigned char *)__INST(address_) + startIndex;
-            nIndex = __smallIntegerVal(__INST(size));
+	startIndex = __intVal(start) - 1;
+	if (startIndex >= 0) {
+	    dst = (unsigned char *)__INST(address_) + startIndex;
+	    nIndex = __smallIntegerVal(__INST(size));
 
-            stopIndex = __intVal(stop) - 1;
-            count = stopIndex - startIndex + 1;
-            if (count == 0) {
-                RETURN ( self );
-            }
+	    stopIndex = __intVal(stop) - 1;
+	    count = stopIndex - startIndex + 1;
+	    if (count == 0) {
+		RETURN ( self );
+	    }
 
-            if ((count > 0) && (stopIndex < nIndex)) {
-                repStartIndex = __intVal(repStart) - 1;
-                if (repStartIndex >= 0) {
-                    if (__isExternalBytesLike(aCollection)) {
-                        OBJ sz;
+	    if ((count > 0) && (stopIndex < nIndex)) {
+		repStartIndex = __intVal(repStart) - 1;
+		if (repStartIndex >= 0) {
+		    if (__isExternalBytesLike(aCollection)) {
+			OBJ sz;
 
-                        src = __externalBytesVal(aCollection);
-                        if (src == 0) goto fallBack;
+			src = __externalBytesVal(aCollection);
+			if (src == 0) goto fallBack;
 
-                        sz = __externalBytesSize(aCollection);
-                        if (__isSmallInteger(sz)) {
-                            repNIndex = __smallIntegerVal(sz);
-                        } else {
-                            repNIndex = -1; /* unknown */
-                        }
-                        src = src + repStartIndex;
-                    } else {
-                        repNIndex = __qSize(aCollection) - OHDR_SIZE;
-                        src = __byteArrayVal(aCollection) + repStartIndex;
-                        if ((cls = __qClass(aCollection)) != @global(ByteArray)) {
-                            int nInst;
+			sz = __externalBytesSize(aCollection);
+			if (__isSmallInteger(sz)) {
+			    repNIndex = __smallIntegerVal(sz);
+			} else {
+			    repNIndex = -1; /* unknown */
+			}
+			src = src + repStartIndex;
+		    } else {
+			repNIndex = __qSize(aCollection) - OHDR_SIZE;
+			src = __byteArrayVal(aCollection) + repStartIndex;
+			if ((cls = __qClass(aCollection)) != @global(ByteArray)) {
+			    int nInst;
 
-                            nInst = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-                            src += nInst;
-                            repNIndex -= nInst;
-                        }
-                    }
+			    nInst = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+			    src += nInst;
+			    repNIndex -= nInst;
+			}
+		    }
 
-                    repStopIndex = repStartIndex + (stopIndex - startIndex);
-                    if (repStopIndex < repNIndex) {
-                        if (aCollection == self) {
-                            /* take care of overlapping copy */
-                            if (src < dst) {
-                                /* must do a reverse copy */
-                                src += count;
-                                dst += count;
-                                while (count-- > 0) {
-                                    *--dst = *--src;
-                                }
-                                RETURN ( self );
-                            }
-                        }
+		    repStopIndex = repStartIndex + (stopIndex - startIndex);
+		    if (repStopIndex < repNIndex) {
+			if (aCollection == self) {
+			    /* take care of overlapping copy */
+			    if (src < dst) {
+				/* must do a reverse copy */
+				src += count;
+				dst += count;
+				while (count-- > 0) {
+				    *--dst = *--src;
+				}
+				RETURN ( self );
+			    }
+			}
 
 #ifdef memcpy4
-                        if (((unsigned INT)src & 3) == ((unsigned INT)dst & 3)) {
-                            int nW;
+			if (((unsigned INT)src & 3) == ((unsigned INT)dst & 3)) {
+			    int nW;
 
-                            /* copy unaligned part */
-                            while (count && ((unsigned INT)src & 3)) {
-                                *dst++ = *src++;
-                                count--;
-                            }
+			    /* copy unaligned part */
+			    while (count && ((unsigned INT)src & 3)) {
+				*dst++ = *src++;
+				count--;
+			    }
 
-                            if (count > 0) {
-                                /* copy aligned part */
-                                nW = count >> 2;
-                                memcpy4(dst, src, nW);
-                                if ((count = count & 3) != 0) {
-                                    /* copy any remaining part */
-                                    src += (nW<<2);
-                                    dst += (nW<<2);
-                                    while (count--) {
-                                        *dst++ = *src++;
-                                    }
-                                }
-                            }
-                            RETURN ( self );
-                        }
+			    if (count > 0) {
+				/* copy aligned part */
+				nW = count >> 2;
+				memcpy4(dst, src, nW);
+				if ((count = count & 3) != 0) {
+				    /* copy any remaining part */
+				    src += (nW<<2);
+				    dst += (nW<<2);
+				    while (count--) {
+					*dst++ = *src++;
+				    }
+				}
+			    }
+			    RETURN ( self );
+			}
 #else
 # if __POINTER_SIZE__ == 8
-                        if (((unsigned INT)src & 7) == ((unsigned INT)dst & 7)) {
-                            /* copy unaligned part */
-                            while (count && ((unsigned INT)src & 7)) {
-                                *dst++ = *src++;
-                                count--;
-                            }
+			if (((unsigned INT)src & 7) == ((unsigned INT)dst & 7)) {
+			    /* copy unaligned part */
+			    while (count && ((unsigned INT)src & 7)) {
+				*dst++ = *src++;
+				count--;
+			    }
 
-                            /* copy aligned part */
-                            while (count >= 8) {
-                                ((unsigned INT *)dst)[0] = ((unsigned INT *)src)[0];
-                                dst += 8;
-                                src += 8;
-                                count -= 8;
-                            }
-                            while (count--) {
-                                *dst++ = *src++;
-                            }
-                            RETURN ( self );
-                        }
+			    /* copy aligned part */
+			    while (count >= 8) {
+				((unsigned INT *)dst)[0] = ((unsigned INT *)src)[0];
+				dst += 8;
+				src += 8;
+				count -= 8;
+			    }
+			    while (count--) {
+				*dst++ = *src++;
+			    }
+			    RETURN ( self );
+			}
 # endif /* 64bit */
 #endif /* memcpy4 */
 
 #ifdef FAST_MEMCPY
-                        memcpy(dst, src, count);
+			memcpy(dst, src, count);
 #else
 # ifdef __UNROLL_LOOPS__
-                        while (count >= 8) {
-                            dst[0] = src[0]; dst[1] = src[1];
-                            dst[2] = src[2]; dst[3] = src[3];
-                            dst[4] = src[4]; dst[5] = src[5];
-                            dst[6] = src[6]; dst[7] = src[7];
-                            dst += 8; src += 8;
-                            count -= 8;
-                        }
+			while (count >= 8) {
+			    dst[0] = src[0]; dst[1] = src[1];
+			    dst[2] = src[2]; dst[3] = src[3];
+			    dst[4] = src[4]; dst[5] = src[5];
+			    dst[6] = src[6]; dst[7] = src[7];
+			    dst += 8; src += 8;
+			    count -= 8;
+			}
 # endif /* __UNROLL_LOOPS__ */
-                        while (count-- > 0) {
-                            *dst++ = *src++;
-                        }
+			while (count-- > 0) {
+			    *dst++ = *src++;
+			}
 #endif
-                        RETURN ( self );
-                    }
-                }
-            }
-        }
+			RETURN ( self );
+		    }
+		}
+	    }
+	}
     }
 fallBack: ;
 %}.
@@ -951,29 +951,29 @@
 
     "
      ((ExternalBytes unprotectedNew:16)
-            replaceBytesFrom:1 to:8
-            with:#[10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160]
-            startingAt:1) copy
+	    replaceBytesFrom:1 to:8
+	    with:#[10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160]
+	    startingAt:1) copy
 
      (ExternalBytes unprotectedNew:16)
-            replaceBytesFrom:3 to:10
-            with:#[10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160]
-            startingAt:4
+	    replaceBytesFrom:3 to:10
+	    with:#[10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160]
+	    startingAt:4
 
      (ExternalBytes unprotectedNew:16)
-            replaceBytesFrom:3 to:4
-            with:#[10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160]
-            startingAt:1
+	    replaceBytesFrom:3 to:4
+	    with:#[10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160]
+	    startingAt:1
 
      (ExternalBytes unprotectedNew:16)
-            replaceBytesFrom:0 to:9
-            with:#[10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160]
-            startingAt:1
+	    replaceBytesFrom:0 to:9
+	    with:#[10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160]
+	    startingAt:1
 
      (ExternalBytes unprotectedNew:16)
-            replaceBytesFrom:1 to:10
-            with:#[10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160]
-            startingAt:0
+	    replaceBytesFrom:1 to:10
+	    with:#[10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160]
+	    startingAt:0
     "
 ! !
 
@@ -1310,18 +1310,11 @@
 !ExternalBytes class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ExternalBytes.st,v 1.84 2012/04/24 14:58:43 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalBytes.st,v 1.85 2013-01-08 17:55:11 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ExternalBytes.st,v 1.84 2012/04/24 14:58:43 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: ExternalBytes.st 10807 2012-05-05 21:58:24Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalBytes.st,v 1.85 2013-01-08 17:55:11 cg Exp $'
 ! !
 
 ExternalBytes initialize!
-
-
-
--- a/ExternalFunction.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ExternalFunction.st	Sat Jan 19 01:30:00 2013 +0000
@@ -972,18 +972,11 @@
 !ExternalFunction class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ExternalFunction.st,v 1.27 2009/11/05 16:26:28 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalFunction.st,v 1.27 2009-11-05 16:26:28 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ExternalFunction.st,v 1.27 2009/11/05 16:26:28 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: ExternalFunction.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalFunction.st,v 1.27 2009-11-05 16:26:28 stefan Exp $'
 ! !
 
 ExternalFunction initialize!
-
-
-
--- a/ExternalFunctionCallback.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ExternalFunctionCallback.st	Sat Jan 19 01:30:00 2013 +0000
@@ -27,6 +27,22 @@
 # include <ffi.h>
 # define MAX_ARGS    128
 
+# ifdef USE_STANDARD_FFI
+#  define __get_ffi_type_sint() &ffi_type_sint
+#  define __get_ffi_type_sint8() &ffi_type_sint8
+#  define __get_ffi_type_sint16() &ffi_type_sint16
+#  define __get_ffi_type_sint32() &ffi_type_sint32
+#  define __get_ffi_type_sint64() &ffi_type_sint64
+#  define __get_ffi_type_uint() &ffi_type_uint
+#  define __get_ffi_type_uint8() &ffi_type_uint8
+#  define __get_ffi_type_uint16() &ffi_type_uint16
+#  define __get_ffi_type_uint32() &ffi_type_uint32
+#  define __get_ffi_type_uint64() &ffi_type_uint64
+#  define __get_ffi_type_float() &ffi_type_float
+#  define __get_ffi_type_double() &ffi_type_double
+#  define __get_ffi_type_void() &ffi_type_void
+#  define __get_ffi_type_pointer() &ffi_type_pointer
+# else
 extern ffi_type *__get_ffi_type_sint();
 extern ffi_type *__get_ffi_type_sint8();
 extern ffi_type *__get_ffi_type_sint16();
@@ -41,6 +57,7 @@
 extern ffi_type *__get_ffi_type_double();
 extern ffi_type *__get_ffi_type_void();
 extern ffi_type *__get_ffi_type_pointer();
+# endif
 
 #endif
 
@@ -56,7 +73,7 @@
 void
 ExternalFunctionCallback__closure_wrapper_fn(ffi_cif* cif, void* resp, void** args, void* userdata)
 {
-    int actionIndex = (int)userdata;
+    INT actionIndex = (INT)userdata;
     int i;
     OBJ st_argVector = nil;
     OBJ st_actionVector, st_callBack = nil, st_result;
@@ -68,7 +85,7 @@
     double doubleResult;
 
     if (@global(ExternalFunctionCallback:Verbose) == true) {
-	fprintf(stderr, "ExternalFunctionCallback(wrapper): actionIndex=%d resp*=%x\n", actionIndex, resp);
+	fprintf(stderr, "ExternalFunctionCallback(wrapper): actionIndex=%"_ld_" resp*=%"_lx_"\n", actionIndex, (INT)resp);
 	fflush(stderr);
 	fprintf(stderr, "ExternalFunctionCallback(wrapper): nargs=%d\n", cif->nargs);
 	fflush(stderr);
@@ -107,14 +124,14 @@
 	    st_arg = __MKEXTERNALADDRESS( *(void **)(args[i]) );
 	} else {
 	    if (@global(ExternalFunctionCallback:Verbose) == true) {
-		fprintf(stderr, "ExternalFunctionCallback(wrapper): invalid argument type %d - arg %d\n", argType, i);
+		fprintf(stderr, "ExternalFunctionCallback(wrapper): invalid argument type %"_lx_" - arg %d\n", (INT)argType, i);
 	    }
 	}
 
 	__UNPROTECT__(st_argVector);
 
 	if (@global(ExternalFunctionCallback:Verbose) == true) {
-	    fprintf(stderr, "ExternalFunctionCallback(wrapper): st-arg for %x is %x\n", *(unsigned int *)(args[i]), st_arg);
+	    fprintf(stderr, "ExternalFunctionCallback(wrapper): st-arg for %"_lx_" is %"_lx_"\n", *(unsigned INT *)(args[i]), (INT)st_arg);
 	}
 	__ArrayInstPtr(st_argVector)->a_element[i] = st_arg; __STORE(st_argVector, st_arg);
     }
@@ -144,11 +161,11 @@
 	static struct inlineCache value_snd = _DUMMYILC1;
 
 	if (@global(ExternalFunctionCallback:Verbose) == true) {
-	    fprintf(stderr, "ExternalFunctionCallback(wrapper): sending value: to %x..\n", st_callBack);
+	    fprintf(stderr, "ExternalFunctionCallback(wrapper): sending value: to %"_lx_"..\n", (INT)st_callBack);
 	}
 	st_result = _SEND1(st_callBack, @symbol(callFromCWith:), nil, &value_snd, st_argVector);
 	if (@global(ExternalFunctionCallback:Verbose) == true) {
-	    fprintf(stderr, "ExternalFunctionCallback(wrapper): result is %x\n", st_result);
+	    fprintf(stderr, "ExternalFunctionCallback(wrapper): result is %"_lx_"\n", (INT)st_result);
 	}
     }
 
@@ -205,7 +222,7 @@
 	*(void **)resp = (void *)__externalAddressVal( st_result );
     } else {
 	if (@global(ExternalFunctionCallback:Verbose) == true) {
-	    fprintf(stderr, "ExternalFunctionCallback(wrapper): invalid result type %d\n", retType, i);
+	    fprintf(stderr, "ExternalFunctionCallback(wrapper): invalid result type %"_ld_"\n", (INT)retType);
 	}
 	*(void **)resp = 0;
     }
@@ -214,11 +231,11 @@
 void
 ExternalFunctionCallback__test_call_closure(INTFUNC f)
 {
-    int result = 0;
+    INT result = 0;
 
-    printf("doCall_closure: calling closure %x(123)...\n", f);
+    printf("doCall_closure: calling closure %"_lx_"(123)...\n", (INT)f);
     result = (*f)(123);
-    printf("doCall_closure: back; result is %x...\n", result);
+    printf("doCall_closure: back; result is %"_lx_"...\n", (INT)result);
 }
 #endif /* HAVE_FFI */
 
@@ -411,9 +428,9 @@
 	} else
 	    goto badArg;
     }
-    fprintf(stderr, "ExternalFunctionCallback: calling callBack %x(%x, %x)\n", f, c_args[0], c_args[1]);
+    fprintf(stderr, "ExternalFunctionCallback: calling callBack %"_lx_"(%"_lx_", %"_lx_")\n", (INT)f, (INT)(c_args[0]), (INT)(c_args[1]));
     result = (*f)(c_args[0], c_args[1], c_args[2], c_args[3], c_args[4]);
-    fprintf(stderr, "ExternalFunctionCallback: result from callBack is %x\n", result);
+    fprintf(stderr, "ExternalFunctionCallback: result from callBack is %"_lx_"\n", (INT)result);
     RETURN(true);
 
 badArg: ;
@@ -493,7 +510,7 @@
 
 code
     self hasCode ifFalse:[
-        self generateClosure
+	self generateClosure
     ].
     ^ super code
 
@@ -765,7 +782,7 @@
     }
 
     if (@global(ExternalFunctionCallback:Verbose) == true) {
-	printf("prep_cif cif-ptr=%x\n", cif);
+	printf("prep_cif cif-ptr=%"_lx_"\n", (INT)cif);
     }
 
     if (ffi_prep_cif(cif, __callType, __numArgsWanted, __returnType, argTypePtrs) != FFI_OK) {
@@ -773,22 +790,22 @@
     }
 
     if (@global(ExternalFunctionCallback:Verbose) == true) {
-	printf("closure is 0x%x (%d bytes)\n", pcl, sizeof(ffi_closure));
-	printf("index is %d\n", __intVal(callBackIndex));
+	printf("closure is 0x%"_lx_" (%d bytes)\n", (INT)pcl, (int)sizeof(ffi_closure));
+	printf("index is %"_ld_"\n", __intVal(callBackIndex));
     }
     if (ffi_prep_closure(pcl, cif, ExternalFunctionCallback__closure_wrapper_fn, (void *)(__intVal(callBackIndex)) /* userdata */) != FFI_OK) {
 	__FAIL__(@symbol(FFIPrepareClosureFailed))
     }
     if (@global(ExternalFunctionCallback:Verbose) == true) {
-	printf("pcl->cif is 0x%x\n", pcl->cif);
-	printf("pcl->fun is 0x%x\n", pcl->fun);
-	printf("pcl code at %x is:\n", pcl);
+	printf("pcl->cif is 0x%"_lx_"\n", (INT)(pcl->cif));
+	printf("pcl->fun is 0x%"_lx_"\n", (INT)(pcl->fun));
+	printf("pcl code at %"_lx_" is:\n", (INT)pcl);
 	printf("  %02x %02x %02x %02x\n", ((unsigned char *)pcl)[0],((unsigned char *)pcl)[1],((unsigned char *)pcl)[2],((unsigned char *)pcl)[3]);
 	printf("  %02x %02x %02x %02x\n", ((unsigned char *)pcl)[4],((unsigned char *)pcl)[5],((unsigned char *)pcl)[6],((unsigned char *)pcl)[7]);
 	printf("  %02x %02x %02x %02x\n", ((unsigned char *)pcl)[8],((unsigned char *)pcl)[9],((unsigned char *)pcl)[10],((unsigned char *)pcl)[11]);
 	printf("  %02x %02x %02x %02x\n", ((unsigned char *)pcl)[12],((unsigned char *)pcl)[13],((unsigned char *)pcl)[14],((unsigned char *)pcl)[15]);
     }
-    __INST(code_) = pcl;
+    __INST(code_) = (OBJ)pcl;
 
 #if 0
     ExternalFunctionCallback__test_call_closure((INTFUNC)pcl);
@@ -829,17 +846,9 @@
 !ExternalFunctionCallback class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ExternalFunctionCallback.st,v 1.18 2011/12/12 19:30:09 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalFunctionCallback.st,v 1.21 2013-01-16 12:20:15 cg Exp $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/ExternalFunctionCallback.st,v 1.18 2011/12/12 19:30:09 cg Exp '
-!
-
-version_SVN
-    ^ '$Id: ExternalFunctionCallback.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalFunctionCallback.st,v 1.21 2013-01-16 12:20:15 cg Exp $'
 ! !
-
-
-
-
--- a/ExternalLibrary.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ExternalLibrary.st	Sat Jan 19 01:30:00 2013 +0000
@@ -61,9 +61,5 @@
 !ExternalLibrary class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ExternalLibrary.st,v 1.3 2011/04/13 09:40:50 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: ExternalLibrary.st 10700 2011-09-29 15:44:37Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalLibrary.st,v 1.3 2011-04-13 09:40:50 stefan Exp $'
 ! !
--- a/ExternalLibraryFunction.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ExternalLibraryFunction.st	Sat Jan 19 01:30:00 2013 +0000
@@ -13,7 +13,7 @@
 
 ExternalFunction subclass:#ExternalLibraryFunction
 	instanceVariableNames:'flags moduleName returnType argumentTypes owningClass'
-	classVariableNames:'DLLPATH FLAG_VIRTUAL FLAG_NONVIRTUAL FLAG_ASYNC
+	classVariableNames:'DLLPATH FLAG_VIRTUAL FLAG_NONVIRTUAL FLAG_OBJECTIVEC FLAG_ASYNC
 		FLAG_UNLIMITEDSTACK FLAG_RETVAL_IS_CONST CALLTYPE_MASK
 		CALLTYPE_API CALLTYPE_C CALLTYPE_OLE CALLTYPE_V8 CALLTYPE_V9
 		CALLTYPE_UNIX64 DllMapping'
@@ -28,6 +28,22 @@
 # include <ffi.h>
 # define MAX_ARGS    128
 
+# ifdef USE_STANDARD_FFI
+#  define __get_ffi_type_sint() &ffi_type_sint
+#  define __get_ffi_type_sint8() &ffi_type_sint8
+#  define __get_ffi_type_sint16() &ffi_type_sint16
+#  define __get_ffi_type_sint32() &ffi_type_sint32
+#  define __get_ffi_type_sint64() &ffi_type_sint64
+#  define __get_ffi_type_uint() &ffi_type_uint
+#  define __get_ffi_type_uint8() &ffi_type_uint8
+#  define __get_ffi_type_uint16() &ffi_type_uint16
+#  define __get_ffi_type_uint32() &ffi_type_uint32
+#  define __get_ffi_type_uint64() &ffi_type_uint64
+#  define __get_ffi_type_float() &ffi_type_float
+#  define __get_ffi_type_double() &ffi_type_double
+#  define __get_ffi_type_void() &ffi_type_void
+#  define __get_ffi_type_pointer() &ffi_type_pointer
+# else
 extern ffi_type *__get_ffi_type_sint();
 extern ffi_type *__get_ffi_type_sint8();
 extern ffi_type *__get_ffi_type_sint16();
@@ -42,9 +58,8 @@
 extern ffi_type *__get_ffi_type_double();
 extern ffi_type *__get_ffi_type_void();
 extern ffi_type *__get_ffi_type_pointer();
+# endif
 
-#else
-#error "HAVE_FFI not defined!"
 #endif
 
 %}
@@ -71,50 +86,50 @@
     instances of me are used to interface to external library functions (as found in a dll/shared object).
 
     Inside a method, when a special external-call pragma such as:
-        <api: bool MessageBeep(uint)>
+	<api: bool MessageBeep(uint)>
 
     is encountered by the parser, the compiler generates a call via
-        <correspondingExternalLibraryFunctionObject> invokeWithArguments: argumentArray.
+	<correspondingExternalLibraryFunctionObject> invokeWithArguments: argumentArray.
 
     In the invoke method, the library is checked to be loaded (and loaded if not already),
     the arguments are converted to C and pushed onto the C-stack, the function is called,
     and finally, the return value is converted back from C to a smalltalk object.
 
     The parser supports the call-syntax of various other smalltalk dialects:
-        Squeak / ST-X:
-            <cdecl:   [async] [virtual|nonVirtual][const] returnType functionNameStringOrIndex ( argType1..argTypeN ) module: moduleName > 
-            <apicall: [async] [virtual|nonVirtual][const] returnType functionNameStringOrIndex ( argType1..argTypeN ) module: moduleName >
+	Squeak / ST-X:
+	    <cdecl:   [async] [virtual|nonVirtual][const] returnType functionNameStringOrIndex ( argType1..argTypeN ) module: moduleName >
+	    <apicall: [async] [virtual|nonVirtual][const] returnType functionNameStringOrIndex ( argType1..argTypeN ) module: moduleName >
 
-        Dolphin:
-            <stdcall: [virtual|nonVirtual][const] returnType functionNameStringOrIndex argType1..argTypeN>
-            <cdecl:   [virtual|nonVirtual][const] returnType functionNameStringOrIndex argType1..argTypeN> 
+	Dolphin:
+	    <stdcall: [virtual|nonVirtual][const] returnType functionNameStringOrIndex argType1..argTypeN>
+	    <cdecl:   [virtual|nonVirtual][const] returnType functionNameStringOrIndex argType1..argTypeN>
 
-        ST/V:
-            <api: functionName argType1 .. argTypeN returnType> 
-            <ccall: functionName argType1 .. argTypeN returnType> 
-            <ole: vFunctionIndex argType1 .. argTypeN returnType>
+	ST/V:
+	    <api: functionName argType1 .. argTypeN returnType>
+	    <ccall: functionName argType1 .. argTypeN returnType>
+	    <ole: vFunctionIndex argType1 .. argTypeN returnType>
 
-        VisualWorks:
-            <c: ...>
-            <c: #define NAME value>
+	VisualWorks:
+	    <c: ...>
+	    <c: #define NAME value>
 "
 !
 
 example
 "
-                                                                [exBegin]
-        |f|
+								[exBegin]
+	|f|
 
-        f := ExternalLibraryFunction new.
-        f beCallTypeWINAPI.
+	f := ExternalLibraryFunction new.
+	f beCallTypeWINAPI.
 
-        f name:'MessageBeep'
-          module:'user32.dll'
-          returnType:#boolean
-          argumentTypes:#(uint).
+	f name:'MessageBeep'
+	  module:'user32.dll'
+	  returnType:#boolean
+	  argumentTypes:#(uint).
 
-        f invokeWith:1.
-                                                                [exEnd]
+	f invokeWith:1.
+								[exEnd]
 
   Synchronous vs. Asynchronous calls:
 
@@ -122,41 +137,41 @@
     (that is by purpose,“because most C-code is not prepared for being interrupted, and also, normal
      code is not prepared for a garbage collector to move objects around, while another C thread might
      access the data...).
-    Therefore, the following will block all ST/X activity for 10 seconds 
+    Therefore, the following will block all ST/X activity for 10 seconds
     (try interacting with the launcher while the Sleep is performing):
 
-                                                                [exBegin]
-        |f|
+								[exBegin]
+	|f|
 
-        f := ExternalLibraryFunction new.
-        f beCallTypeWINAPI.
+	f := ExternalLibraryFunction new.
+	f beCallTypeWINAPI.
 
-        f name:'Sleep'
-          module:'kernel32.dll'
-          returnType:#void
-          argumentTypes:#(uint).
+	f name:'Sleep'
+	  module:'kernel32.dll'
+	  returnType:#void
+	  argumentTypes:#(uint).
 
-        f invokeWith:10000.
-                                                                [exEnd]
+	f invokeWith:10000.
+								[exEnd]
 
     if you know what you do and you do not pass any possibly moving objects (such as strings) as argument,
     the call can be made asynchronous. In that case, ONLY the calling thread will be blocked; all other smalltalk
     threads wil continue to execute.
     (try interacting now with the launcher while the Sleep is performing):
-                                                                [exBegin]
-        |f|
+								[exBegin]
+	|f|
 
-        f := ExternalLibraryFunction new.
-        f beCallTypeWINAPI.
-        f beAsync.
+	f := ExternalLibraryFunction new.
+	f beCallTypeWINAPI.
+	f beAsync.
 
-        f name:'Sleep'
-          module:'kernel32.dll'
-          returnType:#void
-          argumentTypes:#(uint).
+	f name:'Sleep'
+	  module:'kernel32.dll'
+	  returnType:#void
+	  argumentTypes:#(uint).
 
-        f invokeWith:10000.
-                                                                [exEnd]
+	f invokeWith:10000.
+								[exEnd]
 
 "
 ! !
@@ -187,15 +202,15 @@
 dllMapping
     "allows for dll's to be replaced,
      for example, if you want to use the mozilla sqlite dll
-        C:\Program Files\Mozilla Firefox\mozsqlite3.dll
+	C:\Program Files\Mozilla Firefox\mozsqlite3.dll
      for the sqlite3, execute:
-        ExternalLibraryFunction 
-            dllMapping at:'sqlite3'
-            put: 'C:\Program Files\Mozilla Firefox\mozsqlite3.dll'
+	ExternalLibraryFunction
+	    dllMapping at:'sqlite3'
+	    put: 'C:\Program Files\Mozilla Firefox\mozsqlite3.dll'
     "
 
     DllMapping isNil ifTrue:[
-        DllMapping := Dictionary new.
+	DllMapping := Dictionary new.
     ].
     ^ DllMapping
 
@@ -214,20 +229,21 @@
     "using inline access to corresponding c--defines to avoid duplicate places of knowledge"
 
     DLLPATH isNil ifTrue:[
-        DLLPATH := #('.').
-        FLAG_VIRTUAL := %{ __MKSMALLINT(__EXTL_FLAG_VIRTUAL) %}.                "/ a virtual c++ call
-        FLAG_NONVIRTUAL := %{ __MKSMALLINT(__EXTL_FLAG_NONVIRTUAL) %}.          "/ a non-virtual c++ call
-        FLAG_UNLIMITEDSTACK := %{ __MKSMALLINT(__EXTL_FLAG_UNLIMITEDSTACK) %}.  "/ unlimitedstack under unix
-        FLAG_ASYNC := %{ __MKSMALLINT(__EXTL_FLAG_ASYNC) %}.                    "/ async under win32
-        FLAG_RETVAL_IS_CONST := %{ __MKSMALLINT(__EXTL_FLAG_RETVAL_IS_CONST) %}."/ return value is not to be registered for finalization
+	DLLPATH := #('.').
+	FLAG_VIRTUAL := %{ __MKSMALLINT(__EXTL_FLAG_VIRTUAL) %}.                "/ a virtual c++ call
+	FLAG_NONVIRTUAL := %{ __MKSMALLINT(__EXTL_FLAG_NONVIRTUAL) %}.          "/ a non-virtual c++ call
+	FLAG_OBJECTIVEC := %{ __MKSMALLINT(__EXTL_FLAG_OBJECTIVEC) %}.          "/ an objectiveC message send
+	FLAG_UNLIMITEDSTACK := %{ __MKSMALLINT(__EXTL_FLAG_UNLIMITEDSTACK) %}.  "/ unlimitedstack under unix
+	FLAG_ASYNC := %{ __MKSMALLINT(__EXTL_FLAG_ASYNC) %}.                    "/ async under win32
+	FLAG_RETVAL_IS_CONST := %{ __MKSMALLINT(__EXTL_FLAG_RETVAL_IS_CONST) %}."/ return value is not to be registered for finalization
 
-        CALLTYPE_API := %{ __MKSMALLINT(__EXTL_CALLTYPE_API) %}.                "/ WINAPI-call (win32 only)
-        CALLTYPE_C := %{ __MKSMALLINT(__EXTL_CALLTYPE_C) %}.                    "/ regular C-call (the default)
-        CALLTYPE_V8 := %{ __MKSMALLINT(__EXTL_CALLTYPE_V8) %}.                  "/ v8 call (sparc only)
-        CALLTYPE_V9 := %{ __MKSMALLINT(__EXTL_CALLTYPE_V9) %}.                  "/ v9 call (sparc only)
-        CALLTYPE_UNIX64 := %{ __MKSMALLINT(__EXTL_CALLTYPE_UNIX64) %}.          "/ unix64 call (alpha only)
+	CALLTYPE_API := %{ __MKSMALLINT(__EXTL_CALLTYPE_API) %}.                "/ WINAPI-call (win32 only)
+	CALLTYPE_C := %{ __MKSMALLINT(__EXTL_CALLTYPE_C) %}.                    "/ regular C-call (the default)
+	CALLTYPE_V8 := %{ __MKSMALLINT(__EXTL_CALLTYPE_V8) %}.                  "/ v8 call (sparc only)
+	CALLTYPE_V9 := %{ __MKSMALLINT(__EXTL_CALLTYPE_V9) %}.                  "/ v9 call (sparc only)
+	CALLTYPE_UNIX64 := %{ __MKSMALLINT(__EXTL_CALLTYPE_UNIX64) %}.          "/ unix64 call (alpha only)
 
-        CALLTYPE_MASK := %{ __MKSMALLINT(__EXTL_CALLTYPE_MASK) %}.
+	CALLTYPE_MASK := %{ __MKSMALLINT(__EXTL_CALLTYPE_MASK) %}.
     ].
 
     "
@@ -389,6 +405,14 @@
     "Created: / 01-08-2006 / 13:56:48 / cg"
 !
 
+beObjectiveC
+    "specify this as an objective-c message send"
+
+    flags := (flags ? 0) bitOr: FLAG_OBJECTIVEC.
+
+    "Created: / 01-08-2006 / 13:56:48 / cg"
+!
+
 callTypeNumber
     ^ (flags ? 0) bitAnd: CALLTYPE_MASK.
 
@@ -411,6 +435,12 @@
     "Created: / 01-08-2006 / 13:56:54 / cg"
 !
 
+isObjectiveC
+    "is this an objective-C message?"
+
+    ^ (flags ? 0) bitTest: FLAG_OBJECTIVEC.
+!
+
 isCallTypeAPI
     ^ ((flags ? 0) bitAnd: CALLTYPE_MASK) == CALLTYPE_API.
 
@@ -570,23 +600,23 @@
 printOn:aStream
     aStream nextPutAll:'<'.
     self isCallTypeAPI ifTrue:[
-        'API:' printOn:aStream.
+	'API:' printOn:aStream.
     ] ifFalse:[
-        self isCallTypeOLE ifTrue:[
-            'OLE:' printOn:aStream.
-        ] ifFalse:[
-            self isCallTypeC ifTrue:[
-                'C:' printOn:aStream.
-            ] ifFalse:[
-                self error.
-            ].
-        ].
+	self isCallTypeOLE ifTrue:[
+	    'OLE:' printOn:aStream.
+	] ifFalse:[
+	    self isCallTypeC ifTrue:[
+		'C:' printOn:aStream.
+	    ] ifFalse:[
+		self error.
+	    ].
+	].
     ].
     aStream nextPutAll:' '.
     name printOn:aStream.
     moduleName notNil ifTrue:[
-        aStream nextPutAll:' module:'.
-        moduleName printOn:aStream.
+	aStream nextPutAll:' module:'.
+	moduleName printOn:aStream.
     ].
     aStream nextPutAll:'>'.
 
@@ -609,37 +639,37 @@
     |handle moduleNameUsed functionName|
 
     name isNumber ifTrue:[
-        self isCPPFunction ifTrue:[
-            "/ no need to load a dll.
-            ^ self
-        ]
+	self isCPPFunction ifTrue:[
+	    "/ no need to load a dll.
+	    ^ self
+	]
     ].
 
     "/ in some other smalltalks, there is no moduleName in the ffi-spec;
     "/ instead, the class provides the libraryName...
     (moduleNameUsed := moduleName) isNil ifTrue:[
-        owningClass isNil ifTrue:[
-            self error:'Missing moduleName'.
-        ].
-        moduleNameUsed := owningClass theNonMetaclass libraryName asSymbol.
+	owningClass isNil ifTrue:[
+	    self error:'Missing moduleName'.
+	].
+	moduleNameUsed := owningClass theNonMetaclass libraryName asSymbol.
     ].
     moduleHandle isNil ifTrue:[
-        handle := self loadLibrary:moduleNameUsed.
-        handle isNil ifTrue:[
-            self error:('Cannot find or load dll/module: "%1"' bindWith: moduleNameUsed).
-        ].
-        moduleHandle := handle.
+	handle := self loadLibrary:moduleNameUsed.
+	handle isNil ifTrue:[
+	    self error:('Cannot find or load dll/module: "%1"' bindWith: moduleNameUsed).
+	].
+	moduleHandle := handle.
     ].
     name isNumber ifFalse:[
-        functionName := name.
-        (moduleHandle getFunctionAddress:functionName into:self) isNil ifTrue:[
-            functionName := ('_', functionName) asSymbol.
+	functionName := name.
+	(moduleHandle getFunctionAddress:functionName into:self) isNil ifTrue:[
+	    functionName := ('_', functionName) asSymbol.
 
-            (moduleHandle getFunctionAddress:functionName into:self) isNil ifTrue:[
-                moduleHandle := nil.
-                self error:'Missing function: ', name, ' in module: ', moduleNameUsed.
-            ].
-        ].
+	    (moduleHandle getFunctionAddress:functionName into:self) isNil ifTrue:[
+		moduleHandle := nil.
+		self error:'Missing function: ', name, ' in module: ', moduleNameUsed.
+	    ].
+	].
     ].
 
     "Modified: / 10-04-2012 / 12:12:44 / cg"
@@ -650,7 +680,7 @@
 
     filename := dllName.
     DllMapping notNil ifTrue:[
-        filename := DllMapping at:filename ifAbsent:[ filename ]
+	filename := DllMapping at:filename ifAbsent:[ filename ]
     ].
 
     filename := filename asFilename.
@@ -661,25 +691,25 @@
     handle notNil ifTrue:[^ handle ].
 
     filename isAbsolute ifFalse:[
-        "First ask the class defining the ExternalFunction for the location of the dlls ..."
-        owningClass notNil ifTrue:[
-            owningClass dllPath do:[:eachDirectory |
-                handle := ObjectFileLoader
-                            loadDynamicObject:(eachDirectory asFilename construct:nameString) pathName.
-                handle notNil ifTrue:[^ handle ].
-            ].
-        ].
-        ".. then ask the system"
-        self class dllPath do:[:eachDirectory |
-            handle := ObjectFileLoader
-                        loadDynamicObject:(eachDirectory asFilename construct:nameString) pathName.
-            handle notNil ifTrue:[^ handle ].
-        ].
+	"First ask the class defining the ExternalFunction for the location of the dlls ..."
+	owningClass notNil ifTrue:[
+	    owningClass dllPath do:[:eachDirectory |
+		handle := ObjectFileLoader
+			    loadDynamicObject:(eachDirectory asFilename construct:nameString) pathName.
+		handle notNil ifTrue:[^ handle ].
+	    ].
+	].
+	".. then ask the system"
+	self class dllPath do:[:eachDirectory |
+	    handle := ObjectFileLoader
+			loadDynamicObject:(eachDirectory asFilename construct:nameString) pathName.
+	    handle notNil ifTrue:[^ handle ].
+	].
     ].
 
     filename suffix isEmpty ifTrue:[
-        "/ try again with the OS-specific dll-extension
-        ^ self loadLibrary:(filename withSuffix:ObjectFileLoader sharedLibrarySuffix)
+	"/ try again with the OS-specific dll-extension
+	^ self loadLibrary:(filename withSuffix:ObjectFileLoader sharedLibrarySuffix)
     ].
 
     ^ nil
@@ -698,9 +728,9 @@
 
 ffiTypeSymbolForType:aType
     "map type to one of the ffi-supported ones:
-        sint8, sint16, sint32, sint64
-        uint8, uint16, uint32, uint64
-        bool void pointer handle
+	sint8, sint16, sint32, sint64
+	uint8, uint16, uint32, uint64
+	bool void pointer handle
     "
 
     aType == #sint8           ifTrue:[^ aType ].
@@ -760,17 +790,17 @@
     aType == #unsigned        ifTrue:[^ #uint ].
 
     (aType isString or:[aType isSymbol]) ifFalse:[
-        CType isNil ifTrue:[
-            self error:'unknown type'.
-        ].
-        ^ aType typeSymbol.
+	CType isNil ifTrue:[
+	    self error:'unknown type'.
+	].
+	^ aType typeSymbol.
     ].
 
     (aType endsWith:'*') ifTrue:[
-        ^ #pointer.
+	^ #pointer.
     ].
     (aType endsWith:'Pointer') ifTrue:[
-        ^ #pointer.
+	^ #pointer.
     ].
     ^ aType
 
@@ -824,37 +854,51 @@
     "Modified: / 01-08-2006 / 13:55:35 / cg"
 !
 
-invokeFFIwithArguments:argumentsOrNil forCPPInstance:aCPlusPlusObjectOrNil
+invokeFFIwithArguments:argumentsOrNil forCPPInstance:aReceiverOrNil
+    "basic invoke mechanism. Calls the function represented by the receiver with argumentsOrNil.
+     For cplusplus, aReceiverOrNil is required to be an externalStructure like object;
+     for objectiveC, it must be an ObjectiveC object"
+
     |argTypeSymbols returnTypeSymbol failureCode failureInfo returnValue stClass vtOffset
-     virtual async unlimitedStack callTypeNumber returnValueClass argValueClass
-     oldReturnType oldArgumentTypes
-    |
+     virtual objectiveC async unlimitedStack callTypeNumber returnValueClass argValueClass
+     oldReturnType oldArgumentTypes|
 
     argTypeSymbols := argumentTypes.
     returnTypeSymbol := returnType.
 
     virtual := self isVirtualCPP.
+    objectiveC := self isObjectiveC.
     (virtual "or:[self isNonVirtualCPP]") ifTrue:[
-        aCPlusPlusObjectOrNil isNil ifTrue:[
-            "/ must have a c++ object instance
-            self primitiveFailed.
-        ].
+	aReceiverOrNil isNil ifTrue:[
+	    "/ must have a c++ object instance
+	    self primitiveFailed.
+	].
 
-        "/ and it must be a kind of ExternalStructure !!
-        (aCPlusPlusObjectOrNil isKindOf:ExternalStructure) ifFalse:[
-            self primitiveFailed.
-        ].
-        virtual ifTrue:[
-            vtOffset := name.
-            (vtOffset between:0 and:10000) ifFalse:[
-                self primitiveFailed.
-            ]
-        ].
+	"/ and it must be a kind of ExternalStructure !!
+	(aReceiverOrNil isKindOf:ExternalStructure) ifFalse:[
+	    self primitiveFailed.
+	].
+	virtual ifTrue:[
+	    vtOffset := name.
+	    (vtOffset between:0 and:10000) ifFalse:[
+		self primitiveFailed.
+	    ]
+	].
     ] ifFalse:[
-        aCPlusPlusObjectOrNil notNil ifTrue:[
-            "/ must NOT have a c++ object instance
-            self primitiveFailed.
-        ].
+	objectiveC ifTrue:[
+	    aReceiverOrNil isNil ifTrue:[
+	        "/ must have an objective-c object instance
+	        self primitiveFailed.
+	    ].
+	    (aReceiverOrNil isObjectiveCObject) ifFalse:[
+		self primitiveFailed
+	    ]
+	] ifFalse:[
+	    aReceiverOrNil notNil ifTrue:[
+	        "/ must NOT have a c++/objectiveC object instance
+	        self primitiveFailed.
+	    ]
+	].
     ].
     async := self isAsync.
     unlimitedStack := self isUnlimitedStack.
@@ -862,9 +906,12 @@
     "/ Transcript show:name; show:' async:'; showCR:async.
 
 %{  /* STACK: 100000 */
+
 #ifdef HAVE_FFI
 # ifdef __GNUC__
-#  define HAS_LONGLONG
+#  ifndef HAS_LONGLONG
+#   define HAS_LONGLONG
+#  endif
 # endif
 # if defined(__BORLANDC__) || defined(__VISUALC__)
 #  define HAS_INT64
@@ -876,17 +923,17 @@
     ffi_type *__returnType = NULL;
 
     union u {
-        int iVal;
-        float fVal;
-        double dVal;
-        void *pointerVal;
+	int iVal;
+	float fVal;
+	double dVal;
+	void *pointerVal;
 # if defined(HAS_LONGLONG)
-        long long longLongVal;
+	long long longLongVal;
 # else
 #  ifdef HAS_INT64
-        __int64__ longLongVal;
+	__int64__ longLongVal;
 #  else
-        struct ll { long low; long hi; } longLongVal;
+	struct ll { long low; long hi; } longLongVal;
 #  endif
 # endif
     };
@@ -905,29 +952,29 @@
 
 #   define __FAIL__(fcode) \
     { \
-        failureCode = fcode; goto getOutOfHere; \
+	failureCode = fcode; goto getOutOfHere; \
     }
 
     if (argumentsOrNil == nil) {
-        __numArgs = 0;
+	__numArgs = 0;
     } else if (__isArray(argumentsOrNil)) {
-        __numArgs = __arraySize(argumentsOrNil);
+	__numArgs = __arraySize(argumentsOrNil);
     } else {
-        __FAIL__(@symbol(BadArgumentVector))
+	__FAIL__(@symbol(BadArgumentVector))
     }
     if (argTypeSymbols == nil) {
-        __numArgsWanted = 0;
+	__numArgsWanted = 0;
     } else if (__isArray(argTypeSymbols)) {
-        __numArgsWanted = __arraySize(argTypeSymbols);
+	__numArgsWanted = __arraySize(argTypeSymbols);
     } else {
-        __FAIL__(@symbol(BadArgumentTypeVector))
+	__FAIL__(@symbol(BadArgumentTypeVector))
     }
 
     if (__numArgs != __numArgsWanted) {
-        __FAIL__(@symbol(ArgumentCountMismatch))
+	__FAIL__(@symbol(ArgumentCountMismatch))
     }
     if (__numArgs > MAX_ARGS) {
-        __FAIL__(@symbol(TooManyArguments))
+	__FAIL__(@symbol(TooManyArguments))
     }
 
     /*
@@ -936,130 +983,130 @@
     __returnValuePointer = &__returnValue;
 
     if (returnTypeSymbol == @symbol(voidPointer)) {
-        returnTypeSymbol = @symbol(handle);
+	returnTypeSymbol = @symbol(handle);
     }
 
     if (returnTypeSymbol == @symbol(int)) {
-        __returnType = __get_ffi_type_sint();
+	__returnType = __get_ffi_type_sint();
     } else if (returnTypeSymbol == @symbol(uint)) {
-        __returnType = __get_ffi_type_uint();
+	__returnType = __get_ffi_type_uint();
     } else if (returnTypeSymbol == @symbol(uint8)) {
-        __returnType = __get_ffi_type_uint8();
+	__returnType = __get_ffi_type_uint8();
     } else if (returnTypeSymbol == @symbol(uint16)) {
-        __returnType = __get_ffi_type_uint16();
+	__returnType = __get_ffi_type_uint16();
     } else if (returnTypeSymbol == @symbol(uint32)) {
-        __returnType = __get_ffi_type_uint32();
+	__returnType = __get_ffi_type_uint32();
     } else if (returnTypeSymbol == @symbol(uint64)) {
-        __returnType = __get_ffi_type_uint64();
+	__returnType = __get_ffi_type_uint64();
 
     } else if (returnTypeSymbol == @symbol(sint)) {
-        __returnType = __get_ffi_type_sint();
+	__returnType = __get_ffi_type_sint();
     } else if (returnTypeSymbol == @symbol(sint8)) {
-        __returnType = __get_ffi_type_sint8();
+	__returnType = __get_ffi_type_sint8();
     } else if (returnTypeSymbol == @symbol(sint16)) {
-        __returnType = __get_ffi_type_sint16();
+	__returnType = __get_ffi_type_sint16();
     } else if (returnTypeSymbol == @symbol(sint32)) {
-        __returnType = __get_ffi_type_sint32();
+	__returnType = __get_ffi_type_sint32();
     } else if (returnTypeSymbol == @symbol(sint64)) {
-        __returnType = __get_ffi_type_sint64();
+	__returnType = __get_ffi_type_sint64();
 
     } else if (returnTypeSymbol == @symbol(long)) {
-        if (sizeof(long) == 4) {
-           returnTypeSymbol = @symbol(sint32);
-           __returnType = __get_ffi_type_sint32();
-        } else if (sizeof(long) == 8) {
-           returnTypeSymbol = @symbol(sint64);
-           __returnType = __get_ffi_type_sint64();
-        } else {
-            __FAIL__(@symbol(UnknownReturnType))
-        }
+	if (sizeof(long) == 4) {
+	   returnTypeSymbol = @symbol(sint32);
+	   __returnType = __get_ffi_type_sint32();
+	} else if (sizeof(long) == 8) {
+	   returnTypeSymbol = @symbol(sint64);
+	   __returnType = __get_ffi_type_sint64();
+	} else {
+	    __FAIL__(@symbol(UnknownReturnType))
+	}
 
     } else if (returnTypeSymbol == @symbol(ulong)) {
-        if (sizeof(long) == 4) {
-           returnTypeSymbol = @symbol(uint32);
-           __returnType = __get_ffi_type_uint32();
-        }else if (sizeof(long) == 8) {
-           returnTypeSymbol = @symbol(uint64);
-           __returnType = __get_ffi_type_uint64();
-        } else {
-            __FAIL__(@symbol(UnknownReturnType))
-        }
+	if (sizeof(long) == 4) {
+	   returnTypeSymbol = @symbol(uint32);
+	   __returnType = __get_ffi_type_uint32();
+	}else if (sizeof(long) == 8) {
+	   returnTypeSymbol = @symbol(uint64);
+	   __returnType = __get_ffi_type_uint64();
+	} else {
+	    __FAIL__(@symbol(UnknownReturnType))
+	}
 
     } else if (returnTypeSymbol == @symbol(bool)) {
-        __returnType = __get_ffi_type_uint();
+	__returnType = __get_ffi_type_uint();
 
     } else if (returnTypeSymbol == @symbol(float)) {
-        __returnType = __get_ffi_type_float();
+	__returnType = __get_ffi_type_float();
     } else if (returnTypeSymbol == @symbol(double)) {
-        __returnType = __get_ffi_type_double();
+	__returnType = __get_ffi_type_double();
 
     } else if (returnTypeSymbol == @symbol(void)) {
-        __returnType = __get_ffi_type_void();
-        __returnValuePointer = NULL;
+	__returnType = __get_ffi_type_void();
+	__returnValuePointer = NULL;
     } else if ((returnTypeSymbol == @symbol(pointer))
-               || (returnTypeSymbol == @symbol(handle))
-               || (returnTypeSymbol == @symbol(charPointer))
-               || (returnTypeSymbol == @symbol(bytePointer))
-               || (returnTypeSymbol == @symbol(floatPointer))
-               || (returnTypeSymbol == @symbol(doublePointer))
-               || (returnTypeSymbol == @symbol(intPointer))
-               || (returnTypeSymbol == @symbol(shortPointer))
-               || (returnTypeSymbol == @symbol(wcharPointer))) {
-        __returnType = __get_ffi_type_pointer();
+	       || (returnTypeSymbol == @symbol(handle))
+	       || (returnTypeSymbol == @symbol(charPointer))
+	       || (returnTypeSymbol == @symbol(bytePointer))
+	       || (returnTypeSymbol == @symbol(floatPointer))
+	       || (returnTypeSymbol == @symbol(doublePointer))
+	       || (returnTypeSymbol == @symbol(intPointer))
+	       || (returnTypeSymbol == @symbol(shortPointer))
+	       || (returnTypeSymbol == @symbol(wcharPointer))) {
+	__returnType = __get_ffi_type_pointer();
     } else {
-        if (__isSymbol(returnTypeSymbol)
-         && ((returnValueClass = __GLOBAL_GET(returnTypeSymbol)) != nil)) {
-            if (! __isBehaviorLike(returnValueClass)) {
-                __FAIL__(@symbol(NonBehaviorReturnType))
-            }
-            if (! __qIsSubclassOfExternalAddress(returnValueClass)) {
-                __FAIL__(@symbol(NonExternalAddressReturnType))
-            }
-            __returnType = __get_ffi_type_pointer();
-            returnTypeSymbol = @symbol(pointer);
-        } else {
-            __FAIL__(@symbol(UnknownReturnType))
-        }
+	if (__isSymbol(returnTypeSymbol)
+	 && ((returnValueClass = __GLOBAL_GET(returnTypeSymbol)) != nil)) {
+	    if (! __isBehaviorLike(returnValueClass)) {
+		__FAIL__(@symbol(NonBehaviorReturnType))
+	    }
+	    if (! __qIsSubclassOfExternalAddress(returnValueClass)) {
+		__FAIL__(@symbol(NonExternalAddressReturnType))
+	    }
+	    __returnType = __get_ffi_type_pointer();
+	    returnTypeSymbol = @symbol(pointer);
+	} else {
+	    __FAIL__(@symbol(UnknownReturnType))
+	}
     }
 
     /*
      * validate the c++ object
      */
-    if (aCPlusPlusObjectOrNil != nil) {
-        struct cPlusPlusInstance {
-            void **vTable;
-        };
-        struct cPlusPlusInstance *inst;
+    if (aReceiverOrNil != nil) {
+	struct cPlusPlusInstance {
+	    void **vTable;
+	};
+	struct cPlusPlusInstance *inst;
 
-        if (__isExternalAddressLike(aCPlusPlusObjectOrNil)) {
-            inst = (void *)(__externalAddressVal(aCPlusPlusObjectOrNil));
-        } else if (__isExternalBytesLike(aCPlusPlusObjectOrNil)) {
-            inst = (void *)(__externalBytesVal(aCPlusPlusObjectOrNil));
-        } else {
-            __FAIL__(@symbol(InvalidInstance))
-        }
-        __argValues[0].pointerVal = inst;
-        __argValuePointersIncludingThis[0] = &(__argValues[0]);
-        __argTypes[0] = __get_ffi_type_pointer();
+	if (__isExternalAddressLike(aReceiverOrNil)) {
+	    inst = (void *)(__externalAddressVal(aReceiverOrNil));
+	} else if (__isExternalBytesLike(aReceiverOrNil)) {
+	    inst = (void *)(__externalBytesVal(aReceiverOrNil));
+	} else {
+	    __FAIL__(@symbol(InvalidInstance))
+	}
+	__argValues[0].pointerVal = inst;
+	__argValuePointersIncludingThis[0] = &(__argValues[0]);
+	__argTypes[0] = __get_ffi_type_pointer();
 
-        __argValuePointers = &__argValuePointersIncludingThis[1];
-        __argTypes = &__argTypesIncludingThis[1];
-        __argValues = &__argValuesIncludingThis[1];
-        __numArgsIncludingThis = __numArgs + 1;
+	__argValuePointers = &__argValuePointersIncludingThis[1];
+	__argTypes = &__argTypesIncludingThis[1];
+	__argValues = &__argValuesIncludingThis[1];
+	__numArgsIncludingThis = __numArgs + 1;
 
-        if (virtual == true) {
-            if (! __isSmallInteger(vtOffset)) {
-                __FAIL__(@symbol(InvalidVTableIndex))
-            }
-            codeAddress = inst->vTable[__intVal(vtOffset)];
+	if (virtual == true) {
+	    if (! __isSmallInteger(vtOffset)) {
+		__FAIL__(@symbol(InvalidVTableIndex))
+	    }
+	    codeAddress = inst->vTable[__intVal(vtOffset)];
 # ifdef VERBOSE
-            printf("virtual codeAddress: %x\n", codeAddress);
+	    printf("virtual codeAddress: %x\n", codeAddress);
 # endif
-        }
+	}
     } else {
-        __numArgsIncludingThis = __numArgs;
+	__numArgsIncludingThis = __numArgs;
 # ifdef VERBOSE
-        printf("codeAddress: %x\n", codeAddress);
+	printf("codeAddress: %x\n", codeAddress);
 # endif
     }
 
@@ -1067,339 +1114,339 @@
      * validate all arg types and setup arg-buffers
      */
     for (i=0; i<__numArgs; i++) {
-        ffi_type *thisType;
-        void *argValuePtr;
-        OBJ typeSymbol;
-        OBJ arg;
+	ffi_type *thisType;
+	void *argValuePtr;
+	OBJ typeSymbol;
+	OBJ arg;
 
-        failureInfo = __mkSmallInteger(i+1);   /* in case there is one */
+	failureInfo = __mkSmallInteger(i+1);   /* in case there is one */
 
-        typeSymbol = __ArrayInstPtr(argTypeSymbols)->a_element[i];
-        arg = __ArrayInstPtr(argumentsOrNil)->a_element[i];
+	typeSymbol = __ArrayInstPtr(argTypeSymbols)->a_element[i];
+	arg = __ArrayInstPtr(argumentsOrNil)->a_element[i];
 
-        if (typeSymbol == @symbol(handle)) {
-            typeSymbol = @symbol(pointer);
-        } else if (typeSymbol == @symbol(voidPointer)) {
-            typeSymbol = @symbol(pointer);
-        }
+	if (typeSymbol == @symbol(handle)) {
+	    typeSymbol = @symbol(pointer);
+	} else if (typeSymbol == @symbol(voidPointer)) {
+	    typeSymbol = @symbol(pointer);
+	}
 
-        if (typeSymbol == @symbol(long)) {
-            if (sizeof(long) == sizeof(int)) {
-                typeSymbol = @symbol(sint);
-            } else {
-                if (sizeof(long) == 4) {
-                    typeSymbol = @symbol(sint32);
-                } else if (sizeof(long) == 8) {
-                    typeSymbol = @symbol(sint64);
-                }
-            }
-        }
-        if (typeSymbol == @symbol(ulong)) {
-            if (sizeof(unsigned long) == sizeof(unsigned int)) {
-                typeSymbol = @symbol(uint);
-            } else {
-                if (sizeof(long) == 4) {
-                    typeSymbol = @symbol(uint32);
-                } else if (sizeof(long) == 8) {
-                    typeSymbol = @symbol(uint64);
-                }
-            }
-        }
+	if (typeSymbol == @symbol(long)) {
+	    if (sizeof(long) == sizeof(int)) {
+		typeSymbol = @symbol(sint);
+	    } else {
+		if (sizeof(long) == 4) {
+		    typeSymbol = @symbol(sint32);
+		} else if (sizeof(long) == 8) {
+		    typeSymbol = @symbol(sint64);
+		}
+	    }
+	}
+	if (typeSymbol == @symbol(ulong)) {
+	    if (sizeof(unsigned long) == sizeof(unsigned int)) {
+		typeSymbol = @symbol(uint);
+	    } else {
+		if (sizeof(long) == 4) {
+		    typeSymbol = @symbol(uint32);
+		} else if (sizeof(long) == 8) {
+		    typeSymbol = @symbol(uint64);
+		}
+	    }
+	}
 
-        if (typeSymbol == @symbol(int) || typeSymbol == @symbol(sint)) {
-            thisType = __get_ffi_type_sint();
-            if (__isSmallInteger(arg)) {
-                __argValues[i].iVal = __intVal(arg);
-            } else {
-                __argValues[i].iVal = __signedLongIntVal(arg);
-                if (__argValues[i].iVal == 0) {
-                    __FAIL__(@symbol(InvalidArgument))
-                }
-            }
-            argValuePtr = &(__argValues[i].iVal);
+	if (typeSymbol == @symbol(int) || typeSymbol == @symbol(sint)) {
+	    thisType = __get_ffi_type_sint();
+	    if (__isSmallInteger(arg)) {
+		__argValues[i].iVal = __intVal(arg);
+	    } else {
+		__argValues[i].iVal = __signedLongIntVal(arg);
+		if (__argValues[i].iVal == 0) {
+		    __FAIL__(@symbol(InvalidArgument))
+		}
+	    }
+	    argValuePtr = &(__argValues[i].iVal);
 
-        } else if (typeSymbol == @symbol(uint)) {
-            thisType = __get_ffi_type_uint();
+	} else if (typeSymbol == @symbol(uint)) {
+	    thisType = __get_ffi_type_uint();
 
-            if (__isSmallInteger(arg)) {
-                __argValues[i].iVal = __intVal(arg);
-            } else {
-                __argValues[i].iVal = __unsignedLongIntVal(arg);
-                if (__argValues[i].iVal == 0) {
-                    __FAIL__(@symbol(InvalidArgument))
-                }
-            }
-            argValuePtr = &(__argValues[i].iVal);
+	    if (__isSmallInteger(arg)) {
+		__argValues[i].iVal = __intVal(arg);
+	    } else {
+		__argValues[i].iVal = __unsignedLongIntVal(arg);
+		if (__argValues[i].iVal == 0) {
+		    __FAIL__(@symbol(InvalidArgument))
+		}
+	    }
+	    argValuePtr = &(__argValues[i].iVal);
 
-        } else if (typeSymbol == @symbol(uint8)) {
-            thisType = __get_ffi_type_uint8();
-            if (! __isSmallInteger(arg)) {
-                __FAIL__(@symbol(InvalidArgument))
-            }
-            __argValues[i].iVal = __intVal(arg);
-            if (((unsigned)(__argValues[i].iVal)) > 0xFF) {
-                __FAIL__(@symbol(InvalidArgument))
-            }
-            argValuePtr = &(__argValues[i].iVal);
+	} else if (typeSymbol == @symbol(uint8)) {
+	    thisType = __get_ffi_type_uint8();
+	    if (! __isSmallInteger(arg)) {
+		__FAIL__(@symbol(InvalidArgument))
+	    }
+	    __argValues[i].iVal = __intVal(arg);
+	    if (((unsigned)(__argValues[i].iVal)) > 0xFF) {
+		__FAIL__(@symbol(InvalidArgument))
+	    }
+	    argValuePtr = &(__argValues[i].iVal);
 
-        } else if (typeSymbol == @symbol(sint8)) {
-            thisType = __get_ffi_type_sint8();
-            if (! __isSmallInteger(arg)) {
-                __FAIL__(@symbol(InvalidArgument))
-            }
-            __argValues[i].iVal = __intVal(arg);
-            if (((__argValues[i].iVal) < -0x80) || ((__argValues[i].iVal) > 0x7F))  {
-                __FAIL__(@symbol(InvalidArgument))
-            }
-            argValuePtr = &(__argValues[i].iVal);
+	} else if (typeSymbol == @symbol(sint8)) {
+	    thisType = __get_ffi_type_sint8();
+	    if (! __isSmallInteger(arg)) {
+		__FAIL__(@symbol(InvalidArgument))
+	    }
+	    __argValues[i].iVal = __intVal(arg);
+	    if (((__argValues[i].iVal) < -0x80) || ((__argValues[i].iVal) > 0x7F))  {
+		__FAIL__(@symbol(InvalidArgument))
+	    }
+	    argValuePtr = &(__argValues[i].iVal);
 
-        } else if (typeSymbol == @symbol(uint16)) {
-            thisType = __get_ffi_type_uint16();
-            if (! __isSmallInteger(arg)) {
-                __FAIL__(@symbol(InvalidArgument))
-            }
-            __argValues[i].iVal = __intVal(arg);
-            if (((unsigned)(__argValues[i].iVal)) > 0xFFFF) {
-                __FAIL__(@symbol(InvalidArgument))
-            }
-            argValuePtr = &(__argValues[i].iVal);
+	} else if (typeSymbol == @symbol(uint16)) {
+	    thisType = __get_ffi_type_uint16();
+	    if (! __isSmallInteger(arg)) {
+		__FAIL__(@symbol(InvalidArgument))
+	    }
+	    __argValues[i].iVal = __intVal(arg);
+	    if (((unsigned)(__argValues[i].iVal)) > 0xFFFF) {
+		__FAIL__(@symbol(InvalidArgument))
+	    }
+	    argValuePtr = &(__argValues[i].iVal);
 
-        } else if (typeSymbol == @symbol(sint16)) {
-            thisType = __get_ffi_type_sint16();
-            if (! __isSmallInteger(arg)) {
-                __FAIL__(@symbol(InvalidArgument))
-            }
-            __argValues[i].iVal = __intVal(arg);
-            if (((__argValues[i].iVal) < -0x8000) || ((__argValues[i].iVal) > 0x7FFF))  {
-                __FAIL__(@symbol(InvalidArgument))
-            }
-            argValuePtr = &(__argValues[i].iVal);
+	} else if (typeSymbol == @symbol(sint16)) {
+	    thisType = __get_ffi_type_sint16();
+	    if (! __isSmallInteger(arg)) {
+		__FAIL__(@symbol(InvalidArgument))
+	    }
+	    __argValues[i].iVal = __intVal(arg);
+	    if (((__argValues[i].iVal) < -0x8000) || ((__argValues[i].iVal) > 0x7FFF))  {
+		__FAIL__(@symbol(InvalidArgument))
+	    }
+	    argValuePtr = &(__argValues[i].iVal);
 
-        } else if ((typeSymbol == @symbol(uint32)) || (typeSymbol == @symbol(sint32))) {
-            thisType = __get_ffi_type_uint32();
-            if (__isSmallInteger(arg)) {
-                __argValues[i].iVal = __intVal(arg);
-            } else {
-                __argValues[i].iVal = __unsignedLongIntVal(arg);
-                if (__argValues[i].iVal == 0) {
-                    __FAIL__(@symbol(InvalidArgument))
-                }
-            }
-            argValuePtr = &(__argValues[i].iVal);
+	} else if ((typeSymbol == @symbol(uint32)) || (typeSymbol == @symbol(sint32))) {
+	    thisType = __get_ffi_type_uint32();
+	    if (__isSmallInteger(arg)) {
+		__argValues[i].iVal = __intVal(arg);
+	    } else {
+		__argValues[i].iVal = __unsignedLongIntVal(arg);
+		if (__argValues[i].iVal == 0) {
+		    __FAIL__(@symbol(InvalidArgument))
+		}
+	    }
+	    argValuePtr = &(__argValues[i].iVal);
 
-        } else if (typeSymbol == @symbol(float)) {
-            thisType = __get_ffi_type_float();
-            if (__isSmallInteger(arg)) {
-                __argValues[i].fVal = (float)(__intVal(arg));
-            } else if (__isFloat(arg)) {
-                __argValues[i].fVal = (float)(__floatVal(arg));
-            } else if (__isShortFloat(arg)) {
-                __argValues[i].fVal = (float)(__shortFloatVal(arg));
-            } else {
-                __FAIL__(@symbol(InvalidArgument))
-            }
-            argValuePtr = &(__argValues[i].fVal);
+	} else if (typeSymbol == @symbol(float)) {
+	    thisType = __get_ffi_type_float();
+	    if (__isSmallInteger(arg)) {
+		__argValues[i].fVal = (float)(__intVal(arg));
+	    } else if (__isFloat(arg)) {
+		__argValues[i].fVal = (float)(__floatVal(arg));
+	    } else if (__isShortFloat(arg)) {
+		__argValues[i].fVal = (float)(__shortFloatVal(arg));
+	    } else {
+		__FAIL__(@symbol(InvalidArgument))
+	    }
+	    argValuePtr = &(__argValues[i].fVal);
 
-        } else if (typeSymbol == @symbol(double)) {
-            thisType = __get_ffi_type_double();
-            if (__isSmallInteger(arg)) {
-                __argValues[i].dVal = (double)(__intVal(arg));
-            } else if (__isFloat(arg)) {
-                __argValues[i].dVal = (double)(__floatVal(arg));
-            } else if (__isShortFloat(arg)) {
-                __argValues[i].dVal = (double)(__shortFloatVal(arg));
-            } else {
-                __FAIL__(@symbol(InvalidArgument))
-            }
-            argValuePtr = &(__argValues[i].dVal);
+	} else if (typeSymbol == @symbol(double)) {
+	    thisType = __get_ffi_type_double();
+	    if (__isSmallInteger(arg)) {
+		__argValues[i].dVal = (double)(__intVal(arg));
+	    } else if (__isFloat(arg)) {
+		__argValues[i].dVal = (double)(__floatVal(arg));
+	    } else if (__isShortFloat(arg)) {
+		__argValues[i].dVal = (double)(__shortFloatVal(arg));
+	    } else {
+		__FAIL__(@symbol(InvalidArgument))
+	    }
+	    argValuePtr = &(__argValues[i].dVal);
 
-        } else if (typeSymbol == @symbol(void)) {
-            thisType = __get_ffi_type_void();
-            argValuePtr = &null;
+	} else if (typeSymbol == @symbol(void)) {
+	    thisType = __get_ffi_type_void();
+	    argValuePtr = &null;
 
-        } else if (typeSymbol == @symbol(charPointer)) {
-            thisType = __get_ffi_type_pointer();
-            if (__isStringLike(arg)) {
-                if (async == true) goto badArgForAsyncCall;
-                __argValues[i].pointerVal = (void *)(__stringVal(arg));
-            } else if (__isBytes(arg)) {
-                if (async == true) goto badArgForAsyncCall;
-                __argValues[i].pointerVal = (void *)(__byteArrayVal(arg));
-            } else if (__isExternalAddressLike(arg)) {
-                __argValues[i].pointerVal = (void *)(__externalAddressVal(arg));
-            } else if (__isExternalBytesLike(arg)) {
-                __argValues[i].pointerVal = (void *)(__externalBytesVal(arg));
-            } else {
-                if (arg == nil) {
-                    __argValues[i].pointerVal = (void *)0;
-                } else {
-                    __FAIL__(@symbol(InvalidArgument))
-                }
-            }
-            argValuePtr = &(__argValues[i].pointerVal);;
+	} else if (typeSymbol == @symbol(charPointer)) {
+	    thisType = __get_ffi_type_pointer();
+	    if (__isStringLike(arg)) {
+		if (async == true) goto badArgForAsyncCall;
+		__argValues[i].pointerVal = (void *)(__stringVal(arg));
+	    } else if (__isBytes(arg)) {
+		if (async == true) goto badArgForAsyncCall;
+		__argValues[i].pointerVal = (void *)(__byteArrayVal(arg));
+	    } else if (__isExternalAddressLike(arg)) {
+		__argValues[i].pointerVal = (void *)(__externalAddressVal(arg));
+	    } else if (__isExternalBytesLike(arg)) {
+		__argValues[i].pointerVal = (void *)(__externalBytesVal(arg));
+	    } else {
+		if (arg == nil) {
+		    __argValues[i].pointerVal = (void *)0;
+		} else {
+		    __FAIL__(@symbol(InvalidArgument))
+		}
+	    }
+	    argValuePtr = &(__argValues[i].pointerVal);;
 
-        } else if (typeSymbol == @symbol(wcharPointer)) {
-            thisType = __get_ffi_type_pointer();
-            if (__isUnicode16String(arg)) {
-                if (async == true) goto badArgForAsyncCall;
-                __argValues[i].pointerVal = (void *)(__unicode16StringVal(arg));
-            } else if (__isBytes(arg)) {
-                if (async == true) goto badArgForAsyncCall;
-                __argValues[i].pointerVal = (void *)(__byteArrayVal(arg));
-            } else if (__isExternalAddressLike(arg)) {
-                __argValues[i].pointerVal = (void *)(__externalAddressVal(arg));
-            } else if (__isExternalBytesLike(arg)) {
-                __argValues[i].pointerVal = (void *)(__externalBytesVal(arg));
-            } else {
-                if (arg == nil) {
-                    __argValues[i].pointerVal = (void *)0;
-                } else {
-                    __FAIL__(@symbol(InvalidArgument))
-                }
-            }
-            argValuePtr = &(__argValues[i].pointerVal);;
+	} else if (typeSymbol == @symbol(wcharPointer)) {
+	    thisType = __get_ffi_type_pointer();
+	    if (__isUnicode16String(arg)) {
+		if (async == true) goto badArgForAsyncCall;
+		__argValues[i].pointerVal = (void *)(__unicode16StringVal(arg));
+	    } else if (__isBytes(arg)) {
+		if (async == true) goto badArgForAsyncCall;
+		__argValues[i].pointerVal = (void *)(__byteArrayVal(arg));
+	    } else if (__isExternalAddressLike(arg)) {
+		__argValues[i].pointerVal = (void *)(__externalAddressVal(arg));
+	    } else if (__isExternalBytesLike(arg)) {
+		__argValues[i].pointerVal = (void *)(__externalBytesVal(arg));
+	    } else {
+		if (arg == nil) {
+		    __argValues[i].pointerVal = (void *)0;
+		} else {
+		    __FAIL__(@symbol(InvalidArgument))
+		}
+	    }
+	    argValuePtr = &(__argValues[i].pointerVal);;
 
-        } else if (typeSymbol == @symbol(floatPointer)) {
-            thisType = __get_ffi_type_pointer();
-            if (__isBytes(arg)) {
-                if (async == true) goto badArgForAsyncCall;
-                __argValues[i].pointerVal = (void *)(__byteArrayVal(arg));
-            } else if (__isExternalAddressLike(arg)) {
-                __argValues[i].pointerVal = (void *)(__externalAddressVal(arg));
-            } else if (__isExternalBytesLike(arg)) {
-                __argValues[i].pointerVal = (void *)(__externalBytesVal(arg));
-            } else if (__isFloats(arg)) {
-                char *p = (char *)(__FloatArrayInstPtr(arg)->f_element);
-                int nInstBytes;
-                OBJ cls;
+	} else if (typeSymbol == @symbol(floatPointer)) {
+	    thisType = __get_ffi_type_pointer();
+	    if (__isBytes(arg)) {
+		if (async == true) goto badArgForAsyncCall;
+		__argValues[i].pointerVal = (void *)(__byteArrayVal(arg));
+	    } else if (__isExternalAddressLike(arg)) {
+		__argValues[i].pointerVal = (void *)(__externalAddressVal(arg));
+	    } else if (__isExternalBytesLike(arg)) {
+		__argValues[i].pointerVal = (void *)(__externalBytesVal(arg));
+	    } else if (__isFloats(arg)) {
+		char *p = (char *)(__FloatArrayInstPtr(arg)->f_element);
+		int nInstBytes;
+		OBJ cls;
 
-                if (async == true) goto badArgForAsyncCall;
-                cls = __qClass(arg);
-                nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-                p = p + nInstBytes;
-                __argValues[i].pointerVal = p;
-            } else {
-                if (arg == nil) {
-                    __argValues[i].pointerVal = (void *)0;
-                } else {
-                    __FAIL__(@symbol(InvalidArgument))
-                }
-            }
-            argValuePtr = &(__argValues[i].pointerVal);;
+		if (async == true) goto badArgForAsyncCall;
+		cls = __qClass(arg);
+		nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+		p = p + nInstBytes;
+		__argValues[i].pointerVal = p;
+	    } else {
+		if (arg == nil) {
+		    __argValues[i].pointerVal = (void *)0;
+		} else {
+		    __FAIL__(@symbol(InvalidArgument))
+		}
+	    }
+	    argValuePtr = &(__argValues[i].pointerVal);;
 
-        } else if (typeSymbol == @symbol(doublePointer)) {
-            thisType = __get_ffi_type_pointer();
-            if (__isBytes(arg)) {
-                if (async == true) goto badArgForAsyncCall;
-                __argValues[i].pointerVal = (void *)(__byteArrayVal(arg));
-            } else if (__isExternalAddressLike(arg)) {
-                __argValues[i].pointerVal = (void *)(__externalAddressVal(arg));
-            } else if (__isExternalBytesLike(arg)) {
-                __argValues[i].pointerVal = (void *)(__externalBytesVal(arg));
-            } else if (__isDoubles(arg)) {
-                char *p = (char *)(__DoubleArrayInstPtr(arg)->d_element);
-                int nInstBytes;
-                OBJ cls;
+	} else if (typeSymbol == @symbol(doublePointer)) {
+	    thisType = __get_ffi_type_pointer();
+	    if (__isBytes(arg)) {
+		if (async == true) goto badArgForAsyncCall;
+		__argValues[i].pointerVal = (void *)(__byteArrayVal(arg));
+	    } else if (__isExternalAddressLike(arg)) {
+		__argValues[i].pointerVal = (void *)(__externalAddressVal(arg));
+	    } else if (__isExternalBytesLike(arg)) {
+		__argValues[i].pointerVal = (void *)(__externalBytesVal(arg));
+	    } else if (__isDoubles(arg)) {
+		char *p = (char *)(__DoubleArrayInstPtr(arg)->d_element);
+		int nInstBytes;
+		OBJ cls;
 
-                if (async == true) goto badArgForAsyncCall;
-                cls = __qClass(arg);
-                nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-                p = p + nInstBytes;
+		if (async == true) goto badArgForAsyncCall;
+		cls = __qClass(arg);
+		nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+		p = p + nInstBytes;
 # ifdef __NEED_DOUBLE_ALIGN
-                if ((INT)pFirst & (__DOUBLE_ALIGN-1)) {
-                    int delta = __DOUBLE_ALIGN - ((INT)p & (__DOUBLE_ALIGN-1));
+		if ((INT)(__DoubleArrayInstPtr(arg)->d_element) & (__DOUBLE_ALIGN-1)) {
+		    int delta = __DOUBLE_ALIGN - ((INT)p & (__DOUBLE_ALIGN-1));
 
-                    p += delta;
-                }
+		    p += delta;
+		}
 # endif
-                __argValues[i].pointerVal = p;
-            } else {
-                if (arg == nil) {
-                    __argValues[i].pointerVal = (void *)0;
-                } else {
-                    __FAIL__(@symbol(InvalidArgument))
-                }
-            }
-            argValuePtr = &(__argValues[i].pointerVal);;
+		__argValues[i].pointerVal = p;
+	    } else {
+		if (arg == nil) {
+		    __argValues[i].pointerVal = (void *)0;
+		} else {
+		    __FAIL__(@symbol(InvalidArgument))
+		}
+	    }
+	    argValuePtr = &(__argValues[i].pointerVal);;
 
-        } else if (typeSymbol == @symbol(pointer)) {
+	} else if (typeSymbol == @symbol(pointer)) {
 commonPointerTypeArg: ;
-            thisType = __get_ffi_type_pointer();
-            if (arg == nil) {
-                __argValues[i].pointerVal = NULL;
-            } else if (__isExternalAddressLike(arg)) {
-                __argValues[i].pointerVal = (void *)(__externalAddressVal(arg));
-            } else if (__isExternalBytesLike(arg)) {
-                __argValues[i].pointerVal = (void *)(__externalBytesVal(arg));
-            } else if (__isByteArrayLike(arg)) {
-                if (async == true) goto badArgForAsyncCall;
-                __argValues[i].pointerVal = (void *)(__byteArrayVal(arg));
-            } else if (__isWordArray(arg) || __isSignedWordArray(arg)
-                    || __isIntegerArray(arg) || __isSignedIntegerArray(arg)) {
-                if (async == true) goto badArgForAsyncCall;
-                __argValues[i].pointerVal = (void *)(__integerArrayVal(arg));
-            } else if (__isFloatArray(arg)) {
-                if (async == true) goto badArgForAsyncCall;
-                __argValues[i].pointerVal = (void *)(__FloatArrayInstPtr(arg)->f_element);
-            } else if (__isDoubleArray(arg)) {
-                if (async == true) goto badArgForAsyncCall;
-                __argValues[i].pointerVal = (void *)(__DoubleArrayInstPtr(arg)->d_element);
-            } else if (__isStringLike(arg)) {
-                if (async == true) {
+	    thisType = __get_ffi_type_pointer();
+	    if (arg == nil) {
+		__argValues[i].pointerVal = NULL;
+	    } else if (__isExternalAddressLike(arg)) {
+		__argValues[i].pointerVal = (void *)(__externalAddressVal(arg));
+	    } else if (__isExternalBytesLike(arg)) {
+		__argValues[i].pointerVal = (void *)(__externalBytesVal(arg));
+	    } else if (__isByteArrayLike(arg)) {
+		if (async == true) goto badArgForAsyncCall;
+		__argValues[i].pointerVal = (void *)(__byteArrayVal(arg));
+	    } else if (__isWordArray(arg) || __isSignedWordArray(arg)
+		    || __isIntegerArray(arg) || __isSignedIntegerArray(arg)) {
+		if (async == true) goto badArgForAsyncCall;
+		__argValues[i].pointerVal = (void *)(__integerArrayVal(arg));
+	    } else if (__isFloatArray(arg)) {
+		if (async == true) goto badArgForAsyncCall;
+		__argValues[i].pointerVal = (void *)(__FloatArrayInstPtr(arg)->f_element);
+	    } else if (__isDoubleArray(arg)) {
+		if (async == true) goto badArgForAsyncCall;
+		__argValues[i].pointerVal = (void *)(__DoubleArrayInstPtr(arg)->d_element);
+	    } else if (__isStringLike(arg)) {
+		if (async == true) {
 badArgForAsyncCall: ;
-                    __FAIL__(@symbol(BadArgForAsyncCall))
-                }
-                __argValues[i].pointerVal = (void *)(__stringVal(arg));
-            } else if (__isBytes(arg) || __isWords(arg) || __isLongs(arg)) {
-                char *p = (char *)(__byteArrayVal(arg));
-                int nInstBytes;
-                OBJ cls;
+		    __FAIL__(@symbol(BadArgForAsyncCall))
+		}
+		__argValues[i].pointerVal = (void *)(__stringVal(arg));
+	    } else if (__isBytes(arg) || __isWords(arg) || __isLongs(arg)) {
+		char *p = (char *)(__byteArrayVal(arg));
+		int nInstBytes;
+		OBJ cls;
 
-                if (async == true) goto badArgForAsyncCall;
-                cls = __qClass(arg);
-                nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-                __argValues[i].pointerVal = p + nInstBytes;
-            } else {
-                __FAIL__(@symbol(InvalidArgument))
-            }
-            argValuePtr = &(__argValues[i].pointerVal);;
+		if (async == true) goto badArgForAsyncCall;
+		cls = __qClass(arg);
+		nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+		__argValues[i].pointerVal = p + nInstBytes;
+	    } else {
+		__FAIL__(@symbol(InvalidArgument))
+	    }
+	    argValuePtr = &(__argValues[i].pointerVal);;
 
-        } else if (typeSymbol == @symbol(bool)) {
-            thisType = __get_ffi_type_uint();
+	} else if (typeSymbol == @symbol(bool)) {
+	    thisType = __get_ffi_type_uint();
 
-            if (arg == true) {
-                __argValues[i].iVal = 1;
-            } else if (arg == false) {
-                __argValues[i].iVal = 0;
-            } else if (__isSmallInteger(arg)) {
-                __argValues[i].iVal = __intVal(arg);
-            } else {
-                __argValues[i].iVal = __unsignedLongIntVal(arg);
-                if (__argValues[i].iVal == 0) {
-                    __FAIL__(@symbol(InvalidArgument))
-                }
-            }
-            argValuePtr = &(__argValues[i].iVal);
-        } else {
-            if (__isSymbol(typeSymbol)
-             && ((argValueClass = __GLOBAL_GET(typeSymbol)) != nil)) {
-                if (! __isBehaviorLike(argValueClass)) {
-                    __FAIL__(@symbol(NonBehaviorArgumentType))
-                }
-                if (! __qIsSubclassOfExternalAddress(argValueClass)) {
-                    __FAIL__(@symbol(NonExternalAddressArgumentType))
-                }
-                goto commonPointerTypeArg; /* sorry */
-            } else {
-                __FAIL__(@symbol(UnknownArgumentType))
-            }
-        }
+	    if (arg == true) {
+		__argValues[i].iVal = 1;
+	    } else if (arg == false) {
+		__argValues[i].iVal = 0;
+	    } else if (__isSmallInteger(arg)) {
+		__argValues[i].iVal = __intVal(arg);
+	    } else {
+		__argValues[i].iVal = __unsignedLongIntVal(arg);
+		if (__argValues[i].iVal == 0) {
+		    __FAIL__(@symbol(InvalidArgument))
+		}
+	    }
+	    argValuePtr = &(__argValues[i].iVal);
+	} else {
+	    if (__isSymbol(typeSymbol)
+	     && ((argValueClass = __GLOBAL_GET(typeSymbol)) != nil)) {
+		if (! __isBehaviorLike(argValueClass)) {
+		    __FAIL__(@symbol(NonBehaviorArgumentType))
+		}
+		if (! __qIsSubclassOfExternalAddress(argValueClass)) {
+		    __FAIL__(@symbol(NonExternalAddressArgumentType))
+		}
+		goto commonPointerTypeArg; /* sorry */
+	    } else {
+		__FAIL__(@symbol(UnknownArgumentType))
+	    }
+	}
 
-        __argTypes[i] = thisType;
-        __argValuePointers[i] = argValuePtr;
+	__argTypes[i] = thisType;
+	__argValuePointers[i] = argValuePtr;
 
 # ifdef VERBOSE
-        printf("arg%d: %x\n", i, __argValues[i].iVal);
+	printf("arg%d: %x\n", i, __argValues[i].iVal);
 # endif
     }
     failureInfo = nil;
@@ -1408,53 +1455,53 @@
 
 # ifdef CALLTYPE_FFI_STDCALL
     if (callTypeNumber == @global(CALLTYPE_API)) {
-        __callType = CALLTYPE_FFI_STDCALL;
+	__callType = CALLTYPE_FFI_STDCALL;
     }
 # endif
 # ifdef CALLTYPE_FFI_V8
     if (callTypeNumber == @global(CALLTYPE_V8)) {
-        __callType = CALLTYPE_FFI_V8;
+	__callType = CALLTYPE_FFI_V8;
     }
 # endif
 # ifdef CALLTYPE_FFI_V9
     if (callTypeNumber == @global(CALLTYPE_V9)) {
-        __callType = CALLTYPE_FFI_V9;
+	__callType = CALLTYPE_FFI_V9;
     }
 # endif
 # ifdef CALLTYPE_FFI_UNIX64
     if (callTypeNumber == @global(CALLTYPE_UNIX64)) {
-        __callType = CALLTYPE_FFI_UNIX64;
+	__callType = CALLTYPE_FFI_UNIX64;
     }
 # endif
 
     if (ffi_prep_cif(&__cif, __callType, __numArgsIncludingThis, __returnType, __argTypesIncludingThis) != FFI_OK) {
-        __FAIL__(@symbol(FFIPrepareFailed))
+	__FAIL__(@symbol(FFIPrepareFailed))
     }
     if (async == true) {
 # ifdef VERBOSE
-        printf("async call 0x%x\n", codeAddress);
+	printf("async call 0x%x\n", codeAddress);
 # endif
 # ifdef WIN32
-        __STX_C_CALL4( "ffi_call", ffi_call, &__cif, codeAddress, __returnValuePointer, __argValuePointersIncludingThis);
+	__STX_C_CALL4( "ffi_call", ffi_call, &__cif, codeAddress, __returnValuePointer, __argValuePointersIncludingThis);
 # else
-        __BEGIN_INTERRUPTABLE__
-        ffi_call(&__cif, codeAddress, __returnValuePointer, __argValuePointersIncludingThis);
-        __END_INTERRUPTABLE__
+	__BEGIN_INTERRUPTABLE__
+	ffi_call(&__cif, codeAddress, __returnValuePointer, __argValuePointersIncludingThis);
+	__END_INTERRUPTABLE__
 # endif
     } else {
-        if (unlimitedStack == true) {
+	if (unlimitedStack == true) {
 # ifdef VERBOSE
-            printf("UNLIMITEDSTACKCALL call 0x%x\n", codeAddress);
+	    printf("UNLIMITEDSTACKCALL call 0x%x\n", codeAddress);
 # endif
 # if 0
-            __UNLIMITEDSTACKCALL__(ffi_call, &__cif, codeAddress, __returnValuePointer, __argValuePointersIncludingThis);
+	    __UNLIMITEDSTACKCALL__(ffi_call, &__cif, codeAddress, __returnValuePointer, __argValuePointersIncludingThis);
 # endif
-        } else {
+	} else {
 # ifdef VERBOSE
-            printf("call 0x%x\n", codeAddress);
+	    printf("call 0x%x\n", codeAddress);
 # endif
-            ffi_call(&__cif, codeAddress, __returnValuePointer, __argValuePointersIncludingThis);
-        }
+	    ffi_call(&__cif, codeAddress, __returnValuePointer, __argValuePointersIncludingThis);
+	}
     }
 # ifdef VERBOSE
     printf("retval is %d (0x%x)\n", __returnValue.iVal, __returnValue.iVal);
@@ -1464,54 +1511,54 @@
      || (returnTypeSymbol == @symbol(sint8))
      || (returnTypeSymbol == @symbol(sint16))
      || (returnTypeSymbol == @symbol(sint32))) {
-        RETURN ( __MKINT(__returnValue.iVal) );
+	RETURN ( __MKINT(__returnValue.iVal) );
     }
     if ((returnTypeSymbol == @symbol(uint))
      || (returnTypeSymbol == @symbol(uint8))
      || (returnTypeSymbol == @symbol(uint16))
      || (returnTypeSymbol == @symbol(uint32))) {
-        RETURN ( __MKUINT(__returnValue.iVal) );
+	RETURN ( __MKUINT(__returnValue.iVal) );
     }
     if (returnTypeSymbol == @symbol(bool)) {
-        RETURN ( __returnValue.iVal ? true : false );
+	RETURN ( __returnValue.iVal ? true : false );
     }
     if (returnTypeSymbol == @symbol(float)) {
-        RETURN ( __MKFLOAT(__returnValue.fVal ));
+	RETURN ( __MKFLOAT(__returnValue.fVal ));
     }
     if (returnTypeSymbol == @symbol(double)) {
-        RETURN ( __MKFLOAT(__returnValue.dVal ));
+	RETURN ( __MKFLOAT(__returnValue.dVal ));
     }
     if (returnTypeSymbol == @symbol(void)) {
-        RETURN ( nil );
+	RETURN ( nil );
     }
     if (returnTypeSymbol == @symbol(char)) {
-        RETURN ( __MKCHARACTER(__returnValue.iVal & 0xFF) );
+	RETURN ( __MKCHARACTER(__returnValue.iVal & 0xFF) );
     }
     if (returnTypeSymbol == @symbol(wchar)) {
-        RETURN ( __MKUCHARACTER(__returnValue.iVal & 0xFFFF) );
+	RETURN ( __MKUCHARACTER(__returnValue.iVal & 0xFFFF) );
     }
     if (returnTypeSymbol == @symbol(sint64)) {
-        RETURN ( __MKINT64(&__returnValue.longLongVal) );
+	RETURN ( __MKINT64(&__returnValue.longLongVal) );
     }
     if (returnTypeSymbol == @symbol(uint64)) {
-        RETURN ( __MKUINT64(&__returnValue.longLongVal) );
+	RETURN ( __MKUINT64(&__returnValue.longLongVal) );
     }
 
 # ifdef VERBOSE
     printf("%x\n", __returnValue.pointerVal);
 # endif
     if (returnTypeSymbol == @symbol(handle)) {
-        returnValue = __MKEXTERNALADDRESS(__returnValue.pointerVal);
+	returnValue = __MKEXTERNALADDRESS(__returnValue.pointerVal);
     } else if (returnTypeSymbol == @symbol(pointer)) {
-        returnValue = __MKEXTERNALBYTES(__returnValue.pointerVal);
+	returnValue = __MKEXTERNALBYTES(__returnValue.pointerVal);
     } else if (returnTypeSymbol == @symbol(bytePointer)) {
-        returnValue = __MKEXTERNALBYTES(__returnValue.pointerVal);
+	returnValue = __MKEXTERNALBYTES(__returnValue.pointerVal);
     } else if (returnTypeSymbol == @symbol(charPointer)) {
-        returnValue = __MKSTRING(__returnValue.pointerVal);
+	returnValue = __MKSTRING(__returnValue.pointerVal);
     } else if (returnTypeSymbol == @symbol(wcharPointer)) {
-        returnValue = __MKU16STRING(__returnValue.pointerVal);
+	returnValue = __MKU16STRING(__returnValue.pointerVal);
     } else {
-        __FAIL__(@symbol(UnknownReturnType2))
+	__FAIL__(@symbol(UnknownReturnType2))
     }
 #else /* no FFI support */
     failureCode = @symbol(FFINotSupported);
@@ -1519,46 +1566,46 @@
 getOutOfHere: ;
 %}.
     failureCode notNil ifTrue:[
-        (failureCode == #UnknownReturnType or:[ failureCode == #UnknownArgumentType ]) ifTrue:[
-            oldReturnType := returnType.
-            oldArgumentTypes := argumentTypes.
-            self adjustTypes.
-            ((oldReturnType ~= returnType) or:[oldArgumentTypes ~= argumentTypes]) ifTrue:[
-                thisContext restart
-            ].
-        ].
-        (failureCode == #BadArgForAsyncCall) ifTrue:[
-            ^ self tryAgainWithAsyncSafeArguments:argumentsOrNil forCPPInstance:aCPlusPlusObjectOrNil
-        ].
+	(failureCode == #UnknownReturnType or:[ failureCode == #UnknownArgumentType ]) ifTrue:[
+	    oldReturnType := returnType.
+	    oldArgumentTypes := argumentTypes.
+	    self adjustTypes.
+	    ((oldReturnType ~= returnType) or:[oldArgumentTypes ~= argumentTypes]) ifTrue:[
+		thisContext restart
+	    ].
+	].
+	(failureCode == #BadArgForAsyncCall) ifTrue:[
+	    ^ self tryAgainWithAsyncSafeArguments:argumentsOrNil forCPPInstance:aReceiverOrNil
+	].
 
-        self primitiveFailed.   "see failureCode and failureInfo for details"
-        ^ nil
+	self primitiveFailed.   "see failureCode and failureInfo for details"
+	^ nil
     ].
 
     returnType isSymbol ifTrue:[
-        returnValueClass notNil ifTrue:[
-            self isConstReturnValue ifTrue:[
-                returnValue changeClassTo:returnValueClass.
-                ^ returnValue
-            ].
-            ^ returnValueClass fromExternalAddress:returnValue.
-        ].
+	returnValueClass notNil ifTrue:[
+	    self isConstReturnValue ifTrue:[
+		returnValue changeClassTo:returnValueClass.
+		^ returnValue
+	    ].
+	    ^ returnValueClass fromExternalAddress:returnValue.
+	].
     ] ifFalse:[
-        returnType isCPointer ifTrue:[
-            returnType baseType isCStruct ifTrue:[
-                stClass := Smalltalk classNamed:returnType baseType name.
-                stClass notNil ifTrue:[
-                    self isConstReturnValue ifTrue:[
-                        returnValue changeClassTo:returnValueClass.
-                        ^ returnValue
-                    ].
-                    ^ stClass fromExternalAddress:returnValue.
-                ].
-            ].
-            returnType baseType isCChar ifTrue:[
-                ^ returnValue stringAt:1
-            ].
-        ].
+	returnType isCPointer ifTrue:[
+	    returnType baseType isCStruct ifTrue:[
+		stClass := Smalltalk classNamed:returnType baseType name.
+		stClass notNil ifTrue:[
+		    self isConstReturnValue ifTrue:[
+			returnValue changeClassTo:returnValueClass.
+			^ returnValue
+		    ].
+		    ^ stClass fromExternalAddress:returnValue.
+		].
+	    ].
+	    returnType baseType isCChar ifTrue:[
+		^ returnValue stringAt:1
+	    ].
+	].
     ].
 
     ^ returnValue
@@ -1567,7 +1614,7 @@
     "Modified: / 11-06-2007 / 01:50:36 / cg"
 !
 
-tryAgainWithAsyncSafeArguments:argumentsOrNil forCPPInstance:aCPlusPlusObjectOrNil
+tryAgainWithAsyncSafeArguments:argumentsOrNil forCPPInstance:aReceiverOrNil
     "invoked by the call primitive, iff GC-unsave arguments where passed to the call.
      Here, allocate non-movable blocks of memory and copy the arguments into them,
      then try the call again, copy changed values back, and release the memeory."
@@ -1575,50 +1622,50 @@
     |saveArguments anyBadArg result originalToSaveArgMapping|
 
     argumentsOrNil isNil ifTrue:[
-        ^ self primitiveFailed
+	^ self primitiveFailed
     ].
     thisContext isRecursive ifTrue: [^self primitiveFailed].
 
     anyBadArg := false.
     originalToSaveArgMapping := IdentityDictionary new.
 
-    saveArguments := argumentsOrNil 
-                        collect:[:eachArg |
-                            |saveArg|
+    saveArguments := argumentsOrNil
+			collect:[:eachArg |
+			    |saveArg|
 
-                            (originalToSaveArgMapping includesKey:eachArg) ifTrue:[
-                                saveArg := originalToSaveArgMapping at:eachArg
-                            ] ifFalse:[
-                                eachArg isString ifTrue:[
-                                    saveArg := (ExternalBytes fromString:eachArg) register.
-                                    anyBadArg := true.
-                                    originalToSaveArgMapping at:eachArg put:saveArg.
-                                ] ifFalse:[
-                                    eachArg isByteCollection ifTrue:[
-                                        saveArg := (ExternalBytes from:eachArg) register.
-                                        originalToSaveArgMapping at:eachArg put:saveArg.
-                                        anyBadArg := true.
-                                    ] ifFalse:[
-                                        saveArg := eachArg
-                                    ]
-                                ].
-                            ].
-                            saveArg
-                        ].
+			    (originalToSaveArgMapping includesKey:eachArg) ifTrue:[
+				saveArg := originalToSaveArgMapping at:eachArg
+			    ] ifFalse:[
+				eachArg isString ifTrue:[
+				    saveArg := (ExternalBytes fromString:eachArg) register.
+				    anyBadArg := true.
+				    originalToSaveArgMapping at:eachArg put:saveArg.
+				] ifFalse:[
+				    eachArg isByteCollection ifTrue:[
+					saveArg := (ExternalBytes from:eachArg) register.
+					originalToSaveArgMapping at:eachArg put:saveArg.
+					anyBadArg := true.
+				    ] ifFalse:[
+					saveArg := eachArg
+				    ]
+				].
+			    ].
+			    saveArg
+			].
 
     anyBadArg ifFalse:[
-        "avoid recursion..."
-        ^ self primitiveFailed
+	"avoid recursion..."
+	^ self primitiveFailed
     ].
 
-    result := self invokeFFIwithArguments:saveArguments forCPPInstance:aCPlusPlusObjectOrNil.
+    result := self invokeFFIwithArguments:saveArguments forCPPInstance:aReceiverOrNil.
 
     "/ copy back !!
     originalToSaveArgMapping keysAndValuesDo:[:arg :saveArg |
-        arg isSymbol ifFalse:[
-            arg replaceFrom:1 to:(arg size) with:saveArg startingAt:1.
-        ].
-        saveArg free.
+	arg isSymbol ifFalse:[
+	    arg replaceFrom:1 to:(arg size) with:saveArg startingAt:1.
+	].
+	saveArg free.
     ].
     ^ result.
 
@@ -1639,12 +1686,11 @@
 !ExternalLibraryFunction class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ExternalLibraryFunction.st,v 1.90 2012/11/16 09:27:00 stefan Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalLibraryFunction.st,v 1.93 2013-01-16 12:20:15 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: ExternalLibraryFunction.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '§ Id: ExternalLibraryFunction.st 10643 2011-06-08 21:53:07Z vranyj1  §'
 ! !
 
 ExternalLibraryFunction initialize!
-
--- a/ExternalStream.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ExternalStream.st	Sat Jan 19 01:30:00 2013 +0000
@@ -94,6 +94,7 @@
 
 #ifdef WIN32
 # undef INT
+# undef UINT
 # undef Array
 # undef Number
 # undef Method
@@ -109,6 +110,8 @@
 # undef Message
 # undef Process
 # undef Processor
+# undef String
+# undef Character
 
 # define NOATOM
 # define NOGDICAPMASKS
@@ -168,10 +171,18 @@
 # ifdef __DEF_Processor
 #  define Processor __DEF_Processor
 # endif
-
-# define INT    int
-# define UINT   uint
-# define off_t  long
+# ifdef __DEF_String
+#  define String __DEF_String
+# endif
+# ifdef __DEF_Character
+#  define Character __DEF_Character
+# endif
+
+# define INT    STX_INT
+# define UINT   STX_UINT
+# ifndef off_t
+#  define off_t  long
+# endif
 #endif /* WIN32 */
 
 #ifndef NO_STDIO /* use STDIO */
@@ -1743,18 +1754,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.
 
     "
@@ -2225,12 +2236,12 @@
     "close the stream - tell operating system"
 
     self isOpen ifTrue:[
-        Lobby unregister:self.
-        PrimitiveFailure handle:[:ex |
-            ('ExternalStream [info] error in close cought (%1).' bindWith:self printString) errorPrintCR.
-        ] do:[
-            self closeFile.
-        ].
+	Lobby unregister:self.
+	PrimitiveFailure handle:[:ex |
+	    ('ExternalStream [info] error in close cought (%1).' bindWith:self printString) errorPrintCR.
+	] do:[
+	    self closeFile.
+	].
     ]
 !
 
@@ -2449,15 +2460,16 @@
     |exClass|
 
     exClass := (errorNumber == (OperatingSystem errorNumberFor:#ERROR_FILE_NOT_FOUND))
-        ifTrue:[ FileDoesNotExistException ]
-        ifFalse:[ OpenError ].
+	ifTrue:[ FileDoesNotExistException ]
+	ifFalse:[ OpenError ].
 
     ^ exClass newException
-        errorCode:errorNumber;
-        errorString:(' : ' , (OperatingSystem errorTextForNumber:errorNumber));
-        parameter:self;
-        raiseRequest
-        "/ in:thisContext sender
+	errorCode:errorNumber;
+	"/ cg: initialized lazyly - see #description in OpenError
+	"/ errorString:(' : ' , (OperatingSystem errorTextForNumber:errorNumber));
+	parameter:self;
+	raiseRequest
+	"/ in:thisContext sender
 
     "Modified: / 09-09-2011 / 07:22:49 / cg"
 !
@@ -2541,123 +2553,123 @@
      || (__INST(handleType) == @symbol(filePointer))
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-        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);
-            }
-
-            rslt = nextPtr = buffer;
-            limit = buffer + sizeof(buffer) - 2;
-
-            for (;;) {
-                __READBYTE__(ret, f, nextPtr, _buffered, __INST(handleType));
-                if (ret <= 0) {
-                    if (nextPtr == buffer)
-                        rslt = NULL;
-                    if (ret == 0) {
-                        __INST(hitEOF) = true;
-                        break;
-                    } else {
-                        __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-                        goto err;
-                    }
-                }
-
-                if (*nextPtr == '\n') {
-                    cutOff = 1;
-                    *nextPtr = '\0';
-                    break;
-                }
-                if (*nextPtr == '\r') {
-                    char peekChar;
-
-                    /*
-                     * peek ahead for a newLine ...
-                     */
-                    __READBYTE__(ret, f, &peekChar, _buffered, __INST(handleType));
-                    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;
-                }
-
-                nextPtr++;
-                if (nextPtr >= limit) {
-                    *nextPtr = '\0';
-                    lineTooLong = 1;
-                    if (@global(InfoPrinting) == true) {
-                        fprintf(stderr, "ExtStream [warning]: line truncated in nextLine\n");
-                    }
-                    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';
-                    }
-                }
-                line = __MKSTRING_L(buffer, len);
-                if (! lineTooLong) {
-                    RETURN ( line );
-                }
-            }
-        }
+	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);
+	    }
+
+	    rslt = nextPtr = buffer;
+	    limit = buffer + sizeof(buffer) - 2;
+
+	    for (;;) {
+		__READBYTE__(ret, f, nextPtr, _buffered, __INST(handleType));
+		if (ret <= 0) {
+		    if (nextPtr == buffer)
+			rslt = NULL;
+		    if (ret == 0) {
+			__INST(hitEOF) = true;
+			break;
+		    } else {
+			__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+			goto err;
+		    }
+		}
+
+		if (*nextPtr == '\n') {
+		    cutOff = 1;
+		    *nextPtr = '\0';
+		    break;
+		}
+		if (*nextPtr == '\r') {
+		    char peekChar;
+
+		    /*
+		     * peek ahead for a newLine ...
+		     */
+		    __READBYTE__(ret, f, &peekChar, _buffered, __INST(handleType));
+		    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;
+		}
+
+		nextPtr++;
+		if (nextPtr >= limit) {
+		    *nextPtr = '\0';
+		    lineTooLong = 1;
+		    if (@global(InfoPrinting) == true) {
+			fprintf(stderr, "ExtStream [warning]: line truncated in nextLine\n");
+		    }
+		    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';
+		    }
+		}
+		line = __MKSTRING_L(buffer, len);
+		if (! lineTooLong) {
+		    RETURN ( line );
+		}
+	    }
+	}
     }
 err: ;
 %}.
     line notNil ifTrue:[
-        "/ the line as read is longer than 32k characters (boy - what a line)
-        "/ The exception could be handled by reading more and returning the
-        "/ concatenation in your exception handler (the receiver and the partial
-        "/ line are passed as parameter)
-
-        LineTooLongErrorSignal isHandled ifTrue:[
-            ^ LineTooLongErrorSignal
-                raiseRequestWith:(Array with:self with:line)
-                     errorString:('line too long read error')
-        ].
-        ^ line , self nextLine
+	"/ the line as read is longer than 32k characters (boy - what a line)
+	"/ The exception could be handled by reading more and returning the
+	"/ concatenation in your exception handler (the receiver and the partial
+	"/ line are passed as parameter)
+
+	LineTooLongErrorSignal isHandled ifTrue:[
+	    ^ LineTooLongErrorSignal
+		raiseRequestWith:(Array with:self with:line)
+		     errorString:('line too long read error')
+	].
+	^ line , self nextLine
     ].
 
     (hitEOF == true) ifTrue:[^ self pastEndRead].
@@ -3270,6 +3282,7 @@
 
 		nInstBytes = 0;
 		extPtr = (char *)(__externalBytesAddress(anObject));
+		if (extPtr == NULL) goto bad;
 		sz = __externalBytesSize(anObject);
 		if (__isSmallInteger(sz)) {
 		    objSize = __intVal(sz);
@@ -3459,6 +3472,7 @@
 
 		nInstBytes = 0;
 		extPtr = (char *)(__externalBytesAddress(anObject));
+		if (extPtr == NULL) goto bad;
 		sz = __externalBytesSize(anObject);
 		if (__isSmallInteger(sz)) {
 		    objSize = __intVal(sz);
@@ -3866,14 +3880,14 @@
 
 nextWord
     "in text-mode:
-         read the alphaNumeric next word (i.e. up to non letter-or-digit).
-         return a string containing those characters.
+	 read the alphaNumeric next word (i.e. up to non letter-or-digit).
+	 return a string containing those characters.
      in binary-mode:
-         read two bytes (msb-first) and return the value as a 16-bit
-         unsigned Integer (for compatibility with other smalltalks)"
+	 read two bytes (msb-first) and return the value as a 16-bit
+	 unsigned Integer (for compatibility with other smalltalks)"
 
     binary ifTrue:[
-        ^ self nextUnsignedShortMSB:true
+	^ self nextUnsignedShortMSB:true
     ].
     self obsoleteMethodWarning:'use #nextAlphaNumericWord'.
     ^ self nextAlphaNumericWord
@@ -3975,6 +3989,7 @@
 
 		nInstBytes = 0;
 		extPtr = (char *)__externalBytesAddress(anObject);
+		if (extPtr == NULL) goto bad;
 		sz = __externalBytesSize(anObject);
 		if (__isSmallInteger(sz)) {
 		    objSize = __intVal(sz);
@@ -4230,9 +4245,9 @@
 !ExternalStream methodsFor:'printing & storing'!
 
 printOn:aStream
-    aStream 
-        nextPutAll:self className; 
-        nextPutAll:'(handle:('.
+    aStream
+	nextPutAll:self className;
+	nextPutAll:'(handle:('.
     handle printOn:aStream.
     aStream nextPutAll:'))'
 ! !
@@ -4254,54 +4269,54 @@
      || (__INST(handleType) == @symbol(filePointer))
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-        if ((fp = __INST(handle)) != nil) {
-            FILEPOINTER f;
-            int rslt;
-
-            f = __FILEVal(fp);
-            if (@global(FileOpenTrace) == true) {
-                fprintf(stderr, "fclose [ExternalStream] %x\n", f);
-            }
+	if ((fp = __INST(handle)) != nil) {
+	    FILEPOINTER f;
+	    int rslt;
+
+	    f = __FILEVal(fp);
+	    if (@global(FileOpenTrace) == true) {
+		fprintf(stderr, "fclose [ExternalStream] %x\n", f);
+	    }
 #ifdef WIN32
-            if (__INST(mode) != @symbol(readonly)) {
-                // do a fflush() first, so that fclose() doesn't block
-                // we suspect, that EINTR causes problems in fclose()
-                do {
-                    __threadErrno = 0;
-                    rslt = __STX_C_CALL1("fflush", fflush, f);
-                } while((rslt < 0) && (__threadErrno == EINTR));
-            }
-            do {
-                __threadErrno = 0;
-                rslt = __STX_C_NOINT_CALL1("fclose", fclose, f);
-            } while((rslt < 0) && (__threadErrno == EINTR));
+	    if (__INST(mode) != @symbol(readonly)) {
+		// do a fflush() first, so that fclose() doesn't block
+		// we suspect, that EINTR causes problems in fclose()
+		do {
+		    __threadErrno = 0;
+		    rslt = __STX_C_CALL1("fflush", fflush, f);
+		} while((rslt < 0) && (__threadErrno == EINTR));
+	    }
+	    do {
+		__threadErrno = 0;
+		rslt = __STX_C_NOINT_CALL1("fclose", fclose, f);
+	    } while((rslt < 0) && (__threadErrno == EINTR));
 #else
-            __BEGIN_INTERRUPTABLE__
-            rslt = fclose(f);
-            __END_INTERRUPTABLE__
+	    __BEGIN_INTERRUPTABLE__
+	    rslt = fclose(f);
+	    __END_INTERRUPTABLE__
 #endif
-            if (rslt < 0) {
-                error = __mkSmallInteger(__threadErrno);
-                goto out;
-            }
-            __INST(handle) = nil;
-        }
-        RETURN (self);
+	    if (rslt < 0) {
+		error = __mkSmallInteger(__threadErrno);
+		goto out;
+	    }
+	    __INST(handle) = nil;
+	}
+	RETURN (self);
     }
 out:;
 %}.
 
     error notNil ifTrue:[
-        self primitiveFailed.
-        ^ self.
+	self primitiveFailed.
+	^ self.
     ].
 
     "/ fallback for rel5
 
     fp := handle.
     fp notNil ifTrue:[
-        handle := nil.
-        self closeFile:fp
+	handle := nil.
+	self closeFile:fp
     ]
 !
 
@@ -4332,59 +4347,59 @@
 
     if (__isStringLike(openmode)) {
 #ifdef WIN32
-        __stxWrapApiEnterCritical();
+	__stxWrapApiEnterCritical();
 #endif
-        if (__isSmallInteger(aFileDescriptor)) {
-            fd = __intVal(aFileDescriptor);
-        } 
+	if (__isSmallInteger(aFileDescriptor)) {
+	    fd = __intVal(aFileDescriptor);
+	}
 #ifdef WIN32
-        else if (__isExternalAddressLike(aFileDescriptor)) {
-            fd = _open_osfhandle((long)__externalAddressVal(aFileDescriptor), O_BINARY);
-            if (fd < 0) {
-                if (__threadErrno == 0) {
-                    // no more file descriptors
-                    __threadErrno = EMFILE;
-                }
-                error = __mkSmallInteger(__threadErrno);
-                __stxWrapApiLeaveCritical();
-                goto out;
-            }
-        }
+	else if (__isExternalAddressLike(aFileDescriptor)) {
+	    fd = _open_osfhandle((long)__externalAddressVal(aFileDescriptor), O_BINARY);
+	    if (fd < 0) {
+		if (__threadErrno == 0) {
+		    // no more file descriptors
+		    __threadErrno = EMFILE;
+		}
+		error = __mkSmallInteger(__threadErrno);
+		__stxWrapApiLeaveCritical();
+		goto out;
+	    }
+	}
 #endif
-        f = (FILEPOINTER) fdopen(fd, (char *)__stringVal(openmode));
+	f = (FILEPOINTER) fdopen(fd, (char *)__stringVal(openmode));
 #ifdef WIN32
-        __stxWrapApiLeaveCritical();
+	__stxWrapApiLeaveCritical();
 #endif
-        if (f == NULL) {
-            error =__mkSmallInteger(__threadErrno);
-        } else {
-            if (@global(FileOpenTrace) == true) {
-                fprintf(stderr, "fdopen [ExternalStream] %d (%x) -> %x\n", fd, fd, f);
-            }
-
-            fp = __MKFILEPOINTER(f); __INST(handle) = fp; __STORE(self, fp);
-            retVal = self;
-        }
+	if (f == NULL) {
+	    error =__mkSmallInteger(__threadErrno);
+	} else {
+	    if (@global(FileOpenTrace) == true) {
+		fprintf(stderr, "fdopen [ExternalStream] %d (%x) -> %x\n", fd, fd, f);
+	    }
+
+	    fp = __MKFILEPOINTER(f); __INST(handle) = fp; __STORE(self, fp);
+	    retVal = self;
+	}
     }
 out:;
 %}.
     retVal notNil ifTrue:[
-        position := ZeroPosition.
-        buffered isNil ifTrue:[
-            buffered := true.       "default is buffered"
-        ].
-        handleType := handleTypeSymbol.
-        Lobby register:self.
-        ^ retVal
+	position := ZeroPosition.
+	buffered isNil ifTrue:[
+	    buffered := true.       "default is buffered"
+	].
+	handleType := handleTypeSymbol.
+	Lobby register:self.
+	^ retVal
     ].
     error notNil ifTrue:[
-        OperatingSystem closeFd:aFileDescriptor.
-        lastErrorNumber := error.       
-        position := nil.
-        "
-         the open failed for some reason ...
-        "
-        ^ self openError:error
+	OperatingSystem closeFd:aFileDescriptor.
+	lastErrorNumber := error.
+	position := nil.
+	"
+	 the open failed for some reason ...
+	"
+	^ self openError:error
     ].
 !
 
@@ -4433,36 +4448,36 @@
 # if 1
        f = fopen((char *) __stringVal(aPath), (char *) __stringVal(openModeString));
 # else
-        __BEGIN_INTERRUPTABLE__
-        do {
-            f = fopen((char *) __stringVal(aPath), (char *) __stringVal(openModeString));
-        } while ((f == NULL) && (__threadErrno == EINTR));
-        __END_INTERRUPTABLE__
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    f = fopen((char *) __stringVal(aPath), (char *) __stringVal(openModeString));
+	} while ((f == NULL) && (__threadErrno == EINTR));
+	__END_INTERRUPTABLE__
 # endif
 #else /* UNIX */
-        __BEGIN_INTERRUPTABLE__
-        do {
-            f = fopen((char *) __stringVal(aPath), (char *) __stringVal(openModeString));
-        } while ((f == NULL) && (__threadErrno == EINTR));
-        __END_INTERRUPTABLE__
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    f = fopen((char *) __stringVal(aPath), (char *) __stringVal(openModeString));
+	} while ((f == NULL) && (__threadErrno == EINTR));
+	__END_INTERRUPTABLE__
 #endif /* UNIX */
-        if (f == NULL) {
-            __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-        } else {
-            if (@global(FileOpenTrace) == true) {
-                fprintf(stderr, "fopen %s [ExternalStream] -> %x\n", __stringVal(aPath), f);
-            }
-            fp = __MKFILEPOINTER(f); __INST(handle) = fp; __STORE(self, fp);
-            __INST(handleType) = @symbol(filePointer);
-            ok = true;
-        }
+	if (f == NULL) {
+	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+	} else {
+	    if (@global(FileOpenTrace) == true) {
+		fprintf(stderr, "fopen %s [ExternalStream] -> %x\n", __stringVal(aPath), f);
+	    }
+	    fp = __MKFILEPOINTER(f); __INST(handle) = fp; __STORE(self, fp);
+	    __INST(handleType) = @symbol(filePointer);
+	    ok = true;
+	}
     }
 %}.
     ok ifFalse:[
-        "
-         the open failed for some reason ...
-        "
-        ^ self openError:lastErrorNumber.
+	"
+	 the open failed for some reason ...
+	"
+	^ self openError:lastErrorNumber.
     ].
     position := ZeroPosition.
     Lobby register:self.
@@ -4518,39 +4533,39 @@
     int fd;
 
     if (!__isStringLike(openMode))
-        goto err;
+	goto err;
 
 #ifdef WIN32
     __stxWrapApiEnterCritical();
     if (__isExternalAddressLike(anIntegerOrExternalAddress) ) {
-        HANDLE __fileHandle = (HANDLE)__externalAddressVal(anIntegerOrExternalAddress);
-        fd = _open_osfhandle((long)__fileHandle, O_BINARY);      /* should we handle readonly, append or text mode? */
-        if (fd < 0) {
-            __stxWrapApiLeaveCritical();
-            CloseHandle(__fileHandle);
-            goto err;
-        }
+	HANDLE __fileHandle = (HANDLE)__externalAddressVal(anIntegerOrExternalAddress);
+	fd = _open_osfhandle((long)__fileHandle, O_BINARY);      /* should we handle readonly, append or text mode? */
+	if (fd < 0) {
+	    __stxWrapApiLeaveCritical();
+	    CloseHandle(__fileHandle);
+	    goto err;
+	}
     } else
 #endif
     if (__isSmallInteger(anIntegerOrExternalAddress)) {
-        fd = __smallIntegerVal(anIntegerOrExternalAddress);
+	fd = __smallIntegerVal(anIntegerOrExternalAddress);
     } else {
 #ifdef WIN32
-        __stxWrapApiLeaveCritical();
+	__stxWrapApiLeaveCritical();
 #endif
-        goto err;
+	goto err;
     }
     f = fdopen(fd, __stringVal(openMode));
 #ifdef WIN32
     __stxWrapApiLeaveCritical();
 #endif
     if (f != NULL) {
-        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);
+	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:;
 %}.
@@ -5389,29 +5404,29 @@
      || (__INST(handleType) == @symbol(filePointer))
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-        if ((fp = __INST(handle)) != nil) {
-            if (__INST(mode) != @symbol(readonly)) {
-                if (__INST(buffered) == true) {
-                    FILEPOINTER f = __FILEVal(fp);
+	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 {
-                        int rslt;
-
-                        do {
-                            __threadErrno = 0;
-                            rslt = __STX_C_CALL1("fflush", fflush, f);
-                        } while((rslt < 0) && (__threadErrno == EINTR));
-                    }
+		    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+			__win32_fflush(f);
+		    } else {
+			int rslt;
+
+			do {
+			    __threadErrno = 0;
+			    rslt = __STX_C_CALL1("fflush", fflush, f);
+			} while((rslt < 0) && (__threadErrno == EINTR));
+		    }
 #else /* ! WIN32 */
-                    __BEGIN_INTERRUPTABLE__
-                    FFLUSH(f);
-                    __END_INTERRUPTABLE__
+		    __BEGIN_INTERRUPTABLE__
+		    FFLUSH(f);
+		    __END_INTERRUPTABLE__
 #endif /* ! WIN32 */
-                }
-            }
-        }
+		}
+	    }
+	}
     }
 %}
 !
@@ -5509,10 +5524,10 @@
 
 %{
     FILEPOINTER f;
-    int len, cnt;
+    INT len, cnt;
     OBJ fp;
     int _buffered;
-    int o_offs;
+    INT o_offs;
 
     __INST(lastErrorNumber) = nil;
 
@@ -5546,7 +5561,7 @@
 		}
 	    } else {
 		if (__INST(binary) == true) {
-		    int offs;
+		    INT offs;
 
 		    if (__isByteArrayLike(aCollection)) {
 			offs = 0;
@@ -5689,20 +5704,36 @@
 %}.
     lastErrorNumber notNil ifTrue:[self writeError. ^ self].
     ^ super nextPutAll:aCollection startingAt:start to:stop
+!
+
+nextPutAllUnicode:aString
+    "normal streams can not handle multi-byte characters, so convert them to utf8.
+     This is needed, so that you can do ('something' asUnicode16String errorPrintCR)"
+
+    aString do:[:eachCharacter|
+        self nextPutUtf8:eachCharacter.
+    ].
+
+    "
+        'Bönnigheim' asUnicode16String errorPrintCR
+    "
+!
+
+nextPutUnicode:aCharacter
+    "normal streams can not handle multi-byte characters, so convert them to utf8"
+
+    self nextPutUtf8:aCharacter.
 ! !
 
 !ExternalStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.352 2012/11/19 15:01:44 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.357 2013-01-17 22:37:55 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.352 2012/11/19 15:01:44 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: ExternalStream.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.357 2013-01-17 22:37:55 cg Exp $'
 ! !
 
+
 ExternalStream initialize!
--- a/False.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/False.st	Sat Jan 19 01:30:00 2013 +0000
@@ -235,12 +235,5 @@
 !False class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/False.st,v 1.28 2009/09/14 12:49:49 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: False.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/False.st,v 1.28 2009-09-14 12:49:49 cg Exp $'
 ! !
-
-
-
--- a/FileDirectory.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/FileDirectory.st	Sat Jan 19 01:30:00 2013 +0000
@@ -817,15 +817,11 @@
 !FileDirectory class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/FileDirectory.st,v 1.53 2012/08/31 17:57:10 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/FileDirectory.st,v 1.53 2012-08-31 17:57:10 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/FileDirectory.st,v 1.53 2012/08/31 17:57:10 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: FileDirectory.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/FileDirectory.st,v 1.53 2012-08-31 17:57:10 cg Exp $'
 ! !
 
 FileDirectory initialize!
--- a/FileDoesNotExistException.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/FileDoesNotExistException.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1,14 +1,3 @@
-"
- COPYRIGHT (c) 2006 by eXept Software AG
-	      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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
-"
 "{ Package: 'stx:libbasic' }"
 
 OpenError subclass:#FileDoesNotExistException
@@ -18,35 +7,13 @@
 	category:'Kernel-Exceptions-Errors'
 !
 
-!FileDoesNotExistException class methodsFor:'documentation'!
-
-copyright
-"
- COPYRIGHT (c) 2006 by eXept Software AG
-	      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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
-"
-! !
 
 !FileDoesNotExistException class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/FileDoesNotExistException.st,v 1.1 2011/09/09 05:13:24 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/FileDoesNotExistException.st,v 1.1 2011-09-09 05:13:24 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/FileDoesNotExistException.st,v 1.1 2011/09/09 05:13:24 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: FileDoesNotExistException.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/FileDoesNotExistException.st,v 1.1 2011-09-09 05:13:24 cg Exp $'
 ! !
-
-
-
--- a/FileStream.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/FileStream.st	Sat Jan 19 01:30:00 2013 +0000
@@ -21,6 +21,9 @@
 !FileStream primitiveDefinitions!
 %{
 
+#undef String
+#undef Character
+
 #include <stdio.h>
 #define _STDIO_H_INCLUDED_
 
@@ -49,6 +52,9 @@
 # include <rms.h>
 #endif
 
+#define String  __STX_String
+#define Character __STX_Character
+
 #ifdef WIN32
 # define NO_STDIO
 # ifdef __i386__
@@ -72,6 +78,8 @@
 # undef Message
 # undef Process
 # undef Processor
+# undef String
+# undef Character
 
 # define NOATOM
 # define NOGDICAPMASKS
@@ -89,6 +97,10 @@
 # include <windows.h>
 # include <winsock.h> /* */
 
+# if 1 // defined(__MINGW64__)
+#  include <fcntl.h>
+# endif
+
 # if defined(__BORLANDC__)
 #  include <io.h>
 # else
@@ -137,10 +149,17 @@
 # ifdef __DEF_Processor
 #  define Processor __DEF_Processor
 # endif
+# ifdef __DEF_String
+#  define String __DEF_String
+# endif
+# ifdef __DEF_Character
+#  define Character __DEF_Character
+# endif
 
-# define INT  int
-# define UINT uint
+# define INT  STX_INT
+# define UINT STX_UINT
 
+# if 0
 # ifndef DO_WRAP_CALLS
 #  define STX_C_CALL0(__nm__, __f__)                            __f__((__a1__))
 #  define STX_C_CALL1(__nm__, __f__, __a1__)                    __f__((__a1__))
@@ -152,6 +171,7 @@
 #  define STX_C_CALL2(__nm__, __f__, __a1__, __a2__)            __STX_C_CALL2(__nm__, (void*)__f__, (void*)(__a1__), (void*)(__a2__))
 #  define STX_C_CALL3(__nm__, __f__, __a1__, __a2__, __a3__)    __STX_C_CALL3(__nm__, (void*)__f__, (void*)(__a1__), (void*)(__a2__), (void*)(__a3__))
 # endif
+# endif
 
 /* #  define HFILE HANDLE */
 #  define HFILE FILE *
@@ -967,7 +987,7 @@
     "Modified: 30.7.1997 / 16:43:50 / cg"
 ! !
 
-!FileStream methodsFor:'private'!
+!FileStream protectedMethodsFor:'private'!
 
 closeFile
     "low level close - may be redefined in subclasses.
@@ -979,7 +999,9 @@
     ]
 
     "Created: / 13.8.1998 / 12:11:22 / cg"
-!
+! !
+
+!FileStream methodsFor:'private'!
 
 createForReadWrite
     "create/truncate the file for read/write.
@@ -1013,7 +1035,9 @@
      This is a private entry, but maybe useful to open/create a file in a special mode,
      which is proprietrary to the operatingSystem."
 
-    |wasBlocked|
+    |wasBlocked encodedPathName|
+
+    encodedPathName := OperatingSystem encodePath:pathName.
 
 %{
     HFILE f;
@@ -1021,9 +1045,9 @@
     int pass = 0;
 
 retry:
-    if (__isNonNilObject(pathName) && (__isStringLike(openmode) || __isArrayLike(openmode)))
+    if (__isNonNilObject(encodedPathName) && (__isStringLike(openmode) || __isArrayLike(openmode)))
 #ifdef __VMS__
-      if (__qClass(pathName)==String) {
+      if (__isStringLike(pathName)) {
 	do {
 	    /*
 	     * allow passing additional RMS arguments.
@@ -1297,7 +1321,7 @@
       }
 # else /* not WIN32 */
 
-      if (__qClass(pathName)==String) {
+      if (__isStringLike(encodedPathName)) {
 	do {
 	    __BEGIN_INTERRUPTABLE__
 #  ifdef LINUX
@@ -1306,11 +1330,11 @@
 	     * Therefore, check errno and fake a null-ret.
 	     */
 	    __threadErrno = 0;
-	    f = fopen((char *) __stringVal(pathName), (char *) __stringVal(openmode));
+	    f = fopen((char *) __stringVal(encodedPathName), (char *) __stringVal(openmode));
 	    if (__threadErrno == EINTR)
 		f = NULL;
 #  else /* not LINUX */
-	    f = fopen((char *) __stringVal(pathName), (char *) __stringVal(openmode));
+	    f = fopen((char *) __stringVal(encodedPathName), (char *) __stringVal(openmode));
 #  endif /* not LINUX */
 	    __END_INTERRUPTABLE__
 	} while ((f == NULL) && (__threadErrno == EINTR));
@@ -1468,14 +1492,14 @@
 
     handle := self openFile:pathName withMode:openmode attributes:attributeSpec.
     handle isNil ifTrue:[
-        "
-         the open failed for some reason ...
-        "
-        ^ self openError:lastErrorNumber.
+	"
+	 the open failed for some reason ...
+	"
+	^ self openError:lastErrorNumber.
     ].
     position := ZeroPosition.
     buffered isNil ifTrue:[
-        buffered := true.       "default is buffered"
+	buffered := true.       "default is buffered"
     ].
 !
 
@@ -1681,15 +1705,11 @@
 !FileStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/FileStream.st,v 1.147 2012/10/26 09:56:21 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/FileStream.st,v 1.152 2013-01-10 11:43:30 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/FileStream.st,v 1.147 2012/10/26 09:56:21 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: FileStream.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/FileStream.st,v 1.152 2013-01-10 11:43:30 cg Exp $'
 ! !
 
 FileStream initialize!
--- a/Filename.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Filename.st	Sat Jan 19 01:30:00 2013 +0000
@@ -12,11 +12,11 @@
 "{ Package: 'stx:libbasic' }"
 
 Object subclass:#Filename
-        instanceVariableNames:'nameString'
-        classVariableNames:'NextTempFilenameIndex TempDirectory DefaultTempDirectory
-                ConcreteClass'
-        poolDictionaries:''
-        category:'System-Support'
+	instanceVariableNames:'nameString'
+	classVariableNames:'NextTempFilenameIndex TempDirectory DefaultTempDirectory
+		ConcreteClass'
+	poolDictionaries:''
+	category:'System-Support'
 !
 
 !Filename class methodsFor:'documentation'!
@@ -4208,7 +4208,7 @@
      'smalltalk.rc' asFilename mimeTypeFromName     
      'bitmaps/SBrowser.xbm' asFilename mimeTypeFromName    
      '../../rules/stmkmf' asFilename mimeTypeFromName  
-     '/blh' asFilename mimeTypeFromName               
+     '/bläh' asFilename mimeTypeFromName               
      '/x.zip' asFilename mimeTypeFromName               
      '/x.gz' asFilename mimeTypeFromName               
     "
@@ -4327,7 +4327,7 @@
      'smalltalk.rc' asFilename mimeTypeOfContents      
      'bitmaps/SBrowser.xbm' asFilename mimeTypeOfContents    
      '../../rules/stmkmf' asFilename mimeTypeOfContents 
-     '/blh' asFilename mimeTypeOfContents              
+     '/bläh' asFilename mimeTypeOfContents              
      'C:\Dokumente und Einstellungen\cg\Favoriten\languages.lnk' asFilename mimeTypeOfContents
      'G:\A\A01.TOP' asFilename mimeTypeOfContents       
     "
@@ -4515,6 +4515,12 @@
     "Modified: 21.12.1996 / 15:21:57 / cg"
 !
 
+encodedNameString
+    "answer the name as passed to OS system calls"
+
+    ^ OperatingSystem encodePath:nameString
+!
+
 filenameCompletion
     "try to complete the receiver filename.
      BAD DESIGN: has side effect on the receiver.
@@ -5410,7 +5416,7 @@
     [
         result := aBlock value:stream
     ] ensure:[
-        stream close
+        stream notNil ifTrue:[stream close]
     ].
     ^ result
 
@@ -5901,15 +5907,12 @@
 !Filename class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.381 2012/11/09 09:08:52 sr Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.383 2013-01-04 13:38:39 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Filename.st,v 1.381 2012/11/09 09:08:52 sr Exp §'
-!
-
-version_SVN
-    ^ '$Id: Filename.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.383 2013-01-04 13:38:39 cg Exp $'
 ! !
 
+
 Filename initialize!
--- a/FixedPoint.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/FixedPoint.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1351,16 +1351,9 @@
 !FixedPoint class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/FixedPoint.st,v 1.45 2010/11/23 13:39:59 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/FixedPoint.st,v 1.45 2010-11-23 13:39:59 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/FixedPoint.st,v 1.45 2010/11/23 13:39:59 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: FixedPoint.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/FixedPoint.st,v 1.45 2010-11-23 13:39:59 cg Exp $'
 ! !
-
-
-
--- a/Float.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Float.st	Sat Jan 19 01:30:00 2013 +0000
@@ -395,7 +395,6 @@
     DefaultPrintFormat := something.
 ! !
 
-
 !Float class methodsFor:'binary storage'!
 
 readBinaryIEEEDoubleFrom:aStream
@@ -618,6 +617,7 @@
     "
 ! !
 
+
 !Float class methodsFor:'queries'!
 
 exponentCharacter
@@ -1523,7 +1523,7 @@
          * (i.e. look if string contains '.' or 'e' and append '.0' if not)
          */
         for (cp = buffer; *cp; cp++) {
-            if ((*cp == '.') || (*cp == 'E') || (*cp == 'e')) break;
+            if ((*cp == '.') || (*cp == ',') || (*cp == 'E') || (*cp == 'e')) break;
         }
         if (!*cp && (cp[-1] >= '0') && (cp[-1] <= '9')) {
             if (__isCharacter(@global(DecimalPointCharacterForPrinting))) {
@@ -1534,7 +1534,7 @@
             *cp++ = '0';
             *cp = '\0';
         } else {
-            if (cp && (*cp == '.')) {
+            if (cp && ((*cp == '.') || (*cp == ','))) {
                 if (__isCharacter(@global(DecimalPointCharacterForPrinting))) {
                     *cp = __intVal(__characterVal(@global(DecimalPointCharacterForPrinting)));
                 }
@@ -1658,7 +1658,7 @@
          * (i.e. look if string contains '.' or 'e' and append '.0' if not)
          */
         for (cp = buffer; *cp; cp++) {
-            if ((*cp == '.') || (*cp == 'E') || (*cp == 'e')) break;
+            if ((*cp == '.') || (*cp == ',') || (*cp == 'E') || (*cp == 'e')) break;
         }
         if (!*cp && (cp[-1] >= '0') && (cp[-1] <= '9')) {
             *cp++ = '.';
@@ -2778,18 +2778,12 @@
 !Float class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Float.st,v 1.180 2012/08/03 20:25:37 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Float.st,v 1.182 2013-01-04 15:36:58 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Float.st,v 1.180 2012/08/03 20:25:37 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: Float.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Float.st,v 1.182 2013-01-04 15:36:58 cg Exp $'
 ! !
 
+
 Float initialize!
-
-
-
--- a/FloatArray.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/FloatArray.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1018,17 +1018,9 @@
 !FloatArray class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/FloatArray.st,v 1.30 2011/11/25 15:38:18 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/FloatArray.st,v 1.30 2011-11-25 15:38:18 cg Exp $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/FloatArray.st,v 1.30 2011/11/25 15:38:18 cg Exp '
-!
-
-version_SVN
-    ^ '$Id: FloatArray.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/FloatArray.st,v 1.30 2011-11-25 15:38:18 cg Exp $'
 ! !
-
-
-
-
--- a/Fraction.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Fraction.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1158,18 +1158,11 @@
 !Fraction class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Fraction.st,v 1.81 2011/05/03 09:08:52 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Fraction.st,v 1.81 2011-05-03 09:08:52 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Fraction.st,v 1.81 2011/05/03 09:08:52 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Fraction.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Fraction.st,v 1.81 2011-05-03 09:08:52 cg Exp $'
 ! !
 
 Fraction initialize!
-
-
-
--- a/GNOMEDesktop.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/GNOMEDesktop.st	Sat Jan 19 01:30:00 2013 +0000
@@ -51,49 +51,12 @@
     "Created: / 11-08-2009 / 16:54:43 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
-!GNOMEDesktop class methodsFor:'testing'!
-
-isAvailable
-    ^ super isAvailable and: [ 
-        (OperatingSystem getEnvironment: 'XDG_CURRENT_DESKTOP') = 'GNOME'
-            or:[(OperatingSystem getEnvironment: 'GNOME_DESKTOP_SESSION_ID') notNil
-            or:[(OperatingSystem getEnvironment: 'GNOME_KEYRING_PID') notNil
-            ]]
-    ]
-
-    "
-        GNOMEDesktop isAvailable
-    "
-
-    "Created: / 09-05-2012 / 11:47:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!GNOMEDesktop methodsFor:'accessing-directories'!
-
-desktopDirectory
-
-    ^XDG_DESKTOP_DIR notNil 
-        ifTrue:[XDG_DESKTOP_DIR]
-        ifFalse:[Filename homeDirectory]
-
-    "Created: / 09-05-2012 / 11:56:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-documentsDirectory
-
-    ^XDG_DOCUMENTS_DIR notNil 
-        ifTrue:[XDG_DOCUMENTS_DIR]
-        ifFalse:[Filename homeDirectory]
-
-    "Created: / 09-05-2012 / 11:56:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
 !GNOMEDesktop class methodsFor:'documentation'!
 
-version
-    ^'$Id: GNOMEDesktop.st 10808 2012-05-09 15:04:12Z vranyj1 $'
+version_CVS
+    ^ '$Header: /cvs/stx/stx/libbasic/GNOMEDesktop.st,v 1.1 2011-06-28 10:09:53 vrany Exp $'
 !
 
 version_SVN
-    ^ '$Id: GNOMEDesktop.st 10808 2012-05-09 15:04:12Z vranyj1 $'
+    ^ ' Id: GNOMEDesktop.st 10524 2010-05-20 13:35:23Z vranyj1  '
 ! !
--- a/GenericException.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/GenericException.st	Sat Jan 19 01:30:00 2013 +0000
@@ -2315,15 +2315,11 @@
 !GenericException class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.133 2012/07/23 11:04:16 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.133 2012-07-23 11:04:16 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.133 2012/07/23 11:04:16 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: GenericException.st 10829 2012-07-25 08:45:15Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.133 2012-07-23 11:04:16 stefan Exp $'
 ! !
 
 GenericException initialize!
--- a/GetOpt.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/GetOpt.st	Sat Jan 19 01:30:00 2013 +0000
@@ -172,7 +172,7 @@
 !GetOpt methodsFor:'parsing - private'!
 
 parseArgument: arg with: rest
-    (arg first = $- and: [arg size > 1])
+    (arg size > 1 and:[arg first = $-])
         ifTrue:  [self parseOption: arg with: rest]
         ifFalse: [defaultBlock value: arg]
 !
@@ -234,12 +234,5 @@
 !GetOpt class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/GetOpt.st,v 1.2 2011/09/19 08:14:26 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: GetOpt.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/GetOpt.st,v 1.3 2012-05-14 11:02:49 stefan Exp $'
 ! !
-
-
-
--- a/HashStream.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/HashStream.st	Sat Jan 19 01:30:00 2013 +0000
@@ -257,8 +257,6 @@
     "
 !
 
-
-
 reset
     "initialize to a clean state"
 
@@ -391,13 +389,9 @@
 !HashStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/HashStream.st,v 1.26 2012/10/31 15:57:49 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/HashStream.st,v 1.26 2012-10-31 15:57:49 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/HashStream.st,v 1.26 2012/10/31 15:57:49 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: HashStream.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/HashStream.st,v 1.26 2012-10-31 15:57:49 stefan Exp $'
 ! !
--- a/IdentitySet.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/IdentitySet.st	Sat Jan 19 01:30:00 2013 +0000
@@ -68,6 +68,31 @@
 
 !IdentitySet methodsFor:'private'!
 
+collisionsFor:key
+    "Return the number of searches - 1 required for key"
+
+    |index  "{ Class:SmallInteger }"
+     length "{ Class:SmallInteger }" startIndex probe count|
+
+    length := keyArray basicSize.
+    startIndex := index := self initialIndexForKey:key.
+
+    count := 0.
+    [true] whileTrue:[
+        probe := keyArray basicAt:index.
+        (probe notNil and:[key == probe]) ifTrue:[^ count].
+        (self slotIsEmpty:probe) ifTrue:[self error:'non existing key'].
+
+        index == length ifTrue:[
+            index := 1.
+        ] ifFalse:[
+            index := index + 1.
+        ].
+        count := count + 1.
+        index == startIndex ifTrue:[self error:'non existing key'].
+    ]
+!
+
 find:key ifAbsent:aBlock
     "Look for the key in the receiver.  If it is found, return
      the index of the slot containing the key, otherwise
@@ -217,12 +242,6 @@
 !IdentitySet class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/IdentitySet.st,v 1.33 2012/02/22 12:54:31 stefan Exp $'
-!
-
-version_SVN
-    ^ '$Id: IdentitySet.st 10792 2012-03-21 17:45:38Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/IdentitySet.st,v 1.34 2013-01-15 16:33:59 stefan Exp $'
 ! !
 
-
-
--- a/ImmutableArray.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ImmutableArray.st	Sat Jan 19 01:30:00 2013 +0000
@@ -11,7 +11,7 @@
 "
 "{ Package: 'stx:libbasic' }"
 
-Array subclass:#ImmutableArray
+Array variableSubclass:#ImmutableArray
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -131,12 +131,6 @@
     "
 ! !
 
-!ImmutableArray methodsFor:'error handling'!
-
-
-
- !
-
 !ImmutableArray methodsFor:'private'!
 
 species
@@ -181,13 +175,9 @@
 !ImmutableArray class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ImmutableArray.st,v 1.31 2012/10/16 15:11:40 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ImmutableArray.st,v 1.31 2012-10-16 15:11:40 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ImmutableArray.st,v 1.31 2012/10/16 15:11:40 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: ImmutableArray.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ImmutableArray.st,v 1.31 2012-10-16 15:11:40 cg Exp $'
 ! !
--- a/ImmutableByteArray.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ImmutableByteArray.st	Sat Jan 19 01:30:00 2013 +0000
@@ -193,9 +193,5 @@
 !ImmutableByteArray class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ImmutableByteArray.st,v 1.11 2012/10/16 15:11:45 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: ImmutableByteArray.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ImmutableByteArray.st,v 1.11 2012-10-16 15:11:45 cg Exp $'
 ! !
--- a/ImmutableString.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ImmutableString.st	Sat Jan 19 01:30:00 2013 +0000
@@ -11,7 +11,7 @@
 "
 "{ Package: 'stx:libbasic' }"
 
-String subclass:#ImmutableString
+String variableByteSubclass:#ImmutableString
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -139,12 +139,6 @@
     "Created: / 3.8.1998 / 14:47:00 / cg"
 ! !
 
-!ImmutableString methodsFor:'error handling'!
-
-
-
- !
-
 !ImmutableString methodsFor:'private'!
 
 species
@@ -186,13 +180,9 @@
 !ImmutableString class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ImmutableString.st,v 1.13 2012/10/16 15:11:35 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ImmutableString.st,v 1.13 2012-10-16 15:11:35 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ImmutableString.st,v 1.13 2012/10/16 15:11:35 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: ImmutableString.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ImmutableString.st,v 1.13 2012-10-16 15:11:35 cg Exp $'
 ! !
--- a/Infinity.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Infinity.st	Sat Jan 19 01:30:00 2013 +0000
@@ -425,18 +425,11 @@
 !Infinity class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Infinity.st,v 1.13 2009/10/12 19:34:30 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Infinity.st,v 1.13 2009-10-12 19:34:30 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Infinity.st,v 1.13 2009/10/12 19:34:30 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Infinity.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Infinity.st,v 1.13 2009-10-12 19:34:30 cg Exp $'
 ! !
 
 Infinity initialize!
-
-
-
--- a/InlineObject.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/InlineObject.st	Sat Jan 19 01:30:00 2013 +0000
@@ -74,12 +74,5 @@
 !InlineObject class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/InlineObject.st,v 1.3 2009/09/11 13:05:01 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: InlineObject.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/InlineObject.st,v 1.3 2009-09-11 13:05:01 cg Exp $'
 ! !
-
-
-
--- a/InlineObjectClassDescription.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/InlineObjectClassDescription.st	Sat Jan 19 01:30:00 2013 +0000
@@ -53,16 +53,9 @@
 !InlineObjectClassDescription class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/InlineObjectClassDescription.st,v 1.2 2010/08/13 16:57:49 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/InlineObjectClassDescription.st,v 1.2 2010-08-13 16:57:49 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/InlineObjectClassDescription.st,v 1.2 2010/08/13 16:57:49 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: InlineObjectClassDescription.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/InlineObjectClassDescription.st,v 1.2 2010-08-13 16:57:49 cg Exp $'
 ! !
-
-
-
--- a/InlineObjectPrototype.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/InlineObjectPrototype.st	Sat Jan 19 01:30:00 2013 +0000
@@ -852,12 +852,5 @@
 !InlineObjectPrototype class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/InlineObjectPrototype.st,v 1.2 2009/09/11 13:04:28 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: InlineObjectPrototype.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/InlineObjectPrototype.st,v 1.2 2009-09-11 13:04:28 cg Exp $'
 ! !
-
-
-
--- a/Integer.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Integer.st	Sat Jan 19 01:30:00 2013 +0000
@@ -2582,6 +2582,7 @@
     "Modified: 1.3.1997 / 16:45:17 / cg"
 ! !
 
+
 !Integer methodsFor:'iteration'!
 
 to:stop collect:aBlock
@@ -2934,7 +2935,7 @@
     ^ fibUsingDict value:self
 
     "the running time is mostly dictated by the LargeInteger multiplication performance...
-     (therefore, we get O execution times, even for a linear number of multiplications)
+     (therefore, we get O² execution times, even for a linear number of multiplications)
 
      Time millisecondsToRun:[50000 fib_iterative]  312    (DUO 1.7Ghz CPU)
      Time millisecondsToRun:[50000 fib_helper]     109
@@ -4862,15 +4863,11 @@
 !Integer class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Integer.st,v 1.271 2012/11/04 15:05:51 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Integer.st,v 1.271 2012-11-04 15:05:51 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Integer.st,v 1.271 2012/11/04 15:05:51 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Integer.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Integer.st,v 1.271 2012-11-04 15:05:51 cg Exp $'
 ! !
 
 Integer initialize!
--- a/InterestConverter.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/InterestConverter.st	Sat Jan 19 01:30:00 2013 +0000
@@ -235,12 +235,5 @@
 !InterestConverter class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/InterestConverter.st,v 1.16 2012/08/03 15:52:54 stefan Exp $'
-!
-
-version_SVN
-    ^ '$Id: InterestConverter.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/InterestConverter.st,v 1.16 2012-08-03 15:52:54 stefan Exp $'
 ! !
-
-
-
--- a/Interval.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Interval.st	Sat Jan 19 01:30:00 2013 +0000
@@ -292,7 +292,7 @@
     |elementValue mySize newCollection|
 
     elementValue := start.
-    newCollection := Array new:(mySize := self size).
+    newCollection := self species withSize:(mySize := self size).
     1 to: mySize do:[:i |
         newCollection at:i put:(aBlock value:elementValue).
         elementValue := elementValue + step.
@@ -303,8 +303,7 @@
      (1 to:20 by:2) collect:[:i | i*i]              
     "
 
-    "Modified: / 03-05-2012 / 16:48:16 / cg"
-    "Modified (comment): / 03-05-2012 / 18:31:01 / cg"
+    "Modified: / 04-05-2012 / 13:03:56 / cg"
 !
 
 do:aBlock
@@ -689,16 +688,9 @@
 !Interval class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Interval.st,v 1.53 2012/05/03 16:31:40 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Interval.st,v 1.54 2012-05-04 11:04:15 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Interval.st,v 1.53 2012/05/03 16:31:40 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Interval.st 10807 2012-05-05 21:58:24Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Interval.st,v 1.54 2012-05-04 11:04:15 cg Exp $'
 ! !
-
-
-
--- a/InvalidPatchError.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/InvalidPatchError.st	Sat Jan 19 01:30:00 2013 +0000
@@ -61,11 +61,7 @@
 !InvalidPatchError class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/InvalidPatchError.st,v 1.1 2011/02/03 11:49:27 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: InvalidPatchError.st 10700 2011-09-29 15:44:37Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/InvalidPatchError.st,v 1.1 2011-02-03 11:49:27 stefan Exp $'
 ! !
 
 InvalidPatchError initialize!
--- a/InvalidTypeError.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/InvalidTypeError.st	Sat Jan 19 01:30:00 2013 +0000
@@ -49,11 +49,11 @@
 !InvalidTypeError class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/InvalidTypeError.st,v 1.1 2012/11/02 09:19:52 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/InvalidTypeError.st,v 1.1 2012-11-02 09:19:52 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/InvalidTypeError.st,v 1.1 2012/11/02 09:19:52 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/InvalidTypeError.st,v 1.1 2012-11-02 09:19:52 cg Exp $'
 ! !
 
-InvalidTypeError initialize!
\ No newline at end of file
+InvalidTypeError initialize!
--- a/IsDebuggingQuery.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/IsDebuggingQuery.st	Sat Jan 19 01:30:00 2013 +0000
@@ -17,9 +17,9 @@
 !IsDebuggingQuery class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/IsDebuggingQuery.st,v 1.1 2012/10/18 13:31:55 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/IsDebuggingQuery.st,v 1.1 2012-10-18 13:31:55 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/IsDebuggingQuery.st,v 1.1 2012/10/18 13:31:55 stefan Exp §'
-! !
\ No newline at end of file
+    ^ '$Header: /cvs/stx/stx/libbasic/IsDebuggingQuery.st,v 1.1 2012-10-18 13:31:55 stefan Exp $'
+! !
--- a/KeyedCollection.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/KeyedCollection.st	Sat Jan 19 01:30:00 2013 +0000
@@ -200,16 +200,9 @@
 !KeyedCollection class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/KeyedCollection.st,v 1.8 2010/08/24 08:29:08 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/KeyedCollection.st,v 1.8 2010-08-24 08:29:08 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/KeyedCollection.st,v 1.8 2010/08/24 08:29:08 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: KeyedCollection.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/KeyedCollection.st,v 1.8 2010-08-24 08:29:08 cg Exp $'
 ! !
-
-
-
--- a/LargeInteger.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/LargeInteger.st	Sat Jan 19 01:30:00 2013 +0000
@@ -290,8 +290,6 @@
     "Modified: / 8.5.1998 / 21:40:41 / cg"
 ! !
 
-
-
 !LargeInteger class methodsFor:'queries'!
 
 isBuiltInClass
@@ -5159,17 +5157,9 @@
 !LargeInteger class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.204 2012/01/31 11:18:26 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.204 2012-01-31 11:18:26 cg Exp $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.204 2012/01/31 11:18:26 cg Exp '
-!
-
-version_SVN
-    ^ '$Id: LargeInteger.st 10777 2012-02-13 19:19:41Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.204 2012-01-31 11:18:26 cg Exp $'
 ! !
-
-
-
-
--- a/LibraryDefinition.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/LibraryDefinition.st	Sat Jan 19 01:30:00 2013 +0000
@@ -718,13 +718,9 @@
 !LibraryDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Id: LibraryDefinition.st 10885 2012-12-08 00:50:06Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LibraryDefinition.st,v 1.110 2012-10-25 20:40:23 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/LibraryDefinition.st,v 1.110 2012/10/25 20:40:23 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: LibraryDefinition.st 10885 2012-12-08 00:50:06Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LibraryDefinition.st,v 1.110 2012-10-25 20:40:23 cg Exp $'
 ! !
--- a/LimitedPrecisionReal.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/LimitedPrecisionReal.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1198,18 +1198,11 @@
 !LimitedPrecisionReal class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/LimitedPrecisionReal.st,v 1.72 2010/03/06 11:27:34 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LimitedPrecisionReal.st,v 1.72 2010-03-06 11:27:34 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/LimitedPrecisionReal.st,v 1.72 2010/03/06 11:27:34 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: LimitedPrecisionReal.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LimitedPrecisionReal.st,v 1.72 2010-03-06 11:27:34 cg Exp $'
 ! !
 
 LimitedPrecisionReal initialize!
-
-
-
--- a/LinkedList.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/LinkedList.st	Sat Jan 19 01:30:00 2013 +0000
@@ -430,16 +430,9 @@
 !LinkedList class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/LinkedList.st,v 1.41 2011/09/27 09:42:48 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LinkedList.st,v 1.41 2011-09-27 09:42:48 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/LinkedList.st,v 1.41 2011/09/27 09:42:48 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: LinkedList.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LinkedList.st,v 1.41 2011-09-27 09:42:48 cg Exp $'
 ! !
-
-
-
--- a/LongFloat.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/LongFloat.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1375,7 +1375,7 @@
          * (i.e. look if string contains '.' or 'e' and append '.0' if not)
          */
         for (cp = buffer; *cp; cp++) {
-            if ((*cp == '.') || (*cp == 'E') || (*cp == 'e')) break;
+            if ((*cp == '.') || (*cp == ',') || (*cp == 'E') || (*cp == 'e')) break;
         }
         if (!*cp && (cp[-1] >= '0') && (cp[-1] <= '9')) {
             if (__isCharacter(@global(DecimalPointCharacterForPrinting))) {
@@ -1514,7 +1514,7 @@
          * (i.e. look if string contains '.' or 'e' and append '.0' if not)
          */
         for (cp = buffer; *cp; cp++) {
-            if ((*cp == '.') || (*cp == 'E') || (*cp == 'e')) break;
+            if ((*cp == '.') || (*cp == ',') || (*cp == 'E') || (*cp == 'e')) break;
         }
         if (!*cp && (cp[-1] >= '0') && (cp[-1] <= '9')) {
             *cp++ = '.';
@@ -2540,18 +2540,12 @@
 !LongFloat class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/LongFloat.st,v 1.70 2012/09/30 15:33:40 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LongFloat.st,v 1.71 2012-12-17 18:28:24 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/LongFloat.st,v 1.70 2012/09/30 15:33:40 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: LongFloat.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LongFloat.st,v 1.71 2012-12-17 18:28:24 stefan Exp $'
 ! !
 
+
 LongFloat initialize!
-
-
-
--- a/Lookup.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Lookup.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1,13 +1,27 @@
 "
- COPYRIGHT (c) 2006 by eXept Software AG
+ COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
               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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the 'Software'), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
 "
 "{ Package: 'stx:libbasic' }"
 
@@ -15,22 +29,36 @@
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
-	category:'Kernel-Classes'
+	category:'Kernel-Extensions'
 !
 
 !Lookup class methodsFor:'documentation'!
 
 copyright
 "
- COPYRIGHT (c) 2006 by eXept Software AG
+ COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
               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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the 'Software'), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
 "
 ! !
 
@@ -151,6 +179,10 @@
 
 !Lookup class methodsFor:'documentation'!
 
+version_CVS
+    ^ '$Header: /cvs/stx/stx/libbasic/Lookup.st,v 1.2 2011-06-28 11:04:17 cg Exp $'
+!
+
 version_SVN
     ^ '$Id: Lookup.st 10722 2011-10-13 15:42:52Z vranyj1 $'
 ! !
--- a/LookupKey.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/LookupKey.st	Sat Jan 19 01:30:00 2013 +0000
@@ -136,12 +136,5 @@
 !LookupKey class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/LookupKey.st,v 1.10 2012/04/24 12:01:05 stefan Exp $'
-!
-
-version_SVN
-    ^ '$Id: LookupKey.st 10807 2012-05-05 21:58:24Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LookupKey.st,v 1.10 2012-04-24 12:01:05 stefan Exp $'
 ! !
-
-
-
--- a/MD5Stream.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/MD5Stream.st	Sat Jan 19 01:30:00 2013 +0000
@@ -55,42 +55,42 @@
     This may be used as checksum or for generating cryptographic signatures.
 
     Note:
-        in August 2004, some researchers have found a way to generate full collisions for MD5. 
-        Therefore, for new applications, it may be wise to choose another hash function for security stuff. 
-        See a hash-collision example in the examples method.
+	in August 2004, some researchers have found a way to generate full collisions for MD5.
+	Therefore, for new applications, it may be wise to choose another hash function for security stuff.
+	See a hash-collision example in the examples method.
 
-        So, the MD5 algorithm has severe weaknesses, for example it is easy to compute two messages yielding 
-        the same hash (collision attack). 
-        The use of this algorithm is only justified for non-cryptographic application.
+	So, the MD5 algorithm has severe weaknesses, for example it is easy to compute two messages yielding
+	the same hash (collision attack).
+	The use of this algorithm is only justified for non-cryptographic application.
 
 
     performance: roughly
-                        80000 Kb/s on a 2Ghz Duo
-                        27200 Kb/s on a 1.2Ghz Athlon
-                        12600 Kb/s on a 400Mhz PIII
-                         9150 Kb/s on a 300Mhz Sparc.
-        performance is almost completely limited by the speed of the md5-routine, which is the reference
-        implementation in C from md5lib.
+			80000 Kb/s on a 2Ghz Duo
+			27200 Kb/s on a 1.2Ghz Athlon
+			12600 Kb/s on a 400Mhz PIII
+			 9150 Kb/s on a 300Mhz Sparc.
+	performance is almost completely limited by the speed of the md5-routine, which is the reference
+	implementation in C from md5lib.
 
     [author:]
-        Stefan Vogel
+	Stefan Vogel
 
     [see also:]
-        SHA1Stream
+	SHA1Stream
 
     [class variables:]
-        HashSize        size of returned hash value
-        ContextSize     (implementation) size of hash context
+	HashSize        size of returned hash value
+	ContextSize     (implementation) size of hash context
 
     [instance variables:]
-        hashContext     (implementation)
-                        internal buffer for computation of the hash value
+	hashContext     (implementation)
+			internal buffer for computation of the hash value
 "
 !
 
 examples
 "
-                                                                [exBegin]
+								[exBegin]
     Test Vectors (from FIPS PUB 180-1); results are:
 
     'abc'
@@ -101,25 +101,25 @@
 
     A million repetitions of 'a'
     -> #[77 7 D6 AE 4E 2 7C 70 EE A2 A9 35 C2 29 6F 21]
-                                                                [exEnd]
+								[exEnd]
 
-                                                                [exBegin]
-     Transcript showCR:(MD5Stream hashValueOf:'abc') hexPrintString 
-                                                                [exEnd]
+								[exBegin]
+     Transcript showCR:(MD5Stream hashValueOf:'abc') hexPrintString
+								[exEnd]
 
-                                                                [exBegin]
+								[exBegin]
      (MD5Stream hashValueOf:'abc')
-        printOn:Transcript base:16.
+	printOn:Transcript base:16.
      Transcript cr.
-                                                                [exEnd]
+								[exEnd]
 
-                                                                [exBegin]
+								[exBegin]
      (MD5Stream hashValueOfStream:('abc' readStream))
-            printOn:Transcript base:16.
+	    printOn:Transcript base:16.
      Transcript cr.
-                                                                [exEnd]
+								[exEnd]
 
-                                                                [exBegin]
+								[exBegin]
     |hashStream|
 
     hashStream := MD5Stream new.
@@ -127,9 +127,9 @@
     hashStream hashValue printOn:Transcript base:16. Transcript cr.
     hashStream nextPut:'dbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq'.
     hashStream hashValue printOn:Transcript base:16. Transcript cr.
-                                                                [exEnd]
+								[exEnd]
 
-                                                                [exBegin]
+								[exBegin]
     |hashStream|
 
     hashStream := MD5Stream new.
@@ -138,33 +138,33 @@
     hashStream hashValue printOn:Transcript base:16. Transcript cr.
     hashStream nextPut:'dbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq' asByteArray.
     hashStream hashValue printOn:Transcript base:16. Transcript cr.
-                                                                [exEnd]
+								[exEnd]
 
-                                                                [exBegin]
+								[exBegin]
     |hashStream|
 
     hashStream := MD5Stream new.
     1000000 timesRepeat:[ hashStream nextPut:$a ].
     hashStream hashValue printOn:Transcript base:16. Transcript cr.
-                                                                [exEnd]
+								[exEnd]
 
-                                                                [exBegin]
+								[exBegin]
     |hashStream|
 
     hashStream := MD5Stream new.
     hashStream nextPut:'a'.
     hashStream hashValue printOn:Transcript base:16. Transcript cr.
-                                                                [exEnd]
+								[exEnd]
 
-                                                                [exBegin]
+								[exBegin]
     |hashStream|
 
     hashStream := MD5Stream new.
     hashStream nextPut:$a.
     hashStream hashValue printOn:Transcript base:16. Transcript cr.
-                                                                [exEnd]
+								[exEnd]
 
-                                                                [exBegin]
+								[exBegin]
     |hashStream|
 
     hashStream := MD5Stream new.
@@ -173,10 +173,10 @@
     hashStream reset.
     hashStream nextPut:'abc'.
     hashStream hashValue printOn:Transcript base:16. Transcript cr.
-                                                                [exEnd]
+								[exEnd]
 
-  a collision:  
-                                                                [exBegin]
+  a collision:
+								[exBegin]
     |hashStream|
 
     hashStream := MD5Stream new.
@@ -194,23 +194,23 @@
 d8823e3156348f5bae6dacd436c919c6 dd53e23487da03fd02396306d248cda0
 e99f33420f577ee8ce54b67080280d1e c69821bcb6a8839396f965ab6ff72a70').
     hashStream hashValue printOn:Transcript base:16. Transcript cr.
-                                                                [exEnd]
+								[exEnd]
 
   timing throughput:
-                                                                [exBegin]
+								[exBegin]
     |hashStream n t|
 
     hashStream := MD5Stream new.
     n := 1000000.
     t := Time millisecondsToRun:[
-            n timesRepeat:[
-                hashStream nextPutAll:'12345678901234567890123456789012345678901234567890'.
-            ].
-         ].
+	    n timesRepeat:[
+		hashStream nextPutAll:'12345678901234567890123456789012345678901234567890'.
+	    ].
+	 ].
     t := (t / 1000) asFloat.
     Transcript show:t; show:' seconds for '; show:(50*n/1024) asFloat; showCR:' Kb'.
     Transcript show:(n*50/1024 / t); showCR:' Kb/s'
-                                                                [exEnd]
+								[exEnd]
 "
 ! !
 
@@ -346,6 +346,7 @@
 
 	    nInstBytes = 0;
 	    extPtr = (char *)__externalBytesAddress(anObject);
+	    if (extPtr == (char *)0) goto bad;
 	    sz = __externalBytesSize(anObject);
 	    if (__isSmallInteger(sz)) {
 		objSize = __intVal(sz);
@@ -389,18 +390,11 @@
 !MD5Stream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/MD5Stream.st,v 1.20 2012/01/12 16:28:30 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MD5Stream.st,v 1.22 2013-01-17 22:41:35 cg Exp $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/MD5Stream.st,v 1.20 2012/01/12 16:28:30 cg Exp '
-!
-
-version_SVN
-    ^ '$Id: MD5Stream.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MD5Stream.st,v 1.22 2013-01-17 22:41:35 cg Exp $'
 ! !
 
 MD5Stream initialize!
-
-
-
--- a/Magnitude.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Magnitude.st	Sat Jan 19 01:30:00 2013 +0000
@@ -401,12 +401,5 @@
 !Magnitude class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Magnitude.st,v 1.25 2009/08/10 13:30:08 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: Magnitude.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Magnitude.st,v 1.25 2009-08-10 13:30:08 cg Exp $'
 ! !
-
-
-
--- a/Make.proto	Thu Dec 20 11:48:59 2012 +0000
+++ b/Make.proto	Sat Jan 19 01:30:00 2013 +0000
@@ -1,4 +1,4 @@
-# $Header$
+# $Header: /cvs/stx/stx/libbasic/Make.proto,v 1.258 2012-11-02 15:05:36 cg Exp $
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_libbasic.
@@ -92,6 +92,12 @@
 
 
 
+# Enforce recompilation of package definition class if Mercurial working
+# copy state changes. Together with --guessVersion it ensures that package
+# definition class always contains correct binary revision string.
+ifneq (**NOHG**, $(shell hg root 2> /dev/null || echo -n '**NOHG**'))
+stx_libbasic.$(O): $(shell hg root)/.hg/dirstate
+endif
 
 # add more install actions here
 install::
@@ -124,7 +130,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)Annotation.$(O) Annotation.$(H): Annotation.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -221,6 +226,7 @@
 $(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)
 $(OUTDIR)CharacterEncoderImplementations__ASCII.$(O) CharacterEncoderImplementations__ASCII.$(H): CharacterEncoderImplementations__ASCII.st $(INCLUDE_TOP)/stx/libbasic/CharacterEncoderImplementations__SingleByteEncoder.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterEncoder.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)CharacterEncoderImplementations__CP437.$(O) CharacterEncoderImplementations__CP437.$(H): CharacterEncoderImplementations__CP437.st $(INCLUDE_TOP)/stx/libbasic/CharacterEncoderImplementations__SingleByteEncoder.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterEncoder.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)CharacterEncoderImplementations__EBCDIC.$(O) CharacterEncoderImplementations__EBCDIC.$(H): CharacterEncoderImplementations__EBCDIC.st $(INCLUDE_TOP)/stx/libbasic/CharacterEncoderImplementations__SingleByteEncoder.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterEncoder.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)CharacterEncoderImplementations__ISO10646_to_UTF16BE.$(O) CharacterEncoderImplementations__ISO10646_to_UTF16BE.$(H): CharacterEncoderImplementations__ISO10646_to_UTF16BE.st $(INCLUDE_TOP)/stx/libbasic/CharacterEncoderImplementations__TwoByteEncoder.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterEncoder.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)CharacterEncoderImplementations__ISO10646_to_UTF8.$(O) CharacterEncoderImplementations__ISO10646_to_UTF8.$(H): CharacterEncoderImplementations__ISO10646_to_UTF8.st $(INCLUDE_TOP)/stx/libbasic/CharacterEncoderImplementations__TwoByteEncoder.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterEncoder.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -299,10 +305,12 @@
 $(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)
 $(OUTDIR)Interval.$(O) Interval.$(H): Interval.st $(INCLUDE_TOP)/stx/libbasic/ReadOnlySequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)IsDebuggingQuery.$(O) IsDebuggingQuery.$(H): IsDebuggingQuery.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)LimitedPrecisionReal.$(O) LimitedPrecisionReal.$(H): LimitedPrecisionReal.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)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)MetaNumber.$(O) MetaNumber.$(H): MetaNumber.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)MethodWithBreakpoints.$(O) MethodWithBreakpoints.$(H): MethodWithBreakpoints.st $(INCLUDE_TOP)/stx/libbasic/Method.$(H) $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(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)PluginSupport.$(O) PluginSupport.$(H): PluginSupport.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)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)
@@ -337,8 +345,9 @@
 $(OUTDIR)AssertionFailedError.$(O) AssertionFailedError.$(H): AssertionFailedError.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)
 $(OUTDIR)AutoloadMetaclass.$(O) AutoloadMetaclass.$(H): AutoloadMetaclass.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)ByteArray.$(O) ByteArray.$(H): ByteArray.st $(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/Object.$(H) $(STCHDR)
+$(OUTDIR)CharacterArray.$(O) CharacterArray.$(H): CharacterArray.st $(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/Object.$(H) $(STCHDR)
 $(OUTDIR)CharacterWriteStream.$(O) CharacterWriteStream.$(H): CharacterWriteStream.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)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) $(INCLUDE_TOP)/stx/libbasic/Array.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(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/Array.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Association.$(H) $(INCLUDE_TOP)/stx/libbasic/LookupKey.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(STCHDR)
 $(OUTDIR)ContextError.$(O) ContextError.$(H): ContextError.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)
 $(OUTDIR)ConversionError.$(O) ConversionError.$(H): ConversionError.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)
 $(OUTDIR)DeepCopyError.$(O) DeepCopyError.$(H): DeepCopyError.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)
@@ -381,7 +390,6 @@
 $(OUTDIR)ArgumentError.$(O) ArgumentError.$(H): ArgumentError.st $(INCLUDE_TOP)/stx/libbasic/ExecutionError.$(H) $(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)
 $(OUTDIR)CannotResumeError.$(O) CannotResumeError.$(H): CannotResumeError.st $(INCLUDE_TOP)/stx/libbasic/ContextError.$(H) $(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)
 $(OUTDIR)CannotReturnError.$(O) CannotReturnError.$(H): CannotReturnError.st $(INCLUDE_TOP)/stx/libbasic/ContextError.$(H) $(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)
-$(OUTDIR)CharacterArray.$(O) CharacterArray.$(H): CharacterArray.st $(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/Object.$(H) $(STCHDR)
 $(OUTDIR)CharacterEncoderError.$(O) CharacterEncoderError.$(H): CharacterEncoderError.st $(INCLUDE_TOP)/stx/libbasic/ConversionError.$(H) $(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)
 $(OUTDIR)DateConversionError.$(O) DateConversionError.$(H): DateConversionError.st $(INCLUDE_TOP)/stx/libbasic/ConversionError.$(H) $(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)
 $(OUTDIR)DomainError.$(O) DomainError.$(H): DomainError.st $(INCLUDE_TOP)/stx/libbasic/ArithmeticError.$(H) $(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)
@@ -409,7 +417,9 @@
 $(OUTDIR)ReadError.$(O) ReadError.$(H): ReadError.st $(INCLUDE_TOP)/stx/libbasic/StreamError.$(H) $(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)
 $(OUTDIR)StreamIOError.$(O) StreamIOError.$(H): StreamIOError.st $(INCLUDE_TOP)/stx/libbasic/StreamError.$(H) $(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)
 $(OUTDIR)StreamNotOpenError.$(O) StreamNotOpenError.$(H): StreamNotOpenError.st $(INCLUDE_TOP)/stx/libbasic/StreamError.$(H) $(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)
+$(OUTDIR)String.$(O) String.$(H): String.st $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(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/Object.$(H) $(STCHDR)
 $(OUTDIR)TimeConversionError.$(O) TimeConversionError.$(H): TimeConversionError.st $(INCLUDE_TOP)/stx/libbasic/ConversionError.$(H) $(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)
+$(OUTDIR)TwoByteString.$(O) TwoByteString.$(H): TwoByteString.st $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(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/Object.$(H) $(STCHDR)
 $(OUTDIR)UnorderedNumbersError.$(O) UnorderedNumbersError.$(H): UnorderedNumbersError.st $(INCLUDE_TOP)/stx/libbasic/ArithmeticError.$(H) $(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)
 $(OUTDIR)UnprotectedExternalBytes.$(O) UnprotectedExternalBytes.$(H): UnprotectedExternalBytes.st $(INCLUDE_TOP)/stx/libbasic/ExternalBytes.$(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/Object.$(H) $(STCHDR)
 $(OUTDIR)WeakDependencyDictionary.$(O) WeakDependencyDictionary.$(H): WeakDependencyDictionary.st $(INCLUDE_TOP)/stx/libbasic/WeakIdentityDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/IdentityDictionary.$(H) $(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)
@@ -421,6 +431,7 @@
 $(OUTDIR)EncodingError.$(O) EncodingError.$(H): EncodingError.st $(INCLUDE_TOP)/stx/libbasic/CharacterEncoderError.$(H) $(INCLUDE_TOP)/stx/libbasic/ConversionError.$(H) $(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)
 $(OUTDIR)FileDoesNotExistException.$(O) FileDoesNotExistException.$(H): FileDoesNotExistException.st $(INCLUDE_TOP)/stx/libbasic/OpenError.$(H) $(INCLUDE_TOP)/stx/libbasic/StreamError.$(H) $(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)
 $(OUTDIR)FileStream.$(O) FileStream.$(H): FileStream.st $(INCLUDE_TOP)/stx/libbasic/ExternalStream.$(H) $(INCLUDE_TOP)/stx/libbasic/ReadWriteStream.$(H) $(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)ImmutableString.$(O) ImmutableString.$(H): ImmutableString.st $(INCLUDE_TOP)/stx/libbasic/String.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(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/Object.$(H) $(STCHDR)
 $(OUTDIR)InvalidByteCodeError.$(O) InvalidByteCodeError.$(H): InvalidByteCodeError.st $(INCLUDE_TOP)/stx/libbasic/InvalidCodeError.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutionError.$(H) $(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)
 $(OUTDIR)InvalidInstructionError.$(O) InvalidInstructionError.$(H): InvalidInstructionError.st $(INCLUDE_TOP)/stx/libbasic/InvalidCodeError.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutionError.$(H) $(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)
 $(OUTDIR)InvalidReadError.$(O) InvalidReadError.$(H): InvalidReadError.st $(INCLUDE_TOP)/stx/libbasic/ReadError.$(H) $(INCLUDE_TOP)/stx/libbasic/StreamError.$(H) $(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)
@@ -429,26 +440,19 @@
 $(OUTDIR)NonIntegerIndexError.$(O) NonIntegerIndexError.$(H): NonIntegerIndexError.st $(INCLUDE_TOP)/stx/libbasic/IndexNotFoundError.$(H) $(INCLUDE_TOP)/stx/libbasic/NotFoundError.$(H) $(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)
 $(OUTDIR)NonPositionableExternalStream.$(O) NonPositionableExternalStream.$(H): NonPositionableExternalStream.st $(INCLUDE_TOP)/stx/libbasic/ExternalStream.$(H) $(INCLUDE_TOP)/stx/libbasic/ReadWriteStream.$(H) $(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)OverflowError.$(O) OverflowError.$(H): OverflowError.st $(INCLUDE_TOP)/stx/libbasic/RangeError.$(H) $(INCLUDE_TOP)/stx/libbasic/ArithmeticError.$(H) $(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)
-$(OUTDIR)String.$(O) String.$(H): String.st $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(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/Object.$(H) $(STCHDR)
 $(OUTDIR)SubscriptOutOfBoundsError.$(O) SubscriptOutOfBoundsError.$(H): SubscriptOutOfBoundsError.st $(INCLUDE_TOP)/stx/libbasic/IndexNotFoundError.$(H) $(INCLUDE_TOP)/stx/libbasic/NotFoundError.$(H) $(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)
-$(OUTDIR)TwoByteString.$(O) TwoByteString.$(H): TwoByteString.st $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(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/Object.$(H) $(STCHDR)
+$(OUTDIR)Symbol.$(O) Symbol.$(H): Symbol.st $(INCLUDE_TOP)/stx/libbasic/String.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(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/Object.$(H) $(STCHDR)
 $(OUTDIR)UnderflowError.$(O) UnderflowError.$(H): UnderflowError.st $(INCLUDE_TOP)/stx/libbasic/RangeError.$(H) $(INCLUDE_TOP)/stx/libbasic/ArithmeticError.$(H) $(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)
+$(OUTDIR)Unicode16String.$(O) Unicode16String.$(H): Unicode16String.st $(INCLUDE_TOP)/stx/libbasic/TwoByteString.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(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/Object.$(H) $(STCHDR)
 $(OUTDIR)WrongNumberOfArgumentsError.$(O) WrongNumberOfArgumentsError.$(H): WrongNumberOfArgumentsError.st $(INCLUDE_TOP)/stx/libbasic/ArgumentError.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutionError.$(H) $(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)
 $(OUTDIR)ZeroDivide.$(O) ZeroDivide.$(H): ZeroDivide.st $(INCLUDE_TOP)/stx/libbasic/DomainError.$(H) $(INCLUDE_TOP)/stx/libbasic/ArithmeticError.$(H) $(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)
 $(OUTDIR)CharacterRangeError.$(O) CharacterRangeError.$(H): CharacterRangeError.st $(INCLUDE_TOP)/stx/libbasic/DecodingError.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterEncoderError.$(H) $(INCLUDE_TOP)/stx/libbasic/ConversionError.$(H) $(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)
 $(OUTDIR)DirectoryStream.$(O) DirectoryStream.$(H): DirectoryStream.st $(INCLUDE_TOP)/stx/libbasic/FileStream.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalStream.$(H) $(INCLUDE_TOP)/stx/libbasic/ReadWriteStream.$(H) $(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)ImmutableString.$(O) ImmutableString.$(H): ImmutableString.st $(INCLUDE_TOP)/stx/libbasic/String.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(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/Object.$(H) $(STCHDR)
 $(OUTDIR)InvalidEncodingError.$(O) InvalidEncodingError.$(H): InvalidEncodingError.st $(INCLUDE_TOP)/stx/libbasic/DecodingError.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterEncoderError.$(H) $(INCLUDE_TOP)/stx/libbasic/ConversionError.$(H) $(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)
 $(OUTDIR)PipeStream.$(O) PipeStream.$(H): PipeStream.st $(INCLUDE_TOP)/stx/libbasic/NonPositionableExternalStream.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalStream.$(H) $(INCLUDE_TOP)/stx/libbasic/ReadWriteStream.$(H) $(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)Symbol.$(O) Symbol.$(H): Symbol.st $(INCLUDE_TOP)/stx/libbasic/String.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(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/Object.$(H) $(STCHDR)
-$(OUTDIR)Unicode16String.$(O) Unicode16String.$(H): Unicode16String.st $(INCLUDE_TOP)/stx/libbasic/TwoByteString.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(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/Object.$(H) $(STCHDR)
-$(OUTDIR)UnixDesktop.$(O) UnixDesktop.$(H): UnixDesktop.st $(INCLUDE_TOP)/stx/libbasic/AbstractDesktop.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)UnixFileDescriptorHandle.$(O) UnixFileDescriptorHandle.$(H): UnixFileDescriptorHandle.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)UnixFileHandle.$(O) UnixFileHandle.$(H): UnixFileHandle.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)UnixOperatingSystem.$(O) UnixOperatingSystem.$(H): UnixOperatingSystem.st $(INCLUDE_TOP)/stx/libbasic/AbstractOperatingSystem.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/OSFileHandle.$(H) $(INCLUDE_TOP)/stx/libbasic/OSHandle.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(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)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)MethodWithBreakpoints.$(O) MethodWithBreakpoints.$(H): MethodWithBreakpoints.st $(INCLUDE_TOP)/stx/libbasic/Method.$(H) $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-
+$(OUTDIR)UnixFileDescriptorHandle.$(O) UnixFileDescriptorHandle.$(H): UnixFileDescriptorHandle.st $(STCHDR)
+$(OUTDIR)UnixFileHandle.$(O) UnixFileHandle.$(H): UnixFileHandle.st $(STCHDR)
+$(OUTDIR)UnixOperatingSystem.$(O) UnixOperatingSystem.$(H): UnixOperatingSystem.st $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
+
--- a/Make.spec	Thu Dec 20 11:48:59 2012 +0000
+++ b/Make.spec	Sat Jan 19 01:30:00 2013 +0000
@@ -1,4 +1,4 @@
-# $Header$
+# $Header: /cvs/stx/stx/libbasic/Make.spec,v 1.141 2013-01-10 11:43:30 cg Exp $
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_libbasic.
@@ -49,10 +49,12 @@
 # STCWARNINGS=-warnEOLComments
 STCWARNINGS=-warnNonStandard
 
+VMS_CLASSES= \
+	OpenVMSFileHandle \
+	OpenVMSFilename \
+	OpenVMSOperatingSystem \
+
 UNIX_CLASSES= \
-	UnixDesktop \
-	XDGDesktop \
-	GNOMEDesktop \
 	UnixFileDescriptorHandle \
 	UnixFileHandle \
 	UnixOperatingSystem \
@@ -61,35 +63,16 @@
 	Autoload \
 	Object \
 	ProtoObject \
-	AbstractDesktop \
 	AbstractOperatingSystem \
 	AbstractSourceFileReader \
 	Annotation \
 	Behavior \
 	Boolean \
 	CharacterEncoder \
-	CharacterEncoderImplementations::TwoByteEncoder \
-	CharacterEncoderImplementations::ISO10646_to_UTF16BE \
-	CharacterEncoderImplementations::SingleByteEncoder \
-	CharacterEncoderImplementations::ISO8859_11 \
-	CharacterEncoderImplementations::ISO8859_13 \
-	CharacterEncoderImplementations::ISO8859_14 \
-	CharacterEncoderImplementations::ISO8859_16 \
-	CharacterEncoderImplementations::ISO8859_3 \
-	CharacterEncoderImplementations::ISO8859_4 \
-	CharacterEncoderImplementations::ISO8859_6 \
-	CharacterEncoderImplementations::ISO8859_8 \
-	CharacterEncoderImplementations::ISO8859_1 \
-	CharacterEncoderImplementations::KOI8_R \
-	CharacterEncoderImplementations::KOI8_U \
-	CharacterEncoderImplementations::MS_Arabic \
-	CharacterEncoderImplementations::MS_EastEuropean \
-	CharacterEncoderImplementations::MS_Hebrew \
-	CharacterEncoderImplementations::MS_Symbol \
-	CharacterEncoderImplementations::MS_Turkish \
 	ClassBuilder \
 	ClassCategoryReader \
 	Collection \
+	ConfigurableFeatures \
 	Context \
 	Continuation \
 	Delay \
@@ -107,6 +90,7 @@
 	Message \
 	MiniDebugger \
 	MiniInspector \
+	MiniLogger \
 	NameSpace \
 	OSErrorHolder \
 	OSProcess \
@@ -140,8 +124,8 @@
 	CachingRegistry \
 	Character \
 	CharacterEncoderImplementations::ISO10646_1 \
-	CharacterEncoderImplementations::ISO8859_10 \
-	CharacterEncoderImplementations::ISO10646_to_UTF16LE \
+	CharacterEncoderImplementations::SingleByteEncoder \
+	CharacterEncoderImplementations::TwoByteEncoder \
 	CompiledCode \
 	ControlInterrupt \
 	Date \
@@ -162,7 +146,6 @@
 	PeekableStream \
 	Process \
 	QuerySignal \
-	Query \
 	Rectangle \
 	SequenceableCollection \
 	Set \
@@ -172,21 +155,39 @@
 	UnixFilename \
 	WeakInterestConverter \
 	ArrayedCollection \
-	UninterpretedBytes \
 	Association \
 	Block \
 	CharacterEncoderImplementations::ASCII \
+	CharacterEncoderImplementations::CP437 \
+	CharacterEncoderImplementations::EBCDIC \
+	CharacterEncoderImplementations::ISO10646_to_UTF16BE \
 	CharacterEncoderImplementations::ISO10646_to_UTF8 \
-	CharacterEncoderImplementations::ISO8859_9 \
+	CharacterEncoderImplementations::ISO8859_1 \
+	CharacterEncoderImplementations::ISO8859_10 \
+	CharacterEncoderImplementations::ISO8859_11 \
+	CharacterEncoderImplementations::ISO8859_13 \
+	CharacterEncoderImplementations::ISO8859_14 \
 	CharacterEncoderImplementations::ISO8859_15 \
+	CharacterEncoderImplementations::ISO8859_16 \
 	CharacterEncoderImplementations::ISO8859_2 \
+	CharacterEncoderImplementations::ISO8859_3 \
+	CharacterEncoderImplementations::ISO8859_4 \
 	CharacterEncoderImplementations::ISO8859_5 \
+	CharacterEncoderImplementations::ISO8859_6 \
 	CharacterEncoderImplementations::ISO8859_7 \
+	CharacterEncoderImplementations::ISO8859_8 \
+	CharacterEncoderImplementations::KOI8_R \
 	CharacterEncoderImplementations::MS_Ansi \
+	CharacterEncoderImplementations::MS_Arabic \
 	CharacterEncoderImplementations::MS_Baltic \
 	CharacterEncoderImplementations::MS_Cyrillic \
+	CharacterEncoderImplementations::MS_EastEuropean \
 	CharacterEncoderImplementations::MS_Greek \
+	CharacterEncoderImplementations::MS_Hebrew \
+	CharacterEncoderImplementations::MS_Symbol \
+	CharacterEncoderImplementations::MS_Turkish \
 	ClassDescription \
+	Complex \
 	ControlRequest \
 	Dictionary \
 	EncodedStream \
@@ -201,15 +202,12 @@
 	Method \
 	MethodDictionary \
 	Number \
-	MetaNumber \
-	SomeNumber \
-	Infinity \
 	OSFileHandle \
 	ObjectCoder \
 	OrderedCollection \
 	Point \
 	PositionableStream \
-	PluginSupport \
+	Query \
 	ReadOnlySequenceableCollection \
 	RecursiveStoreError \
 	SHA1Stream \
@@ -221,41 +219,49 @@
 	YesToAllConfirmation \
 	stx_libbasic \
 	AbortAllOperationRequest \
+	AbortAllOperationWantedQuery \
 	AbstractSourceFileWriter \
 	ActivityNotification \
 	Array \
 	BreakPointInterrupt \
+	CharacterEncoderImplementations::ISO10646_to_UTF16LE \
+	CharacterEncoderImplementations::ISO8859_9 \
+	CharacterEncoderImplementations::KOI8_U \
 	CheapBlock \
-	Class \
 	ClassBuildError \
-	AbstractNumberVector \
 	ElementBoundsError \
 	FileDirectory \
-	FloatArray \
 	Fraction \
+	GetOpt \
 	IdentityDictionary \
 	InlineObjectClassDescription \
 	Integer \
 	Interval \
+	IsDebuggingQuery \
 	LimitedPrecisionReal \
 	MeasurementValue \
+	MetaNumber \
 	Metaclass \
+	MethodWithBreakpoints \
 	OsError \
+	PluginSupport \
 	ProceedableError \
 	QueryWithoutDefault \
 	ReadStream \
 	RecursionError \
 	RecursiveExceptionError \
 	RestartProcessRequest \
+	SameForAllNotification \
 	SemaphoreSet \
 	SignalSet \
 	SnapshotError \
 	SortedCollection \
 	StringCollection \
 	TerminateProcessRequest \
-	DoubleArray \
+	UninterpretedBytes \
 	UserConfirmation \
 	UserInformation \
+	UtcTimestamp \
 	VMInternalError \
 	VarArgBlock \
 	Warning \
@@ -264,13 +270,16 @@
 	WeakValueDictionary \
 	WriteStream \
 	AbortOperationRequest \
+	AbstractNumberVector \
 	AllocationFailure \
 	AmbiguousMessage \
 	ArithmeticError \
 	AssertionFailedError \
 	AutoloadMetaclass \
 	ByteArray \
+	CharacterArray \
 	CharacterWriteStream \
+	Class \
 	ContextError \
 	ConversionError \
 	DeepCopyError \
@@ -279,8 +288,9 @@
 	ExternalBytes \
 	FixedPoint \
 	Float \
-	GetOpt \
 	ImmutableArray \
+	Infinity \
+	InvalidPatchError \
 	LargeInteger \
 	LongFloat \
 	MessageNotUnderstood \
@@ -301,6 +311,7 @@
 	SignalError \
 	SmallInteger \
 	SmalltalkChunkFileSourceWriter \
+	SomeNumber \
 	StreamError \
 	SubclassResponsibilityError \
 	TimeoutError \
@@ -311,13 +322,14 @@
 	ArgumentError \
 	CannotResumeError \
 	CannotReturnError \
-	CharacterArray \
 	CharacterEncoderError \
 	DateConversionError \
 	DomainError \
+	DoubleArray \
 	EndOfStreamError \
 	ExternalStream \
 	ExternalStructure \
+	FloatArray \
 	ImmutableByteArray \
 	IncompleteNextCountError \
 	IndexNotFoundError \
@@ -335,7 +347,9 @@
 	ReadError \
 	StreamIOError \
 	StreamNotOpenError \
+	String \
 	TimeConversionError \
+	TwoByteString \
 	UnorderedNumbersError \
 	UnprotectedExternalBytes \
 	WeakDependencyDictionary \
@@ -344,7 +358,9 @@
 	BadLiteralsError \
 	DecodingError \
 	EncodingError \
+	FileDoesNotExistException \
 	FileStream \
+	ImmutableString \
 	InvalidByteCodeError \
 	InvalidInstructionError \
 	InvalidReadError \
@@ -353,388 +369,371 @@
 	NonIntegerIndexError \
 	NonPositionableExternalStream \
 	OverflowError \
-	String \
 	SubscriptOutOfBoundsError \
-	TwoByteString \
+	Symbol \
 	UnderflowError \
+	Unicode16String \
 	WrongNumberOfArgumentsError \
 	ZeroDivide \
 	CharacterRangeError \
 	DirectoryStream \
-	ImmutableString \
 	InvalidEncodingError \
 	PipeStream \
 	MethodNotAppropriateError \
 	AbstractClassInstantiationError \
 	InvalidTypeError \
-	Symbol \
-	Unicode16String \
-	CharacterEncoderImplementations::EBCDIC \
-	SameForAllNotification \
-	UtcTimestamp \
-	InvalidPatchError \
-	AbortAllOperationWantedQuery \
-	Complex \
-	ConfigurableFeatures \
-	FileDoesNotExistException \
-	MiniLogger \
 	PolymorphicInlineCache \
-	MethodWithBreakpoints \
-	IsDebuggingQuery \
-
 
 WIN32_CLASSES= \
-	Win32Process \
-	WindowsDesktop \
 	PCFilename \
+	Win32Constants \
+	Win32FILEHandle \
 	Win32Handle \
-	Win32FILEHandle \
-	Win32Constants \
 	Win32OperatingSystem \
+	Win32Process \
 
 
 
 
+VMS_OBJS= \
+    $(OUTDIR_SLASH)OpenVMSFileHandle.$(O) \
+    $(OUTDIR_SLASH)OpenVMSFilename.$(O) \
+    $(OUTDIR_SLASH)OpenVMSOperatingSystem.$(O) \
+
 UNIX_OBJS= \
-    $(OUTDIR)UnixDesktop.$(O) \
-    $(OUTDIR)XDGDesktop.$(O) \
-    $(OUTDIR)GNOMEDesktop.$(O) \
-    $(OUTDIR)UnixFileDescriptorHandle.$(O) \
-    $(OUTDIR)UnixFileHandle.$(O) \
-    $(OUTDIR)UnixOperatingSystem.$(O) \
+    $(OUTDIR_SLASH)UnixFileDescriptorHandle.$(O) \
+    $(OUTDIR_SLASH)UnixFileHandle.$(O) \
+    $(OUTDIR_SLASH)UnixOperatingSystem.$(O) \
 
 COMMON_OBJS= \
-    $(OUTDIR)Autoload.$(O) \
-    $(OUTDIR)Object.$(O) \
-    $(OUTDIR)ProtoObject.$(O) \
-    $(OUTDIR)AbstractDesktop.$(O) \
-    $(OUTDIR)AbstractOperatingSystem.$(O) \
-    $(OUTDIR)AbstractSourceFileReader.$(O) \
-    $(OUTDIR)Annotation.$(O) \
-    $(OUTDIR)Behavior.$(O) \
-    $(OUTDIR)Boolean.$(O) \
-    $(OUTDIR)CharacterEncoder.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__TwoByteEncoder.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ISO10646_to_UTF16BE.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__SingleByteEncoder.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ISO8859_11.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ISO8859_13.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ISO8859_14.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ISO8859_16.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ISO8859_3.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ISO8859_4.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ISO8859_6.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ISO8859_8.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ISO8859_1.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__KOI8_R.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__KOI8_U.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__MS_Arabic.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__MS_EastEuropean.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__MS_Hebrew.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__MS_Symbol.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__MS_Turkish.$(O) \
-    $(OUTDIR)ClassBuilder.$(O) \
-    $(OUTDIR)ClassCategoryReader.$(O) \
-    $(OUTDIR)Collection.$(O) \
-    $(OUTDIR)Context.$(O) \
-    $(OUTDIR)Continuation.$(O) \
-    $(OUTDIR)Delay.$(O) \
-    $(OUTDIR)ExecutableFunction.$(O) \
-    $(OUTDIR)ExternalAddress.$(O) \
-    $(OUTDIR)ExternalLibrary.$(O) \
-    $(OUTDIR)Filename.$(O) \
-    $(OUTDIR)GenericException.$(O) \
-    $(OUTDIR)Geometric.$(O) \
-    $(OUTDIR)InlineObject.$(O) \
-    $(OUTDIR)InterestConverter.$(O) \
-    $(OUTDIR)Link.$(O) \
-    $(OUTDIR)Lookup.$(O) \
-    $(OUTDIR)Magnitude.$(O) \
-    $(OUTDIR)Message.$(O) \
-    $(OUTDIR)MiniDebugger.$(O) \
-    $(OUTDIR)MiniInspector.$(O) \
-    $(OUTDIR)NameSpace.$(O) \
-    $(OUTDIR)OSErrorHolder.$(O) \
-    $(OUTDIR)OSProcess.$(O) \
-    $(OUTDIR)ObjectMemory.$(O) \
-    $(OUTDIR)PackageId.$(O) \
-    $(OUTDIR)ProcessorScheduler.$(O) \
-    $(OUTDIR)ProgrammingLanguage.$(O) \
-    $(OUTDIR)Project.$(O) \
-    $(OUTDIR)ProjectDefinition.$(O) \
-    $(OUTDIR)ReadEvalPrintLoop.$(O) \
-    $(OUTDIR)RecursionLock.$(O) \
-    $(OUTDIR)Registry.$(O) \
-    $(OUTDIR)Semaphore.$(O) \
-    $(OUTDIR)SharedPool.$(O) \
-    $(OUTDIR)Signal.$(O) \
-    $(OUTDIR)Smalltalk.$(O) \
-    $(OUTDIR)StandaloneStartup.$(O) \
-    $(OUTDIR)Stream.$(O) \
-    $(OUTDIR)SystemChangeNotifier.$(O) \
-    $(OUTDIR)UndefinedObject.$(O) \
-    $(OUTDIR)UserMessage.$(O) \
-    $(OUTDIR)Visitor.$(O) \
-    $(OUTDIR)AbstractTime.$(O) \
-    $(OUTDIR)ApplicationDefinition.$(O) \
-    $(OUTDIR)ArithmeticValue.$(O) \
-    $(OUTDIR)AspectVisitor.$(O) \
-    $(OUTDIR)AutoDeletedFilename.$(O) \
-    $(OUTDIR)Bag.$(O) \
-    $(OUTDIR)BlockContext.$(O) \
-    $(OUTDIR)BuiltinLookup.$(O) \
-    $(OUTDIR)CachingRegistry.$(O) \
-    $(OUTDIR)Character.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ISO10646_1.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ISO8859_10.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ISO10646_to_UTF16LE.$(O) \
-    $(OUTDIR)CompiledCode.$(O) \
-    $(OUTDIR)ControlInterrupt.$(O) \
-    $(OUTDIR)Date.$(O) \
-    $(OUTDIR)Exception.$(O) \
-    $(OUTDIR)ExternalFunction.$(O) \
-    $(OUTDIR)False.$(O) \
-    $(OUTDIR)HandleRegistry.$(O) \
-    $(OUTDIR)HashStream.$(O) \
-    $(OUTDIR)InlineObjectPrototype.$(O) \
-    $(OUTDIR)KeyedCollection.$(O) \
-    $(OUTDIR)LibraryDefinition.$(O) \
-    $(OUTDIR)LookupKey.$(O) \
-    $(OUTDIR)MessageSend.$(O) \
-    $(OUTDIR)NamespaceAwareLookup.$(O) \
-    $(OUTDIR)NoHandlerError.$(O) \
-    $(OUTDIR)Notification.$(O) \
-    $(OUTDIR)OSHandle.$(O) \
-    $(OUTDIR)PeekableStream.$(O) \
-    $(OUTDIR)Process.$(O) \
-    $(OUTDIR)QuerySignal.$(O) \
-    $(OUTDIR)Query.$(O) \
-    $(OUTDIR)Rectangle.$(O) \
-    $(OUTDIR)SequenceableCollection.$(O) \
-    $(OUTDIR)Set.$(O) \
-    $(OUTDIR)SmalltalkChunkFileSourceReader.$(O) \
-    $(OUTDIR)SmalltalkLanguage.$(O) \
-    $(OUTDIR)True.$(O) \
-    $(OUTDIR)UnixFilename.$(O) \
-    $(OUTDIR)WeakInterestConverter.$(O) \
-    $(OUTDIR)ArrayedCollection.$(O) \
-    $(OUTDIR)UninterpretedBytes.$(O) \
-    $(OUTDIR)Association.$(O) \
-    $(OUTDIR)Block.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ASCII.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ISO10646_to_UTF8.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ISO8859_9.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ISO8859_15.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ISO8859_2.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ISO8859_5.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__ISO8859_7.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__MS_Ansi.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__MS_Baltic.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__MS_Cyrillic.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__MS_Greek.$(O) \
-    $(OUTDIR)ClassDescription.$(O) \
-    $(OUTDIR)ControlRequest.$(O) \
-    $(OUTDIR)Dictionary.$(O) \
-    $(OUTDIR)EncodedStream.$(O) \
-    $(OUTDIR)EndOfStreamNotification.$(O) \
-    $(OUTDIR)Error.$(O) \
-    $(OUTDIR)ExternalFunctionCallback.$(O) \
-    $(OUTDIR)ExternalLibraryFunction.$(O) \
-    $(OUTDIR)HaltInterrupt.$(O) \
-    $(OUTDIR)IdentitySet.$(O) \
-    $(OUTDIR)LinkedList.$(O) \
-    $(OUTDIR)MD5Stream.$(O) \
-    $(OUTDIR)Method.$(O) \
-    $(OUTDIR)MethodDictionary.$(O) \
-    $(OUTDIR)Number.$(O) \
-    $(OUTDIR)MetaNumber.$(O) \
-    $(OUTDIR)SomeNumber.$(O) \
-    $(OUTDIR)Infinity.$(O) \
-    $(OUTDIR)OSFileHandle.$(O) \
-    $(OUTDIR)ObjectCoder.$(O) \
-    $(OUTDIR)OrderedCollection.$(O) \
-    $(OUTDIR)Point.$(O) \
-    $(OUTDIR)PositionableStream.$(O) \
-    $(OUTDIR)PluginSupport.$(O) \
-    $(OUTDIR)ReadOnlySequenceableCollection.$(O) \
-    $(OUTDIR)RecursiveStoreError.$(O) \
-    $(OUTDIR)SHA1Stream.$(O) \
-    $(OUTDIR)Time.$(O) \
-    $(OUTDIR)TimeoutNotification.$(O) \
-    $(OUTDIR)Timestamp.$(O) \
-    $(OUTDIR)UserInterrupt.$(O) \
-    $(OUTDIR)UserNotification.$(O) \
-    $(OUTDIR)YesToAllConfirmation.$(O) \
-    $(OUTDIR)stx_libbasic.$(O) \
-    $(OUTDIR)AbortAllOperationRequest.$(O) \
-    $(OUTDIR)AbstractSourceFileWriter.$(O) \
-    $(OUTDIR)ActivityNotification.$(O) \
-    $(OUTDIR)Array.$(O) \
-    $(OUTDIR)BreakPointInterrupt.$(O) \
-    $(OUTDIR)CheapBlock.$(O) \
-    $(OUTDIR)Class.$(O) \
-    $(OUTDIR)ClassBuildError.$(O) \
-    $(OUTDIR)AbstractNumberVector.$(O) \
-    $(OUTDIR)ElementBoundsError.$(O) \
-    $(OUTDIR)FileDirectory.$(O) \
-    $(OUTDIR)FloatArray.$(O) \
-    $(OUTDIR)Fraction.$(O) \
-    $(OUTDIR)IdentityDictionary.$(O) \
-    $(OUTDIR)InlineObjectClassDescription.$(O) \
-    $(OUTDIR)Integer.$(O) \
-    $(OUTDIR)Interval.$(O) \
-    $(OUTDIR)LimitedPrecisionReal.$(O) \
-    $(OUTDIR)MeasurementValue.$(O) \
-    $(OUTDIR)Metaclass.$(O) \
-    $(OUTDIR)OsError.$(O) \
-    $(OUTDIR)ProceedableError.$(O) \
-    $(OUTDIR)QueryWithoutDefault.$(O) \
-    $(OUTDIR)ReadStream.$(O) \
-    $(OUTDIR)RecursionError.$(O) \
-    $(OUTDIR)RecursiveExceptionError.$(O) \
-    $(OUTDIR)RestartProcessRequest.$(O) \
-    $(OUTDIR)SemaphoreSet.$(O) \
-    $(OUTDIR)SignalSet.$(O) \
-    $(OUTDIR)SnapshotError.$(O) \
-    $(OUTDIR)SortedCollection.$(O) \
-    $(OUTDIR)StringCollection.$(O) \
-    $(OUTDIR)TerminateProcessRequest.$(O) \
-    $(OUTDIR)DoubleArray.$(O) \
-    $(OUTDIR)UserConfirmation.$(O) \
-    $(OUTDIR)UserInformation.$(O) \
-    $(OUTDIR)VMInternalError.$(O) \
-    $(OUTDIR)VarArgBlock.$(O) \
-    $(OUTDIR)Warning.$(O) \
-    $(OUTDIR)WeakArray.$(O) \
-    $(OUTDIR)WeakIdentitySet.$(O) \
-    $(OUTDIR)WeakValueDictionary.$(O) \
-    $(OUTDIR)WriteStream.$(O) \
-    $(OUTDIR)AbortOperationRequest.$(O) \
-    $(OUTDIR)AllocationFailure.$(O) \
-    $(OUTDIR)AmbiguousMessage.$(O) \
-    $(OUTDIR)ArithmeticError.$(O) \
-    $(OUTDIR)AssertionFailedError.$(O) \
-    $(OUTDIR)AutoloadMetaclass.$(O) \
-    $(OUTDIR)ByteArray.$(O) \
-    $(OUTDIR)CharacterWriteStream.$(O) \
-    $(OUTDIR)ContextError.$(O) \
-    $(OUTDIR)ConversionError.$(O) \
-    $(OUTDIR)DeepCopyError.$(O) \
-    $(OUTDIR)ExceptionHandlerSet.$(O) \
-    $(OUTDIR)ExecutionError.$(O) \
-    $(OUTDIR)ExternalBytes.$(O) \
-    $(OUTDIR)FixedPoint.$(O) \
-    $(OUTDIR)Float.$(O) \
-    $(OUTDIR)GetOpt.$(O) \
-    $(OUTDIR)ImmutableArray.$(O) \
-    $(OUTDIR)LargeInteger.$(O) \
-    $(OUTDIR)LongFloat.$(O) \
-    $(OUTDIR)MessageNotUnderstood.$(O) \
-    $(OUTDIR)NoModificationError.$(O) \
-    $(OUTDIR)NotFoundError.$(O) \
-    $(OUTDIR)OSSignalInterrupt.$(O) \
-    $(OUTDIR)OsIllegalOperation.$(O) \
-    $(OUTDIR)OsInaccessibleError.$(O) \
-    $(OUTDIR)OsInvalidArgumentsError.$(O) \
-    $(OUTDIR)OsNeedRetryError.$(O) \
-    $(OUTDIR)OsNoResourcesError.$(O) \
-    $(OUTDIR)OsNotification.$(O) \
-    $(OUTDIR)OsTransferFaultError.$(O) \
-    $(OUTDIR)PrivateMetaclass.$(O) \
-    $(OUTDIR)ProceedError.$(O) \
-    $(OUTDIR)ReadWriteStream.$(O) \
-    $(OUTDIR)ShortFloat.$(O) \
-    $(OUTDIR)SignalError.$(O) \
-    $(OUTDIR)SmallInteger.$(O) \
-    $(OUTDIR)SmalltalkChunkFileSourceWriter.$(O) \
-    $(OUTDIR)StreamError.$(O) \
-    $(OUTDIR)SubclassResponsibilityError.$(O) \
-    $(OUTDIR)TimeoutError.$(O) \
-    $(OUTDIR)UnimplementedFunctionalityError.$(O) \
-    $(OUTDIR)UserPreferences.$(O) \
-    $(OUTDIR)VarArgCheapBlock.$(O) \
-    $(OUTDIR)WeakIdentityDictionary.$(O) \
-    $(OUTDIR)ArgumentError.$(O) \
-    $(OUTDIR)CannotResumeError.$(O) \
-    $(OUTDIR)CannotReturnError.$(O) \
-    $(OUTDIR)CharacterArray.$(O) \
-    $(OUTDIR)CharacterEncoderError.$(O) \
-    $(OUTDIR)DateConversionError.$(O) \
-    $(OUTDIR)DomainError.$(O) \
-    $(OUTDIR)EndOfStreamError.$(O) \
-    $(OUTDIR)ExternalStream.$(O) \
-    $(OUTDIR)ExternalStructure.$(O) \
-    $(OUTDIR)ImmutableByteArray.$(O) \
-    $(OUTDIR)IncompleteNextCountError.$(O) \
-    $(OUTDIR)IndexNotFoundError.$(O) \
-    $(OUTDIR)InvalidCodeError.$(O) \
-    $(OUTDIR)InvalidModeError.$(O) \
-    $(OUTDIR)InvalidOperationError.$(O) \
-    $(OUTDIR)KeyNotFoundError.$(O) \
-    $(OUTDIR)MallocFailure.$(O) \
-    $(OUTDIR)NonBooleanReceiverError.$(O) \
-    $(OUTDIR)OpenError.$(O) \
-    $(OUTDIR)PositionError.$(O) \
-    $(OUTDIR)PositionOutOfBoundsError.$(O) \
-    $(OUTDIR)PrimitiveFailure.$(O) \
-    $(OUTDIR)RangeError.$(O) \
-    $(OUTDIR)ReadError.$(O) \
-    $(OUTDIR)StreamIOError.$(O) \
-    $(OUTDIR)StreamNotOpenError.$(O) \
-    $(OUTDIR)TimeConversionError.$(O) \
-    $(OUTDIR)UnorderedNumbersError.$(O) \
-    $(OUTDIR)UnprotectedExternalBytes.$(O) \
-    $(OUTDIR)WeakDependencyDictionary.$(O) \
-    $(OUTDIR)WriteError.$(O) \
-    $(OUTDIR)WrongProceedabilityError.$(O) \
-    $(OUTDIR)BadLiteralsError.$(O) \
-    $(OUTDIR)DecodingError.$(O) \
-    $(OUTDIR)EncodingError.$(O) \
-    $(OUTDIR)FileStream.$(O) \
-    $(OUTDIR)InvalidByteCodeError.$(O) \
-    $(OUTDIR)InvalidInstructionError.$(O) \
-    $(OUTDIR)InvalidReadError.$(O) \
-    $(OUTDIR)InvalidWriteError.$(O) \
-    $(OUTDIR)NoByteCodeError.$(O) \
-    $(OUTDIR)NonIntegerIndexError.$(O) \
-    $(OUTDIR)NonPositionableExternalStream.$(O) \
-    $(OUTDIR)OverflowError.$(O) \
-    $(OUTDIR)String.$(O) \
-    $(OUTDIR)SubscriptOutOfBoundsError.$(O) \
-    $(OUTDIR)TwoByteString.$(O) \
-    $(OUTDIR)UnderflowError.$(O) \
-    $(OUTDIR)WrongNumberOfArgumentsError.$(O) \
-    $(OUTDIR)ZeroDivide.$(O) \
-    $(OUTDIR)CharacterRangeError.$(O) \
-    $(OUTDIR)DirectoryStream.$(O) \
-    $(OUTDIR)ImmutableString.$(O) \
-    $(OUTDIR)InvalidEncodingError.$(O) \
-    $(OUTDIR)PipeStream.$(O) \
-    $(OUTDIR)MethodNotAppropriateError.$(O) \
-    $(OUTDIR)AbstractClassInstantiationError.$(O) \
-    $(OUTDIR)InvalidTypeError.$(O) \
-    $(OUTDIR)Symbol.$(O) \
-    $(OUTDIR)Unicode16String.$(O) \
-    $(OUTDIR)CharacterEncoderImplementations__EBCDIC.$(O) \
-    $(OUTDIR)SameForAllNotification.$(O) \
-    $(OUTDIR)UtcTimestamp.$(O) \
-    $(OUTDIR)InvalidPatchError.$(O) \
-    $(OUTDIR)AbortAllOperationWantedQuery.$(O) \
-    $(OUTDIR)Complex.$(O) \
-    $(OUTDIR)ConfigurableFeatures.$(O) \
-    $(OUTDIR)FileDoesNotExistException.$(O) \
-    $(OUTDIR)MiniLogger.$(O) \
-    $(OUTDIR)PolymorphicInlineCache.$(O) \
-    $(OUTDIR)MethodWithBreakpoints.$(O) \
-    $(OUTDIR)IsDebuggingQuery.$(O) \
-
-
+    $(OUTDIR_SLASH)Autoload.$(O) \
+    $(OUTDIR_SLASH)Object.$(O) \
+    $(OUTDIR_SLASH)ProtoObject.$(O) \
+    $(OUTDIR_SLASH)AbstractOperatingSystem.$(O) \
+    $(OUTDIR_SLASH)AbstractSourceFileReader.$(O) \
+    $(OUTDIR_SLASH)Annotation.$(O) \
+    $(OUTDIR_SLASH)Behavior.$(O) \
+    $(OUTDIR_SLASH)Boolean.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoder.$(O) \
+    $(OUTDIR_SLASH)ClassBuilder.$(O) \
+    $(OUTDIR_SLASH)ClassCategoryReader.$(O) \
+    $(OUTDIR_SLASH)Collection.$(O) \
+    $(OUTDIR_SLASH)ConfigurableFeatures.$(O) \
+    $(OUTDIR_SLASH)Context.$(O) \
+    $(OUTDIR_SLASH)Continuation.$(O) \
+    $(OUTDIR_SLASH)Delay.$(O) \
+    $(OUTDIR_SLASH)ExecutableFunction.$(O) \
+    $(OUTDIR_SLASH)ExternalAddress.$(O) \
+    $(OUTDIR_SLASH)ExternalLibrary.$(O) \
+    $(OUTDIR_SLASH)Filename.$(O) \
+    $(OUTDIR_SLASH)GenericException.$(O) \
+    $(OUTDIR_SLASH)Geometric.$(O) \
+    $(OUTDIR_SLASH)InlineObject.$(O) \
+    $(OUTDIR_SLASH)InterestConverter.$(O) \
+    $(OUTDIR_SLASH)Link.$(O) \
+    $(OUTDIR_SLASH)Lookup.$(O) \
+    $(OUTDIR_SLASH)Magnitude.$(O) \
+    $(OUTDIR_SLASH)Message.$(O) \
+    $(OUTDIR_SLASH)MiniDebugger.$(O) \
+    $(OUTDIR_SLASH)MiniInspector.$(O) \
+    $(OUTDIR_SLASH)MiniLogger.$(O) \
+    $(OUTDIR_SLASH)NameSpace.$(O) \
+    $(OUTDIR_SLASH)OSErrorHolder.$(O) \
+    $(OUTDIR_SLASH)OSProcess.$(O) \
+    $(OUTDIR_SLASH)ObjectMemory.$(O) \
+    $(OUTDIR_SLASH)PackageId.$(O) \
+    $(OUTDIR_SLASH)ProcessorScheduler.$(O) \
+    $(OUTDIR_SLASH)ProgrammingLanguage.$(O) \
+    $(OUTDIR_SLASH)Project.$(O) \
+    $(OUTDIR_SLASH)ProjectDefinition.$(O) \
+    $(OUTDIR_SLASH)ReadEvalPrintLoop.$(O) \
+    $(OUTDIR_SLASH)RecursionLock.$(O) \
+    $(OUTDIR_SLASH)Registry.$(O) \
+    $(OUTDIR_SLASH)Semaphore.$(O) \
+    $(OUTDIR_SLASH)SharedPool.$(O) \
+    $(OUTDIR_SLASH)Signal.$(O) \
+    $(OUTDIR_SLASH)Smalltalk.$(O) \
+    $(OUTDIR_SLASH)StandaloneStartup.$(O) \
+    $(OUTDIR_SLASH)Stream.$(O) \
+    $(OUTDIR_SLASH)SystemChangeNotifier.$(O) \
+    $(OUTDIR_SLASH)UndefinedObject.$(O) \
+    $(OUTDIR_SLASH)UserMessage.$(O) \
+    $(OUTDIR_SLASH)Visitor.$(O) \
+    $(OUTDIR_SLASH)AbstractTime.$(O) \
+    $(OUTDIR_SLASH)ApplicationDefinition.$(O) \
+    $(OUTDIR_SLASH)ArithmeticValue.$(O) \
+    $(OUTDIR_SLASH)AspectVisitor.$(O) \
+    $(OUTDIR_SLASH)AutoDeletedFilename.$(O) \
+    $(OUTDIR_SLASH)Bag.$(O) \
+    $(OUTDIR_SLASH)BlockContext.$(O) \
+    $(OUTDIR_SLASH)BuiltinLookup.$(O) \
+    $(OUTDIR_SLASH)CachingRegistry.$(O) \
+    $(OUTDIR_SLASH)Character.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ISO10646_1.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__SingleByteEncoder.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__TwoByteEncoder.$(O) \
+    $(OUTDIR_SLASH)CompiledCode.$(O) \
+    $(OUTDIR_SLASH)ControlInterrupt.$(O) \
+    $(OUTDIR_SLASH)Date.$(O) \
+    $(OUTDIR_SLASH)Exception.$(O) \
+    $(OUTDIR_SLASH)ExternalFunction.$(O) \
+    $(OUTDIR_SLASH)False.$(O) \
+    $(OUTDIR_SLASH)HandleRegistry.$(O) \
+    $(OUTDIR_SLASH)HashStream.$(O) \
+    $(OUTDIR_SLASH)InlineObjectPrototype.$(O) \
+    $(OUTDIR_SLASH)KeyedCollection.$(O) \
+    $(OUTDIR_SLASH)LibraryDefinition.$(O) \
+    $(OUTDIR_SLASH)LookupKey.$(O) \
+    $(OUTDIR_SLASH)MessageSend.$(O) \
+    $(OUTDIR_SLASH)NamespaceAwareLookup.$(O) \
+    $(OUTDIR_SLASH)NoHandlerError.$(O) \
+    $(OUTDIR_SLASH)Notification.$(O) \
+    $(OUTDIR_SLASH)OSHandle.$(O) \
+    $(OUTDIR_SLASH)PeekableStream.$(O) \
+    $(OUTDIR_SLASH)Process.$(O) \
+    $(OUTDIR_SLASH)QuerySignal.$(O) \
+    $(OUTDIR_SLASH)Rectangle.$(O) \
+    $(OUTDIR_SLASH)SequenceableCollection.$(O) \
+    $(OUTDIR_SLASH)Set.$(O) \
+    $(OUTDIR_SLASH)SmalltalkChunkFileSourceReader.$(O) \
+    $(OUTDIR_SLASH)SmalltalkLanguage.$(O) \
+    $(OUTDIR_SLASH)True.$(O) \
+    $(OUTDIR_SLASH)UnixFilename.$(O) \
+    $(OUTDIR_SLASH)WeakInterestConverter.$(O) \
+    $(OUTDIR_SLASH)ArrayedCollection.$(O) \
+    $(OUTDIR_SLASH)Association.$(O) \
+    $(OUTDIR_SLASH)Block.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ASCII.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__CP437.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__EBCDIC.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ISO10646_to_UTF16BE.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ISO10646_to_UTF8.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ISO8859_1.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ISO8859_10.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ISO8859_11.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ISO8859_13.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ISO8859_14.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ISO8859_15.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ISO8859_16.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ISO8859_2.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ISO8859_3.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ISO8859_4.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ISO8859_5.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ISO8859_6.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ISO8859_7.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ISO8859_8.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__KOI8_R.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__MS_Ansi.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__MS_Arabic.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__MS_Baltic.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__MS_Cyrillic.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__MS_EastEuropean.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__MS_Greek.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__MS_Hebrew.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__MS_Symbol.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__MS_Turkish.$(O) \
+    $(OUTDIR_SLASH)ClassDescription.$(O) \
+    $(OUTDIR_SLASH)Complex.$(O) \
+    $(OUTDIR_SLASH)ControlRequest.$(O) \
+    $(OUTDIR_SLASH)Dictionary.$(O) \
+    $(OUTDIR_SLASH)EncodedStream.$(O) \
+    $(OUTDIR_SLASH)EndOfStreamNotification.$(O) \
+    $(OUTDIR_SLASH)Error.$(O) \
+    $(OUTDIR_SLASH)ExternalFunctionCallback.$(O) \
+    $(OUTDIR_SLASH)ExternalLibraryFunction.$(O) \
+    $(OUTDIR_SLASH)HaltInterrupt.$(O) \
+    $(OUTDIR_SLASH)IdentitySet.$(O) \
+    $(OUTDIR_SLASH)LinkedList.$(O) \
+    $(OUTDIR_SLASH)MD5Stream.$(O) \
+    $(OUTDIR_SLASH)Method.$(O) \
+    $(OUTDIR_SLASH)MethodDictionary.$(O) \
+    $(OUTDIR_SLASH)Number.$(O) \
+    $(OUTDIR_SLASH)OSFileHandle.$(O) \
+    $(OUTDIR_SLASH)ObjectCoder.$(O) \
+    $(OUTDIR_SLASH)OrderedCollection.$(O) \
+    $(OUTDIR_SLASH)Point.$(O) \
+    $(OUTDIR_SLASH)PositionableStream.$(O) \
+    $(OUTDIR_SLASH)Query.$(O) \
+    $(OUTDIR_SLASH)ReadOnlySequenceableCollection.$(O) \
+    $(OUTDIR_SLASH)RecursiveStoreError.$(O) \
+    $(OUTDIR_SLASH)SHA1Stream.$(O) \
+    $(OUTDIR_SLASH)Time.$(O) \
+    $(OUTDIR_SLASH)TimeoutNotification.$(O) \
+    $(OUTDIR_SLASH)Timestamp.$(O) \
+    $(OUTDIR_SLASH)UserInterrupt.$(O) \
+    $(OUTDIR_SLASH)UserNotification.$(O) \
+    $(OUTDIR_SLASH)YesToAllConfirmation.$(O) \
+    $(OUTDIR_SLASH)stx_libbasic.$(O) \
+    $(OUTDIR_SLASH)AbortAllOperationRequest.$(O) \
+    $(OUTDIR_SLASH)AbortAllOperationWantedQuery.$(O) \
+    $(OUTDIR_SLASH)AbstractSourceFileWriter.$(O) \
+    $(OUTDIR_SLASH)ActivityNotification.$(O) \
+    $(OUTDIR_SLASH)Array.$(O) \
+    $(OUTDIR_SLASH)BreakPointInterrupt.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ISO10646_to_UTF16LE.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__ISO8859_9.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderImplementations__KOI8_U.$(O) \
+    $(OUTDIR_SLASH)CheapBlock.$(O) \
+    $(OUTDIR_SLASH)ClassBuildError.$(O) \
+    $(OUTDIR_SLASH)ElementBoundsError.$(O) \
+    $(OUTDIR_SLASH)FileDirectory.$(O) \
+    $(OUTDIR_SLASH)Fraction.$(O) \
+    $(OUTDIR_SLASH)GetOpt.$(O) \
+    $(OUTDIR_SLASH)IdentityDictionary.$(O) \
+    $(OUTDIR_SLASH)InlineObjectClassDescription.$(O) \
+    $(OUTDIR_SLASH)Integer.$(O) \
+    $(OUTDIR_SLASH)Interval.$(O) \
+    $(OUTDIR_SLASH)IsDebuggingQuery.$(O) \
+    $(OUTDIR_SLASH)LimitedPrecisionReal.$(O) \
+    $(OUTDIR_SLASH)MeasurementValue.$(O) \
+    $(OUTDIR_SLASH)MetaNumber.$(O) \
+    $(OUTDIR_SLASH)Metaclass.$(O) \
+    $(OUTDIR_SLASH)MethodWithBreakpoints.$(O) \
+    $(OUTDIR_SLASH)OsError.$(O) \
+    $(OUTDIR_SLASH)PluginSupport.$(O) \
+    $(OUTDIR_SLASH)ProceedableError.$(O) \
+    $(OUTDIR_SLASH)QueryWithoutDefault.$(O) \
+    $(OUTDIR_SLASH)ReadStream.$(O) \
+    $(OUTDIR_SLASH)RecursionError.$(O) \
+    $(OUTDIR_SLASH)RecursiveExceptionError.$(O) \
+    $(OUTDIR_SLASH)RestartProcessRequest.$(O) \
+    $(OUTDIR_SLASH)SameForAllNotification.$(O) \
+    $(OUTDIR_SLASH)SemaphoreSet.$(O) \
+    $(OUTDIR_SLASH)SignalSet.$(O) \
+    $(OUTDIR_SLASH)SnapshotError.$(O) \
+    $(OUTDIR_SLASH)SortedCollection.$(O) \
+    $(OUTDIR_SLASH)StringCollection.$(O) \
+    $(OUTDIR_SLASH)TerminateProcessRequest.$(O) \
+    $(OUTDIR_SLASH)UninterpretedBytes.$(O) \
+    $(OUTDIR_SLASH)UserConfirmation.$(O) \
+    $(OUTDIR_SLASH)UserInformation.$(O) \
+    $(OUTDIR_SLASH)UtcTimestamp.$(O) \
+    $(OUTDIR_SLASH)VMInternalError.$(O) \
+    $(OUTDIR_SLASH)VarArgBlock.$(O) \
+    $(OUTDIR_SLASH)Warning.$(O) \
+    $(OUTDIR_SLASH)WeakArray.$(O) \
+    $(OUTDIR_SLASH)WeakIdentitySet.$(O) \
+    $(OUTDIR_SLASH)WeakValueDictionary.$(O) \
+    $(OUTDIR_SLASH)WriteStream.$(O) \
+    $(OUTDIR_SLASH)AbortOperationRequest.$(O) \
+    $(OUTDIR_SLASH)AbstractNumberVector.$(O) \
+    $(OUTDIR_SLASH)AllocationFailure.$(O) \
+    $(OUTDIR_SLASH)AmbiguousMessage.$(O) \
+    $(OUTDIR_SLASH)ArithmeticError.$(O) \
+    $(OUTDIR_SLASH)AssertionFailedError.$(O) \
+    $(OUTDIR_SLASH)AutoloadMetaclass.$(O) \
+    $(OUTDIR_SLASH)ByteArray.$(O) \
+    $(OUTDIR_SLASH)CharacterArray.$(O) \
+    $(OUTDIR_SLASH)CharacterWriteStream.$(O) \
+    $(OUTDIR_SLASH)Class.$(O) \
+    $(OUTDIR_SLASH)ContextError.$(O) \
+    $(OUTDIR_SLASH)ConversionError.$(O) \
+    $(OUTDIR_SLASH)DeepCopyError.$(O) \
+    $(OUTDIR_SLASH)ExceptionHandlerSet.$(O) \
+    $(OUTDIR_SLASH)ExecutionError.$(O) \
+    $(OUTDIR_SLASH)ExternalBytes.$(O) \
+    $(OUTDIR_SLASH)FixedPoint.$(O) \
+    $(OUTDIR_SLASH)Float.$(O) \
+    $(OUTDIR_SLASH)ImmutableArray.$(O) \
+    $(OUTDIR_SLASH)Infinity.$(O) \
+    $(OUTDIR_SLASH)InvalidPatchError.$(O) \
+    $(OUTDIR_SLASH)LargeInteger.$(O) \
+    $(OUTDIR_SLASH)LongFloat.$(O) \
+    $(OUTDIR_SLASH)MessageNotUnderstood.$(O) \
+    $(OUTDIR_SLASH)NoModificationError.$(O) \
+    $(OUTDIR_SLASH)NotFoundError.$(O) \
+    $(OUTDIR_SLASH)OSSignalInterrupt.$(O) \
+    $(OUTDIR_SLASH)OsIllegalOperation.$(O) \
+    $(OUTDIR_SLASH)OsInaccessibleError.$(O) \
+    $(OUTDIR_SLASH)OsInvalidArgumentsError.$(O) \
+    $(OUTDIR_SLASH)OsNeedRetryError.$(O) \
+    $(OUTDIR_SLASH)OsNoResourcesError.$(O) \
+    $(OUTDIR_SLASH)OsNotification.$(O) \
+    $(OUTDIR_SLASH)OsTransferFaultError.$(O) \
+    $(OUTDIR_SLASH)PrivateMetaclass.$(O) \
+    $(OUTDIR_SLASH)ProceedError.$(O) \
+    $(OUTDIR_SLASH)ReadWriteStream.$(O) \
+    $(OUTDIR_SLASH)ShortFloat.$(O) \
+    $(OUTDIR_SLASH)SignalError.$(O) \
+    $(OUTDIR_SLASH)SmallInteger.$(O) \
+    $(OUTDIR_SLASH)SmalltalkChunkFileSourceWriter.$(O) \
+    $(OUTDIR_SLASH)SomeNumber.$(O) \
+    $(OUTDIR_SLASH)StreamError.$(O) \
+    $(OUTDIR_SLASH)SubclassResponsibilityError.$(O) \
+    $(OUTDIR_SLASH)TimeoutError.$(O) \
+    $(OUTDIR_SLASH)UnimplementedFunctionalityError.$(O) \
+    $(OUTDIR_SLASH)UserPreferences.$(O) \
+    $(OUTDIR_SLASH)VarArgCheapBlock.$(O) \
+    $(OUTDIR_SLASH)WeakIdentityDictionary.$(O) \
+    $(OUTDIR_SLASH)ArgumentError.$(O) \
+    $(OUTDIR_SLASH)CannotResumeError.$(O) \
+    $(OUTDIR_SLASH)CannotReturnError.$(O) \
+    $(OUTDIR_SLASH)CharacterEncoderError.$(O) \
+    $(OUTDIR_SLASH)DateConversionError.$(O) \
+    $(OUTDIR_SLASH)DomainError.$(O) \
+    $(OUTDIR_SLASH)DoubleArray.$(O) \
+    $(OUTDIR_SLASH)EndOfStreamError.$(O) \
+    $(OUTDIR_SLASH)ExternalStream.$(O) \
+    $(OUTDIR_SLASH)ExternalStructure.$(O) \
+    $(OUTDIR_SLASH)FloatArray.$(O) \
+    $(OUTDIR_SLASH)ImmutableByteArray.$(O) \
+    $(OUTDIR_SLASH)IncompleteNextCountError.$(O) \
+    $(OUTDIR_SLASH)IndexNotFoundError.$(O) \
+    $(OUTDIR_SLASH)InvalidCodeError.$(O) \
+    $(OUTDIR_SLASH)InvalidModeError.$(O) \
+    $(OUTDIR_SLASH)InvalidOperationError.$(O) \
+    $(OUTDIR_SLASH)KeyNotFoundError.$(O) \
+    $(OUTDIR_SLASH)MallocFailure.$(O) \
+    $(OUTDIR_SLASH)NonBooleanReceiverError.$(O) \
+    $(OUTDIR_SLASH)OpenError.$(O) \
+    $(OUTDIR_SLASH)PositionError.$(O) \
+    $(OUTDIR_SLASH)PositionOutOfBoundsError.$(O) \
+    $(OUTDIR_SLASH)PrimitiveFailure.$(O) \
+    $(OUTDIR_SLASH)RangeError.$(O) \
+    $(OUTDIR_SLASH)ReadError.$(O) \
+    $(OUTDIR_SLASH)StreamIOError.$(O) \
+    $(OUTDIR_SLASH)StreamNotOpenError.$(O) \
+    $(OUTDIR_SLASH)String.$(O) \
+    $(OUTDIR_SLASH)TimeConversionError.$(O) \
+    $(OUTDIR_SLASH)TwoByteString.$(O) \
+    $(OUTDIR_SLASH)UnorderedNumbersError.$(O) \
+    $(OUTDIR_SLASH)UnprotectedExternalBytes.$(O) \
+    $(OUTDIR_SLASH)WeakDependencyDictionary.$(O) \
+    $(OUTDIR_SLASH)WriteError.$(O) \
+    $(OUTDIR_SLASH)WrongProceedabilityError.$(O) \
+    $(OUTDIR_SLASH)BadLiteralsError.$(O) \
+    $(OUTDIR_SLASH)DecodingError.$(O) \
+    $(OUTDIR_SLASH)EncodingError.$(O) \
+    $(OUTDIR_SLASH)FileDoesNotExistException.$(O) \
+    $(OUTDIR_SLASH)FileStream.$(O) \
+    $(OUTDIR_SLASH)ImmutableString.$(O) \
+    $(OUTDIR_SLASH)InvalidByteCodeError.$(O) \
+    $(OUTDIR_SLASH)InvalidInstructionError.$(O) \
+    $(OUTDIR_SLASH)InvalidReadError.$(O) \
+    $(OUTDIR_SLASH)InvalidWriteError.$(O) \
+    $(OUTDIR_SLASH)NoByteCodeError.$(O) \
+    $(OUTDIR_SLASH)NonIntegerIndexError.$(O) \
+    $(OUTDIR_SLASH)NonPositionableExternalStream.$(O) \
+    $(OUTDIR_SLASH)OverflowError.$(O) \
+    $(OUTDIR_SLASH)SubscriptOutOfBoundsError.$(O) \
+    $(OUTDIR_SLASH)Symbol.$(O) \
+    $(OUTDIR_SLASH)UnderflowError.$(O) \
+    $(OUTDIR_SLASH)Unicode16String.$(O) \
+    $(OUTDIR_SLASH)WrongNumberOfArgumentsError.$(O) \
+    $(OUTDIR_SLASH)ZeroDivide.$(O) \
+    $(OUTDIR_SLASH)CharacterRangeError.$(O) \
+    $(OUTDIR_SLASH)DirectoryStream.$(O) \
+    $(OUTDIR_SLASH)InvalidEncodingError.$(O) \
+    $(OUTDIR_SLASH)PipeStream.$(O) \
+    $(OUTDIR_SLASH)MethodNotAppropriateError.$(O) \
+    $(OUTDIR_SLASH)AbstractClassInstantiationError.$(O) \
+    $(OUTDIR_SLASH)InvalidTypeError.$(O) \
+    $(OUTDIR_SLASH)PolymorphicInlineCache.$(O) \
 
 WIN32_OBJS= \
-    $(OUTDIR)Win32Process.$(O) \
-    $(OUTDIR)WindowsDesktop.$(O) \
-    $(OUTDIR)PCFilename.$(O) \
-    $(OUTDIR)Win32Handle.$(O) \
-    $(OUTDIR)Win32FILEHandle.$(O) \
-    $(OUTDIR)Win32Constants.$(O) \
-    $(OUTDIR)Win32OperatingSystem.$(O) \
+    $(OUTDIR_SLASH)PCFilename.$(O) \
+    $(OUTDIR_SLASH)Win32Constants.$(O) \
+    $(OUTDIR_SLASH)Win32FILEHandle.$(O) \
+    $(OUTDIR_SLASH)Win32Handle.$(O) \
+    $(OUTDIR_SLASH)Win32OperatingSystem.$(O) \
+    $(OUTDIR_SLASH)Win32Process.$(O) \
--- a/MeasurementValue.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/MeasurementValue.st	Sat Jan 19 01:30:00 2013 +0000
@@ -380,13 +380,5 @@
 !MeasurementValue class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/MeasurementValue.st,v 1.12 2012/10/27 13:44:28 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: MeasurementValue.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MeasurementValue.st,v 1.12 2012-10-27 13:44:28 cg Exp $'
 ! !
-
-
-
-
--- a/Message.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Message.st	Sat Jan 19 01:30:00 2013 +0000
@@ -271,12 +271,5 @@
 !Message class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Message.st,v 1.34 2012/08/03 15:52:57 stefan Exp $'
-!
-
-version_SVN
-    ^ '$Id: Message.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Message.st,v 1.34 2012-08-03 15:52:57 stefan Exp $'
 ! !
-
-
-
--- a/MessageNotUnderstood.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/MessageNotUnderstood.st	Sat Jan 19 01:30:00 2013 +0000
@@ -169,16 +169,9 @@
 !MessageNotUnderstood class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/MessageNotUnderstood.st,v 1.11 2010/08/19 13:44:12 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MessageNotUnderstood.st,v 1.11 2010-08-19 13:44:12 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/MessageNotUnderstood.st,v 1.11 2010/08/19 13:44:12 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: MessageNotUnderstood.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MessageNotUnderstood.st,v 1.11 2010-08-19 13:44:12 cg Exp $'
 ! !
-
-
-
--- a/MessageSend.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/MessageSend.st	Sat Jan 19 01:30:00 2013 +0000
@@ -306,16 +306,9 @@
 !MessageSend class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/MessageSend.st,v 1.24 2012/08/03 15:53:30 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MessageSend.st,v 1.24 2012-08-03 15:53:30 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/MessageSend.st,v 1.24 2012/08/03 15:53:30 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: MessageSend.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MessageSend.st,v 1.24 2012-08-03 15:53:30 stefan Exp $'
 ! !
-
-
-
--- a/Metaclass.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Metaclass.st	Sat Jan 19 01:30:00 2013 +0000
@@ -127,14 +127,13 @@
     "Created: / 1.11.1997 / 13:16:45 / cg"
 ! !
 
-
 !Metaclass methodsFor:'autoload check'!
 
 isLoaded
     "return true, if the class has been loaded;
      redefined in Autoload; see comment there"
 
-    ^ myClass isLoaded
+    ^ myClass isNil or:[ myClass isLoaded ]
 
 
 ! !
@@ -911,11 +910,7 @@
 !Metaclass class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Metaclass.st,v 1.210 2011/07/01 11:44:26 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Metaclass.st 10713 2011-10-06 09:18:54Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Metaclass.st,v 1.211 2013-01-11 11:45:37 cg Exp $'
 ! !
 
 Metaclass initialize!
--- a/Method.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Method.st	Sat Jan 19 01:30:00 2013 +0000
@@ -450,6 +450,10 @@
     "Modified: / 01-06-2012 / 23:03:57 / cg"
 !
 
+getMclass
+    ^ mclass 
+!
+
 getPackage
     "return the package-ID of the method"
 
@@ -537,14 +541,14 @@
      which means that the method is not namespaced).
     "
 
-    | nsA lang |
+    | nsA prefix |
 
     nsA := self annotationAt: #namespace:.
-    nsA ifNotNil:[^nsA nameSpace].
-
-    ^(lang := self programmingLanguage) isSmalltalk
-        ifTrue:[nil]
-        ifFalse:[lang].
+    nsA notNil ifTrue:[^nsA nameSpace].
+
+    prefix := self programmingLanguage defaultSelectorNameSpacePrefix.
+    (prefix isNil or:[prefix = 'Smalltalk']) ifTrue:[ ^ nil].
+    ^ prefix
 
     "
         (Method >> #nameSpace) nameSpace
@@ -627,11 +631,13 @@
 !
 
 package
-    "return the package-ID of the method (nil is translated to noProject here)"
+    "return the package-symbol of the method (nil is translated to noProject here)"
 
     |cls|
 
     package notNil ifTrue:[ ^ package ].
+
+    "/ get it from my class
     (cls := self mclass) isNil ifTrue:[
         ^ PackageId noProjectID.
     ].
@@ -965,7 +971,6 @@
     "Modified (format): / 18-11-2011 / 14:47:06 / cg"
 ! !
 
-
 !Method methodsFor:'accessing-visibility'!
 
 isIgnored
@@ -1060,7 +1065,9 @@
 #endif
 %}.
     ^ false
-!
+! !
+
+!Method privateMethodsFor:'accessing-visibility'!
 
 primSetPrivacy:aSymbol
     "set the methods access rights (privacy) from a symbol;
@@ -1103,7 +1110,9 @@
     ^ true
 
     "Modified: 27.8.1995 / 22:58:08 / claus"
-!
+! !
+
+!Method methodsFor:'accessing-visibility'!
 
 privacy
     "return a symbol describing the methods access rights (privacy);
@@ -2134,7 +2143,6 @@
         ].
     ].
 
-
     "/
     "/ nope - ask my class for the source (this also invokes the SCMgr)
     "/
@@ -2228,7 +2236,6 @@
     ^ nil
 
     "Modified: / 26-11-2006 / 22:33:38 / cg"
-    "Modified: / 12-10-2011 / 18:20:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 setLookupObject: lookup
@@ -3572,7 +3579,6 @@
     "Created: / 23-07-2012 / 11:16:36 / cg"
 ! !
 
-
 !Method methodsFor:'trap methods'!
 
 makeInvalid
@@ -3809,16 +3815,11 @@
 !Method class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.402 2012/11/25 09:53:30 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.405 2012-12-17 10:49:26 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Method.st,v 1.402 2012/11/25 09:53:30 cg Exp §'
-!
-
-version_HG
-
-    ^ '$Changeset: <not expanded> $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.405 2012-12-17 10:49:26 cg Exp $'
 !
 
 version_SVN
--- a/MethodDictionary.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/MethodDictionary.st	Sat Jan 19 01:30:00 2013 +0000
@@ -376,16 +376,9 @@
 !MethodDictionary class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/MethodDictionary.st,v 1.29 2011/07/20 15:52:04 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MethodDictionary.st,v 1.29 2011-07-20 15:52:04 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/MethodDictionary.st,v 1.29 2011/07/20 15:52:04 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: MethodDictionary.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MethodDictionary.st,v 1.29 2011-07-20 15:52:04 cg Exp $'
 ! !
-
-
-
--- a/MethodNotAppropriateError.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/MethodNotAppropriateError.st	Sat Jan 19 01:30:00 2013 +0000
@@ -45,11 +45,11 @@
 !MethodNotAppropriateError class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/MethodNotAppropriateError.st,v 1.1 2012/11/02 08:57:37 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MethodNotAppropriateError.st,v 1.1 2012-11-02 08:57:37 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/MethodNotAppropriateError.st,v 1.1 2012/11/02 08:57:37 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/MethodNotAppropriateError.st,v 1.1 2012-11-02 08:57:37 cg Exp $'
 ! !
 
-MethodNotAppropriateError initialize!
\ No newline at end of file
+MethodNotAppropriateError initialize!
--- a/MethodWithBreakpoints.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/MethodWithBreakpoints.st	Sat Jan 19 01:30:00 2013 +0000
@@ -71,9 +71,9 @@
 !MethodWithBreakpoints class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/MethodWithBreakpoints.st,v 1.1 2012/08/02 12:22:22 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MethodWithBreakpoints.st,v 1.1 2012-08-02 12:22:22 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/MethodWithBreakpoints.st,v 1.1 2012/08/02 12:22:22 cg Exp §'
-! !
\ No newline at end of file
+    ^ '$Header: /cvs/stx/stx/libbasic/MethodWithBreakpoints.st,v 1.1 2012-08-02 12:22:22 cg Exp $'
+! !
--- a/MiniDebugger.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/MiniDebugger.st	Sat Jan 19 01:30:00 2013 +0000
@@ -902,16 +902,9 @@
 !MiniDebugger class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/MiniDebugger.st,v 1.79 2011/09/29 07:06:51 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MiniDebugger.st,v 1.79 2011-09-29 07:06:51 cg Exp $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/MiniDebugger.st,v 1.79 2011/09/29 07:06:51 cg Exp '
-!
-
-version_SVN
-    ^ '$Id: MiniDebugger.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MiniDebugger.st,v 1.79 2011-09-29 07:06:51 cg Exp $'
 ! !
-
-
-
--- a/MiniLogger.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/MiniLogger.st	Sat Jan 19 01:30:00 2013 +0000
@@ -12,7 +12,7 @@
 "{ Package: 'stx:libbasic' }"
 
 Object subclass:#MiniLogger
-	instanceVariableNames:'stream'
+	instanceVariableNames:''
 	classVariableNames:'Instance'
 	poolDictionaries:''
 	category:'System-Debugging-Support'
@@ -61,23 +61,6 @@
     "Created: / 01-09-2011 / 12:26:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!MiniLogger methodsFor:'initialization'!
-
-initializeStream
-
-    Stderr isOpen ifTrue:[
-        stream := Stderr.        
-        ^self.
-    ].
-    Stdout isOpen ifTrue:[
-        stream := Stdout.
-        ^self.
-    ].
-    stream := 'smalltalkx.log' asFilename writeStream.
-
-    "Created: / 10-12-2011 / 00:11:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
 !MiniLogger methodsFor:'logging'!
 
 facilityOf: originator
@@ -118,7 +101,7 @@
 
 log: message severity: severity
 
-    self log: message severity: severity originator: thisContext sender receiver
+    self log: message severity: #debug originator: thisContext sender receiver
 
     "Created: / 15-09-2011 / 10:25:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -128,7 +111,7 @@
     | originator |
     originator := thisContext sender receiver.
 
-    self log: message severity: severity facility: (self facilityOf: originator) originator: originator attachment: attachment
+    self log: message severity: #debug facility: (self facilityOf: originator) originator: originator attachment: attachment
 
     "Created: / 15-09-2011 / 11:47:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -148,13 +131,10 @@
 !
 
 log: message severity: severity facility: facility originator: originator attachment: attachment
+
     "Pricipal logging method. This mimics VM __stxLog__()"
 
-    | ts |
-
-    stream isNil ifTrue:[self initializeStream].
-
-    stream
+    Stderr 
         nextPutAll: facility ? 'STX';
         space;
         nextPut:$[;
@@ -162,27 +142,12 @@
         nextPut:$];
         space.
 
-    stream nextPut:$(.
-
-    "Ugly code but much faster"
-    ts := Timestamp now.
-    (ts year - 2000) printOn: stream.
-    stream nextPut: $-.
-    ts month printOn: stream base: 10 size:2 fill:$0.
-    stream nextPut: $-.
-    ts day printOn: stream base: 10 size:2 fill:$0.
-    stream space.
-    ts hour printOn: stream base: 10 size:2 fill:$0.
-    stream nextPut: $:.
-    ts minute printOn: stream base: 10 size:2 fill:$0.
-    stream nextPut: $:.
-    ts second printOn: stream base: 10 size:2 fill:$0.
-    stream nextPut:$).
-
-    stream space.
-    stream nextPutAll: message.
-    stream cr.
-    stream flush.
+    Stderr nextPut:$(.
+    Timestamp now printOn:Stderr format:'%(year)-%(mon)-%(day) %h:%m:%s'.
+    Stderr nextPut:$).
+    Stderr space.
+    Stderr nextPutAll: message.
+    Stderr cr.
 
     "
         Logger log:'test message' severity: #debug facility: 'TEST'
@@ -200,8 +165,16 @@
 
 !MiniLogger class methodsFor:'documentation'!
 
+version
+    ^ '$Header: /cvs/stx/stx/libbasic/MiniLogger.st,v 1.1 2011-10-31 16:06:38 vrany Exp $'
+!
+
+version_CVS
+    ^ '$Header: /cvs/stx/stx/libbasic/MiniLogger.st,v 1.1 2011-10-31 16:06:38 vrany Exp $'
+!
+
 version_SVN
-    ^ '$Id: MiniLogger.st 10827 2012-07-20 13:32:04Z vranyj1 $'
+    ^ '§Id: MiniLogger.st 10688 2011-09-15 11:05:35Z vranyj1 §'
 ! !
 
 MiniLogger initialize!
--- a/NameSpace.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/NameSpace.st	Sat Jan 19 01:30:00 2013 +0000
@@ -734,9 +734,9 @@
 !NameSpace class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/NameSpace.st,v 1.75 2012/10/22 20:26:16 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/NameSpace.st,v 1.75 2012-10-22 20:26:16 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: NameSpace.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '§ Id: NameSpace.st 10643 2011-06-08 21:53:07Z vranyj1  §'
 ! !
--- a/NamespaceAwareLookup.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/NamespaceAwareLookup.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1,16 +1,28 @@
 "
- COPYRIGHT (c) 2006 by eXept Software AG
+ COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
               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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the 'Software'), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
 "
-'From Smalltalk/X, Version:6.1.2 on 19-08-2010 at 10:16:13 PM'                  !
-
 "{ Package: 'stx:libbasic' }"
 
 Lookup subclass:#NamespaceAwareLookup
@@ -24,15 +36,29 @@
 
 copyright
 "
- COPYRIGHT (c) 2006 by eXept Software AG
+ COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
               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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the 'Software'), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
 "
 ! !
 
@@ -57,7 +83,7 @@
 
 !NamespaceAwareLookup class methodsFor:'lookup'!
 
-lookupMethodForSelector: selector directedTo: initialSearchClass for: receiver withArguments: argArrayOrNil from: sendingContext ilc: ilc
+lookupMethodForSelector: selector directedTo: initialSearchClass for: receiver withArguments: argArrayOrNil from: sendingContext 
 
     "JV @ 2010-07-24
      Following C code is just a performance optimization.
@@ -72,22 +98,19 @@
 	if (__Class(sendingMthd) == Method &&
 		__MethodInstPtr(sendingMthd)->m_annotation == nil) {
 		OBJ m = __lookup(initialSearchClass, selector);
-		if (m != nil) {
-            __ilcBind(ilc, initialSearchClass, m, selector);
-            RETURN ( m );
-        }
+		if (m != nil) RETURN ( m );
 	}
 %}.
 
     ^Instance lookupMethodForSelector: selector directedTo: initialSearchClass
 			  for: receiver withArguments: argArrayOrNil 
-			  from: sendingContext ilc: ilc
+			  from: sendingContext 
 
 ! !
 
 !NamespaceAwareLookup methodsFor:'lookup'!
 
-lookupMethodForSelector: selector directedTo: initialSearchClass for: receiver withArguments: argArrayOrNil from: sendingContext ilc: ilc
+lookupMethodForSelector: selector directedTo: initialSearchClass for: receiver withArguments: argArrayOrNil from: sendingContext 
     "Invoked by the VM to ask me for a method to fire.
      For details, see comment inLookup>>lookupMethodForSelector:directedTo:for:withArguments:from:"
 
@@ -105,10 +128,7 @@
 	if (__Class(sendingMthd) == Method &&
 		__MethodInstPtr(sendingMthd)->m_annotation == nil) {
 		OBJ m = __lookup(initialSearchClass, selector);
-		if (m != nil) {
-            __ilcBind(ilc, initialSearchClass, m, selector);
-            RETURN ( m );
-        }
+		if (m != nil) RETURN ( m );
 	}
 %}.
     "If you remove C code above, uncomment the line below."
@@ -123,10 +143,7 @@
 %{
 	if (sendingNs == nil) {
 		OBJ m = __lookup(initialSearchClass, selector);
-		if (m != nil) {
-            __ilcBind(ilc, initialSearchClass, m, selector);
-            RETURN ( m );
-        }
+		if (m != nil) RETURN ( m );
     }
 %}.
     "
@@ -359,8 +376,12 @@
 
 !NamespaceAwareLookup class methodsFor:'documentation'!
 
+version_CVS
+    ^ '$Header: /cvs/stx/stx/libbasic/NamespaceAwareLookup.st,v 1.2 2011-07-03 15:00:20 cg Exp $'
+!
+
 version_SVN
-    ^ '$Id: NamespaceAwareLookup.st 10722 2011-10-13 15:42:52Z vranyj1 $'
+    ^ '§Id: NamespaceAwareLookup.st,v 1.1 2011/06/28 11:04:04 vrany Exp §'
 ! !
 
 NamespaceAwareLookup initialize!
--- a/NoHandlerError.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/NoHandlerError.st	Sat Jan 19 01:30:00 2013 +0000
@@ -560,18 +560,11 @@
 !NoHandlerError class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/NoHandlerError.st,v 1.19 2010/03/13 10:31:25 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/NoHandlerError.st,v 1.19 2010-03-13 10:31:25 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/NoHandlerError.st,v 1.19 2010/03/13 10:31:25 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: NoHandlerError.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/NoHandlerError.st,v 1.19 2010-03-13 10:31:25 cg Exp $'
 ! !
 
 NoHandlerError initialize!
-
-
-
--- a/NoModificationError.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/NoModificationError.st	Sat Jan 19 01:30:00 2013 +0000
@@ -50,11 +50,7 @@
 !NoModificationError class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/NoModificationError.st,v 1.2 2009/11/05 22:42:42 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: NoModificationError.st 10700 2011-09-29 15:44:37Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/NoModificationError.st,v 1.2 2009-11-05 22:42:42 cg Exp $'
 ! !
 
 NoModificationError initialize!
--- a/NonPositionableExternalStream.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/NonPositionableExternalStream.st	Sat Jan 19 01:30:00 2013 +0000
@@ -560,16 +560,9 @@
 !NonPositionableExternalStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/NonPositionableExternalStream.st,v 1.61 2010/03/04 15:11:43 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/NonPositionableExternalStream.st,v 1.61 2010-03-04 15:11:43 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/NonPositionableExternalStream.st,v 1.61 2010/03/04 15:11:43 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: NonPositionableExternalStream.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/NonPositionableExternalStream.st,v 1.61 2010-03-04 15:11:43 stefan Exp $'
 ! !
-
-
-
--- a/Notification.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Notification.st	Sat Jan 19 01:30:00 2013 +0000
@@ -358,18 +358,11 @@
 !Notification class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Notification.st,v 1.27 2011/09/11 14:41:10 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Notification.st,v 1.27 2011-09-11 14:41:10 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Notification.st,v 1.27 2011/09/11 14:41:10 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Notification.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Notification.st,v 1.27 2011-09-11 14:41:10 cg Exp $'
 ! !
 
 Notification initialize!
-
-
-
--- a/Number.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Number.st	Sat Jan 19 01:30:00 2013 +0000
@@ -399,6 +399,7 @@
     "Modified: / 19.11.1999 / 18:26:47 / cg"
 ! !
 
+
 !Number class methodsFor:'constants'!
 
 decimalPointCharacter 
@@ -630,6 +631,7 @@
     "Modified: / 16.11.2001 / 14:13:16 / cg"
 ! !
 
+
 !Number class methodsFor:'private'!
 
 readMantissaAndScaleFrom:aStream radix:radix
@@ -704,6 +706,7 @@
     ^ self == Number
 ! !
 
+
 !Number methodsFor:'*StateSpecs-Specs'!
 
 isEqual: aNumber within: accuracy 
@@ -717,6 +720,7 @@
 	^ self truncated
 ! !
 
+
 !Number methodsFor:'Compatibility-Squeak'!
 
 asSmallAngleDegrees
@@ -866,6 +870,7 @@
     ^ self rounded printString
 ! !
 
+
 !Number methodsFor:'coercing & converting'!
 
 i
@@ -2316,16 +2321,13 @@
     "Modified: / 5.11.2001 / 17:54:22 / cg"
 ! !
 
+
 !Number class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.137 2012/11/05 16:48:19 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.137 2012-11-05 16:48:19 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Number.st,v 1.137 2012/11/05 16:48:19 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Number.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.137 2012-11-05 16:48:19 cg Exp $'
 ! !
--- a/OSErrorHolder.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/OSErrorHolder.st	Sat Jan 19 01:30:00 2013 +0000
@@ -412,18 +412,11 @@
 !OSErrorHolder class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/OSErrorHolder.st,v 1.19 2010/07/22 18:11:49 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/OSErrorHolder.st,v 1.19 2010-07-22 18:11:49 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/OSErrorHolder.st,v 1.19 2010/07/22 18:11:49 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: OSErrorHolder.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/OSErrorHolder.st,v 1.19 2010-07-22 18:11:49 stefan Exp $'
 ! !
 
 OSErrorHolder initialize!
-
-
-
--- a/OSProcess.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/OSProcess.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1,14 +1,3 @@
-"
- COPYRIGHT (c) 2006 by eXept Software AG
-	      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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
-"
 "{ Package: 'stx:libbasic' }"
 
 Object subclass:#OSProcess
@@ -20,20 +9,6 @@
 
 !OSProcess class methodsFor:'documentation'!
 
-copyright
-"
- COPYRIGHT (c) 2006 by eXept Software AG
-	      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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
-"
-!
-
 documentation
 "
     OSProcess is an abstract class. Instances represent operating system processes
@@ -158,9 +133,5 @@
 !OSProcess class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/OSProcess.st,v 1.2 2011/03/08 17:01:30 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: OSProcess.st 10700 2011-09-29 15:44:37Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/OSProcess.st,v 1.2 2011-03-08 17:01:30 stefan Exp $'
 ! !
--- a/Object.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Object.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 1988 by Claus Gittinger
-              All Rights Reserved
+	      All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -33,7 +33,7 @@
 copyright
 "
  COPYRIGHT (c) 1988 by Claus Gittinger
-              All Rights Reserved
+	      All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -117,52 +117,52 @@
 
    [Class variables:]
 
-        ErrorSignal     <Signal>        Signal raised for error/error: messages
-                                        also, parent of all other signals.
-
-        HaltSignal      <Signal>        Signal raised for halt/halt: messages
-
-        MessageNotUnderstoodSignal      Signals raised for various error conditions
-        UserInterruptSignal
-        RecursionInterruptSignal
-        ExceptionInterruptSignal
-        SubscriptOutOfBoundsSignal
-        NonIntegerIndexSignal
-        NotFoundSignal
-        KeyNotFoundSignal
-        ElementOutOfBoundsSignal
-        InformationSignal
-        WarningSignal
-        DeepCopyErrorSignal
-        InternalErrorSignal
-
-        AbortSignal      <Signal>       Signal raised by debugger, to abort a computation
-                                        BUT, the debugger will only raise it if it is handled.
-                                        By handling the abortSignal, you can control where the
-                                        debuggers abort-function resumes execution in case of
-                                        an error.
-
-        ErrorRecursion   <Boolean>      controls behavior when recursive errors occur (i.e.
-                                        an error while handling an error).
-
-        Dependencies     <WeakDependencyDictionary>
-                                        keeps track of object dependencies.
-
-        InfoPrinting     <Boolean>      controls weather informational messages
-                                        are printed.
-
-        ActivityNotificationSignal <QuerySignal>
-                                         raised on #activityNotification:
-
-        NonWeakDependencies <Dictionary> keeps track of object dependencies.
-                                         Dependents stay alive.
-
-        SynchronizationSemaphores <WeakIdentityDictionary>
-                                         Semaphores for per-object-monitor.
+	ErrorSignal     <Signal>        Signal raised for error/error: messages
+					also, parent of all other signals.
+
+	HaltSignal      <Signal>        Signal raised for halt/halt: messages
+
+	MessageNotUnderstoodSignal      Signals raised for various error conditions
+	UserInterruptSignal
+	RecursionInterruptSignal
+	ExceptionInterruptSignal
+	SubscriptOutOfBoundsSignal
+	NonIntegerIndexSignal
+	NotFoundSignal
+	KeyNotFoundSignal
+	ElementOutOfBoundsSignal
+	InformationSignal
+	WarningSignal
+	DeepCopyErrorSignal
+	InternalErrorSignal
+
+	AbortSignal      <Signal>       Signal raised by debugger, to abort a computation
+					BUT, the debugger will only raise it if it is handled.
+					By handling the abortSignal, you can control where the
+					debuggers abort-function resumes execution in case of
+					an error.
+
+	ErrorRecursion   <Boolean>      controls behavior when recursive errors occur (i.e.
+					an error while handling an error).
+
+	Dependencies     <WeakDependencyDictionary>
+					keeps track of object dependencies.
+
+	InfoPrinting     <Boolean>      controls weather informational messages
+					are printed.
+
+	ActivityNotificationSignal <QuerySignal>
+					 raised on #activityNotification:
+
+	NonWeakDependencies <Dictionary> keeps track of object dependencies.
+					 Dependents stay alive.
+
+	SynchronizationSemaphores <WeakIdentityDictionary>
+					 Semaphores for per-object-monitor.
 
 
     [author:]
-        Claus Gittinger
+	Claus Gittinger
 
 "
 ! !
@@ -236,23 +236,23 @@
     "called only once - initialize signals"
 
     ErrorSignal isNil ifTrue:[
-        self initSignals
+	self initSignals
     ].
 
     ObjectAttributes isNil ifTrue:[
-        ObjectAttributes := WeakIdentityDictionary new.
+	ObjectAttributes := WeakIdentityDictionary new.
     ].
     Dependencies isNil ifTrue:[
-        Dependencies := WeakDependencyDictionary new.
+	Dependencies := WeakDependencyDictionary new.
     ].
     NonWeakDependencies isNil ifTrue:[
-        NonWeakDependencies := IdentityDictionary new.
+	NonWeakDependencies := IdentityDictionary new.
     ].
     SynchronizationSemaphores isNil ifTrue:[
-        SynchronizationSemaphores := WeakIdentityDictionary new.
+	SynchronizationSemaphores := WeakIdentityDictionary new.
     ].
     FinalizationLobby isNil ifTrue:[
-        FinalizationLobby := Registry new.
+	FinalizationLobby := Registry new.
     ].
 
     "/ initialize InfoPrinting to the VM's infoPrint setting
@@ -432,13 +432,13 @@
 
     "
      RecursiveStoreError handle:[:ex |
-        self halt
+	self halt
      ] do:[
-        |a|
-
-        a := Array new:1.
-        a at:1 put:a.
-        a storeOn:Transcript
+	|a|
+
+	a := Array new:1.
+	a at:1 put:a.
+	a storeOn:Transcript
      ]
     "
 
@@ -504,6 +504,7 @@
     InfoPrinting := aBoolean
 ! !
 
+
 !Object class methodsFor:'queries'!
 
 isAbstract
@@ -525,6 +526,9 @@
     "Modified: 23.4.1996 / 16:00:07 / cg"
 ! !
 
+
+
+
 !Object methodsFor:'Compatibility-Dolphin'!
 
 stbFixup: anSTBInFiler at: newObjectIndex
@@ -612,7 +616,7 @@
 explore
     (self confirm:'The Squeak explorer has not yet been ported to ST/X\\Inspect instead ?' withCRs)
     ifTrue:[
-        self inspect
+	self inspect
     ]
 !
 
@@ -629,13 +633,13 @@
 !
 
 stringForReadout
-        ^ self stringRepresentation
+	^ self stringRepresentation
 !
 
 stringRepresentation
-        "Answer a string that represents the receiver.  For most objects this is simply its printString, but for strings themselves, it's themselves.  6/12/96 sw"
-
-        ^ self printString
+	"Answer a string that represents the receiver.  For most objects this is simply its printString, but for strings themselves, it's themselves.  6/12/96 sw"
+
+	^ self printString
 !
 
 valueWithPossibleArguments:argArray
@@ -682,6 +686,7 @@
     "
 ! !
 
+
 !Object methodsFor:'accessing'!
 
 _at:index
@@ -689,9 +694,9 @@
      this is a synthetic selector, generated by the compiler,
      if a construct of the form expr[idx...] is parsed.
      I.e.
-        v[n]
+	v[n]
      generates
-        v _at: n
+	v _at: n
     "
 
     ^ self at:index
@@ -704,9 +709,9 @@
      this is a synthetic selector, generated by the compiler,
      if a construct of the form expr[idx...] is parsed.
      I.e.
-        v[n]
+	v[n]
      generates
-        v _at: n
+	v _at: n
     "
 
     ^ self at:index put:value
@@ -748,239 +753,239 @@
      * and SmallInteger
      */
     if (__isSmallInteger(index)) {
-        myClass = __qClass(self);
-        indx = __intVal(index) - 1;
-        n /* nInstVars */ = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
-        n /* nInstBytes */ = OHDR_SIZE + __OBJS2BYTES__(n /* nInstVars */);
-        nbytes = __qSize(self) - n /* nInstBytes */;
-        pFirst = (char *)(__InstPtr(self)) + n /* nInstBytes */;
-
-        switch ((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
-            case __MASKSMALLINT(POINTERARRAY):
-            case __MASKSMALLINT(WKPOINTERARRAY):
-                /*
-                 * pointers
-                 */
-                if ((unsigned)indx < (__BYTES2OBJS__(nbytes))) {
-                    OBJ *op;
-
-                    op = (OBJ *)pFirst + indx;
-                    RETURN ( *op );
-                }
-                break;
-
-            case __MASKSMALLINT(BYTEARRAY):
-                /*
-                 * (unsigned) bytes
-                 */
-                if ((unsigned)indx < nbytes) {
-                    unsigned char *cp;
-
-                    cp = (unsigned char *)pFirst + indx;
-                    RETURN ( __mkSmallInteger( (*cp & 0xFF)) );
-                }
-                break;
-
-            case __MASKSMALLINT(FLOATARRAY):
-                /*
-                 * native floats
-                 */
-                if ((unsigned)indx < (nbytes / sizeof(float))) {
-                    float *fp;
-                    float f;
-                    OBJ v;
-
-                    fp = (float *)pFirst + indx;
-                    f = *fp;
-                    if (f == 0.0) {
-                        v = __float0;
-                    } else {
-                        __qMKSFLOAT(v, f);
-                    }
-                    RETURN (v);
-                }
-                break;
-
-            case __MASKSMALLINT(DOUBLEARRAY):
-                /*
-                 * native doubles
-                 */
+	myClass = __qClass(self);
+	indx = __intVal(index) - 1;
+	n /* nInstVars */ = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
+	n /* nInstBytes */ = OHDR_SIZE + __OBJS2BYTES__(n /* nInstVars */);
+	nbytes = __qSize(self) - n /* nInstBytes */;
+	pFirst = (char *)(__InstPtr(self)) + n /* nInstBytes */;
+
+	switch ((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
+	    case __MASKSMALLINT(POINTERARRAY):
+	    case __MASKSMALLINT(WKPOINTERARRAY):
+		/*
+		 * pointers
+		 */
+		if ((unsigned)indx < (__BYTES2OBJS__(nbytes))) {
+		    OBJ *op;
+
+		    op = (OBJ *)pFirst + indx;
+		    RETURN ( *op );
+		}
+		break;
+
+	    case __MASKSMALLINT(BYTEARRAY):
+		/*
+		 * (unsigned) bytes
+		 */
+		if ((unsigned)indx < nbytes) {
+		    unsigned char *cp;
+
+		    cp = (unsigned char *)pFirst + indx;
+		    RETURN ( __mkSmallInteger( (*cp & 0xFF)) );
+		}
+		break;
+
+	    case __MASKSMALLINT(FLOATARRAY):
+		/*
+		 * native floats
+		 */
+		if ((unsigned)indx < (nbytes / sizeof(float))) {
+		    float *fp;
+		    float f;
+		    OBJ v;
+
+		    fp = (float *)pFirst + indx;
+		    f = *fp;
+		    if (f == 0.0) {
+			v = __float0;
+		    } else {
+			__qMKSFLOAT(v, f);
+		    }
+		    RETURN (v);
+		}
+		break;
+
+	    case __MASKSMALLINT(DOUBLEARRAY):
+		/*
+		 * native doubles
+		 */
 #ifdef __NEED_DOUBLE_ALIGN
-                if ((INT)pFirst & (__DOUBLE_ALIGN-1)) {
-                    int delta = __DOUBLE_ALIGN - ((INT)pFirst & (__DOUBLE_ALIGN-1));
-
-                    pFirst += delta;
-                    nbytes -= delta;
-                }
+		if ((INT)pFirst & (__DOUBLE_ALIGN-1)) {
+		    int delta = __DOUBLE_ALIGN - ((INT)pFirst & (__DOUBLE_ALIGN-1));
+
+		    pFirst += delta;
+		    nbytes -= delta;
+		}
 #endif
-                if ((unsigned)indx < (nbytes / sizeof(double))) {
-                    double *dp;
-                    double d;
-                    OBJ v;
-
-                    dp = (double *)pFirst + indx;
-                    d = *dp;
-                    if (d == 0.0) {
-                        v = __float0;
-                    } else {
-                        __qMKFLOAT(v, d);
-                    }
-                    RETURN (v);
-                }
-                break;
-
-            case __MASKSMALLINT(WORDARRAY):
-                /*
-                 * unsigned 16bit ints
-                 */
-                /* Notice: the hard coded shifts are by purpose;
-                 * it makes us independent of the short-size of the machine
-                 */
-                if ((unsigned)indx < (nbytes>>1)) {
-                    unsigned short *sp;
-
-                    sp = (unsigned short *)(pFirst + (indx<<1));
-                    RETURN ( __mkSmallInteger( (*sp & 0xFFFF)) );
-                }
-                break;
-
-            case __MASKSMALLINT(SWORDARRAY):
-                /*
-                 * signed 16bit ints
-                 */
-                /* Notice: the hard coded shifts are by purpose;
-                 * it makes us independent of the short-size of the machine
-                 */
-                if ((unsigned)indx < (nbytes>>1)) {
-                    short *ssp;
-
-                    ssp = (short *)(pFirst + (indx<<1));
-                    RETURN ( __mkSmallInteger( (*ssp) ));
-                }
-                break;
-
-            case __MASKSMALLINT(LONGARRAY):
-                /*
-                 * unsigned 32bit ints
-                 */
-                /* Notice: the hard coded shifts are by purpose;
-                 * it makes us independent of the int-size of the machine
-                 */
-                if ((unsigned)indx < (nbytes>>2)) {
-                    unsigned int32 ul;
-                    unsigned int32 *lp;
-
-                    lp = (unsigned int32 *)(pFirst + (indx<<2));
-                    ul = *lp;
+		if ((unsigned)indx < (nbytes / sizeof(double))) {
+		    double *dp;
+		    double d;
+		    OBJ v;
+
+		    dp = (double *)pFirst + indx;
+		    d = *dp;
+		    if (d == 0.0) {
+			v = __float0;
+		    } else {
+			__qMKFLOAT(v, d);
+		    }
+		    RETURN (v);
+		}
+		break;
+
+	    case __MASKSMALLINT(WORDARRAY):
+		/*
+		 * unsigned 16bit ints
+		 */
+		/* Notice: the hard coded shifts are by purpose;
+		 * it makes us independent of the short-size of the machine
+		 */
+		if ((unsigned)indx < (nbytes>>1)) {
+		    unsigned short *sp;
+
+		    sp = (unsigned short *)(pFirst + (indx<<1));
+		    RETURN ( __mkSmallInteger( (*sp & 0xFFFF)) );
+		}
+		break;
+
+	    case __MASKSMALLINT(SWORDARRAY):
+		/*
+		 * signed 16bit ints
+		 */
+		/* Notice: the hard coded shifts are by purpose;
+		 * it makes us independent of the short-size of the machine
+		 */
+		if ((unsigned)indx < (nbytes>>1)) {
+		    short *ssp;
+
+		    ssp = (short *)(pFirst + (indx<<1));
+		    RETURN ( __mkSmallInteger( (*ssp) ));
+		}
+		break;
+
+	    case __MASKSMALLINT(LONGARRAY):
+		/*
+		 * unsigned 32bit ints
+		 */
+		/* Notice: the hard coded shifts are by purpose;
+		 * it makes us independent of the int-size of the machine
+		 */
+		if ((unsigned)indx < (nbytes>>2)) {
+		    unsigned int32 ul;
+		    unsigned int32 *lp;
+
+		    lp = (unsigned int32 *)(pFirst + (indx<<2));
+		    ul = *lp;
 #if __POINTER_SIZE__ == 8
-                    {
-                        unsigned  INT ull = (unsigned INT)ul;
-                        RETURN ( __mkSmallInteger(ull) );
-                    }
+		    {
+			unsigned INT ull = (unsigned INT)ul;
+			RETURN ( __mkSmallInteger(ull) );
+		    }
 #else
-                    if (ul <= _MAX_INT) {
-                        RETURN ( __mkSmallInteger(ul) );
-                    }
-                    RETURN ( __MKULARGEINT(ul) );
+		    if (ul <= _MAX_INT) {
+			RETURN ( __mkSmallInteger(ul) );
+		    }
+		    RETURN ( __MKULARGEINT(ul) );
 #endif
-                }
-                break;
-
-            case __MASKSMALLINT(SLONGARRAY):
-                /*
-                 * signed 32bit ints
-                 */
-                /* Notice: the hard coded shifts are by purpose;
-                 * it makes us independent of the int-size of the machine
-                 */
-                if ((unsigned)indx < (nbytes>>2)) {
-                    int32 *slp;
-                    int32 l;
-
-                    slp = (int32 *)(pFirst + (indx<<2));
-                    l = *slp;
+		}
+		break;
+
+	    case __MASKSMALLINT(SLONGARRAY):
+		/*
+		 * signed 32bit ints
+		 */
+		/* Notice: the hard coded shifts are by purpose;
+		 * it makes us independent of the int-size of the machine
+		 */
+		if ((unsigned)indx < (nbytes>>2)) {
+		    int32 *slp;
+		    int32 l;
+
+		    slp = (int32 *)(pFirst + (indx<<2));
+		    l = *slp;
 #if __POINTER_SIZE__ == 8
-                    {
-                        INT ll = (INT)l;
-                        RETURN ( __mkSmallInteger(ll) );
-                    }
+		    {
+			INT ll = (INT)l;
+			RETURN ( __mkSmallInteger(ll) );
+		    }
 #else
-                    if (__ISVALIDINTEGER(l)) {
-                        RETURN ( __mkSmallInteger(l) );
-                    }
-                    RETURN ( __MKLARGEINT(l) );
+		    if (__ISVALIDINTEGER(l)) {
+			RETURN ( __mkSmallInteger(l) );
+		    }
+		    RETURN ( __MKLARGEINT(l) );
 #endif
-                }
-                break;
-
-            case __MASKSMALLINT(SLONGLONGARRAY):
-                /*
-                 * signed 64bit longlongs
-                 */
+		}
+		break;
+
+	    case __MASKSMALLINT(SLONGLONGARRAY):
+		/*
+		 * signed 64bit longlongs
+		 */
 #ifdef __NEED_LONGLONG_ALIGN
-                if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
-                    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
-
-                    pFirst += delta;
-                    nbytes -= delta;
-                }
+		if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
+		    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
+
+		    pFirst += delta;
+		    nbytes -= delta;
+		}
 #endif
-                /* Notice: the hard coded shifts are by purpose;
-                 * it makes us independent of the long/longlong-size of the machine
-                 */
-                if ((unsigned)indx < (nbytes>>3)) {
+		/* Notice: the hard coded shifts are by purpose;
+		 * it makes us independent of the long/longlong-size of the machine
+		 */
+		if ((unsigned)indx < (nbytes>>3)) {
 #if __POINTER_SIZE__ == 8
-                    INT *slp, ll;
-
-                    slp = (INT *)(pFirst + (indx<<3));
-                    ll = *slp;
-                    if (__ISVALIDINTEGER(ll)) {
-                        RETURN ( __mkSmallInteger(ll) );
-                    }
-                    RETURN ( __MKLARGEINT(ll) );
+		    INT *slp, ll;
+
+		    slp = (INT *)(pFirst + (indx<<3));
+		    ll = *slp;
+		    if (__ISVALIDINTEGER(ll)) {
+			RETURN ( __mkSmallInteger(ll) );
+		    }
+		    RETURN ( __MKLARGEINT(ll) );
 #else
-                    __int64__ *llp;
-
-                    llp = (__int64__ *)(pFirst + (indx<<3));
-                    RETURN (__MKINT64(llp));
+		    __int64__ *llp;
+
+		    llp = (__int64__ *)(pFirst + (indx<<3));
+		    RETURN (__MKINT64(llp));
 #endif
-                }
-                break;
-
-            case __MASKSMALLINT(LONGLONGARRAY):
-                /*
-                 * unsigned 64bit longlongs
-                 */
+		}
+		break;
+
+	    case __MASKSMALLINT(LONGLONGARRAY):
+		/*
+		 * unsigned 64bit longlongs
+		 */
 #ifdef __NEED_LONGLONG_ALIGN
-                if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
-                    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
-
-                    pFirst += delta;
-                    nbytes -= delta;
-                }
+		if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
+		    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
+
+		    pFirst += delta;
+		    nbytes -= delta;
+		}
 #endif
-                /* Notice: the hard coded shifts are by purpose;
-                 * it makes us independent of the long/longlong-size of the machine
-                 */
-                if ((unsigned)indx < (nbytes>>3)) {
+		/* Notice: the hard coded shifts are by purpose;
+		 * it makes us independent of the long/longlong-size of the machine
+		 */
+		if ((unsigned)indx < (nbytes>>3)) {
 #if __POINTER_SIZE__ == 8
-                    unsigned INT *ulp, ul;
-
-                    ulp = (unsigned INT *)(pFirst + (indx<<3));
-                    ul = *ulp;
-                    if (ul <= _MAX_INT) {
-                        RETURN ( __mkSmallInteger(ul) );
-                    }
-                    RETURN ( __MKULARGEINT(ul) );
+		    unsigned INT *ulp, ul;
+
+		    ulp = (unsigned INT *)(pFirst + (indx<<3));
+		    ul = *ulp;
+		    if (ul <= _MAX_INT) {
+			RETURN ( __mkSmallInteger(ul) );
+		    }
+		    RETURN ( __MKULARGEINT(ul) );
 #else
-                    __uint64__ *llp;
-
-                    llp = (__uint64__ *)(pFirst + (indx<<3));
-                    RETURN (__MKUINT64(llp));
+		    __uint64__ *llp;
+
+		    llp = (__uint64__ *)(pFirst + (indx<<3));
+		    RETURN (__MKUINT64(llp));
 #endif
-                }
-                break;
-        }
+		}
+		break;
+	}
     }
 %}.
     ^ self indexNotIntegerOrOutOfBounds:index
@@ -1008,246 +1013,280 @@
        and SmallInteger */
 
     if (__isSmallInteger(index)) {
-        indx = __intVal(index) - 1;
-        myClass = __qClass(self);
-        n /* ninstvars */ = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
-        n /* nInstBytes */ = OHDR_SIZE + __OBJS2BYTES__(n /* ninstvars */);
-        nbytes = __qSize(self) - n /* nInstBytes */;
-        pFirst = (char *)(__InstPtr(self)) + n /* nInstBytes */;
-
-        switch ((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
-            case __MASKSMALLINT(POINTERARRAY):
-            case __MASKSMALLINT(WKPOINTERARRAY):
-                if ((unsigned)indx < (__BYTES2OBJS__(nbytes))) {
-                    OBJ *op;
-
-                    op = (OBJ *)pFirst + indx;
-                    *op = anObject;
-                    __STORE(self, anObject);
-                    RETURN ( anObject );
-                }
-                break;
-
-            case __MASKSMALLINT(BYTEARRAY):
-                if (__isSmallInteger(anObject)) {
-                    val = __intVal(anObject);
-                    if ((val & ~0xFF) == 0 /* i.e. (val >= 0) && (val <= 255) */) {
-                        if ((unsigned)indx < nbytes) {
-                            char *cp;
-
-                            cp = pFirst + indx;
-                            *cp = val;
-                            RETURN ( anObject );
-                        }
-                    }
-                }
-                break;
-
-            case __MASKSMALLINT(FLOATARRAY):
-                if ((unsigned)indx < (nbytes / sizeof(float))) {
-                    float *fp;
-
-                    fp = (float *)pFirst + indx;
-                    if (anObject != nil) {
-                        if (! __isSmallInteger(anObject)) {
-                            if (__qIsFloatLike(anObject)) {
-                                *fp = (float)(__floatVal(anObject));
-                                RETURN ( anObject );
-                            }
-                            if (__qIsShortFloat(anObject)) {
-                                *fp = __shortFloatVal(anObject);
-                                RETURN ( anObject );
-                            }
-                        } else {
-                            *fp = (float) __intVal(anObject);
-                            RETURN ( anObject );
-                        }
-                    }
-                }
-                break;
-
-            case __MASKSMALLINT(DOUBLEARRAY):
+	indx = __intVal(index) - 1;
+	myClass = __qClass(self);
+	n /* ninstvars */ = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
+	n /* nInstBytes */ = OHDR_SIZE + __OBJS2BYTES__(n /* ninstvars */);
+	nbytes = __qSize(self) - n /* nInstBytes */;
+	pFirst = (char *)(__InstPtr(self)) + n /* nInstBytes */;
+
+	switch ((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
+	    case __MASKSMALLINT(POINTERARRAY):
+	    case __MASKSMALLINT(WKPOINTERARRAY):
+		if ((unsigned)indx < (__BYTES2OBJS__(nbytes))) {
+		    OBJ *op;
+
+		    op = (OBJ *)pFirst + indx;
+		    *op = anObject;
+		    __STORE(self, anObject);
+		    RETURN ( anObject );
+		}
+		break;
+
+	    case __MASKSMALLINT(BYTEARRAY):
+		if (__isSmallInteger(anObject)) {
+		    val = __intVal(anObject);
+		    if ((val & ~0xFF) == 0 /* i.e. (val >= 0) && (val <= 255) */) {
+			if ((unsigned)indx < nbytes) {
+			    char *cp;
+
+			    cp = pFirst + indx;
+			    *cp = val;
+			    RETURN ( anObject );
+			}
+		    }
+		}
+		break;
+
+	    case __MASKSMALLINT(FLOATARRAY):
+		if ((unsigned)indx < (nbytes / sizeof(float))) {
+		    float *fp;
+
+		    fp = (float *)pFirst + indx;
+		    if (anObject != nil) {
+			if (! __isSmallInteger(anObject)) {
+			    if (__qIsFloatLike(anObject)) {
+				*fp = (float)(__floatVal(anObject));
+				RETURN ( anObject );
+			    }
+			    if (__qIsShortFloat(anObject)) {
+				*fp = __shortFloatVal(anObject);
+				RETURN ( anObject );
+			    }
+			} else {
+			    *fp = (float) __intVal(anObject);
+			    RETURN ( anObject );
+			}
+		    }
+		}
+		break;
+
+	    case __MASKSMALLINT(DOUBLEARRAY):
 #ifdef __NEED_DOUBLE_ALIGN
-                if ((INT)pFirst & (__DOUBLE_ALIGN-1)) {
-                    int delta = __DOUBLE_ALIGN - ((INT)pFirst & (__DOUBLE_ALIGN-1));
-
-                    pFirst += delta;
-                    nbytes -= delta;
-                }
+		if ((INT)pFirst & (__DOUBLE_ALIGN-1)) {
+		    int delta = __DOUBLE_ALIGN - ((INT)pFirst & (__DOUBLE_ALIGN-1));
+
+		    pFirst += delta;
+		    nbytes -= delta;
+		}
 #endif
-                if ((unsigned)indx < (nbytes / sizeof(double))) {
-                    double *dp;
-
-                    dp = (double *)pFirst + indx;
-                    if (anObject != nil) {
-                        if (! __isSmallInteger(anObject)) {
-                            if (__qIsFloatLike(anObject)) {
-                                *dp = __floatVal(anObject);
-                                RETURN ( anObject );
-                            }
-                            if (__qIsShortFloat(anObject)) {
-                                *dp = (double)__shortFloatVal(anObject);
-                                RETURN ( anObject );
-                            }
-                        } else {
-                            *dp = (double) __intVal(anObject);
-                            RETURN ( anObject );
-                        }
-                    }
-                }
-                break;
-
-            case __MASKSMALLINT(WORDARRAY):
-                if (__isSmallInteger(anObject)) {
-                    val = __intVal(anObject);
-                    if ((unsigned)val <= 0xFFFF) {
-                        if ((unsigned)indx < (nbytes>>1)) {
-                            unsigned short *sp;
-
-                            sp = (unsigned short *)(pFirst + (indx<<1));
-                            *sp = val;
-                            RETURN ( anObject );
-                        }
-                    }
-                }
-                break;
-
-            case __MASKSMALLINT(SWORDARRAY):
-                if (__isSmallInteger(anObject)) {
-                    val = __intVal(anObject);
-                    if ((val >= -32768) && (val < 32768)) {
-                        if ((unsigned)indx < (nbytes>>1)) {
-                            short *ssp;
-
-                            ssp = (short *)(pFirst + (indx<<1));
-                            *ssp = val;
-                            RETURN ( anObject );
-                        }
-                    }
-                }
-                break;
-
-            case __MASKSMALLINT(SLONGARRAY):
-                if ((unsigned)indx < (nbytes>>2)) {
-                    int32 *slp;
-
-                    slp = (int32 *)(pFirst + (indx<<2));
-                    if (__isSmallInteger(anObject)) {
-                        *slp = __intVal(anObject);
-                        RETURN ( anObject );
-                    }
-                    n = __signedLongIntVal(anObject);
-                    /*
-                     * zero means failure for an int larger than 4 bytes
-                     * (would be a smallInteger)
-                     */
-                    if (n) {
-                        *slp = n;
-                        RETURN ( anObject );
-                    }
-                }
-                break;
-
-            case __MASKSMALLINT(LONGARRAY):
-                if ((unsigned)indx < (nbytes>>2)) {
-                    unsigned int32 *lp;
-
-                    lp = (unsigned int32 *)(pFirst + (indx<<2));
-                    if (anObject == __mkSmallInteger(0)) {
-                        *lp = 0;
-                        RETURN ( anObject );
-                    }
-                    u = __longIntVal(anObject);
-                    /*
-                     * zero means failure for an int larger than 4 bytes
-                     * (would be a smallInteger)
-                     */
-                    if (u) {
-                        *lp = u;
-                        RETURN ( anObject );
-                    }
-                }
-                break;
-
-            case __MASKSMALLINT(SLONGLONGARRAY):
+		if ((unsigned)indx < (nbytes / sizeof(double))) {
+		    double *dp;
+
+		    dp = (double *)pFirst + indx;
+		    if (anObject != nil) {
+			if (! __isSmallInteger(anObject)) {
+			    if (__qIsFloatLike(anObject)) {
+				*dp = __floatVal(anObject);
+				RETURN ( anObject );
+			    }
+			    if (__qIsShortFloat(anObject)) {
+				*dp = (double)__shortFloatVal(anObject);
+				RETURN ( anObject );
+			    }
+			} else {
+			    *dp = (double) __intVal(anObject);
+			    RETURN ( anObject );
+			}
+		    }
+		}
+		break;
+
+	    case __MASKSMALLINT(WORDARRAY):
+		if (__isSmallInteger(anObject)) {
+		    val = __intVal(anObject);
+		    if ((unsigned)val <= 0xFFFF) {
+			if ((unsigned)indx < (nbytes>>1)) {
+			    unsigned short *sp;
+
+			    sp = (unsigned short *)(pFirst + (indx<<1));
+			    *sp = val;
+			    RETURN ( anObject );
+			}
+		    }
+		}
+		break;
+
+	    case __MASKSMALLINT(SWORDARRAY):
+		if (__isSmallInteger(anObject)) {
+		    val = __intVal(anObject);
+		    if ((val >= -32768) && (val < 32768)) {
+			if ((unsigned)indx < (nbytes>>1)) {
+			    short *ssp;
+
+			    ssp = (short *)(pFirst + (indx<<1));
+			    *ssp = val;
+			    RETURN ( anObject );
+			}
+		    }
+		}
+		break;
+
+	    case __MASKSMALLINT(SLONGARRAY):
+		if ((unsigned)indx < (nbytes>>2)) {
+		    int32 *slp;
+
+		    slp = (int32 *)(pFirst + (indx<<2));
+		    if (__isSmallInteger(anObject)) {
+			*slp = __intVal(anObject);
+			RETURN ( anObject );
+		    }
+		    n = __signedLongIntVal(anObject);
+		    /*
+		     * zero means failure for an int larger than INT-size bytes
+		     * (would be a smallInteger)
+		     */
+		    if (n) {
+#if __POINTER_SIZE__ == 8
+			if ((n >= -0x80000000) && (n < 0x80000000))
+#endif
+			{
+			    *slp = n;
+			    RETURN ( anObject );
+			}
+		    }
+		}
+		break;
+
+	    case __MASKSMALLINT(LONGARRAY):
+		if ((unsigned)indx < (nbytes>>2)) {
+		    unsigned int32 *lp;
+
+		    lp = (unsigned int32 *)(pFirst + (indx<<2));
+		    if (anObject == __mkSmallInteger(0)) {
+			*lp = 0;
+			RETURN ( anObject );
+		    }
+		    u = __longIntVal(anObject);
+		    /*
+		     * zero means failure for an int larger than 4 bytes
+		     * (would be a smallInteger)
+		     */
+		    if (u) {
+#if __POINTER_SIZE__ == 8
+			if (u <= 0xFFFFFFFF)
+#endif
+			{
+			    *lp = u;
+			    RETURN ( anObject );
+			}
+		    }
+		}
+		break;
+
+	    case __MASKSMALLINT(SLONGLONGARRAY):
 #ifdef __NEED_LONGLONG_ALIGN
-                if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
-                    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
-
-                    pFirst += delta;
-                    nbytes -= delta;
-                }
+		if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
+		    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
+
+		    pFirst += delta;
+		    nbytes -= delta;
+		}
+#endif
+		if ((unsigned)indx < (nbytes>>3)) {
+		    __int64__ ll;
+		    __int64__ *sllp;
+
+		    sllp = (__int64__ *)(pFirst + (indx<<3));
+
+#if __POINTER_SIZE__ == 8
+		    if (__isSmallInteger(anObject)) {
+			*sllp = __intVal(anObject);
+			RETURN ( anObject );
+		    }
+		    n = __signedLongIntVal(anObject);
+		    if (n) {
+			*sllp = n;
+			RETURN ( anObject );
+		    }
+#else
+		    if (anObject == __mkSmallInteger(0)) {
+			ll.lo = ll.hi = 0;
+			*sllp = ll;
+			RETURN ( anObject );
+		    }
+		    if (__signedLong64IntVal(anObject, &ll)) {
+			*sllp = ll;
+			RETURN ( anObject );
+		    }
 #endif
-                if ((unsigned)indx < (nbytes>>3)) {
-                    __int64__ ll;
-                    __int64__ *sllp;
-
-                    sllp = (__int64__ *)(pFirst + (indx<<3));
-
-                    if (anObject == __mkSmallInteger(0)) {
-                        ll.lo = ll.hi = 0;
-                        *sllp = ll;
-                        RETURN ( anObject );
-                    }
-                    if (__signedLong64IntVal(anObject, &ll)) {
-                        *sllp = ll;
-                        RETURN ( anObject );
-                    }
-                }
-                break;
-
-            case __MASKSMALLINT(LONGLONGARRAY):
+		}
+		break;
+
+	    case __MASKSMALLINT(LONGLONGARRAY):
 #ifdef __NEED_LONGLONG_ALIGN
-                if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
-                    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
-
-                    pFirst += delta;
-                    nbytes -= delta;
-                }
+		if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
+		    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
+
+		    pFirst += delta;
+		    nbytes -= delta;
+		}
 #endif
-                if ((unsigned)indx < (nbytes>>3)) {
-                    __uint64__ ll;
-                    __uint64__ *llp;
-
-                    llp = (__uint64__ *)(pFirst + (indx<<3));
-                    if (anObject == __mkSmallInteger(0)) {
-                        ll.lo = ll.hi = 0;
-                        *llp = ll;
-                        RETURN ( anObject );
-                    }
-                    if (__unsignedLong64IntVal(anObject, &ll)) {
-                        *llp = ll;
-                        RETURN ( anObject );
-                    }
-                }
-                break;
-        }
+		if ((unsigned)indx < (nbytes>>3)) {
+		    __uint64__ ll;
+		    __uint64__ *llp;
+
+		    llp = (__uint64__ *)(pFirst + (indx<<3));
+#if __POINTER_SIZE__ == 8
+		    if (__isSmallInteger(anObject)) {
+			*llp = __intVal(anObject);
+			RETURN ( anObject );
+		    }
+		    ll = __longIntVal(anObject);
+		    if (ll) {
+			*llp = ll;
+			RETURN ( anObject );
+		    }
+#else
+		    if (anObject == __mkSmallInteger(0)) {
+			ll.lo = ll.hi = 0;
+			*llp = ll;
+			RETURN ( anObject );
+		    }
+		    if (__unsignedLong64IntVal(anObject, &ll)) {
+			*llp = ll;
+			RETURN ( anObject );
+		    }
+#endif
+		}
+		break;
+	}
     }
 %}.
     index isInteger ifFalse:[
-        "
-         the index should be an integer number
-        "
-        ^ self indexNotInteger:index
+	"
+	 the index should be an integer number
+	"
+	^ self indexNotInteger:index
     ].
     (index between:1 and:self size) ifFalse:[
-        "
-         the index is less than 1 or greater than the size of the
-         receiver collection
-        "
-        ^ self subscriptBoundsError:index
+	"
+	 the index is less than 1 or greater than the size of the
+	 receiver collection
+	"
+	^ self subscriptBoundsError:index
     ].
     (self class isFloatsOrDoubles) ifTrue:[
-        anObject isNumber ifTrue:[
-            ^ self basicAt:index put:(anObject asFloat)
-        ]
+	anObject isNumber ifTrue:[
+	    ^ self basicAt:index put:(anObject asFloat)
+	]
     ].
     anObject isInteger ifFalse:[
-        "
-         the object to put into the receiver collection
-         should be an integer number
-        "
-        ^ self elementNotInteger
+	"
+	 the object to put into the receiver collection
+	 should be an integer number
+	"
+	^ self elementNotInteger
     ].
     "
      the object to put into the receiver collection
@@ -1275,56 +1314,56 @@
     REGISTER OBJ cls;
 
     if (__isSmallInteger(index)) {
-        slf = self;
-        if (__isNonNilObject(slf)) {
-            unsigned char *pFirst;
-            int nIndex;
-
-            cls = __qClass(slf);
-
-            pFirst = __byteArrayVal(slf);
-            pFirst += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-            nIndex = __byteArraySize(slf);
-            indx = __intVal(index) - 1;
-
-            switch ((INT)(__ClassInstPtr(cls)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
-                case __MASKSMALLINT(DOUBLEARRAY):
+	slf = self;
+	if (__isNonNilObject(slf)) {
+	    unsigned char *pFirst;
+	    int nIndex;
+
+	    cls = __qClass(slf);
+
+	    pFirst = __byteArrayVal(slf);
+	    pFirst += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+	    nIndex = __byteArraySize(slf);
+	    indx = __intVal(index) - 1;
+
+	    switch ((INT)(__ClassInstPtr(cls)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
+		case __MASKSMALLINT(DOUBLEARRAY):
 #ifdef __NEED_DOUBLE_ALIGN
-                    if ((INT)pFirst & (__DOUBLE_ALIGN-1)) {
-                        int delta = __DOUBLE_ALIGN - ((INT)pFirst & (__DOUBLE_ALIGN-1));
-
-                        pFirst += delta;
-                        nIndex -= delta;
-                    }
+		    if ((INT)pFirst & (__DOUBLE_ALIGN-1)) {
+			int delta = __DOUBLE_ALIGN - ((INT)pFirst & (__DOUBLE_ALIGN-1));
+
+			pFirst += delta;
+			nIndex -= delta;
+		    }
 #endif
-                    /* fall into */
-                case __MASKSMALLINT(BYTEARRAY):
-                case __MASKSMALLINT(WORDARRAY):
-                case __MASKSMALLINT(LONGARRAY):
-                case __MASKSMALLINT(SWORDARRAY):
-                case __MASKSMALLINT(SLONGARRAY):
-                case __MASKSMALLINT(FLOATARRAY):
-                    if ((unsigned)indx < (unsigned)nIndex) {
-                        RETURN ( __mkSmallInteger( (INT)(pFirst[indx])) );
-                    }
-                    break;
-
-                case __MASKSMALLINT(LONGLONGARRAY):
-                case __MASKSMALLINT(SLONGLONGARRAY):
+		    /* fall into */
+		case __MASKSMALLINT(BYTEARRAY):
+		case __MASKSMALLINT(WORDARRAY):
+		case __MASKSMALLINT(LONGARRAY):
+		case __MASKSMALLINT(SWORDARRAY):
+		case __MASKSMALLINT(SLONGARRAY):
+		case __MASKSMALLINT(FLOATARRAY):
+		    if ((unsigned)indx < (unsigned)nIndex) {
+			RETURN ( __mkSmallInteger( (INT)(pFirst[indx])) );
+		    }
+		    break;
+
+		case __MASKSMALLINT(LONGLONGARRAY):
+		case __MASKSMALLINT(SLONGLONGARRAY):
 #ifdef __NEED_LONGLONG_ALIGN
-                    if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
-                        int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
-
-                        pFirst += delta;
-                        nIndex -= delta;
-                    }
+		    if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
+			int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
+
+			pFirst += delta;
+			nIndex -= delta;
+		    }
 #endif
-                    if ((unsigned)indx < (unsigned)nIndex) {
-                        RETURN ( __mkSmallInteger( (INT)(pFirst[indx])) );
-                    }
-                    break;
-            }
-        }
+		    if ((unsigned)indx < (unsigned)nIndex) {
+			RETURN ( __mkSmallInteger( (INT)(pFirst[indx])) );
+		    }
+		    break;
+	    }
+	}
     }
 %}.
     "/ index not integer or index out of range
@@ -1357,33 +1396,33 @@
     REGISTER OBJ cls;
 
     if (__bothSmallInteger(index, byteValue)) {
-        val = __intVal(byteValue);
-        if ((unsigned)(val) <= 0xFF /* i.e. (val >= 0) && (val <= 255) */) {
-            slf = self;
-            if (__isNonNilObject(slf)) {
-                cls = __qClass(slf);
-
-                indx = __intVal(index) - 1;
-                switch ((INT)(__ClassInstPtr(cls)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
-                    case __MASKSMALLINT(BYTEARRAY):
-                    case __MASKSMALLINT(WORDARRAY):
-                    case __MASKSMALLINT(LONGARRAY):
-                    case __MASKSMALLINT(SWORDARRAY):
-                    case __MASKSMALLINT(SLONGARRAY):
-                    case __MASKSMALLINT(LONGLONGARRAY):
-                    case __MASKSMALLINT(SLONGLONGARRAY):
-                    case __MASKSMALLINT(FLOATARRAY):
-                    case __MASKSMALLINT(DOUBLEARRAY):
-                        indx += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-                        nIndex = __byteArraySize(slf);
-                        if ((unsigned)indx < (unsigned)nIndex) {
-                            __ByteArrayInstPtr(slf)->ba_element[indx] = val;
-                            RETURN ( byteValue );
-                        }
-                        break;
-                }
-            }
-        }
+	val = __intVal(byteValue);
+	if ((unsigned)(val) <= 0xFF /* i.e. (val >= 0) && (val <= 255) */) {
+	    slf = self;
+	    if (__isNonNilObject(slf)) {
+		cls = __qClass(slf);
+
+		indx = __intVal(index) - 1;
+		switch ((INT)(__ClassInstPtr(cls)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
+		    case __MASKSMALLINT(BYTEARRAY):
+		    case __MASKSMALLINT(WORDARRAY):
+		    case __MASKSMALLINT(LONGARRAY):
+		    case __MASKSMALLINT(SWORDARRAY):
+		    case __MASKSMALLINT(SLONGARRAY):
+		    case __MASKSMALLINT(LONGLONGARRAY):
+		    case __MASKSMALLINT(SLONGLONGARRAY):
+		    case __MASKSMALLINT(FLOATARRAY):
+		    case __MASKSMALLINT(DOUBLEARRAY):
+			indx += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+			nIndex = __byteArraySize(slf);
+			if ((unsigned)indx < (unsigned)nIndex) {
+			    __ByteArrayInstPtr(slf)->ba_element[indx] = val;
+			    RETURN ( byteValue );
+			}
+			break;
+		}
+	    }
+	}
     }
 %}.
     "/ index not integer or index out of range
@@ -1408,22 +1447,22 @@
     int idx, ninstvars;
 
     if (__isSmallInteger(index)) {
-        myClass = __Class(self);
-        idx = __intVal(index) - 1;
-        /*
-         * do not allow returning of non-object fields.
-         * if subclass did not make provisions for that,
-         * we won't do so here ...
-         */
-        if (((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(NONOBJECT_INSTS))) {
-            if (idx == 0) {
-                RETURN ( nil )
-            }
-        }
-        ninstvars = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
-        if ((idx >= 0) && (idx < ninstvars)) {
-            RETURN ( __InstPtr(self)->i_instvars[idx] );
-        }
+	myClass = __Class(self);
+	idx = __intVal(index) - 1;
+	/*
+	 * do not allow returning of non-object fields.
+	 * if subclass did not make provisions for that,
+	 * we won't do so here ...
+	 */
+	if (((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(NONOBJECT_INSTS))) {
+	    if (idx == 0) {
+		RETURN ( nil )
+	    }
+	}
+	ninstvars = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
+	if ((idx >= 0) && (idx < ninstvars)) {
+	    RETURN ( __InstPtr(self)->i_instvars[idx] );
+	}
     }
 %}.
     ^ self indexNotIntegerOrOutOfBounds:index
@@ -1440,24 +1479,24 @@
     int idx, ninstvars;
 
     if (__isSmallInteger(index)) {
-        myClass = __Class(self);
-        idx = __intVal(index) - 1;
-        ninstvars = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
-        /*
-         * do not allow setting of non-object fields.
-         * if subclass did not make provisions for that,
-         * we won't do so here ...
-         */
-        if (((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(NONOBJECT_INSTS))) {
-            if (idx == 0) {
-                RETURN ( nil )
-            }
-        }
-        if ((idx >= 0) && (idx < ninstvars)) {
-            __InstPtr(self)->i_instvars[idx] = value;
-            __STORE(self, value);
-            RETURN ( value );
-        }
+	myClass = __Class(self);
+	idx = __intVal(index) - 1;
+	ninstvars = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
+	/*
+	 * do not allow setting of non-object fields.
+	 * if subclass did not make provisions for that,
+	 * we won't do so here ...
+	 */
+	if (((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(NONOBJECT_INSTS))) {
+	    if (idx == 0) {
+		RETURN ( nil )
+	    }
+	}
+	if ((idx >= 0) && (idx < ninstvars)) {
+	    __InstPtr(self)->i_instvars[idx] = value;
+	    __STORE(self, value);
+	    RETURN ( value );
+	}
     }
 %}.
     ^ self indexNotIntegerOrOutOfBounds:index
@@ -1474,7 +1513,7 @@
 
     idx := self class instVarOffsetOf:name.
     idx isNil ifTrue:[
-        ^ self errorKeyNotFound:name.
+	^ self errorKeyNotFound:name.
     ].
     ^ self instVarAt:idx.
 
@@ -1526,7 +1565,7 @@
 
     idx := self class instVarOffsetOf:name.
     idx isNil ifTrue:[
-        ^ self errorKeyNotFound:name.
+	^ self errorKeyNotFound:name.
     ].
     ^ self instVarAt:idx put:value.
 
@@ -1578,7 +1617,7 @@
 
     attrs := self objectAttributes.
     (attrs notNil and:[attrs size > 0]) ifTrue:[
-        ^ attrs at:attributeKey ifAbsent:[]
+	^ attrs at:attributeKey ifAbsent:[]
     ].
     ^ nil
 
@@ -1592,16 +1631,16 @@
     "/ must do this save from interrupts, since the attributes collection
     "/ is possibly accessed from multiple threads ...
     [
-        | attrs |
-
-        attrs := self objectAttributes.
-        (attrs isNil or:[attrs size == 0]) ifTrue:[
-            attrs := WeakIdentityDictionary new.
-            attrs at:attributeKey put:anObject.
-            self objectAttributes:attrs.
-        ] ifFalse:[
-            attrs at:attributeKey put:anObject.
-        ].
+	| attrs |
+
+	attrs := self objectAttributes.
+	(attrs isNil or:[attrs size == 0]) ifTrue:[
+	    attrs := WeakIdentityDictionary new.
+	    attrs at:attributeKey put:anObject.
+	    self objectAttributes:attrs.
+	] ifFalse:[
+	    attrs at:attributeKey put:anObject.
+	].
     ] valueUninterruptably
 
     "Attaching additional attributes (slots) to an arbitrary object:
@@ -1642,24 +1681,24 @@
     "/ is possibly accessed from multiple threads.
 
     (OperatingSystem blockInterrupts) ifTrue:[
-        "/ the common case - already blocked
-
-        (aCollection isNil or:[aCollection isEmpty]) ifTrue:[
-            ObjectAttributes removeKey:self ifAbsent:nil
-        ] ifFalse:[
-            ObjectAttributes at:self put:aCollection
-        ].
-        ^ self
+	"/ the common case - already blocked
+
+	(aCollection isNil or:[aCollection isEmpty]) ifTrue:[
+	    ObjectAttributes removeKey:self ifAbsent:nil
+	] ifFalse:[
+	    ObjectAttributes at:self put:aCollection
+	].
+	^ self
     ].
 
     [
-        (aCollection isNil or:[aCollection isEmpty]) ifTrue:[
-            ObjectAttributes removeKey:self ifAbsent:nil
-        ] ifFalse:[
-            ObjectAttributes at:self put:aCollection
-        ].
+	(aCollection isNil or:[aCollection isEmpty]) ifTrue:[
+	    ObjectAttributes removeKey:self ifAbsent:nil
+	] ifFalse:[
+	    ObjectAttributes at:self put:aCollection
+	].
     ] ensure:[
-        OperatingSystem unblockInterrupts
+	OperatingSystem unblockInterrupts
     ]
 
     "Created: / 22.1.1998 / 21:29:35 / av"
@@ -1672,32 +1711,33 @@
     "/ must do this save from interrupts, since the attributes collection
     "/ is possibly accessed from multiple threads.
     [
-        |attrs n a|
-
-        attrs := self objectAttributes.
-        attrs notNil ifTrue:[
-            attrs size == 0 ifTrue:[
-                self objectAttributes:nil
-            ] ifFalse:[
-                attrs removeKey:attributeKey ifAbsent:nil.
-                attrs size == 0 ifTrue:[
-                    self objectAttributes:nil
-                ]
-            ]
-        ]
+	|attrs n a|
+
+	attrs := self objectAttributes.
+	attrs notNil ifTrue:[
+	    attrs size == 0 ifTrue:[
+		self objectAttributes:nil
+	    ] ifFalse:[
+		attrs removeKey:attributeKey ifAbsent:nil.
+		attrs size == 0 ifTrue:[
+		    self objectAttributes:nil
+		]
+	    ]
+	]
     ] valueUninterruptably
 
     "Created: / 22.1.1998 / 21:29:39 / av"
     "Modified: / 18.2.2000 / 11:32:19 / cg"
 ! !
 
+
 !Object methodsFor:'change & update'!
 
 broadcast:aSelectorSymbol
     "send a message with selector aSelectorSymbol to all my dependents"
 
     self dependentsDo:[:dependent |
-        dependent perform:aSelectorSymbol
+	dependent perform:aSelectorSymbol
     ]
 !
 
@@ -1706,7 +1746,7 @@
      argument anArgument to all my dependents."
 
     self dependentsDo:[:dependent |
-        dependent perform:aSelectorSymbol with:anArgument
+	dependent perform:aSelectorSymbol with:anArgument
     ]
 !
 
@@ -1715,7 +1755,7 @@
      grant the request, and return true if so"
 
     self dependentsDo:[:dependent |
-        dependent updateRequest ifFalse:[^ false].
+	dependent updateRequest ifFalse:[^ false].
     ].
     ^ true
 !
@@ -1725,7 +1765,7 @@
      grant the request, and return true if so"
 
     self dependentsDo:[:dependent |
-        (dependent updateRequest:aSymbol) ifFalse:[^ false].
+	(dependent updateRequest:aSymbol) ifFalse:[^ false].
     ].
     ^ true
 !
@@ -1753,9 +1793,9 @@
      about to send the change request."
 
     self dependentsDo:[:dependent |
-        dependent == anObject ifFalse:[
-            (dependent updateRequest:aSymbol with:aParameter from:anObject) ifFalse:[^ false].
-        ]
+	dependent == anObject ifFalse:[
+	    (dependent updateRequest:aSymbol with:aParameter from:anObject) ifFalse:[^ false].
+	]
     ].
     ^ true
 !
@@ -1767,9 +1807,9 @@
      about to send the change request."
 
     self dependentsDo:[:dependent |
-        dependent == anObject ifFalse:[
-            (dependent updateRequest) ifFalse:[^ false].
-        ]
+	dependent == anObject ifFalse:[
+	    (dependent updateRequest) ifFalse:[^ false].
+	]
     ].
     ^ true
 !
@@ -1796,7 +1836,7 @@
      and anArgument as arguments."
 
     self dependentsDo:[:dependent |
-        dependent update:aParameter with:anArgument from:self
+	dependent update:aParameter with:anArgument from:self
     ]
 !
 
@@ -1865,7 +1905,7 @@
 
     (self dependents includesIdentical:someone)
     ifFalse:[
-        ^ aBlock value.
+	^ aBlock value.
     ].
     self removeDependent:someone.
     ^ aBlock ensure:[ self addDependent:someone ]
@@ -1880,14 +1920,15 @@
     ^ self
 ! !
 
+
 !Object methodsFor:'comparing'!
 
 = anObject
     "return true, if the receiver and the arg have the same structure.
      Notice:
-        This method is partially open coded (inlined) by the compiler(s)
-        identical objects are always considered equal.
-        redefining it may not work as expected."
+	This method is partially open coded (inlined) by the compiler(s)
+	identical objects are always considered equal.
+	redefining it may not work as expected."
 
     ^ self == anObject
 !
@@ -1896,8 +1937,8 @@
     "return true, if the receiver and the arg are the same object.
      Never redefine this in any class.
      Notice:
-        This method is open coded (inlined) by the compiler(s)
-        - redefining it may not work as expected."
+	This method is open coded (inlined) by the compiler(s)
+	- redefining it may not work as expected."
 
 %{  /* NOCONTEXT */
 
@@ -1915,28 +1956,28 @@
 
     myClass := self class.
     myClass isVariable ifTrue:[
-        sz := self basicSize.
-
-        "compare the indexed variables"
-        1 to:sz do:[:i |
-            val := self basicAt:i.
-            val isLiteral ifTrue:[
-                val = (anObject basicAt:i) ifFalse:[^ false].
-            ] ifFalse:[
-                (val deepSameContentsAs:(anObject basicAt:i)) ifFalse:[^ false].
-            ]
-        ]
+	sz := self basicSize.
+
+	"compare the indexed variables"
+	1 to:sz do:[:i |
+	    val := self basicAt:i.
+	    val isLiteral ifTrue:[
+		val = (anObject basicAt:i) ifFalse:[^ false].
+	    ] ifFalse:[
+		(val deepSameContentsAs:(anObject basicAt:i)) ifFalse:[^ false].
+	    ]
+	]
     ].
 
     "compare the instance variables"
     sz := myClass instSize.
     1 to:sz do:[:i |
-        val := self instVarAt:i.
-        val isLiteral ifTrue:[
-            val = (anObject instVarAt:i) ifFalse:[^ false].
-        ] ifFalse:[
-            (val deepSameContentsAs:(anObject instVarAt:i)) ifFalse:[^ false].
-        ]
+	val := self instVarAt:i.
+	val isLiteral ifTrue:[
+	    val = (anObject instVarAt:i) ifFalse:[^ false].
+	] ifFalse:[
+	    (val deepSameContentsAs:(anObject instVarAt:i)) ifFalse:[^ false].
+	]
     ].
 
     ^ true
@@ -1975,25 +2016,25 @@
     static unsigned nextHash = 0;
 
     if (__isNonNilObject(self)) {
-        hash = __GET_HASH(self);
-        if (hash == 0) {
-            /* has no hash yet */
-
-            if (++nextHash > __MAX_HASH__) {
-                nextHash = 1;
-            }
-            hash = nextHash;
-            __SET_HASH(self, hash);
-        }
-
-        /*
-         * now, we got 11 bits for hashing;
-         * make it as large as possible; since most hashers use the returned
-         * key and take it modulo some prime number, this will allow for
-         * better distribution (i.e. bigger empty spaces) in hashed collection.
-         */
-        hash = __MAKE_HASH__(hash);
-        RETURN ( __mkSmallInteger(hash) );
+	hash = __GET_HASH(self);
+	if (hash == 0) {
+	    /* has no hash yet */
+
+	    if (++nextHash > __MAX_HASH__) {
+		nextHash = 1;
+	    }
+	    hash = nextHash;
+	    __SET_HASH(self, hash);
+	}
+
+	/*
+	 * now, we got 11 bits for hashing;
+	 * make it as large as possible; since most hashers use the returned
+	 * key and take it modulo some prime number, this will allow for
+	 * better distribution (i.e. bigger empty spaces) in hashed collection.
+	 */
+	hash = __MAKE_HASH__(hash);
+	RETURN ( __mkSmallInteger(hash) );
     }
 %}.
     ^ 0 "never reached, since redefined in UndefinedObject and SmallInteger"
@@ -2013,53 +2054,53 @@
     static unsigned INT nextClassHash = 0;
 
     if (__isNonNilObject(self)) {
-        /*
-         * my own identityHash
-         */
-        hash1 = __GET_HASH(self);
-        if (hash1 == 0) {
-            /* has no hash yet */
-
-            if (++nextHash > __MAX_HASH__) {
-                nextHash = 1;
-            }
-            hash1 = nextHash;
-            __SET_HASH(self, hash1);
-        }
-        /*
-         * my classes identityHash
-         */
-        o = __qClass(self);
-        hash2 = __GET_HASH(o);
-        if (hash2 == 0) {
-            /* has no hash yet */
-
-            if (++nextClassHash > __MAX_HASH__) {
-                nextClassHash = 1;
-            }
-            hash2 = nextClassHash;
-            __SET_HASH(o, hash2);
-        }
-
-        /*
-         * some bits of my size
-         */
-        sz = __qSize(self);
-
-        /*
-         * now, we got 11 + 11 + 8 bits for hashing;
-         * make it as large as possible; since most hashers use the returned
-         * key and take it modulo some prime number, this will allow for
-         * better distribution (i.e. bigger empty spaces) in hashed collection.
-         */
-        hash = (hash1 << 11) | hash2;           /* 22 bits */
-        hash = (hash << 8) | (sz & 0xFC);       /* 30 bits */
-
-        while ((hash & 0x20000000) == 0) {
-            hash <<= 1;
-        }
-
-        RETURN ( __mkSmallInteger(hash) );
+	/*
+	 * my own identityHash
+	 */
+	hash1 = __GET_HASH(self);
+	if (hash1 == 0) {
+	    /* has no hash yet */
+
+	    if (++nextHash > __MAX_HASH__) {
+		nextHash = 1;
+	    }
+	    hash1 = nextHash;
+	    __SET_HASH(self, hash1);
+	}
+	/*
+	 * my classes identityHash
+	 */
+	o = __qClass(self);
+	hash2 = __GET_HASH(o);
+	if (hash2 == 0) {
+	    /* has no hash yet */
+
+	    if (++nextClassHash > __MAX_HASH__) {
+		nextClassHash = 1;
+	    }
+	    hash2 = nextClassHash;
+	    __SET_HASH(o, hash2);
+	}
+
+	/*
+	 * some bits of my size
+	 */
+	sz = __qSize(self);
+
+	/*
+	 * now, we got 11 + 11 + 8 bits for hashing;
+	 * make it as large as possible; since most hashers use the returned
+	 * key and take it modulo some prime number, this will allow for
+	 * better distribution (i.e. bigger empty spaces) in hashed collection.
+	 */
+	hash = (hash1 << 11) | hash2;           /* 22 bits */
+	hash = (hash << 8) | (sz & 0xFC);       /* 30 bits */
+
+	while ((hash & 0x20000000) == 0) {
+	    hash <<= 1;
+	}
+
+	RETURN ( __mkSmallInteger(hash) );
     }
 %}.
     "never reached, since UndefinedObject and SmallInteger are not hashed upon in binary storage"
@@ -2078,13 +2119,13 @@
 
     myClass := self class.
     myClass isVariable ifTrue:[
-        sz := self basicSize.
-        anObject basicSize >= sz ifFalse:[^ false].
-
-        "compare the indexed variables"
-        1 to:sz do:[:i |
-            (self basicAt:i) == (anObject basicAt:i) ifFalse:[^ false].
-        ]
+	sz := self basicSize.
+	anObject basicSize >= sz ifFalse:[^ false].
+
+	"compare the indexed variables"
+	1 to:sz do:[:i |
+	    (self basicAt:i) == (anObject basicAt:i) ifFalse:[^ false].
+	]
     ].
 
     "compare the instance variables"
@@ -2092,7 +2133,7 @@
     anObject class instSize >= sz ifFalse:[^ false].
 
     1 to:sz do:[:i |
-        (self instVarAt:i) == (anObject instVarAt:i) ifFalse:[^ false].
+	(self instVarAt:i) == (anObject instVarAt:i) ifFalse:[^ false].
     ].
 
     ^ true
@@ -2109,9 +2150,9 @@
 ~= anObject
     "return true, if the receiver and the arg do not have the same structure.
      Notice:
-        This method is partially open coded (inlined) by the compiler(s)
-        identical objects are never considered unequal.
-        redefining it may not work as expected."
+	This method is partially open coded (inlined) by the compiler(s)
+	identical objects are never considered unequal.
+	redefining it may not work as expected."
 
     ^ (self = anObject) not
 !
@@ -2120,8 +2161,8 @@
     "return true, if the receiver and the arg are not the same object.
      Never redefine this in any class.
      Notice:
-        This method is open coded (inlined) by the compiler(s)
-        - redefining it may not work as expected."
+	This method is open coded (inlined) by the compiler(s)
+	- redefining it may not work as expected."
 
 %{  /* NOCONTEXT */
     RETURN ( (self == anObject) ? false : true );
@@ -2212,24 +2253,24 @@
     "process the named instance variables"
     sz := myClass instSize.
     1 to:sz do:[:i |
-        t := anObject instVarAt:i.
-        aSymbol ~~ #yourself ifTrue:[
-            t := t perform:aSymbol
-        ].
-        self instVarAt:i put:t
+	t := anObject instVarAt:i.
+	aSymbol ~~ #yourself ifTrue:[
+	    t := t perform:aSymbol
+	].
+	self instVarAt:i put:t
     ].
 
     myClass isVariable ifTrue:[
-        sz := self basicSize.
-
-        "process the indexed instance variables"
-        1 to:sz do:[:i |
-            t := anObject basicAt:i.
-            aSymbol ~~ #yourself ifTrue:[
-                t := t perform:aSymbol.
-            ].
-            self basicAt:i put:t.
-        ]
+	sz := self basicSize.
+
+	"process the indexed instance variables"
+	1 to:sz do:[:i |
+	    t := anObject basicAt:i.
+	    aSymbol ~~ #yourself ifTrue:[
+		t := t perform:aSymbol.
+	    ].
+	    self basicAt:i put:t.
+	]
     ].
 !
 
@@ -2245,36 +2286,36 @@
     myInfo := self class instanceVariableOffsets.
     otherInfo := aPrototype class instanceVariableOffsets.
     myInfo keysAndValuesDo:[:name :index | |varIndexAssoc|
-        varIndexAssoc := otherInfo at:name ifAbsent:[].
-        varIndexAssoc notNil ifTrue:[
-            self instVarAt:index put:(aPrototype instVarAt:(varIndexAssoc value))
-        ]
+	varIndexAssoc := otherInfo at:name ifAbsent:[].
+	varIndexAssoc notNil ifTrue:[
+	    self instVarAt:index put:(aPrototype instVarAt:(varIndexAssoc value))
+	]
     ].
     self isVariable ifTrue:[
-        1 to:(self basicSize min:aPrototype basicSize) do:[:index |
-            self basicAt:index put:(aPrototype basicAt:index)
-        ].
+	1 to:(self basicSize min:aPrototype basicSize) do:[:index |
+	    self basicAt:index put:(aPrototype basicAt:index)
+	].
     ].
 
     "
      Class withoutUpdatingChangesDo:[
-         Point subclass:#Point3D
-           instanceVariableNames:'z'
-           classVariableNames:''
-           poolDictionaries:''
-           category:'testing'.
-         (Point3D new cloneInstanceVariablesFrom:1@2) inspect.
+	 Point subclass:#Point3D
+	   instanceVariableNames:'z'
+	   classVariableNames:''
+	   poolDictionaries:''
+	   category:'testing'.
+	 (Point3D new cloneInstanceVariablesFrom:1@2) inspect.
      ]
     "
 
     "
      Class withoutUpdatingChangesDo:[
-         Point variableSubclass:#Point3D
-           instanceVariableNames:'z'
-           classVariableNames:''
-           poolDictionaries:''
-           category:'testing'.
-         ((Point3D new:2) cloneInstanceVariablesFrom:#(1 2 3)) inspect.
+	 Point variableSubclass:#Point3D
+	   instanceVariableNames:'z'
+	   classVariableNames:''
+	   poolDictionaries:''
+	   category:'testing'.
+	 ((Point3D new:2) cloneInstanceVariablesFrom:#(1 2 3)) inspect.
      ]
     "
 
@@ -2282,19 +2323,19 @@
      |someObject|
 
      Class withoutUpdatingChangesDo:[
-         Object subclass:#TestClass1
-           instanceVariableNames:'foo bar'
-           classVariableNames:''
-           poolDictionaries:''
-           category:'testing'.
-         someObject := TestClass1 new.
-         someObject instVarAt:1 put:'foo'; instVarAt:2 put:'bar'.
-         Object subclass:#TestClass2
-           instanceVariableNames:'bar foo'
-           classVariableNames:''
-           poolDictionaries:''
-           category:'testing'.
-         (TestClass2 new cloneInstanceVariablesFrom:someObject) inspect.
+	 Object subclass:#TestClass1
+	   instanceVariableNames:'foo bar'
+	   classVariableNames:''
+	   poolDictionaries:''
+	   category:'testing'.
+	 someObject := TestClass1 new.
+	 someObject instVarAt:1 put:'foo'; instVarAt:2 put:'bar'.
+	 Object subclass:#TestClass2
+	   instanceVariableNames:'bar foo'
+	   classVariableNames:''
+	   poolDictionaries:''
+	   category:'testing'.
+	 (TestClass2 new cloneInstanceVariablesFrom:someObject) inspect.
      ]
     "
 
@@ -2324,8 +2365,8 @@
 copyToLevel:level
     "a controlled deepCopy, where the number of levels can be specified.
      Notice:
-         This method DOES NOT handle cycles/self-refs and does NOT preserve object identity;
-         i.e. identical references in the source are copied multiple times into the copy."
+	 This method DOES NOT handle cycles/self-refs and does NOT preserve object identity;
+	 i.e. identical references in the source are copied multiple times into the copy."
 
     |newObject newLevel class sz "{Class: SmallInteger}" newInst|
 
@@ -2339,22 +2380,22 @@
     "process the named instance variables"
     sz := class instSize.
     1 to:sz do:[:i |
-        newInst := newObject instVarAt:i.
-        newInst notNil ifTrue:[
-            newObject instVarAt:i put:(newInst copyToLevel:newLevel).
-        ].
+	newInst := newObject instVarAt:i.
+	newInst notNil ifTrue:[
+	    newObject instVarAt:i put:(newInst copyToLevel:newLevel).
+	].
     ].
 
     class isVariable ifTrue:[
-        sz := newObject basicSize.
-
-        "process the indexed instance variables"
-        1 to:sz do:[:i |
-            newInst := newObject basicAt:i.
-            newInst notNil ifTrue:[
-                newObject basicAt:i put:(newInst copyToLevel:newLevel).
-            ].
-        ]
+	sz := newObject basicSize.
+
+	"process the indexed instance variables"
+	1 to:sz do:[:i |
+	    newInst := newObject basicAt:i.
+	    newInst notNil ifTrue:[
+		newObject basicAt:i put:(newInst copyToLevel:newLevel).
+	    ].
+	]
     ].
     ^ newObject
 
@@ -2362,24 +2403,24 @@
      |a b|
 
      a := #(
-            '1.1'
-            '1.2'
-            '1.3'
-            (
-                '1.41'
-                '1.42'
-                '1.43'
-                    (
-                        '1.441'
-                        '1.442'
-                        '1.443'
-                        ( '1.4441' '1.4442' '1.4443' )
-                        '1.445'
-                    )
-                '1.45'
-            )
-            '1.5'
-           ).
+	    '1.1'
+	    '1.2'
+	    '1.3'
+	    (
+		'1.41'
+		'1.42'
+		'1.43'
+		    (
+			'1.441'
+			'1.442'
+			'1.443'
+			( '1.4441' '1.4442' '1.4443' )
+			'1.445'
+		    )
+		'1.45'
+	    )
+	    '1.5'
+	   ).
 
       b := a copyToLevel:1.
       self assert: ( (a at:1) == (b at:1) ).
@@ -2476,11 +2517,11 @@
 
     myClass := self class.
     myClass isVariable ifTrue:[
-        basicSize := self basicSize.
-        aCopy := myClass basicNew:basicSize.
+	basicSize := self basicSize.
+	aCopy := myClass basicNew:basicSize.
     ] ifFalse:[
-        basicSize := 0.
-        aCopy := myClass basicNew
+	basicSize := 0.
+	aCopy := myClass basicNew
     ].
     aCopy setHashFrom:self.
     aDictionary at:self put:aCopy.
@@ -2490,40 +2531,40 @@
     "
     instSize := myClass instSize.
     1 to:instSize do:[:i |
-        (self skipInstvarIndexInDeepCopy:i) ifFalse:[
-            iOrig := self instVarAt:i.
-            iOrig notNil ifTrue:[
-                iCopy := aDictionary at:iOrig ifAbsent:nil.
-                iCopy isNil ifTrue:[
-                    iCopy := iOrig deepCopyUsing:aDictionary postCopySelector:postCopySelector
-                ].
-                aCopy instVarAt:i put:iCopy
-            ]
-        ]
+	(self skipInstvarIndexInDeepCopy:i) ifFalse:[
+	    iOrig := self instVarAt:i.
+	    iOrig notNil ifTrue:[
+		iCopy := aDictionary at:iOrig ifAbsent:nil.
+		iCopy isNil ifTrue:[
+		    iCopy := iOrig deepCopyUsing:aDictionary postCopySelector:postCopySelector
+		].
+		aCopy instVarAt:i put:iCopy
+	    ]
+	]
     ].
 
     "
      copy indexed instvars - if any
     "
     basicSize ~~ 0 ifTrue:[
-        myClass isBits ifTrue:[
-            "block-copy indexed instvars"
-            aCopy replaceFrom:1 to:basicSize with:self startingAt:1
-        ] ifFalse:[
-            "individual deep copy the indexed variables"
-            1 to:basicSize do:[:i |
-                iOrig := self basicAt:i.
-                iOrig notNil ifTrue:[
-                    "/ used to be dict-includesKey-ifTrue[dict-at:],
-                    "/ changed to use dict-at:ifAbsent:, to avoid double lookup in dictionary
-                    iCopy := aDictionary at:iOrig ifAbsent:nil.
-                    iCopy isNil ifTrue:[
-                        iCopy := iOrig deepCopyUsing:aDictionary postCopySelector:postCopySelector
-                    ].
-                    aCopy basicAt:i put:iCopy
-                ]
-            ]
-        ]
+	myClass isBits ifTrue:[
+	    "block-copy indexed instvars"
+	    aCopy replaceFrom:1 to:basicSize with:self startingAt:1
+	] ifFalse:[
+	    "individual deep copy the indexed variables"
+	    1 to:basicSize do:[:i |
+		iOrig := self basicAt:i.
+		iOrig notNil ifTrue:[
+		    "/ used to be dict-includesKey-ifTrue[dict-at:],
+		    "/ changed to use dict-at:ifAbsent:, to avoid double lookup in dictionary
+		    iCopy := aDictionary at:iOrig ifAbsent:nil.
+		    iCopy isNil ifTrue:[
+			iCopy := iOrig deepCopyUsing:aDictionary postCopySelector:postCopySelector
+		    ].
+		    aCopy basicAt:i put:iCopy
+		]
+	    ]
+	]
     ].
 
     aCopy perform:postCopySelector withOptionalArgument:self and:aDictionary.
@@ -2562,9 +2603,9 @@
     REGISTER unsigned h;
 
     if (__isNonNilObject(self) && __isNonNilObject(anObject)) {
-        h = __GET_HASH(anObject);
-        __SET_HASH(self, h);
-        RETURN (self);
+	h = __GET_HASH(anObject);
+	__SET_HASH(self, h);
+	RETURN (self);
     }
 %}.
     self primitiveFailed    "neither receiver not arg may be nil or SmallInteger"
@@ -2589,54 +2630,54 @@
      */
     if (((flags & ~ARRAYMASK) == 0)
      && ((flags & ARRAYMASK) != WKPOINTERARRAY)) {
-        sz = __qSize(self);
-        __PROTECT__(self);
-        __qNew(theCopy, sz);    /* OBJECT ALLOCATION */
-        __UNPROTECT__(self);
-        if (theCopy) {
-            cls = __qClass(self);
-            spc = __qSpace(theCopy);
-
-            theCopy->o_class = cls; __STORE_SPC(theCopy, cls, spc);
-
-            sz = sz - OHDR_SIZE;
-            if (sz) {
-                char *src, *dst;
-
-                src = (char *)(__InstPtr(self)->i_instvars);
-                dst = (char *)(__InstPtr(theCopy)->i_instvars);
+	sz = __qSize(self);
+	__PROTECT__(self);
+	__qNew(theCopy, sz);    /* OBJECT ALLOCATION */
+	__UNPROTECT__(self);
+	if (theCopy) {
+	    cls = __qClass(self);
+	    spc = __qSpace(theCopy);
+
+	    theCopy->o_class = cls; __STORE_SPC(theCopy, cls, spc);
+
+	    sz = sz - OHDR_SIZE;
+	    if (sz) {
+		char *src, *dst;
+
+		src = (char *)(__InstPtr(self)->i_instvars);
+		dst = (char *)(__InstPtr(theCopy)->i_instvars);
 #ifdef bcopy4
-                {
-                    /* care for odd-number of longs */
-                    int nW = sz >> 2;
-
-                    if (sz & 3) {
-                        nW++;
-                    }
-
-                    bcopy4(src, dst, nW);
-                }
+		{
+		    /* care for odd-number of longs */
+		    int nW = sz >> 2;
+
+		    if (sz & 3) {
+			nW++;
+		    }
+
+		    bcopy4(src, dst, nW);
+		}
 #else
-                bcopy(src, dst, sz);
+		bcopy(src, dst, sz);
 #endif
 
-                flags &= ARRAYMASK;
-                if (flags == POINTERARRAY) {
-                    ninsts = __BYTES2OBJS__(sz);
-                } else {
-                    ninsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
-                }
-                if (ninsts) {
-                    do {
-                        OBJ el;
-
-                        el = __InstPtr(theCopy)->i_instvars[ninsts-1];
-                        __STORE_SPC(theCopy, el, spc);
-                    } while (--ninsts);
-                }
-            }
-            RETURN (theCopy);
-        }
+		flags &= ARRAYMASK;
+		if (flags == POINTERARRAY) {
+		    ninsts = __BYTES2OBJS__(sz);
+		} else {
+		    ninsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
+		}
+		if (ninsts) {
+		    do {
+			OBJ el;
+
+			el = __InstPtr(theCopy)->i_instvars[ninsts-1];
+			__STORE_SPC(theCopy, el, spc);
+		    } while (--ninsts);
+		}
+	    }
+	    RETURN (theCopy);
+	}
     }
 %}.
     "/ fallBack for special objects & memoryAllocation failure case
@@ -2656,9 +2697,9 @@
     |myClass aCopy|
 
     (myClass := self class) isVariable ifTrue:[
-        aCopy := myClass basicNew:(self basicSize).
+	aCopy := myClass basicNew:(self basicSize).
     ] ifFalse:[
-        aCopy := myClass basicNew
+	aCopy := myClass basicNew
     ].
 
     "copy the instance variables"
@@ -2691,9 +2732,9 @@
     |myClass aCopy|
 
     (myClass := self class) isVariable ifTrue:[
-        aCopy := myClass basicNew:(self basicSize).
+	aCopy := myClass basicNew:(self basicSize).
     ] ifFalse:[
-        aCopy := myClass basicNew
+	aCopy := myClass basicNew
     ].
 
     "copy the instance variables"
@@ -2715,11 +2756,11 @@
 
     "/ could still be a block or false.
     (aBooleanOrBlock value) ifFalse:[
-        AssertionFailedError
-            raiseRequestWith:self
-            errorString:('Assertion failed in ',
-                         thisContext sender printString,
-                         '[', thisContext sender lineNumber printString,']')
+	AssertionFailedError
+	    raiseRequestWith:self
+	    errorString:('Assertion failed in ',
+			 thisContext sender printString,
+			 '[', thisContext sender lineNumber printString,']')
     ].
 
     "
@@ -2740,9 +2781,9 @@
     (Smalltalk at:#IgnoreAssertion ifAbsent:false) == true ifTrue:[^ self].
 
     (aBooleanOrBlock value) ifFalse:[
-        AssertionFailedError
-            raiseRequestWith:self
-            errorString:(messageIfFailing, ' {',thisContext sender "methodHome" printString,' }')
+	AssertionFailedError
+	    raiseRequestWith:self
+	    errorString:(messageIfFailing, ' {',thisContext sender "methodHome" printString,' }')
     ].
 
     "
@@ -2759,12 +2800,12 @@
      this method should NOT be redefined in subclasses."
 
     Inspector isNil ifTrue:[
-        "
-         for systems without GUI
-        "
-        self warn:'No Inspector defined (Inspector is nil).'
+	"
+	 for systems without GUI
+	"
+	self warn:'No Inspector defined (Inspector is nil).'
     ] ifFalse:[
-        Inspector openOn:self
+	Inspector openOn:self
     ]
 
     "Modified: 18.5.1996 / 15:43:25 / cg"
@@ -2784,9 +2825,9 @@
 
     "/ dont send #breakPoint:info: here - ask cg why.
     (self isBreakPointEnabled:someKey) ifTrue:[
-        ^ HaltSignal
-            raiseRequestWith:someKey
-            errorString:('Breakpoint encountered: %1' bindWith:someKey)
+	^ HaltSignal
+	    raiseRequestWith:someKey
+	    errorString:('Breakpoint encountered: %1' bindWith:someKey)
     ].
 
     "
@@ -2814,9 +2855,9 @@
     <resource: #skipInDebuggersWalkBack>
 
     (self isBreakPointEnabled:someKey) ifTrue:[
-        ^ HaltSignal
-            raiseRequestWith:someKey
-            errorString:(infoString bindWith:someKey)
+	^ HaltSignal
+	    raiseRequestWith:someKey
+	    errorString:(infoString bindWith:someKey)
     ].
 !
 
@@ -2846,7 +2887,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     (self isBreakPointEnabled:someKey) ifTrue:[
-        aBlock value
+	aBlock value
     ].
 
     "
@@ -2882,10 +2923,10 @@
     "{ Pragma: +optSpace }"
 
     EnabledBreakPoints notNil ifTrue:[
-        EnabledBreakPoints remove:someKey ifAbsent:[].
-        EnabledBreakPoints isEmpty ifTrue:[
-            EnabledBreakPoints := nil
-        ].
+	EnabledBreakPoints remove:someKey ifAbsent:[].
+	EnabledBreakPoints isEmpty ifTrue:[
+	    EnabledBreakPoints := nil
+	].
     ].
 
     "
@@ -2904,7 +2945,7 @@
     "{ Pragma: +optSpace }"
 
     EnabledBreakPoints isNil ifTrue:[
-        EnabledBreakPoints := Set new.
+	EnabledBreakPoints := Set new.
     ].
     EnabledBreakPoints add:someKey.
 
@@ -2956,7 +2997,7 @@
 "/    something = OperatingSystem getLoginName ifTrue:[^ true].
 "/    something = 'testThis' ifTrue:[^ true].
     EncounteredBreakPoints notNil ifTrue:[
-        EncounteredBreakPoints add:someKey
+	EncounteredBreakPoints add:someKey
     ].
 
     ^ (EnabledBreakPoints notNil and:[ EnabledBreakPoints includes:someKey ])
@@ -2987,18 +3028,18 @@
     "for compatibility & debugging support:
      check if the receiver isKindOf:aClass and raise an error if not.
      Notice:
-        it is VERY questionable, if it makes sense to add manual
-        type checks to a dynamically typed language like smalltalk.
-        It will, at least, slow down performance,
-        make your code less reusable and clutter your code with stupid sends
-        of this selector. Also, read the comment in isKindOf:, regarding the
-        use of isXXX check methods.
+	it is VERY questionable, if it makes sense to add manual
+	type checks to a dynamically typed language like smalltalk.
+	It will, at least, slow down performance,
+	make your code less reusable and clutter your code with stupid sends
+	of this selector. Also, read the comment in isKindOf:, regarding the
+	use of isXXX check methods.
      You see: The author does not like this at all ..."
 
     <resource: #skipInDebuggersWalkBack>
 
     (self isKindOf:aClass) ifFalse:[
-        self error:'argument is not of expected type'
+	self error:'argument is not of expected type'
     ]
 !
 
@@ -3046,7 +3087,7 @@
     ('         called from ' , sender sender printString) infoPrintCR.
     ].
     message notNil ifTrue:[
-        '------>  ' infoPrint. message infoPrintCR
+	'------>  ' infoPrint. message infoPrintCR
     ]
 
     "
@@ -3091,8 +3132,8 @@
     |spec sender|
 
     Smalltalk isSmalltalkDevelopmentSystem ifFalse:[
-        "ignore in production systems"
-        ^ self.
+	"ignore in production systems"
+	^ self.
     ].
 
     spec := aContext methodPrintString.
@@ -3101,14 +3142,14 @@
     ('         And may not be present in future ST/X versions.') infoPrintCR.
     ('         called from ' , sender printString) infoPrintCR.
     (sender selector startsWith:'perform:') ifTrue:[
-        sender := sender sender.
-        (sender selector startsWith:'perform:') ifTrue:[
-            sender := sender sender.
-        ].
-        ('         called from ' , sender printString) infoPrintCR.
+	sender := sender sender.
+	(sender selector startsWith:'perform:') ifTrue:[
+	    sender := sender sender.
+	].
+	('         called from ' , sender printString) infoPrintCR.
     ].
     message notNil ifTrue:[
-        '------>  ' infoPrint. message infoPrintCR
+	'------>  ' infoPrint. message infoPrintCR
     ]
 
     "
@@ -3128,9 +3169,9 @@
     "
      example:
 
-        ...
-        self todo.
-        ...
+	...
+	self todo.
+	...
     "
 !
 
@@ -3145,11 +3186,11 @@
     "
      example:
 
-        ...
-        self todo:[
-            code which needs more work ...
-        ].
-        ...
+	...
+	self todo:[
+	    code which needs more work ...
+	].
+	...
     "
 
     "Created: / 25-05-2007 / 21:34:39 / cg"
@@ -3170,35 +3211,35 @@
 
     wasBlocked := OperatingSystem blockInterrupts.
     [
-        |deps dep|
-
-        deps := self dependents.
-
-        "/ to save a fair amount of memory in case of
-        "/ many dependencies, we store a single dependent in
-        "/ a WeakArray, and switch to a WeakSet if more dependents are
-        "/ added.
-
-        (deps isNil or:[deps size == 0]) ifTrue:[
-            self dependents:(WeakArray with:anObject)
-        ] ifFalse:[
-            deps class == WeakArray ifTrue:[
-                dep := deps at:1.
-                dep ~~ anObject ifTrue:[
-                    (dep isNil or:[dep == 0]) ifTrue:[
-                        deps at:1 put:anObject
-                    ] ifFalse:[
-                        self dependents:(WeakIdentitySet with:dep with:anObject)
-                    ]
-                ]
-            ] ifFalse:[
-                deps add:anObject
-            ]
-        ]
+	|deps dep|
+
+	deps := self dependents.
+
+	"/ to save a fair amount of memory in case of
+	"/ many dependencies, we store a single dependent in
+	"/ a WeakArray, and switch to a WeakSet if more dependents are
+	"/ added.
+
+	(deps isNil or:[deps size == 0]) ifTrue:[
+	    self dependents:(WeakArray with:anObject)
+	] ifFalse:[
+	    deps class == WeakArray ifTrue:[
+		dep := deps at:1.
+		dep ~~ anObject ifTrue:[
+		    (dep isNil or:[dep == 0]) ifTrue:[
+			deps at:1 put:anObject
+		    ] ifFalse:[
+			self dependents:(WeakIdentitySet with:dep with:anObject)
+		    ]
+		]
+	    ] ifFalse:[
+		deps add:anObject
+	    ]
+	]
     ] ensure:[
-        wasBlocked ifFalse:[
-            OperatingSystem unblockInterrupts
-        ]
+	wasBlocked ifFalse:[
+	    OperatingSystem unblockInterrupts
+	]
     ]
 
     "Modified: / 27.10.1997 / 19:35:52 / cg"
@@ -3220,10 +3261,10 @@
 
     self breakDependents.
     1 to:self class instSize do:[:idx |
-        (self instVarAt:idx) breakDependentsRecursively.
+	(self instVarAt:idx) breakDependentsRecursively.
     ].
     1 to:self basicSize do:[:idx |
-        (self basicAt:idx) breakDependentsRecursively.
+	(self basicAt:idx) breakDependentsRecursively.
     ]
 !
 
@@ -3238,7 +3279,7 @@
     |deps|
 
     (deps := Dependencies at:self ifAbsent:nil) isNil ifTrue:[
-        ^ #().
+	^ #().
     ].
     ^ deps
 
@@ -3257,24 +3298,24 @@
     "/ faster execution (and to avoid creation of garbage blocks).
 
     (OperatingSystem blockInterrupts) ifTrue:[
-        "/ the common case - already blocked
-
-        (aCollection isNil or:[aCollection isEmpty]) ifTrue:[
-            Dependencies removeKey:self ifAbsent:nil
-        ] ifFalse:[
-            Dependencies at:self put:aCollection
-        ].
-        ^ self
+	"/ the common case - already blocked
+
+	(aCollection isNil or:[aCollection isEmpty]) ifTrue:[
+	    Dependencies removeKey:self ifAbsent:nil
+	] ifFalse:[
+	    Dependencies at:self put:aCollection
+	].
+	^ self
     ].
 
     [
-        (aCollection isNil or:[aCollection isEmpty]) ifTrue:[
-            Dependencies removeKey:self ifAbsent:nil
-        ] ifFalse:[
-            Dependencies at:self put:aCollection
-        ].
+	(aCollection isNil or:[aCollection isEmpty]) ifTrue:[
+	    Dependencies removeKey:self ifAbsent:nil
+	] ifFalse:[
+	    Dependencies at:self put:aCollection
+	].
     ] ensure:[
-        OperatingSystem unblockInterrupts
+	OperatingSystem unblockInterrupts
     ]
 
     "Modified: 30.1.1997 / 21:22:10 / cg"
@@ -3287,15 +3328,15 @@
 
     deps := self dependents.
     deps size ~~ 0 ifTrue:[
-        deps do:[:d |
-                    (d notNil and:[d ~~ 0]) ifTrue:[
-                        aBlock value:d
-                    ]
-                ]
+	deps do:[:d |
+		    (d notNil and:[d ~~ 0]) ifTrue:[
+			aBlock value:d
+		    ]
+		]
     ].
     nwDeps := self nonWeakDependents.
     (nwDeps ~~ deps and:[nwDeps size ~~ 0]) ifTrue:[
-        nwDeps do:aBlock
+	nwDeps do:aBlock
     ].
 
     "Modified: / 30.1.1998 / 14:03:40 / cg"
@@ -3328,43 +3369,43 @@
 
     wasBlocked := OperatingSystem blockInterrupts.
     [
-        |deps n d|
-
-        deps := self dependents.
-        deps size ~~ 0 ifTrue:[
-
-            "/ to save a fair amount of memory in case of
-            "/ many dependencies, we store a single dependent in
-            "/ a WeakArray, and switch to a WeakSet if more dependents are
-            "/ added. Here we have to do the inverse ...
-
-            ((deps class == WeakArray) or:[deps class == Array]) ifTrue:[
-                ((d := deps at:1) == anObject
-                or:[d isNil
-                or:[d == 0]]) ifTrue:[
-                    self dependents:nil
-                ]
-            ] ifFalse:[
-                deps remove:anObject ifAbsent:[].
-                (n := deps size) == 0 ifTrue:[
-                    self dependents:nil
-                ] ifFalse:[
-                    n == 1 ifTrue:[
-                        d := deps firstIfEmpty:nil.
-                        d notNil ifTrue:[
-                            deps := (deps isWeakCollection ifTrue:[WeakArray] ifFalse:[Array]) with:d
-                        ] ifFalse:[
-                            deps := nil
-                        ].
-                        self dependents:deps.
-                    ]
-                ]
-            ]
-        ]
+	|deps n d|
+
+	deps := self dependents.
+	deps size ~~ 0 ifTrue:[
+
+	    "/ to save a fair amount of memory in case of
+	    "/ many dependencies, we store a single dependent in
+	    "/ a WeakArray, and switch to a WeakSet if more dependents are
+	    "/ added. Here we have to do the inverse ...
+
+	    ((deps class == WeakArray) or:[deps class == Array]) ifTrue:[
+		((d := deps at:1) == anObject
+		or:[d isNil
+		or:[d == 0]]) ifTrue:[
+		    self dependents:nil
+		]
+	    ] ifFalse:[
+		deps remove:anObject ifAbsent:[].
+		(n := deps size) == 0 ifTrue:[
+		    self dependents:nil
+		] ifFalse:[
+		    n == 1 ifTrue:[
+			d := deps firstIfEmpty:nil.
+			d notNil ifTrue:[
+			    deps := (deps isWeakCollection ifTrue:[WeakArray] ifFalse:[Array]) with:d
+			] ifFalse:[
+			    deps := nil
+			].
+			self dependents:deps.
+		    ]
+		]
+	    ]
+	]
     ] ensure:[
-        wasBlocked ifFalse:[
-            OperatingSystem unblockInterrupts
-        ]
+	wasBlocked ifFalse:[
+	    OperatingSystem unblockInterrupts
+	]
     ]
 
     "Modified: / 05-07-2011 / 22:49:31 / cg"
@@ -3387,37 +3428,37 @@
 
     wasBlocked := OperatingSystem blockInterrupts.
     [
-        |deps dep|
-
-        deps := self nonWeakDependents.
-
-        "/ to save a fair amount of memory in case of
-        "/ many dependencies, we store a single dependent in
-        "/ an Array, and switch to a Set if more dependents are
-        "/ added.
-
-        deps size == 0 ifTrue:[
-            anObject notNil ifTrue:[
-                self nonWeakDependents:(Array with:anObject).
-            ] ifFalse:[
-                "adding nil causes problems when adding the next one
-                 (see below: trying to add nil to IdentitySet)"
+	|deps dep|
+
+	deps := self nonWeakDependents.
+
+	"/ to save a fair amount of memory in case of
+	"/ many dependencies, we store a single dependent in
+	"/ an Array, and switch to a Set if more dependents are
+	"/ added.
+
+	deps size == 0 ifTrue:[
+	    anObject notNil ifTrue:[
+		self nonWeakDependents:(Array with:anObject).
+	    ] ifFalse:[
+		"adding nil causes problems when adding the next one
+		 (see below: trying to add nil to IdentitySet)"
 "/                self halt:'try to add nil to list of dependents'.
-            ].
-        ] ifFalse:[
-            deps class == Array ifTrue:[
-                dep := deps at:1.
-                dep ~~ anObject ifTrue:[
-                    self nonWeakDependents:(IdentitySet with:dep with:anObject)
-                ]
-            ] ifFalse:[
-                deps add:anObject
-            ]
-        ]
+	    ].
+	] ifFalse:[
+	    deps class == Array ifTrue:[
+		dep := deps at:1.
+		dep ~~ anObject ifTrue:[
+		    self nonWeakDependents:(IdentitySet with:dep with:anObject)
+		]
+	    ] ifFalse:[
+		deps add:anObject
+	    ]
+	]
     ] ensure:[
-        wasBlocked ifFalse:[
-            OperatingSystem unblockInterrupts
-        ]
+	wasBlocked ifFalse:[
+	    OperatingSystem unblockInterrupts
+	]
     ]
 
     "Created: / 19.4.1996 / 10:54:08 / cg"
@@ -3440,11 +3481,11 @@
      This is a private helper for directed dependencies."
 
     [
-        (aCollection isNil or:[aCollection isEmpty]) ifTrue:[
-            NonWeakDependencies removeKey:self ifAbsent:nil
-        ] ifFalse:[
-            NonWeakDependencies at:self put:aCollection
-        ]
+	(aCollection isNil or:[aCollection isEmpty]) ifTrue:[
+	    NonWeakDependencies removeKey:self ifAbsent:nil
+	] ifFalse:[
+	    NonWeakDependencies at:self put:aCollection
+	]
     ] valueUninterruptably
 
     "Created: 19.4.1996 / 11:07:47 / cg"
@@ -3463,35 +3504,36 @@
 
     wasBlocked := OperatingSystem blockInterrupts.
     [
-        |deps n|
-
-        deps := self nonWeakDependents.
-        deps size ~~ 0 ifTrue:[
-            deps class == Array ifTrue:[
-                (deps at:1) == anObject ifTrue:[
-                    self nonWeakDependents:nil
-                ]
-            ] ifFalse:[
-                deps remove:anObject ifAbsent:[].
-                (n := deps size) == 0 ifTrue:[
-                    self nonWeakDependents:nil
-                ] ifFalse:[
-                    n == 1 ifTrue:[
-                        self nonWeakDependents:(Array with:(deps first))
-                    ]
-                ]
-            ]
-        ]
+	|deps n|
+
+	deps := self nonWeakDependents.
+	deps size ~~ 0 ifTrue:[
+	    deps class == Array ifTrue:[
+		(deps at:1) == anObject ifTrue:[
+		    self nonWeakDependents:nil
+		]
+	    ] ifFalse:[
+		deps remove:anObject ifAbsent:[].
+		(n := deps size) == 0 ifTrue:[
+		    self nonWeakDependents:nil
+		] ifFalse:[
+		    n == 1 ifTrue:[
+			self nonWeakDependents:(Array with:(deps first))
+		    ]
+		]
+	    ]
+	]
     ] ensure:[
-        wasBlocked ifFalse:[
-            OperatingSystem unblockInterrupts
-        ]
+	wasBlocked ifFalse:[
+	    OperatingSystem unblockInterrupts
+	]
     ]
 
     "Created: / 19.4.1996 / 11:44:44 / cg"
     "Modified: / 30.1.1998 / 14:04:01 / cg"
 ! !
 
+
 !Object methodsFor:'dependents-st/v event simulation'!
 
 removeActionsForEvent:eventName
@@ -3536,8 +3578,8 @@
     "/ what a kludge - Dolphin and Squeak mean: printOn: a stream;
     "/ ST/X (and some old ST80's) mean: draw-yourself on a GC.
     aGCOrStream isStream ifTrue:[
-        self printOn:aGCOrStream.
-        ^ self
+	self printOn:aGCOrStream.
+	^ self
     ].
     ^ self displayOn:aGCOrStream x:0 y:0.
 
@@ -3573,9 +3615,9 @@
     s := self displayString.
     yBaseline := y "+ aGc font ascent".
     opaque ifTrue:[
-        aGc displayOpaqueString:s x:x y:yBaseline.
+	aGc displayOpaqueString:s x:x y:yBaseline.
     ] ifFalse:[
-        aGc displayString:s x:x y:yBaseline.
+	aGc displayString:s x:x y:yBaseline.
     ].
 
     "Modified: 29.5.1996 / 16:29:38 / cg"
@@ -3597,7 +3639,7 @@
      but sometimes redefined for a better look.
 
      Note: the base method (used by the inspector) is #displayOn:.
-           So you should implement #displayOn: instead of #displayString in subclasses."
+	   So you should implement #displayOn: instead of #displayString in subclasses."
 
     |s|
 
@@ -3759,22 +3801,22 @@
     stop := aSpecArray size.
 
     2 to:stop by:2 do:[:i|
-        sel := aSpecArray at:i.
-        litVal := aSpecArray at:i + 1.
-
-        (self respondsTo:sel) ifTrue:[
-            val := litVal decodeAsLiteralArray.
-            self perform:sel with:val
-        ] ifFalse:[
-            Transcript show:self class name; show:': unhandled literalArrayEncoding attribute: '.
-            Transcript showCR:sel.
-
-            "/ thats a debug halt,
-            "/ it should probably be removed (to simply ignore unhandled attributes)...
-            "/ for now, it is left in, in order to easily find incompatibilities between
-            "/ VW and ST/X.
-            self breakPoint:#cg.
-        ]
+	sel := aSpecArray at:i.
+	litVal := aSpecArray at:i + 1.
+
+	(self respondsTo:sel) ifTrue:[
+	    val := litVal decodeAsLiteralArray.
+	    self perform:sel with:val
+	] ifFalse:[
+	    Transcript show:self class name; show:': unhandled literalArrayEncoding attribute: '.
+	    Transcript showCR:sel.
+
+	    "/ thats a debug halt,
+	    "/ it should probably be removed (to simply ignore unhandled attributes)...
+	    "/ for now, it is left in, in order to easily find incompatibilities between
+	    "/ VW and ST/X.
+	    self breakPoint:#cg.
+	]
     ]
 !
 
@@ -3787,7 +3829,7 @@
     |names encoding cls skipped slots|
 
     self isLiteral ifTrue:[
-        ^ self
+	^ self
     ].
 
     slots    := self literalArrayEncodingSlotOrder.
@@ -3798,22 +3840,22 @@
     encoding add:cls name.
 
     slots do:[:instSlot |
-        |value nm|
-
-        nm := names at:instSlot.
-        (skipped includes:nm) ifFalse:[
-            (value := self instVarAt:instSlot) notNil ifTrue:[
-                encoding add:(nm , ':') asSymbol.
-                encoding add:value literalArrayEncoding
-            ]
-        ]
+	|value nm|
+
+	nm := names at:instSlot.
+	(skipped includes:nm) ifFalse:[
+	    (value := self instVarAt:instSlot) notNil ifTrue:[
+		encoding add:(nm , ':') asSymbol.
+		encoding add:value literalArrayEncoding
+	    ]
+	]
     ].
     ^ encoding asArray
 
     "
-        (1 -> 2) literalArrayEncoding
-        DebugView menuSpec decodeAsLiteralArray literalArrayEncoding  =
-           DebugView menuSpec
+	(1 -> 2) literalArrayEncoding
+	DebugView menuSpec decodeAsLiteralArray literalArrayEncoding  =
+	   DebugView menuSpec
     "
 !
 
@@ -3842,7 +3884,7 @@
 ambiguousMessage:aMessage
     "this message is sent by the system in case that it
      is not clear which method to execute in response to
-     aMessage. 
+     aMessage.
      Such situation may occur when a current selector namespace
      imports two namespaces and both define a method with the
      requested selector."
@@ -3870,34 +3912,34 @@
     (Processor isNil
     or:[Processor activeProcessIsSystemProcess
     or:[Smalltalk isInitialized not]]) ifTrue:[
-        ^ MiniDebugger
+	^ MiniDebugger
     ].
     (Screen isNil or:[Screen default isNil or:[Screen default isOpen not]]) ifTrue:[
-        Debugger isNil ifTrue:[^ nil].
-        ^ MiniDebugger
+	Debugger isNil ifTrue:[^ nil].
+	^ MiniDebugger
     ].
 
     context := thisContext.
     context := context findNextContextWithSelector:aSelector or:nil or:nil.
     [context notNil] whileTrue:[
-        ((context receiver class == Debugger)
-         and:[context selector == aSelector]) ifTrue:[
-            "we are already in some Debugger"
-            (Debugger == MiniDebugger) ifTrue:[
-                "we are already in the MiniDebugger"
-                ErrorRecursion ifFalse:[
-                    Smalltalk fatalAbort:'recursive error ...'
-                ]
-            ].
-            MiniDebugger isNil ifTrue:[
-                Smalltalk fatalAbort:'no debugger'
-            ].
-
-            "ok, an error occured while in the graphical debugger;
-             lets try MiniDebugger"
-            ^ MiniDebugger
-        ].
-        context := context findNextContextWithSelector:aSelector or:nil or:nil.
+	((context receiver class == Debugger)
+	 and:[context selector == aSelector]) ifTrue:[
+	    "we are already in some Debugger"
+	    (Debugger == MiniDebugger) ifTrue:[
+		"we are already in the MiniDebugger"
+		ErrorRecursion ifFalse:[
+		    Smalltalk fatalAbort:'recursive error ...'
+		]
+	    ].
+	    MiniDebugger isNil ifTrue:[
+		Smalltalk fatalAbort:'no debugger'
+	    ].
+
+	    "ok, an error occured while in the graphical debugger;
+	     lets try MiniDebugger"
+	    ^ MiniDebugger
+	].
+	context := context findNextContextWithSelector:aSelector or:nil or:nil.
     ].
     "not within Debugger - no problem"
     ^ Debugger
@@ -3914,8 +3956,8 @@
     <resource: #skipInDebuggersWalkBack>
 
     ^ VMInternalError
-          raiseWith:someReceiver
-          errorString:('bad class in send of #' , aMessage selector)
+	  raiseWith:someReceiver
+	  errorString:('bad class in send of #' , aMessage selector)
 
     "Modified: 23.1.1997 / 00:05:39 / cg"
 !
@@ -4052,7 +4094,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     mayProceed ifTrue:[
-        ^ ProceedableError raiseRequestWith:#error: errorString:aString
+	^ ProceedableError raiseRequestWith:#error: errorString:aString
     ].
 
     Error raiseWith:#error: errorString:aString
@@ -4181,7 +4223,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     index isInteger ifFalse:[
-        ^ self indexNotInteger:index
+	^ self indexNotInteger:index
     ].
     ^ self subscriptBoundsError:index
 !
@@ -4195,10 +4237,10 @@
 
 "/    ^ self error:'bad assign of ' , self printString ,
 "/                  ' (' , self class name , ') to integer-typed variable'
-    ^ InvalidTypeError 
-        raiseRequestErrorString:(
-            'bad assign of ' , self printString ,
-                  ' (' , self class name , ') to integer-typed variable')
+    ^ InvalidTypeError
+	raiseRequestErrorString:(
+	    'bad assign of ' , self printString ,
+		  ' (' , self class name , ') to integer-typed variable')
 
     "Modified: / 02-11-2012 / 10:25:36 / cg"
 !
@@ -4211,8 +4253,8 @@
     <resource: #skipInDebuggersWalkBack>
 
     "/ self error:'not an executable code object'
-    ^ ExecutionError 
-        raiseRequestErrorString:'not an executable code object'
+    ^ ExecutionError
+	raiseRequestErrorString:'not an executable code object'
 
     "Created: / 01-08-1997 / 00:16:44 / cg"
 !
@@ -4238,7 +4280,7 @@
 
     "/ ^ self error:'argument must be a Rectangle'
     ^ InvalidTypeError
-        raiseRequestErrorString:'argument must be a Rectangle'
+	raiseRequestErrorString:'argument must be a Rectangle'
 
     "Modified: / 02-11-2012 / 10:24:53 / cg"
 !
@@ -4252,7 +4294,7 @@
 
     "/ ^ self error:'argument must be a String'
     ^ InvalidTypeError
-        raiseRequestErrorString:'argument must be a String'
+	raiseRequestErrorString:'argument must be a String'
 
     "Modified: / 02-11-2012 / 10:24:35 / cg"
 !
@@ -4267,7 +4309,11 @@
     <resource: #skipInDebuggersWalkBack>
 
     ^ SubscriptOutOfBoundsError
-        raiseRequestErrorString:'receiver has no indexed variables'
+	raiseRequestErrorString:'receiver has no indexed variables'
+
+    "
+     1234 at:4
+    "
 
     "Modified: 26.7.1996 / 16:43:13 / cg"
 !
@@ -4281,8 +4327,8 @@
     <resource: #skipInDebuggersWalkBack>
 
     "/ ^ self error:'method/functionality is not yet implemented'
-    ^ MethodNotAppropriateError 
-        raiseRequestErrorString:'method/functionality is not yet implemented'
+    ^ MethodNotAppropriateError
+	raiseRequestErrorString:'method/functionality is not yet implemented'
 
     "Modified: / 02-11-2012 / 10:24:12 / cg"
 !
@@ -4302,95 +4348,95 @@
      ignore will raise an AbortOperationRequest.
     "
     Debugger isNil ifTrue:[
-        msgString := 'Error: ' , msgString.
-
-        thisContext isRecursive ifTrue:[
-            msgString errorPrintCR.
-            Smalltalk fatalAbort:'recursive unhandled exception'
-        ].
-
-        Smalltalk isStandAloneApp ifTrue:[
-            (ex signal == NoHandlerError and:[HaltInterrupt handles:ex unhandledException]) ifTrue:[
-                "/ 'Halt ignored' infoPrintCR.
-                ^ nil
-            ].
-            "don't output the message, if the exception is a UserInterrupt (CTRL-C)"
-            (ex signal == NoHandlerError
-             and:[ex unhandledException signal == UserInterrupt]) ifTrue:[
-                ex description errorPrintCR.
-                OperatingSystem exit:130.
-            ].
-        ].
-
-        (Dialog notNil and:[Screen default notNil]) ifTrue:[
+	msgString := 'Error: ' , msgString.
+
+	thisContext isRecursive ifTrue:[
+	    msgString errorPrintCR.
+	    Smalltalk fatalAbort:'recursive unhandled exception'
+	].
+
+	Smalltalk isStandAloneApp ifTrue:[
+	    (ex signal == NoHandlerError and:[HaltInterrupt handles:ex unhandledException]) ifTrue:[
+		"/ 'Halt ignored' infoPrintCR.
+		^ nil
+	    ].
+	    "don't output the message, if the exception is a UserInterrupt (CTRL-C)"
+	    (ex signal == NoHandlerError
+	     and:[ex unhandledException signal == UserInterrupt]) ifTrue:[
+		ex description errorPrintCR.
+		OperatingSystem exit:130.
+	    ].
+	].
+
+	(Dialog notNil and:[Screen default notNil]) ifTrue:[
 false "oldCode" ifTrue:[
-            AbortOperationRequest isHandled ifTrue:[
-                answer := OptionBox
-                        request:msgString
-                        label:msgString
-                        buttonLabels:#('Exit' 'Terminate Thread' 'Ignore' 'Abort' )
-                        values:#(exit terminate ignore abort)
-                        default:#abort.
-            ] ifFalse:[
-                answer := OptionBox
-                        request:msgString
-                        label:msgString
-                        buttonLabels:#('Exit' 'Terminate Thread' 'Ignore' )
-                        values:#(exit terminate ignore )
-                        default:#terminate.
-            ].
-            answer isNil ifTrue:[ answer := #ignore].
-
-            answer == #abort ifTrue:[
-                ^ AbortOperationRequest raiseRequest
-            ].
-            answer == #ignore ifTrue:[
-                ^ nil
-            ].
-            answer == #terminate ifTrue:[
-                Processor activeProcess isSystemProcess ifTrue:[
-                    (Dialog confirm:'Are you sure (this might finish the application)') ifFalse:[
-                        ^ nil
-                    ].
-                ].
-                ^ Processor activeProcess terminate.
-            ].
-            "asking second time here to prevent the user from accidently closing his app"
-            answer == #exit ifTrue:[
-                answer := OptionBox
-                        request:'Do you really wish to exit this application (all changes will be lost)?'
-                        label:msgString
-                        buttonLabels:#('Yes' 'No' )
-                        values:#(exit abort)
-                        default:#abort.
-            ].
-            answer == #abort ifTrue:[
-                ^ AbortOperationRequest raiseRequest
-            ].
-
-            (Dialog confirm:'Are you sure you want to finish the application ?') ifFalse:[
-                ^ nil
-            ].
+	    AbortOperationRequest isHandled ifTrue:[
+		answer := OptionBox
+			request:msgString
+			label:msgString
+			buttonLabels:#('Exit' 'Terminate Thread' 'Ignore' 'Abort' )
+			values:#(exit terminate ignore abort)
+			default:#abort.
+	    ] ifFalse:[
+		answer := OptionBox
+			request:msgString
+			label:msgString
+			buttonLabels:#('Exit' 'Terminate Thread' 'Ignore' )
+			values:#(exit terminate ignore )
+			default:#terminate.
+	    ].
+	    answer isNil ifTrue:[ answer := #ignore].
+
+	    answer == #abort ifTrue:[
+		^ AbortOperationRequest raiseRequest
+	    ].
+	    answer == #ignore ifTrue:[
+		^ nil
+	    ].
+	    answer == #terminate ifTrue:[
+		Processor activeProcess isSystemProcess ifTrue:[
+		    (Dialog confirm:'Are you sure (this might finish the application)') ifFalse:[
+			^ nil
+		    ].
+		].
+		^ Processor activeProcess terminate.
+	    ].
+	    "asking second time here to prevent the user from accidently closing his app"
+	    answer == #exit ifTrue:[
+		answer := OptionBox
+			request:'Do you really wish to exit this application (all changes will be lost)?'
+			label:msgString
+			buttonLabels:#('Yes' 'No' )
+			values:#(exit abort)
+			default:#abort.
+	    ].
+	    answer == #abort ifTrue:[
+		^ AbortOperationRequest raiseRequest
+	    ].
+
+	    (Dialog confirm:'Are you sure you want to finish the application ?') ifFalse:[
+		^ nil
+	    ].
 ] ifFalse:[
-            self
-                errorNotify:msgString
-                from:ex suspendedContext
-                allowDebug:false.
-
-            "/ arrive here if proceeded...
-            ^ nil
+	    self
+		errorNotify:msgString
+		from:ex suspendedContext
+		allowDebug:false.
+
+	    "/ arrive here if proceeded...
+	    ^ nil
 ].
 
-        ].
-
-        "don't output the message, if the exception is a UserInterrupt (CTRL-C)"
-        (ex signal == NoHandlerError
-         and:[ex unhandledException signal == UserInterrupt]) ifTrue:[
-            OperatingSystem exit:130.
-        ].
-        msgString errorPrintCR.
-        thisContext fullPrintAll.
-        OperatingSystem exit:1
+	].
+
+	"don't output the message, if the exception is a UserInterrupt (CTRL-C)"
+	(ex signal == NoHandlerError
+	 and:[ex unhandledException signal == UserInterrupt]) ifTrue:[
+	    OperatingSystem exit:130.
+	].
+	msgString errorPrintCR.
+	thisContext fullPrintAll.
+	OperatingSystem exit:1
     ].
 
     "
@@ -4398,13 +4444,13 @@
     "
     debugger := self appropriateDebugger:(thisContext selector).
     debugger isNil ifTrue:[
-        ^ AbortOperationRequest raiseRequest
+	^ AbortOperationRequest raiseRequest
     ].
 
     ^ debugger
-        enter:ex returnableSuspendedContext
-        withMessage:ex descriptionForDebugger
-        mayProceed:(ex mayProceed).
+	enter:ex returnableSuspendedContext
+	withMessage:ex descriptionForDebugger
+	mayProceed:(ex mayProceed).
 
     "Modified: / 05-12-2011 / 11:53:10 / cg"
 !
@@ -4413,7 +4459,8 @@
     "{ Pragma: +optSpace }"
 
     "report an error that some primitive code failed.
-     The error is reported by raising the PrimitiveFailure exception."
+     The error is reported by raising the PrimitiveFailure exception.
+     Sorry for the code duplication: it avoids the extra frame in the debugger."
 
     <resource: #skipInDebuggersWalkBack>
 
@@ -4422,15 +4469,15 @@
     sender := thisContext sender.
 
     ^ PrimitiveFailure raiseRequestWith:(Message selector:sender selector arguments:sender args)
-                       in:sender.
+		       in:sender.
 
     "
      1234 primitiveFailed
 
      [
-        ExternalBytes new   basicAt:40
+	ExternalBytes new   basicAt:40
      ] on:PrimitiveFailure do:[:ex|
-        ex inspect
+	ex inspect
      ]
     "
 !
@@ -4448,8 +4495,8 @@
     sender := thisContext sender.
 
     ^ PrimitiveFailure raiseRequestWith:(Message selector:sender selector arguments:sender args)
-                       errorString:messageString
-                       in:sender.
+		       errorString:messageString
+		       in:sender.
 
     "
      1234 primitiveFailed:'this is a test'
@@ -4470,7 +4517,7 @@
     sender := thisContext sender.
 
     ^ UnimplementedFunctionalityError
-        raiseRequestWith:(Message selector:sender selector arguments:sender args)
+	raiseRequestWith:(Message selector:sender selector arguments:sender args)
 
      "
       self shouldImplement
@@ -4491,8 +4538,8 @@
     sender := thisContext sender.
 
     ^ UnimplementedFunctionalityError
-        raiseRequestWith:(Message selector:sender selector arguments:sender args)
-        errorString:what
+	raiseRequestWith:(Message selector:sender selector arguments:sender args)
+	errorString:what
 
      "
       self shouldImplement:'foobar'
@@ -4505,7 +4552,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     ^ ExecutionError
-        raiseRequestErrorString:'Oops, this may never reached. Something somewhere was terribly wrong.'.
+	raiseRequestErrorString:'Oops, this may never reached. Something somewhere was terribly wrong.'.
 
     "Modified: / 20-04-2005 / 18:59:28 / janfrog"
 !
@@ -4516,8 +4563,8 @@
     <resource: #skipInDebuggersWalkBack>
 
     "/ ^ self error:'This message never may be sent to me!!'.
-    ^ MethodNotAppropriateError 
-        raiseRequestErrorString:'This message never may be sent to me!!'
+    ^ MethodNotAppropriateError
+	raiseRequestErrorString:'This message never may be sent to me!!'
 
     "Modified: / 20-04-2005 / 18:59:28 / janfrog"
     "Modified: / 02-11-2012 / 10:10:42 / cg"
@@ -4532,8 +4579,8 @@
     <resource: #skipInDebuggersWalkBack>
 
     "/ self error:'method/functionality not appropriate for this class'
-    ^ MethodNotAppropriateError 
-        raiseRequestErrorString:'method/functionality not appropriate for this class'
+    ^ MethodNotAppropriateError
+	raiseRequestErrorString:'method/functionality not appropriate for this class'
 
     "Modified: / 02-11-2012 / 10:02:25 / cg"
 !
@@ -4583,8 +4630,8 @@
     <resource: #skipInDebuggersWalkBack>
 
     ^ SubscriptOutOfBoundsError
-        raiseRequestWith:anIndex
-        errorString:('subscript (' , anIndex printString , ') out of bounds')
+	raiseRequestWith:anIndex
+	errorString:('subscript (' , anIndex printString , ') out of bounds')
 
     "Modified: / 17.11.2001 / 22:49:56 / cg"
 !
@@ -4601,9 +4648,9 @@
 "/                  ' (' , self class name , ') to typed variable'
 
     ^ InvalidTypeError
-        raiseRequestErrorString:
-            ('bad assign of ' , self printString ,
-                  ' (' , self class name , ') to typed variable')
+	raiseRequestErrorString:
+	    ('bad assign of ' , self printString ,
+		  ' (' , self class name , ') to typed variable')
 
     "Modified: / 02-11-2012 / 10:19:15 / cg"
 ! !
@@ -4619,7 +4666,7 @@
     ^ 0
 
     "
-        [1 // 0] on:ArithmeticError do:9999
+	[1 // 0] on:ArithmeticError do:9999
     "
 !
 
@@ -4633,16 +4680,16 @@
      style ... (the idea was borrowed from the Self language).
 
      WARNING: dont 'optimize' away ifXXX: blocks
-              (i.e. do NOT replace
-                        foo ifTrue:[var1] ifFalse:[var2]
-               by:
-                        foo ifTrue:var1 ifFalse:var2
-              )
-              - the compilers will only generate inline code for the if,
-                iff the argument(s) are blocks - otherwise, a true send is
-                generated.
-              This 'oprimization' will work semantically correct,
-              but execute SLOWER instead."
+	      (i.e. do NOT replace
+			foo ifTrue:[var1] ifFalse:[var2]
+	       by:
+			foo ifTrue:var1 ifFalse:var2
+	      )
+	      - the compilers will only generate inline code for the if,
+		iff the argument(s) are blocks - otherwise, a true send is
+		generated.
+	      This 'oprimization' will work semantically correct,
+	      but execute SLOWER instead."
 
     ^ self
 
@@ -4786,30 +4833,30 @@
      used from other C subsystems too, to upcast errors.
      Especially, for subsystems which call errorHandler functions asynchronously.
      IDs (currently) used:
-        #DisplayError ..... x-error interrupt
-        #XtError      ..... xt-error interrupt (Xt interface is not yet published)
+	#DisplayError ..... x-error interrupt
+	#XtError      ..... xt-error interrupt (Xt interface is not yet published)
     "
 
     |handlers handler|
 
     handlers := ObjectMemory registeredErrorInterruptHandlers.
     handlers notNil ifTrue:[
-        handler := handlers at:errorID ifAbsent:nil.
-        handler notNil ifTrue:[
-            "/
-            "/ handler found; let it do whatever it wants ...
-            "/
-            handler errorInterrupt:errorID with:aParameter.
-            ^ self
-        ].
+	handler := handlers at:errorID ifAbsent:nil.
+	handler notNil ifTrue:[
+	    "/
+	    "/ handler found; let it do whatever it wants ...
+	    "/
+	    handler errorInterrupt:errorID with:aParameter.
+	    ^ self
+	].
     ].
 
     "/
     "/ no handler - raise errorSignal passing the errorId as parameter
     "/
     ^ Error
-        raiseRequestWith:errorID
-        errorString:('Subsystem error. ErrorID = ' , errorID printString)
+	raiseRequestWith:errorID
+	errorString:('Subsystem error. ErrorID = ' , errorID printString)
 !
 
 exceptionInterrupt
@@ -4835,12 +4882,12 @@
     where := thisContext sender.
     rec := where receiver.
     rec isNumber ifTrue:[
-        ^ rec class
-            raise:#domainErrorSignal
-            receiver:rec
-            selector:where selector
-            arguments:(where args asArray)
-            errorString:'floating point exception'
+	^ rec class
+	    raise:#domainErrorSignal
+	    receiver:rec
+	    selector:where selector
+	    arguments:(where args asArray)
+	    errorString:'floating point exception'
     ].
 
     "/ could be in some C-library ...
@@ -4905,31 +4952,31 @@
 "/            'Stray recursionInterrupt ...' infoPrintCR.
 "/            ^ self
 "/        ].
-        ObjectMemory infoPrinting ifTrue:[
-            'Object [info]: recursionInterrupt from:' printCR.
-            con := con sender.
-            remaining := 50.
-            [con notNil and:[remaining > 0]] whileTrue:[
-                sender := con sender.
-                '| ' print. con fullPrint.
-
-                nSkipped := 0.
-                [sender notNil and:[sender sender notNil
-                and:[sender selector == con selector
-                and:[sender sender selector == con selector
-                and:[sender method == con method]]]]] whileTrue:[
-                    nSkipped := nSkipped + 1.
-                    con := sender.
-                    sender := con sender.
-                ].
-                nSkipped > 0 ifTrue:[
-                    '| ... ***** ' print. nSkipped print. ' recursive contexts skipped *****' printCR.
-                ].
-                con := sender.
-                remaining := remaining - 1
-            ].
-        ].
-        ^ RecursionInterruptSignal raiseSignal
+	ObjectMemory infoPrinting ifTrue:[
+	    'Object [info]: recursionInterrupt from:' printCR.
+	    con := con sender.
+	    remaining := 50.
+	    [con notNil and:[remaining > 0]] whileTrue:[
+		sender := con sender.
+		'| ' print. con fullPrint.
+
+		nSkipped := 0.
+		[sender notNil and:[sender sender notNil
+		and:[sender selector == con selector
+		and:[sender sender selector == con selector
+		and:[sender method == con method]]]]] whileTrue:[
+		    nSkipped := nSkipped + 1.
+		    con := sender.
+		    sender := con sender.
+		].
+		nSkipped > 0 ifTrue:[
+		    '| ... ***** ' print. nSkipped print. ' recursive contexts skipped *****' printCR.
+		].
+		con := sender.
+		remaining := remaining - 1
+	    ].
+	].
+	^ RecursionInterruptSignal raiseSignal
     ]
 
     "Modified: / 10.11.2001 / 15:15:56 / cg"
@@ -4961,42 +5008,42 @@
      action title screen|
 
     thisContext isRecursive ifTrue:[
-        'Severe error: signalInterrupt while processing a signalInterrupt.' errorPrintCR.
-        'Terminating process ' errorPrint. Processor activeProcess errorPrintCR.
+	'Severe error: signalInterrupt while processing a signalInterrupt.' errorPrintCR.
+	'Terminating process ' errorPrint. Processor activeProcess errorPrintCR.
 "/        GenericException handle:[:ex |
 "/            "/ ignore any error during termination
 "/        ] do:[
 "/           Processor activeProcess terminate.
 "/        ].
-        Processor activeProcess terminateNoSignal.
+	Processor activeProcess terminateNoSignal.
     ].
 
     "if there has been an ST-signal installed, use it ..."
     sig := OperatingSystem operatingSystemSignal:signalNumber.
     sig notNil ifTrue:[
-        sig raiseSignalWith:signalNumber.
-        ^ self.
+	sig raiseSignalWith:signalNumber.
+	^ self.
     ].
 
     "/ if handled, raise OSSignalInterruptSignal
     OSSignalInterrupt isHandled ifTrue:[
-        OSSignalInterrupt raiseRequestWith:signalNumber.
-        ^ self.
+	OSSignalInterrupt raiseRequestWith:signalNumber.
+	^ self.
     ].
 
     "
      special cases
-        - SIGPWR: power failure - write a crash image and continue
-        - SIGHUP: hang up - write a crash image and exit
+	- SIGPWR: power failure - write a crash image and continue
+	- SIGHUP: hang up - write a crash image and exit
     "
     (signalNumber == OperatingSystem sigPWR) ifTrue:[
-        SnapshotError ignoreIn:[ObjectMemory writeCrashImage].
-        ^ self.
+	SnapshotError ignoreIn:[ObjectMemory writeCrashImage].
+	^ self.
     ].
     (signalNumber == OperatingSystem sigHUP) ifTrue:[
-        SnapshotError ignoreIn:[ObjectMemory writeCrashImage].
-        'Object [info]: exit due to hangup signal.' errorPrintCR.
-        Smalltalk exit:1.
+	SnapshotError ignoreIn:[ObjectMemory writeCrashImage].
+	'Object [info]: exit due to hangup signal.' errorPrintCR.
+	Smalltalk exit:1.
     ].
 
     name := OperatingSystem nameForSignal:signalNumber.
@@ -5006,7 +5053,7 @@
      or:[(screen := Screen current) isNil
      or:[(screen := Screen default) isNil
      or:[screen isOpen not]]]) ifTrue:[
-        ^ self startMiniDebuggerOrExit:'OS-Signal (' , name, ')'.
+	^ self startMiniDebuggerOrExit:'OS-Signal (' , name, ')'.
     ].
 
     "ungrab - in case it happened in a box/popupview
@@ -5018,105 +5065,105 @@
 
     "there is a screen. use it to bring up a box asking for what to do ..."
     Screen currentScreenQuerySignal answer:screen do:[
-        "
-         SIGBUS, SIGSEGV and SIGILL do not make sense to ignore (i.e. continue)
-         since the system will retry the faulty instruction, which leads to
-         another signal - to avoid frustration, better not offer this option.
-        "
-        fatal := OperatingSystem isFatalSignal:signalNumber.
-        fatal ifTrue:[
-            (Debugger isNil or:[here isRecursive]) ifTrue:[
-                'Object [hard error]: signal ' errorPrint. signalNumber errorPrintCR.
-                ^ self startMiniDebuggerOrExit:'OS-Signal (' , name, ')'.
-            ].
-            "
-             a hard signal - go into debugger immediately
-            "
-            msg := 'OS-signal: ', name.
-
-            "/ the IRQ-PC is passed as low-hi, to avoid the need
-            "/ to allocate a LargeInteger in the VM during signal
-            "/ time. I know, this is ugly.
-
-            InterruptPcLow notNil ifTrue:[
-                pc := InterruptPcLow + (InterruptPcHi bitShift:((SmallInteger maxBits + 1) // 2)).
-                pc ~~ 0 ifTrue:[
-                    msg := msg , ' PC=' , (pc printStringRadix:16)
-                ].
-            ].
-            InterruptAddrLow notNil ifTrue:[
-                addr := InterruptAddrLow + (InterruptAddrHi bitShift:((SmallInteger maxBits + 1) // 2)).
-                addr ~~ 0 ifTrue:[
-                    msg := msg , ' ADDR=' , (addr printStringRadix:16)
-                ].
-            ].
-            Debugger enter:here withMessage:msg mayProceed:false.
-            "unreachable"
-            ^ nil.
-        ].
-
-        "if possible, open an option box asking the user what do.
-         Otherwise, start a debugger"
-        Dialog notNil ifTrue:[
-            titles := #('save crash image' 'dump core' 'exit ST/X' 'debug').
-            actions := #(save core exit debug).
-
-            action := nil.
-            title := 'OS Signal caught (' , name, ')'.
-            title := (title , '\[in ST-process: ' , Processor activeProcess nameOrId ,']') withCRs.
-
-            "/ if cought while in the scheduler or event dispatcher,
-            "/ a modal dialog is not possible ...
-            "/ (therefore, abort & return does not makes sense)
-
-            Processor activeProcess isSystemProcess ifFalse:[
-                titles := #('abort') , titles.
-                actions := #(abort), actions.
-
-                badContext canReturn ifTrue:[
-                    titles := #('return') , titles.
-                    actions :=  #(return), actions.
-                ].
-            ].
-
-            fatal ifFalse:[
-                titles := titles, #('ignore').
-                actions := actions , #(ignore).
-            ].
-            action := Dialog choose:title
-                             labels:titles
-                             values:actions
-                             default:(fatal ifTrue:[nil] ifFalse:[#ignore]).
-
-            "Dialog may fail (if system process), default action is debug"
-            action isEmptyOrNil ifTrue:[action := #debug].
-        ] ifFalse:[
-            action := #debug.
-        ].
-
-        action == #save ifTrue:[
-            ObjectMemory writeCrashImage
-        ].
-        action == #core ifTrue:[
-            Smalltalk fatalAbort
-        ].
-        action == #exit ifTrue:[
-            Smalltalk exit
-        ].
-        action == #return ifTrue:[
-            badContext return
-        ].
-        action == #abort ifTrue:[
-            AbortOperationRequest raise.
-        ].
-
-        action == #debug ifTrue:[
-            Debugger isNil ifTrue:[
-                ^ self startMiniDebuggerOrExit:'OS-Signal (' , name, ')'.
-            ].
-            Debugger enter:here withMessage:('OS-Signal ', name) mayProceed:true.
-        ].
-        "action == #ignore"
+	"
+	 SIGBUS, SIGSEGV and SIGILL do not make sense to ignore (i.e. continue)
+	 since the system will retry the faulty instruction, which leads to
+	 another signal - to avoid frustration, better not offer this option.
+	"
+	fatal := OperatingSystem isFatalSignal:signalNumber.
+	fatal ifTrue:[
+	    (Debugger isNil or:[here isRecursive]) ifTrue:[
+		'Object [hard error]: signal ' errorPrint. signalNumber errorPrintCR.
+		^ self startMiniDebuggerOrExit:'OS-Signal (' , name, ')'.
+	    ].
+	    "
+	     a hard signal - go into debugger immediately
+	    "
+	    msg := 'OS-signal: ', name.
+
+	    "/ the IRQ-PC is passed as low-hi, to avoid the need
+	    "/ to allocate a LargeInteger in the VM during signal
+	    "/ time. I know, this is ugly.
+
+	    InterruptPcLow notNil ifTrue:[
+		pc := InterruptPcLow + (InterruptPcHi bitShift:((SmallInteger maxBits + 1) // 2)).
+		pc ~~ 0 ifTrue:[
+		    msg := msg , ' PC=' , (pc printStringRadix:16)
+		].
+	    ].
+	    InterruptAddrLow notNil ifTrue:[
+		addr := InterruptAddrLow + (InterruptAddrHi bitShift:((SmallInteger maxBits + 1) // 2)).
+		addr ~~ 0 ifTrue:[
+		    msg := msg , ' ADDR=' , (addr printStringRadix:16)
+		].
+	    ].
+	    Debugger enter:here withMessage:msg mayProceed:false.
+	    "unreachable"
+	    ^ nil.
+	].
+
+	"if possible, open an option box asking the user what do.
+	 Otherwise, start a debugger"
+	Dialog notNil ifTrue:[
+	    titles := #('save crash image' 'dump core' 'exit ST/X' 'debug').
+	    actions := #(save core exit debug).
+
+	    action := nil.
+	    title := 'OS Signal caught (' , name, ')'.
+	    title := (title , '\[in ST-process: ' , Processor activeProcess nameOrId ,']') withCRs.
+
+	    "/ if cought while in the scheduler or event dispatcher,
+	    "/ a modal dialog is not possible ...
+	    "/ (therefore, abort & return does not makes sense)
+
+	    Processor activeProcess isSystemProcess ifFalse:[
+		titles := #('abort') , titles.
+		actions := #(abort), actions.
+
+		badContext canReturn ifTrue:[
+		    titles := #('return') , titles.
+		    actions :=  #(return), actions.
+		].
+	    ].
+
+	    fatal ifFalse:[
+		titles := titles, #('ignore').
+		actions := actions , #(ignore).
+	    ].
+	    action := Dialog choose:title
+			     labels:titles
+			     values:actions
+			     default:(fatal ifTrue:[nil] ifFalse:[#ignore]).
+
+	    "Dialog may fail (if system process), default action is debug"
+	    action isEmptyOrNil ifTrue:[action := #debug].
+	] ifFalse:[
+	    action := #debug.
+	].
+
+	action == #save ifTrue:[
+	    ObjectMemory writeCrashImage
+	].
+	action == #core ifTrue:[
+	    Smalltalk fatalAbort
+	].
+	action == #exit ifTrue:[
+	    Smalltalk exit
+	].
+	action == #return ifTrue:[
+	    badContext return
+	].
+	action == #abort ifTrue:[
+	    AbortOperationRequest raise.
+	].
+
+	action == #debug ifTrue:[
+	    Debugger isNil ifTrue:[
+		^ self startMiniDebuggerOrExit:'OS-Signal (' , name, ')'.
+	    ].
+	    Debugger enter:here withMessage:('OS-Signal ', name) mayProceed:true.
+	].
+	"action == #ignore"
     ].
 
     "Modified: / 15-09-2011 / 16:38:14 / cg"
@@ -5135,10 +5182,10 @@
      Start a mini debugger or exit if none is present"
 
     MiniDebugger isNil ifTrue:[
-        "a system without debugging facilities (i.e. a standalone system)
-         output a message and exit."
-        ('Object [error]: exit due to ', text, ' - and no debugger.') errorPrintCR.
-        OperatingSystem exit:99.
+	"a system without debugging facilities (i.e. a standalone system)
+	 output a message and exit."
+	('Object [error]: exit due to ', text, ' - and no debugger.') errorPrintCR.
+	OperatingSystem exit:99.
     ].
     MiniDebugger enterWithMessage:text mayProceed:true.
 !
@@ -5191,12 +5238,12 @@
     REGISTER OBJ sel = aSelector;
 
     if (InterruptPending == nil) {
-        struct inlineCache *pIlc;
+	struct inlineCache *pIlc;
     /* JV @ 2010-22-07: To improve performance I use 256 ILCs instead
-       of default 4. This significantly reduces ILC misses. The code 
-       should be further optimized by remembering last selector index and 
-       try a first shot on that index. Another option is to use kind of 
-       hashing on lower bits of sel variable. However, a more detailed 
+       of default 4. This significantly reduces ILC misses. The code
+       should be further optimized by remembering last selector index and
+       try a first shot on that index. Another option is to use kind of
+       hashing on lower bits of sel variable. However, a more detailed
        statistical data should be gathered before doing further optimizations.
     */
 
@@ -5212,7 +5259,7 @@
 #define SEL_AND_ILC_INIT_256(l) SEL_AND_ILC_INIT_128(l) , SEL_AND_ILC_INIT_128(l)
 #define nilcs 256
 
-        static struct { OBJ sel; struct inlineCache ilc; } sel_and_ilc[nilcs] = { SEL_AND_ILC_INIT_256(29) };
+	static struct { OBJ sel; struct inlineCache ilc; } sel_and_ilc[nilcs] = { SEL_AND_ILC_INIT_256(29) };
 
 #undef SEL_AND_ILC_INIT_1
 #undef SEL_AND_ILC_INIT_2
@@ -5224,28 +5271,28 @@
 #undef SEL_AND_ILC_INIT_128
 #undef SEL_AND_ILC_INIT_256
 
-        static flip = 0;
-        int i;
-        for (i = 0; i < nilcs; i++) {
-           if (sel == sel_and_ilc[i].sel) {
-                pIlc = &sel_and_ilc[i].ilc;
-                goto perform0_send_and_return;
-           }       
-        }
-        /*printf("Object >> #perform: #%s --> no PIC found\n", __symbolVal(aSelector));*/
-        pIlc = &sel_and_ilc[flip].ilc;
-        sel_and_ilc[flip].sel = sel;
-        flip = (flip + 1) % nilcs;
-        pIlc->ilc_func = __SEND0ADDR__;
-        if (pIlc->ilc_poly) {
-             __flushPolyCache(pIlc->ilc_poly);
-            pIlc->ilc_poly = 0;
-        }
+	static flip = 0;
+	int i;
+	for (i = 0; i < nilcs; i++) {
+	   if (sel == sel_and_ilc[i].sel) {
+		pIlc = &sel_and_ilc[i].ilc;
+		goto perform0_send_and_return;
+	   }
+	}
+	/*printf("Object >> #perform: #%s --> no PIC found\n", __symbolVal(aSelector));*/
+	pIlc = &sel_and_ilc[flip].ilc;
+	sel_and_ilc[flip].sel = sel;
+	flip = (flip + 1) % nilcs;
+	pIlc->ilc_func = __SEND0ADDR__;
+	if (pIlc->ilc_poly) {
+	     __flushPolyCache(pIlc->ilc_poly);
+	    pIlc->ilc_poly = 0;
+	}
 perform0_send_and_return:
-        RETURN ( (*(pIlc->ilc_func))(self, sel, nil, pIlc) );
+	RETURN ( (*(pIlc->ilc_func))(self, sel, nil, pIlc) );
     } else {
-        static struct inlineCache ilc0 = __DUMMYILCSELF0(@line+1);
-        RETURN (_SEND0(self, aSelector, nil, &ilc0));
+	static struct inlineCache ilc0 = __DUMMYILCSELF0(@line+1);
+	RETURN (_SEND0(self, aSelector, nil, &ilc0));
     }
 %}.
     ^ self perform:aSelector withArguments:#()
@@ -5258,7 +5305,7 @@
      to execute a method in ANY superclass of the receiver (not just the
      immediate superclass).
      Thus, it is (theoretically) possible to do
-         '5 perform:#< inClass:Magnitude withArguments:#(6)'
+	 '5 perform:#< inClass:Magnitude withArguments:#(6)'
      and evaluate Magnitudes compare method even if there was one in Number.
      This method is used by the interpreter to evaluate super sends
      and could be used for very special behavior (language extension ?).
@@ -5272,174 +5319,174 @@
     "
     myClass := self class.
     (myClass == aClass or:[myClass isSubclassOf:aClass]) ifFalse:[
-        self error:'lookup-class argument is not a superclass of the receiver'.
-        ^ nil
+	self error:'lookup-class argument is not a superclass of the receiver'.
+	^ nil
     ].
 %{
     REGISTER OBJ *argP;
     int nargs, i;
 
     if (__isArrayLike(argArray)) {
-        nargs = __arraySize(argArray);
-        argP = __arrayVal(argArray);
+	nargs = __arraySize(argArray);
+	argP = __arrayVal(argArray);
     } else {
-        if (__isNonNilObject(argArray)) {
-            static struct inlineCache ilcSize = __ILC0(@line+1);
-            numberOfArgs = (*ilcSize.ilc_func)(argArray, @symbol(size), nil, &ilcSize);
-            if (!__isSmallInteger(numberOfArgs))
-                goto bad;
-            nargs = __intVal(numberOfArgs);
-            argP = (OBJ *)(&a1);
-            for (i=1; i <= nargs; i++) {
-                *argP++ = __AT_(argArray, __mkSmallInteger(i));
-            }
-            argP = (OBJ *)(&a1);
-        } else {
-            nargs = 0;
-        }
+	if (__isNonNilObject(argArray)) {
+	    static struct inlineCache ilcSize = __ILC0(@line+1);
+	    numberOfArgs = (*ilcSize.ilc_func)(argArray, @symbol(size), nil, &ilcSize);
+	    if (!__isSmallInteger(numberOfArgs))
+		goto bad;
+	    nargs = __intVal(numberOfArgs);
+	    argP = (OBJ *)(&a1);
+	    for (i=1; i <= nargs; i++) {
+		*argP++ = __AT_(argArray, __mkSmallInteger(i));
+	    }
+	    argP = (OBJ *)(&a1);
+	} else {
+	    nargs = 0;
+	}
     }
     switch (nargs) {
-        case 0:
-            {
-                static struct inlineCache ilc0 = __DUMMYILCSELF0(@line+1);
-                RETURN ( _SEND0(self, aSelector, aClass, &ilc0));
-            }
-
-        case 1:
-            {
-                static struct inlineCache ilc1 = __DUMMYILCSELF1(@line+1);
-                RETURN ( _SEND1(self, aSelector, aClass, &ilc1, argP[0]));
-            }
-
-        case 2:
-            {
-                static struct inlineCache ilc2 = __DUMMYILCSELF2(@line+1);
-                RETURN ( _SEND2(self, aSelector, aClass, &ilc2, argP[0], argP[1]));
-            }
-
-        case 3:
-            {
-                static struct inlineCache ilc3 = __DUMMYILCSELF3(@line+1);
-                RETURN ( _SEND3(self, aSelector, aClass, &ilc3,
-                                argP[0], argP[1], argP[2]));
-            }
-
-        case 4:
-            {
-                static struct inlineCache ilc4 = __DUMMYILCSELF4(@line+1);
-                RETURN ( _SEND4(self, aSelector, aClass, &ilc4,
-                                argP[0], argP[1], argP[2], argP[3]));
-            }
-
-        case 5:
-            {
-                static struct inlineCache ilc5 = __DUMMYILCSELF5(@line+1);
-                RETURN ( _SEND5(self, aSelector, aClass, &ilc5,
-                                argP[0], argP[1], argP[2], argP[3], argP[4]));
-            }
-
-        case 6:
-            {
-                static struct inlineCache ilc6 = __DUMMYILCSELF6(@line+1);
-                RETURN ( _SEND6(self, aSelector, aClass, &ilc6,
-                                argP[0], argP[1], argP[2], argP[3], argP[4], argP[5]));
-            }
-
-        case 7:
-            {
-                static struct inlineCache ilc7 = __DUMMYILCSELF7(@line+1);
-                RETURN ( _SEND7(self, aSelector, aClass, &ilc7,
-                                argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                argP[6]));
-            }
-
-        case 8:
-            {
-                static struct inlineCache ilc8 = __DUMMYILCSELF8(@line+1);
-                RETURN ( _SEND8(self, aSelector, aClass, &ilc8,
-                                argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                argP[6], argP[7]));
-            }
-
-        case 9:
-            {
-                static struct inlineCache ilc9 = __DUMMYILCSELF9(@line+1);
-                RETURN ( _SEND9(self, aSelector, aClass, &ilc9,
-                                argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                argP[6], argP[7], argP[8]));
-            }
-
-        case 10:
-            {
-                static struct inlineCache ilc10 = __DUMMYILCSELF10(@line+1);
-                RETURN ( _SEND10(self, aSelector, aClass, &ilc10,
-                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                 argP[6], argP[7], argP[8], argP[9]));
-            }
-
-        case 11:
-            {
-                static struct inlineCache ilc11 = __DUMMYILCSELF11(@line+1);
-                RETURN ( _SEND11(self, aSelector, aClass, &ilc11,
-                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                 argP[6], argP[7], argP[8], argP[9], argP[10]));
-            }
-
-        case 12:
-            {
-                static struct inlineCache ilc12 = __DUMMYILCSELF12(@line+1);
-                RETURN ( _SEND12(self, aSelector, aClass, &ilc12,
-                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                 argP[6], argP[7], argP[8], argP[9], argP[10],
-                                 argP[11]));
-            }
-
-        case 13:
-            {
-                static struct inlineCache ilc13 = __DUMMYILCSELF13(@line+1);
-                RETURN ( _SEND13(self, aSelector, aClass, &ilc13,
-                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                 argP[6], argP[7], argP[8], argP[9], argP[10],
-                                 argP[11], argP[12]));
-            }
-
-        case 14:
-            {
-                static struct inlineCache ilc14 = __DUMMYILCSELF14(@line+1);
-                RETURN ( _SEND14(self, aSelector, aClass, &ilc14,
-                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                 argP[6], argP[7], argP[8], argP[9], argP[10],
-                                 argP[11], argP[12], argP[13]));
-            }
-
-        case 15:
-            {
-                static struct inlineCache ilc15 = __DUMMYILCSELF15(@line+1);
-                RETURN ( _SEND15(self, aSelector, aClass, &ilc15,
-                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                 argP[6], argP[7], argP[8], argP[9], argP[10],
-                                 argP[11], argP[12], argP[13], argP[14]));
-            }
+	case 0:
+	    {
+		static struct inlineCache ilc0 = __DUMMYILCSELF0(@line+1);
+		RETURN ( _SEND0(self, aSelector, aClass, &ilc0));
+	    }
+
+	case 1:
+	    {
+		static struct inlineCache ilc1 = __DUMMYILCSELF1(@line+1);
+		RETURN ( _SEND1(self, aSelector, aClass, &ilc1, argP[0]));
+	    }
+
+	case 2:
+	    {
+		static struct inlineCache ilc2 = __DUMMYILCSELF2(@line+1);
+		RETURN ( _SEND2(self, aSelector, aClass, &ilc2, argP[0], argP[1]));
+	    }
+
+	case 3:
+	    {
+		static struct inlineCache ilc3 = __DUMMYILCSELF3(@line+1);
+		RETURN ( _SEND3(self, aSelector, aClass, &ilc3,
+				argP[0], argP[1], argP[2]));
+	    }
+
+	case 4:
+	    {
+		static struct inlineCache ilc4 = __DUMMYILCSELF4(@line+1);
+		RETURN ( _SEND4(self, aSelector, aClass, &ilc4,
+				argP[0], argP[1], argP[2], argP[3]));
+	    }
+
+	case 5:
+	    {
+		static struct inlineCache ilc5 = __DUMMYILCSELF5(@line+1);
+		RETURN ( _SEND5(self, aSelector, aClass, &ilc5,
+				argP[0], argP[1], argP[2], argP[3], argP[4]));
+	    }
+
+	case 6:
+	    {
+		static struct inlineCache ilc6 = __DUMMYILCSELF6(@line+1);
+		RETURN ( _SEND6(self, aSelector, aClass, &ilc6,
+				argP[0], argP[1], argP[2], argP[3], argP[4], argP[5]));
+	    }
+
+	case 7:
+	    {
+		static struct inlineCache ilc7 = __DUMMYILCSELF7(@line+1);
+		RETURN ( _SEND7(self, aSelector, aClass, &ilc7,
+				argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				argP[6]));
+	    }
+
+	case 8:
+	    {
+		static struct inlineCache ilc8 = __DUMMYILCSELF8(@line+1);
+		RETURN ( _SEND8(self, aSelector, aClass, &ilc8,
+				argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				argP[6], argP[7]));
+	    }
+
+	case 9:
+	    {
+		static struct inlineCache ilc9 = __DUMMYILCSELF9(@line+1);
+		RETURN ( _SEND9(self, aSelector, aClass, &ilc9,
+				argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				argP[6], argP[7], argP[8]));
+	    }
+
+	case 10:
+	    {
+		static struct inlineCache ilc10 = __DUMMYILCSELF10(@line+1);
+		RETURN ( _SEND10(self, aSelector, aClass, &ilc10,
+				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				 argP[6], argP[7], argP[8], argP[9]));
+	    }
+
+	case 11:
+	    {
+		static struct inlineCache ilc11 = __DUMMYILCSELF11(@line+1);
+		RETURN ( _SEND11(self, aSelector, aClass, &ilc11,
+				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				 argP[6], argP[7], argP[8], argP[9], argP[10]));
+	    }
+
+	case 12:
+	    {
+		static struct inlineCache ilc12 = __DUMMYILCSELF12(@line+1);
+		RETURN ( _SEND12(self, aSelector, aClass, &ilc12,
+				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				 argP[6], argP[7], argP[8], argP[9], argP[10],
+				 argP[11]));
+	    }
+
+	case 13:
+	    {
+		static struct inlineCache ilc13 = __DUMMYILCSELF13(@line+1);
+		RETURN ( _SEND13(self, aSelector, aClass, &ilc13,
+				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				 argP[6], argP[7], argP[8], argP[9], argP[10],
+				 argP[11], argP[12]));
+	    }
+
+	case 14:
+	    {
+		static struct inlineCache ilc14 = __DUMMYILCSELF14(@line+1);
+		RETURN ( _SEND14(self, aSelector, aClass, &ilc14,
+				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				 argP[6], argP[7], argP[8], argP[9], argP[10],
+				 argP[11], argP[12], argP[13]));
+	    }
+
+	case 15:
+	    {
+		static struct inlineCache ilc15 = __DUMMYILCSELF15(@line+1);
+		RETURN ( _SEND15(self, aSelector, aClass, &ilc15,
+				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				 argP[6], argP[7], argP[8], argP[9], argP[10],
+				 argP[11], argP[12], argP[13], argP[14]));
+	    }
 
 #ifdef _SEND16
-        case 16:
-            {
-                static struct inlineCache ilc16 = __DUMMYILCSELF16(@line+1);
-                RETURN ( _SEND16(self, aSelector, aClass, &ilc15,
-                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                 argP[6], argP[7], argP[8], argP[9], argP[10],
-                                 argP[11], argP[12], argP[13], argP[14], argP[15]));
-            }
+	case 16:
+	    {
+		static struct inlineCache ilc16 = __DUMMYILCSELF16(@line+1);
+		RETURN ( _SEND16(self, aSelector, aClass, &ilc15,
+				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				 argP[6], argP[7], argP[8], argP[9], argP[10],
+				 argP[11], argP[12], argP[13], argP[14], argP[15]));
+	    }
 #endif
 #ifdef _SEND17
-        case 17:
-            {
-                static struct inlineCache ilc17 = __DUMMYILCSELF17(@line+1);
-                RETURN ( _SEND17(self, aSelector, aClass, &ilc15,
-                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                 argP[6], argP[7], argP[8], argP[9], argP[10],
-                                 argP[11], argP[12], argP[13], argP[14], argP[15], argP[16]));
-            }
+	case 17:
+	    {
+		static struct inlineCache ilc17 = __DUMMYILCSELF17(@line+1);
+		RETURN ( _SEND17(self, aSelector, aClass, &ilc15,
+				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				 argP[6], argP[7], argP[8], argP[9], argP[10],
+				 argP[11], argP[12], argP[13], argP[14], argP[15], argP[16]));
+	    }
 #endif
 
 
@@ -5459,7 +5506,7 @@
     REGISTER OBJ sel = aSelector;
 
     if (InterruptPending == nil) {
-        struct inlineCache *pIlc;
+	struct inlineCache *pIlc;
     /* JV @ 2010-22-07: To improve performance I use 256 ILCs instead
        of default 4. For details, see comment in perform: */
 
@@ -5475,7 +5522,7 @@
 #define SEL_AND_ILC_INIT_256(l) SEL_AND_ILC_INIT_128(l) , SEL_AND_ILC_INIT_128(l)
 #define nilcs 256
 
-        static struct { OBJ sel; struct inlineCache ilc; } sel_and_ilc[nilcs] = { SEL_AND_ILC_INIT_256(29) };
+	static struct { OBJ sel; struct inlineCache ilc; } sel_and_ilc[nilcs] = { SEL_AND_ILC_INIT_256(29) };
 
 #undef SEL_AND_ILC_INIT_1
 #undef SEL_AND_ILC_INIT_2
@@ -5487,28 +5534,28 @@
 #undef SEL_AND_ILC_INIT_128
 #undef SEL_AND_ILC_INIT_256
 
-        static flip = 0;
-        int i;
-        for (i = 0; i < nilcs; i++) {
-           if (sel == sel_and_ilc[i].sel) {
-                pIlc = &sel_and_ilc[i].ilc;
-                goto perform1_send_and_return;
-           }       
-        }
-        /*printf("Object >> #perform: #%s with: arg --> no PIC found\n", __symbolVal(aSelector));*/
-        pIlc = &sel_and_ilc[flip].ilc;
-        sel_and_ilc[flip].sel = sel;
-        flip = (flip + 1) % nilcs;
-        pIlc->ilc_func = __SEND1ADDR__;
-        if (pIlc->ilc_poly) {
-             __flushPolyCache(pIlc->ilc_poly);
-            pIlc->ilc_poly = 0;
-        }
+	static flip = 0;
+	int i;
+	for (i = 0; i < nilcs; i++) {
+	   if (sel == sel_and_ilc[i].sel) {
+		pIlc = &sel_and_ilc[i].ilc;
+		goto perform1_send_and_return;
+	   }
+	}
+	/*printf("Object >> #perform: #%s with: arg --> no PIC found\n", __symbolVal(aSelector));*/
+	pIlc = &sel_and_ilc[flip].ilc;
+	sel_and_ilc[flip].sel = sel;
+	flip = (flip + 1) % nilcs;
+	pIlc->ilc_func = __SEND1ADDR__;
+	if (pIlc->ilc_poly) {
+	     __flushPolyCache(pIlc->ilc_poly);
+	    pIlc->ilc_poly = 0;
+	}
 perform1_send_and_return:
-        RETURN ( (*(pIlc->ilc_func))(self, sel, nil, pIlc, arg) );
+	RETURN ( (*(pIlc->ilc_func))(self, sel, nil, pIlc, arg) );
     } else {
-        static struct inlineCache ilc1 = __DUMMYILCSELF1(@line+1);
-        RETURN (_SEND1(self, aSelector, nil, &ilc1, arg));
+	static struct inlineCache ilc1 = __DUMMYILCSELF1(@line+1);
+	RETURN (_SEND1(self, aSelector, nil, &ilc1, arg));
     }
 %}.
     ^ self perform:aSelector withArguments:(Array with:arg)
@@ -5539,7 +5586,7 @@
 #define SEL_AND_ILC_INIT_256(l) SEL_AND_ILC_INIT_128(l) , SEL_AND_ILC_INIT_128(l)
 #define nilcs 256
 
-        static struct { OBJ sel; struct inlineCache ilc; } sel_and_ilc[nilcs] = { SEL_AND_ILC_INIT_256(29) };
+	static struct { OBJ sel; struct inlineCache ilc; } sel_and_ilc[nilcs] = { SEL_AND_ILC_INIT_256(29) };
 
 #undef SEL_AND_ILC_INIT_1
 #undef SEL_AND_ILC_INIT_2
@@ -5551,28 +5598,28 @@
 #undef SEL_AND_ILC_INIT_128
 #undef SEL_AND_ILC_INIT_256
 
-        static flip = 0;
-        int i;
-        for (i = 0; i < nilcs; i++) {
-           if (sel == sel_and_ilc[i].sel) {
-                pIlc = &sel_and_ilc[i].ilc;
-                goto perform2_send_and_return;
-           }       
-        }
-        /*printf("Object >> #perform: #%s with: with: --> no PIC found\n", __symbolVal(aSelector));*/
-        pIlc = &sel_and_ilc[flip].ilc;
-        sel_and_ilc[flip].sel = sel;
-        flip = (flip + 1) % nilcs;
-        pIlc->ilc_func = __SEND2ADDR__;
-        if (pIlc->ilc_poly) {
-             __flushPolyCache(pIlc->ilc_poly);
-            pIlc->ilc_poly = 0;
-        }
+	static flip = 0;
+	int i;
+	for (i = 0; i < nilcs; i++) {
+	   if (sel == sel_and_ilc[i].sel) {
+		pIlc = &sel_and_ilc[i].ilc;
+		goto perform2_send_and_return;
+	   }
+	}
+	/*printf("Object >> #perform: #%s with: with: --> no PIC found\n", __symbolVal(aSelector));*/
+	pIlc = &sel_and_ilc[flip].ilc;
+	sel_and_ilc[flip].sel = sel;
+	flip = (flip + 1) % nilcs;
+	pIlc->ilc_func = __SEND2ADDR__;
+	if (pIlc->ilc_poly) {
+	     __flushPolyCache(pIlc->ilc_poly);
+	    pIlc->ilc_poly = 0;
+	}
 perform2_send_and_return:
-        RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc, arg1, arg2) );
+	RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc, arg1, arg2) );
     } else {
-        static struct inlineCache ilc2 = __DUMMYILCSELF2(@line+1);
-        RETURN (_SEND2(self, aSelector, nil, &ilc2, arg1, arg2));
+	static struct inlineCache ilc2 = __DUMMYILCSELF2(@line+1);
+	RETURN (_SEND2(self, aSelector, nil, &ilc2, arg1, arg2));
     }
 %}.
     ^ self perform:aSelector withArguments:(Array with:arg1 with:arg2)
@@ -5591,32 +5638,32 @@
     static flip = 0;
 
     if (InterruptPending == nil) {
-        if (aSelector != last_0) {
-            if (aSelector != last_1) {
-                if (flip) {
-                    pIlc = &ilc_0;
-                    flip = 0;
-                    last_0 = aSelector;
-                } else {
-                    pIlc = &ilc_1;
-                    flip = 1;
-                    last_1 = aSelector;
-                }
-                pIlc->ilc_func = __SEND3ADDR__;
-                if (pIlc->ilc_poly) {
-                    __flushPolyCache(pIlc->ilc_poly);
-                    pIlc->ilc_poly = 0;
-                }
-            } else {
-                pIlc = &ilc_1;
-            }
-        } else {
-            pIlc = &ilc_0;
-        }
-        RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc, arg1, arg2, arg3) );
+	if (aSelector != last_0) {
+	    if (aSelector != last_1) {
+		if (flip) {
+		    pIlc = &ilc_0;
+		    flip = 0;
+		    last_0 = aSelector;
+		} else {
+		    pIlc = &ilc_1;
+		    flip = 1;
+		    last_1 = aSelector;
+		}
+		pIlc->ilc_func = __SEND3ADDR__;
+		if (pIlc->ilc_poly) {
+		    __flushPolyCache(pIlc->ilc_poly);
+		    pIlc->ilc_poly = 0;
+		}
+	    } else {
+		pIlc = &ilc_1;
+	    }
+	} else {
+	    pIlc = &ilc_0;
+	}
+	RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc, arg1, arg2, arg3) );
     } else {
-        static struct inlineCache ilc3 = __DUMMYILCSELF3(@line+1);
-        RETURN (_SEND3(self, aSelector, nil, &ilc3, arg1, arg2, arg3));
+	static struct inlineCache ilc3 = __DUMMYILCSELF3(@line+1);
+	RETURN (_SEND3(self, aSelector, nil, &ilc3, arg1, arg2, arg3));
     }
 %}.
     ^ self perform:aSelector withArguments:(Array with:arg1 with:arg2 with:arg3)
@@ -5635,34 +5682,34 @@
     static flip = 0;
 
     if (InterruptPending == nil) {
-        if (aSelector != last_0) {
-            if (aSelector != last_1) {
-                if (flip) {
-                    pIlc = &ilc_0;
-                    flip = 0;
-                    last_0 = aSelector;
-                } else {
-                    pIlc = &ilc_1;
-                    flip = 1;
-                    last_1 = aSelector;
-                }
-                pIlc->ilc_func = __SEND4ADDR__;
-                if (pIlc->ilc_poly) {
-                    __flushPolyCache(pIlc->ilc_poly);
-                    pIlc->ilc_poly = 0;
-                }
-            } else {
-                pIlc = &ilc_1;
-            }
-        } else {
-            pIlc = &ilc_0;
-        }
-        RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc,
-                                     arg1, arg2, arg3, arg4) );
+	if (aSelector != last_0) {
+	    if (aSelector != last_1) {
+		if (flip) {
+		    pIlc = &ilc_0;
+		    flip = 0;
+		    last_0 = aSelector;
+		} else {
+		    pIlc = &ilc_1;
+		    flip = 1;
+		    last_1 = aSelector;
+		}
+		pIlc->ilc_func = __SEND4ADDR__;
+		if (pIlc->ilc_poly) {
+		    __flushPolyCache(pIlc->ilc_poly);
+		    pIlc->ilc_poly = 0;
+		}
+	    } else {
+		pIlc = &ilc_1;
+	    }
+	} else {
+	    pIlc = &ilc_0;
+	}
+	RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc,
+				     arg1, arg2, arg3, arg4) );
     } else {
-        static struct inlineCache ilc4 = __DUMMYILCSELF4(@line+1);
-        RETURN (_SEND4(self, aSelector, nil, &ilc4,
-                       arg1, arg2, arg3, arg4));
+	static struct inlineCache ilc4 = __DUMMYILCSELF4(@line+1);
+	RETURN (_SEND4(self, aSelector, nil, &ilc4,
+		       arg1, arg2, arg3, arg4));
     }
 %}.
     ^ self perform:aSelector withArguments:(Array with:arg1 with:arg2 with:arg3 with:arg4)
@@ -5681,38 +5728,38 @@
     static flip = 0;
 
     if (InterruptPending == nil) {
-        if (aSelector != last_0) {
-            if (aSelector != last_1) {
-                if (flip) {
-                    pIlc = &ilc_0;
-                    flip = 0;
-                    last_0 = aSelector;
-                } else {
-                    pIlc = &ilc_1;
-                    flip = 1;
-                    last_1 = aSelector;
-                }
-                pIlc->ilc_func = __SEND5ADDR__;
-                if (pIlc->ilc_poly) {
-                    __flushPolyCache(pIlc->ilc_poly);
-                    pIlc->ilc_poly = 0;
-                }
-            } else {
-                pIlc = &ilc_1;
-            }
-        } else {
-            pIlc = &ilc_0;
-        }
-        RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc,
-                                     arg1, arg2, arg3, arg4, arg5) );
+	if (aSelector != last_0) {
+	    if (aSelector != last_1) {
+		if (flip) {
+		    pIlc = &ilc_0;
+		    flip = 0;
+		    last_0 = aSelector;
+		} else {
+		    pIlc = &ilc_1;
+		    flip = 1;
+		    last_1 = aSelector;
+		}
+		pIlc->ilc_func = __SEND5ADDR__;
+		if (pIlc->ilc_poly) {
+		    __flushPolyCache(pIlc->ilc_poly);
+		    pIlc->ilc_poly = 0;
+		}
+	    } else {
+		pIlc = &ilc_1;
+	    }
+	} else {
+	    pIlc = &ilc_0;
+	}
+	RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc,
+				     arg1, arg2, arg3, arg4, arg5) );
     } else {
-        static struct inlineCache ilc5 = __DUMMYILCSELF5(@line+1);
-        RETURN (_SEND5(self, aSelector, nil, &ilc5,
-                       arg1, arg2, arg3, arg4, arg5));
+	static struct inlineCache ilc5 = __DUMMYILCSELF5(@line+1);
+	RETURN (_SEND5(self, aSelector, nil, &ilc5,
+		       arg1, arg2, arg3, arg4, arg5));
     }
 %}.
     ^ self perform:aSelector withArguments:(Array with:arg1 with:arg2 with:arg3 with:arg4
-                                                  with:arg5)
+						  with:arg5)
 
 !
 
@@ -5728,39 +5775,39 @@
     static flip = 0;
 
     if (InterruptPending == nil) {
-        if (aSelector != last_0) {
-            if (aSelector != last_1) {
-                if (flip) {
-                    pIlc = &ilc_0;
-                    flip = 0;
-                    last_0 = aSelector;
-                } else {
-                    pIlc = &ilc_1;
-                    flip = 1;
-                    last_1 = aSelector;
-                }
-                pIlc->ilc_func = __SEND6ADDR__;
-                if (pIlc->ilc_poly) {
-                    __flushPolyCache(pIlc->ilc_poly);
-                    pIlc->ilc_poly = 0;
-                }
-            } else {
-                pIlc = &ilc_1;
-            }
-        } else {
-            pIlc = &ilc_0;
-        }
-
-        RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc,
-                                     arg1, arg2, arg3, arg4, arg5, arg6) );
+	if (aSelector != last_0) {
+	    if (aSelector != last_1) {
+		if (flip) {
+		    pIlc = &ilc_0;
+		    flip = 0;
+		    last_0 = aSelector;
+		} else {
+		    pIlc = &ilc_1;
+		    flip = 1;
+		    last_1 = aSelector;
+		}
+		pIlc->ilc_func = __SEND6ADDR__;
+		if (pIlc->ilc_poly) {
+		    __flushPolyCache(pIlc->ilc_poly);
+		    pIlc->ilc_poly = 0;
+		}
+	    } else {
+		pIlc = &ilc_1;
+	    }
+	} else {
+	    pIlc = &ilc_0;
+	}
+
+	RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc,
+				     arg1, arg2, arg3, arg4, arg5, arg6) );
     } else {
-        static struct inlineCache ilc6 = __DUMMYILCSELF6(@line+1);
-        RETURN (_SEND6(self, aSelector, nil, &ilc6,
-                       arg1, arg2, arg3, arg4, arg5, arg6));
+	static struct inlineCache ilc6 = __DUMMYILCSELF6(@line+1);
+	RETURN (_SEND6(self, aSelector, nil, &ilc6,
+		       arg1, arg2, arg3, arg4, arg5, arg6));
     }
 %}.
     ^ self perform:aSelector withArguments:(Array with:arg1 with:arg2 with:arg3 with:arg4
-                                                  with:arg5 with:arg6)
+						  with:arg5 with:arg6)
 
 !
 
@@ -5776,398 +5823,398 @@
     OBJ l;
 
     if (__isArrayLike(argArray)) {
-        nargs = __arraySize(argArray);
-        argP = __arrayVal(argArray);
+	nargs = __arraySize(argArray);
+	argP = __arrayVal(argArray);
     } else {
-        if (__isNonNilObject(argArray)) {
-            static struct inlineCache ilcSize = __ILC0(@line);
-            int i;
-
-            numberOfArgs = (*ilcSize.ilc_func)(argArray, @symbol(size), nil, &ilcSize);
-            if (!__isSmallInteger(numberOfArgs))
-                goto bad;
-            nargs = __intVal(numberOfArgs);
-            argP = (OBJ *)(&a1);
-            for (i=1; i <= nargs; i++) {
-                *argP++ = __AT_(argArray, __mkSmallInteger(i));
-            }
-            argP = (OBJ *)(&a1);
-        } else {
-            nargs = 0;
-        }
+	if (__isNonNilObject(argArray)) {
+	    static struct inlineCache ilcSize = __ILC0(@line);
+	    int i;
+
+	    numberOfArgs = (*ilcSize.ilc_func)(argArray, @symbol(size), nil, &ilcSize);
+	    if (!__isSmallInteger(numberOfArgs))
+		goto bad;
+	    nargs = __intVal(numberOfArgs);
+	    argP = (OBJ *)(&a1);
+	    for (i=1; i <= nargs; i++) {
+		*argP++ = __AT_(argArray, __mkSmallInteger(i));
+	    }
+	    argP = (OBJ *)(&a1);
+	} else {
+	    nargs = 0;
+	}
     }
     switch (nargs) {
-        case 0:
-            if (InterruptPending == nil) {
-                static OBJ last0_0 = nil; static struct inlineCache ilc0_0 = __ILCPERF0(@line);
-                static OBJ last0_1 = nil; static struct inlineCache ilc0_1 = __ILCPERF0(@line);
-                static OBJ last0_2 = nil; static struct inlineCache ilc0_2 = __ILCPERF0(@line);
-                static OBJ last0_3 = nil; static struct inlineCache ilc0_3 = __ILCPERF0(@line);
-                static int flip0 = 0;
-                struct inlineCache *pIlc;
-
-                if (aSelector == last0_0) {
-                    pIlc = &ilc0_0;
-                } else if (aSelector == last0_1) {
-                    pIlc = &ilc0_1;
-                } else if (aSelector == last0_2) {
-                    pIlc = &ilc0_2;
-                } else if (aSelector == last0_3) {
-                    pIlc = &ilc0_3;
-                } else {
-                    if (flip0 == 0) {
-                        pIlc = &ilc0_0;
-                        flip0 = 1;
-                        last0_0 = aSelector;
-                    } else if (flip0 == 1) {
-                        pIlc = &ilc0_1;
-                        flip0 = 2;
-                        last0_1 = aSelector;
-                    } else if (flip0 == 2) {
-                        pIlc = &ilc0_2;
-                        flip0 = 3;
-                        last0_2 = aSelector;
-                    } else {
-                        pIlc = &ilc0_3;
-                        flip0 = 0;
-                        last0_3 = aSelector;
-                    }
-
-                    pIlc->ilc_func = __SEND0ADDR__;
-                    if (pIlc->ilc_poly) {
-                        __flushPolyCache(pIlc->ilc_poly);
-                        pIlc->ilc_poly = 0;
-                    }
-                }
-                RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc));
-            } else {
-                static struct inlineCache ilc0 = __DUMMYILCSELF0(@line+1);
-                RETURN (_SEND0(self, aSelector, nil, &ilc0));
-            }
-
-        case 1:
-            if (InterruptPending == nil) {
-                static OBJ last1_0 = nil; static struct inlineCache ilc1_0 = __ILCPERF1(@line);
-                static OBJ last1_1 = nil; static struct inlineCache ilc1_1 = __ILCPERF1(@line);
-                static OBJ last1_2 = nil; static struct inlineCache ilc1_2 = __ILCPERF1(@line);
-                static OBJ last1_3 = nil; static struct inlineCache ilc1_3 = __ILCPERF1(@line);
-                static int flip1 = 0;
-                struct inlineCache *pIlc;
-
-                if (aSelector == last1_0) {
-                    pIlc = &ilc1_0;
-                } else if (aSelector == last1_1) {
-                    pIlc = &ilc1_1;
-                } else if (aSelector == last1_2) {
-                    pIlc = &ilc1_2;
-                } else if (aSelector == last1_3) {
-                    pIlc = &ilc1_3;
-                } else {
-                    if (flip1 == 0) {
-                        pIlc = &ilc1_0;
-                        flip1 = 1;
-                        last1_0 = aSelector;
-                    } else if (flip1 == 1) {
-                        pIlc = &ilc1_1;
-                        flip1 = 2;
-                        last1_1 = aSelector;
-                    } else if (flip1 == 2) {
-                        pIlc = &ilc1_2;
-                        flip1 = 3;
-                        last1_2 = aSelector;
-                    } else {
-                        pIlc = &ilc1_3;
-                        flip1 = 0;
-                        last1_3 = aSelector;
-                    }
-
-                    pIlc->ilc_func = __SEND1ADDR__;
-                    if (pIlc->ilc_poly) {
-                        __flushPolyCache(pIlc->ilc_poly);
-                        pIlc->ilc_poly = 0;
-                    }
-                }
-                RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0]));
-            } else {
-                static struct inlineCache ilc1 = __DUMMYILCSELF1(@line+1);
-                RETURN (_SEND1(self, aSelector, nil, &ilc1, argP[0]));
-            }
-
-        case 2:
-            if (InterruptPending == nil) {
-                static OBJ last2_0 = nil; static struct inlineCache ilc2_0 = __ILCPERF2(@line);
-                static OBJ last2_1 = nil; static struct inlineCache ilc2_1 = __ILCPERF2(@line);
-                static int flip2 = 0;
-                struct inlineCache *pIlc;
-
-                if (aSelector == last2_0) {
-                    pIlc = &ilc2_0;
-                } else if (aSelector == last2_1) {
-                    pIlc = &ilc2_1;
-                } else {
-                    if (flip2 == 0) {
-                        pIlc = &ilc2_0;
-                        flip2 = 1;
-                        last2_0 = aSelector;
-                    } else {
-                        pIlc = &ilc2_1;
-                        flip2 = 0;
-                        last2_1 = aSelector;
-                    }
-
-                    pIlc->ilc_func = __SEND2ADDR__;
-                    if (pIlc->ilc_poly) {
-                        __flushPolyCache(pIlc->ilc_poly);
-                        pIlc->ilc_poly = 0;
-                    }
-                }
-                RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0], argP[1]));
-            } else {
-                static struct inlineCache ilc2 = __DUMMYILCSELF2(@line+1);
-                RETURN (_SEND2(self, aSelector, nil, &ilc2, argP[0], argP[1]));
-            }
-
-        case 3:
-            if (InterruptPending == nil) {
-                static OBJ last3_0 = nil; static struct inlineCache ilc3_0 = __ILCPERF3(@line);
-                static OBJ last3_1 = nil; static struct inlineCache ilc3_1 = __ILCPERF3(@line);
-                static int flip3 = 0;
-                struct inlineCache *pIlc;
-
-                if (aSelector == last3_0) {
-                    pIlc = &ilc3_0;
-                } else if (aSelector == last3_1) {
-                    pIlc = &ilc3_1;
-                } else {
-                    if (flip3 == 0) {
-                        pIlc = &ilc3_0;
-                        flip3 = 1;
-                        last3_0 = aSelector;
-                    } else {
-                        pIlc = &ilc3_1;
-                        flip3 = 0;
-                        last3_1 = aSelector;
-                    }
-
-                    pIlc->ilc_func = __SEND3ADDR__;
-                    if (pIlc->ilc_poly) {
-                        __flushPolyCache(pIlc->ilc_poly);
-                        pIlc->ilc_poly = 0;
-                    }
-                }
-                RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0], argP[1], argP[2]));
-            } else {
-                static struct inlineCache ilc3 = __DUMMYILCSELF3(@line+1);
-                RETURN (_SEND3(self, aSelector, nil, &ilc3, argP[0], argP[1], argP[2]));
-            }
-
-        case 4:
-            {
-                static OBJ last4 = nil; static struct inlineCache ilc4 = __ILCPERF4(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last4)) {
-                    ilc4.ilc_func = __SEND4ADDR__;
-                    if (ilc4.ilc_poly) {
-                        __flushPolyCache(ilc4.ilc_poly);
-                        ilc4.ilc_poly = 0;
-                    }
-                    last4 = aSelector;
-                }
-                RETURN ( (*ilc4.ilc_func)(self, aSelector, nil, &ilc4,
-                                                argP[0], argP[1], argP[2], argP[3]));
-            }
-
-        case 5:
-            {
-                static OBJ last5 = nil; static struct inlineCache ilc5 = __ILCPERF5(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last5)) {
-                    ilc5.ilc_func = __SEND5ADDR__;
-                    if (ilc5.ilc_poly) {
-                        __flushPolyCache(ilc5.ilc_poly);
-                        ilc5.ilc_poly = 0;
-                    }
-                    last5 = aSelector;
-                }
-                RETURN ( (*ilc5.ilc_func)(self, aSelector, nil, &ilc5,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4]));
-            }
-
-        case 6:
-            {
-                static OBJ last6 = nil; static struct inlineCache ilc6 = __ILCPERF6(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last6)) {
-                    ilc6.ilc_func = __SEND6ADDR__;
-                    if (ilc6.ilc_poly) {
-                        __flushPolyCache(ilc6.ilc_poly);
-                        ilc6.ilc_poly = 0;
-                    }
-                    last6 = aSelector;
-                }
-                RETURN ( (*ilc6.ilc_func)(self, aSelector, nil, &ilc6,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5]));
-            }
-
-        case 7:
-            {
-                static OBJ last7 = nil; static struct inlineCache ilc7 = __ILCPERF7(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last7)) {
-                    ilc7.ilc_func = __SEND7ADDR__;
-                    if (ilc7.ilc_poly) {
-                        __flushPolyCache(ilc7.ilc_poly);
-                        ilc7.ilc_poly = 0;
-                    }
-                    last7 = aSelector;
-                }
-                RETURN ( (*ilc7.ilc_func)(self, aSelector, nil, &ilc7,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5], argP[6]));
-            }
-
-        case 8:
-            {
-                static OBJ last8 = nil; static struct inlineCache ilc8 = __ILCPERF8(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last8)) {
-                    ilc8.ilc_func = __SEND8ADDR__;
-                    if (ilc8.ilc_poly) {
-                        __flushPolyCache(ilc8.ilc_poly);
-                        ilc8.ilc_poly = 0;
-                    }
-                    last8 = aSelector;
-                }
-                RETURN ( (*ilc8.ilc_func)(self, aSelector, nil, &ilc8,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5], argP[6], argP[7]));
-            }
-
-        case 9:
-            {
-                static OBJ last9 = nil; static struct inlineCache ilc9 = __ILCPERF9(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last9)) {
-                    ilc9.ilc_func = __SEND9ADDR__;
-                    if (ilc9.ilc_poly) {
-                        __flushPolyCache(ilc9.ilc_poly);
-                        ilc9.ilc_poly = 0;
-                    }
-                    last9 = aSelector;
-                }
-                RETURN ( (*ilc9.ilc_func)(self, aSelector, nil, &ilc9,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5], argP[6], argP[7], argP[8]));
-            }
-
-        case 10:
-            {
-                static OBJ last10 = nil; static struct inlineCache ilc10 = __ILCPERF10(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last10)) {
-                    ilc10.ilc_func = __SEND10ADDR__;
-                    if (ilc10.ilc_poly) {
-                        __flushPolyCache(ilc10.ilc_poly);
-                        ilc10.ilc_poly = 0;
-                    }
-                    last10 = aSelector;
-                }
-                RETURN ( (*ilc10.ilc_func)(self, aSelector, nil, &ilc10,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5], argP[6], argP[7], argP[8], argP[9]));
-            }
-
-        case 11:
-            {
-                static OBJ last11 = nil; static struct inlineCache ilc11 = __ILCPERF11(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last11)) {
-                    ilc11.ilc_func = __SEND11ADDR__;
-                    if (ilc11.ilc_poly) {
-                        __flushPolyCache(ilc11.ilc_poly);
-                        ilc11.ilc_poly = 0;
-                    }
-                    last11 = aSelector;
-                }
-                RETURN ( (*ilc11.ilc_func)(self, aSelector, nil, &ilc11,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5], argP[6], argP[7], argP[8], argP[9],
-                                                argP[10]));
-            }
-
-        case 12:
-            {
-                static OBJ last12 = nil; static struct inlineCache ilc12 = __ILCPERF12(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last12)) {
-                    ilc12.ilc_func = __SEND12ADDR__;
-                    if (ilc12.ilc_poly) {
-                        __flushPolyCache(ilc12.ilc_poly);
-                        ilc12.ilc_poly = 0;
-                    }
-                    last12 = aSelector;
-                }
-                RETURN ( (*ilc12.ilc_func)(self, aSelector, nil, &ilc12,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5], argP[6], argP[7], argP[8], argP[9],
-                                                argP[10], argP[11]));
-            }
-
-        case 13:
-            {
-                static OBJ last13 = nil; static struct inlineCache ilc13 = __ILCPERF13(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last13)) {
-                    ilc13.ilc_func = __SEND13ADDR__;
-                    if (ilc13.ilc_poly) {
-                        __flushPolyCache(ilc13.ilc_poly);
-                        ilc13.ilc_poly = 0;
-                    }
-                    last13 = aSelector;
-                }
-                RETURN ( (*ilc13.ilc_func)(self, aSelector, nil, &ilc13,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5], argP[6], argP[7], argP[8], argP[9],
-                                                argP[10], argP[11], argP[12]));
-            }
-
-        case 14:
-            {
-                static OBJ last14 = nil; static struct inlineCache ilc14 = __ILCPERF14(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last14)) {
-                    ilc14.ilc_func = __SEND14ADDR__;
-                    if (ilc14.ilc_poly) {
-                        __flushPolyCache(ilc14.ilc_poly);
-                        ilc14.ilc_poly = 0;
-                    }
-                    last14 = aSelector;
-                }
-                RETURN ( (*ilc14.ilc_func)(self, aSelector, nil, &ilc14,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5], argP[6], argP[7], argP[8], argP[9],
-                                                argP[10], argP[11], argP[12], argP[13]));
-            }
-
-        case 15:
-            {
-                static OBJ last15 = nil; static struct inlineCache ilc15 = __ILCPERF15(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last15)) {
-                    ilc15.ilc_func = __SEND15ADDR__;
-                    if (ilc15.ilc_poly) {
-                        __flushPolyCache(ilc15.ilc_poly);
-                        ilc15.ilc_poly = 0;
-                    }
-                    last15 = aSelector;
-                }
-                RETURN ( (*ilc15.ilc_func)(self, aSelector, nil, &ilc15,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5], argP[6], argP[7], argP[8], argP[9],
-                                                argP[10], argP[11], argP[12], argP[13],
-                                                argP[14]));
-            }
+	case 0:
+	    if (InterruptPending == nil) {
+		static OBJ last0_0 = nil; static struct inlineCache ilc0_0 = __ILCPERF0(@line);
+		static OBJ last0_1 = nil; static struct inlineCache ilc0_1 = __ILCPERF0(@line);
+		static OBJ last0_2 = nil; static struct inlineCache ilc0_2 = __ILCPERF0(@line);
+		static OBJ last0_3 = nil; static struct inlineCache ilc0_3 = __ILCPERF0(@line);
+		static int flip0 = 0;
+		struct inlineCache *pIlc;
+
+		if (aSelector == last0_0) {
+		    pIlc = &ilc0_0;
+		} else if (aSelector == last0_1) {
+		    pIlc = &ilc0_1;
+		} else if (aSelector == last0_2) {
+		    pIlc = &ilc0_2;
+		} else if (aSelector == last0_3) {
+		    pIlc = &ilc0_3;
+		} else {
+		    if (flip0 == 0) {
+			pIlc = &ilc0_0;
+			flip0 = 1;
+			last0_0 = aSelector;
+		    } else if (flip0 == 1) {
+			pIlc = &ilc0_1;
+			flip0 = 2;
+			last0_1 = aSelector;
+		    } else if (flip0 == 2) {
+			pIlc = &ilc0_2;
+			flip0 = 3;
+			last0_2 = aSelector;
+		    } else {
+			pIlc = &ilc0_3;
+			flip0 = 0;
+			last0_3 = aSelector;
+		    }
+
+		    pIlc->ilc_func = __SEND0ADDR__;
+		    if (pIlc->ilc_poly) {
+			__flushPolyCache(pIlc->ilc_poly);
+			pIlc->ilc_poly = 0;
+		    }
+		}
+		RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc));
+	    } else {
+		static struct inlineCache ilc0 = __DUMMYILCSELF0(@line+1);
+		RETURN (_SEND0(self, aSelector, nil, &ilc0));
+	    }
+
+	case 1:
+	    if (InterruptPending == nil) {
+		static OBJ last1_0 = nil; static struct inlineCache ilc1_0 = __ILCPERF1(@line);
+		static OBJ last1_1 = nil; static struct inlineCache ilc1_1 = __ILCPERF1(@line);
+		static OBJ last1_2 = nil; static struct inlineCache ilc1_2 = __ILCPERF1(@line);
+		static OBJ last1_3 = nil; static struct inlineCache ilc1_3 = __ILCPERF1(@line);
+		static int flip1 = 0;
+		struct inlineCache *pIlc;
+
+		if (aSelector == last1_0) {
+		    pIlc = &ilc1_0;
+		} else if (aSelector == last1_1) {
+		    pIlc = &ilc1_1;
+		} else if (aSelector == last1_2) {
+		    pIlc = &ilc1_2;
+		} else if (aSelector == last1_3) {
+		    pIlc = &ilc1_3;
+		} else {
+		    if (flip1 == 0) {
+			pIlc = &ilc1_0;
+			flip1 = 1;
+			last1_0 = aSelector;
+		    } else if (flip1 == 1) {
+			pIlc = &ilc1_1;
+			flip1 = 2;
+			last1_1 = aSelector;
+		    } else if (flip1 == 2) {
+			pIlc = &ilc1_2;
+			flip1 = 3;
+			last1_2 = aSelector;
+		    } else {
+			pIlc = &ilc1_3;
+			flip1 = 0;
+			last1_3 = aSelector;
+		    }
+
+		    pIlc->ilc_func = __SEND1ADDR__;
+		    if (pIlc->ilc_poly) {
+			__flushPolyCache(pIlc->ilc_poly);
+			pIlc->ilc_poly = 0;
+		    }
+		}
+		RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0]));
+	    } else {
+		static struct inlineCache ilc1 = __DUMMYILCSELF1(@line+1);
+		RETURN (_SEND1(self, aSelector, nil, &ilc1, argP[0]));
+	    }
+
+	case 2:
+	    if (InterruptPending == nil) {
+		static OBJ last2_0 = nil; static struct inlineCache ilc2_0 = __ILCPERF2(@line);
+		static OBJ last2_1 = nil; static struct inlineCache ilc2_1 = __ILCPERF2(@line);
+		static int flip2 = 0;
+		struct inlineCache *pIlc;
+
+		if (aSelector == last2_0) {
+		    pIlc = &ilc2_0;
+		} else if (aSelector == last2_1) {
+		    pIlc = &ilc2_1;
+		} else {
+		    if (flip2 == 0) {
+			pIlc = &ilc2_0;
+			flip2 = 1;
+			last2_0 = aSelector;
+		    } else {
+			pIlc = &ilc2_1;
+			flip2 = 0;
+			last2_1 = aSelector;
+		    }
+
+		    pIlc->ilc_func = __SEND2ADDR__;
+		    if (pIlc->ilc_poly) {
+			__flushPolyCache(pIlc->ilc_poly);
+			pIlc->ilc_poly = 0;
+		    }
+		}
+		RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0], argP[1]));
+	    } else {
+		static struct inlineCache ilc2 = __DUMMYILCSELF2(@line+1);
+		RETURN (_SEND2(self, aSelector, nil, &ilc2, argP[0], argP[1]));
+	    }
+
+	case 3:
+	    if (InterruptPending == nil) {
+		static OBJ last3_0 = nil; static struct inlineCache ilc3_0 = __ILCPERF3(@line);
+		static OBJ last3_1 = nil; static struct inlineCache ilc3_1 = __ILCPERF3(@line);
+		static int flip3 = 0;
+		struct inlineCache *pIlc;
+
+		if (aSelector == last3_0) {
+		    pIlc = &ilc3_0;
+		} else if (aSelector == last3_1) {
+		    pIlc = &ilc3_1;
+		} else {
+		    if (flip3 == 0) {
+			pIlc = &ilc3_0;
+			flip3 = 1;
+			last3_0 = aSelector;
+		    } else {
+			pIlc = &ilc3_1;
+			flip3 = 0;
+			last3_1 = aSelector;
+		    }
+
+		    pIlc->ilc_func = __SEND3ADDR__;
+		    if (pIlc->ilc_poly) {
+			__flushPolyCache(pIlc->ilc_poly);
+			pIlc->ilc_poly = 0;
+		    }
+		}
+		RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0], argP[1], argP[2]));
+	    } else {
+		static struct inlineCache ilc3 = __DUMMYILCSELF3(@line+1);
+		RETURN (_SEND3(self, aSelector, nil, &ilc3, argP[0], argP[1], argP[2]));
+	    }
+
+	case 4:
+	    {
+		static OBJ last4 = nil; static struct inlineCache ilc4 = __ILCPERF4(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last4)) {
+		    ilc4.ilc_func = __SEND4ADDR__;
+		    if (ilc4.ilc_poly) {
+			__flushPolyCache(ilc4.ilc_poly);
+			ilc4.ilc_poly = 0;
+		    }
+		    last4 = aSelector;
+		}
+		RETURN ( (*ilc4.ilc_func)(self, aSelector, nil, &ilc4,
+						argP[0], argP[1], argP[2], argP[3]));
+	    }
+
+	case 5:
+	    {
+		static OBJ last5 = nil; static struct inlineCache ilc5 = __ILCPERF5(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last5)) {
+		    ilc5.ilc_func = __SEND5ADDR__;
+		    if (ilc5.ilc_poly) {
+			__flushPolyCache(ilc5.ilc_poly);
+			ilc5.ilc_poly = 0;
+		    }
+		    last5 = aSelector;
+		}
+		RETURN ( (*ilc5.ilc_func)(self, aSelector, nil, &ilc5,
+						argP[0], argP[1], argP[2], argP[3], argP[4]));
+	    }
+
+	case 6:
+	    {
+		static OBJ last6 = nil; static struct inlineCache ilc6 = __ILCPERF6(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last6)) {
+		    ilc6.ilc_func = __SEND6ADDR__;
+		    if (ilc6.ilc_poly) {
+			__flushPolyCache(ilc6.ilc_poly);
+			ilc6.ilc_poly = 0;
+		    }
+		    last6 = aSelector;
+		}
+		RETURN ( (*ilc6.ilc_func)(self, aSelector, nil, &ilc6,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5]));
+	    }
+
+	case 7:
+	    {
+		static OBJ last7 = nil; static struct inlineCache ilc7 = __ILCPERF7(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last7)) {
+		    ilc7.ilc_func = __SEND7ADDR__;
+		    if (ilc7.ilc_poly) {
+			__flushPolyCache(ilc7.ilc_poly);
+			ilc7.ilc_poly = 0;
+		    }
+		    last7 = aSelector;
+		}
+		RETURN ( (*ilc7.ilc_func)(self, aSelector, nil, &ilc7,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5], argP[6]));
+	    }
+
+	case 8:
+	    {
+		static OBJ last8 = nil; static struct inlineCache ilc8 = __ILCPERF8(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last8)) {
+		    ilc8.ilc_func = __SEND8ADDR__;
+		    if (ilc8.ilc_poly) {
+			__flushPolyCache(ilc8.ilc_poly);
+			ilc8.ilc_poly = 0;
+		    }
+		    last8 = aSelector;
+		}
+		RETURN ( (*ilc8.ilc_func)(self, aSelector, nil, &ilc8,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5], argP[6], argP[7]));
+	    }
+
+	case 9:
+	    {
+		static OBJ last9 = nil; static struct inlineCache ilc9 = __ILCPERF9(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last9)) {
+		    ilc9.ilc_func = __SEND9ADDR__;
+		    if (ilc9.ilc_poly) {
+			__flushPolyCache(ilc9.ilc_poly);
+			ilc9.ilc_poly = 0;
+		    }
+		    last9 = aSelector;
+		}
+		RETURN ( (*ilc9.ilc_func)(self, aSelector, nil, &ilc9,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5], argP[6], argP[7], argP[8]));
+	    }
+
+	case 10:
+	    {
+		static OBJ last10 = nil; static struct inlineCache ilc10 = __ILCPERF10(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last10)) {
+		    ilc10.ilc_func = __SEND10ADDR__;
+		    if (ilc10.ilc_poly) {
+			__flushPolyCache(ilc10.ilc_poly);
+			ilc10.ilc_poly = 0;
+		    }
+		    last10 = aSelector;
+		}
+		RETURN ( (*ilc10.ilc_func)(self, aSelector, nil, &ilc10,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5], argP[6], argP[7], argP[8], argP[9]));
+	    }
+
+	case 11:
+	    {
+		static OBJ last11 = nil; static struct inlineCache ilc11 = __ILCPERF11(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last11)) {
+		    ilc11.ilc_func = __SEND11ADDR__;
+		    if (ilc11.ilc_poly) {
+			__flushPolyCache(ilc11.ilc_poly);
+			ilc11.ilc_poly = 0;
+		    }
+		    last11 = aSelector;
+		}
+		RETURN ( (*ilc11.ilc_func)(self, aSelector, nil, &ilc11,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5], argP[6], argP[7], argP[8], argP[9],
+						argP[10]));
+	    }
+
+	case 12:
+	    {
+		static OBJ last12 = nil; static struct inlineCache ilc12 = __ILCPERF12(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last12)) {
+		    ilc12.ilc_func = __SEND12ADDR__;
+		    if (ilc12.ilc_poly) {
+			__flushPolyCache(ilc12.ilc_poly);
+			ilc12.ilc_poly = 0;
+		    }
+		    last12 = aSelector;
+		}
+		RETURN ( (*ilc12.ilc_func)(self, aSelector, nil, &ilc12,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5], argP[6], argP[7], argP[8], argP[9],
+						argP[10], argP[11]));
+	    }
+
+	case 13:
+	    {
+		static OBJ last13 = nil; static struct inlineCache ilc13 = __ILCPERF13(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last13)) {
+		    ilc13.ilc_func = __SEND13ADDR__;
+		    if (ilc13.ilc_poly) {
+			__flushPolyCache(ilc13.ilc_poly);
+			ilc13.ilc_poly = 0;
+		    }
+		    last13 = aSelector;
+		}
+		RETURN ( (*ilc13.ilc_func)(self, aSelector, nil, &ilc13,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5], argP[6], argP[7], argP[8], argP[9],
+						argP[10], argP[11], argP[12]));
+	    }
+
+	case 14:
+	    {
+		static OBJ last14 = nil; static struct inlineCache ilc14 = __ILCPERF14(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last14)) {
+		    ilc14.ilc_func = __SEND14ADDR__;
+		    if (ilc14.ilc_poly) {
+			__flushPolyCache(ilc14.ilc_poly);
+			ilc14.ilc_poly = 0;
+		    }
+		    last14 = aSelector;
+		}
+		RETURN ( (*ilc14.ilc_func)(self, aSelector, nil, &ilc14,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5], argP[6], argP[7], argP[8], argP[9],
+						argP[10], argP[11], argP[12], argP[13]));
+	    }
+
+	case 15:
+	    {
+		static OBJ last15 = nil; static struct inlineCache ilc15 = __ILCPERF15(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last15)) {
+		    ilc15.ilc_func = __SEND15ADDR__;
+		    if (ilc15.ilc_poly) {
+			__flushPolyCache(ilc15.ilc_poly);
+			ilc15.ilc_poly = 0;
+		    }
+		    last15 = aSelector;
+		}
+		RETURN ( (*ilc15.ilc_func)(self, aSelector, nil, &ilc15,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5], argP[6], argP[7], argP[8], argP[9],
+						argP[10], argP[11], argP[12], argP[13],
+						argP[14]));
+	    }
     }
 bad:;
 %}.
@@ -6183,7 +6230,7 @@
      If the message expects an argument, pass arg."
 
     aSelector numArgs == 1 ifTrue:[
-        ^ self perform:aSelector with:arg
+	^ self perform:aSelector with:arg
     ].
     ^ self perform:aSelector
 
@@ -6208,10 +6255,10 @@
 
     numArgs := aSelector numArgs.
     numArgs == 0 ifTrue:[
-        ^ self perform:aSelector
+	^ self perform:aSelector
     ].
     numArgs == 1 ifTrue:[
-        ^ self perform:aSelector with:optionalArg1
+	^ self perform:aSelector with:optionalArg1
     ].
     ^ self perform:aSelector with:optionalArg1 with:optionalArg2.
 
@@ -6236,13 +6283,13 @@
 
     numArgs := aSelector numArgs.
     numArgs == 0 ifTrue:[
-        ^ self perform:aSelector
+	^ self perform:aSelector
     ].
     numArgs == 1 ifTrue:[
-        ^ self perform:aSelector with:optionalArg1
+	^ self perform:aSelector with:optionalArg1
     ].
     numArgs == 2 ifTrue:[
-        ^ self perform:aSelector with:optionalArg1 with:optionalArg2
+	^ self perform:aSelector with:optionalArg1 with:optionalArg2
     ].
     ^ self perform:aSelector with:optionalArg1 with:optionalArg2 with:optionalArg3.
 
@@ -6267,16 +6314,16 @@
 
     numArgs := aSelector numArgs.
     numArgs == 0 ifTrue:[
-        ^ self perform:aSelector
+	^ self perform:aSelector
     ].
     numArgs == 1 ifTrue:[
-        ^ self perform:aSelector with:optionalArg1
+	^ self perform:aSelector with:optionalArg1
     ].
     numArgs == 2 ifTrue:[
-        ^ self perform:aSelector with:optionalArg1 with:optionalArg2
+	^ self perform:aSelector with:optionalArg1 with:optionalArg2
     ].
     numArgs == 3 ifTrue:[
-        ^ self perform:aSelector with:optionalArg1 with:optionalArg2 with:optionalArg3
+	^ self perform:aSelector with:optionalArg1 with:optionalArg2 with:optionalArg3
     ].
     ^ self perform:aSelector with:optionalArg1 with:optionalArg2 with:optionalArg3 with:optionalArg4.
 
@@ -6298,8 +6345,8 @@
      This is a non-object-oriented entry, applying a method
      in a functional way on a receiver.
      Warning:
-         Take care for the method to be appropriate for the
-         receiver - no checking is done by the VM."
+	 Take care for the method to be appropriate for the
+	 receiver - no checking is done by the VM."
 
     ^ aMethod valueWithReceiver:self arguments:#()
 
@@ -6328,8 +6375,8 @@
      This is a non-object-oriented entry, applying a method
      in a functional way on a receiver.
      Warning:
-         Take care for the method to be appropriate for the
-         receiver - no checking is done by the VM."
+	 Take care for the method to be appropriate for the
+	 receiver - no checking is done by the VM."
 
     ^ aMethod valueWithReceiver:self arguments:argumentArray
 
@@ -6349,8 +6396,8 @@
      This is a non-object-oriented entry, applying a method
      in a functional way on a receiver.
      Warning:
-         Take care for the method to be appropriate for the
-         receiver - no checking is done by the VM."
+	 Take care for the method to be appropriate for the
+	 receiver - no checking is done by the VM."
 
     ^ aMethod valueWithReceiver:self arguments:(Array with:arg)
 
@@ -6370,8 +6417,8 @@
      This is a non-object-oriented entry, applying a method
      in a functional way on a receiver.
      Warning:
-         Take care for the method to be appropriate for the
-         receiver - no checking is done by the VM."
+	 Take care for the method to be appropriate for the
+	 receiver - no checking is done by the VM."
 
     ^ aMethod valueWithReceiver:self arguments:(Array with:arg1 with:arg2)
 
@@ -6393,8 +6440,8 @@
      This is a non-object-oriented entry, applying a method
      in a functional way on a receiver.
      Warning:
-         Take care for the method to be appropriate for the
-         receiver - no checking is done by the VM."
+	 Take care for the method to be appropriate for the
+	 receiver - no checking is done by the VM."
 
     ^ aMethod valueWithReceiver:self arguments:(Array with:arg1 with:arg2 with:arg3)
 
@@ -6416,10 +6463,10 @@
 
     ret := 0.
     anAspectSymbol notNil ifTrue:[
-        ret := self perform:anAspectSymbol ifNotUnderstood:[0].
+	ret := self perform:anAspectSymbol ifNotUnderstood:[0].
     ].
     ret == 0 ifTrue:[
-        ^ self elementDescriptorForNonNilInstanceVariables
+	^ self elementDescriptorForNonNilInstanceVariables
     ].
     ^ ret.
 !
@@ -6452,16 +6499,16 @@
 
     instVarNames := theClass allInstVarNames.
     1 to:instSize do:[:i | |var|
-        var := self instVarAt:i.
-        (aBlock value:var) ifTrue:[
-            children add:((instVarNames at:i) -> var)
-        ]
+	var := self instVarAt:i.
+	(aBlock value:var) ifTrue:[
+	    children add:((instVarNames at:i) -> var)
+	]
     ].
 
     varSize ~~ 0 ifTrue:[
-        1 to:varSize do:[:i |
-            children add:(i -> (self basicAt:i))
-        ]
+	1 to:varSize do:[:i |
+	    children add:(i -> (self basicAt:i))
+	]
     ].
 
     ^ children.
@@ -6514,10 +6561,10 @@
     | cls|
 
     (cls := self class) == self ifTrue:[
-        ^ 'a funny object'
+	^ 'a funny object'
     ].
     cls isNil ifTrue:[
-        ^ 'a nil-classes object'        "/ cannot happen
+	^ 'a nil-classes object'        "/ cannot happen
     ].
     ^ cls nameWithArticle
 
@@ -6540,7 +6587,7 @@
         "/ the following allows errorPrint to be used during
         "/ the early init-phase, when no Stderr has been set up.
         "/ (depends on string to respond to #errorPrint)
-        self printString errorPrint.
+        self printString utf8Encoded errorPrint.
         ^ self.
     ].
 
@@ -6560,7 +6607,7 @@
         "/ the following allows errorPrintCR to be used during
         "/ the early init-phase, when no Stderr has been set up.
         "/ (depends on string to respond to #errorPrintCR)
-        self printString errorPrintCR.
+        self printString utf8Encoded errorPrintCR.
         ^ self.
     ].
 
@@ -6607,7 +6654,7 @@
      These messages can be turned on/off by 'Object infoPrinting:true/false'"
 
     InfoPrinting == true ifTrue:[
-        self errorPrint
+	self errorPrint
     ]
 !
 
@@ -6620,7 +6667,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"
@@ -6644,7 +6691,7 @@
     "/ (depends on string to respond to #print)
 
     Stdout isNil ifTrue:[
-        self printString print.
+        self printString utf8Encoded print.
         ^ self
     ].
     self printOn:Stdout
@@ -6660,7 +6707,7 @@
     "/ (depends on string to respond to #printCR)
 
     Stdout isNil ifTrue:[
-        self printString printCR.
+        self printString utf8Encoded printCR.
         ^ self
     ].
     self printOn:Stdout.
@@ -6889,9 +6936,9 @@
     |rslt|
 
     Error handle:[:ex |
-        rslt := exceptionBlock value
+	rslt := exceptionBlock value
     ] do:[
-        rslt := self printString
+	rslt := self printString
     ].
     ^ rslt
 !
@@ -7032,12 +7079,12 @@
     |myClass hasSemi sz "{ Class: SmallInteger }" |
 
     thisContext isRecursive ifTrue:[
-        Object recursiveStoreStringSignal raiseRequestWith:self.
-        'Object [error]: storeString of self referencing object (' errorPrint.
-        self class name errorPrint.
-        ')' errorPrintCR.
-        aStream nextPutAll:'#("recursive")'.
-        ^ self
+	Object recursiveStoreStringSignal raiseRequestWith:self.
+	'Object [error]: storeString of self referencing object (' errorPrint.
+	self class name errorPrint.
+	')' errorPrintCR.
+	aStream nextPutAll:'#("recursive")'.
+	^ self
     ].
 
     myClass := self class.
@@ -7046,34 +7093,34 @@
 
     hasSemi := false.
     myClass isVariable ifTrue:[
-        aStream nextPutAll:' basicNew:'.
-        self basicSize printOn:aStream
+	aStream nextPutAll:' basicNew:'.
+	self basicSize printOn:aStream
     ] ifFalse:[
-        aStream nextPutAll:' basicNew'
+	aStream nextPutAll:' basicNew'
     ].
 
     sz := myClass instSize.
     1 to:sz do:[:i |
-        aStream nextPutAll:' instVarAt:'.
-        i printOn:aStream.
-        aStream nextPutAll:' put:'.
-        (self instVarAt:i) storeOn:aStream.
-        aStream nextPut:$;.
-        hasSemi := true
+	aStream nextPutAll:' instVarAt:'.
+	i printOn:aStream.
+	aStream nextPutAll:' put:'.
+	(self instVarAt:i) storeOn:aStream.
+	aStream nextPut:$;.
+	hasSemi := true
     ].
     myClass isVariable ifTrue:[
-        sz := self basicSize.
-        1 to:sz do:[:i |
-            aStream nextPutAll:' basicAt:'.
-            i printOn:aStream.
-            aStream nextPutAll:' put:'.
-            (self basicAt:i) storeOn:aStream.
-            aStream nextPut:$;.
-            hasSemi := true
-        ]
+	sz := self basicSize.
+	1 to:sz do:[:i |
+	    aStream nextPutAll:' basicAt:'.
+	    i printOn:aStream.
+	    aStream nextPutAll:' put:'.
+	    (self basicAt:i) storeOn:aStream.
+	    aStream nextPut:$;.
+	    hasSemi := true
+	]
     ].
     hasSemi ifTrue:[
-        aStream nextPutAll:' yourself'
+	aStream nextPutAll:' yourself'
     ].
     aStream nextPut:$).
 
@@ -7136,13 +7183,13 @@
     |stream|
 
     stream := Processor activeProcess isSystemProcess
-                        ifTrue:[Stderr]
-                        ifFalse:[Transcript].
+			ifTrue:[Stderr]
+			ifFalse:[Transcript].
     StreamError catch:[
-        aBlock value:stream.
+	aBlock value:stream.
     ].
     stream ~~ Stderr ifTrue:[
-        aBlock value:Stderr.
+	aBlock value:Stderr.
     ].
 
     "Created: / 21-04-2011 / 12:46:21 / cg"
@@ -7172,43 +7219,43 @@
     nInstBytes = OHDR_SIZE + __OBJS2BYTES__( __intVal(__ClassInstPtr(myClass)->c_ninstvars) );
 
     switch ((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
-        case __MASKSMALLINT(POINTERARRAY):
-        case __MASKSMALLINT(WKPOINTERARRAY):
-            nbytes -= nInstBytes;
-            RETURN ( __mkSmallInteger(__BYTES2OBJS__(nbytes)) );
-
-        case __MASKSMALLINT(BYTEARRAY):
-            nbytes -= nInstBytes;
-            RETURN ( __mkSmallInteger(nbytes / sizeof(char)) );
-
-        case __MASKSMALLINT(FLOATARRAY):
-            nbytes -= nInstBytes;
-            RETURN ( __mkSmallInteger(nbytes / sizeof(float)) );
-
-        case __MASKSMALLINT(DOUBLEARRAY):
+	case __MASKSMALLINT(POINTERARRAY):
+	case __MASKSMALLINT(WKPOINTERARRAY):
+	    nbytes -= nInstBytes;
+	    RETURN ( __mkSmallInteger(__BYTES2OBJS__(nbytes)) );
+
+	case __MASKSMALLINT(BYTEARRAY):
+	    nbytes -= nInstBytes;
+	    RETURN ( __mkSmallInteger(nbytes / sizeof(char)) );
+
+	case __MASKSMALLINT(FLOATARRAY):
+	    nbytes -= nInstBytes;
+	    RETURN ( __mkSmallInteger(nbytes / sizeof(float)) );
+
+	case __MASKSMALLINT(DOUBLEARRAY):
 #ifdef __NEED_DOUBLE_ALIGN
-            nInstBytes = (nInstBytes-1+__DOUBLE_ALIGN) &~ (__DOUBLE_ALIGN-1);
+	    nInstBytes = (nInstBytes-1+__DOUBLE_ALIGN) &~ (__DOUBLE_ALIGN-1);
 #endif
-            nbytes -= nInstBytes;
-            RETURN ( __mkSmallInteger(nbytes / sizeof(double)) );
-
-        case __MASKSMALLINT(WORDARRAY):
-        case __MASKSMALLINT(SWORDARRAY):
-            nbytes -= nInstBytes;
-            RETURN ( __mkSmallInteger(nbytes>>1) ); /* notice the hardcoded 2 here - not sizeof(short) */
-
-        case __MASKSMALLINT(LONGARRAY):
-        case __MASKSMALLINT(SLONGARRAY):
-            nbytes -= nInstBytes;
-            RETURN ( __mkSmallInteger(nbytes>>2) ); /* notice the hardcoded 4 here - not sizeof(int) */
-
-        case __MASKSMALLINT(LONGLONGARRAY):
-        case __MASKSMALLINT(SLONGLONGARRAY):
+	    nbytes -= nInstBytes;
+	    RETURN ( __mkSmallInteger(nbytes / sizeof(double)) );
+
+	case __MASKSMALLINT(WORDARRAY):
+	case __MASKSMALLINT(SWORDARRAY):
+	    nbytes -= nInstBytes;
+	    RETURN ( __mkSmallInteger(nbytes>>1) ); /* notice the hardcoded 2 here - not sizeof(short) */
+
+	case __MASKSMALLINT(LONGARRAY):
+	case __MASKSMALLINT(SLONGARRAY):
+	    nbytes -= nInstBytes;
+	    RETURN ( __mkSmallInteger(nbytes>>2) ); /* notice the hardcoded 4 here - not sizeof(int) */
+
+	case __MASKSMALLINT(LONGLONGARRAY):
+	case __MASKSMALLINT(SLONGLONGARRAY):
 #ifdef __NEED_LONGLONG_ALIGN
-            nInstBytes = (nInstBytes-1+__LONGLONG_ALIGN) &~ (__LONGLONG_ALIGN-1);
+	    nInstBytes = (nInstBytes-1+__LONGLONG_ALIGN) &~ (__LONGLONG_ALIGN-1);
 #endif
-            nbytes -= nInstBytes;
-            RETURN ( __mkSmallInteger(nbytes>>3) ); /* notice the hardcoded 8 here - not sizeof(long long) */
+	    nbytes -= nInstBytes;
+	    RETURN ( __mkSmallInteger(nbytes>>3) ); /* notice the hardcoded 8 here - not sizeof(long long) */
     }
 %}.
     ^ 0
@@ -7225,43 +7272,43 @@
 
     myClass := self class.
     myClass isVariable ifTrue:[
-        myClass isPointers ifFalse:[
-            myClass isBytes ifTrue:[
-                ^ self basicSize.
-            ].
-            myClass isWords ifTrue:[
-                ^ self basicSize * 2.
-            ].
-            myClass isSignedWords ifTrue:[
-                ^ self basicSize * 2.
-            ].
-            myClass isLongs ifTrue:[
-                ^ self basicSize * 4.
-            ].
-            myClass isSignedLongs ifTrue:[
-                ^ self basicSize * 4.
-            ].
-            myClass isLongLongs ifTrue:[
-                ^ self basicSize * 8.
-            ].
-            myClass isSignedLongLongs ifTrue:[
-                ^ self basicSize * 8.
-            ].
-            myClass isFloats ifTrue:[
-                ^ self basicSize * (ExternalBytes sizeofFloat)
-            ].
-            myClass isDoubles ifTrue:[
-                ^ self basicSize * (ExternalBytes sizeofDouble)
-            ].
-            self error:'unknown variable size class species'.
-        ]
+	myClass isPointers ifFalse:[
+	    myClass isBytes ifTrue:[
+		^ self basicSize.
+	    ].
+	    myClass isWords ifTrue:[
+		^ self basicSize * 2.
+	    ].
+	    myClass isSignedWords ifTrue:[
+		^ self basicSize * 2.
+	    ].
+	    myClass isLongs ifTrue:[
+		^ self basicSize * 4.
+	    ].
+	    myClass isSignedLongs ifTrue:[
+		^ self basicSize * 4.
+	    ].
+	    myClass isLongLongs ifTrue:[
+		^ self basicSize * 8.
+	    ].
+	    myClass isSignedLongLongs ifTrue:[
+		^ self basicSize * 8.
+	    ].
+	    myClass isFloats ifTrue:[
+		^ self basicSize * (ExternalBytes sizeofFloat)
+	    ].
+	    myClass isDoubles ifTrue:[
+		^ self basicSize * (ExternalBytes sizeofDouble)
+	    ].
+	    self error:'unknown variable size class species'.
+	]
     ].
     ^ 0
 
     "
      Point new byteSize
-     'hello' byteSize      
-     'hello' asUnicode16String byteSize      
+     'hello' byteSize
+     'hello' asUnicode16String byteSize
      (ByteArray with:1 with:2) byteSize
      (FloatArray with:1.5) byteSize
      (DoubleArray with:1.5) byteSize
@@ -7296,7 +7343,7 @@
 %{  /* NOCONTEXT */
 
     if (__lookup(__Class(self), aSelector) == nil) {
-        RETURN ( false );
+	RETURN ( false );
     }
     RETURN ( true );
 %}
@@ -7337,6 +7384,7 @@
     ^ self
 ! !
 
+
 !Object methodsFor:'secure message sending'!
 
 ?: selector
@@ -7402,17 +7450,17 @@
     |val ok|
 
     MessageNotUnderstood handle:[:ex |
-        "/ reject, if the bad message is not the one
-        "/ we have sent originally
-        (ex selector == aSelector and:[ex receiver == self]) ifFalse:[
-            ex reject
-        ].
+	"/ reject, if the bad message is not the one
+	"/ we have sent originally
+	(ex selector == aSelector and:[ex receiver == self]) ifFalse:[
+	    ex reject
+	].
     ] do:[
-        val := self perform:aSelector.
-        ok := true.
+	val := self perform:aSelector.
+	ok := true.
     ].
     ok isNil ifTrue:[
-        ^ exceptionBlock value
+	^ exceptionBlock value
     ].
     ^ val
 
@@ -7436,17 +7484,17 @@
     |val ok|
 
     MessageNotUnderstood handle:[:ex |
-        "/ reject, if the bad message is not the one
-        "/ we have sent originally
-        (ex selector == aSelector and:[ex receiver == self]) ifFalse:[
-            ex reject
-        ]
+	"/ reject, if the bad message is not the one
+	"/ we have sent originally
+	(ex selector == aSelector and:[ex receiver == self]) ifFalse:[
+	    ex reject
+	]
     ] do:[
-        val := self perform:aSelector with:argument.
-        ok := true.
+	val := self perform:aSelector with:argument.
+	ok := true.
     ].
     ok isNil ifTrue:[
-        ^ exceptionBlock value
+	^ exceptionBlock value
     ].
     ^ val
 
@@ -7473,17 +7521,17 @@
     |val ok|
 
     MessageNotUnderstood handle:[:ex |
-        "/ reject, if the bad message is not the one
-        "/ we have sent originally
-        (ex selector == aSelector and:[ex receiver == self]) ifFalse:[
-            ex reject
-        ]
+	"/ reject, if the bad message is not the one
+	"/ we have sent originally
+	(ex selector == aSelector and:[ex receiver == self]) ifFalse:[
+	    ex reject
+	]
     ] do:[
-        val := self perform:aSelector with:arg1 with:arg2.
-        ok := true.
+	val := self perform:aSelector with:arg1 with:arg2.
+	ok := true.
     ].
     ok isNil ifTrue:[
-        ^ exceptionBlock value
+	^ exceptionBlock value
     ].
     ^ val
 !
@@ -7501,17 +7549,17 @@
     |val ok|
 
     MessageNotUnderstood handle:[:ex |
-        "/ reject, if the bad message is not the one
-        "/ we have sent originally.
-        (ex selector == aSelector and:[ex receiver == self]) ifFalse:[
-            ex reject
-        ]
+	"/ reject, if the bad message is not the one
+	"/ we have sent originally.
+	(ex selector == aSelector and:[ex receiver == self]) ifFalse:[
+	    ex reject
+	]
     ] do:[
-        val := self perform:aSelector withArguments:argumentArray.
-        ok := true.
+	val := self perform:aSelector withArguments:argumentArray.
+	ok := true.
     ].
     ok isNil ifTrue:[
-        ^ exceptionBlock value
+	^ exceptionBlock value
     ].
     ^ val
 
@@ -7567,148 +7615,148 @@
     int nInsts, inst;
 
     if (! __isNonNilObject(self)) {
-        RETURN (false);
+	RETURN (false);
     }
 
     if (__isArrayLike(aCollection)) {
-        int nObjs = __arraySize(aCollection);
-        char *minAddr = 0, *maxAddr = 0;
-
-        if (nObjs == 0) {
-            RETURN (false);
-        }
-
-        /*
-         * a little optimization: use the fact that all old objects
-         * refering to a new object are on the remSet; if I am not,
-         * a trivial reject is possible, if all objects are newbees.
-         * as a side effect, gather min/max addresses
-         */
-        if ((__qSpace(self) <= OLDSPACE) && !__isRemembered(self)) {
-            int allNewBees = 1;
-            int i;
-
-            minAddr = (char *)(__ArrayInstPtr(aCollection)->a_element[0]);
-            maxAddr = minAddr;
-
-            for (i=0; i<nObjs; i++) {
-                OBJ anObject;
-
-                anObject = __ArrayInstPtr(aCollection)->a_element[i];
-
-                if (__isNonNilObject(anObject)) {
-                    int spc;
-
-                    if (((spc = __qSpace(anObject)) != NEWSPACE) && (spc != SURVSPACE)) {
-                        allNewBees = 0;
-                    }
-                }
-
-                if ((char *)anObject < minAddr) {
-                    minAddr = (char *)anObject;
-                } else if ((char *)anObject > maxAddr) {
-                    maxAddr = (char *)anObject;
-                }
-            }
-            if (allNewBees) {
-                RETURN (false);
-            }
-        }
-
-        /*
-         * fetch min/max in searchList (if not already done)
-         */
-        if (minAddr == 0) {
-            int i;
-
-            for (i=0; i<nObjs; i++) {
-                OBJ anObject;
-
-                anObject = __ArrayInstPtr(aCollection)->a_element[i];
-                if ((char *)anObject < minAddr) {
-                    minAddr = (char *)anObject;
-                } else if ((char *)anObject > maxAddr) {
-                    maxAddr = (char *)anObject;
-                }
-            }
-        }
-
-        cls = __qClass(self);
-        if (((char *)cls >= minAddr) && ((char *)cls <= maxAddr)) {
+	int nObjs = __arraySize(aCollection);
+	char *minAddr = 0, *maxAddr = 0;
+
+	if (nObjs == 0) {
+	    RETURN (false);
+	}
+
+	/*
+	 * a little optimization: use the fact that all old objects
+	 * refering to a new object are on the remSet; if I am not,
+	 * a trivial reject is possible, if all objects are newbees.
+	 * as a side effect, gather min/max addresses
+	 */
+	if ((__qSpace(self) <= OLDSPACE) && !__isRemembered(self)) {
+	    int allNewBees = 1;
+	    int i;
+
+	    minAddr = (char *)(__ArrayInstPtr(aCollection)->a_element[0]);
+	    maxAddr = minAddr;
+
+	    for (i=0; i<nObjs; i++) {
+		OBJ anObject;
+
+		anObject = __ArrayInstPtr(aCollection)->a_element[i];
+
+		if (__isNonNilObject(anObject)) {
+		    int spc;
+
+		    if (((spc = __qSpace(anObject)) != NEWSPACE) && (spc != SURVSPACE)) {
+			allNewBees = 0;
+		    }
+		}
+
+		if ((char *)anObject < minAddr) {
+		    minAddr = (char *)anObject;
+		} else if ((char *)anObject > maxAddr) {
+		    maxAddr = (char *)anObject;
+		}
+	    }
+	    if (allNewBees) {
+		RETURN (false);
+	    }
+	}
+
+	/*
+	 * fetch min/max in searchList (if not already done)
+	 */
+	if (minAddr == 0) {
+	    int i;
+
+	    for (i=0; i<nObjs; i++) {
+		OBJ anObject;
+
+		anObject = __ArrayInstPtr(aCollection)->a_element[i];
+		if ((char *)anObject < minAddr) {
+		    minAddr = (char *)anObject;
+		} else if ((char *)anObject > maxAddr) {
+		    maxAddr = (char *)anObject;
+		}
+	    }
+	}
+
+	cls = __qClass(self);
+	if (((char *)cls >= minAddr) && ((char *)cls <= maxAddr)) {
 #if defined(memsrch4)
-            if (memsrch4(__arrayVal(aCollection), (INT)cls, nObjs)) {
-                RETURN (true);
-            }
+	    if (memsrch4(__arrayVal(aCollection), (INT)cls, nObjs)) {
+		RETURN (true);
+	    }
 #else
-            int i;
-
-            for (i=0; i<nObjs; i++) {
-                OBJ anObject;
-
-                anObject = __ArrayInstPtr(aCollection)->a_element[i];
-                if (cls == anObject) {
-                    RETURN (true);
-                }
-            }
+	    int i;
+
+	    for (i=0; i<nObjs; i++) {
+		OBJ anObject;
+
+		anObject = __ArrayInstPtr(aCollection)->a_element[i];
+		if (cls == anObject) {
+		    RETURN (true);
+		}
+	    }
 #endif /* memsrch4 */
-        }
-
-        flags = __ClassInstPtr(cls)->c_flags;
-        if (((INT)flags & __MASKSMALLINT(ARRAYMASK)) == __MASKSMALLINT(POINTERARRAY)) {
-            nInsts = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
-        } else {
-            nInsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
-        }
-        if (! nInsts) {
-            RETURN (false);
-        }
-
-        if (nObjs == 1) {
-            /* better reverse the loop */
-            OBJ anObject;
-
-            anObject = __ArrayInstPtr(aCollection)->a_element[0];
+	}
+
+	flags = __ClassInstPtr(cls)->c_flags;
+	if (((INT)flags & __MASKSMALLINT(ARRAYMASK)) == __MASKSMALLINT(POINTERARRAY)) {
+	    nInsts = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
+	} else {
+	    nInsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
+	}
+	if (! nInsts) {
+	    RETURN (false);
+	}
+
+	if (nObjs == 1) {
+	    /* better reverse the loop */
+	    OBJ anObject;
+
+	    anObject = __ArrayInstPtr(aCollection)->a_element[0];
 #if defined(memsrch4)
-            if (memsrch4(__InstPtr(self)->i_instvars, (INT)anObject, nInsts)) {
-                RETURN (true);
-            }
+	    if (memsrch4(__InstPtr(self)->i_instvars, (INT)anObject, nInsts)) {
+		RETURN (true);
+	    }
 #else
-            for (inst=0; inst<nInsts; inst++) {
-                if ((__InstPtr(self)->i_instvars[inst]) == anObject) {
-                    RETURN (true);
-                }
-            }
+	    for (inst=0; inst<nInsts; inst++) {
+		if ((__InstPtr(self)->i_instvars[inst]) == anObject) {
+		    RETURN (true);
+		}
+	    }
 #endif
-            RETURN (false);
-        }
-
-        for (inst=0; inst<nInsts; inst++) {
-            OBJ instVar = __InstPtr(self)->i_instvars[inst];
-            int i;
-
-            if (((char *)instVar >= minAddr) && ((char *)instVar <= maxAddr)) {
+	    RETURN (false);
+	}
+
+	for (inst=0; inst<nInsts; inst++) {
+	    OBJ instVar = __InstPtr(self)->i_instvars[inst];
+	    int i;
+
+	    if (((char *)instVar >= minAddr) && ((char *)instVar <= maxAddr)) {
 #if defined(memsrch4)
-                if (memsrch4(__arrayVal(aCollection), (INT)instVar, nObjs)) {
-                    RETURN (true);
-                }
+		if (memsrch4(__arrayVal(aCollection), (INT)instVar, nObjs)) {
+		    RETURN (true);
+		}
 #else
-                for (i=0; i<nObjs; i++) {
-                    OBJ anObject;
-
-                    anObject = __ArrayInstPtr(aCollection)->a_element[i];
-                    if (instVar == anObject) {
-                        RETURN (true);
-                    }
-                }
+		for (i=0; i<nObjs; i++) {
+		    OBJ anObject;
+
+		    anObject = __ArrayInstPtr(aCollection)->a_element[i];
+		    if (instVar == anObject) {
+			RETURN (true);
+		    }
+		}
 #endif /* memsrch4 */
-            }
-        }
-        RETURN (false);
+	    }
+	}
+	RETURN (false);
     }
 %}.
 
     aCollection do:[:el |
-        (self referencesObject:el) ifTrue:[^ true].
+	(self referencesObject:el) ifTrue:[^ true].
     ].
     ^ false
 !
@@ -7728,19 +7776,19 @@
     "check the instance variables"
     numInst := myClass instSize.
     1 to:numInst do:[:i |
-        ((self instVarAt:i) isKindOf:aClass) ifTrue:[^ true]
+	((self instVarAt:i) isKindOf:aClass) ifTrue:[^ true]
     ].
 
     "check the indexed variables"
     myClass isVariable ifTrue:[
-        myClass isPointers ifFalse:[
-            "no need to search in non pointer fields"
-            ((aClass == Number) or:[aClass isSubclassOf:Number]) ifFalse:[^ false].
-        ].
-        numInst := self basicSize.
-        1 to:numInst do:[:i |
-            ((self basicAt:i) isKindOf:aClass) ifTrue:[^ true]
-        ]
+	myClass isPointers ifFalse:[
+	    "no need to search in non pointer fields"
+	    ((aClass == Number) or:[aClass isSubclassOf:Number]) ifFalse:[^ false].
+	].
+	numInst := self basicSize.
+	1 to:numInst do:[:i |
+	    ((self basicAt:i) isKindOf:aClass) ifTrue:[^ true]
+	]
     ].
     ^ false
 
@@ -7759,21 +7807,21 @@
     "check the instance variables"
     numInst := myClass instSize.
     1 to:numInst do:[:i |
-        inst := self instVarAt:i.
-        (checkBlock value:inst) ifTrue:[actionBlock value:inst].
+	inst := self instVarAt:i.
+	(checkBlock value:inst) ifTrue:[actionBlock value:inst].
     ].
 
     "check the indexed variables"
     myClass isVariable ifTrue:[
-        myClass isPointers ifTrue:[
-            "no need to search in non pointer fields"
-
-            numInst := self basicSize.
-            1 to:numInst do:[:i |
-                inst := self basicAt:i.
-                (checkBlock value:inst) ifTrue:[actionBlock value:inst].
-            ]
-        ]
+	myClass isPointers ifTrue:[
+	    "no need to search in non pointer fields"
+
+	    numInst := self basicSize.
+	    1 to:numInst do:[:i |
+		inst := self basicAt:i.
+		(checkBlock value:inst) ifTrue:[actionBlock value:inst].
+	    ]
+	]
     ].
 
     "
@@ -7797,24 +7845,24 @@
     "check the instance variables"
     numInst := myClass instSize.
     1 to:numInst do:[:i |
-        ((self instVarAt:i) isMemberOf:aClass) ifTrue:[^ true]
+	((self instVarAt:i) isMemberOf:aClass) ifTrue:[^ true]
     ].
 
     "check the indexed variables"
     myClass isVariable ifTrue:[
-        myClass isPointers ifFalse:[
-            "no need to search in non-pointer indexed fields"
-            myClass isLongs ifTrue:[
-                (aClass == SmallInteger or:[aClass == LargeInteger]) ifFalse:[^ false].
-            ] ifFalse:[
-                myClass isFloatsOrDoubles ifTrue:[^ aClass == Float].
-                ^ aClass == SmallInteger
-            ]
-        ].
-        numInst := self basicSize.
-        1 to:numInst do:[:i |
-            ((self basicAt:i) isMemberOf:aClass) ifTrue:[^ true]
-        ]
+	myClass isPointers ifFalse:[
+	    "no need to search in non-pointer indexed fields"
+	    myClass isLongs ifTrue:[
+		(aClass == SmallInteger or:[aClass == LargeInteger]) ifFalse:[^ false].
+	    ] ifFalse:[
+		myClass isFloatsOrDoubles ifTrue:[^ aClass == Float].
+		^ aClass == SmallInteger
+	    ]
+	].
+	numInst := self basicSize.
+	1 to:numInst do:[:i |
+	    ((self basicAt:i) isMemberOf:aClass) ifTrue:[^ true]
+	]
     ].
     ^ false
 
@@ -7834,7 +7882,7 @@
     int nInsts, i;
 
     if (! __isNonNilObject(self)) {
-        RETURN (false);
+	RETURN (false);
     }
 
     /*
@@ -7843,38 +7891,38 @@
      * a trivial reject is possible, if anObject is a newbee
      */
     if (__isNonNilObject(anObject)) {
-        if ((__qSpace(self) <= OLDSPACE) && !__isRemembered(self)) {
-            int spc;
-
-            if (((spc = __qSpace(anObject)) == NEWSPACE) || (spc == SURVSPACE)) {
-                RETURN (false);
-            }
-        }
+	if ((__qSpace(self) <= OLDSPACE) && !__isRemembered(self)) {
+	    int spc;
+
+	    if (((spc = __qSpace(anObject)) == NEWSPACE) || (spc == SURVSPACE)) {
+		RETURN (false);
+	    }
+	}
     }
 
     cls = __qClass(self);
     if (cls == anObject) {
-        RETURN (true);
+	RETURN (true);
     }
 
     flags = __ClassInstPtr(cls)->c_flags;
     if (((INT)flags & __MASKSMALLINT(ARRAYMASK)) == __MASKSMALLINT(POINTERARRAY)) {
-        nInsts = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
+	nInsts = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
     } else {
-        nInsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
+	nInsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
     }
     if (! nInsts) {
-        RETURN (false);
+	RETURN (false);
     }
 #if defined(memsrch4)
     if (memsrch4(__InstPtr(self)->i_instvars, (INT)anObject, nInsts)) {
-        RETURN (true);
+	RETURN (true);
     }
 #else
     for (i=0; i<nInsts; i++) {
-        if (__InstPtr(self)->i_instvars[i] == anObject) {
-            RETURN (true);
-        }
+	if (__InstPtr(self)->i_instvars[i] == anObject) {
+	    RETURN (true);
+	}
     }
 #endif /* memsrch4 */
 
@@ -7939,6 +7987,7 @@
     "
 ! !
 
+
 !Object methodsFor:'synchronized evaluation'!
 
 freeSynchronizationSemaphore
@@ -7949,8 +7998,8 @@
 
     sema := self synchronizationSemaphore.
     sema notNil ifTrue:[
-        sema wait.              "/ get lock
-        self synchronizationSemaphore:nil.
+	sema wait.              "/ get lock
+	self synchronizationSemaphore:nil.
     ].
 
     "
@@ -7981,10 +8030,10 @@
      subclasses may redefine this method"
 
     aSemaphore isNil ifTrue:[
-        "/ remove Semaphore
-        SynchronizationSemaphores removeKey:self ifAbsent:nil.
+	"/ remove Semaphore
+	SynchronizationSemaphores removeKey:self ifAbsent:nil.
     ] ifFalse:[
-        SynchronizationSemaphores at:self put:aSemaphore.
+	SynchronizationSemaphores at:self put:aSemaphore.
     ].
 
     "Modified: 28.1.1997 / 19:37:48 / stefan"
@@ -7999,8 +8048,8 @@
 
     sema := self synchronizationSemaphore.
     sema isNil ifTrue:[
-        sema := RecursionLock new name:self className.
-        self synchronizationSemaphore:sema.
+	sema := RecursionLock new name:self className.
+	self synchronizationSemaphore:sema.
     ].
 
     wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
@@ -8039,7 +8088,7 @@
 
 %{  /* NOCONTEXT */
     if (! __isNonNilObject(self)) {
-        RETURN (self);
+	RETURN (self);
     }
     __beImmutable(self);
 %}
@@ -8050,7 +8099,7 @@
 
 %{  /* NOCONTEXT */
     if (! __isNonNilObject(self)) {
-        RETURN (self);
+	RETURN (self);
     }
     __beMutable(self);
 %}
@@ -8074,7 +8123,7 @@
       - the Collection-classes have been rewritten to not use it.)"
 %{
     if (__primBecome(self, anotherObject)) {
-        RETURN ( self );
+	RETURN ( self );
     }
 %}.
     self primitiveFailed
@@ -8090,7 +8139,7 @@
 
 %{
     if (__primBecomeNil(self)) {
-        RETURN ( nil );
+	RETURN ( nil );
     }
 %}.
     self primitiveFailed
@@ -8111,7 +8160,7 @@
      or nil, or is a context of a living method (i.e. one that has not already returned)."
 %{
     if (__primBecomeSameAs(self, anotherObject)) {
-        RETURN ( self );
+	RETURN ( self );
     }
 %}.
     self primitiveFailed
@@ -8132,72 +8181,72 @@
     "check for UndefinedObject/SmallInteger receiver or newClass"
 %{
     {
-        OBJ other = otherClass;
-
-        if (__isNonNilObject(self)
-         && __isNonNilObject(other)
-         && (other != UndefinedObject)
-         && (other != SmallInteger)) {
-            ok = true;
-        } else {
-            ok = false;
-        }
+	OBJ other = otherClass;
+
+	if (__isNonNilObject(self)
+	 && __isNonNilObject(other)
+	 && (other != UndefinedObject)
+	 && (other != SmallInteger)) {
+	    ok = true;
+	} else {
+	    ok = false;
+	}
     }
 %}.
     ok ifTrue:[
-        ok := false.
-        myClass := self class.
-        myClass flags == otherClass flags ifTrue:[
-            myClass instSize == otherClass instSize ifTrue:[
-                "same instance layout and types: its ok to do it"
-                ok := true.
-            ] ifFalse:[
-                myClass isPointers ifTrue:[
-                    myClass isVariable ifTrue:[
-                        ok := true
-                    ]
-                ]
-            ]
-        ] ifFalse:[
-            myClass isPointers ifTrue:[
-                "if newClass is a variable class, with instSize <= my instsize,
-                 we can do it (effectively mapping additional instvars into the
-                 variable part) - usefulness is questionable, though"
-
-                otherClass isPointers ifTrue:[
-                    otherClass isVariable ifTrue:[
-                        otherClass instSize <= (myClass instSize + self basicSize)
-                        ifTrue:[
-                            ok := true
-                        ]
-                    ] ifFalse:[
-                        otherClass instSize == (myClass instSize + self basicSize)
-                        ifTrue:[
-                            ok := true
-                        ]
-                    ]
-                ] ifFalse:[
-                    "it does not make sense to convert pointers to bytes ..."
-                ]
-            ] ifFalse:[
-                "does it make sense, to convert bits ?"
-                "could allow byteArray->wordArray->longArray->floatArray->doubleArray here ..."
-                (myClass isBitsExtended and:[otherClass isBitsExtended]) ifTrue:[
-                    ok := true
-                ]
-            ]
-        ]
+	ok := false.
+	myClass := self class.
+	myClass flags == otherClass flags ifTrue:[
+	    myClass instSize == otherClass instSize ifTrue:[
+		"same instance layout and types: its ok to do it"
+		ok := true.
+	    ] ifFalse:[
+		myClass isPointers ifTrue:[
+		    myClass isVariable ifTrue:[
+			ok := true
+		    ]
+		]
+	    ]
+	] ifFalse:[
+	    myClass isPointers ifTrue:[
+		"if newClass is a variable class, with instSize <= my instsize,
+		 we can do it (effectively mapping additional instvars into the
+		 variable part) - usefulness is questionable, though"
+
+		otherClass isPointers ifTrue:[
+		    otherClass isVariable ifTrue:[
+			otherClass instSize <= (myClass instSize + self basicSize)
+			ifTrue:[
+			    ok := true
+			]
+		    ] ifFalse:[
+			otherClass instSize == (myClass instSize + self basicSize)
+			ifTrue:[
+			    ok := true
+			]
+		    ]
+		] ifFalse:[
+		    "it does not make sense to convert pointers to bytes ..."
+		]
+	    ] ifFalse:[
+		"does it make sense, to convert bits ?"
+		"could allow byteArray->wordArray->longArray->floatArray->doubleArray here ..."
+		(myClass isBitsExtended and:[otherClass isBitsExtended]) ifTrue:[
+		    ok := true
+		]
+	    ]
+	]
     ].
     ok ifTrue:[
-        "now, change the receivers class ..."
+	"now, change the receivers class ..."
 %{
-        {
-            OBJ me = self;
-
-            __objPtr(me)->o_class = (CLASS_OBJ)otherClass;
-            __STORE(me, otherClass);
-            RETURN (me);
-        }
+	{
+	    OBJ me = self;
+
+	    __objPtr(me)->o_class = (CLASS_OBJ)otherClass;
+	    __STORE(me, otherClass);
+	    RETURN (me);
+	}
 %}.
     ].
 
@@ -8225,7 +8274,7 @@
 
 %{  /* NOCONTEXT */
     if (! __isNonNilObject(self)) {
-        RETURN (true);
+	RETURN (true);
     }
     RETURN (__isImmutable(self) ? true : false);
 %}
@@ -8241,7 +8290,7 @@
     int nInsts, i;
 
     if (! __isNonNilObject(self)) {
-        RETURN (false);
+	RETURN (false);
     }
 
     /*
@@ -8250,33 +8299,33 @@
      * a trivial reject is possible, if anObject is a newbee
      */
     if (__isNonNilObject(anObject)) {
-        if ((__qSpace(self) <= OLDSPACE) && !__isRemembered(self)) {
-            int spc;
-
-            if (((spc = __qSpace(anObject)) == NEWSPACE) || (spc == SURVSPACE)) {
-                RETURN (false);
-            }
-        }
+	if ((__qSpace(self) <= OLDSPACE) && !__isRemembered(self)) {
+	    int spc;
+
+	    if (((spc = __qSpace(anObject)) == NEWSPACE) || (spc == SURVSPACE)) {
+		RETURN (false);
+	    }
+	}
     }
 
     cls = __qClass(self);
 
     flags = __ClassInstPtr(cls)->c_flags;
     if (((INT)flags & __MASKSMALLINT(ARRAYMASK)) == __MASKSMALLINT(POINTERARRAY)) {
-        nInsts = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
+	nInsts = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
     } else {
-        nInsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
+	nInsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
     }
     if (! nInsts) {
-        RETURN (false);
+	RETURN (false);
     }
     anyChange = false;
     for (i=0; i<nInsts; i++) {
-        if (__InstPtr(self)->i_instvars[i] == anObject) {
-            __InstPtr(self)->i_instvars[i] = newRef;
-            __STORE(self, newRef);
-            anyChange = true;
-        }
+	if (__InstPtr(self)->i_instvars[i] == anObject) {
+	    __InstPtr(self)->i_instvars[i] = newRef;
+	    __STORE(self, newRef);
+	    anyChange = true;
+	}
     }
     RETURN (anyChange);
 %}.
@@ -8300,27 +8349,27 @@
       the recevier is retuned here.
 
       Thus, if foo and bar are simple variables or constants,
-          foo ? bar
+	  foo ? bar
       is the same as:
-          (foo isNil ifTrue:[bar] ifFalse:[foo])
+	  (foo isNil ifTrue:[bar] ifFalse:[foo])
 
       if they are message sends, the equivalent code is:
-          [
-              |t1 t2|
-
-              t1 := foo.
-              t2 := bar.
-              t1 isNil ifTrue:[t2] ifFalse:[t1]
-          ] value
+	  [
+	      |t1 t2|
+
+	      t1 := foo.
+	      t2 := bar.
+	      t1 isNil ifTrue:[t2] ifFalse:[t1]
+	  ] value
 
       Can be used to provide defaultValues to variables,
       as in:
-          foo := arg ? #defaultValue
+	  foo := arg ? #defaultValue
 
       Note: this method should never be redefined in classes other than UndefinedObject.
       Notice:
-         This method is open coded (inlined) by the compiler(s)
-         - redefining it may not work as expected."
+	 This method is open coded (inlined) by the compiler(s)
+	 - redefining it may not work as expected."
 
     ^ self
 
@@ -8343,21 +8392,21 @@
       the recevier is retuned here.
 
       Thus, if foo and bar are simple variables or constants,
-          foo ?? bar
+	  foo ?? bar
       is the same as:
-          (foo isNil ifTrue:[bar value] ifFalse:[foo])
+	  (foo isNil ifTrue:[bar value] ifFalse:[foo])
 
       if they are message sends, the equivalent code is:
-          [
-              |t t2|
-
-              t := foo.
-              t isNil ifTrue:[bar value] ifFalse:[t]
-          ] value
+	  [
+	      |t t2|
+
+	      t := foo.
+	      t isNil ifTrue:[bar value] ifFalse:[t]
+	  ] value
 
       Can be used to provide defaultValues to variables,
       as in:
-          foo := arg ?? [ self computeDefault ]
+	  foo := arg ?? [ self computeDefault ]
 
       Note: this method should never be redefined in classes other than UndefinedObject.
      "
@@ -8382,8 +8431,8 @@
      This is much like #?, but sends #value to the argument in case of a nil
      receiver.
      Notice:
-        This method is open coded (inlined) by the compiler(s)
-        - redefining it may not work as expected."
+	This method is open coded (inlined) by the compiler(s)
+	- redefining it may not work as expected."
 
     ^ self
 !
@@ -8392,8 +8441,8 @@
     "return the value of the first arg, if I am nil,
      the result from evaluating the 2nd argument, if I am not nil.
      Notice:
-        This method is open coded (inlined) by the compiler(s)
-        - redefining it may not work as expected."
+	This method is open coded (inlined) by the compiler(s)
+	- redefining it may not work as expected."
 
     ^ notNilBlockOrValue value
 
@@ -8403,8 +8452,8 @@
     "return myself if nil, or the result from evaluating the argument,
      if I am not nil.
      Notice:
-        This method is open coded (inlined) by the compiler(s)
-        - redefining it may not work as expected."
+	This method is open coded (inlined) by the compiler(s)
+	- redefining it may not work as expected."
 
     ^ aBlockOrValue value
 
@@ -8414,8 +8463,8 @@
     "return the value of the 2nd arg, if I am nil,
      the result from evaluating the 1st argument, if I am not nil.
      Notice:
-        This method is open coded (inlined) by the compiler(s)
-        - redefining it may not work as expected."
+	This method is open coded (inlined) by the compiler(s)
+	- redefining it may not work as expected."
 
     ^ notNilBlockOrValue value
 
@@ -8771,21 +8820,21 @@
     "return true, if the receiver is an instance of aClass or one of its
      subclasses, false otherwise.
      Advice:
-        use of this to check objects for certain attributes/protocoll should
-        be avoided; it limits the reusability of your classes by limiting use
-        to instances of certain classes and fences you into a specific inheritance
-        hierarchy.
-        Use check-methods to check an object for a certain attributes/protocol
-        (such as #isXXXX, #respondsTo: or #isNumber).
-
-        Using #isKindOf: is considered BAD STYLE.
+	use of this to check objects for certain attributes/protocoll should
+	be avoided; it limits the reusability of your classes by limiting use
+	to instances of certain classes and fences you into a specific inheritance
+	hierarchy.
+	Use check-methods to check an object for a certain attributes/protocol
+	(such as #isXXXX, #respondsTo: or #isNumber).
+
+	Using #isKindOf: is considered BAD STYLE.
 
      Advice2:
-        Be aware, that using an #isXXX method is usually much faster than
-        using #isKindOf:; because isKindOf: has to walk up all the superclass
-        hierarchy, comparing every class on the way.
-        Due to caching in the VM, a call to #isXXX is normally reached via
-        a single function call.
+	Be aware, that using an #isXXX method is usually much faster than
+	using #isKindOf:; because isKindOf: has to walk up all the superclass
+	hierarchy, comparing every class on the way.
+	Due to caching in the VM, a call to #isXXX is normally reached via
+	a single function call.
      "
 
 %{  /* NOCONTEXT */
@@ -8793,10 +8842,10 @@
 
     thisClass = __Class(self);
     while (thisClass != nil) {
-        if (thisClass == aClass) {
-            RETURN ( true );
-        }
-        thisClass = __ClassInstPtr(thisClass)->c_superclass;
+	if (thisClass == aClass) {
+	    RETURN ( true );
+	}
+	thisClass = __ClassInstPtr(thisClass)->c_superclass;
     }
     RETURN ( false );
 %}
@@ -8851,16 +8900,16 @@
 isMemberOf:aClass
     "return true, if the receiver is an instance of aClass, false otherwise.
      Advice:
-        use of this to check objects for certain attributes/protocol should
-        be avoided; it limits the reusability of your classes by limiting use
-        to instances of a certain class.
-        Use check-methods to check an object for a certain attributes/protocol
-        (such as #isXXX, #respondsTo: or #isNumber);
-
-        Using #isMemberOf: is considered BAD STYLE.
+	use of this to check objects for certain attributes/protocol should
+	be avoided; it limits the reusability of your classes by limiting use
+	to instances of a certain class.
+	Use check-methods to check an object for a certain attributes/protocol
+	(such as #isXXX, #respondsTo: or #isNumber);
+
+	Using #isMemberOf: is considered BAD STYLE.
      Notice:
-        This method is open coded (inlined) by the compiler(s)
-        - redefining it may not work as expected."
+	This method is open coded (inlined) by the compiler(s)
+	- redefining it may not work as expected."
 
     ^ (self class) == aClass
 !
@@ -8911,8 +8960,8 @@
      Because isNil is redefined in UndefinedObject,
      the receiver is definitely not nil here, so unconditionally return false.
      Notice:
-        This method is open coded (inlined) by the compiler(s)
-        - redefining it may not work as expected."
+	This method is open coded (inlined) by the compiler(s)
+	- redefining it may not work as expected."
 
     ^ false
 !
@@ -8935,11 +8984,11 @@
     ^ false
 
     "
-        21 isNonByteCollection
-        'abc' isNonByteCollection
-        #'abc' isNonByteCollection
-        #[1 2 3] isNonByteCollection
-        #(1 2 3) isNonByteCollection
+	21 isNonByteCollection
+	'abc' isNonByteCollection
+	#'abc' isNonByteCollection
+	#[1 2 3] isNonByteCollection
+	#(1 2 3) isNonByteCollection
     "
 !
 
@@ -8971,7 +9020,7 @@
 
 isProgrammingLanguage
     "return true, if the receiver is a programming language.
-     False is returned here - the method is only redefined in 
+     False is returned here - the method is only redefined in
      ProgrammingLanguage."
 
     ^ false
@@ -9165,8 +9214,8 @@
      Because notNil is redefined in UndefinedObject,
      the receiver is definitely not nil here, so unconditionally return true.
      Notice:
-        This method is open coded (inlined) by the compiler(s)
-        - redefining it may not work as expected."
+	This method is open coded (inlined) by the compiler(s)
+	- redefining it may not work as expected."
 
     ^ true
 ! !
@@ -9195,7 +9244,7 @@
      It could also be put into some logfile or printed on the standard output/error."
 
     ActivityNotification isHandled ifTrue:[
-        ^ ActivityNotification raiseRequestWith:self errorString:aString
+	^ ActivityNotification raiseRequestWith:self errorString:aString
     ].
 
     "
@@ -9205,12 +9254,12 @@
 
     "
      ActivityNotification handle:[:ex |
-        ex errorString printCR.
-        ex proceed.
+	ex errorString printCR.
+	ex proceed.
      ] do:[
-        'hello' printCR.
-        self activityNotification:'doing some long time computation'.
-        'world' printCR.
+	'hello' printCR.
+	self activityNotification:'doing some long time computation'.
+	'world' printCR.
      ]
     "
 
@@ -9242,7 +9291,7 @@
 
     answer := self confirmWithCancel:aString.
     answer isNil ifTrue:[
-        ^ cancelBlock value
+	^ cancelBlock value
     ].
     ^ answer
 
@@ -9278,10 +9327,10 @@
      by handling the UserConfirmation."
 
     ^ UserConfirmation new
-        defaultAnswer:defaultAnswerOrNil;
-        canCancel:true;
-        errorString:aString;
-        raiseRequest
+	defaultAnswer:defaultAnswerOrNil;
+	canCancel:true;
+	errorString:aString;
+	raiseRequest
 
     "
      nil confirmWithCancel:'hello' defaultAnswer:true
@@ -9294,9 +9343,9 @@
      and give user a chance to enter debugger."
 
     ^ self
-        errorNotify:aString
-        from:thisContext sender
-        allowDebug:true
+	errorNotify:aString
+	from:thisContext sender
+	allowDebug:true
 
     "
      nil errorNotify:'hello there'
@@ -9322,128 +9371,128 @@
     |currentScreen con sender action boxLabels boxValues default s|
 
     Smalltalk isInitialized ifFalse:[
-        'errorNotification: ' print. aString printCR.
-        aContext sender printAllLevels:10.
-        ^ nil
+	'errorNotification: ' print. aString printCR.
+	aContext sender printAllLevels:10.
+	^ nil
     ].
 
     (Dialog isNil
      or:[Screen isNil
      or:[(currentScreen := Screen current) isNil
      or:[currentScreen isOpen not]]]) ifTrue:[
-        "
-         on systems without GUI, simply show
-         the message on the Transcript and abort.
-        "
-        Transcript showCR:aString.
-        AbortOperationRequest raise.
-        "not reached"
-        ^ nil
+	"
+	 on systems without GUI, simply show
+	 the message on the Transcript and abort.
+	"
+	Transcript showCR:aString.
+	AbortOperationRequest raise.
+	"not reached"
+	^ nil
     ].
 
     Processor activeProcessIsSystemProcess ifTrue:[
-        action := #debug.
-        sender := aContext.
-        Debugger isNil ifTrue:[
-            '****************** Cought Error while in SystemProcess ****************' errorPrintCR.
-            aString errorPrintCR.
-            Exception handle:[:ex |
-                'Cought recursive error while printing backtrace:' errorPrintCR.
-                ex description errorPrintCR.
-            ] do:[
-                thisContext fullPrintAll.
-            ].
-            action := #abort.
-        ].
+	action := #debug.
+	sender := aContext.
+	Debugger isNil ifTrue:[
+	    '****************** Cought Error while in SystemProcess ****************' errorPrintCR.
+	    aString errorPrintCR.
+	    Exception handle:[:ex |
+		'Cought recursive error while printing backtrace:' errorPrintCR.
+		ex description errorPrintCR.
+	    ] do:[
+		thisContext fullPrintAll.
+	    ].
+	    action := #abort.
+	].
     ] ifFalse:[
-        Dialog autoload.        "in case it's autoloaded"
-
-        Error handle:[:ex |
-            "/ a recursive error - quickly enter debugger
-            "/ this happened, when I corrupted the Dialog class ...
-            ('Object [error]: ' , ex description , ' caught in errorNotification') errorPrintCR.
-            action := #debug.
-            ex return.
-        ] do:[ |s|
-            sender := aContext.
-            sender isNil ifTrue:[
-                sender := thisContext sender.
-            ].
-            con := sender.
-
-            "/ skip intermediate (signal & exception) contexts
-            DebugView notNil ifTrue:[
-                con := DebugView interestingContextFrom:sender
-            ].
-
-            "/ show the first few contexts
-
-            s := WriteStream with:aString.
-            s cr; cr.
-            s nextPutLine:'Calling Chain:'.
-            s nextPutLine:'--------------------------------------------------------------'.
-            1 to:25 do:[:n |
-                con notNil ifTrue:[
-                    con printOn:s.
-                    s cr.
-                    con := con sender
-                ]
-            ].
-
-            boxLabels := #('Proceed').
-            boxValues := #(#proceed).
-            default := #proceed.
-
-            AbortOperationRequest isHandled ifTrue:[
-                default := #abort.
-                boxLabels := boxLabels , #('Abort').
-                boxValues := boxValues , #(#abort).
-                true "allowDebug" ifTrue:[
-                    boxLabels := boxLabels , #('Copy Trace and Abort').
-                    boxValues := boxValues , #(#copyAndAbort).
-                ]
-            ] ifFalse:[
-                true "allowDebug" ifTrue:[
-                    boxLabels := boxLabels , #('Copy Trace and Proceed').
-                    boxValues := boxValues , #(#copyAndProceed).
-                ].
-            ].
-
-            (allowDebug and:[Debugger notNil]) ifTrue:[
-                boxLabels := boxLabels , #('Debug').
-                boxValues := boxValues , #(#debug).
-                default := #debug.
-            ].
-
-            action := Dialog
-                    choose:s contents
-                    label:('Exception [' , Processor activeProcess nameOrId , ']')
-                    image:WarningBox errorIconBitmap
-                    labels:boxLabels
-                    values:boxValues
-                    default:default
-                    onCancel:nil.
-        ].
+	Dialog autoload.        "in case it's autoloaded"
+
+	Error handle:[:ex |
+	    "/ a recursive error - quickly enter debugger
+	    "/ this happened, when I corrupted the Dialog class ...
+	    ('Object [error]: ' , ex description , ' caught in errorNotification') errorPrintCR.
+	    action := #debug.
+	    ex return.
+	] do:[ |s|
+	    sender := aContext.
+	    sender isNil ifTrue:[
+		sender := thisContext sender.
+	    ].
+	    con := sender.
+
+	    "/ skip intermediate (signal & exception) contexts
+	    DebugView notNil ifTrue:[
+		con := DebugView interestingContextFrom:sender
+	    ].
+
+	    "/ show the first few contexts
+
+	    s := WriteStream with:aString.
+	    s cr; cr.
+	    s nextPutLine:'Calling Chain:'.
+	    s nextPutLine:'--------------------------------------------------------------'.
+	    1 to:25 do:[:n |
+		con notNil ifTrue:[
+		    con printOn:s.
+		    s cr.
+		    con := con sender
+		]
+	    ].
+
+	    boxLabels := #('Proceed').
+	    boxValues := #(#proceed).
+	    default := #proceed.
+
+	    AbortOperationRequest isHandled ifTrue:[
+		default := #abort.
+		boxLabels := boxLabels , #('Abort').
+		boxValues := boxValues , #(#abort).
+		true "allowDebug" ifTrue:[
+		    boxLabels := boxLabels , #('Copy Trace and Abort').
+		    boxValues := boxValues , #(#copyAndAbort).
+		]
+	    ] ifFalse:[
+		true "allowDebug" ifTrue:[
+		    boxLabels := boxLabels , #('Copy Trace and Proceed').
+		    boxValues := boxValues , #(#copyAndProceed).
+		].
+	    ].
+
+	    (allowDebug and:[Debugger notNil]) ifTrue:[
+		boxLabels := boxLabels , #('Debug').
+		boxValues := boxValues , #(#debug).
+		default := #debug.
+	    ].
+
+	    action := Dialog
+		    choose:s contents
+		    label:('Exception [' , Processor activeProcess nameOrId , ']')
+		    image:WarningBox errorIconBitmap
+		    labels:boxLabels
+		    values:boxValues
+		    default:default
+		    onCancel:nil.
+	].
     ].
 
     action == #debug ifTrue:[
-        ^ Debugger enter:sender withMessage:aString mayProceed:true
+	^ Debugger enter:sender withMessage:aString mayProceed:true
     ].
     action == #proceed ifTrue:[
-        ^ nil.
+	^ nil.
     ].
     (action == #copyAndProceed
     or:[action == #copyAndAbort]) ifTrue:[
-        s := '' writeStream.
-        Exception handle:[:ex |
-            'Cought recursive error while printing backtrace' errorPrintCR.
-        ] do:[
-            sender fullPrintAllOn:s.
-        ].
-        currentScreen rootView setClipboardText:s contents.
-        action == #copyAndProceed ifTrue:[
-            ^ nil
-        ].
+	s := '' writeStream.
+	Exception handle:[:ex |
+	    'Cought recursive error while printing backtrace' errorPrintCR.
+	] do:[
+	    sender fullPrintAllOn:s.
+	].
+	currentScreen rootView setClipboardText:s contents.
+	action == #copyAndProceed ifTrue:[
+	    ^ nil
+	].
     ].
 
     AbortOperationRequest raise.
@@ -9476,12 +9525,12 @@
 
     "
      InformationSignal handle:[:ex |
-        'no box popped' printCR.
-        ex proceed.
+	'no box popped' printCR.
+	ex proceed.
      ] do:[
-        'hello' printCR.
-        self information:'some info'.
-        'world' printCR.
+	'hello' printCR.
+	self information:'some info'.
+	'world' printCR.
      ]
     "
 
@@ -9496,9 +9545,9 @@
 
 
     Smalltalk isInitialized ifFalse:[
-        "/ thisContext fullPrintAll.
-        'information: ' print. aString printCR.
-        ^ self
+	"/ thisContext fullPrintAll.
+	'information: ' print. aString printCR.
+	^ self
     ].
     UserNotification raiseRequestWith:self errorString:aString.
 
@@ -9526,12 +9575,12 @@
 
     "
      Warning handle:[:ex |
-        Transcript showCR:ex description.
-        ex proceed.
+	Transcript showCR:ex description.
+	ex proceed.
      ] do:[
-        'hello' printCR.
-        self warn:'some info'.
-        'world' printCR.
+	'hello' printCR.
+	self warn:'some info'.
+	'world' printCR.
      ]
     "
 
@@ -9556,15 +9605,16 @@
 !Object class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.703 2012/11/24 13:56:04 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.706 2013-01-16 14:08:50 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Object.st,v 1.703 2012/11/24 13:56:04 stefan Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.706 2013-01-16 14:08:50 stefan Exp $'
 !
 
 version_SVN
-    ^ '$ Id: Object.st 10643 2011-06-08 21:53:07Z vranyj1  $'
+    ^ '§ Id: Object.st 10643 2011-06-08 21:53:07Z vranyj1  §'
 ! !
 
+
 Object initialize!
--- a/ObjectCoder.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ObjectCoder.st	Sat Jan 19 01:30:00 2013 +0000
@@ -261,12 +261,5 @@
 !ObjectCoder class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ObjectCoder.st,v 1.17 2012/01/12 12:57:07 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: ObjectCoder.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ObjectCoder.st,v 1.17 2012-01-12 12:57:07 cg Exp $'
 ! !
-
-
-
--- a/ObjectMemory.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ObjectMemory.st	Sat Jan 19 01:30:00 2013 +0000
@@ -916,52 +916,6 @@
 %}
 ! !
 
-!ObjectMemory class methodsFor:'VM unwind protect support'!
-
-lookupMethodForSelectorUnwindHandlerFor: lookup
-
-    "
-    An unwind handler for external method lookup
-    (MOP). This method effectively called only
-    from handler block returned by
-    ObjectMemory>>unwindHandlerInContext:.
-
-    The VM also create an artifical context with
-    ObjectMemory as receiver and selector if this
-    method as selector and marks it for unwind.
-
-    See: ObjectMemory>>unwindHandlerInContext:
-    "
-
-    Processor activeProcess externalLookupPopIfEqual: lookup.
-
-    "Created: / 06-10-2011 / 16:31:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-unwindHandlerInContext:aContext
-
-    "
-    Return an unwind handler block for given context.
-    Selector of that context denotes which unwind handler
-    to use.
-
-    Occasionally, the VM needs to unwind-protect some C code.
-    If so, it creates and artificial context on the stack and
-    marks it for unwind, so stack unwinding logic finds it
-    and handles it. 
-
-    Now, only #lookupMethodForSelectorUnwindProtect is supported
-    (ensures the lookup is popped out from the lookupActications)
-    "
-    aContext selector == #lookupMethodForSelectorUnwindHandlerFor: ifTrue:[
-        ^[self lookupMethodForSelectorUnwindHandlerFor: (aContext argAt: 1)]
-    ].                                                
-
-    self internalError:'Unknown VM unwind protect action'
-
-    "Created: / 01-10-2011 / 19:15:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
 !ObjectMemory class methodsFor:'access debugging'!
 
 setTrapOnAccessFor:anObject
@@ -4343,9 +4297,10 @@
      objects and ask for the bytesize using ObjectMemory>>sizeOf:."
 
 %{  /* NOCONTEXT */
-    extern unsigned __oldSpaceUsed(), __newSpaceUsed(), __freeListSpace();
-
-    RETURN ( __MKUINT(__oldSpaceUsed() + __newSpaceUsed() - __freeListSpace()) );
+    extern unsigned INT __oldSpaceUsed(), __freeListSpace();
+    extern unsigned int __newSpaceUsed();
+
+    RETURN ( __MKUINT(__oldSpaceUsed() + (INT)__newSpaceUsed() - __freeListSpace()) );
 %}
     "
      ObjectMemory bytesUsed
@@ -4373,7 +4328,11 @@
 
 collectedOldSpaceAddress
 %{
+#ifdef COLLECTEDOLD_ADDRESS
     RETURN(__MKUINT(COLLECTEDOLD_ADDRESS));
+#else
+    RETURN(__MKUINT(0));
+#endif
 %}
 
     "
@@ -4412,7 +4371,7 @@
      (which is included in oldSpaceUsed)"
 
 %{  /* NOCONTEXT */
-    extern unsigned __freeListSpace();
+    extern unsigned INT __freeListSpace();
 
     RETURN ( __MKUINT(__freeListSpace()) );
 %}
@@ -4426,7 +4385,7 @@
      (oldSpaceUsed + freeSpaceSize = oldSpaceSize)"
 
 %{  /* NOCONTEXT */
-    extern unsigned __oldSpaceSize(), __oldSpaceUsed();
+    extern unsigned INT __oldSpaceSize(), __oldSpaceUsed();
 
     RETURN ( __MKUINT(__oldSpaceSize() - __oldSpaceUsed()) );
 %}
@@ -4671,7 +4630,7 @@
      something with it ..."
 
 %{  /* NOCONTEXT */
-    extern unsigned __newSpaceUsed();
+    extern unsigned int __newSpaceUsed();
 
     RETURN ( __MKUINT(__newSpaceUsed()) );
 %}
@@ -4709,7 +4668,11 @@
 
 oldSpaceAddress
 %{
+#ifdef OLDSPACE_ADDRESS
     RETURN(__MKUINT(OLDSPACE_ADDRESS));
+#else
+    RETURN(__MKUINT(0));
+#endif
 %}
 
     "
@@ -4724,7 +4687,7 @@
      background GC."
 
 %{  /* NOCONTEXT */
-    extern unsigned __oldSpaceAllocatedSinceLastGC();
+    extern unsigned INT __oldSpaceAllocatedSinceLastGC();
 
     RETURN ( __MKUINT(__oldSpaceAllocatedSinceLastGC()) );
 %}
@@ -4737,7 +4700,7 @@
     "return the total size of the old space. - may grow slowly"
 
 %{  /* NOCONTEXT */
-    extern unsigned __oldSpaceSize();
+    extern unsigned INT __oldSpaceSize();
 
     RETURN ( __MKUINT(__oldSpaceSize()) );
 %}
@@ -4751,7 +4714,7 @@
      (This includes the free lists)"
 
 %{  /* NOCONTEXT */
-    extern unsigned __oldSpaceUsed();
+    extern unsigned INT __oldSpaceUsed();
 
     RETURN ( __MKUINT(__oldSpaceUsed()) );
 %}
@@ -4765,7 +4728,7 @@
      This is a VM debugging interface and may vanish without notice."
 
 %{  /* NOCONTEXT */
-    extern int __rememberedSetSize();
+    extern unsigned int __rememberedSetSize();
 
     RETURN (__mkSmallInteger(__rememberedSetSize()));
 %}
@@ -4779,7 +4742,7 @@
      For statistic only - this may vanish."
 
 %{  /* NOCONTEXT */
-    extern int __resetNewSpaceReclaimedMin();
+    extern void __resetNewSpaceReclaimedMin();
 
     __resetNewSpaceReclaimedMin();
 %}.
@@ -5538,12 +5501,11 @@
 !ObjectMemory class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ObjectMemory.st,v 1.262 2012/10/10 16:50:24 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/ObjectMemory.st,v 1.264 2013-01-11 14:30:08 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: ObjectMemory.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '§ Id: ObjectMemory.st 10643 2011-06-08 21:53:07Z vranyj1  §'
 ! !
 
 ObjectMemory initialize!
-
--- a/OpenError.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/OpenError.st	Sat Jan 19 01:30:00 2013 +0000
@@ -56,30 +56,32 @@
 !OpenError methodsFor:'printing & storing'!
 
 description
-    |description p|
+    "lazy initialization - the text is not needed for cought exceptions"
 
-    description := super description.
+    messageText isNil ifTrue:[
+        self initializeMessageText
+    ].
+    ^ super description
+!
+
+initializeMessageText
+    "for lazy initialization - the text is not needed for cought exceptions"
 
-    p := self pathName.
-    p notEmptyOrNil ifTrue:[
-        description := description, ': ', p printString
+    messageText := (' : ' , (OperatingSystem errorTextForNumber:errorCode))
+!
+
+messageText
+    "lazy initialization - the text is not needed for cought exceptions"
+
+    messageText isNil ifTrue:[
+        self initializeMessageText
     ].
-    ^ description 
-
-    "
-        '/tmp/nIcHtExIsTeNt' asFilename readStream
-    "
+    ^ messageText
 ! !
 
 !OpenError class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/OpenError.st,v 1.10 2012/11/14 22:31:19 stefan Exp $'
-!
-
-version_SVN
-    ^ '$Id: OpenError.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/OpenError.st,v 1.11 2012-12-17 19:37:12 cg Exp $'
 ! !
 
-
-
--- a/OpenVMSOperatingSystem.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/OpenVMSOperatingSystem.st	Sat Jan 19 01:30:00 2013 +0000
@@ -7515,9 +7515,6 @@
 !OpenVMSOperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/OpenVMSOperatingSystem.st,v 1.17 2011/10/07 13:57:55 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/OpenVMSOperatingSystem.st,v 1.17 2011-10-07 13:57:55 cg Exp $'
 ! !
 OpenVMSOperatingSystem initialize!
-
-
-
--- a/OrderedCollection.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/OrderedCollection.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1112,29 +1112,6 @@
     ^ newCollection
 !
 
-copyWith:newElement
-    "return a new collection containing the receivers elements
-     and the single new element, newElement. 
-     This is different from concatentation, which expects another collection
-     as argument, but equivalent to copy-and-addLast."
-
-    |newCollection mySize newSize|
-
-    mySize := self size.
-    newSize := mySize + 1.
-    newCollection := self copyEmptyAndGrow:newSize. "must grow, otherwise replace fails"
-    newCollection replaceFrom:1 to:mySize with:self startingAt:1.
-    newCollection at:newSize put:newElement.
-    ^newCollection
-
-    "
-     #(1 2 3 4 5) copyWith:$a
-     'abcdefg' copyWith:$h
-     'abcdefg' copyWith:'123'    -- will fail: string cannot be stored into string
-     'abcdefg' copyWith:1        -- will fail: integer cannot be stored into string
-    "
-!
-
 postCopy
     "have to copy the contentsArray too"
 
@@ -1408,7 +1385,6 @@
 ! !
 
 
-
 !OrderedCollection methodsFor:'private'!
 
 initContents:size
@@ -1957,12 +1933,6 @@
 !OrderedCollection class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/OrderedCollection.st,v 1.100 2012/04/01 11:24:38 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: OrderedCollection.st 10804 2012-04-13 13:18:13Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/OrderedCollection.st,v 1.101 2012-12-21 11:59:35 cg Exp $'
 ! !
 
-
-
--- a/PCFilename.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/PCFilename.st	Sat Jan 19 01:30:00 2013 +0000
@@ -886,13 +886,13 @@
 !PCFilename class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/PCFilename.st,v 1.57 2012/07/22 08:06:13 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/PCFilename.st,v 1.57 2012-07-22 08:06:13 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/PCFilename.st,v 1.57 2012/07/22 08:06:13 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/PCFilename.st,v 1.57 2012-07-22 08:06:13 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: PCFilename.st 10829 2012-07-25 08:45:15Z vranyj1 $'
+    ^ '§Id§'
 ! !
--- a/PackageId.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/PackageId.st	Sat Jan 19 01:30:00 2013 +0000
@@ -78,14 +78,107 @@
 
 !PackageId methodsFor:'accessing'!
 
+directory
+    "return the directory component. That's the rest after the colon.
+     The module is typically used to define the project-path or project-id within its
+     sourcecode repository (which is selected via the module)."
+
+    |idx|
+
+    idx := packageIdString indexOf:$:.
+    idx == 0 ifTrue:[
+        ^ ''.
+    ].
+    ^ packageIdString copyFrom:idx+1
+
+    "
+     (PackageId from:'stx:libbasic') module  
+     (PackageId from:'stx:libbasic') directory  
+     (PackageId from:'stx') module  
+     (PackageId from:'stx') directory  
+     (PackageId from:'stx:goodies/xml/stx') module  
+     (PackageId from:'stx:goodies/xml/stx') directory  
+    "
+
+    "Created: / 18-08-2006 / 12:15:33 / cg"
+    "Modified: / 28-11-2006 / 11:39:14 / cg"
+    "Modified (comment): / 19-09-2011 / 11:01:08 / cg"
+!
+
+module
+    "return the module component. That's the first component up to the colon.
+     The module is typically used to select a corresponding sourcecode repository."
+
+    |idx|
+
+    idx := packageIdString indexOf:$:.
+    idx == 0 ifTrue:[
+        ^ packageIdString.
+    ].
+    ^ packageIdString copyTo:idx-1
+
+    "
+     (PackageId from:'stx:libbasic') module  
+     (PackageId from:'stx:libbasic') directory  
+    "
+
+    "Created: / 18-08-2006 / 12:13:53 / cg"
+    "Modified: / 27-12-2006 / 11:51:25 / cg"
+    "Modified (comment): / 19-09-2011 / 11:01:15 / cg"
+!
+
 module:moduleString directory:directoryString
-    packageIdString := moduleString,':',directoryString.
+    |ds|
+
+    (directoryString includes:$\) ifTrue:[
+        ds := directoryString asFilename components asStringWith:$/.
+    ] ifFalse:[
+        ds := directoryString
+    ].
+    packageIdString := (moduleString,':',ds) asSymbol.
+
+    "
+     (self new module:'stx' directory:'libbasic') module         
+     (self new module:'stx' directory:'libbasic') directory      
+     (self new module:'stx' directory:'goodies/net') module      
+     (self new module:'stx' directory:'goodies/net') directory   
+     (self new module:'stx' directory:'goodies\net') module        
+     (self new module:'stx' directory:'goodies\net') directory   
+    "
 
     "Created: / 12-09-2006 / 15:26:48 / cg"
 !
 
-packageIdString:something
-    packageIdString := something.
+packageIdString:aString
+    "the required format is:
+        module:path    
+     where path is a unix-like path (i.e. containing slashes).
+     However, for our convenience, also allow for
+        module/path
+     and even:
+        module\ms-dos-path
+     and convert them as required.
+     This makes it easier on a doit, by copy-pasting port of a path into a loadPackage
+     expression"
+
+    |components|
+
+    (aString includes:$:) ifFalse:[
+        "/ assume its a path
+        components := aString asFilename components.
+        self module:components first directory:((components copyFrom:2) asStringWith:$/).
+    ] ifTrue:[
+        packageIdString := aString asSymbol.
+    ]
+
+    "
+     'stx:libbasic' asPackageId module      
+     'stx:libbasic' asPackageId directory
+     'stx/goodies/net' asPackageId module   
+     'stx/goodies/net' asPackageId directory   
+     'stx\goodies\net' asPackageId module        
+     'stx\goodies\net' asPackageId directory   
+    "
 
     "Created: / 18-08-2006 / 12:14:45 / cg"
 !
@@ -151,38 +244,11 @@
 
 !PackageId methodsFor:'queries'!
 
-directory
-    "return the directory component. That's the rest after the colon.
-     The module is typically used to define the project-path or project-id within its
-     sourcecode repository (which is selected via the module)."
-
-    |idx|
-
-    idx := packageIdString indexOf:$:.
-    idx == 0 ifTrue:[
-        ^ ''.
-    ].
-    ^ packageIdString copyFrom:idx+1
-
-    "
-     (PackageId from:'stx:libbasic') module  
-     (PackageId from:'stx:libbasic') directory  
-     (PackageId from:'stx') module  
-     (PackageId from:'stx') directory  
-     (PackageId from:'stx:goodies/xml/stx') module  
-     (PackageId from:'stx:goodies/xml/stx') directory  
-    "
-
-    "Created: / 18-08-2006 / 12:15:33 / cg"
-    "Modified: / 28-11-2006 / 11:39:14 / cg"
-    "Modified (comment): / 19-09-2011 / 11:01:08 / 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"
+     also the manager's repository"
 
     ^ self directory isEmptyOrNil
 !
@@ -206,28 +272,6 @@
     "Created: / 18-08-2006 / 12:35:04 / cg"
 !
 
-module
-    "return the module component. That's the first component up to the colon.
-     The module is typically used to select a corresponding sourcecode repository."
-
-    |idx|
-
-    idx := packageIdString indexOf:$:.
-    idx == 0 ifTrue:[
-        ^ packageIdString.
-    ].
-    ^ packageIdString copyTo:idx-1
-
-    "
-     (PackageId from:'stx:libbasic') module  
-     (PackageId from:'stx:libbasic') directory  
-    "
-
-    "Created: / 18-08-2006 / 12:13:53 / cg"
-    "Modified: / 27-12-2006 / 11:51:25 / cg"
-    "Modified (comment): / 19-09-2011 / 11:01:15 / cg"
-!
-
 parentPackage
     |dir idx|
 
@@ -281,7 +325,10 @@
 !
 
 projectDirectory
-    ^ self projectDefinitionClass projectDirectory
+    |pdClass|
+
+    (pdClass := self projectDefinitionClass) isNil ifTrue:[^ nil].
+    ^ pdClass projectDirectory
 
     "
      'stx:libbasic2' asPackageId projectDirectory
@@ -293,16 +340,9 @@
 !PackageId class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/PackageId.st,v 1.19 2012/07/25 23:15:55 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/PackageId.st,v 1.21 2012-12-14 11:59:34 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/PackageId.st,v 1.19 2012/07/25 23:15:55 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: PackageId.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/PackageId.st,v 1.21 2012-12-14 11:59:34 cg Exp $'
 ! !
-
-
-
--- a/PeekableStream.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/PeekableStream.st	Sat Jan 19 01:30:00 2013 +0000
@@ -569,29 +569,17 @@
             compiler allowUndeclaredVariables:false.
 
             sawExcla ifFalse:[
-                "JV@2012-10-31: Here, we don't want to correct nor define
-                 undeclared variable, When a code is loaded from a Workspace,
-                 all not-yet-loaded classes in namespace would become
-                 Workspace variables which is wrong!!"
-                [
-                    "/ class definition chunks, etc., which are simply evaluated
-                    rslt := compiler evaluate:aString notifying:someone.
-                ] on: Parser undefinedVariableNotification do:[:ex|
-                    ex proceedWith: false "No, do not correct!!"
-                ].
+                "/ class definition chunks, etc., which are simply evaluated
+                rslt := compiler evaluate:aString notifying:someone.
             ] ifTrue:[
                 "/ methodsFor chunks, etc., which generate a reader
                 Smalltalk::Compiler emptySourceNotificationSignal handle:[:ex |
                     ^ nil
                 ] do:[
-                    [
-                        rslt := compiler 
-                                    evaluate:aString 
-                                    notifying:someone 
-                                    compile:false.
-                    ] on: Parser undefinedVariableNotification do:[:ex|
-                        ex proceedWith: false "No, do not correct!!"
-                    ].
+                    rslt := compiler 
+                                evaluate:aString 
+                                notifying:someone 
+                                compile:false.
                 ].
 
                 "
@@ -624,7 +612,6 @@
     ^ rslt
 
     "Modified: / 05-02-2011 / 10:06:57 / cg"
-    "Modified: / 31-10-2012 / 18:09:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 fileInNotifying:notifiedLoader passChunk:passChunk
@@ -1032,22 +1019,16 @@
     "
 
     "Modified: 15.5.1996 / 17:51:42 / cg"
-!
-
- !
+! !
 
 !PeekableStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/PeekableStream.st,v 1.41 2012/11/19 15:00:10 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/PeekableStream.st,v 1.41 2012-11-19 15:00:10 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/PeekableStream.st,v 1.41 2012/11/19 15:00:10 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: PeekableStream.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/PeekableStream.st,v 1.41 2012-11-19 15:00:10 stefan Exp $'
 ! !
 
 PeekableStream initialize!
--- a/PipeStream.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/PipeStream.st	Sat Jan 19 01:30:00 2013 +0000
@@ -796,18 +796,11 @@
 !PipeStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/PipeStream.st,v 1.112 2012/10/26 09:51:53 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/PipeStream.st,v 1.112 2012-10-26 09:51:53 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/PipeStream.st,v 1.112 2012/10/26 09:51:53 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: PipeStream.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/PipeStream.st,v 1.112 2012-10-26 09:51:53 stefan Exp $'
 ! !
 
 PipeStream initialize!
-
-
-
--- a/PluginSupport.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/PluginSupport.st	Sat Jan 19 01:30:00 2013 +0000
@@ -192,9 +192,5 @@
 !PluginSupport class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/PluginSupport.st,v 1.16 2012/08/03 20:26:00 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: PluginSupport.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/PluginSupport.st,v 1.16 2012-08-03 20:26:00 stefan Exp $'
 ! !
--- a/PositionableStream.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/PositionableStream.st	Sat Jan 19 01:30:00 2013 +0000
@@ -114,7 +114,6 @@
     "Modified: / 13-07-2006 / 20:36:54 / cg"
 ! !
 
-
 !PositionableStream methodsFor:'Compatibility-Dolphin'!
 
 endChunk
@@ -140,7 +139,6 @@
     "
 ! !
 
-
 !PositionableStream methodsFor:'accessing'!
 
 collection
@@ -662,18 +660,11 @@
 !PositionableStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/PositionableStream.st,v 1.154 2011/05/27 14:22:27 sr Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/PositionableStream.st,v 1.154 2011-05-27 14:22:27 sr Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/PositionableStream.st,v 1.154 2011/05/27 14:22:27 sr Exp §'
-!
-
-version_SVN
-    ^ '$Id: PositionableStream.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/PositionableStream.st,v 1.154 2011-05-27 14:22:27 sr Exp $'
 ! !
 
 PositionableStream initialize!
-
-
-
--- a/ProceedableError.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ProceedableError.st	Sat Jan 19 01:30:00 2013 +0000
@@ -70,18 +70,11 @@
 !ProceedableError class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ProceedableError.st,v 1.6 2010/11/17 16:53:49 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProceedableError.st,v 1.6 2010-11-17 16:53:49 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ProceedableError.st,v 1.6 2010/11/17 16:53:49 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: ProceedableError.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProceedableError.st,v 1.6 2010-11-17 16:53:49 cg Exp $'
 ! !
 
 ProceedableError initialize!
-
-
-
--- a/Process.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Process.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1155,23 +1155,6 @@
 
 !Process methodsFor:'private'!
 
-externalLookupPopIfEqual: anObject
-
-    "Pops the given lookup object from the stack,
-     if the object is on the top. Noop otherwise.
-
-    Called from external lookup unwind handler.         
-    "
-
-    lookupActivations notNil ifTrue:[
-        lookupActivations first == anObject ifTrue:[
-            lookupActivations := lookupActivations second.
-        ]
-    ].
-
-    "Created: / 06-10-2011 / 16:30:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
 for:aBlock priority:aPrio
     "setup the new process - the receiver is not scheduled for
      execution, to get it running, send it #resume"
@@ -2086,11 +2069,11 @@
 
 version_CVS
 
-    ^ '§Header: /cvs/stx/stx/libbasic/Process.st,v 1.176 2012/10/26 11:19:56 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/Process.st,v 1.176 2012-10-26 11:19:56 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: Process.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '§ Id: Process.st 10643 2011-06-08 21:53:07Z vranyj1  §'
 ! !
 
 Process initialize!
--- a/ProcessorScheduler.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ProcessorScheduler.st	Sat Jan 19 01:30:00 2013 +0000
@@ -3395,15 +3395,11 @@
 !ProcessorScheduler class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.262 2012/10/26 11:18:55 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.262 2012-10-26 11:18:55 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.262 2012/10/26 11:18:55 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: ProcessorScheduler.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.262 2012-10-26 11:18:55 cg Exp $'
 ! !
 
 ProcessorScheduler initialize!
--- a/ProgrammingLanguage.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ProgrammingLanguage.st	Sat Jan 19 01:30:00 2013 +0000
@@ -381,6 +381,10 @@
     "Created: / 16-08-2009 / 10:10:33 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
+defaultSelectorNameSpacePrefix
+    ^ nil "/no namespace by default"
+!
+
 supportsExtensionMethods
 
     "Answer true iff this language supports extension methods"
@@ -474,21 +478,6 @@
 
 !ProgrammingLanguage methodsFor:'utilities - source code'!
 
-classTemplateFor: superClass in: category asNamespace: isNamespace private: isPrivate
-    "Returns a class template code"
-
-    ^String streamContents:[:code|
-        self 
-            writeComment: (StringCollection
-                with: 'No class template defined. Please define one in '
-                with: (self class name , '>>', thisContext selector))
-            on: code
-
-    ]
-
-    "Modified: / 18-02-2012 / 18:31:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
 methodTemplate
     "return a method definition template string (or nil)"
 
@@ -535,15 +524,15 @@
 !ProgrammingLanguage class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ProgrammingLanguage.st,v 1.23 2012/10/23 13:04:22 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProgrammingLanguage.st,v 1.25 2012-12-11 17:26:54 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ProgrammingLanguage.st,v 1.23 2012/10/23 13:04:22 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProgrammingLanguage.st,v 1.25 2012-12-11 17:26:54 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: ProgrammingLanguage.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '§ Id: ProgrammingLanguage.st 10643 2011-06-08 21:53:07Z vranyj1  §'
 ! !
 
 ProgrammingLanguage initialize!
--- a/Project.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Project.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1634,18 +1634,11 @@
 !Project class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Project.st,v 1.209 2012/08/03 15:53:25 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Project.st,v 1.209 2012-08-03 15:53:25 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Project.st,v 1.209 2012/08/03 15:53:25 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: Project.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Project.st,v 1.209 2012-08-03 15:53:25 stefan Exp $'
 ! !
 
 Project initialize!
-
-
-
--- a/ProjectDefinition.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ProjectDefinition.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 2006 by eXept Software AG
-	      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
@@ -40,14 +40,14 @@
     You can define additional rules and flag settings for use in the makeFile generation:
 
     redefinable build-file attributes:
-	stcOptimizationOptions  -> STCLOCALOPT
-	stcWarningOptions       -> STCLOCALOPT
-	localIncludes_unix      -> LOCALINCLUDES (Make.proto)
-	localIncludes_win32     -> LOCALINCLUDES (bc.mak)
+        stcOptimizationOptions  -> STCLOCALOPT
+        stcWarningOptions       -> STCLOCALOPT
+        localIncludes_unix      -> LOCALINCLUDES (Make.proto)
+        localIncludes_win32     -> LOCALINCLUDES (bc.mak)
 
     for applications:
-	startupClassName
-	startupSelector
+        startupClassName
+        startupSelector
 
     for libraries:
 
@@ -57,7 +57,7 @@
 copyright
 "
  COPYRIGHT (c) 2006 by eXept Software AG
-	      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
@@ -102,28 +102,28 @@
 
 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.
-		PackageInfo notNil ifTrue:[
-		    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
-	    ]
-	]
+        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.
+                PackageInfo notNil ifTrue:[
+                    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'
@@ -151,19 +151,19 @@
     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
-	].
+        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.
-	    ].
-	].
+        typeOrNil notNil ifTrue:[
+            class projectType == typeOrNil ifFalse: [
+                class setupForType:typeOrNil.
+            ].
+        ].
     ].
     ^ class
 
@@ -173,9 +173,9 @@
 
 definitionClassForPackage:newProjectID projectType:typeOrNil createIfAbsent:createIfAbsent
     ^ (self definitionClassForType:typeOrNil)
-	    definitionClassForPackage:newProjectID
-	    createIfAbsent:createIfAbsent
-	    projectType:typeOrNil
+            definitionClassForPackage:newProjectID
+            createIfAbsent:createIfAbsent
+            projectType:typeOrNil
 
     "Created: / 23-08-2006 / 14:28:53 / cg"
 !
@@ -195,8 +195,8 @@
 
 newForPackage:packageID
     ^ self
-	newNamed:(self initialClassNameForDefinitionOf:packageID)
-	package:packageID.
+        newNamed:(self initialClassNameForDefinitionOf:packageID)
+        package:packageID.
 
     "Created: / 11-08-2006 / 14:27:19 / cg"
 !
@@ -209,11 +209,11 @@
     self assert:(self ~~ ProjectDefinition).  "ProjectDefinition is abstract"
 
     newClass := self
-		    subclass:(newName asSymbol)
-		    instanceVariableNames:''
-		    classVariableNames:''
-		    poolDictionaries:''
-		    category:(self defaultCategory).
+                    subclass:(newName asSymbol)
+                    instanceVariableNames:''
+                    classVariableNames:''
+                    poolDictionaries:''
+                    category:(self defaultCategory).
 
     newClass package:packageID asSymbol.
     ^ newClass
@@ -229,7 +229,7 @@
     "answer all (recursive) prerequisite project ids of myself - in random order."
 
     ^ self allPreRequisitesWithParentDo:[:parent :prereq |
-	prereq = self package ifTrue:[ Transcript showCR:('oops: %1 depends on itself' bindWith:prereq) ].
+        prereq = self package ifTrue:[ Transcript showCR:('oops: %1 depends on itself' bindWith:prereq) ].
       ]
 
     "
@@ -260,24 +260,24 @@
     allPreRequisitesWithExtensions := allPreRequisites union:self extensionPackages.
 
     allPreRequisites do:[:eachPackageID |
-	|def|
-
-	self assert:(eachPackageID ~= self package).
-	orderedTuples add:(Array with:eachPackageID with:self package).
-
-	def := self definitionClassForPackage:eachPackageID.
-	def isNil ifTrue:[
-	    Transcript showCR:'Warning: no definition class for package: ', eachPackageID.
-	    effective := (self searchForPreRequisites: eachPackageID) keys.
-	] ifFalse:[
-	    effective := def effectivePreRequisites union:def extensionPackages.
-	    effective notEmptyOrNil ifTrue:[
-		effective do:[:eachPrerequisitePackageID|
-		    self assert:(eachPrerequisitePackageID ~= eachPackageID).
-		    orderedTuples add:(Array with:eachPrerequisitePackageID with:eachPackageID).
-		].
-	    ].
-	].
+        |def|
+
+        self assert:(eachPackageID ~= self package).
+        orderedTuples add:(Array with:eachPackageID with:self package).
+
+        def := self definitionClassForPackage:eachPackageID.
+        def isNil ifTrue:[
+            Transcript showCR:'Warning: no definition class for package: ', eachPackageID.
+            effective := (self searchForPreRequisites: eachPackageID) keys.
+        ] ifFalse:[
+            effective := def effectivePreRequisites union:def extensionPackages.
+            effective notEmptyOrNil ifTrue:[
+                effective do:[:eachPrerequisitePackageID|
+                    self assert:(eachPrerequisitePackageID ~= eachPackageID).
+                    orderedTuples add:(Array with:eachPrerequisitePackageID with:eachPackageID).
+                ].
+            ].
+        ].
     ].
 
     (orderedTuples detect:[:el | el first = el second] ifNone:nil) notNil ifTrue:[self halt].
@@ -410,8 +410,8 @@
     ^ mgr revisionInfoFromString:revString.
 
     "
-     (stx_libcomp extensionsRevisionInfoForManager:nil) revision
-     (stx_libbasic extensionsRevisionInfoForManager:nil)
+     (stx_libcomp extensionsRevisionInfoForManager:nil) revision  
+     (stx_libbasic extensionsRevisionInfoForManager:nil) 
     "
 
     "Created: / 25-11-2011 / 14:34:01 / cg"
@@ -424,7 +424,7 @@
 
     s := aPackageId asString copy replaceAny:':/' with:$_.
     (s endsWith:$_) ifTrue:[
-	s := s copyWithoutLast:1
+        s := s copyWithoutLast:1
     ].
     ^ s
 
@@ -463,6 +463,19 @@
     "Modified: / 18-08-2006 / 12:37:02 / cg"
 !
 
+loadDirectory
+    "if I was loaded from a directory (as oposed to loaded via a dll or from a scm),
+     return that directory. Otherwise return nil."
+
+    ^ self getAttribute:#projectDirectory
+!
+
+loadDirectory:aDirectory
+    "remember the directory from which I was loaded from"
+
+    self setAttribute:#projectDirectory to:aDirectory
+!
+
 module
     ^ self moduleOfClass:self
 
@@ -489,7 +502,7 @@
      cg_croquet package asPackageId module
      cg_croquet moduleDirectory
      stx_goodies_xml_vw moduleDirectory
-     cg_demos_demo1 moduleDirectory
+     cg_demos_demo1 moduleDirectory 
     "
 
     "Created: / 08-08-2006 / 20:25:39 / fm"
@@ -500,8 +513,8 @@
     ^ (aProjectID subStrings:$:) last
 
     "
-	bosch_dapasx_datenbasis_Definition moduleDirectory
-	bosch_dapasx_parameter_system_Definition moduleDirectory
+        bosch_dapasx_datenbasis_Definition moduleDirectory
+        bosch_dapasx_parameter_system_Definition moduleDirectory
     "
 
     "Created: / 08-08-2006 / 20:25:39 / fm"
@@ -573,10 +586,10 @@
     down := (parts2 copyFrom:common size+1) asStringWith:'\'.
     up isEmpty ifTrue:[
        down isEmpty ifTrue:[^ '.'].
-	^ down.
+        ^ down.
     ].
     down isEmpty ifTrue:[
-	^ up.
+        ^ up.
     ].
     ^ up, '\', down
 
@@ -600,8 +613,8 @@
     parts := aProjectID asCollectionOfSubstringsSeparatedByAny:':/'.
 
     aProjectID asPackageId module = 'stx' ifTrue:[
-	parts size == 1 ifTrue:[^ '.'].
-	^ (((2 to:parts size-1) collect:[:p | '..\']) asStringWith:'') , '..'
+        parts size == 1 ifTrue:[^ '.'].
+        ^ (((2 to:parts size-1) collect:[:p | '..\']) asStringWith:'') , '..'
     ].
 
     ^ ((parts collect:[:p | '..\']) asStringWith:'') , 'stx'
@@ -619,6 +632,19 @@
     "Modified: / 14-09-2006 / 14:49:17 / cg"
 !
 
+packageDirectory
+    "if I was loaded from a directory (as oposed to loaded via a dll or from a scm),
+     return that directory. 
+     Otherwise ask Smalltalk for my package directory a long the package path."
+
+    |loadDirectory|
+
+    (loadDirectory := self loadDirectory) ifNotNil:[ ^ loadDirectory ].
+    ^ Smalltalk packageDirectoryForPackageId: self package
+
+    "Created: / 15-06-2009 / 12:01:18 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
 packageName
     "the last component"
 
@@ -678,10 +704,10 @@
 
 pathSeparator:platformName
     platformName == #unix ifTrue:[
-	^ self pathSeparator_unix
+        ^ self pathSeparator_unix
     ].
     platformName == #win32 ifTrue:[
-	^ self pathSeparator_win32
+        ^ self pathSeparator_win32
     ].
     self error:'unknown operating system platform'.
 
@@ -706,14 +732,14 @@
     |p|
 
     arch == #unix ifTrue:[
-	p := (self pathToPackage_unix:aPackageID).
-	aBaseFilename isNil ifTrue:[^ p].
-	^ p , '/' , aBaseFilename
+        p := (self pathToPackage_unix:aPackageID).
+        aBaseFilename isNil ifTrue:[^ p].
+        ^ p , '/' , aBaseFilename
     ].
     arch == #win32 ifTrue:[
-	p := self pathToPackage_win32:aPackageID.
-	aBaseFilename isNil ifTrue:[^ p].
-	^ p , '\' , aBaseFilename
+        p := self pathToPackage_win32:aPackageID.
+        aBaseFilename isNil ifTrue:[^ p].
+        ^ p , '\' , aBaseFilename
     ].
     self error:'unknown operating system platform'.
 
@@ -726,13 +752,13 @@
     |rel|
 
     aPackageID asPackageId module = self package asPackageId module ifTrue:[
-	^ self unixPathToPackage:aPackageID from:self package
+        ^ self unixPathToPackage:aPackageID from:self package
     ].
     rel := self topRelativePathToPackage_unix:aPackageID.
     (rel startsWith:'stx/') ifTrue:[
-	^ '$(TOP)/', (rel copyFrom:'stx/' size + 1).
+        ^ '$(TOP)/', (rel copyFrom:'stx/' size + 1).
     ] ifFalse:[
-	^ '$(TOP)/../', rel
+        ^ '$(TOP)/../', rel
     ]
 
     "
@@ -752,14 +778,14 @@
     |rel|
 
     aPackageID asPackageId module = self package asPackageId module ifTrue:[
-	^ self msdosPathToPackage:aPackageID from:self package
+        ^ self msdosPathToPackage:aPackageID from:self package
     ].
 
     rel := self topRelativePathToPackage_win32:aPackageID.
     (rel startsWith:'stx\') ifTrue:[
-	^ '$(TOP)\', (rel copyFrom:'stx\' size + 1).
+        ^ '$(TOP)\', (rel copyFrom:'stx\' size + 1).
     ] ifFalse:[
-	^ '$(TOP)\..\', rel
+        ^ '$(TOP)\..\', rel
     ]
 
     "
@@ -807,7 +833,7 @@
     "answer true, if this project is completely loaded into the image"
 
     projectIsLoaded isNil ifTrue:[
-	projectIsLoaded := false.
+        projectIsLoaded := false.
     ].
     ^ projectIsLoaded
 
@@ -820,8 +846,8 @@
 projectIsLoaded:something
     projectIsLoaded := something.
     something ifTrue:[
-	"register myself as dependent - I want to get notified on method changes"
-	self class addDependent:self.
+        "register myself as dependent - I want to get notified on method changes"
+        self class addDependent:self.
     ].
 !
 
@@ -836,14 +862,14 @@
     |p|
 
     arch == #unix ifTrue:[
-	p := (self topRelativePathToPackage_unix:aPackageID).
-	aBaseFilename isNil ifTrue:[^ p].
-	^ p , '/' , aBaseFilename
+        p := (self topRelativePathToPackage_unix:aPackageID).
+        aBaseFilename isNil ifTrue:[^ p].
+        ^ p , '/' , aBaseFilename
     ].
     arch == #win32 ifTrue:[
-	p := self topRelativePathToPackage_win32:aPackageID.
-	aBaseFilename isNil ifTrue:[^ p].
-	^ p , '\' , aBaseFilename
+        p := self topRelativePathToPackage_win32:aPackageID.
+        aBaseFilename isNil ifTrue:[^ p].
+        ^ p , '\' , aBaseFilename
     ].
     self error:'unknown operating system platform'.
 
@@ -885,15 +911,15 @@
     parts2 := toPackageID asCollectionOfSubstringsSeparatedByAny:':/'.
     common := parts1 commonPrefixWith:parts2.
     common notEmpty ifTrue:[
-	up := ((1 to:parts1 size - common size) collect:[:p | '../']) asStringWith:''.
-	down := (parts2 copyFrom:common size+1) asStringWith:'/'.
-	(up isEmpty and:[down isEmpty]) ifTrue:[^ '.'].
-	^ up , down
+        up := ((1 to:parts1 size - common size) collect:[:p | '../']) asStringWith:''.
+        down := (parts2 copyFrom:common size+1) asStringWith:'/'.
+        (up isEmpty and:[down isEmpty]) ifTrue:[^ '.'].
+        ^ up , down
     ].
 
     rel := (self topRelativePathToPackage_unix:toPackageID).
     (rel startsWith:'stx/') ifTrue:[
-	^ '$(TOP)', (rel copyFrom:'stx/' size)
+        ^ '$(TOP)', (rel copyFrom:'stx/' size)
     ].
 
     ^ '$(TOP)/../', rel.
@@ -927,8 +953,8 @@
     parts := aProjectID asCollectionOfSubstringsSeparatedByAny:':/'.
 
     aProjectID asPackageId module = 'stx' ifTrue:[
-	parts size == 1 ifTrue:[^ ''].
-	^ (((2 to:parts size-1) collect:[:p | '../']) asStringWith:'') , '..'
+        parts size == 1 ifTrue:[^ ''].
+        ^ (((2 to:parts size-1) collect:[:p | '../']) asStringWith:'') , '..'
     ].
 
     ^ ((parts collect:[:p | '../']) asStringWith:'') , 'stx'
@@ -945,7 +971,6 @@
     "Created: / 14-09-2006 / 14:59:53 / cg"
 ! !
 
-
 !ProjectDefinition class methodsFor:'accessing - packaging'!
 
 classNames:aCollectionOfClassNames
@@ -968,9 +993,9 @@
     newCode := self classNamesAndAttributes_codeFor:newSpec.
 
     (compilerOrNil ? self compilerClass)
-	compile:newCode
-	forClass:self theMetaclass
-	inCategory:'description - contents'.
+        compile:newCode
+        forClass:self theMetaclass
+        inCategory:'description - contents'.
 !
 
 excludeClasses:toExclude usingCompiler:compilerOrNil
@@ -984,16 +1009,16 @@
     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.
-	    ].
-	].
+        |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
 
@@ -1012,23 +1037,23 @@
     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
-	    ].
-	].
+        |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
@@ -1045,31 +1070,30 @@
     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.
-	    ].
-	].
+        |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 - tests'!
 
 excludedFromTestSuite
@@ -1099,17 +1123,17 @@
 
     classes := classes asSortedCollection:[:a :b | a name <= b name ].
     classes do: [:eachClass |
-	| tests |
-
-	tests := eachClass suite tests.
-	tests := tests reject:[:test|self shouldExcludeTest: test].
-	suite addTests: tests
+        | tests |
+
+        tests := eachClass suite tests.
+        tests := tests reject:[:test|self shouldExcludeTest: test].
+        suite addTests: tests
     ].
     ^ suite
 
     "Created: / 01-04-2011 / 15:20:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 03-06-2011 / 17:07:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 08-08-2011 / 14:59:45 / cg"
-    "Modified: / 06-09-2011 / 10:26:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ProjectDefinition class methodsFor:'class initialization'!
@@ -1138,12 +1162,12 @@
     isStandAloneApp := Smalltalk isStandAloneApp.
 
     self allSubclassesDo:[:eachProjectDefinitionClass |
-	eachProjectDefinitionClass isAbstract ifFalse:[
-	    isStandAloneApp ifFalse:[
-		eachProjectDefinitionClass installAutoloadedClasses.
-	    ].
-	    eachProjectDefinitionClass projectIsLoaded:true.
-	]
+        eachProjectDefinitionClass isAbstract ifFalse:[
+            isStandAloneApp ifFalse:[
+                eachProjectDefinitionClass installAutoloadedClasses.
+            ].
+            eachProjectDefinitionClass projectIsLoaded:true.
+        ]
     ].
 
     "
@@ -1235,11 +1259,11 @@
 
 applicationIconFileName_code
     ^ String streamContents:[:s |
-	s nextPutLine:'applicationIconFileName'.
-	s nextPutLine:'    "Return the name (without suffix) of an icon-file (the app''s icon); will be included in the rc-resource file"'.
-	s cr;
-	nextPutLine:'    ^ nil';
-	nextPutLine:'    "/ ^ self applicationName'.
+        s nextPutLine:'applicationIconFileName'.
+        s nextPutLine:'    "Return the name (without suffix) of an icon-file (the app''s icon); will be included in the rc-resource file"'.
+        s cr;
+        nextPutLine:'    ^ nil';
+        nextPutLine:'    "/ ^ self applicationName'.
     ].
 
     "
@@ -1254,21 +1278,21 @@
     "generate method code returning all classes of the project from the given spec."
 
     ^ String streamContents:[:s |
-	s nextPutLine:'classNamesAndAttributes'.
-	s nextPutLine:'    "lists the classes which are to be included in the project.'.
-	s nextPutLine:'     Each entry in the list may be: a single class-name (symbol),'.
-	s nextPutLine:'     or an array-literal consisting of class name and attributes.'.
-	s nextPutLine:'     Attributes are: #autoload or #<os> where os is one of win32, unix,..."'.
-	s nextPutLine:''.
-	s nextPutLine:'    ^ #('.
-	s nextPutLine:'        "<className> or (<className> attributes...) in load order"'.
-
-	(self classNamesAndAttributesFromSpecArray:aSpecArray) do:[:entry |
-	    s spaces:8.
-	    entry storeArrayElementOn:s.
-	    s cr.
-	].
-	s nextPutLine:'    )'
+        s nextPutLine:'classNamesAndAttributes'.
+        s nextPutLine:'    "lists the classes which are to be included in the project.'.
+        s nextPutLine:'     Each entry in the list may be: a single class-name (symbol),'.
+        s nextPutLine:'     or an array-literal consisting of class name and attributes.'.
+        s nextPutLine:'     Attributes are: #autoload or #<os> where os is one of win32, unix,..."'.
+        s nextPutLine:''.
+        s nextPutLine:'    ^ #('.
+        s nextPutLine:'        "<className> or (<className> attributes...) in load order"'.
+
+        (self classNamesAndAttributesFromSpecArray:aSpecArray) do:[:entry |
+            s spaces:8.
+            entry storeArrayElementOn:s.
+            s cr.
+        ].
+        s nextPutLine:'    )'
     ].
 
     "
@@ -1393,9 +1417,9 @@
 
 companyName_codeFor:aString
     ^ String streamContents:[:s |
-	s nextPutLine:'companyName'.
-	s nextPutLine:'    "Return a companyname which will appear in <lib>.rc"'.
-	s cr; nextPutLine:'    ^ ',aString storeString.
+        s nextPutLine:'companyName'.
+        s nextPutLine:'    "Return a companyname which will appear in <lib>.rc"'.
+        s cr; nextPutLine:'    ^ ',aString storeString.
     ].
 
     "
@@ -1409,13 +1433,13 @@
 compileDescriptionMethods
     (self isLibraryDefinition
     or:[ self isApplicationDefinition ] ) ifFalse:[
-	self error:'I am abstract - must be a subclass of Libray- or ApplicationDefinition.'
+        self error:'I am abstract - must be a subclass of Libray- or ApplicationDefinition.'
     ].
 
     self
-	forEachMethodsCodeToCompileDo:[:code :category |
-	    self compile:code categorized:category
-	].
+        forEachMethodsCodeToCompileDo:[:code :category |
+            self compile:code categorized:category
+        ].
 
 "/    self instAndClassMethodsDo:[:m | m package:self package].
 
@@ -1432,9 +1456,9 @@
 
 description_code
     ^ String streamContents:[:s |
-	s nextPutLine:'description'.
-	s nextPutLine:'    "Return a description string which will appear in vc.def / bc.def"'.
-	s cr; nextPutLine:'    ^ ',self description asString storeString.
+        s nextPutLine:'description'.
+        s nextPutLine:'    "Return a description string which will appear in vc.def / bc.def"'.
+        s cr; nextPutLine:'    ^ ',self description asString storeString.
     ].
 
     "
@@ -1474,12 +1498,12 @@
     "generate the code of the #excludedFromPreRequisites method"
 
     ^ String streamContents:[:s |
-	s nextPutLine:'excludedFromPreRequisites'.
-	s nextPutLine:'    "list all packages which should be ignored in the automatic'.
-	s nextPutLine:'     preRequisites scan. See #preRequisites for more."'.
-	s nextPutLine:''.
-	s nextPutLine:'    ^ #('.
-	s nextPutLine:'    )'
+        s nextPutLine:'excludedFromPreRequisites'.
+        s nextPutLine:'    "list all packages which should be ignored in the automatic'.
+        s nextPutLine:'     preRequisites scan. See #preRequisites for more."'.
+        s nextPutLine:''.
+        s nextPutLine:'    ^ #('.
+        s nextPutLine:'    )'
     ].
 !
 
@@ -1561,25 +1585,25 @@
 
 forEachContentsMethodsCodeToCompileDo:aTwoArgBlock ignoreOldDefinition:ignoreOldDefinition
     aTwoArgBlock
-	value:(self classNamesAndAttributes_code_ignoreOldEntries:ignoreOldDefinition ignoreOldDefinition:ignoreOldDefinition)
-	value:'description - contents'.
+        value:(self classNamesAndAttributes_code_ignoreOldEntries:ignoreOldDefinition ignoreOldDefinition:ignoreOldDefinition)
+        value:'description - contents'.
 
     aTwoArgBlock
-	value: (self extensionMethodNames_code_ignoreOldEntries:ignoreOldDefinition)
-	value: 'description - contents'.
+        value: (self extensionMethodNames_code_ignoreOldEntries:ignoreOldDefinition)
+        value: 'description - contents'.
 
     aTwoArgBlock
-	value: self preRequisites_code
-	value: 'description'.
+        value: self preRequisites_code
+        value: 'description'.
 
     aTwoArgBlock
-	value: self excludedFromPreRequisites_code
-	value: 'description'.
+        value: self excludedFromPreRequisites_code
+        value: 'description'.
 
     (self monticelloPackageName notNil and:[self respondsTo:#monticelloTimestamps_code]) ifTrue:[
-	aTwoArgBlock
-	    value: self monticelloTimestamps_code
-	    value: 'description - monticello'.
+        aTwoArgBlock
+            value: self monticelloTimestamps_code
+            value: 'description - monticello'.
     ].
 
     "Modified: / 09-11-2010 / 18:41:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -1591,8 +1615,8 @@
 
 forEachMethodsCodeToCompileDo:aTwoArgBlock ignoreOldDefinition:ignoreOldDefinition
     self
-	forEachContentsMethodsCodeToCompileDo:aTwoArgBlock
-	ignoreOldDefinition:ignoreOldDefinition.
+        forEachContentsMethodsCodeToCompileDo:aTwoArgBlock
+        ignoreOldDefinition:ignoreOldDefinition.
 
     "/  code like:
     "/
@@ -1618,9 +1642,9 @@
     ].
 
     (self monticelloPackageName notNil and:[self respondsTo:#monticelloTimestamps_code]) ifTrue:[
-	aTwoArgBlock
-	    value: self monticelloTimestamps_code
-	    value: 'description - monticello'.
+        aTwoArgBlock
+            value: self monticelloTimestamps_code
+            value: 'description - monticello'.
     ].
 
     "Created: / 18-08-2006 / 16:22:37 / cg"
@@ -1630,9 +1654,9 @@
 
 legalCopyright_code
     ^ String streamContents:[:s |
-	s nextPutLine:'legalCopyright'.
-	s nextPutLine:'    "Return a copyright string which will appear in <lib>.rc"'.
-	s cr; nextPutLine:'    ^ ', self legalCopyright storeString.
+        s nextPutLine:'legalCopyright'.
+        s nextPutLine:'    "Return a copyright string which will appear in <lib>.rc"'.
+        s cr; nextPutLine:'    ^ ', self legalCopyright storeString.
     ].
 
     "
@@ -1657,46 +1681,46 @@
     preRequisites addAll: (searchedPreRequisites keys).
 
     self isApplicationDefinition ifTrue:[
-	preRequisites add:#'stx:libcomp'.
-	self isGUIApplication ifTrue:[
-	    preRequisites add:#'stx:libbasic2'.
-	    preRequisites add:#'stx:libview'.
-	    preRequisites add:#'stx:libview2'.
-	    preRequisites add:#'stx:libwidg'.
-	    preRequisites add:#'stx:libwidg2'.
-	    preRequisites add:#'stx:libui'.
-	].
+        preRequisites add:#'stx:libcomp'.
+        self isGUIApplication ifTrue:[
+            preRequisites add:#'stx:libbasic2'.
+            preRequisites add:#'stx:libview'.
+            preRequisites add:#'stx:libview2'.
+            preRequisites add:#'stx:libwidg'.
+            preRequisites add:#'stx:libwidg2'.
+            preRequisites add:#'stx:libui'.
+        ].
     ].
 
     preRequisites removeAllFoundIn:self excludedFromPreRequisites.
     preRequisites remove:self package ifAbsent:[].
 
     ^ String streamContents:[:s |
-	s nextPutLine:'preRequisites'.
-	s nextPutLine:'    "list all required packages.'.
-	s nextPutLine:'     This list can be maintained manually or (better) generated and'.
-	s nextPutLine:'     updated by scanning the superclass hierarchies and looking for'.
-	s nextPutLine:'     global variable accesses. (the browser has a menu function for that)'.
-	s nextPutLine:'     Howevery, often too much is found, and you may want to explicitely'.
-	s nextPutLine:'     exclude individual packages in the #excludedFromPrerequisites method."'.
-	s nextPutLine:''.
-	s nextPutLine:'    ^ #('.
-	preRequisites asSortedCollection do:[:eachPackageID |
-	    |reason|
-
-	    s spaces:8.
-	    eachPackageID asSymbol storeOn:s.
-	    reason := searchedPreRequisites at:eachPackageID ifAbsent:nil.
-	    reason notEmptyOrNil ifTrue:[
-		"superclasses are really important"
-		importantReason := reason detect:[:eachReasonString|
-		    eachReasonString includesString:' superclass '
-		] ifNone:[reason anElement].
-		s nextPutAll:'    "'; nextPutAll:importantReason; nextPutAll:' "'.
-	    ].
-	    s cr.
-	].
-	s nextPutLine:'    )'
+        s nextPutLine:'preRequisites'.
+        s nextPutLine:'    "list all required packages.'.
+        s nextPutLine:'     This list can be maintained manually or (better) generated and'.
+        s nextPutLine:'     updated by scanning the superclass hierarchies and looking for'.
+        s nextPutLine:'     global variable accesses. (the browser has a menu function for that)'.
+        s nextPutLine:'     Howevery, often too much is found, and you may want to explicitely'.
+        s nextPutLine:'     exclude individual packages in the #excludedFromPrerequisites method."'.
+        s nextPutLine:''.
+        s nextPutLine:'    ^ #('.
+        preRequisites asSortedCollection do:[:eachPackageID |
+            |reason|
+
+            s spaces:8.
+            eachPackageID asSymbol storeOn:s.
+            reason := searchedPreRequisites at:eachPackageID ifAbsent:nil.
+            reason notEmptyOrNil ifTrue:[
+                "superclasses are really important"
+                importantReason := reason detect:[:eachReasonString|
+                    eachReasonString includesString:' superclass '
+                ] ifNone:[reason anElement].
+                s nextPutAll:'    "'; nextPutAll:importantReason; nextPutAll:' "'.
+            ].
+            s cr.
+        ].
+        s nextPutLine:'    )'
     ].
 
     "
@@ -1742,9 +1766,9 @@
 
 productName_codeFor:aString
     ^ String streamContents:[:s |
-	s nextPutLine:'productName'.
-	s nextPutLine:'    "Return a product name which will appear in <lib>.rc"'.
-	s cr; nextPutLine:'    ^ ',aString storeString.
+        s nextPutLine:'productName'.
+        s nextPutLine:'    "Return a product name which will appear in <lib>.rc"'.
+        s cr; nextPutLine:'    ^ ',aString storeString.
     ].
 
     "
@@ -1774,7 +1798,6 @@
     "Modified: / 29-03-2012 / 18:43:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-
 !ProjectDefinition class methodsFor:'defaults'!
 
 applicationTypes
@@ -1892,15 +1915,15 @@
     def := self definitionClassForPackage:packageId.
     def isNil ifTrue:[
         "Maybe the package is not loaded? Try to load it..."
-	(Smalltalk loadPackage: packageId) ifTrue:
+        (Smalltalk loadPackage: packageId) ifTrue:
             [def := self definitionClassForPackage:packageId]
     ].
-    ^ def isNil
+    ^ def isNil 
         ifTrue:
-	    ["Still no project definition - maybe does not exists?"
-	    (ProjectDefinition searchForPreRequisites: packageId) keys]
+            ["Still no project definition - maybe does not exists?"
+            (ProjectDefinition searchForPreRequisites: packageId) keys]
         ifFalse:
-	    [def effectivePreRequisites]
+            [def effectivePreRequisites]
 
     "Created: / 24-02-2011 / 22:47:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 18-11-2011 / 14:52:43 / cg"
@@ -1970,7 +1993,6 @@
     "Modified: / 17-08-2006 / 19:59:26 / cg"
 ! !
 
-
 !ProjectDefinition class methodsFor:'description - classes'!
 
 additionalClassNamesAndAttributes
@@ -2014,7 +2036,7 @@
 additionalBaseAddressDefinition_bc_dot_mak
     "allows for a base-address definition to be added to the bc.mak file.
      Subclasses may redefine this to something like
-	LIB_BASE=$(LIBWIDG_BASE)
+        LIB_BASE=$(LIBWIDG_BASE)
      This will be inserted BEFORE the 'include stdHeader'
     "
 
@@ -2058,18 +2080,18 @@
      generate a rule to create the header file only."
 
     ^ String streamContents:[:s |
-	(self extensionClassesWithSuperclasses:true) do:[:eachExtendedClass |
-	    |headerFileDirPath baseFilename|
-
-	    (eachExtendedClass isLoaded not or:[eachExtendedClass wasAutoloaded]) ifTrue:[
-		headerFileDirPath := self perform:pathConverter with:eachExtendedClass package.
-		baseFilename := self filenameForClass:eachExtendedClass.
-
-		s nextPutAll:(template
-		    bindWith:headerFileDirPath
-		    with:baseFilename).
-	    ]
-	].
+        (self extensionClassesWithSuperclasses:true) do:[:eachExtendedClass |
+            |headerFileDirPath baseFilename|
+
+            (eachExtendedClass isLoaded not or:[eachExtendedClass wasAutoloaded]) ifTrue:[
+                headerFileDirPath := self perform:pathConverter with:eachExtendedClass package.
+                baseFilename := self filenameForClass:eachExtendedClass.
+
+                s nextPutAll:(template
+                    bindWith:headerFileDirPath
+                    with:baseFilename).
+            ]
+        ].
     ].
 
     "Created: / 12-09-2011 / 16:23:52 / cg"
@@ -2079,8 +2101,8 @@
     "rules for header files (of autoloaded classes)"
 
     ^ self
-	additionalHeaderRulesUsingTemplate:(self singleHeaderRuleTemplate_bc_dot_mak)
-	pathConverter:#pathToPackage_win32:
+        additionalHeaderRulesUsingTemplate:(self singleHeaderRuleTemplate_bc_dot_mak)
+        pathConverter:#pathToPackage_win32:
 
     "Created: / 12-09-2011 / 15:44:09 / cg"
 !
@@ -2089,8 +2111,8 @@
     "rules for header files (of autoloaded classes)"
 
     ^ self
-	additionalHeaderRulesUsingTemplate:(self singleHeaderRuleTemplate_make_dot_proto)
-	pathConverter:#pathToPackage_unix:
+        additionalHeaderRulesUsingTemplate:(self singleHeaderRuleTemplate_make_dot_proto)
+        pathConverter:#pathToPackage_unix:
 
     "Created: / 12-09-2011 / 15:44:28 / cg"
 !
@@ -2370,12 +2392,12 @@
 stcOptimizationOptions
     "see the stc reference / stc usage for options.
      For now, the following variants are useful:
-	+optspace3                  most compact code
-				    - use for all gui, application code.
-
-	+optinline +optinline2 +inlineNew
-				    fastest code
-				    - use only for computation-intensive classes"
+        +optspace3                  most compact code
+                                    - use for all gui, application code.
+
+        +optinline +optinline2 +inlineNew
+                                    fastest code
+                                    - use only for computation-intensive classes"
 
     ^ '+optspace3'
 
@@ -2385,15 +2407,14 @@
 stcWarningOptions
     "see the stc reference / stc usage for options.
      For now, the following variants are useful:
-	-warn                   no warnings
-	-warnNonStandard        no warnings about non-standard smalltalk features"
+        -warn                   no warnings
+        -warnNonStandard        no warnings about non-standard smalltalk features"
 
     ^ '-warnNonStandard'
 
     "Created: / 18-08-2006 / 12:51:38 / cg"
 ! !
 
-
 !ProjectDefinition class methodsFor:'description - project information'!
 
 applicationAdditionalIconFileNames
@@ -2415,10 +2436,10 @@
 
     (
       #(
-	'stx'
-	'exept'
+        'stx'
+        'exept'
       ) includes:self module) ifTrue:[
-	^ 'eXept Software AG'
+        ^ 'eXept Software AG'
     ].
 
     ^ 'My Company'
@@ -2528,10 +2549,10 @@
     "<major>.<minor>.<rev>.<rel> (such as '1.2.17.1') "
 
     ^ '%1.%2.%3.%4'
-	bindWith:self fileMajorVersionNr
-	with:self fileMinorVersionNr
-	with:self fileRevisionNr
-	with:self fileReleaseNr.
+        bindWith:self fileMajorVersionNr
+        with:self fileMinorVersionNr
+        with:self fileRevisionNr
+        with:self fileReleaseNr.
 
     "
      self fileVersion
@@ -2546,10 +2567,10 @@
     "<major>,<minor>,<revision>,<release> (such as '2,17,1,2') "
 
     ^ '%1,%2,%3,%4'
-	bindWith:self fileMajorVersionNr
-	with:self fileMinorVersionNr
-	with:self fileRevisionNr
-	with:self fileReleaseNr.
+        bindWith:self fileMajorVersionNr
+        with:self fileMinorVersionNr
+        with:self fileRevisionNr
+        with:self fileReleaseNr.
 
     "Created: / 17-08-2006 / 20:16:17 / cg"
     "Modified: / 30-08-2006 / 18:54:20 / cg"
@@ -2568,14 +2589,14 @@
      Under win32, this is placed into the dlls file-info"
 
     self module = 'stx' ifTrue:[
-	"hardwired-default"
-	^ 'Copyright Claus Gittinger 1988-%1\nCopyright eXept Software AG 1998-%1'
-	    bindWith:(Date today year printString)
+        "hardwired-default"
+        ^ 'Copyright Claus Gittinger 1988-%1\nCopyright eXept Software AG 1998-%1'
+            bindWith:(Date today year printString)
     ].
     self module = 'exept' ifTrue:[
-	"hardwired-default"
-	^ 'Copyright eXept Software AG 1998-%1'
-	    bindWith:(Date today year printString)
+        "hardwired-default"
+        ^ 'Copyright eXept Software AG 1998-%1'
+            bindWith:(Date today year printString)
     ].
 
     ^ 'My CopyRight or CopyLeft'
@@ -2686,15 +2707,15 @@
 
     m := self module.
     m = 'stx' ifTrue:[
-	^ 'Smalltalk/X'
+        ^ 'Smalltalk/X'
     ].
     m = 'exept' ifTrue:[
-	^ 'eXept addOns'
+        ^ 'eXept addOns'
     ].
     Error handle:[:ex |
-	^ 'ProductName'
+        ^ 'ProductName'
     ] do:[
-	^ self startupClassName
+        ^ self startupClassName
     ].
 
     "Modified: / 08-11-2007 / 16:45:14 / cg"
@@ -2720,7 +2741,7 @@
     "Returns a product publisher which will appear in <app>.nsi."
 
     ( #('exept' 'stx') includes:self module) ifTrue:[
-	^ 'eXept Software AG'
+        ^ 'eXept Software AG'
     ].
 
     ^ self companyName
@@ -2742,10 +2763,10 @@
     "<major>.<minor>.<revision>.<release> (such as '5.3.2.1')"
 
     ^ '%1.%2.%3.%4'
-	bindWith:self majorVersionNr
-	with:self minorVersionNr
-	with:self revisionNr
-	with:self releaseNr.
+        bindWith:self majorVersionNr
+        with:self minorVersionNr
+        with:self revisionNr
+        with:self releaseNr.
 
     "
      self productVersion
@@ -2760,10 +2781,10 @@
     "<major>.<minor>.<revision>.<release> (such as '0,1,1,1') "
 
     ^ '%1,%2,%3,%4'
-	bindWith:self majorVersionNr
-	with:self minorVersionNr
-	with:self revisionNr
-	with:self releaseNr.
+        bindWith:self majorVersionNr
+        with:self minorVersionNr
+        with:self revisionNr
+        with:self releaseNr.
 
     "
      self productVersionCommaSeparated
@@ -2777,7 +2798,7 @@
     "Returns a product webSite which will appear in <app>.nsi."
 
     ( #('exept' 'stx') includes:self module) ifTrue:[
-	^ 'http://www.exept.de'
+        ^ 'http://www.exept.de'
     ].
 
     "/ should be redefined by concrete ApplicationDefinition
@@ -2873,10 +2894,10 @@
 
     pairs := OrderedCollection new.
     self forEachFileNameAndGeneratorMethodDo:[:fileName :generator |
-	|file|
-
-	file := self perform:generator.
-	pairs add:(Array with:fileName with:file)
+        |file|
+
+        file := self perform:generator.
+        pairs add:(Array with:fileName with:file)
     ].
 
     pairs pairsDo:aTwoArgBlock
@@ -2915,14 +2936,14 @@
     dir := directory asFilename.
     dir exists ifFalse:[self error:'Directory does not exist'].
     [
-	s := ( dir / (filename asFilename baseName) ) writeStream.
-	s nextPutAll: (self generateFile: filename).
+        s := ( dir / (filename asFilename baseName) ) writeStream.
+        s nextPutAll: (self generateFile: filename).
     ] ensure:[
-	s ifNotNil:[s close]
+        s ifNotNil:[s close]
     ]
 
     "
-	stx_projects_smalltalk generateFile:'package.deps.rake' in: '/tmp'
+        stx_projects_smalltalk generateFile:'package.deps.rake' in: '/tmp'
     "
 
     "Created: / 26-02-2011 / 10:42:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -2937,16 +2958,16 @@
 
     firstLine := true.
     self searchForClasses do:[:eachClass|
-	firstLine ifTrue:[
-	    aStream nextPutAll:'cvs rm -f '.
-	    firstLine := false.
-	].
-	eachClass classFilename ~= (eachClass generateClassFilename, '.st') ifTrue:[
-	    aStream nextPutAll:eachClass classBaseFilename; space.
-	]
+        firstLine ifTrue:[
+            aStream nextPutAll:'cvs rm -f '.
+            firstLine := false.
+        ].
+        eachClass classFilename ~= (eachClass generateClassFilename, '.st') ifTrue:[
+            aStream nextPutAll:eachClass classBaseFilename; space.
+        ]
     ].
     firstLine ifFalse:[
-	aStream cr.
+        aStream cr.
     ].
 
     "
@@ -2958,11 +2979,11 @@
     "generate a shell script to rename broken class filenames"
 
     self searchForClasses do:[:eachClass|
-	eachClass classFilename ~= (eachClass generateClassFilename, '.st') ifTrue:[
-	    aStream nextPutAll:'cp ';
-		   nextPutAll:eachClass classBaseFilename; nextPutAll:',v ';
-		   nextPutAll:eachClass generateClassFilename; nextPutAll:'.st,v'; cr.
-	]
+        eachClass classFilename ~= (eachClass generateClassFilename, '.st') ifTrue:[
+            aStream nextPutAll:'cp ';
+                   nextPutAll:eachClass classBaseFilename; nextPutAll:',v ';
+                   nextPutAll:eachClass generateClassFilename; nextPutAll:'.st,v'; cr.
+        ]
     ].
 
     "
@@ -2975,78 +2996,78 @@
    self checkIfClassesArePresent.
 
     ^ String
-	streamContents:[:s |
-	    |addEntry|
-
-	    addEntry :=
-		[:eachClassName |
-		    |cls fn wasLoaded failedToLoad numClassInstvars|
-
-		    s nextPutAll:eachClassName.
-		    s nextPutAll:' '.
-
-		    cls := Smalltalk classNamed:eachClassName.
-		    cls isNil ifTrue:[
-			fn := self filenameForClass:eachClassName.
-			s nextPutAll:fn.
-			s nextPutAll:' '; nextPutAll:(self package); nextPutAll:' '.
-			s nextPutAll:' '; nextPutAll:'unknownCategory' storeString; nextPutAll:' '.
-			s nextPutAll:' '; nextPutAll:'0'.
-		    ] ifFalse:[
-			wasLoaded := cls isLoaded.
-			wasLoaded ifFalse:[
-			    failedToLoad := false.
-
-			    Error handle:[:ex |
-				failedToLoad := true.
-			    ] do:[
-				ParserFlags
-				    withSTCCompilation:#never
-				    do:[
-					cls autoload.
-				    ]
-			    ].
-			].
-
-			fn := self filenameForClass:cls.
-			(fn includes:Character space) ifTrue:[
-			    s nextPutAll:fn storeString.
-			] ifFalse:[
-			    s nextPutAll:fn.
-			].
-			s nextPutAll:' '; nextPutAll:(self package); nextPutAll:' '.
-			s nextPutAll: (cls category asString storeString).
-			failedToLoad ifTrue:[
-			    s nextPutAll:' 0'.
-			] ifFalse:[
-			    numClassInstvars := cls theMetaclass instSize - Class instSize.
-			    s nextPutAll:' '; nextPutAll:numClassInstvars printString.
-			].
-
-			wasLoaded ifFalse:[
-			    cls unload
-			]
-		    ].
-		    s cr.
-		].
+        streamContents:[:s |
+            |addEntry|
+
+            addEntry :=
+                [:eachClassName |
+                    |cls fn wasLoaded failedToLoad numClassInstvars|
+
+                    s nextPutAll:eachClassName.
+                    s nextPutAll:' '.
+
+                    cls := Smalltalk classNamed:eachClassName.
+                    cls isNil ifTrue:[
+                        fn := self filenameForClass:eachClassName.
+                        s nextPutAll:fn.
+                        s nextPutAll:' '; nextPutAll:(self package); nextPutAll:' '.
+                        s nextPutAll:' '; nextPutAll:'unknownCategory' storeString; nextPutAll:' '.
+                        s nextPutAll:' '; nextPutAll:'0'.
+                    ] ifFalse:[
+                        wasLoaded := cls isLoaded.
+                        wasLoaded ifFalse:[
+                            failedToLoad := false.
+
+                            Error handle:[:ex |
+                                failedToLoad := true.
+                            ] do:[
+                                ParserFlags
+                                    withSTCCompilation:#never
+                                    do:[
+                                        cls autoload.
+                                    ]
+                            ].
+                        ].
+
+                        fn := self filenameForClass:cls.
+                        (fn includes:Character space) ifTrue:[
+                            s nextPutAll:fn storeString.
+                        ] ifFalse:[
+                            s nextPutAll:fn.
+                        ].
+                        s nextPutAll:' '; nextPutAll:(self package); nextPutAll:' '.
+                        s nextPutAll: (cls category asString storeString).
+                        failedToLoad ifTrue:[
+                            s nextPutAll:' 0'.
+                        ] ifFalse:[
+                            numClassInstvars := cls theMetaclass instSize - Class instSize.
+                            s nextPutAll:' '; nextPutAll:numClassInstvars printString.
+                        ].
+
+                        wasLoaded ifFalse:[
+                            cls unload
+                        ]
+                    ].
+                    s cr.
+                ].
 
             s nextPutLine:'# automagically generated by the project definition'.
             s nextPutLine:'# this file is needed for stc to be able to compile modules independently.'.
             s nextPutLine:'# it provides information about a classes filename, category and especially namespace.'.
 
-	    self allClassNames do:addEntry.
-	    self namesAndAttributesIn:(self additionalClassNamesAndAttributes) do: [:nm :attr |
-		(attr isEmptyOrNil or:[(attr includes:#autoload) not]) ifTrue:[
-		    addEntry value:nm
-		].
-	    ].
-	]
+            self allClassNames do:addEntry.
+            self namesAndAttributesIn:(self additionalClassNamesAndAttributes) do: [:nm :attr |
+                (attr isEmptyOrNil or:[(attr includes:#autoload) not]) ifTrue:[
+                    addEntry value:nm
+                ].
+            ].
+        ]
 
     "
         stx_libbasic generate_abbrev_dot_stc
-	DapasXProject generate_abbrev_dot_stc
-	DapasX_Datenbasis generate_abbrev_dot_stc
-	bosch_dapasx_interactiver_editor generate_abbrev_dot_stc
+        DapasXProject generate_abbrev_dot_stc
+        DapasX_Datenbasis generate_abbrev_dot_stc
+        bosch_dapasx_interactiver_editor generate_abbrev_dot_stc
     "
 
     "Created: / 09-08-2006 / 11:24:39 / fm"
@@ -3056,8 +3077,8 @@
 generate_autopackage_default_dot_apspec
 
     ^self
-	replaceMappings: self autopackage_default_dot_apspec_mappings
-	in: self autopackage_default_dot_apspec
+        replaceMappings: self autopackage_default_dot_apspec_mappings
+        in: self autopackage_default_dot_apspec
 
     "
      stx_projects_smalltalk generate_autopackage_default_dot_apspec
@@ -3068,8 +3089,8 @@
 
 generate_bc_dot_mak
     ^ (self
-	replaceMappings: self bc_dot_mak_mappings
-	in: self bc_dot_mak) asStringCollection withTabs asString
+        replaceMappings: self bc_dot_mak_mappings
+        in: self bc_dot_mak) asStringCollection withTabs asString
 
     "
      DapasXProject generate_bc_dot_mak
@@ -3082,14 +3103,14 @@
 generate_bmake_dot_mak
 
     ^self replaceMappings: self bmake_dot_mak_mappings
-	    in: self bmake_dot_mak
+            in: self bmake_dot_mak
 
     "Created: / 17-08-2006 / 20:03:43 / cg"
 !
 
 generate_builder_baseline_dot_rbspec
     ^ self replaceMappings:self builder_baseline_dot_rbspec_mappings
-	in:self builder_baseline_dot_rbspec
+        in:self builder_baseline_dot_rbspec
 
     "
      stx_projects_smalltalk generate_builder_baseline_dot_rbspec
@@ -3109,24 +3130,24 @@
 
 generate_loadAll
     ^ String
-	streamContents:[:s |
-	    |classNames classesLoaded classNamesUnloaded classesSorted classNamesSorted|
-
-	    classNames := self compiled_classNames_common.
-	    classesLoaded := classNames
-			collect:[:nm | Smalltalk classNamed:nm]
-			thenSelect:[:cls |  cls notNil and:[cls isLoaded] ].
-	    classNamesUnloaded := classNames
-			select:[:nm |
-			    |cls|
-			    cls := Smalltalk classNamed:nm.
-			    cls isNil or:[cls isLoaded not]
-			].
-
-	    classesSorted := Class classesSortedByLoadOrder:classesLoaded.
-	    classNamesSorted := classesSorted collect:[:cls | cls name].
-
-	    s nextPutAll:'"/
+        streamContents:[:s |
+            |classNames classesLoaded classNamesUnloaded classesSorted classNamesSorted|
+
+            classNames := self compiled_classNames_common.
+            classesLoaded := classNames
+                        collect:[:nm | Smalltalk classNamed:nm]
+                        thenSelect:[:cls |  cls notNil and:[cls isLoaded] ].
+            classNamesUnloaded := classNames
+                        select:[:nm |
+                            |cls|
+                            cls := Smalltalk classNamed:nm.
+                            cls isNil or:[cls isLoaded not]
+                        ].
+
+            classesSorted := Class classesSortedByLoadOrder:classesLoaded.
+            classNamesSorted := classesSorted collect:[:cls | cls name].
+
+            s nextPutAll:'"/
 "/ $' , 'Header' , '$
 "/
 "/ loadAll-file to fileIn code for: ' , self package , '
@@ -3151,24 +3172,24 @@
 files := #(
 '.
 
-	    classesSorted do:[:eachClass |
-		s nextPutLine:'  ''' , (self filenameForClass:eachClass), ''''.
-	    ].
-	    classNamesUnloaded do:[:nm |
-		s nextPutLine:'  ''' , (self filenameForClass:nm), ''''.
-	    ].
-
-	    self namesAndAttributesIn:(self additionalClassNamesAndAttributes) do:[:nm :attr |
-		(attr isEmptyOrNil or:[(attr includes:#autoload) not]) ifTrue:[
-		    s nextPutLine:'  ''' , (self filenameForClass:nm), ''''.
-		].
-	    ].
-
-	    self hasExtensionMethods ifTrue:[
-		s nextPutLine:'  ''extensions.st'''.
-	    ].
-
-	    s nextPutAll:'
+            classesSorted do:[:eachClass |
+                s nextPutLine:'  ''' , (self filenameForClass:eachClass), ''''.
+            ].
+            classNamesUnloaded do:[:nm |
+                s nextPutLine:'  ''' , (self filenameForClass:nm), ''''.
+            ].
+
+            self namesAndAttributesIn:(self additionalClassNamesAndAttributes) do:[:nm :attr |
+                (attr isEmptyOrNil or:[(attr includes:#autoload) not]) ifTrue:[
+                    s nextPutLine:'  ''' , (self filenameForClass:nm), ''''.
+                ].
+            ].
+
+            self hasExtensionMethods ifTrue:[
+                s nextPutLine:'  ''extensions.st'''.
+            ].
+
+            s nextPutAll:'
 ).
 
 "/ see if there is a classLibrary
@@ -3176,11 +3197,11 @@
     |handle loaded|
 
     handle := ObjectFileLoader loadedObjectHandles
-		    detect:[:h | h package = ''' , self package , '''] ifNone:nil.
+                    detect:[:h | h package = ''' , self package , '''] ifNone:nil.
     handle ifNotNil:[
-	loaded := Set new:(handle classes size).
-	handle classes do:[:c| c isMeta ifFalse:[loaded add:c classBaseFilename]].
-	files := files \ loaded.
+        loaded := Set new:(handle classes size).
+        handle classes do:[:c| c isMeta ifFalse:[loaded add:c classBaseFilename]].
+        files := files \ loaded.
     ].
 ].
 
@@ -3190,16 +3211,16 @@
   files do:[:f |
     ''.'' infoPrint.
     f asFilename exists ifTrue:[
-	Smalltalk fileIn:f.
+        Smalltalk fileIn:f.
     ] ifFalse:[
-	Smalltalk fileIn:(''source/'' , f)
+        Smalltalk fileIn:(''source/'' , f)
     ]
   ].
   '' '' infoPrintCR.
 ].
 ''done (' , self package ,').'' infoPrintCR.
 '.
-	].
+        ].
 
     "Created: / 14-09-2006 / 14:21:31 / cg"
     "Modified: / 12-10-2006 / 15:55:00 / cg"
@@ -3208,8 +3229,8 @@
 generate_make_dot_proto
 
     ^ (self
-	replaceMappings: self make_dot_proto_mappings
-	in: self make_dot_proto) asStringCollection withTabs asString
+        replaceMappings: self make_dot_proto_mappings
+        in: self make_dot_proto) asStringCollection withTabs asString
 
     "
      stx_libbasic2 generate_make_dot_proto
@@ -3220,8 +3241,8 @@
 
 generate_make_dot_spec
     ^ (self
-	replaceMappings: self make_dot_spec_mappings
-	in: self make_dot_spec) asStringCollection withTabs asString
+        replaceMappings: self make_dot_spec_mappings
+        in: self make_dot_spec) asStringCollection withTabs asString
 
     "
      DapasXProject generate_make_dot_spec
@@ -3235,8 +3256,8 @@
 generate_makefile
 
     ^ (self
-	replaceMappings: self makefile_mappings
-	in: self makefile) asStringCollection withTabs asString
+        replaceMappings: self makefile_mappings
+        in: self makefile) asStringCollection withTabs asString
 
     "
      stx_libbasic2 generate_makefile
@@ -3254,7 +3275,7 @@
 generate_packageName_dot_rc
 
     ^self replaceMappings: self packageName_dot_rc_mappings
-	    in: self packageName_dot_rc
+            in: self packageName_dot_rc
 
 "
   bosch_dapasx_datenbasis generate_packageName_dot_rc
@@ -3271,8 +3292,8 @@
 
 generate_package_dot_deps_dot_rake
     ^ (self replaceMappings:self package_dot_deps_dot_rake_mappings
-	in:self package_dot_deps_dot_rake) asStringCollection
-	withTabs asString
+        in:self package_dot_deps_dot_rake) asStringCollection
+        withTabs asString
 
     "
      stx_libjava generate_dependencies_dot_rake"
@@ -3291,7 +3312,7 @@
 generate_vc_dot_def
 
     ^self replaceMappings: self vc_dot_def_mappings
-	    in: self vc_dot_def
+            in: self vc_dot_def
 
 "
   DapasXProject generate_vc_dot_def
@@ -3305,7 +3326,7 @@
 generate_vcmake_dot_mak
 
     ^self replaceMappings: self bmake_dot_mak_mappings
-	    in: self vcmake_dot_mak
+            in: self vcmake_dot_mak
 !
 
 protectedFileNames
@@ -3397,12 +3418,12 @@
 
     mappings := Dictionary new.
     mappings
-	at:'APPLICATION' put:(self perform:#applicationName ifNotUnderstood:[self packageName]);
-	at:'APPLICATION_PACKAGE' put:self package printString;
-	at:'PREAMBLE' put:self builder_baseline_dot_rbspec_preamble;
-	at:'POSTAMBLE' put:self builder_baseline_dot_rbspec_postamble;
-	at:'PACKAGES' put:self builder_baseline_dot_rbspec_packages;
-	yourself.
+        at:'APPLICATION' put:(self perform:#applicationName ifNotUnderstood:[self packageName]);
+        at:'APPLICATION_PACKAGE' put:self package printString;
+        at:'PREAMBLE' put:self builder_baseline_dot_rbspec_preamble;
+        at:'POSTAMBLE' put:self builder_baseline_dot_rbspec_postamble;
+        at:'PACKAGES' put:self builder_baseline_dot_rbspec_packages;
+        yourself.
     ^ mappings
 
     "Modified: / 21-12-2010 / 11:00:22 / cg"
@@ -3412,20 +3433,20 @@
 
 builder_baseline_dot_rbspec_packages
     ^ String streamContents:
-	    [:s |
-	    self allPreRequisitesSorted do:
-		    [:packageId |
-		    s
-			nextPutAll:('  package "%1"' bindWith:packageId);
-			cr ] ].
+            [:s |
+            self allPreRequisitesSorted do:
+                    [:packageId |
+                    s
+                        nextPutAll:('  package "%1"' bindWith:packageId);
+                        cr ] ].
 
     "Created: / 24-02-2011 / 11:59:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 classLine_mappings:aClassName
     ^ Dictionary new
-	at:'CLASS' put:(self st2c:aClassName);
-	yourself
+        at:'CLASS' put:(self st2c:aClassName);
+        yourself
 
     "Modified: / 09-08-2006 / 18:27:07 / fm"
     "Created: / 19-09-2006 / 22:47:43 / cg"
@@ -3475,6 +3496,7 @@
     "Created: / 09-08-2006 / 11:20:45 / fm"
     "Modified: / 09-08-2006 / 16:44:48 / fm"
     "Modified: / 24-06-2009 / 21:50:13 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 22-08-2009 / 12:03:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 05-09-2012 / 10:10:40 / cg"
     "Modified: / 28-11-2012 / 10:07:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -3494,7 +3516,7 @@
 
 makefile_mappings
     ^ Dictionary new
-	yourself
+        yourself
 !
 
 packageName_dot_rc_mappings
@@ -3502,56 +3524,56 @@
 
     d := Dictionary new.
     d
-	at: 'PRODUCT_NAME' put: (self productName);
-	at: 'PRODUCT_VERSION' put: (self productVersion);
-	at: 'PRODUCT_DATE' put: (self productDate);
-	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: 'INTERNAL_NAME' put: (self internalName).
+        at: 'PRODUCT_NAME' put: (self productName);
+        at: 'PRODUCT_VERSION' put: (self productVersion);
+        at: 'PRODUCT_DATE' put: (self productDate);
+        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: 'INTERNAL_NAME' put: (self internalName).
 
     s := self legalCopyright.
     s notNil ifTrue:[
-	d at: 'LEGAL_COPYRIGHT_LINE' put: '      VALUE "LegalCopyright", "',s,'\0"'
+        d at: 'LEGAL_COPYRIGHT_LINE' put: '      VALUE "LegalCopyright", "',s,'\0"'
     ].
     s := String streamContents:[:stream|
-	    |suff|
-
-	    s := self applicationIconFileName.
-	    s notNil ifTrue:[
-		s asFilename suffix isEmptyOrNil ifTrue:[
-		    suff := '.ico'
-		] ifFalse:[
-		    suff := ''
-		].
-		'IDR_MAINFRAME           ICON    DISCARDABLE     "%1%2"'
-			expandPlaceholdersWith:(Array with:s with:suff) on:stream.
-		stream cr.
-	    ].
-
-	    s := self splashFileName.
-	    s notNil ifTrue:[
-		s asFilename suffix isEmptyOrNil ifTrue:[
-		    suff := '.bmp'
-		] ifFalse:[
-		    suff := ''
-		].
-		'IDR_SPLASH           BITMAP    DISCARDABLE     "%1%2"'
-			expandPlaceholdersWith:(Array with:s with:suff) on:stream.
-		stream cr.
-	    ].
-	    resourceCount := 2.
-	    self applicationAdditionalIconFileNames do:[:eachFilename|
-		'IDR_MAINFRAME+%1           ICON    DISCARDABLE     "%2"'
-			expandPlaceholdersWith:(Array with:resourceCount with:eachFilename) on:stream.
-		stream cr.
-		resourceCount := resourceCount+1.
-	    ].
-	].
+            |suff|
+
+            s := self applicationIconFileName.
+            s notNil ifTrue:[
+                s asFilename suffix isEmptyOrNil ifTrue:[
+                    suff := '.ico'
+                ] ifFalse:[
+                    suff := ''
+                ].
+                'IDR_MAINFRAME           ICON    DISCARDABLE     "%1%2"'
+                        expandPlaceholdersWith:(Array with:s with:suff) on:stream.
+                stream cr.
+            ].
+
+            s := self splashFileName.
+            s notNil ifTrue:[
+                s asFilename suffix isEmptyOrNil ifTrue:[
+                    suff := '.bmp'
+                ] ifFalse:[
+                    suff := ''
+                ].
+                'IDR_SPLASH           BITMAP    DISCARDABLE     "%1%2"'
+                        expandPlaceholdersWith:(Array with:s with:suff) on:stream.
+                stream cr.
+            ].
+            resourceCount := 2.
+            self applicationAdditionalIconFileNames do:[:eachFilename|
+                'IDR_MAINFRAME+%1           ICON    DISCARDABLE     "%2"'
+                        expandPlaceholdersWith:(Array with:resourceCount with:eachFilename) on:stream.
+                stream cr.
+                resourceCount := resourceCount+1.
+            ].
+        ].
     d at: #'ICONDEFINITION_LINE' put:s.
 
     ^ d
@@ -3564,24 +3586,24 @@
     | dependencies |
 
     dependencies := String streamContents:
-	[:s|
-	self allPreRequisites do:
-	    [:package|
-	    (self preRequisitesFor: package) do:
-		[:prereq|
-		s nextPutAll: ('task "%1" => "%2"' bindWith: package with: prereq); cr].
-	    s cr].
-	self effectivePreRequisites do:
-		[:prereq|
-		s nextPutAll: ('task "%1" => "%2"' bindWith: self package with: prereq); cr].
-	].
+        [:s|
+        self allPreRequisites do:
+            [:package|
+            (self preRequisitesFor: package) do:
+                [:prereq|
+                s nextPutAll: ('task "%1" => "%2"' bindWith: package with: prereq); cr].
+            s cr].
+        self effectivePreRequisites do:
+                [:prereq|
+                s nextPutAll: ('task "%1" => "%2"' bindWith: self package with: prereq); cr].
+        ].
 
     ^ (Dictionary new)
-	at:'DEPENDENCIES' put:dependencies;
-	yourself
-
-    "
-	stx_libjava generate_package_dot_deps_dot_rake
+        at:'DEPENDENCIES' put:dependencies;
+        yourself
+
+    "
+        stx_libjava generate_package_dot_deps_dot_rake
     "
 
     "Created: / 24-02-2011 / 22:32:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -3601,16 +3623,16 @@
 !
 
 st2c:aString
-	^ (aString asString
-	    copyReplaceString:'_' withString:('_',($_ codePoint printStringRadix:8)))
-		replaceAny:':' with:$_
+        ^ (aString asString
+            copyReplaceString:'_' withString:('_',($_ codePoint printStringRadix:8)))
+                replaceAny:':' with:$_
 ! !
 
 !ProjectDefinition class methodsFor:'file mappings support'!
 
 classNamesByCategory
     "answer a dictionary
-	category -> classNames topological sorted"
+        category -> classNames topological sorted"
 
     |pivateClassesOf sorter classes classNames mapping|
 
@@ -3621,57 +3643,57 @@
     classes do:[:each | pivateClassesOf at:each put:(each allPrivateClasses)].
 
     sorter := [:a :b |
-	"/ a must come before b iff:
-	"/    b is a subclass of a
-	"/    b has a private class which is a subclass of a
-	"/    a is a sharedPool, used by b
-
-	|mustComeBefore pivateClassesOfB|
-
-	mustComeBefore := false.
-	mustComeBefore := (a isSharedPool and:[(b sharedPoolNames includes: a name)]).
-	mustComeBefore := mustComeBefore or:[b isSubclassOf:a].
-	mustComeBefore ifFalse:[
-	    pivateClassesOfB := pivateClassesOf at:b ifAbsent:[ #() ].
-	    pivateClassesOfB do:[:eachClassInB |
-		mustComeBefore := mustComeBefore or:[eachClassInB isSubclassOf:a]
-	    ].
-	].
-	mustComeBefore
+        "/ a must come before b iff:
+        "/    b is a subclass of a
+        "/    b has a private class which is a subclass of a
+        "/    a is a sharedPool, used by b
+
+        |mustComeBefore pivateClassesOfB|
+
+        mustComeBefore := false.
+        mustComeBefore := (a isSharedPool and:[(b sharedPoolNames includes: a name)]).
+        mustComeBefore := mustComeBefore or:[b isSubclassOf:a].
+        mustComeBefore ifFalse:[
+            pivateClassesOfB := pivateClassesOf at:b ifAbsent:[ #() ].
+            pivateClassesOfB do:[:eachClassInB |
+                mustComeBefore := mustComeBefore or:[eachClassInB isSubclassOf:a]
+            ].
+        ].
+        mustComeBefore
     ].
 
     classes topologicalSort:sorter.
 
     OperatingSystem knownPlatformNames do:[:platformID |
-	|prefix depClasses depClassNames|
-
-	prefix := platformID asUppercase.
-	depClasses := self compiled_classesForArchitecture:platformID.
-	depClasses notEmpty ifTrue:[
-	    (self compiled_classNamesForPlatform:platformID)
-		select:[:nm | (Smalltalk at:nm ifAbsent:nil) isNil]
-		thenDo:[:nm | Transcript showCR:nm].
-	    (depClasses includes:nil) ifTrue:[
+        |prefix depClasses depClassNames|
+
+        prefix := platformID asUppercase.
+        depClasses := self compiled_classesForArchitecture:platformID.
+        depClasses notEmpty ifTrue:[
+            (self compiled_classNamesForPlatform:platformID)
+                select:[:nm | (Smalltalk at:nm ifAbsent:nil) isNil]
+                thenDo:[:nm | Transcript showCR:nm].
+            (depClasses includes:nil) ifTrue:[
                 (Dialog confirm:'Dependencies (and therefore build-order) might be incorrect\(some classes are not present; see Transcript).\\Continue anyway ?' withCRs)
-		ifFalse:[
-		    AbortOperationRequest raise.
-		].
-		depClassNames := self compiled_classNamesForPlatform:platformID.
-	    ] ifFalse:[
-		depClasses topologicalSort:sorter.
-		depClassNames := depClasses collect:[:eachClass| eachClass name].
-	    ].
-	    mapping at:prefix put:depClassNames.
-	].
-
-	classNames := classes collect:[:eachClass| eachClass name].
-	self namesAndAttributesIn:(self additionalClassNamesAndAttributes) do: [:nm :attr |
-	    (attr isEmptyOrNil or:[(attr includes:#autoload) not]) ifTrue:[
-		classNames add:nm.
-	    ].
-	].
-
-	mapping at:'COMMON' put:classNames.
+                ifFalse:[
+                    AbortOperationRequest raise.
+                ].
+                depClassNames := self compiled_classNamesForPlatform:platformID.
+            ] ifFalse:[
+                depClasses topologicalSort:sorter.
+                depClassNames := depClasses collect:[:eachClass| eachClass name].
+            ].
+            mapping at:prefix put:depClassNames.
+        ].
+
+        classNames := classes collect:[:eachClass| eachClass name].
+        self namesAndAttributesIn:(self additionalClassNamesAndAttributes) do: [:nm :attr |
+            (attr isEmptyOrNil or:[(attr includes:#autoload) not]) ifTrue:[
+                classNames add:nm.
+            ].
+        ].
+
+        mapping at:'COMMON' put:classNames.
     ].
     ^ mapping
 
@@ -3735,54 +3757,54 @@
     "for the init-file: generate class-init-lines for a collection of classes"
 
     ^ String
-	streamContents:[:s |
-	    |classesLoaded classNamesUnloaded classNamesSorted putLineForClassName|
-
-	    putLineForClassName := [:className |
-		    |newClassLine mappings|
-
-		    mappings := self classLine_mappings:className.
-		    newClassLine := self replaceMappings:mappings in:classLineTemplate.
-		    s nextPutLine:newClassLine
-		].
-	    classesLoaded := classNames collect:[:eachClassName | Smalltalk classNamed:eachClassName]
-					thenSelect:[:eachClass | eachClass notNil and:[eachClass isLoaded]].
-	    classNamesUnloaded := classNames
-			select:[:nm |
-			    |cls|
-
-			    cls := Smalltalk classNamed:nm.
-			    cls isNil or:[ cls isLoaded not ]
-			].
-	    classNamesSorted := (Class classesSortedByLoadOrder:classesLoaded) collect:[:cls | cls name].
-	    classNamesSorted do:putLineForClassName.
-	    classNamesUnloaded do:putLineForClassName.
-
-	    includeAdditionalClasses ifTrue:[
-		self namesAndAttributesIn:(self additionalClassNamesAndAttributes)
-		    do:[:nm :attr |
-			(attr isEmptyOrNil or:[ (attr includes:#autoload) not ]) ifTrue:[
-			    putLineForClassName value:nm.
-			].
-		    ].
-		#( ('UNIX' unix)
-		   ('WIN32' win32)
-		   ('VMS' vms)
-		   ('BEOS' beos) )
-			pairsDo:[:ifdef :platformName |
-			    |archClassNames archClassesLoaded|
-
-			    archClassNames := self compiled_classNamesForPlatform:platformName.
-			    archClassNames notEmpty ifTrue:[
-				s nextPutLine:'#ifdef ' , ifdef.
-				archClassNames do:[:clsName |
-				    putLineForClassName value:clsName
-				].
-				s nextPutLine:'#endif /* ' , ifdef , ' */'.
-			    ].
-			].
-	    ]
-	]
+        streamContents:[:s |
+            |classesLoaded classNamesUnloaded classNamesSorted putLineForClassName|
+
+            putLineForClassName := [:className |
+                    |newClassLine mappings|
+
+                    mappings := self classLine_mappings:className.
+                    newClassLine := self replaceMappings:mappings in:classLineTemplate.
+                    s nextPutLine:newClassLine
+                ].
+            classesLoaded := classNames collect:[:eachClassName | Smalltalk classNamed:eachClassName]
+                                        thenSelect:[:eachClass | eachClass notNil and:[eachClass isLoaded]].
+            classNamesUnloaded := classNames
+                        select:[:nm |
+                            |cls|
+
+                            cls := Smalltalk classNamed:nm.
+                            cls isNil or:[ cls isLoaded not ]
+                        ].
+            classNamesSorted := (Class classesSortedByLoadOrder:classesLoaded) collect:[:cls | cls name].
+            classNamesSorted do:putLineForClassName.
+            classNamesUnloaded do:putLineForClassName.
+
+            includeAdditionalClasses ifTrue:[
+                self namesAndAttributesIn:(self additionalClassNamesAndAttributes)
+                    do:[:nm :attr |
+                        (attr isEmptyOrNil or:[ (attr includes:#autoload) not ]) ifTrue:[
+                            putLineForClassName value:nm.
+                        ].
+                    ].
+                #( ('UNIX' unix)
+                   ('WIN32' win32)
+                   ('VMS' vms)
+                   ('BEOS' beos) )
+                        pairsDo:[:ifdef :platformName |
+                            |archClassNames archClassesLoaded|
+
+                            archClassNames := self compiled_classNamesForPlatform:platformName.
+                            archClassNames notEmpty ifTrue:[
+                                s nextPutLine:'#ifdef ' , ifdef.
+                                archClassNames do:[:clsName |
+                                    putLineForClassName value:clsName
+                                ].
+                                s nextPutLine:'#endif /* ' , ifdef , ' */'.
+                            ].
+                        ].
+            ]
+        ]
 
     "
      bosch_dapasx_datenbasis  generateClassLines_libInit_dot_cc
@@ -3815,14 +3837,14 @@
     classNamesDict := self classNamesByCategory.
 
     ^ String streamContents:[:s |
-	classNamesDict keysAndValuesDo:[:eachCategory :classNames|
-	    s nextPutLine:eachCategory,'_CLASSES= \'.
-	    classNames do:[:eachClassName|
-		s tab; nextPutAll:eachClassName; nextPutLine:' \'.
-	    ].
-	    s cr.
-	].
-	s cr.
+        classNamesDict keysAndValuesDo:[:eachCategory :classNames|
+            s nextPutLine:eachCategory,'_CLASSES= \'.
+            classNames do:[:eachClassName|
+                s tab; nextPutAll:eachClassName; nextPutLine:' \'.
+            ].
+            s cr.
+        ].
+        s cr.
     ].
 
     "
@@ -3838,156 +3860,156 @@
 
 generateDependencies:whichArchitecture
     ^ String
-	streamContents:[:s |
-	    |classNames classesPresent classesLoaded clsBaseName putDependencyForClassBlock
-	     putDependencyForClassBaseNameBlock
-	     archClassNames archClassesPresent archClassesLoaded
-	     putSingleClassDependencyEntryBlock putDependencyForExtensionsBlock|
-
-	    putSingleClassDependencyEntryBlock := [:cls |
-		    |sclsBaseName|
-
-		    s nextPutAll:' $(INCLUDE_TOP)'.
-		    s nextPutAll:(self pathSeparator:whichArchitecture) asString.
-		    sclsBaseName := self filenameForClass:cls.
-		    s nextPutAll:(self
-				topRelativePathTo:sclsBaseName
-				inPackage:cls package
-				architecture:whichArchitecture).
-		    s nextPutAll:'.$(H)'.
-		].
-
-	    putDependencyForClassBaseNameBlock := [:clsBaseName |
-		    s nextPutAll:'$(OUTDIR)'.
-		    s nextPutAll:clsBaseName.
-		    s nextPutAll:'.$(O)'.
-		    s nextPutAll:' '.
-		    s nextPutAll:clsBaseName.
-		    s nextPutAll:'.$(H)'.
-		    s nextPutAll:': '.
-		    s nextPutAll:clsBaseName.
-		    s nextPutAll:'.st'.
-		].
-
-
-	    putDependencyForClassBlock := [:cls |
-		    |clsBaseName already|
-
-		    clsBaseName := self filenameForClass:cls.
-		    putDependencyForClassBaseNameBlock value:clsBaseName.
-		    cls isLoaded ifTrue:[
-			already := IdentitySet new.
-			cls
-			    sharedPools do:[:poolClass |
-				poolClass isNil ifTrue:[
-				    Dialog warn:'At least one pool class is missing.\\Dependencies are incomplete.' withCRs
-				] ifFalse:[
-				    putSingleClassDependencyEntryBlock value:poolClass.
-				    already add:poolClass.
-				]
-			    ].
-
-			cls
-			    allSuperclassesDo:[:scls |
-				putSingleClassDependencyEntryBlock value:scls.
-				already add:scls.
-			    ].
-			cls
-			    allPrivateClassesDo:[:eachPrivateClass |
-				eachPrivateClass
-				    allSuperclassesDo:[:scls |
-					|sclsBaseName|
-
-					scls ~~ cls ifTrue:[
-					    scls isPrivate ifFalse:[
-						(already includes:scls) ifFalse:[
-						    putSingleClassDependencyEntryBlock value:scls.
-						    already add:scls.
-						].
-					    ].
-					].
-				    ]
-			    ].
-		    ].
-		    s nextPutLine:' $(STCHDR)'.
-		].
-
-	    putDependencyForExtensionsBlock := [
-		    |already|
-
-		    s nextPutAll:'$(OUTDIR)extensions.$(O): extensions.st'.
-		    already := Set new.
-		    self extensionMethodNames pairWiseDo:[:className :selector |
-			    |mthdCls cls|
-
-			    ((mthdCls := Smalltalk classNamed:className) notNil
-			      and:[ mthdCls isLoaded ])
-				    ifTrue:[
-					cls := mthdCls theNonMetaclass.
-					(already includes:cls) ifFalse:[
-					    cls
-						withAllSuperclassesDo:[:scls |
-						    (already includes:scls) ifFalse:[
-							putSingleClassDependencyEntryBlock value:scls.
-							already add:scls.
-						    ].
-						].
-					].
-				    ].
-			].
-		    s nextPutLine:' $(STCHDR)'.
-		].
-
-	    classNames := self compiled_classNames_common.
-	    classesPresent := classNames
-		collect:[:className | Smalltalk classNamed:className]
-		thenSelect:[:cls | cls notNil].
-	    classesLoaded := classesPresent
-		select:[:cls | cls isLoaded].
-
-	    (Class classesSortedByLoadOrder:classesLoaded)
-		do:putDependencyForClassBlock.
-	    (classesPresent select:[:cls | cls isLoaded not])
-		do:putDependencyForClassBlock.
-
-	    self namesAndAttributesIn:(self additionalClassNamesAndAttributes)
-		do:[:className :attr |
-		    |cls|
-
-		    (attr isEmptyOrNil or:[ (attr includes:#autoload) not ]) ifTrue:[
-			((cls := Smalltalk classNamed:className) notNil) ifTrue:[
-			    putDependencyForClassBlock value:cls.
-			]
-		    ].
-		].
-	    archClassNames := self compiled_classNamesForPlatform:whichArchitecture.
-	    archClassesPresent := archClassNames
-		collect:[:className | Smalltalk classNamed:className]
-		thenSelect:[:cls | cls notNil].
-
-	    archClassesLoaded := archClassesPresent
-		select:[:cls | cls isLoaded].
-
-	    (Class classesSortedByLoadOrder:archClassesLoaded)
-		do:putDependencyForClassBlock.
-
-	    "some classes are not loaded - probably this is the wrong architecture.
-	     Sorry, but for these classes, we do not know the superclass chain"
-	    archClassesPresent
-		select:[:cls | cls isLoaded not]
-		thenDo:putDependencyForClassBlock.
-
-	    "for the following classes, we do not know the superclass chain
-	     and neither the real class file name"
-	    archClassNames
-		select:[:eachClassName | (Smalltalk classNamed:eachClassName) isNil]
-		thenDo:[:eachClassName |
-		    putDependencyForClassBaseNameBlock value:(self filenameForClass:eachClassName).
-		    s nextPutLine:' $(STCHDR)'.
-		].
-
-	    self hasExtensionMethods ifTrue:putDependencyForExtensionsBlock.
-	]
+        streamContents:[:s |
+            |classNames classesPresent classesLoaded clsBaseName putDependencyForClassBlock
+             putDependencyForClassBaseNameBlock
+             archClassNames archClassesPresent archClassesLoaded
+             putSingleClassDependencyEntryBlock putDependencyForExtensionsBlock|
+
+            putSingleClassDependencyEntryBlock := [:cls |
+                    |sclsBaseName|
+
+                    s nextPutAll:' $(INCLUDE_TOP)'.
+                    s nextPutAll:(self pathSeparator:whichArchitecture) asString.
+                    sclsBaseName := self filenameForClass:cls.
+                    s nextPutAll:(self
+                                topRelativePathTo:sclsBaseName
+                                inPackage:cls package
+                                architecture:whichArchitecture).
+                    s nextPutAll:'.$(H)'.
+                ].
+
+            putDependencyForClassBaseNameBlock := [:clsBaseName |
+                    s nextPutAll:'$(OUTDIR)'.
+                    s nextPutAll:clsBaseName.
+                    s nextPutAll:'.$(O)'.
+                    s nextPutAll:' '.
+                    s nextPutAll:clsBaseName.
+                    s nextPutAll:'.$(H)'.
+                    s nextPutAll:': '.
+                    s nextPutAll:clsBaseName.
+                    s nextPutAll:'.st'.
+                ].
+
+
+            putDependencyForClassBlock := [:cls |
+                    |clsBaseName already|
+
+                    clsBaseName := self filenameForClass:cls.
+                    putDependencyForClassBaseNameBlock value:clsBaseName.
+                    cls isLoaded ifTrue:[
+                        already := IdentitySet new.
+                        cls
+                            sharedPools do:[:poolClass |
+                                poolClass isNil ifTrue:[
+                                    Dialog warn:'At least one pool class is missing.\\Dependencies are incomplete.' withCRs
+                                ] ifFalse:[
+                                    putSingleClassDependencyEntryBlock value:poolClass.
+                                    already add:poolClass.
+                                ]
+                            ].
+
+                        cls
+                            allSuperclassesDo:[:scls |
+                                putSingleClassDependencyEntryBlock value:scls.
+                                already add:scls.
+                            ].
+                        cls
+                            allPrivateClassesDo:[:eachPrivateClass |
+                                eachPrivateClass
+                                    allSuperclassesDo:[:scls |
+                                        |sclsBaseName|
+
+                                        scls ~~ cls ifTrue:[
+                                            scls isPrivate ifFalse:[
+                                                (already includes:scls) ifFalse:[
+                                                    putSingleClassDependencyEntryBlock value:scls.
+                                                    already add:scls.
+                                                ].
+                                            ].
+                                        ].
+                                    ]
+                            ].
+                    ].
+                    s nextPutLine:' $(STCHDR)'.
+                ].
+
+            putDependencyForExtensionsBlock := [
+                    |already|
+
+                    s nextPutAll:'$(OUTDIR)extensions.$(O): extensions.st'.
+                    already := Set new.
+                    self extensionMethodNames pairWiseDo:[:className :selector |
+                            |mthdCls cls|
+
+                            ((mthdCls := Smalltalk classNamed:className) notNil
+                              and:[ mthdCls isLoaded ])
+                                    ifTrue:[
+                                        cls := mthdCls theNonMetaclass.
+                                        (already includes:cls) ifFalse:[
+                                            cls
+                                                withAllSuperclassesDo:[:scls |
+                                                    (already includes:scls) ifFalse:[
+                                                        putSingleClassDependencyEntryBlock value:scls.
+                                                        already add:scls.
+                                                    ].
+                                                ].
+                                        ].
+                                    ].
+                        ].
+                    s nextPutLine:' $(STCHDR)'.
+                ].
+
+            classNames := self compiled_classNames_common.
+            classesPresent := classNames
+                collect:[:className | Smalltalk classNamed:className]
+                thenSelect:[:cls | cls notNil].
+            classesLoaded := classesPresent
+                select:[:cls | cls isLoaded].
+
+            (Class classesSortedByLoadOrder:classesLoaded)
+                do:putDependencyForClassBlock.
+            (classesPresent select:[:cls | cls isLoaded not])
+                do:putDependencyForClassBlock.
+
+            self namesAndAttributesIn:(self additionalClassNamesAndAttributes)
+                do:[:className :attr |
+                    |cls|
+
+                    (attr isEmptyOrNil or:[ (attr includes:#autoload) not ]) ifTrue:[
+                        ((cls := Smalltalk classNamed:className) notNil) ifTrue:[
+                            putDependencyForClassBlock value:cls.
+                        ]
+                    ].
+                ].
+            archClassNames := self compiled_classNamesForPlatform:whichArchitecture.
+            archClassesPresent := archClassNames
+                collect:[:className | Smalltalk classNamed:className]
+                thenSelect:[:cls | cls notNil].
+
+            archClassesLoaded := archClassesPresent
+                select:[:cls | cls isLoaded].
+
+            (Class classesSortedByLoadOrder:archClassesLoaded)
+                do:putDependencyForClassBlock.
+
+            "some classes are not loaded - probably this is the wrong architecture.
+             Sorry, but for these classes, we do not know the superclass chain"
+            archClassesPresent
+                select:[:cls | cls isLoaded not]
+                thenDo:putDependencyForClassBlock.
+
+            "for the following classes, we do not know the superclass chain
+             and neither the real class file name"
+            archClassNames
+                select:[:eachClassName | (Smalltalk classNamed:eachClassName) isNil]
+                thenDo:[:eachClassName |
+                    putDependencyForClassBaseNameBlock value:(self filenameForClass:eachClassName).
+                    s nextPutLine:' $(STCHDR)'.
+                ].
+
+            self hasExtensionMethods ifTrue:putDependencyForExtensionsBlock.
+        ]
 
     "
      stx_libbasic3 generateDependencies:#unix
@@ -4017,11 +4039,11 @@
 
 generateLocalIncludes_unix
     ^ String streamContents:[:s |
-	s nextPutAll:(self localIncludes_unix).
-	self searchForProjectsWhichProvideHeaderFiles
-	    do:[:includeProject |
-		s nextPutAll:' -I$(INCLUDE_TOP)/',(self topRelativePathToPackage_unix: includeProject)
-	    ]
+        s nextPutAll:(self localIncludes_unix).
+        self searchForProjectsWhichProvideHeaderFiles
+            do:[:includeProject |
+                s nextPutAll:' -I$(INCLUDE_TOP)/',(self topRelativePathToPackage_unix: includeProject)
+            ]
     ]
 
     "
@@ -4039,11 +4061,11 @@
 
 generateLocalIncludes_win32
     ^ String streamContents:[:s |
-	s nextPutAll:(self localIncludes_win32).
-	self searchForProjectsWhichProvideHeaderFiles
-	    do:[:includeProject |
-		s nextPutAll:' -I$(INCLUDE_TOP)\',(self topRelativePathToPackage_win32: includeProject)
-	    ]
+        s nextPutAll:(self localIncludes_win32).
+        self searchForProjectsWhichProvideHeaderFiles
+            do:[:includeProject |
+                s nextPutAll:' -I$(INCLUDE_TOP)\',(self topRelativePathToPackage_win32: includeProject)
+            ]
     ]
 
     "
@@ -4064,26 +4086,26 @@
     classNamesDict := self classNamesByCategory.
 
     ^ String streamContents:[:s |
-	|putLineForClassName|
-
-	putLineForClassName :=
-	    [:eachClassName |
-		|mappings newObjectLine|
-		mappings := self objectLine_make_dot_spec_mappings: eachClassName.
-		newObjectLine := self replaceMappings: mappings in: self objectLine_make_dot_spec.
-		s nextPutLine:newObjectLine.
-	    ].
-
-	classNamesDict keysAndValuesDo:[:eachCategory :classNames|
-	    s nextPutLine:eachCategory,'_OBJS= \'.
-	    classNames do:putLineForClassName.
-	    (eachCategory = 'COMMON' and:[self hasExtensionMethods]) ifTrue:[
-		s nextPutLine:'    $(OUTDIR)extensions.$(O) \'.
-	    ].
-
-	    s cr.
-	].
-	s cr.
+        |putLineForClassName|
+
+        putLineForClassName :=
+            [:eachClassName |
+                |mappings newObjectLine|
+                mappings := self objectLine_make_dot_spec_mappings: eachClassName.
+                newObjectLine := self replaceMappings: mappings in: self objectLine_make_dot_spec.
+                s nextPutLine:newObjectLine.
+            ].
+
+        classNamesDict keysAndValuesDo:[:eachCategory :classNames|
+            s nextPutLine:eachCategory,'_OBJS= \'.
+            classNames do:putLineForClassName.
+            (eachCategory = 'COMMON' and:[self hasExtensionMethods]) ifTrue:[
+                s nextPutLine:'    $(OUTDIR_SLASH)extensions.$(O) \'.
+            ].
+
+            s cr.
+        ].
+        s cr.
     ].
 
     "
@@ -4101,20 +4123,22 @@
     |myProjectId|
 
     ^ String streamContents:[:s |
-	myProjectId := self package.
-	"Note: the trailing blank in 'CFLAGS_LOCAL=$(GLOBALDEFINES) '
-	 is required!!
-	 Use 'pushd' instead of 'cd', since cd is executed by borland make directly.
-	 'popd' is not needed, since each line is executed in
-		an own cmd.exe process.
-	 'popd' is not desireable, since it masks a possible
-		error return from the 'bmake'.
-"
-	(self allPreRequisitesSorted copyWith:'stx:librun') do:[:eachProjectId |
-	    s tab; nextPutAll:'pushd ';
-		   nextPutAll:(self msdosPathToPackage:eachProjectId from:myProjectId);
-		   nextPutLine:' & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "'.
-	].
+        myProjectId := self package.
+        "Note: the trailing blank in 'CFLAGS_LOCAL=$(GLOBALDEFINES) '
+         is required!!
+         Use 'pushd' instead of 'cd', since cd is executed by borland make directly.
+         'popd' is not needed, since each line is executed in
+                an own cmd.exe process.
+         'popd' is not desireable, since it masks a possible
+                error return from the 'bmake'.
+        "
+
+        "cg: changed to not go and remake librun"
+        (self allPreRequisitesSorted "copyWith:'stx:librun'") do:[:eachProjectId |
+            s tab; nextPutAll:'pushd ';
+                   nextPutAll:(self msdosPathToPackage:eachProjectId from:myProjectId);
+                   nextPutLine:' & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "'.
+        ].
     ].
 
     "
@@ -4127,12 +4151,13 @@
     |libPath|
 
     ^ String streamContents:[:s |
-	(self allPreRequisitesSorted copyWith:'stx:librun') do:[:projectID |
-	    libPath := self pathToPackage_unix:projectID.
-	    s tab; nextPutAll: 'cd ', libPath; nextPutLine:' && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"'.
-	].
-
-	s cr.
+        "cg: changed to not go and remake librun"
+        (self allPreRequisitesSorted "copyWith:'stx:librun'") do:[:projectID |
+            libPath := self pathToPackage_unix:projectID.
+            s tab; nextPutAll: 'cd ', libPath; nextPutLine:' && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"'.
+        ].
+
+        s cr.
     ].
 
     "
@@ -4143,10 +4168,10 @@
 
 generateSubDirectories
     ^ String streamContents:[:s |
-	self subProjects
-	    do:[:eachProjectID |
-		s space; nextPutAll:(self unixPathToPackage:eachProjectID from:self package)
-	    ]
+        self subProjects
+            do:[:eachProjectID |
+                s space; nextPutAll:(self unixPathToPackage:eachProjectID from:self package)
+            ]
     ]
 
     "
@@ -4161,9 +4186,9 @@
     "for the init-file: generate a single class-init-line for the definition class itself"
 
     ^ self
-	generateClassLines:(self classLine_libInit_dot_cc)
-	forClasses:(Array with:self name)
-	includeAdditionalClasses:false
+        generateClassLines:(self classLine_libInit_dot_cc)
+        forClasses:(Array with:self name)
+        includeAdditionalClasses:false
 
     "
      stx_libbasic generate_definitionClassLine_libInit_dot_cc
@@ -4193,8 +4218,8 @@
 
 objectLine_make_dot_spec_mappings: aClassName
     ^ Dictionary new
-	at: 'CLASSFILE' put:(self filenameForClass:aClassName);
-	yourself
+        at: 'CLASSFILE' put:(self filenameForClass:aClassName);
+        yourself
 
     "Created: / 08-08-2006 / 20:17:28 / fm"
     "Modified: / 09-08-2006 / 18:26:52 / fm"
@@ -4217,15 +4242,15 @@
 
 subProjectMakeCallsUsing:callString
     ^ String streamContents:[:s |
-	self subProjects do:[:packageID |
-	    s nextPutLine:'@echo "***********************************"'.
-	    s nextPutLine:'@echo "Buildung ',(packageID copyReplaceAll:$: with:$/).
-	    s nextPutLine:'@echo "***********************************"'.
-	    s nextPutLine:'@cd ', (self msdosPathToPackage:packageID from:(self package)).
-	    s nextPutAll:'@'; nextPutLine:callString.
-	    s nextPutLine:'@cd ', (self msdosPathToPackage:(self package) from:packageID).
-	    s cr.
-	]
+        self subProjects do:[:packageID |
+            s nextPutLine:'@echo "***********************************"'.
+            s nextPutLine:'@echo "Buildung ',(packageID copyReplaceAll:$: with:$/).
+            s nextPutLine:'@echo "***********************************"'.
+            s nextPutLine:'@cd ', (self msdosPathToPackage:packageID from:(self package)).
+            s nextPutAll:'@'; nextPutLine:callString.
+            s nextPutLine:'@cd ', (self msdosPathToPackage:(self package) from:packageID).
+            s cr.
+        ]
     ]
 
     "Created: / 14-09-2006 / 18:40:09 / cg"
@@ -4536,13 +4561,15 @@
 .PHONY: run
 
 run: makefile
-	$(MAKE) -f makefile
+        $(MAKE) -f makefile
 
 #only needed for the definition of $(TOP)
 include Make.proto
 
-makefile:
-	$(TOP)/rules/stmkmf
+makefile: mf
+
+mf:
+        $(TOP)/rules/stmkmf
 '
 !
 
@@ -4569,7 +4596,7 @@
 
 objectLine_make_dot_spec
 
-    ^'    $(OUTDIR)%(CLASSFILE).$(O) \'
+    ^'    $(OUTDIR_SLASH)%(CLASSFILE).$(O) \'
 
     "Created: / 08-08-2006 / 20:16:46 / fm"
     "Modified: / 23-08-2006 / 11:11:38 / cg"
@@ -4693,14 +4720,14 @@
      when being loaded themself."
 
     self hasAllExtensionsLoaded ifFalse:[
-	self breakPoint:#cg.
+        self breakPoint:#cg.
     ].
     self hasAllClassesFullyLoaded ifFalse:[
-	self hasAllClassesLoaded ifFalse:[
-	    self breakPoint:#cg.
-	].
-	self installAutoloadedClasses.
-	self classes do:[:cls | cls autoload ].
+        self hasAllClassesLoaded ifFalse:[
+            self breakPoint:#cg.
+        ].
+        self installAutoloadedClasses.
+        self classes do:[:cls | cls autoload ].
     ].
 
     "
@@ -4808,6 +4835,7 @@
 
     "Created: / 17-08-2006 / 01:01:41 / 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>"
     "Modified: / 04-09-2011 / 10:01:53 / cg"
     "Modified: / 20-11-2012 / 23:06:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -4851,10 +4879,10 @@
     <resource: #programImage>
 
     self theNonMetaclass isApplicationDefinition ifTrue:[
-	self theNonMetaclass isGUIApplication ifTrue:[
-	    ^ #guiApplicationDefinitionClassIcon
-	].
-	^ #applicationDefinitionClassIcon
+        self theNonMetaclass isGUIApplication ifTrue:[
+            ^ #guiApplicationDefinitionClassIcon
+        ].
+        ^ #applicationDefinitionClassIcon
     ].
     ^ super iconInBrowserSymbol
 ! !
@@ -4871,14 +4899,14 @@
     AccessLock critical:[
         |mustRead file myPackageDirectory|
 
-	AbbrevDictionary isNil ifTrue:[
-	    AbbrevDictionary := WeakIdentityDictionary new.
-	].
-
-	mustRead := false.
-	abbrevs := AbbrevDictionary at:self ifAbsent:[ mustRead := true. Dictionary new ].
-
-	mustRead ifTrue:[
+        AbbrevDictionary isNil ifTrue:[
+            AbbrevDictionary := WeakIdentityDictionary new.
+        ].
+
+        mustRead := false.
+        abbrevs := AbbrevDictionary at:self ifAbsent:[ mustRead := true. Dictionary new ].
+
+        mustRead ifTrue:[
             myPackageDirectory := self packageDirectory.
             myPackageDirectory isNil ifTrue:[
             ] ifFalse:[
@@ -4921,12 +4949,12 @@
     ^#()
 
     "
-	stx_libbasic additionalClassAttributesFor: Object
-	stx_libtool additionalClassAttributesFor: Tools::NavigationHistoryTests
-	stx_goodies_sunit additionalClassAttributesFor: TestCase
-
-
-	stx_libtool classNamesAndAttributes_code_ignoreOldEntries:true ignoreOldDefinition: true
+        stx_libbasic additionalClassAttributesFor: Object
+        stx_libtool additionalClassAttributesFor: Tools::NavigationHistoryTests
+        stx_goodies_sunit additionalClassAttributesFor: TestCase
+
+
+        stx_libtool classNamesAndAttributes_code_ignoreOldEntries:true ignoreOldDefinition: true
 
     "
 
@@ -4942,31 +4970,31 @@
     nonExistantClasses := Set new.
 
     check :=
-	    [:eachClassName |
-		|cls fn wasLoaded failedToLoad numClassInstvars|
-
-		cls := Smalltalk classNamed:eachClassName.
-		cls isNil ifTrue:[
-		    Transcript showCR:eachClassName.
-		    nonExistantClasses add:eachClassName.
-		].
-	    ].
+            [:eachClassName |
+                |cls fn wasLoaded failedToLoad numClassInstvars|
+
+                cls := Smalltalk classNamed:eachClassName.
+                cls isNil ifTrue:[
+                    Transcript showCR:eachClassName.
+                    nonExistantClasses add:eachClassName.
+                ].
+            ].
 
     self allClassNames do:check.
     self namesAndAttributesIn:(self additionalClassNamesAndAttributes) do:[:nm :attr |
-	(attr isEmptyOrNil or:[(attr includes:#autoload) not]) ifTrue:[
-	    check value:nm
-	].
+        (attr isEmptyOrNil or:[(attr includes:#autoload) not]) ifTrue:[
+            check value:nm
+        ].
     ].
 
     nonExistantClasses notEmpty ifTrue:[
-	(Dialog confirm:(Dialog classResources
-			    stringWithCRs:'"%1" and possibly more classes are missing.\Cannot generate a correct "abbrev.stc" file.\\Continue anyway?'
-			    with:nonExistantClasses anElement allBold))
-	ifFalse:[
-	    AbortOperationRequest raise.
-	].
-	^ false.
+        (Dialog confirm:(Dialog classResources
+                            stringWithCRs:'"%1" and possibly more classes are missing.\Cannot generate a correct "abbrev.stc" file.\\Continue anyway?'
+                            with:nonExistantClasses anElement allBold))
+        ifFalse:[
+            AbortOperationRequest raise.
+        ].
+        ^ false.
     ].
 
     ^ true
@@ -4977,16 +5005,16 @@
      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.
-	    ]].
+        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"
 !
@@ -5004,47 +5032,47 @@
      (to save code in the compiled binaries)"
 
     ^ aSpecArray
-	collect:[:entry |
-	    (entry isArray and:[entry size == 1]) ifTrue:[
-		entry first
-	    ] ifFalse:[
-		entry
-	    ]].
+        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
-	do:[
-	    self theMetaclass compilerClass
-		compile:someCode
-		forClass:self theMetaclass
-		inCategory:category
-		notifying:nil
-		install:true
-		skipIfSame:true
-		silent:true.
-	]
+        answer:self package
+        do:[
+            self theMetaclass compilerClass
+                compile:someCode
+                forClass:self theMetaclass
+                inCategory:category
+                notifying:nil
+                install:true
+                skipIfSame:true
+                silent:true.
+        ]
 
     "Created: / 23-08-2006 / 14:36:53 / cg"
 !
 
 compiled_classes
     ^ self compiled_classNames
-	collect:
-	    [:eachName|
-		|cls|
-
-		cls := (Smalltalk at:eachName asSymbol).
-		(cls isNil or:[cls isBehavior not]) ifTrue:[
-		    Transcript showCR:('ProjectDefinition: missing/invalid class: ', eachName).
-		    cls := nil.
-		].
-		cls.
-	    ]
-	thenSelect:[:cls | cls notNil]
+        collect:
+            [:eachName|
+                |cls|
+
+                cls := (Smalltalk at:eachName asSymbol).
+                (cls isNil or:[cls isBehavior not]) ifTrue:[
+                    Transcript showCR:('ProjectDefinition: missing/invalid class: ', eachName).
+                    cls := nil.
+                ].
+                cls.
+            ]
+        thenSelect:[:cls | cls notNil]
 
     "Created: / 09-08-2006 / 16:28:15 / fm"
     "Modified: / 09-08-2006 / 18:02:28 / fm"
@@ -5060,7 +5088,7 @@
 
 compiled_classesForArchitecture:arch
     ^ (self compiled_classNamesForPlatform:arch)
-	collect:[:eachName | (Smalltalk at:eachName asSymbol) ]
+        collect:[:eachName | (Smalltalk at:eachName asSymbol) ]
 
     "
      stx_libbasic compiled_classesForArchitecture:#win32
@@ -5075,20 +5103,20 @@
 
 compiled_classes_common
     ^ self
-	compiled_classNames_common
-	    collect:[:eachName |
-		|cls|
-
-		cls := (Smalltalk at:eachName asSymbol).
-		cls isBehavior ifFalse:[
-		    self warn:('Missing/invalid class: %1\\%2'
-				bindWith:eachName
-				with:('Warning: The class is skipped in the list of compiled classes.' allBold)) withCRs.
-		    cls := nil.
-		].
-		cls
-	    ]
-	    thenSelect:[:cls| cls notNil "isBehavior"]
+        compiled_classNames_common
+            collect:[:eachName |
+                |cls|
+
+                cls := (Smalltalk at:eachName asSymbol).
+                cls isBehavior ifFalse:[
+                    self warn:('Missing/invalid class: %1\\%2'
+                                bindWith:eachName
+                                with:('Warning: The class is skipped in the list of compiled classes.' allBold)) withCRs.
+                    cls := nil.
+                ].
+                cls
+            ]
+            thenSelect:[:cls| cls notNil "isBehavior"]
 
     "Created: / 09-08-2006 / 16:28:15 / fm"
     "Modified: / 09-08-2006 / 18:02:28 / fm"
@@ -5100,8 +5128,8 @@
 
     rev := self revision.
     rev isNil ifTrue:[
-	"not yet pubplished"
-	^ #( '0' '1' )
+        "not yet pubplished"
+        ^ #( '0' '1' )
     ].
     ^ rev asCollectionOfSubstringsSeparatedBy:$. .
 
@@ -5125,8 +5153,8 @@
      Add a programming language attribute for non-smalltalk classes.
      Used by multi-lang enabled loading mechanism"
     attrs := aClass programmingLanguage isSmalltalk
-		ifTrue:[#()]
-		ifFalse:[Array with: (Array with: #lang with: aClass programmingLanguage name asSymbol)].
+                ifTrue:[#()]
+                ifFalse:[Array with: (Array with: #lang with: aClass programmingLanguage name asSymbol)].
 
 
     "JV @ 2009-10-26
@@ -5188,16 +5216,16 @@
 
 namesAndAttributesIn:aCollection do: aBlock
     aCollection do:[:entry |
-	|className attributes|
-
-	entry isArray ifFalse:[
-	    className := entry.
-	    attributes := #().
-	] ifTrue:[
-	    className := entry first.
-	    attributes := entry copyFrom:2.
-	].
-	aBlock value: className value: attributes
+        |className attributes|
+
+        entry isArray ifFalse:[
+            className := entry.
+            attributes := #().
+        ] ifTrue:[
+            className := entry first.
+            attributes := entry copyFrom:2.
+        ].
+        aBlock value: className value: attributes
      ].
 
     "Created: / 22-08-2006 / 18:20:09 / cg"
@@ -5221,7 +5249,7 @@
 searchForClassesWithProject: aProjectID
 
     ^ Smalltalk allClasses
-	select:[:cls | (cls package = aProjectID) ].
+        select:[:cls | (cls package = aProjectID) ].
 
 "
     self searchForClassesWithProject: #'bosch:dapasx'
@@ -5257,21 +5285,21 @@
 
     methods := Smalltalk allExtensionsForPackage:aProjectID.
     methods
-	sort:[:m1 :m2 |
-	    |c1 c2|
-
-	    c1 := m1 mclass.
-	    c2 := m2 mclass.
-	    c1 == c2 ifTrue:[
-		m1 selector < m2 selector
-	    ] ifFalse:[
-		(c2 isMeta and:[c1 isMeta not]) ifTrue:[
-		    true
-		] ifFalse:[
-		    (c1 isMeta and:[c2 isMeta not]) ifTrue:[
-			false
-		    ] ifFalse:[
-			c1 name < c2 name
+        sort:[:m1 :m2 |
+            |c1 c2|
+
+            c1 := m1 mclass.
+            c2 := m2 mclass.
+            c1 == c2 ifTrue:[
+                m1 selector < m2 selector
+            ] ifFalse:[
+                (c2 isMeta and:[c1 isMeta not]) ifTrue:[
+                    true
+                ] ifFalse:[
+                    (c1 isMeta and:[c2 isMeta not]) ifTrue:[
+                        false
+                    ] ifFalse:[
+                        c1 name < c2 name
 "/                        (c2 isSubclassOf:c1) ifTrue:[
 "/                            true
 "/                        ] ifFalse:[
@@ -5282,10 +5310,10 @@
 "/                                true
 "/                            ].
 "/                        ].
-		    ].
-		].
-	    ].
-	].
+                    ].
+                ].
+            ].
+        ].
     ^ methods
 
     "
@@ -5305,55 +5333,55 @@
     requiredPackages := Set new.
 
     addPackage :=
-	[:package |
-	    (package ~= myPackageID) ifTrue:[
-		true "(package startsWith:'stx:') not" ifTrue:[
-		    package ~= PackageId noProjectID ifTrue:[
-			requiredPackages add:package.
-		    ]
-		]
-	    ]
-	].
+        [:package |
+            (package ~= myPackageID) ifTrue:[
+                true "(package startsWith:'stx:') not" ifTrue:[
+                    package ~= PackageId noProjectID ifTrue:[
+                        requiredPackages add:package.
+                    ]
+                ]
+            ]
+        ].
 
     "/ need them also...
     self preRequisites do:[:eachPreRequisitePackage |
-	addPackage value:eachPreRequisitePackage
+        addPackage value:eachPreRequisitePackage
     ].
 
     self compiled_classesDo:[:cls |
-	cls allSuperclassesDo:[:eachSuperClass |
-	    addPackage value:(eachSuperClass package)
-	].
-
-	cls allPrivateClassesDo:[:eachPrivateClass |
-	    eachPrivateClass allSuperclassesDo:[:eachSuperClass |
-		eachSuperClass isPrivate ifFalse:[
-		    addPackage value:(eachSuperClass package)
-		].
-	    ]
-	].
-
-	cls sharedPoolNames do:[:eachPoolName |
-	    |eachPoolClass|
-
-	    eachPoolClass := Smalltalk classNamed:eachPoolName.
-	    eachPoolClass isNil ifTrue:[
-		Transcript showCR:('Warning: missing pool: %1 (required by %2)' bindWith:eachPoolName with:cls name)
-	    ] ifFalse:[
-		eachPoolClass withAllSuperclassesDo:[:eachPoolSuperClass |
-		    addPackage value:(eachPoolSuperClass package)
-		]
-	    ]
-	].
+        cls allSuperclassesDo:[:eachSuperClass |
+            addPackage value:(eachSuperClass package)
+        ].
+
+        cls allPrivateClassesDo:[:eachPrivateClass |
+            eachPrivateClass allSuperclassesDo:[:eachSuperClass |
+                eachSuperClass isPrivate ifFalse:[
+                    addPackage value:(eachSuperClass package)
+                ].
+            ]
+        ].
+
+        cls sharedPoolNames do:[:eachPoolName |
+            |eachPoolClass|
+
+            eachPoolClass := Smalltalk classNamed:eachPoolName.
+            eachPoolClass isNil ifTrue:[
+                Transcript showCR:('Warning: missing pool: %1 (required by %2)' bindWith:eachPoolName with:cls name)
+            ] ifFalse:[
+                eachPoolClass withAllSuperclassesDo:[:eachPoolSuperClass |
+                    addPackage value:(eachPoolSuperClass package)
+                ]
+            ]
+        ].
     ].
 
     self extensionMethodNames pairWiseDo:[:className :selector |
-	|cls|
-	((cls := Smalltalk classNamed:className) notNil and:[cls isLoaded]) ifTrue:[
-	    cls withAllSuperclassesDo:[:eachSuperClass |
-		addPackage value:(eachSuperClass package)
-	    ]
-	]
+        |cls|
+        ((cls := Smalltalk classNamed:className) notNil and:[cls isLoaded]) ifTrue:[
+            cls withAllSuperclassesDo:[:eachSuperClass |
+                addPackage value:(eachSuperClass package)
+            ]
+        ]
     ].
     ^ requiredPackages
 
@@ -5375,12 +5403,12 @@
     myParentPackage isNil ifTrue:[^ #() ].
 
     ^ Smalltalk allProjectIDs
-	select:[:projectID |
-	    |thisPackage|
-	    thisPackage := projectID asPackageId.
-	    (thisPackage parentPackage = myParentPackage)
-	    and:[ thisPackage ~= myPackage ].
-	]
+        select:[:projectID |
+            |thisPackage|
+            thisPackage := projectID asPackageId.
+            (thisPackage parentPackage = myParentPackage)
+            and:[ thisPackage ~= myPackage ].
+        ]
 
     "
      self searchForSiblingProjects
@@ -5399,9 +5427,9 @@
 
     myPackage := self package.
     ^ Smalltalk allProjectIDs
-	select:[:projectID |
-	    projectID ~= PackageId noProjectID
-	    and:[ (projectID asPackageId parentPackage) = myPackage ]].
+        select:[:projectID |
+            projectID ~= PackageId noProjectID
+            and:[ (projectID asPackageId parentPackage) = myPackage ]].
 
     "
      self searchForSubProjects
@@ -5416,29 +5444,29 @@
 
 setupForType:typeOrNil
     typeOrNil = GUIApplicationType ifTrue:[
-	self compile:
+        self compile:
 'isGUIApplication
     "return true, if this is a GUI application.
      (these need more libraries and use a different startup procedure)"
 
     ^ true
 '
-	     categorized:'description'.
-	self superclass: ApplicationDefinition.
-	^ self
+             categorized:'description'.
+        self superclass: ApplicationDefinition.
+        ^ self
     ].
 
     typeOrNil = NonGUIApplicationType ifTrue:[
-	self compile:
+        self compile:
 'isGUIApplication
     "return true, if this is a GUI application.
      (these need more libraries and use a different startup procedure)"
 
     ^ false
 '
-	     categorized:'description'.
-	self superclass: ApplicationDefinition.
-	^ self
+             categorized:'description'.
+        self superclass: ApplicationDefinition.
+        ^ self
     ].
 
     self theMetaclass removeSelector: #isGUIApplication.
@@ -5451,12 +5479,12 @@
 shouldExcludeTest: test
 
     self excludedFromTestSuite do:
-	[:spec|
-	(spec isSymbol and:[test class name == spec])
-	    ifTrue:[^true].
-	(spec isArray and:[test class name == spec first and:[test selector == spec second]])
-	    ifTrue:[^true].
-	].
+        [:spec|
+        (spec isSymbol and:[test class name == spec])
+            ifTrue:[^true].
+        (spec isArray and:[test class name == spec first and:[test selector == spec second]])
+            ifTrue:[^true].
+        ].
     ^false
 
     "Created: / 03-06-2011 / 17:01:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -5484,36 +5512,36 @@
     oldPackage := extensionOverwriteInfo at:(mclass name,'>>',selector) ifAbsent:nil.
     oldPackage isNil ifTrue:[^ nil].
     ^ oldPackage asPackageId projectDefinitionClass
-	savedOverwrittenMethodForClass:mclass selector:selector.
+        savedOverwrittenMethodForClass:mclass selector:selector.
 !
 
 rememberOverwrittenExtensionMethods
     "before loading, tell other packages to keep a safe reference to any method
      which gets overloaded by me, and also remember here, whome I have overloaded.
      This allows for two things:
-	a) correct fileout of the other base-package (for example, when checking in any of its class)
-	b) correct unloading of myself"
+        a) correct fileout of the other base-package (for example, when checking in any of its class)
+        b) correct unloading of myself"
 
     self extensionMethodNames pairWiseDo:[:className :selector |
-	|class oldMethod oldPackage defClass|
-
-	class := Smalltalk classNamed:className.
-	class notNil ifTrue:[
-	    oldMethod := class compiledMethodAt:selector.
-	].
-	oldMethod notNil ifTrue:[
-	    oldPackage := oldMethod package.
-	    oldPackage ~= PackageId noProjectID ifTrue:[
-		defClass := oldPackage asPackageId projectDefinitionClass.
-		defClass notNil ifTrue:[
-		    defClass rememberOverwrittenMethod:oldMethod inClass:class.
-		    extensionOverwriteInfo isNil ifTrue:[
-			extensionOverwriteInfo := Dictionary new.
-		    ].
-		    extensionOverwriteInfo at:(className,'>>',selector) put:oldPackage.
-		]
-	    ].
-	].
+        |class oldMethod oldPackage defClass|
+
+        class := Smalltalk classNamed:className.
+        class notNil ifTrue:[
+            oldMethod := class compiledMethodAt:selector.
+        ].
+        oldMethod notNil ifTrue:[
+            oldPackage := oldMethod package.
+            oldPackage ~= PackageId noProjectID ifTrue:[
+                defClass := oldPackage asPackageId projectDefinitionClass.
+                defClass notNil ifTrue:[
+                    defClass rememberOverwrittenMethod:oldMethod inClass:class.
+                    extensionOverwriteInfo isNil ifTrue:[
+                        extensionOverwriteInfo := Dictionary new.
+                    ].
+                    extensionOverwriteInfo at:(className,'>>',selector) put:oldPackage.
+                ]
+            ].
+        ].
     ].
 !
 
@@ -5528,23 +5556,23 @@
     selector := oldMethod selector.
 
     thisIsOneOfMyMethods := (self classNames includes:aClass theNonMetaclass name)
-			    or:[ aClass isPrivate and:[ self classNames includes: aClass topOwningClass theNonMetaclass name ]].
+                            or:[ aClass isPrivate and:[ self classNames includes: aClass topOwningClass theNonMetaclass name ]].
     thisIsOneOfMyMethods ifFalse:[
-	self extensionMethodNames pairWiseDo:[:extClassName :extSelector |
-	    extClassName = aClass name ifTrue:[
-		selector = extSelector ifTrue:[
-		    thisIsOneOfMyMethods := true
-		].
-	    ].
-	]
+        self extensionMethodNames pairWiseDo:[:extClassName :extSelector |
+            extClassName = aClass name ifTrue:[
+                selector = extSelector ifTrue:[
+                    thisIsOneOfMyMethods := true
+                ].
+            ].
+        ]
     ].
     thisIsOneOfMyMethods ifFalse:[
-	self error:'oops - this is not one of my methods' mayProceed:true.
-	^ self
+        self error:'oops - this is not one of my methods' mayProceed:true.
+        ^ self
     ].
 
     safeForOverwrittenMethods isNil ifTrue:[
-	safeForOverwrittenMethods := Dictionary new.
+        safeForOverwrittenMethods := Dictionary new.
     ].
     safeForOverwrittenMethods at:(aClass name -> selector) put:oldMethod.
 !
@@ -5554,18 +5582,18 @@
      which got overloaded by me."
 
     self extensionMethodNames pairWiseDo:[:className :selector |
-	|class oldMethod oldPackage|
-
-	oldPackage := extensionOverwriteInfo at:(className,'>>',selector).
-	oldPackage notNil ifTrue:[
-	    class := Smalltalk classNamed:className.
-	    class notNil ifTrue:[
-		oldMethod := oldPackage savedOverwrittenMethodForClass:class selector:selector.
-		oldMethod notNil ifTrue:[
-		    self breakPoint:#cg.
-		].
-	    ]
-	].
+        |class oldMethod oldPackage|
+
+        oldPackage := extensionOverwriteInfo at:(className,'>>',selector).
+        oldPackage notNil ifTrue:[
+            class := Smalltalk classNamed:className.
+            class notNil ifTrue:[
+                oldMethod := oldPackage savedOverwrittenMethodForClass:class selector:selector.
+                oldMethod notNil ifTrue:[
+                    self breakPoint:#cg.
+                ].
+            ]
+        ].
     ].
 !
 
@@ -5584,17 +5612,17 @@
     classesAlreadyWarned := Set new.
 
     self extensionMethodNames
-	pairWiseDo:[:className :selector |
-	    |class |
-
-	    class := Smalltalk classNamed:className.
-	    class isNil ifTrue:[
-		(classesAlreadyWarned includes:className) ifFalse:[
-		    self error:'missing class for extension: ', className mayProceed:true.
-		    classesAlreadyWarned add:className.
-		].
-	    ].
-	]
+        pairWiseDo:[:className :selector |
+            |class |
+
+            class := Smalltalk classNamed:className.
+            class isNil ifTrue:[
+                (classesAlreadyWarned includes:className) ifFalse:[
+                    self error:'missing class for extension: ', className mayProceed:true.
+                    classesAlreadyWarned add:className.
+                ].
+            ].
+        ]
 
     "/ todo: more needed here...
 
@@ -5795,28 +5823,28 @@
 
     "Handle smalltalk classes specially to provide backward compatibility"
     lang isSmalltalk ifTrue:[
-	entry := self abbrevs at: className ifAbsent:[nil].
-
-	asAutoloaded ifTrue:[
-	    category := entry isNil ifTrue:[#autoloaded] ifFalse:[entry category].
-	    numClassInstVars := entry isNil ifTrue:[0] ifFalse:[entry numClassInstVars].
-	    cls := Smalltalk
-		installAutoloadedClassNamed: className
-		category: category
-		package: self package
-		revision: nil
-		numClassInstVars:numClassInstVars.
-	    entry notNil ifTrue:[
-		cls setClassFilename:(entry fileName,'.st').
-	    ].
-	    ^ cls.
-	].
-	^ Smalltalk
-	    fileInClass:className
-	    package:self package
-	    initialize:false
-	    lazy:false
-	    silent:true
+        entry := self abbrevs at: className ifAbsent:[nil].
+
+        asAutoloaded ifTrue:[
+            category := entry isNil ifTrue:[#autoloaded] ifFalse:[entry category].
+            numClassInstVars := entry isNil ifTrue:[0] ifFalse:[entry numClassInstVars].
+            cls := Smalltalk
+                installAutoloadedClassNamed: className
+                category: category
+                package: self package
+                revision: nil
+                numClassInstVars:numClassInstVars.
+            entry notNil ifTrue:[
+                cls setClassFilename:(entry fileName,'.st').
+            ].
+            ^ cls.
+        ].
+        ^ Smalltalk
+            fileInClass:className
+            package:self package
+            initialize:false
+            lazy:false
+            silent:true
     ].
 
     "For non-smalltalk language do"
@@ -5890,34 +5918,34 @@
     |packagesToLoad packagesBefore|
 
     packagesToLoad := aListOfPackages
-			    reject:[:packageID |
-				|cls|
-
-				cls := ProjectDefinition definitionClassForPackage:packageID.
-				cls notNil and:[cls projectIsLoaded]
-			    ].
+                            reject:[:packageID |
+                                |cls|
+
+                                cls := ProjectDefinition definitionClassForPackage:packageID.
+                                cls notNil and:[cls projectIsLoaded]
+                            ].
     packagesToLoad isEmpty ifTrue:[^ self].
 
     packagesBefore := PackagesBeingLoaded copy.
     PackagesBeingLoaded isNil ifTrue:[
-	PackagesBeingLoaded := Set new
+        PackagesBeingLoaded := Set new
     ].
     [
-	Class withoutUpdatingChangesDo:[
+        Class withoutUpdatingChangesDo:[
             packagesToLoad do:[:eachPackageID |
                 |cls|
 
                 cls := ProjectDefinition definitionClassForPackage:eachPackageID.
-                (cls isNil or:[cls projectIsLoaded not]) ifTrue:[
+                (cls isNil or:[cls projectIsLoaded not]) ifTrue:[                        
                     (PackagesBeingLoaded includes:eachPackageID) ifFalse:[
                         PackagesBeingLoaded add:eachPackageID.
                         Smalltalk loadPackage:eachPackageID asAutoloaded:asAutoloaded.
                     ]
-		]
-	    ].
-	].
+                ]
+            ].
+        ].
     ] ensure:[
-	PackagesBeingLoaded := packagesBefore.
+        PackagesBeingLoaded := packagesBefore.
     ].
 
     "Modified: / 09-12-2010 / 12:36:17 / cg"
@@ -5942,12 +5970,12 @@
 
     self loadSubProjectsAsAutoloaded:false.
     self subProjects do:[:p |
-	|subDef|
-
-	subDef := self definitionClassForPackage:p.
-	subDef notNil ifTrue:[
-	    subDef loadSubProjects
-	].
+        |subDef|
+
+        subDef := self definitionClassForPackage:p.
+        subDef notNil ifTrue:[
+            subDef loadSubProjects
+        ].
     ].
 !
 
@@ -6103,13 +6131,13 @@
     "unload other packages"
 
     self subProjects do:[:p |
-	|subDef|
-
-	subDef := self definitionClassForPackage:p.
-	subDef notNil ifTrue:[
-	    subDef unloadSubProjects.
-	    subDef unloadPackage.
-	].
+        |subDef|
+
+        subDef := self definitionClassForPackage:p.
+        subDef notNil ifTrue:[
+            subDef unloadSubProjects.
+            subDef unloadPackage.
+        ].
     ].
 !
 
@@ -6118,7 +6146,7 @@
      May be some more classes have to be loaded"
 
     (changedObject == self class and:[anAspectSymbol == #methodDictionary]) ifTrue:[
-	self projectIsLoaded:false.
+        self projectIsLoaded:false.
     ]
 ! !
 
@@ -6128,19 +6156,19 @@
     "helper for searchForPreRequisites"
 
     aSetOfClasses
-	do:[:aClass |
-	    self
-		addReferencesToClassesFromGlobalsInMethods:
-		    (aClass theNonMetaclass methodDictionary values
+        do:[:aClass |
+            self
+                addReferencesToClassesFromGlobalsInMethods:
+                    (aClass theNonMetaclass methodDictionary values
                         select:[:m | m isExtension not])
-		to:usedClassReasons.
-
-	    self
-		addReferencesToClassesFromGlobalsInMethods:
-		    (aClass theMetaclass methodDictionary values
+                to:usedClassReasons.
+
+            self
+                addReferencesToClassesFromGlobalsInMethods:
+                    (aClass theMetaclass methodDictionary values
                         select:[:m | m isExtension not])
-		to:usedClassReasons.
-	].
+                to:usedClassReasons.
+        ].
 
     "Modified: / 10-10-2006 / 23:03:45 / cg"
 !
@@ -6149,27 +6177,27 @@
     "helper for searchForPreRequisites"
 
     someMethods do:[:method |
-	|resources|
-
-	resources := method resources.
-	(resources isNil
-	or:[ ((resources includesKey:#'ignoreInPrerequisites') not
-	      and:[(resources includesKey:#'example') not])])
-	ifTrue:[
-	    method usedGlobals
-		do:[:global |
-		    |globalsName usedClass|
-
-		    globalsName := global asSymbol.
-		    usedClass := Smalltalk at:globalsName.
-		    (usedClass notNil and:[usedClass isClass and:[usedClass isNameSpace not]]) ifTrue:[
-			usedClass name == globalsName ifTrue:[ "/ skip aliases
-			    (usedClassReasons at:usedClass ifAbsentPut:[Set new])
-				add:(usedClass name, ' - referenced by ', method mclass name,'>>',method selector)
-			]
-		    ]
-		]
-	    ]
+        |resources|
+
+        resources := method resources.
+        (resources isNil
+        or:[ ((resources includesKey:#'ignoreInPrerequisites') not
+              and:[(resources includesKey:#'example') not])])
+        ifTrue:[
+            method usedGlobals
+                do:[:global |
+                    |globalsName usedClass|
+
+                    globalsName := global asSymbol.
+                    usedClass := Smalltalk at:globalsName.
+                    (usedClass notNil and:[usedClass isClass and:[usedClass isNameSpace not]]) ifTrue:[
+                        usedClass name == globalsName ifTrue:[ "/ skip aliases
+                            (usedClassReasons at:usedClass ifAbsentPut:[Set new])
+                                add:(usedClass name, ' - referenced by ', method mclass name,'>>',method selector)
+                        ]
+                    ]
+                ]
+            ]
     ]
 
     "Created: / 10-10-2006 / 23:00:07 / cg"
@@ -6224,42 +6252,42 @@
     requiredClasses := (self searchForClassesWithProject: packageId) asSet.
 
     withSubProjectsBoolean ifTrue:[
-	"my subproject's classes are required"
-	self subProjects do:[:eachProjectName |
-	    requiredClasses addAll: (self searchForClassesWithProject:eachProjectName asSymbol)
-	].
+        "my subproject's classes are required"
+        self subProjects do:[:eachProjectName |
+            requiredClasses addAll: (self searchForClassesWithProject:eachProjectName asSymbol)
+        ].
     ].
 
     "all superclasses of my classes and my subProject's classes are required"
     requiredClasses do:[:cls |
-	cls allSuperclassesDo:[:eachSuperclass |
-	    (usedClassesWithReasons at: eachSuperclass ifAbsentPut:[OrderedSet new])
-		add: (eachSuperclass name, ' - superclass of ', cls name).
-	]
+        cls allSuperclassesDo:[:eachSuperclass |
+            (usedClassesWithReasons at: eachSuperclass ifAbsentPut:[OrderedSet new])
+                add: (eachSuperclass name, ' - superclass of ', cls name).
+        ]
     ].
 
     "all classes referenced by my classes or my subproject's classes
      are required. But:
-	 only search for locals refered to by my methods (assuming that superclasses'
-	 prerequisites are specified in their package)."
+         only search for locals refered to by my methods (assuming that superclasses'
+         prerequisites are specified in their package)."
 
     self addReferencesToClassesFromGlobalsIn:requiredClasses to:usedClassesWithReasons.
     self addReferencesToClassesFromGlobalsInMethods:(self searchForExtensionsWithProject:self package) to:usedClassesWithReasons.
 
     "all classes for which I define extensions are required"
     self allExtensionClasses do:[:eachExtendedClass |
-	(usedClassesWithReasons at:eachExtendedClass ifAbsentPut:[OrderedSet new])
-	    add: (eachExtendedClass name, ' - extended').
-	eachExtendedClass allSuperclassesDo:[:eachSuperclass |
-	    (usedClassesWithReasons at: eachSuperclass ifAbsentPut:[OrderedSet new])
-		add: (eachSuperclass name, ' - superclass of extended ', eachExtendedClass name).
-	]
+        (usedClassesWithReasons at:eachExtendedClass ifAbsentPut:[OrderedSet new])
+            add: (eachExtendedClass name, ' - extended').
+        eachExtendedClass allSuperclassesDo:[:eachSuperclass |
+            (usedClassesWithReasons at: eachSuperclass ifAbsentPut:[OrderedSet new])
+                add: (eachSuperclass name, ' - superclass of extended ', eachExtendedClass name).
+        ]
     ].
 
     "don't put classes from subProjects into the required list"
     ignoredPackages := (self siblingsAreSubProjects
-				ifTrue:[ self searchForSiblingProjects ]
-				ifFalse:[ self searchForSubProjects ]) asSet.
+                                ifTrue:[ self searchForSiblingProjects ]
+                                ifFalse:[ self searchForSubProjects ]) asSet.
 
     ignoredPackages add:self package.
     ignoredPackages add:PackageId noProjectID.
@@ -6267,11 +6295,11 @@
     "now map classes to packages and collect the reasons"
     requiredPackageReasons := Dictionary new.
     usedClassesWithReasons keysAndValuesDo:[:usedClass :reasonsPerClass | |usedClassPackage|
-	usedClassPackage := usedClass package.
-	(ignoredPackages includes:usedClassPackage) ifFalse:[
-	    (requiredPackageReasons at:usedClassPackage ifAbsentPut:[OrderedSet new])
-			    addAll:reasonsPerClass.
-	].
+        usedClassPackage := usedClass package.
+        (ignoredPackages includes:usedClassPackage) ifFalse:[
+            (requiredPackageReasons at:usedClassPackage ifAbsentPut:[OrderedSet new])
+                            addAll:reasonsPerClass.
+        ].
     ].
 
     ^ requiredPackageReasons
@@ -6295,8 +6323,8 @@
 !
 
 allClasses
-    ^ self allClassNames
-        collect:[:nm |
+    ^ self allClassNames 
+        collect:[:nm | 
             |cls|
 
             cls := Smalltalk classNamed:nm.
@@ -6350,9 +6378,9 @@
 
     coll := OrderedCollection new.
     self classNamesAndAttributesDo:[:nm :attributes |
-	(aBlock value:nm value:attributes) ifTrue:[
-	    coll add:nm.
-	].
+        (aBlock value:nm value:attributes) ifTrue:[
+            coll add:nm.
+        ].
     ].
     ^ coll
 
@@ -6398,9 +6426,9 @@
      platformName is one of #unix, #win32 (OperatingSystem platformName)"
 
     ^ self
-	classNamesForWhich:[:nm :attr |
-	    (attr includes:#autoload) not and:[attr includes:platformName]
-	].
+        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"
@@ -6411,9 +6439,9 @@
     "classes to be compiled for any platform"
 
     ^ self
-	classNamesForWhich:[:nm :attr |
-	    attr isEmptyOrNil
-	].
+        classNamesForWhich:[:nm :attr |
+            attr isEmptyOrNil
+        ].
 
     "Created: / 18-08-2006 / 13:37:51 / cg"
 !
@@ -6454,26 +6482,26 @@
     classes := IdentitySet new.
 
     self extensionMethodNames pairWiseDo:[:className :selector |
-	|mthdCls extendedClass|
-
-	mthdCls := Smalltalk classNamed:className.
-	(mthdCls notNil and:[mthdCls isLoaded]) ifTrue:[
-	    extendedClass := mthdCls theNonMetaclass.
-	    (classes includes:extendedClass) ifFalse:[
-		withSuperclassesBoolean ifTrue:[
-		    extendedClass withAllSuperclassesDo:[:eachClass |
-			classes add:eachClass.
-		    ].
-		] ifFalse:[
-		    classes add:extendedClass.
-		].
-	    ].
-	].
+        |mthdCls extendedClass|
+
+        mthdCls := Smalltalk classNamed:className.
+        (mthdCls notNil and:[mthdCls isLoaded]) ifTrue:[
+            extendedClass := mthdCls theNonMetaclass.
+            (classes includes:extendedClass) ifFalse:[
+                withSuperclassesBoolean ifTrue:[
+                    extendedClass withAllSuperclassesDo:[:eachClass |
+                        classes add:eachClass.
+                    ].
+                ] ifFalse:[
+                    classes add:extendedClass.
+                ].
+            ].
+        ].
     ].
     ^ classes.
 
     "
-	stx_libboss extensionClasses
+        stx_libboss extensionClasses
     "
 
     "Created: / 06-09-2011 / 10:17:06 / cg"
@@ -6485,9 +6513,9 @@
      Use #extensionMethodsNames if you are only interested in the names"
 
     ^ self extensionMethodNames
-	pairWiseCollect:[:className :selector |
-	    (Smalltalk classNamed:className) compiledMethodAt:selector.
-	].
+        pairWiseCollect:[:className :selector |
+            (Smalltalk classNamed:className) compiledMethodAt:selector.
+        ].
 
     "
      stx_libbasic2 extensionMethodNames
@@ -6501,7 +6529,7 @@
     ^ self allExtensionClasses collect:[:eachClass| eachClass package]
 
     "
-	stx_libboss extensionPackages
+        stx_libboss extensionPackages
     "
 
     "Modified: / 06-09-2011 / 10:20:47 / cg"
@@ -6528,12 +6556,12 @@
      If checkIfFullyLoaded is true, they must be fully loaded; that means: not autoloaded"
 
     ^ (self
-	    hasClasses:(self classNamesForWhich:[:nm :attr | attr isEmptyOrNil or:[ attr includes:#autoload]])
-	    loaded:checkIfFullyLoaded)
+            hasClasses:(self classNamesForWhich:[:nm :attr | attr isEmptyOrNil or:[ attr includes:#autoload]])
+            loaded:checkIfFullyLoaded)
     and:[
-	self
-	    hasClasses:(self compiled_classNamesForPlatform:OperatingSystem platformName)
-	    loaded:checkIfFullyLoaded ]
+        self
+            hasClasses:(self compiled_classNamesForPlatform:OperatingSystem platformName)
+            loaded:checkIfFullyLoaded ]
 
     "Modified: / 07-11-2006 / 11:47:30 / cg"
 !
@@ -6551,12 +6579,12 @@
      If checkIfFullyLoaded is true, they must be fully loaded, that is not autoloaded"
 
     ^ (self
-	    hasClasses:(self classNamesForWhich:[:nm :attr | attr isEmptyOrNil])
-	    loaded:checkIfFullyLoaded)
+            hasClasses:(self classNamesForWhich:[:nm :attr | attr isEmptyOrNil])
+            loaded:checkIfFullyLoaded)
     and:[
        self
-	    hasClasses:(self compiled_classNamesForPlatform:OperatingSystem platformName)
-	    loaded:checkIfFullyLoaded
+            hasClasses:(self compiled_classNamesForPlatform:OperatingSystem platformName)
+            loaded:checkIfFullyLoaded
     ]
 !
 
@@ -6677,7 +6705,7 @@
     "perform some consistency checks (set of classes in project same as those listed in description);
      called before checking in build support files"
 
-    |emptyProjects nonProjects emptyOrNonProjects classesInImage
+    |emptyProjects nonProjects emptyOrNonProjects classesInImage 
      classesInDescription onlyInImage onlyInDescription missingPools myPackage|
 
     emptyProjects := Set withAll:self subProjects.
@@ -6730,7 +6758,7 @@
             pool isNil ifTrue:[
                 eachClass nameSpace ~~ Smalltalk ifTrue:[
                     pool := Smalltalk classNamed:eachPoolName.
-                ]
+                ] 
             ].
             pool isNil ifTrue:[
                 Transcript showCR:'missing pool: ',eachPoolName.
@@ -6779,69 +6807,6 @@
     "Modified: / 06-03-2012 / 11:31:37 / cg"
 !
 
-validateDescription_extensions
-
-    "
-    For every extension method, check:
-        a) whether its class package is in package prerequisites
-        b) whether it is listed in extensionMethodNames
-    "
-
-    | extensions violations |
-    extensions := self searchForExtensions.
-    violations := StringCollection new.
-
-    extensions do:[:mthd|
-
-        | listed |
-         "a)"
-         (self preRequisites includes: mthd mclass package) ifFalse:[
-
-            violations add:(('  %1 >> %2: extension method''s class package (%3) is not prerequisite of extension''s package (%4)'
-                                bindWith: mthd mclass name
-                                    with: mthd selector
-                                    with: mthd mclass package
-                                    with: mthd package) asText allBold colorizeAllWith: Color red).
-
-         ].
-         "b)"
-         listed := false.
-         self extensionMethodNames pairWiseDo:[:clsnm :sel|
-            (clsnm == mthd mclass name and:[sel == mthd selector]) ifTrue:[listed := true]
-         ].
-         listed ifFalse:[
-"/             violations add:('  %1 >> %2: extension not listed in #extensionMethodNames for package %3'
-"/                 bindWith: mthd mclass name
-"/                 with: mthd selector
-"/                 with: mthd package).
-         ]
-    ].
-
-    violations notEmpty ifTrue:[
-        (Dialog
-            confirm:
-                ('The following problems have been found for extension methods:\\'
-                    , violations asString
-                        , '\\Continue ?') withCRs
-            yesLabel:'OK' noLabel:'Cancel') ifFalse:[
-                AbortSignal raise
-        ]
-    ].
-
-    "
-        stx_libtool searchForExtensions
-        stx_libtool extensionMethodNames
-        stx_libtool validateDescription_extensions
-
-        ProjectDefinition allSubclasses do:[:def|
-            def validateDescription_extensions
-        ]
-
-    "
-
-    "Created: / 11-08-2011 / 18:51:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
 validateOrderOfClasses
     "check if the project's classes are listed in the correct dependency order in the classList.
      This would be required, if the generated makefile would compile files in that order,
@@ -6851,8 +6816,8 @@
     |classesInDescriptionInOrder classesInProject already|
 
     classesInDescriptionInOrder := OrderedCollection new.
-    classesInDescriptionInOrder :=
-        self compiled_classNames
+    classesInDescriptionInOrder := 
+        self compiled_classNames 
             collect:[:eachName |
                 |cls|
 
@@ -6868,8 +6833,8 @@
         eachClass allSuperclassesDo:[:superclass |
             (classesInProject includes:superclass) ifTrue:[
                 "/ if in the set, it must have been already listed
-                self
-                    assert:(already includes:superclass)
+                self 
+                    assert:(already includes:superclass) 
                     message:('superclass "%1" not compiled before "%2"'
                                     bindWith:superclass name
                                     with:eachClass name).
@@ -6955,15 +6920,16 @@
 !ProjectDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ProjectDefinition.st 10887 2012-12-09 12:00:33Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.407 2013-01-17 13:28:55 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.397 2012/11/21 16:57:05 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.407 2013-01-17 13:28:55 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id:: ProjectDefinition.st 10887 2012-12-09 12:00:33Z vranyj1                                                                $'
+    ^ '§ Id: ProjectDefinition.st 10645 2011-06-09 15:28:45Z vranyj1  §'
 ! !
 
+
 ProjectDefinition initialize!
--- a/ProtoObject.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ProtoObject.st	Sat Jan 19 01:30:00 2013 +0000
@@ -48,6 +48,7 @@
 "
 ! !
 
+
 !ProtoObject methodsFor:'error handling'!
 
 doesNotUnderstand:aMessage
@@ -183,16 +184,9 @@
 !ProtoObject class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ProtoObject.st,v 1.13 2009/12/01 19:59:38 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProtoObject.st,v 1.13 2009-12-01 19:59:38 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ProtoObject.st,v 1.13 2009/12/01 19:59:38 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: ProtoObject.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProtoObject.st,v 1.13 2009-12-01 19:59:38 cg Exp $'
 ! !
-
-
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PrototypeLookupAlgorithm.st	Sat Jan 19 01:30:00 2013 +0000
@@ -0,0 +1,86 @@
+"{ Package: 'stx:libbasic' }"
+
+Object subclass:#PrototypeLookupAlgorithm
+	instanceVariableNames:''
+	classVariableNames:'TheOneAndOnlyInstance'
+	poolDictionaries:''
+	category:'Kernel-Extensions'
+!
+
+!PrototypeLookupAlgorithm class methodsFor:'documentation'!
+
+documentation
+"
+    this is a dummy lookupAlgorithm class to demonstrate the meta-object-protoocol support.
+    Create a sumclass of me, redefine the lookupmethod to return a method proper.
+    If it returns nil, a doesNotUnderstand will be sent, as usual.
+
+    This class does nothing real - it duplicates the algorithm as found in the VM.
+
+    obsoleted by Lookup
+
+    [author:]
+        cg (cg@CG-PC)
+
+    [see also:]
+        jan Vrany's paper on Smalltalk's Meta-Object-Protocol proposal.
+"
+!
+
+examples
+"
+    this is only a test for the lookup; when installed as a class's lookupObject,
+    the lookup will be called from the VM for instances of that class.
+
+    |mthd|
+
+    mthd := self new
+                lookupMethodForSelector:#squared 
+                directedTo:nil 
+                for:100 
+                withArguments:nil 
+                from:nil.
+    mthd valueWithReceiver:100 arguments:#().     
+"
+! !
+
+!PrototypeLookupAlgorithm class methodsFor:'instance creation'!
+
+new
+    TheOneAndOnlyInstance isNil ifTrue: [
+        TheOneAndOnlyInstance := super new.
+    ].
+    ^ TheOneAndOnlyInstance
+! !
+
+!PrototypeLookupAlgorithm methodsFor:'lookup'!
+
+lookupMethodForSelector:aSelector directedTo:searchClass for:aReceiver withArguments:argArrayOrNil from:sendingContext
+    "invoked by the VM to ask me for a method to call.
+     The arguments are: the selector, receiver and arguments,
+     the class to start the search in (for here-, super and directed sends)
+     the sending context.
+
+     The returned method object will be put into the inline- and polyCache
+     at the call site; it might therefore be called more than once for the
+     same receiver-class/selector combination (once for each call site).
+     If I return nil, a doesNotUnderstand will be invoked."
+
+     |cls md method|
+
+     cls := searchClass.
+     cls isNil ifTrue:[ cls := aReceiver class ].
+     [ cls notNil ] whileTrue:[
+        md := cls methodDictionary.
+        method := md at:aSelector ifAbsent:nil.
+        method notNil ifTrue:[^ method ].
+        cls := cls superclass.
+     ].
+     ^ nil
+! !
+
+!PrototypeLookupAlgorithm class methodsFor:'documentation'!
+
+version_CVS
+    ^ '$Header: /cvs/stx/stx/libbasic/PrototypeLookupAlgorithm.st,v 1.5 2011-06-28 11:58:00 cg Exp $'
+! !
--- a/Query.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Query.st	Sat Jan 19 01:30:00 2013 +0000
@@ -272,18 +272,11 @@
 !Query class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Query.st,v 1.13 2009/10/01 13:44:05 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Query.st,v 1.13 2009-10-01 13:44:05 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Query.st,v 1.13 2009/10/01 13:44:05 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Query.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Query.st,v 1.13 2009-10-01 13:44:05 cg Exp $'
 ! !
 
 Query initialize!
-
-
-
--- a/QuerySignal.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/QuerySignal.st	Sat Jan 19 01:30:00 2013 +0000
@@ -510,16 +510,9 @@
 !QuerySignal class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/QuerySignal.st,v 1.45 2011/07/29 17:59:07 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/QuerySignal.st,v 1.45 2011-07-29 17:59:07 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/QuerySignal.st,v 1.45 2011/07/29 17:59:07 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: QuerySignal.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/QuerySignal.st,v 1.45 2011-07-29 17:59:07 cg Exp $'
 ! !
-
-
-
--- a/ReadEvalPrintLoop.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ReadEvalPrintLoop.st	Sat Jan 19 01:30:00 2013 +0000
@@ -426,17 +426,9 @@
 !ReadEvalPrintLoop class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ReadEvalPrintLoop.st,v 1.39 2011/12/07 21:16:18 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ReadEvalPrintLoop.st,v 1.39 2011-12-07 21:16:18 cg Exp $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/ReadEvalPrintLoop.st,v 1.39 2011/12/07 21:16:18 cg Exp '
-!
-
-version_SVN
-    ^ '$Id: ReadEvalPrintLoop.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ReadEvalPrintLoop.st,v 1.39 2011-12-07 21:16:18 cg Exp $'
 ! !
-
-
-
-
--- a/ReadStream.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ReadStream.st	Sat Jan 19 01:30:00 2013 +0000
@@ -850,16 +850,9 @@
 !ReadStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ReadStream.st,v 1.65 2011/09/23 11:32:54 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ReadStream.st,v 1.65 2011-09-23 11:32:54 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ReadStream.st,v 1.65 2011/09/23 11:32:54 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: ReadStream.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ReadStream.st,v 1.65 2011-09-23 11:32:54 cg Exp $'
 ! !
-
-
-
--- a/ReadWriteStream.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ReadWriteStream.st	Sat Jan 19 01:30:00 2013 +0000
@@ -164,12 +164,5 @@
 !ReadWriteStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ReadWriteStream.st,v 1.30 2009/07/08 18:01:50 stefan Exp $'
-!
-
-version_SVN
-    ^ '$Id: ReadWriteStream.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ReadWriteStream.st,v 1.30 2009-07-08 18:01:50 stefan Exp $'
 ! !
-
-
-
--- a/Rectangle.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Rectangle.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1817,16 +1817,9 @@
 !Rectangle class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Rectangle.st,v 1.84 2010/07/16 14:59:40 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Rectangle.st,v 1.84 2010-07-16 14:59:40 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Rectangle.st,v 1.84 2010/07/16 14:59:40 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Rectangle.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Rectangle.st,v 1.84 2010-07-16 14:59:40 cg Exp $'
 ! !
-
-
-
--- a/RecursionLock.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/RecursionLock.st	Sat Jan 19 01:30:00 2013 +0000
@@ -318,16 +318,9 @@
 !RecursionLock class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/RecursionLock.st,v 1.36 2011/04/27 15:14:06 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/RecursionLock.st,v 1.36 2011-04-27 15:14:06 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/RecursionLock.st,v 1.36 2011/04/27 15:14:06 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: RecursionLock.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/RecursionLock.st,v 1.36 2011-04-27 15:14:06 stefan Exp $'
 ! !
-
-
-
--- a/RecursiveStoreError.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/RecursiveStoreError.st	Sat Jan 19 01:30:00 2013 +0000
@@ -55,14 +55,7 @@
 !RecursiveStoreError class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/RecursiveStoreError.st,v 1.2 2012/11/23 12:14:02 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: RecursiveStoreError.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/RecursiveStoreError.st,v 1.2 2012-11-23 12:14:02 cg Exp $'
 ! !
 
 RecursiveStoreError initialize!
-
-
-
--- a/Registry.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Registry.st	Sat Jan 19 01:30:00 2013 +0000
@@ -515,16 +515,9 @@
 !Registry class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Registry.st,v 1.62 2012/09/11 08:02:19 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Registry.st,v 1.62 2012-09-11 08:02:19 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Registry.st,v 1.62 2012/09/11 08:02:19 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Registry.st 10847 2012-09-13 08:54:28Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Registry.st,v 1.62 2012-09-11 08:02:19 cg Exp $'
 ! !
-
-
-
--- a/SHA1Stream.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/SHA1Stream.st	Sat Jan 19 01:30:00 2013 +0000
@@ -308,27 +308,27 @@
     This may be used as checksum or for generating cryptographic signatures.
 
     Notice (2005):
-        Be aware that SHA-1 is considered broken and may not be appropriate in some applications.
-        Especially it should no longer be used for security stuff.
+	Be aware that SHA-1 is considered broken and may not be appropriate in some applications.
+	Especially it should no longer be used for security stuff.
 
     performance: roughly
-           47400 Kb/s on a 2Ghz Duo
-            9580 Kb/s on a 400Mhz PIII
-            3970 Kb/s on a 300Mhz Sparc
+	   47400 Kb/s on a 2Ghz Duo
+	    9580 Kb/s on a 400Mhz PIII
+	    3970 Kb/s on a 300Mhz Sparc
 
     [author:]
-        Stefan Vogel
+	Stefan Vogel
 
     [see also:]
-        MD5Stream SHA256Stream SHA512Stream
+	MD5Stream SHA256Stream SHA512Stream
 
     [class variables:]
-        HashSize        size of returned hash value
-        ContextSize     (implementation) size of hash context
+	HashSize        size of returned hash value
+	ContextSize     (implementation) size of hash context
 
     [instance variables:]
-        hashContext     (implementation)
-                        internal buffer for computation of the hash value
+	hashContext     (implementation)
+			internal buffer for computation of the hash value
 "
 !
 
@@ -336,7 +336,7 @@
 "
     Test Vectors (from FIPS PUB 180-1); results are:
 
-                                                                [exBegin]
+								[exBegin]
     |hashStream|
 
     hashStream := SHA1Stream new.
@@ -344,16 +344,16 @@
     hashStream hashValue printOn:Transcript base:16. Transcript cr.
     hashStream nextPut:'dbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq'.
     hashStream hashValue printOn:Transcript base:16. Transcript cr.
-                                                                [exEnd]
+								[exEnd]
 
-                                                                [exBegin]
+								[exBegin]
     |hashValue|
 
     hahValue := SHA1Stream hashValueOf:'abc'.
     hashValue printOn:Transcript base:16. Transcript cr.
-                                                                [exEnd]
+								[exEnd]
 
-                                                                [exBegin]
+								[exBegin]
     |hashStream|
 
     hashStream := SHA1Stream new.
@@ -362,47 +362,47 @@
     hashStream nextPut:'dbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq' asByteArray.
     hashStream hashValue printOn:Transcript base:16. Transcript cr.
 
-                                                                [exEnd]
+								[exEnd]
 
-                                                                [exBegin]
+								[exBegin]
     |hashStream|
 
     hashStream := SHA1Stream new.
     1000000 timesRepeat:[ hashStream nextPut:$a ].
     hashStream hashValue printOn:Transcript base:16. Transcript cr.
-                                                                [exEnd]
+								[exEnd]
 
-                                                                [exBegin]
+								[exBegin]
     |hashStream|
 
     hashStream := SHA1Stream new.
     hashStream nextPut:'a'.
     hashStream hashValue printOn:Transcript base:16. Transcript cr.
-                                                                [exEnd]
+								[exEnd]
 
-                                                                [exBegin]
+								[exBegin]
     |hashStream|
 
     hashStream := SHA1Stream new.
     hashStream nextPut:$a.
     hashStream hashValue printOn:Transcript base:16. Transcript cr.
-                                                                [exEnd]
+								[exEnd]
 
   timing throughput:
-                                                                [exBegin]
+								[exBegin]
     |hashStream n t|
 
     hashStream := SHA1Stream new.
     n := 1000000.
     t := Time millisecondsToRun:[
-            n timesRepeat:[
-                hashStream nextPutAll:'12345678901234567890123456789012345678901234567890'.
-            ].
-         ].
+	    n timesRepeat:[
+		hashStream nextPutAll:'12345678901234567890123456789012345678901234567890'.
+	    ].
+	 ].
     t := (t / 1000) asFloat.
     Transcript show:t; show:' seconds for '; show:(50*n/1024) asFloat; showCR:' Kb'.
     Transcript show:(n*50/1024 / t); showCR:' Kb/s'
-                                                                [exEnd]
+								[exEnd]
 "
 ! !
 
@@ -457,14 +457,13 @@
    "reset the stream in order to compute a new hash value"
 
 %{
-   if (__isNonNilObject(__INST(hashContext)) &&
-       __qClass(__INST(hashContext)) == @global(ByteArray) &&
+   if (__isByteArray(__INST(hashContext)) &&
        __byteArraySize(__INST(hashContext)) == sizeof(SHA1_CTX)
    ) {
-        SHA1_CTX *ctx = (SHA1_CTX *)__ByteArrayInstPtr(__INST(hashContext))->ba_element;
+	SHA1_CTX *ctx = (SHA1_CTX *)__ByteArrayInstPtr(__INST(hashContext))->ba_element;
 
-        SHA1Init(ctx);
-        RETURN(self);
+	SHA1Init(ctx);
+	RETURN(self);
    }
 %}.
    ^ self primitiveFailed
@@ -486,15 +485,12 @@
     digest := ByteArray new:HashSize.
 
 %{
-    if (__isNonNilObject(__INST(hashContext)) &&
-	__qClass(__INST(hashContext)) == @global(ByteArray) &&
+    if (__isByteArray(__INST(hashContext)) &&
 	__byteArraySize(__INST(hashContext)) == sizeof(SHA1_CTX) &&
-	__isNonNilObject(digest) &&
-	__qClass(digest) == @global(ByteArray) &&
+	__isByteArray(digest) &&
 	__byteArraySize(digest) == 20
     ) {
-	SHA1_CTX *ctx =
-	    (SHA1_CTX *)__ByteArrayInstPtr(__INST(hashContext))->ba_element;
+	SHA1_CTX *ctx = (SHA1_CTX *)__ByteArrayInstPtr(__INST(hashContext))->ba_element;
 	SHA1_CTX copyContext;
 
 	memcpy(&copyContext, ctx, sizeof(copyContext));
@@ -518,18 +514,17 @@
      or an externalBytes object (with known size)"
 
 %{
-    int len, offs;
-    int objSize, nInstVars, nInstBytes;
+    INT len, offs;
+    INT objSize;
+    int nInstVars, nInstBytes;
     char *extPtr;
     OBJ oClass;
 
-   if (__isNonNilObject(__INST(hashContext))
-       &&__qClass(__INST(hashContext)) == @global(ByteArray)
+   if (__isByteArray(__INST(hashContext))
        && __byteArraySize(__INST(hashContext)) == sizeof(SHA1_CTX)
        && __bothSmallInteger(count, start)
    ) {
-	SHA1_CTX *ctx =
-	    (SHA1_CTX *)__ByteArrayInstPtr(__INST(hashContext))->ba_element;
+	SHA1_CTX *ctx = (SHA1_CTX *)__ByteArrayInstPtr(__INST(hashContext))->ba_element;
 
 	len = __intVal(count);
 	offs = __intVal(start) - 1;
@@ -540,6 +535,7 @@
 
 	    nInstBytes = 0;
 	    extPtr = (char *)__externalBytesAddress(anObject);
+	    if (extPtr == NULL) goto bad;
 	    sz = __externalBytesSize(anObject);
 	    if (__isSmallInteger(sz)) {
 		objSize = __intVal(sz);
@@ -580,19 +576,11 @@
 !SHA1Stream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/SHA1Stream.st,v 1.28 2012/01/12 16:38:42 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SHA1Stream.st,v 1.30 2013-01-17 23:54:04 cg Exp $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/SHA1Stream.st,v 1.28 2012/01/12 16:38:42 cg Exp '
-!
-
-version_SVN
-    ^ '$Id: SHA1Stream.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SHA1Stream.st,v 1.30 2013-01-17 23:54:04 cg Exp $'
 ! !
 
 SHA1Stream initialize!
-
-
-
-
--- a/SameForAllNotification.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/SameForAllNotification.st	Sat Jan 19 01:30:00 2013 +0000
@@ -45,9 +45,5 @@
 !SameForAllNotification class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SameForAllNotification.st,v 1.1 2010/10/14 08:38:23 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: SameForAllNotification.st 10700 2011-09-29 15:44:37Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SameForAllNotification.st,v 1.1 2010-10-14 08:38:23 cg Exp $'
 ! !
--- a/Semaphore.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Semaphore.st	Sat Jan 19 01:30:00 2013 +0000
@@ -448,7 +448,7 @@
     "/ todo: resume by priority; higher first.
     anyDead := false.
     processes do:[:eachProcess | 
-        eachProcess isDead ifTrue:[
+        (eachProcess isNil or:[eachProcess isDead]) ifTrue:[
             Transcript show:'oops: a dead process: '; showCR:eachProcess.
             anyDead := true.
         ] ifFalse:[
@@ -977,16 +977,9 @@
 !Semaphore class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Semaphore.st,v 1.87 2012/11/07 12:29:01 anwild Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Semaphore.st,v 1.88 2012-11-26 21:48:36 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Semaphore.st,v 1.87 2012/11/07 12:29:01 anwild Exp §'
-!
-
-version_SVN
-    ^ '$Id: Semaphore.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Semaphore.st,v 1.88 2012-11-26 21:48:36 cg Exp $'
 ! !
-
-
-
--- a/SemaphoreSet.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/SemaphoreSet.st	Sat Jan 19 01:30:00 2013 +0000
@@ -306,16 +306,9 @@
 !SemaphoreSet class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/SemaphoreSet.st,v 1.19 2010/02/05 12:58:13 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SemaphoreSet.st,v 1.19 2010-02-05 12:58:13 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SemaphoreSet.st,v 1.19 2010/02/05 12:58:13 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: SemaphoreSet.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SemaphoreSet.st,v 1.19 2010-02-05 12:58:13 cg Exp $'
 ! !
-
-
-
--- a/SequenceableCollection.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/SequenceableCollection.st	Sat Jan 19 01:30:00 2013 +0000
@@ -346,18 +346,6 @@
     "Modified: / 09-01-2011 / 10:37:35 / cg"
 !
 
-writeStreamClass
-    "the type of stream used in writeStream"
-
-    ^ WriteStream
-
-    "
-     OrderedCollection writeStreamClass
-    "
-
-    "Created: / 09-01-2011 / 10:37:15 / cg"
-!
-
 writeStreamWithInitialSize:l
     "create a write-stream on an instance of the receiver-class"
 
@@ -474,7 +462,7 @@
 
 atWrap:index
     "Return the index'th element of me if possible.
-     Wrap the index modulu the receivers size if it is out of bounds."
+     Wrap the index modulu the receiver's size if it is out of bounds."
 
     ^ self at:((index - 1) \\ (self size)) + 1
 
@@ -1351,8 +1339,8 @@
 !SequenceableCollection methodsFor:'combinatoric'!
 
 combinationsDo: aBlock
-    "Repeatly evaluate aBlock with all combinations of elements from the receivers elements. 
-     The receivers elements must be collections of the individuals to be taken for the combinations"
+    "Repeatly evaluate aBlock with all combinations of elements from the receiver's elements. 
+     The receiver's elements must be collections of the individuals to be taken for the combinations"
 
     self combinationsStartingAt:1 prefix:#() do:aBlock
 
@@ -1859,7 +1847,7 @@
 !
 
 endsWith:aCollection
-    "return true, if the receivers last elements match those
+    "return true, if the receiver's last elements match those
      of aCollection"
 
     |index1 "{ Class: SmallInteger }"
@@ -1877,9 +1865,9 @@
     index1 := sz.
     index2 := stop.
     [index2 > 0] whileTrue:[
-	(self at:index1) = (aCollection at:index2) ifFalse:[^ false].
-	index1 := index1 - 1.
-	index2 := index2 - 1
+        (self at:index1) = (aCollection at:index2) ifFalse:[^ false].
+        index1 := index1 - 1.
+        index2 := index2 - 1
     ].
     ^ true
 
@@ -2078,7 +2066,7 @@
 !
 
 startsWith:aCollection
-    "return true, if the receivers first elements match those
+    "return true, if the receiver's first elements match those
      of aCollection
      If the argument is empty, true is returned."
 
@@ -2093,8 +2081,8 @@
 
     index := 1.
     [index <= stop] whileTrue:[
-	(self at:index) = (aCollection at:index) ifFalse:[^false].
-	index := index + 1
+        (self at:index) = (aCollection at:index) ifFalse:[^false].
+        index := index + 1
     ].
     ^ true
 
@@ -2153,7 +2141,7 @@
 
 asCollectionOfSubCollectionsOfSize:pieceSize
     "return a collection containing pieces of size pieceSite from the receiver.
-     The last piece may be smaller, if the receivers size is not a multiple of pieceSize."
+     The last piece may be smaller, if the receiver's size is not a multiple of pieceSize."
 
     |pieces
      start  "{ Class:SmallInteger }"
@@ -3047,7 +3035,7 @@
 
 from:startIndex to:endIndex by:step
     "Create a ReindexedCollection from the receiver.
-     The new collection represents the receivers elements up to endIndex.
+     The new collection represents the receiver's elements up to endIndex.
      (i.e. logically it represents the receiver copyTo:endIndex,
      however, physically, no copy is made).
      Warning:
@@ -3071,7 +3059,7 @@
 
 to:endIndex
     "Create a ReindexedCollection from the receiver.
-     The new collection represents the receivers elements up to endIndex.
+     The new collection represents the receiver's elements up to endIndex.
      (i.e. logically it represents the receiver copyTo:endIndex,
      however, physically, no copy is made).
      Warning:
@@ -3094,7 +3082,7 @@
 
 to:endIndex by:step
     "Create a ReindexedCollection from the receiver.
-     The new collection represents the receivers elements up to endIndex.
+     The new collection represents the receiver's elements up to endIndex.
      (i.e. logically it represents the receiver copyTo:endIndex,
      however, physically, no copy is made).
      Warning:
@@ -3123,7 +3111,7 @@
     "return a new collection formed from concatenating the receiver with
      the argument. The class of the new collection is determined by the
      receivers class, so mixing classes is possible, if the second collections
-     elements can be stored into instances of the receivers class.
+     elements can be stored into instances of the receiver's class.
      This is just syntactic sugar for javascript"
 
     ^ self , aCollection
@@ -3189,7 +3177,7 @@
 !
 
 copyButFirst:count
-    "return a new collection consisting of the receivers elements
+    "return a new collection consisting of the receiver's elements
      except for the first count elements - for convenience."
 
     ^ self copyFrom:(count + 1)
@@ -3201,7 +3189,7 @@
 !
 
 copyButLast:count
-    "return a new collection consisting of the receivers elements
+    "return a new collection consisting of the receiver's elements
      except for the last count elements - for convenience."
 
     ^ self copyTo:(self size - count)
@@ -3213,7 +3201,7 @@
 !
 
 copyFirst:count
-    "return a new collection consisting of the receivers first count
+    "return a new collection consisting of the receiver's first count
      elements - this is just a rename of copyTo: - for compatibility."
 
     ^ self copyFrom:1 to:count
@@ -3225,7 +3213,7 @@
 !
 
 copyFrom:startIndex
-    "return a new collection consisting of receivers elements from startIndex to the end of the collection.
+    "return a new collection consisting of receiver's elements from startIndex to the end of the collection.
      Return an empty collection, if startIndex is beyond the receivers size."
 
     ^ self copyFrom:startIndex to:(self size)
@@ -3241,12 +3229,12 @@
     "return a new collection consisting of numberOfElements elements
      extracted from the receiver starting at index start
      (i.e. extract a slice).
-     Returns an empty collection if startIndex is beyond the receivers size.
+     Returns an empty collection if startIndex is beyond the receiver's size.
      Raise an error, if stopIndex is out of range."
 
     ^ self
-	copyFrom:startIndex
-	to:(startIndex + numberOfElements - 1)
+        copyFrom:startIndex
+        to:(startIndex + numberOfElements - 1)
 
     "
      #($a $b $c $d $e $f $g) copyFrom:2 count:3
@@ -3257,16 +3245,16 @@
 !
 
 copyFrom:startIndex to:stopIndex
-    "return a new collection consisting of receivers elements
+    "return a new collection consisting of receiver's elements
      between start and stop.
-     Returns an empty collection if startIndex is beyond the receivers size.
+     Returns an empty collection if startIndex is beyond the receiver's size.
      Raise an error, if stopIndex is out of range."
 
     |newCollection newSize|
 
     newSize := stopIndex - startIndex + 1.
     newSize < 0 ifTrue:[
-	newSize := 0
+        newSize := 0
     ].
     newCollection := self copyEmptyAndGrow:newSize.
     newCollection replaceFrom:1 to:newSize with:self startingAt:startIndex.
@@ -3283,8 +3271,7 @@
 !
 
 copyLast:count
-    "return a new collection consisting of the receivers last count
-     elements."
+    "return a new collection consisting of the receiver's last count elements."
 
     |sz|
 
@@ -3458,7 +3445,7 @@
 !
 
 copyTo:stopIndex
-    "Return a new collection consisting of receivers elements from 1 up to (including) stopIndex.
+    "Return a new collection consisting of receiver's elements from 1 up to (including) stopIndex.
      Raise an error, if stopIndex is out of range."
 
     ^ self copyFrom:1 to:stopIndex
@@ -3470,7 +3457,7 @@
 !
 
 copyToMax:stop
-    "return a new collection consisting of receivers elements
+    "return a new collection consisting of receiver's elements
      from 1 up to (including) index stop, or up to the receivers end,
      whichever is smaller (i.e. like copyTo:, but do not err if receiver is smaller"
 
@@ -3720,7 +3707,7 @@
 !
 
 copyWith:newElement
-    "return a new collection containing the receivers elements
+    "return a new collection containing the receiver's elements
      and the single new element, newElement.
      This is different from concatentation, which expects another collection
      as argument, but equivalent to copy-and-addLast."
@@ -3743,7 +3730,7 @@
 !
 
 copyWithFirst:newFirstElement
-    "return a new collection containing the receivers elements
+    "return a new collection containing the receiver's elements
      and the single new element, newElement up front.
      This is different from concatentation, which expects two collections
      as argument, but equivalent to copy-and-addFirst."
@@ -3819,7 +3806,7 @@
 !
 
 copyWithoutFirst:elementToSkip
-    "return a new collection consisting of a copy of the receivers elements
+    "return a new collection consisting of a copy of the receiver's elements
      without the first elementToSkip, if it was present.
      No error is reported, if elementToSkip is not in the collection.
      Do not confuse this with copyButFirst:"
@@ -3890,7 +3877,7 @@
 !
 
 copyWithoutIndex:omitIndex
-    "return a new collection consisting of receivers elements
+    "return a new collection consisting of receiver's elements
      without the argument stored at omitIndex"
 
     |copy sz|
@@ -3908,7 +3895,7 @@
 !
 
 copyWithoutLast:count
-    "return a new collection consisting of the receivers elements
+    "return a new collection consisting of the receiver's elements
      except the last count elements.
      That is the same as copyButLast: and badly named (for compatibility),
      because the name may confuse users with the copyWithoutFirst: functionality.
@@ -3945,7 +3932,7 @@
 !
 
 restAfter:anElement
-    "return a new collection consisting of the receivers elements after
+    "return a new collection consisting of the receiver's elements after
      (but excluding) anElement.
      If anElement is not in the receiver, the returned collection
      will be empty.
@@ -4002,7 +3989,7 @@
 !
 
 upTo:anElement
-    "return a new collection consisting of the receivers elements upTo
+    "return a new collection consisting of the receiver's elements upTo
      (but excluding) anElement.
      If anElement is not in the receiver, the returned collection
      will consist of all elements of the receiver.
@@ -4036,7 +4023,7 @@
 !
 
 upTo:anElement count:count
-    "return a new collection consisting of the receivers elements upTo
+    "return a new collection consisting of the receiver's elements upTo
      (but excluding) count found anElements, i.e. the first found count-1
      elements are included in the returned collection; if count < 0 the
      procedure is done from the end of the collection backwards.
@@ -4046,7 +4033,7 @@
     |startPos endPos pos found|
 
     (count == 0 or: [count == 1]) ifTrue:[
-	^ self upTo:anElement
+        ^ self upTo:anElement
     ].
 
     startPos := 1.
@@ -4054,21 +4041,21 @@
     found    := 0.
 
     count > 1 ifTrue:[
-	pos := 0.
-	[pos < self size and: [found < count]]
-	    whileTrue: [pos := pos + 1. (self at: pos) == anElement ifTrue: [found := found + 1]].
-	found == count ifTrue:[
-	    endPos   := pos - 1
-	]
+        pos := 0.
+        [pos < self size and: [found < count]]
+            whileTrue: [pos := pos + 1. (self at: pos) == anElement ifTrue: [found := found + 1]].
+        found == count ifTrue:[
+            endPos   := pos - 1
+        ]
     ].
 
     count < 0 ifTrue:[
-	pos := self size + 1.
-	[pos > 1 and: [found < count abs]]
-	    whileTrue: [pos := pos - 1. (self at: pos) == anElement ifTrue: [found := found + 1]].
-	found == count abs ifTrue:[
-	    startPos := pos + 1
-	]
+        pos := self size + 1.
+        [pos > 1 and: [found < count abs]]
+            whileTrue: [pos := pos - 1. (self at: pos) == anElement ifTrue: [found := found + 1]].
+        found == count abs ifTrue:[
+            startPos := pos + 1
+        ]
     ].
 
     ^ self copyFrom: startPos to: endPos
@@ -4083,7 +4070,7 @@
 !
 
 upToAny:aCollectionOfObjects
-    "return a new collection consisting of the receivers elements upTo
+    "return a new collection consisting of the receiver's elements upTo
      (but excluding) any in aCollectionOfObjects.
      If none of aCollectionOfObjects is found in the receiver, the returned collection
      will consist of all elements of the receiver.
@@ -4104,7 +4091,7 @@
 !
 
 withoutLeadingForWhich:aCheckBlock
-    "return a copy of myself without leading eleents for which aCheckBlock returns true.
+    "return a copy of myself without leading elements for which aCheckBlock returns true.
      Returns an empty collection, if the receiver consist only of matching elements.
      Normally, this is mostly used with string receivers."
 
@@ -5320,33 +5307,38 @@
      dstIndex "{ Class: SmallInteger }"
      end      "{ Class: SmallInteger }" |
 
-    (repStartIndex < startIndex) ifTrue:[
-	" must do reverse copy "
-	srcIndex := repStartIndex + (stopIndex - startIndex).
-	dstIndex := stopIndex.
-	end := startIndex.
-	[dstIndex >= end] whileTrue:[
-	    self at:dstIndex put:(replacementCollection at:srcIndex).
-	    srcIndex := srcIndex - 1.
-	    dstIndex := dstIndex - 1
-	].
-	^ self
+    replacementCollection == self ifTrue:[
+        repStartIndex == startIndex ifTrue:[ "noting to copy" ^ self ].
+
+        "beware the overlapping copy"
+        (repStartIndex < startIndex) ifTrue:[
+            " must do reverse copy "
+            srcIndex := repStartIndex + (stopIndex - startIndex).
+            dstIndex := stopIndex.
+            end := startIndex.
+            [dstIndex >= end] whileTrue:[
+                self at:dstIndex put:(replacementCollection at:srcIndex).
+                srcIndex := srcIndex - 1.
+                dstIndex := dstIndex - 1
+            ].
+            ^ self
+        ].
     ].
 
     srcIndex := repStartIndex.
     dstIndex := startIndex.
     end := stopIndex.
     [dstIndex <= end] whileTrue:[
-	self at:dstIndex put:(replacementCollection at:srcIndex).
-	srcIndex := srcIndex + 1.
-	dstIndex := dstIndex + 1
+        self at:dstIndex put:(replacementCollection at:srcIndex).
+        srcIndex := srcIndex + 1.
+        dstIndex := dstIndex + 1
     ]
 
     "
      args:    startIndex            : <integer>
-	      stopIndex             : <integer>
-	      replacementCollection : <colleciton of <object> >
-	      repStartIndex         : <integer>
+              stopIndex             : <integer>
+              replacementCollection : <colleciton of <object> >
+              repStartIndex         : <integer>
 
      returns: self
     "
@@ -5365,7 +5357,7 @@
      c replaceFrom:4 to:5 with:c startingAt:2
     "
 
-    "Modified: / 20.5.1998 / 15:23:21 / cg"
+    "Modified: / 08-05-2012 / 13:23:51 / cg"
 !
 
 replaceFrom:startIndex with:replacementCollection
@@ -5427,6 +5419,39 @@
     "Modified: / 20.5.1998 / 15:25:18 / cg"
 !
 
+replaceLast:count with:replacementCollection
+    "replace the last count elements elements in the receiver
+     with elements taken from replacementCollection.
+     Return the receiver.
+
+     Notice: This operation modifies the receiver, NOT a copy;
+     therefore the change may affect all others referencing the receiver."
+
+    self replaceLast:count with:replacementCollection startingAt:1
+
+    "
+     '1234567890' replaceLast:5 with:'abcdef'
+    "
+!
+
+replaceLast:count with:replacementCollection startingAt:repStartIndex
+    "replace the last count elements elements in the receiver
+     with elements taken from replacementCollection starting at repStartIndex.
+     Return the receiver.
+
+     Notice: This operation modifies the receiver, NOT a copy;
+     therefore the change may affect all others referencing the receiver."
+
+    |sz|
+
+    sz := self size.
+    self replaceFrom:(sz - count + 1) to:sz with:replacementCollection startingAt:repStartIndex
+
+    "
+     '1234567890' replaceLast:5 with:'abcdef' startingAt:1
+    "
+!
+
 startingAt:sourceStart replaceElementsIn:destColl from:destStartIndex to:destEndIndex
     "replace elements in destColl with elements from the receiver.
 
@@ -5691,16 +5716,16 @@
     "return a new collection of length size, which contains the receiver
      right-adjusted (i.e. padded on the left).
      Elements on the left are filled with padElement.
-     If the receivers size is equal or greater than the length argument,
+     If the receiver's size is equal or greater than the length argument,
      the original receiver is returned unchanged."
 
     |len s|
 
     len := self size.
     (len < size) ifTrue:[
-	s := self species new:size withAll:padElement.
-	s replaceFrom:(size - len + 1) with:self.
-	^ s
+        s := self species new:size withAll:padElement.
+        s replaceFrom:(size - len + 1) with:self.
+        ^ s
     ]
 
     "
@@ -5720,16 +5745,16 @@
 paddedTo:newSize with:padElement
     "return a new collection consisting of the receivers elements,
      plus pad elements up to length.
-     If the receivers size is equal or greater than the length argument,
+     If the receiver's size is equal or greater than the length argument,
      the original receiver is returned unchanged."
 
     |s len|
 
     len := self size.
     len < newSize ifTrue:[
-	s := self species new:newSize withAll:padElement.
-	s replaceFrom:1 to:len with:self.
-	^ s
+        s := self species new:newSize withAll:padElement.
+        s replaceFrom:1 to:len with:self.
+        ^ s
     ]
 
     "
@@ -8708,15 +8733,12 @@
 !SequenceableCollection class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/SequenceableCollection.st,v 1.325 2012/08/23 13:25:43 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SequenceableCollection.st,v 1.328 2013-01-01 11:30:33 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SequenceableCollection.st,v 1.325 2012/08/23 13:25:43 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: SequenceableCollection.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SequenceableCollection.st,v 1.328 2013-01-01 11:30:33 cg Exp $'
 ! !
 
+
 SequenceableCollection initialize!
--- a/Set.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Set.st	Sat Jan 19 01:30:00 2013 +0000
@@ -13,7 +13,7 @@
 
 Collection subclass:#Set
 	instanceVariableNames:'tally keyArray'
-	classVariableNames:'DeletedEntry'
+	classVariableNames:'DeletedEntry NilEntry'
 	poolDictionaries:''
 	category:'Collections-Unordered'
 !
@@ -569,14 +569,6 @@
     "Modified: 30.1.1997 / 14:58:08 / cg"
 ! !
 
-!Set methodsFor:'binary storage'!
-
-readBinaryContentsFrom: stream manager: manager
-    "must rehash after reload"
-
-    super readBinaryContentsFrom: stream manager: manager.
-    self rehash
-! !
 
 !Set methodsFor:'comparing'!
 
@@ -584,11 +576,12 @@
     "return true, if the argument is a Set containing the same elements
      as I do"
 
-    aCollection species == self species ifFalse:[^ false].
-    aCollection size == self size ifFalse:[^ false].
+    aCollection species ~~ self species ifTrue:[^ false].
+    aCollection size ~~ self size ifTrue:[^ false].
     "/ same number of elements; since I am a Set, all of
     "/ of my elements must be in the other collection ...
-    ^ self conform:[:element | (aCollection includes:element)]
+    self do:[:eachElement | (aCollection includes:eachElement) ifFalse:[^ false]].
+    ^ true.
 
     "
      #(1 2 3 4 5) asSet = #(2 3 4 5 1) asSet
@@ -648,17 +641,17 @@
      time can become much bigger than the time lost in added probing.
      Time will show ...
      Notice & warning:
-	if the #= method is ever changed to compare non-dictionaries equal,
-	the code below must be changed to assert that the same hash-value is 
-	still returned.
-	(which may be hard to acomplish)
+        if the #= method is ever changed to compare non-dictionaries equal,
+        the code below must be changed to assert that the same hash-value is 
+        still returned.
+        (which may be hard to acomplish)
     "
 
     |mySize|
 
     mySize := self size.
     mySize == 0 ifTrue:[^ 0].
-    ^ ((self first) hash times:mySize) bitAnd:16r3FFFFFFF
+    ^ (self anElement hash times:mySize) bitAnd:16r3FFFFFFF
 
     "
      |d|
@@ -681,10 +674,6 @@
      d at:'two' put:2.
      d hash     
     "
-
-
-
-
 ! !
 
 !Set methodsFor:'copying'!
@@ -720,14 +709,6 @@
     "Modified: 1.3.1996 / 21:41:13 / cg"
 ! !
 
-!Set methodsFor:'inspecting'!
-
-inspectorClass
-    "redefined to use SetInspector
-     (instead of the default Inspector)."
-
-    ^ SetInspectorView
-! !
 
 !Set methodsFor:'obsolete set operations'!
 
@@ -836,9 +817,9 @@
 findNil:key
     "Look for the next slot usable for key.  
      WARNING:
-	This method assumes that key is not already in the receiver 
-	AND that keyArray does not have previously removed entries 
-	AND that there is an empty slot.
+        This method assumes that key is not already in the receiver 
+        AND that keyArray does not have previously removed entries 
+        AND that there is an empty slot.
      To be used ONLY while growing/rehashing to enter elements into a fresh
      collection - if any of the above conditions is not met, the method
      loops forever."
@@ -855,13 +836,13 @@
 "/    ].
     "/ that code is completely inlined by stc ...
     [(keyArray basicAt:index) notNil] whileTrue:[
-	index == length ifTrue:[
-	    index := 1
-	] ifFalse:[
-	    index := index + 1
-	].
-	"notice: no check for no nil found - we must find one since
-	 this is only called after growing"
+        index == length ifTrue:[
+            index := 1
+        ] ifFalse:[
+            index := index + 1
+        ].
+        "notice: no check for no nil found - we must find one since
+         this is only called after growing"
     ].
     ^ index
 
@@ -885,12 +866,18 @@
 
     length := keyArray basicSize.
     index := (self hashFor:aKey) bitAnd:16r3FFFFFFF.
-    index < 16r1FFFFFFF ifTrue:[
-	index := index * 2
-    ].
+
+    "multiply by a large prime to spread the keys over the whole range.
+     This causes maxChainLength to reduce from about 2000 to 6 for an
+     IdentitySet of 9000 Smalltalk classes"
+    index := index times:31415821.
     index := index \\ length + 1.
     ^ index.
 
+    "
+        Smalltalk allClasses maxChainLength
+    "
+
     "Modified: 1.3.1997 / 01:01:13 / cg"
     "Created: 19.3.1997 / 15:02:41 / cg"
 !
@@ -1085,28 +1072,26 @@
     ].
 
     ^ count
+
+    "
+      self allSubInstances 
+          collect:[:each| each collisionCount -> each] 
+          thenSelect:[:each| each key > 0]
+    "
 !
 
 collisionsFor:key
     "Return the number of searches - 1 required for key"
 
     |index  "{ Class:SmallInteger }"
-     length "{ Class:SmallInteger }"
-     hash "{ Class:SmallInteger }"
-     step "{ Class:SmallInteger }"
-     startIndex probe count|
+     length "{ Class:SmallInteger }" startIndex probe count|
 
     length := keyArray basicSize.
-    hash := (self hashFor:key) bitAnd:16r3FFFFFFF.
-    hash < 16r1FFFFFFF ifTrue:[
-        hash := hash * 2
-    ].
-    startIndex := index := hash \\ length + 1.
-    step:= hash // length + 1.
+    startIndex := index := self initialIndexForKey:key.
 
     count := 0.
     [true] whileTrue:[
-        probe := (keyArray basicAt:index).
+        probe := keyArray basicAt:index.
         (probe notNil and:[key = probe]) ifTrue:[^ count].
         (self slotIsEmpty:probe) ifTrue:[self error:'non existing key'].
 
@@ -1144,6 +1129,7 @@
     ^ tally
 ! !
 
+
 !Set methodsFor:'testing'!
 
 capacity 
@@ -1245,15 +1231,12 @@
 !Set class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Set.st,v 1.115 2012/08/13 17:11:21 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Set.st,v 1.117 2013-01-15 17:25:54 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Set.st,v 1.115 2012/08/13 17:11:21 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: Set.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Set.st,v 1.117 2013-01-15 17:25:54 stefan Exp $'
 ! !
 
+
 Set initialize!
--- a/SharedPool.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/SharedPool.st	Sat Jan 19 01:30:00 2013 +0000
@@ -263,13 +263,9 @@
 !SharedPool class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/SharedPool.st,v 1.21 2012/08/03 15:52:47 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SharedPool.st,v 1.21 2012-08-03 15:52:47 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SharedPool.st,v 1.21 2012/08/03 15:52:47 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: SharedPool.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SharedPool.st,v 1.21 2012-08-03 15:52:47 stefan Exp $'
 ! !
--- a/ShortFloat.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/ShortFloat.st	Sat Jan 19 01:30:00 2013 +0000
@@ -330,7 +330,6 @@
     ^ '.6'
 ! !
 
-
 !ShortFloat class methodsFor:'binary storage'!
 
 readBinaryIEEESingleFrom:aStream
@@ -439,6 +438,7 @@
     "Modified: 23.4.1996 / 09:26:45 / cg"
 ! !
 
+
 !ShortFloat class methodsFor:'queries'!
 
 exponentCharacter
@@ -1018,7 +1018,7 @@
          * (i.e. look if string contains '.' or 'e' and append '.0' if not)
          */
         for (cp = buffer; *cp; cp++) {
-            if ((*cp == '.') || (*cp == 'E') || (*cp == 'e')) break;
+            if ((*cp == '.') || (*cp == ',') || (*cp == 'E') || (*cp == 'e')) break;
         }
         if (!*cp && (cp[-1] >= '0') && (cp[-1] <= '9')) {
             if (__isCharacter(@global(DecimalPointCharacterForPrinting))) {
@@ -1141,23 +1141,23 @@
     __END_PROTECT_REGISTERS__
 
     if (len >= 0 && len < sizeof(buffer)-3) {
-	/*
-	 * kludge to make integral float f prints as "f.0" (not as "f" as printf does)
-	 * (i.e. look if string contains '.' or 'e' and append '.0' if not)
-	 */
-	for (cp = buffer; *cp; cp++) {
-	    if ((*cp == '.') || (*cp == 'E') || (*cp == 'e')) break;
-	}
-	if (!*cp && (cp[-1] >= '0') && (cp[-1] <= '9')) {
-	    *cp++ = '.';
-	    *cp++ = '0';
-	    *cp = '\0';
-	}
+        /*
+         * kludge to make integral float f prints as "f.0" (not as "f" as printf does)
+         * (i.e. look if string contains '.' or 'e' and append '.0' if not)
+         */
+        for (cp = buffer; *cp; cp++) {
+            if ((*cp == '.') || (*cp == ',') || (*cp == 'E') || (*cp == 'e')) break;
+        }
+        if (!*cp && (cp[-1] >= '0') && (cp[-1] <= '9')) {
+            *cp++ = '.';
+            *cp++ = '0';
+            *cp = '\0';
+        }
 
-	s = __MKSTRING(buffer);
-	if (s != nil) {
-	    RETURN (s);
-	}
+        s = __MKSTRING(buffer);
+        if (s != nil) {
+            RETURN (s);
+        }
     }
 %}.
     "
@@ -1170,26 +1170,26 @@
     ^ ObjectMemory allocationFailureSignal raise.
 
     "
-	1.0 asShortFloat storeString
-	1.234 asShortFloat storeString
-	1e10 asShortFloat storeString
-	1.2e3 asShortFloat storeString
-	1.2e30 asShortFloat storeString
-	Float pi asShortFloat storeString
-	(1.0 uncheckedDivide:0) asShortFloat storeString
-	(0.0 uncheckedDivide:0) asShortFloat storeString
+        1.0 asShortFloat storeString
+        1.234 asShortFloat storeString
+        1e10 asShortFloat storeString
+        1.2e3 asShortFloat storeString
+        1.2e30 asShortFloat storeString
+        Float pi asShortFloat storeString
+        (1.0 uncheckedDivide:0) asShortFloat storeString
+        (0.0 uncheckedDivide:0) asShortFloat storeString
 
      notice that the storeString is NOT affected by DecimalPointCharacterForPrinting:
 
-	DecimalPointCharacterForPrinting := $,.
-	1.234 asShortFloat storeString.
-	1.0 asShortFloat storeString.
-	1e10 asShortFloat storeString.
-	1.2e3 asShortFloat storeString.
-	1.2e30 asShortFloat storeString.
-	(1.0 uncheckedDivide:0) asShortFloat storeString.
-	(0.0 uncheckedDivide:0) asShortFloat storeString.
-	DecimalPointCharacterForPrinting := $.
+        DecimalPointCharacterForPrinting := $,.
+        1.234 asShortFloat storeString.
+        1.0 asShortFloat storeString.
+        1e10 asShortFloat storeString.
+        1.2e3 asShortFloat storeString.
+        1.2e30 asShortFloat storeString.
+        (1.0 uncheckedDivide:0) asShortFloat storeString.
+        (0.0 uncheckedDivide:0) asShortFloat storeString.
+        DecimalPointCharacterForPrinting := $.
     "
 ! !
 
@@ -1785,16 +1785,10 @@
 !ShortFloat class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ShortFloat.st,v 1.108 2011/05/05 08:57:20 mb Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ShortFloat.st,v 1.109 2012-12-17 18:28:33 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ShortFloat.st,v 1.108 2011/05/05 08:57:20 mb Exp §'
-!
-
-version_SVN
-    ^ '$Id: ShortFloat.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ShortFloat.st,v 1.109 2012-12-17 18:28:33 stefan Exp $'
 ! !
 
-
-
--- a/Signal.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Signal.st	Sat Jan 19 01:30:00 2013 +0000
@@ -964,16 +964,9 @@
 !Signal class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Signal.st,v 1.109 2010/08/10 08:35:38 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Signal.st,v 1.109 2010-08-10 08:35:38 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Signal.st,v 1.109 2010/08/10 08:35:38 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Signal.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Signal.st,v 1.109 2010-08-10 08:35:38 cg Exp $'
 ! !
-
-
-
--- a/SignalSet.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/SignalSet.st	Sat Jan 19 01:30:00 2013 +0000
@@ -332,16 +332,9 @@
 !SignalSet class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/SignalSet.st,v 1.45 2009/10/01 07:38:40 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SignalSet.st,v 1.45 2009-10-01 07:38:40 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SignalSet.st,v 1.45 2009/10/01 07:38:40 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: SignalSet.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SignalSet.st,v 1.45 2009-10-01 07:38:40 cg Exp $'
 ! !
-
-
-
--- a/SmallInteger.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/SmallInteger.st	Sat Jan 19 01:30:00 2013 +0000
@@ -213,161 +213,161 @@
 #endif
 
     if (__isSmallInteger(aNumber)) {
-        myValue = __intVal(self);
-        otherValue = __intVal(aNumber);
+	myValue = __intVal(self);
+	otherValue = __intVal(aNumber);
 
 #if defined(USE_LONGLONG_FOR_MUL)
-        {
+	{
 # if defined(__alpha__) && !defined(__alpha64__)
 #  define LONGLONG      INT64
 # else
 #  define LONGLONG      long long
 # endif
-            LONGLONG product;
-
-            product = (LONGLONG)myValue * (LONGLONG)otherValue;
-            if ((product >= (LONGLONG)_MIN_INT)
-             && (product <= (LONGLONG)_MAX_INT)) {
-                RETURN ( __mkSmallInteger((INT)product) );
-            }
-            if (product < 0) {
-                negative = -1;
-                product = -product;
-            } else {
-                negative = 1;
-            }
-            productHi = product >> 32;
-            productLow = product & 0xFFFFFFFFL;
-        }
+	    LONGLONG product;
+
+	    product = (LONGLONG)myValue * (LONGLONG)otherValue;
+	    if ((product >= (LONGLONG)_MIN_INT)
+	     && (product <= (LONGLONG)_MAX_INT)) {
+		RETURN ( __mkSmallInteger((INT)product) );
+	    }
+	    if (product < 0) {
+		negative = -1;
+		product = -product;
+	    } else {
+		negative = 1;
+	    }
+	    productHi = product >> 32;
+	    productLow = product & 0xFFFFFFFFL;
+	}
 #else /* no long-long */
-        negative = 1;
-        if (myValue < 0) {
-            negative = -1;
-            myValue = -myValue;
-        }
-        if (otherValue < 0) {
-            negative = -negative;
-            otherValue = -otherValue;
-        }
+	negative = 1;
+	if (myValue < 0) {
+	    negative = -1;
+	    myValue = -myValue;
+	}
+	if (otherValue < 0) {
+	    negative = -negative;
+	    otherValue = -otherValue;
+	}
 
 # if defined(__GNUC__) && defined(__mc68k__)
-        asm ("mulu%.l %3,%1:%0"
-                : "=d"  ((unsigned long)(productLow)),
-                  "=d"  ((unsigned long)(productHi))
-                : "%0"  ((unsigned long)(myValue)),
-                  "dmi" ((unsigned long)(otherValue)));
+	asm ("mulu%.l %3,%1:%0"
+		: "=d"  ((unsigned long)(productLow)),
+		  "=d"  ((unsigned long)(productHi))
+		: "%0"  ((unsigned long)(myValue)),
+		  "dmi" ((unsigned long)(otherValue)));
 # else
 #  if defined (__GNUC__) && defined(__i386__)
-        asm ("mull %3"
-                : "=a"  ((unsigned long)(productLow)),
-                  "=d"  ((unsigned long)(productHi))
-                : "%0"  ((unsigned long)(myValue)),
-                  "rm"  ((unsigned long)(otherValue)));
+	asm ("mull %3"
+		: "=a"  ((unsigned long)(productLow)),
+		  "=d"  ((unsigned long)(productHi))
+		: "%0"  ((unsigned long)(myValue)),
+		  "rm"  ((unsigned long)(otherValue)));
 #  else
 #   if defined(WIN32) && defined(__BORLANDC__)
-        asm {
-            mov   eax, myValue
-            mov   edx, otherValue
-            mul   edx
-            mov   productLow, eax
-            mov   productHi, edx
-        }
+	asm {
+	    mov   eax, myValue
+	    mov   edx, otherValue
+	    mul   edx
+	    mov   productLow, eax
+	    mov   productHi, edx
+	}
 #   else /* generic */
-        {
-            unsigned INT pHH, pHL, pLH, pLL;
-            unsigned INT low1, low2, hi1, hi2;
-            unsigned INT t;
-
-            /* unsigned multiply myValue * otherValue -> productHi, productLow
-             *
-             * this is too slow:
-             * since most machines can do 32*32 to 64 bit multiply,
-             * (or at least 32*32 with Overflow check)
-             * - need more assembler (inline) functions here
-             */
+	{
+	    unsigned INT pHH, pHL, pLH, pLL;
+	    unsigned INT low1, low2, hi1, hi2;
+	    unsigned INT t;
+
+	    /* unsigned multiply myValue * otherValue -> productHi, productLow
+	     *
+	     * this is too slow:
+	     * since most machines can do 32*32 to 64 bit multiply,
+	     * (or at least 32*32 with Overflow check)
+	     * - need more assembler (inline) functions here
+	     */
 #    if __POINTER_SIZE__ == 8
-            low1 = low32Bits((unsigned INT)myValue);
-            hi1 = hi32Bits((unsigned INT)myValue);
-            low2 = low32Bits((unsigned INT)otherValue);
-            hi2 = hi32Bits((unsigned INT)otherValue);
+	    low1 = low32Bits((unsigned INT)myValue);
+	    hi1 = hi32Bits((unsigned INT)myValue);
+	    low2 = low32Bits((unsigned INT)otherValue);
+	    hi2 = hi32Bits((unsigned INT)otherValue);
 #     define LLMASK 0xC000000000000000L
 #    else
-            low1 = low16Bits((unsigned INT)myValue);
-            hi1 = hi16Bits((unsigned INT)myValue);
-            low2 = low16Bits((unsigned INT)otherValue);
-            hi2 = hi16Bits((unsigned INT)otherValue);
+	    low1 = low16Bits((unsigned INT)myValue);
+	    hi1 = hi16Bits((unsigned INT)myValue);
+	    low2 = low16Bits((unsigned INT)otherValue);
+	    hi2 = hi16Bits((unsigned INT)otherValue);
 #     define LLMASK 0xC0000000
 #    endif
 
-            pLH = low1 * hi2;
-            pHL = hi1 * low2;
-            pLL = low1 * low2;
-            pHH = hi1 * hi2;
-
-            /*
-             * the common case ...
-             */
-            if ((pHL == 0)
-             && (pLH == 0)
-             && (pHH == 0)
-             && ((pLL & LLMASK) == 0)) {
-                if (negative < 0) {
-                    RETURN ( __mkSmallInteger(- ((INT)pLL)) );
-                }
-                RETURN ( __mkSmallInteger((INT)pLL) );
-            }
-
-            /*
-             *   pHH |--------|--------|
-             *   pLH          |--------|--------|
-             *   pHL          |--------|--------|
-             *   pLL                   |--------|--------|
-             */
+	    pLH = low1 * hi2;
+	    pHL = hi1 * low2;
+	    pLL = low1 * low2;
+	    pHH = hi1 * hi2;
+
+	    /*
+	     * the common case ...
+	     */
+	    if ((pHL == 0)
+	     && (pLH == 0)
+	     && (pHH == 0)
+	     && ((pLL & LLMASK) == 0)) {
+		if (negative < 0) {
+		    RETURN ( __mkSmallInteger(- ((INT)pLL)) );
+		}
+		RETURN ( __mkSmallInteger((INT)pLL) );
+	    }
+
+	    /*
+	     *   pHH |--------|--------|
+	     *   pLH          |--------|--------|
+	     *   pHL          |--------|--------|
+	     *   pLL                   |--------|--------|
+	     */
 
 #    if __POINTER_SIZE__ == 8
-            t = low32Bits(pLH) + low32Bits(pHL) + hi32Bits(pLL);
-            productLow = (t << 32) + low32Bits(pLL);
-            productHi = pHH + hi32Bits(t) + hi32Bits(pHL) + hi32Bits(pLH);
+	    t = low32Bits(pLH) + low32Bits(pHL) + hi32Bits(pLL);
+	    productLow = (t << 32) + low32Bits(pLL);
+	    productHi = pHH + hi32Bits(t) + hi32Bits(pHL) + hi32Bits(pLH);
 #    else
-            t = low16Bits(pLH) + low16Bits(pHL) + hi16Bits(pLL);
-            productLow = (t << 16) + low16Bits(pLL);
-            productHi = pHH + hi16Bits(t) + hi16Bits(pHL) + hi16Bits(pLH);
+	    t = low16Bits(pLH) + low16Bits(pHL) + hi16Bits(pLL);
+	    productLow = (t << 16) + low16Bits(pLL);
+	    productHi = pHH + hi16Bits(t) + hi16Bits(pHL) + hi16Bits(pLH);
 #    endif
-        }
+	}
 #   endif /* ! WIN32 */
 #  endif /* ! (__GNUC__ && __i386__) */
 # endif /* ! (__GNUC__ && __mc68k__) */
 
-        if (productHi == 0) {
-            if (negative < 0) {
-                if (productLow <= -(_MIN_INT)) {
-                    RETURN ( __mkSmallInteger(-((INT)productLow)) );
-                }
-            } else {
-                if (productLow <= _MAX_INT) {
-                    RETURN ( __mkSmallInteger(productLow) );
-                }
-            }
-        }
+	if (productHi == 0) {
+	    if (negative < 0) {
+		if (productLow <= -(_MIN_INT)) {
+		    RETURN ( __mkSmallInteger(-((INT)productLow)) );
+		}
+	    } else {
+		if (productLow <= _MAX_INT) {
+		    RETURN ( __mkSmallInteger(productLow) );
+		}
+	    }
+	}
 #endif /* ! USE_LONGLONG */
 
 #if __POINTER_SIZE__ == 8
-        RETURN (__MKLARGEINT128(negative, productLow, productHi));
+	RETURN (__MKLARGEINT128(negative, productLow, productHi));
 #else
-        RETURN (__MKLARGEINT64(negative, productLow, productHi));
+	RETURN (__MKLARGEINT64(negative, productLow, productHi));
 #endif
     } else if (__isFloatLike(aNumber)) {
-        OBJ newFloat;
-        double val = (double)__intVal(self) * __floatVal(aNumber);
-
-        __qMKFLOAT(newFloat, val);
-        RETURN ( newFloat );
+	OBJ newFloat;
+	double val = (double)__intVal(self) * __floatVal(aNumber);
+
+	__qMKFLOAT(newFloat, val);
+	RETURN ( newFloat );
     } else if (__isShortFloat(aNumber)) {
-        OBJ newFloat;
-        float val = (float)__intVal(self) * __shortFloatVal(aNumber);
-
-        __qMKSFLOAT(newFloat, val);
-        RETURN ( newFloat );
+	OBJ newFloat;
+	float val = (float)__intVal(self) * __shortFloatVal(aNumber);
+
+	__qMKSFLOAT(newFloat, val);
+	RETURN ( newFloat );
     }
 %}.
     ^ aNumber productFromInteger:self
@@ -545,7 +545,7 @@
      Be careful with negative results: 9 // 4 = 2,
      while -9 // 4 = -3.
      The following is always true:
-        (receiver // aNumber) * aNumber + (receiver \\ aNUmber) = receiver
+	(receiver // aNumber) * aNumber + (receiver \\ aNUmber) = receiver
      See #quo: which returns -2 in the latter."
 
 %{  /* NOCONTEXT */
@@ -563,59 +563,59 @@
     INT dividend, divisor, rslt;
 
     if (__isSmallInteger(aNumber)) {
-        divisor = __intVal(aNumber);
-        if (divisor != 0) {
-            dividend = __intVal(self);
-            rslt = dividend / divisor;
-            /*
-             * Optimized to speed up positive result
-             */
-            if (rslt <= 0) {
-                if (rslt == 0) {
-                    if ((dividend ^ divisor) < 0) {
-                        /*
-                         * result (negative) has been truncated toward 0.
-                         * Return -1, because we truncate toward negative inf.
-                         */
-                         rslt = -1;
-                    }
-                } else {
-                    /*
-                     * If result (negative) has been truncated toward 0,
-                     * subtract 1, because we truncate toward negative inf.
-                     */
-                    if (divisor > 0) {
-                        if (rslt * divisor > dividend) {
-                            rslt--;
-                        }
-                    } else {
-                        if (rslt * divisor < dividend) {
-                            rslt--;
-                        }
-                    }
-                }
-            }
-            RETURN ( __mkSmallInteger(rslt) );
-        }
+	divisor = __intVal(aNumber);
+	if (divisor != 0) {
+	    dividend = __intVal(self);
+	    rslt = dividend / divisor;
+	    /*
+	     * Optimized to speed up positive result
+	     */
+	    if (rslt <= 0) {
+		if (rslt == 0) {
+		    if ((dividend ^ divisor) < 0) {
+			/*
+			 * result (negative) has been truncated toward 0.
+			 * Return -1, because we truncate toward negative inf.
+			 */
+			 rslt = -1;
+		    }
+		} else {
+		    /*
+		     * If result (negative) has been truncated toward 0,
+		     * subtract 1, because we truncate toward negative inf.
+		     */
+		    if (divisor > 0) {
+			if (rslt * divisor > dividend) {
+			    rslt--;
+			}
+		    } else {
+			if (rslt * divisor < dividend) {
+			    rslt--;
+			}
+		    }
+		}
+	    }
+	    RETURN ( __mkSmallInteger(rslt) );
+	}
     } else {
-        if (__isFraction(aNumber)) {
-            OBJ t;
-            INT num, den;
-
-            t = __FractionInstPtr(aNumber)->f_numerator;
-            if (__isSmallInteger(t)) {
-                num = __intVal(t);
-                t = __FractionInstPtr(aNumber)->f_denominator;
-                if (__isSmallInteger(t)) {
-                    den = __intVal(t);
-                    RETURN ( __mkSmallInteger(__intVal(self) * den / num ));
-                }
-            }
-        }
+	if (__isFraction(aNumber)) {
+	    OBJ t;
+	    INT num, den;
+
+	    t = __FractionInstPtr(aNumber)->f_numerator;
+	    if (__isSmallInteger(t)) {
+		num = __intVal(t);
+		t = __FractionInstPtr(aNumber)->f_denominator;
+		if (__isSmallInteger(t)) {
+		    den = __intVal(t);
+		    RETURN ( __mkSmallInteger(__intVal(self) * den / num ));
+		}
+	    }
+	}
     }
 %}.
     (aNumber = 0) ifTrue:[
-        ^ ZeroDivide raiseRequestWith:thisContext.
+	^ ZeroDivide raiseRequestWith:thisContext.
     ].
     ^ aNumber integerQuotientFromInteger:self
 
@@ -644,7 +644,7 @@
      negative infinity. The remainder has the same sign as aNumber.
      m < |aNumber| AND there is an integer k with (k * aNumber + m) = self
      The following is always true:
-        (receiver // aNumber) * aNumber + (receiver \\ aNumber) = receiver
+	(receiver // aNumber) * aNumber + (receiver \\ aNumber) = receiver
      Compare with #rem:
 
      Redefined for speed."
@@ -664,32 +664,32 @@
     INT dividend, divisor, rem;
 
     if (__isSmallInteger(aNumber)
-        && (divisor = __intVal(aNumber)) != 0) {
-        /*
-         * Note that the sign of something modulo a negative number is undefined
-         * in C!
-         */
-        dividend = __intVal(self);
-        rem = dividend % divisor;
-        if (rem) {
-            if ((rem ^ divisor) < 0) {
-                /* sign of remainder is different from sign of divisor */
-                rem = -rem;
-            }
-            if ((dividend ^ divisor) < 0) {
-                /* different signs, so division would have returned a
-                 * negative number.
-                 * C rounds toward zero, this code will simulate
-                 * rounding towards negative infinity.
-                 */
-                rem = divisor - rem;
-            }
-        }
-        RETURN ( __mkSmallInteger(rem) );
+	&& (divisor = __intVal(aNumber)) != 0) {
+	/*
+	 * Note that the sign of something modulo a negative number is undefined
+	 * in C!
+	 */
+	dividend = __intVal(self);
+	rem = dividend % divisor;
+	if (rem) {
+	    if ((rem ^ divisor) < 0) {
+		/* sign of remainder is different from sign of divisor */
+		rem = -rem;
+	    }
+	    if ((dividend ^ divisor) < 0) {
+		/* different signs, so division would have returned a
+		 * negative number.
+		 * C rounds toward zero, this code will simulate
+		 * rounding towards negative infinity.
+		 */
+		rem = divisor - rem;
+	    }
+	}
+	RETURN ( __mkSmallInteger(rem) );
     }
 %}.
     (aNumber = 0) ifTrue:[
-        ^ ZeroDivide raiseRequestWith:thisContext.
+	^ ZeroDivide raiseRequestWith:thisContext.
     ].
     ^ aNumber moduloFromInteger:self
 
@@ -794,6 +794,7 @@
     "
 ! !
 
+
 !SmallInteger methodsFor:'bit operators'!
 
 bitAnd:anInteger
@@ -817,25 +818,25 @@
 bitAt:anIntegerIndex
     "return the value of the index's bit (index starts at 1) as 0 or 1.
      Notice: the result of bitAt: on negative receivers is not
-             defined in the language standard (since the implementation
-             is free to choose any internal representation for integers)"
+	     defined in the language standard (since the implementation
+	     is free to choose any internal representation for integers)"
 
 %{  /* NOCONTEXT */
 
     if (__isSmallInteger(anIntegerIndex)) {
-        INT idx = __smallIntegerVal(anIntegerIndex);
-        if (idx > 0) {
-            if (idx > N_INT_BITS) {
-                RETURN(__mkSmallInteger(0));
-            }
-            RETURN((__smallIntegerVal(self) & (1 << (idx-1))) ? __mkSmallInteger(1) : __mkSmallInteger(0));
-        }
+	INT idx = __smallIntegerVal(anIntegerIndex);
+	if (idx > 0) {
+	    if (idx > N_INT_BITS) {
+		RETURN(__mkSmallInteger(0));
+	    }
+	    RETURN((__smallIntegerVal(self) & (1 << (idx-1))) ? __mkSmallInteger(1) : __mkSmallInteger(0));
+	}
     }
 %}.
 
     ^ SubscriptOutOfBoundsSignal
-            raiseRequestWith:anIntegerIndex
-            errorString:'index out of bounds'
+	    raiseRequestWith:anIntegerIndex
+	    errorString:'index out of bounds'
 
     "
      16r00000001 bitAt:0
@@ -855,9 +856,9 @@
     |mask|
 
     anIntegerIndex <= 0 ifTrue:[
-        ^ SubscriptOutOfBoundsSignal
-                raiseRequestWith:anIntegerIndex
-                errorString:'index out of bounds'
+	^ SubscriptOutOfBoundsSignal
+		raiseRequestWith:anIntegerIndex
+		errorString:'index out of bounds'
     ].
     (anIntegerIndex > SmallInteger maxBits) ifTrue:[^ 0].
     mask := 1 bitShift:(anIntegerIndex - 1).
@@ -899,8 +900,8 @@
 
     _cnt = 0;
     while (_self) {
-        _cnt++;
-        _self = _self & (_self - 1);
+	_cnt++;
+	_self = _self & (_self - 1);
     }
 #else
 # ifdef ALGORITHM_2
@@ -910,8 +911,8 @@
 
     _cnt = 0;
     while (_self) {
-        _cnt += table[ _self & 0x0F ];
-        _self >>= 4;
+	_cnt += table[ _self & 0x0F ];
+	_self >>= 4;
     }
 # else
 #  ifdef ALGORIHTM_3
@@ -947,25 +948,25 @@
 
     "
      1 to:1000000 do:[:n |
-        self assert:(n bitCount = ((n printStringRadix:2) occurrencesOf:$1))
+	self assert:(n bitCount = ((n printStringRadix:2) occurrencesOf:$1))
      ].
 
-     #( 
-        16r00010000 16r00100000 16r01000000 16r10000000
-        16r00020000 16r00200000 16r02000000 16r20000000
-        16r00040000 16r00400000 16r04000000 16r40000000
-        16r00080000 16r00800000 16r08000000 16r80000000
-
-        16rFFFFFFFF 16r7FFFFFFF 16r3FFFFFFF 16r1FFFFFFF
-        16rEEEEEEEE 16r7EEEEEEE 16r3EEEEEEE 16r1EEEEEEE
-        16rDDDDDDDD 16r7DDDDDDD 16r3DDDDDDD 16r1DDDDDDD
-        16rCCCCCCCC 16r7CCCCCCC 16r3CCCCCCC 16r1CCCCCCC
+     #(
+	16r00010000 16r00100000 16r01000000 16r10000000
+	16r00020000 16r00200000 16r02000000 16r20000000
+	16r00040000 16r00400000 16r04000000 16r40000000
+	16r00080000 16r00800000 16r08000000 16r80000000
+
+	16rFFFFFFFF 16r7FFFFFFF 16r3FFFFFFF 16r1FFFFFFF
+	16rEEEEEEEE 16r7EEEEEEE 16r3EEEEEEE 16r1EEEEEEE
+	16rDDDDDDDD 16r7DDDDDDD 16r3DDDDDDD 16r1DDDDDDD
+	16rCCCCCCCC 16r7CCCCCCC 16r3CCCCCCC 16r1CCCCCCC
      ) do:[:n |
-        self assert:(n bitCount = ((n printStringRadix:2) occurrencesOf:$1))
+	self assert:(n bitCount = ((n printStringRadix:2) occurrencesOf:$1))
      ]
 
      1 to:10000000 do:[:n |
-        (n bitCount)
+	(n bitCount)
      ]
     "
 
@@ -1090,22 +1091,22 @@
 
     /* and all bits except tag */
     if (__isSmallInteger(aMask)) {
-        RETURN ( ((INT)self & ((INT)aMask & ~TAG_MASK)) ? true : false );
+	RETURN ( ((INT)self & ((INT)aMask & ~TAG_MASK)) ? true : false );
     }
 %}.
     aMask class == LargeInteger ifTrue:[
-        ^ (aMask bitAnd:self) ~~ 0
+	^ (aMask bitAnd:self) ~~ 0
     ].
     ^ self retry:#bitTest: coercing:aMask
 
     "
-     2r10001 bitTest:2r00001  
-     2r10001 bitTest:2r00010  
-     2r10001 bitTest:2r00100  
-     2r10001 bitTest:2r01000  
-     2r10001 bitTest:2r10000  
-     2r10001 bitTest:2r10001  
-     2r10001 bitTest:2r10010  
+     2r10001 bitTest:2r00001
+     2r10001 bitTest:2r00010
+     2r10001 bitTest:2r00100
+     2r10001 bitTest:2r01000
+     2r10001 bitTest:2r10000
+     2r10001 bitTest:2r10001
+     2r10001 bitTest:2r10010
     "
 !
 
@@ -1180,10 +1181,10 @@
 
     bits = __intVal(self);
     if (bits == 0) {
-        RETURN ( __mkSmallInteger(0) );
+	RETURN ( __mkSmallInteger(0) );
     }
 
-#ifdef __BSR              
+#ifdef __BSR
     /*
      * so much for CISC CPUS:
      * the following code is not faster on a PIII-400
@@ -1196,23 +1197,23 @@
 
 # if __POINTER_SIZE__ == 8
     if (bits & 0xFFFFFFFF00000000L) {
-        index += 32; bits = bits >> 32;
+	index += 32; bits = bits >> 32;
     }
 # endif
     if (bits & 0xFFFF0000L) {
-        index += 16; bits = bits >> 16;
+	index += 16; bits = bits >> 16;
     }
     if (bits & 0xFF00) {
-        index += 8; bits = bits >> 8;
+	index += 8; bits = bits >> 8;
     }
     if (bits & 0xF0) {
-        index += 4; bits = bits >> 4;
+	index += 4; bits = bits >> 4;
     }
     if (bits & 0xC) {
-        index += 2; bits = bits >> 2;
+	index += 2; bits = bits >> 2;
     }
     if (bits & 0x2) {
-        index += 1; bits = bits >> 1;
+	index += 1; bits = bits >> 1;
     }
 #endif /* no BSR instruction */
 
@@ -1227,38 +1228,38 @@
      2r100000000000 highBit
 
      ((0 to:64) collect:[:s | 1 bitShift:s])
-        collect:[:n | n highBit]
+	collect:[:n | n highBit]
 
      (((0 to:64) collect:[:s | 1 bitShift:s])
-        collect:[:n | n highBit]) = (1 to:65)
+	collect:[:n | n highBit]) = (1 to:65)
     "
 
     "
      Time millisecondsToRun:[
-        1000000 timesRepeat:[
-            2r1 highBit
-        ]
+	1000000 timesRepeat:[
+	    2r1 highBit
+	]
      ]
     "
     "
      Time millisecondsToRun:[
-        1000000 timesRepeat:[
-            2r1111 highBit
-        ]
+	1000000 timesRepeat:[
+	    2r1111 highBit
+	]
      ]
     "
     "
      Time millisecondsToRun:[
-        1000000 timesRepeat:[
-            2r11111111111111 highBit
-        ]
+	1000000 timesRepeat:[
+	    2r11111111111111 highBit
+	]
      ]
     "
     "
      Time millisecondsToRun:[
-        1000000 timesRepeat:[
-            2r11111111111111111111111111 highBit
-        ]
+	1000000 timesRepeat:[
+	    2r11111111111111111111111111 highBit
+	]
      ]
     "
 
@@ -1412,83 +1413,83 @@
     "return the value of the receiver shifted by shiftCount bits;
      right shift if shiftCount > 0; left shift  otherwise.
      Notice: the result of bitShift: on negative receivers is not
-             defined in the language standard (since the implementation
-             is free to choose any internal representation for integers).
-             However, ST/X preserves the sign."
+	     defined in the language standard (since the implementation
+	     is free to choose any internal representation for integers).
+	     However, ST/X preserves the sign."
 
 %{  /* NOCONTEXT */
 
     INT bits, count;
 
     if (__isSmallInteger(shiftCount)) {
-        bits = __intVal(self);
-        if (bits == 0) {
-            RETURN (self);
-        }
-
-        count = __intVal(shiftCount);
-
-        if (count < 0) {
-            /*
-             * a left shift
-             */
-            count = -count;
+	bits = __intVal(self);
+	if (bits == 0) {
+	    RETURN (self);
+	}
+
+	count = __intVal(shiftCount);
+
+	if (count < 0) {
+	    /*
+	     * a left shift
+	     */
+	    count = -count;
 #if defined(USE_LONGLONG_FOR_SHIFT)
-            if (count <= N_INT_BITS) {
-                unsigned LONGLONG result;
-
-                result = (unsigned LONGLONG)bits;
-                result <<= count;
-                if (result <= _MAX_INT) {
-                    RETURN ( __mkSmallInteger(result) );
-                }
-                {
-                    RETURN (__MKLARGEINT64(1, (INT)(result >> 32), (INT)(result & 0xFFFFFFFF)));
-                }
-            }
+	    if (count <= N_INT_BITS) {
+		unsigned LONGLONG result;
+
+		result = (unsigned LONGLONG)bits;
+		result <<= count;
+		if (result <= _MAX_INT) {
+		    RETURN ( __mkSmallInteger(result) );
+		}
+		{
+		    RETURN (__MKLARGEINT64(1, (INT)(result >> 32), (INT)(result & 0xFFFFFFFF)));
+		}
+	    }
 #else
-            /*
-             * check for overflow
-             */
-            if (count < (N_INT_BITS-1)) {
-                if (! (bits >> (N_INT_BITS - 1 - count))) {
-                    RETURN ( __mkSmallInteger(bits << count) );
-                }
-                /*
-                 * so, there is an overflow ...
-                 * handle it as largeInteger
-                 */
-                /* FALL THROUGH */
-            }
+	    /*
+	     * check for overflow
+	     */
+	    if (count < (N_INT_BITS-1)) {
+		if (! (bits >> (N_INT_BITS - 1 - count))) {
+		    RETURN ( __mkSmallInteger(bits << count) );
+		}
+		/*
+		 * so, there is an overflow ...
+		 * handle it as largeInteger
+		 */
+		/* FALL THROUGH */
+	    }
 #endif
-        } else {
-            if (count == 0) {
-                RETURN (self);
-            }
-
-            /*
-             * right shifts cannot overflow
-             *
-             * some machines ignore shifts bigger than
-             * the number of bits in an int ...
-             */
-            if (count > (N_INT_BITS-1)) {
-                RETURN (__mkSmallInteger(0));
-            }
-
-            RETURN ( __mkSmallInteger(bits >> count) );
-        }
+	} else {
+	    if (count == 0) {
+		RETURN (self);
+	    }
+
+	    /*
+	     * right shifts cannot overflow
+	     *
+	     * some machines ignore shifts bigger than
+	     * the number of bits in an int ...
+	     */
+	    if (count > (N_INT_BITS-1)) {
+		RETURN (__mkSmallInteger(0));
+	    }
+
+	    RETURN ( __mkSmallInteger(bits >> count) );
+	}
     }
 %}.
     (shiftCount isMemberOf:SmallInteger) ifTrue:[
-        ^ (LargeInteger value:self) rightShift:shiftCount
+	^ (LargeInteger value:self) rightShift:shiftCount
     ].
     ^ self rightShift:(1 coerce:shiftCount)   "/ is this a good idea ?
 
 
     "
-        16 rightShift:2
-         4 rightShift:-2
+	16 rightShift:2
+	 4 rightShift:-2
     "
 !
 
@@ -1593,19 +1594,19 @@
     int count;
 
     if (__isSmallInteger(shiftCount)) {
-        count = __intVal(shiftCount);
-        count = count % 32;
-
-        bits = __intVal(self);
-        if (count > 0) {
-            bits = (bits << count) | (bits >> (32-count));
-        } else {
-            bits = (bits >> (-count)) | (bits << (32-(-count)));
-        }
+	count = __intVal(shiftCount);
+	count = count % 32;
+
+	bits = __intVal(self);
+	if (count > 0) {
+	    bits = (bits << count) | (bits >> (32-count));
+	} else {
+	    bits = (bits >> (-count)) | (bits << (32-(-count)));
+	}
 #if __POINTER_SIZE__ == 8
-        bits &= 0xFFFFFFFFL;
+	bits &= 0xFFFFFFFFL;
 #endif
-        RETURN (__MKUINT(bits));
+	RETURN (__MKUINT(bits));
     }
 %}.
     ^ self primitiveFailed
@@ -1613,15 +1614,15 @@
     "
      128 rotate32:1
 
-     1 rotate32:1   
-     1 rotate32:2   
+     1 rotate32:1
+     1 rotate32:2
      1 rotate32:31
      1 rotate32:32
 
-     1 rotate32:-1   
-     1 rotate32:-2   
-     1 rotate32:-3   
-     1 rotate32:-32   
+     1 rotate32:-1
+     1 rotate32:-2
+     1 rotate32:-3
+     1 rotate32:-32
     "
 !
 
@@ -1741,23 +1742,23 @@
 %{  /* NOCONTEXT */
 
 #if __POINTER_SIZE__ == 4
-    unsigned int v = __intVal(self);  
-    unsigned int swapped;  
+    unsigned int v = __intVal(self);
+    unsigned int swapped;
 
 # ifdef __BORLANDC__
 #  ifdef USE_BSWAP
     _asm {
-        mov eax, v 
-        bswap eax
-        mov swapped, eax 
+	mov eax, v
+	bswap eax
+	mov swapped, eax
     };
 #  else
     _asm {
-        mov eax, v 
-        xchg al, ah
-        rol eax, 16
-        xchg al, ah
-        mov swapped, eax 
+	mov eax, v
+	xchg al, ah
+	rol eax, 16
+	xchg al, ah
+	mov swapped, eax
     };
 #  endif
 # else
@@ -1769,8 +1770,8 @@
     ^ super byteSwapped
 
     "
-     16r11223344 byteSwapped hexPrintString  
-     16r44332211 byteSwapped hexPrintString 
+     16r11223344 byteSwapped hexPrintString
+     16r44332211 byteSwapped hexPrintString
     "
 
     "Created: / 09-01-2012 / 23:01:33 / cg"
@@ -1926,83 +1927,83 @@
      overhead of producing any intermediate byte-arrays (and the scanning)
     "
     self == 0 ifTrue: [
-        ^ ByteArray with:0.
+	^ ByteArray with:0.
     ].
 
     self < 0 ifTrue: [
-        absValue := self negated
+	absValue := self negated
     ] ifFalse: [
-        absValue := self.
+	absValue := self.
     ].
 
     b1 := absValue bitAnd:16rFF.
     absValue := absValue bitShift:-8.
     absValue == 0 ifTrue:[
-        digitByteArray := ByteArray with:b1
+	digitByteArray := ByteArray with:b1
     ] ifFalse:[
-        b2 := absValue bitAnd:16rFF.
-        absValue := absValue bitShift:-8.
-        absValue == 0 ifTrue:[
-            digitByteArray := ByteArray with:b1 with:b2
-        ] ifFalse:[
-            b3 := absValue bitAnd:16rFF.
-            absValue := absValue bitShift:-8.
-            absValue == 0 ifTrue:[
-                digitByteArray := ByteArray with:b1 with:b2 with:b3
-            ] ifFalse:[
-                b4 := absValue bitAnd:16rFF.
-                absValue := absValue bitShift:-8.
-                absValue == 0 ifTrue:[
-                    digitByteArray := ByteArray with:b1 with:b2 with:b3 with:b4
-                ] ifFalse:[
-                    b5 := absValue bitAnd:16rFF.
-                    absValue := absValue bitShift:-8.
-                    absValue == 0 ifTrue:[
-                        digitByteArray := ByteArray new:5.
-                        digitByteArray at:1 put:b1.
-                        digitByteArray at:2 put:b2.
-                        digitByteArray at:3 put:b3.
-                        digitByteArray at:4 put:b4.
-                        digitByteArray at:5 put:b5.
-                    ] ifFalse:[
-                        b6 := absValue bitAnd:16rFF.
-                        absValue := absValue bitShift:-8.
-                        absValue == 0 ifTrue:[
-                            digitByteArray := ByteArray new:6.
-                            digitByteArray at:1 put:b1.
-                            digitByteArray at:2 put:b2.
-                            digitByteArray at:3 put:b3.
-                            digitByteArray at:4 put:b4.
-                            digitByteArray at:5 put:b5.
-                            digitByteArray at:6 put:b6.
-                        ] ifFalse:[
-                            b7 := absValue bitAnd:16rFF.
-                            absValue := absValue bitShift:-8.
-                            absValue == 0 ifTrue:[
-                                digitByteArray := ByteArray new:7.
-                                digitByteArray at:1 put:b1.
-                                digitByteArray at:2 put:b2.
-                                digitByteArray at:3 put:b3.
-                                digitByteArray at:4 put:b4.
-                                digitByteArray at:5 put:b5.
-                                digitByteArray at:6 put:b6.
-                                digitByteArray at:7 put:b7.
-                            ] ifFalse:[
-                                digitByteArray := ByteArray new:8.
-                                digitByteArray at:1 put:b1.
-                                digitByteArray at:2 put:b2.
-                                digitByteArray at:3 put:b3.
-                                digitByteArray at:4 put:b4.
-                                digitByteArray at:5 put:b5.
-                                digitByteArray at:6 put:b6.
-                                digitByteArray at:7 put:b7.
-                                digitByteArray at:8 put:absValue.
-                            ]
-                        ]
-                    ]
-                ]
-            ]
-        ]
+	b2 := absValue bitAnd:16rFF.
+	absValue := absValue bitShift:-8.
+	absValue == 0 ifTrue:[
+	    digitByteArray := ByteArray with:b1 with:b2
+	] ifFalse:[
+	    b3 := absValue bitAnd:16rFF.
+	    absValue := absValue bitShift:-8.
+	    absValue == 0 ifTrue:[
+		digitByteArray := ByteArray with:b1 with:b2 with:b3
+	    ] ifFalse:[
+		b4 := absValue bitAnd:16rFF.
+		absValue := absValue bitShift:-8.
+		absValue == 0 ifTrue:[
+		    digitByteArray := ByteArray with:b1 with:b2 with:b3 with:b4
+		] ifFalse:[
+		    b5 := absValue bitAnd:16rFF.
+		    absValue := absValue bitShift:-8.
+		    absValue == 0 ifTrue:[
+			digitByteArray := ByteArray new:5.
+			digitByteArray at:1 put:b1.
+			digitByteArray at:2 put:b2.
+			digitByteArray at:3 put:b3.
+			digitByteArray at:4 put:b4.
+			digitByteArray at:5 put:b5.
+		    ] ifFalse:[
+			b6 := absValue bitAnd:16rFF.
+			absValue := absValue bitShift:-8.
+			absValue == 0 ifTrue:[
+			    digitByteArray := ByteArray new:6.
+			    digitByteArray at:1 put:b1.
+			    digitByteArray at:2 put:b2.
+			    digitByteArray at:3 put:b3.
+			    digitByteArray at:4 put:b4.
+			    digitByteArray at:5 put:b5.
+			    digitByteArray at:6 put:b6.
+			] ifFalse:[
+			    b7 := absValue bitAnd:16rFF.
+			    absValue := absValue bitShift:-8.
+			    absValue == 0 ifTrue:[
+				digitByteArray := ByteArray new:7.
+				digitByteArray at:1 put:b1.
+				digitByteArray at:2 put:b2.
+				digitByteArray at:3 put:b3.
+				digitByteArray at:4 put:b4.
+				digitByteArray at:5 put:b5.
+				digitByteArray at:6 put:b6.
+				digitByteArray at:7 put:b7.
+			    ] ifFalse:[
+				digitByteArray := ByteArray new:8.
+				digitByteArray at:1 put:b1.
+				digitByteArray at:2 put:b2.
+				digitByteArray at:3 put:b3.
+				digitByteArray at:4 put:b4.
+				digitByteArray at:5 put:b5.
+				digitByteArray at:6 put:b6.
+				digitByteArray at:7 put:b7.
+				digitByteArray at:8 put:absValue.
+			    ]
+			]
+		    ]
+		]
+	    ]
+	]
     ].
 
     ^ digitByteArray
@@ -2021,7 +2022,7 @@
      otherwise least significant byte is first"
 
     msbFlag ifTrue:[
-        ^ self digitBytes reversed.  "digitBytes has been just created - reverse inplace"
+	^ self digitBytes reversed.  "digitBytes has been just created - reverse inplace"
     ].
     ^ self digitBytes
 
@@ -2103,8 +2104,8 @@
 %{  /* NOCONTEXT */
 
 #if __POINTER_SIZE__ == 4
-    unsigned int v = __intVal(self);  
-    unsigned int swapped;  
+    unsigned int v = __intVal(self);
+    unsigned int swapped;
 
     swapped = ((v&0xFF000000)>>8) | ((v&0xFF0000) << 8) | ((v & 0xFF00)>>8) | ((v & 0xFF)<<8);
     RETURN (__MKUINT(swapped));
@@ -2113,8 +2114,8 @@
     ^ super swapBytes
 
     "
-     16r11223344 swapBytes hexPrintString  
-     16r44332211 swapBytes hexPrintString 
+     16r11223344 swapBytes hexPrintString
+     16r44332211 swapBytes hexPrintString
     "
 
     "Created: / 09-01-2012 / 23:01:33 / cg"
@@ -2126,7 +2127,7 @@
     "catch indexed access - report an error
      defined here since basicAt: in Object ommits the SmallInteger check."
 
-    self notIndexed
+    ^ self notIndexed
 !
 
 basicAt:index put:anObject
@@ -2221,9 +2222,9 @@
     INT i = __intVal(self);
 
     if (i & 0x800000) {
-        i = i | ~0xFFFFFFL;
+	i = i | ~0xFFFFFFL;
     } else {
-        i = i & 0x7FFFFF;
+	i = i & 0x7FFFFF;
     }
 
     RETURN (__mkSmallInteger(i));
@@ -2245,9 +2246,9 @@
     INT i = __intVal(self);
 
     if (i & 0x80) {
-        i = i | ~0xFFL;
+	i = i | ~0xFFL;
     } else {
-        i = i & 0x7F;
+	i = i & 0x7F;
     }
 
     RETURN (__mkSmallInteger(i));
@@ -2255,9 +2256,9 @@
     ^ self primitiveFailed
 
     "
-     16rFF signExtendedByteValue 
-     16r80 signExtendedByteValue 
-     16r7F signExtendedByteValue 
+     16rFF signExtendedByteValue
+     16r80 signExtendedByteValue
+     16r7F signExtendedByteValue
     "
 !
 
@@ -2269,9 +2270,9 @@
     INT i = __intVal(self);
 
     if (i & 0x8000) {
-        i = i | ~0xFFFFL;
+	i = i | ~0xFFFFL;
     } else {
-        i = i & 0x7FFF;
+	i = i & 0x7FFF;
     }
 
     RETURN (__mkSmallInteger(i));
@@ -2279,9 +2280,9 @@
     ^ self primitiveFailed
 
     "
-     16rFFFF signExtendedShortValue 
-     16r8000 signExtendedShortValue 
-     16r7FFF signExtendedShortValue 
+     16rFFFF signExtendedShortValue
+     16r8000 signExtendedShortValue
+     16r7FFF signExtendedShortValue
     "
 ! !
 
@@ -3357,33 +3358,33 @@
      (i.e. without log)."
 
     self <= 0 ifTrue:[
-        ^ self class
-            raise:#domainErrorSignal
-            receiver:self
-            selector:#intlog10
-            arguments:#()
-            errorString:'logarithm of negative integer'
+	^ self class
+	    raise:#domainErrorSignal
+	    receiver:self
+	    selector:#intlog10
+	    arguments:#()
+	    errorString:'logarithm of negative integer'
     ].
     self < 10000 ifTrue:[
-        self < 10 ifTrue:[^ 0].
-        self < 100 ifTrue:[^ 1].
-        self < 1000 ifTrue:[^ 2].
-        ^ 3
+	self < 10 ifTrue:[^ 0].
+	self < 100 ifTrue:[^ 1].
+	self < 1000 ifTrue:[^ 2].
+	^ 3
     ].
     self < 100000000 ifTrue:[
-        self < 100000 ifTrue:[^ 4].
-        self < 1000000 ifTrue:[^ 5].
-        self < 10000000 ifTrue:[^ 6].
-        ^ 7
+	self < 100000 ifTrue:[^ 4].
+	self < 1000000 ifTrue:[^ 5].
+	self < 10000000 ifTrue:[^ 6].
+	^ 7
     ].
     self < 1000000000 ifTrue:[^ 8].
     ^ 9
 
     "
       99 intlog10
-      100 intlog10 
-      101 intlog10        
-      (101 log:10) floor  
+      100 intlog10
+      101 intlog10
+      (101 log:10) floor
       120 intlog10
       -1 intlog10
     "
@@ -3410,7 +3411,7 @@
 
     "
      16r7FFFFFFF + 1          2147483648
-     16r7FFFFFFF plus32: 1    
+     16r7FFFFFFF plus32: 1
     "
 !
 
@@ -3513,127 +3514,127 @@
 #endif
 
     if (__isSmallInteger(aNumber)) {
-        myValue = __intVal(self);
-        otherValue = __intVal(aNumber);
+	myValue = __intVal(self);
+	otherValue = __intVal(aNumber);
 
 #if defined(USE_LONGLONG_FOR_MUL)
-        {
+	{
 # if defined(__alpha__) && !defined(__alpha64__)
 #  define LONGLONG      INT64
 # else
 #  define LONGLONG      long long
 # endif
-            LONGLONG product;
-
-            product = (LONGLONG)myValue * (LONGLONG)otherValue;
-            if (product < 0) {
-                RETURN ( __mkSmallInteger(-(INT)(-product & _MAX_INT)));
-            }
-            RETURN ( __mkSmallInteger((INT)(product & _MAX_INT)));
-        }
+	    LONGLONG product;
+
+	    product = (LONGLONG)myValue * (LONGLONG)otherValue;
+	    if (product < 0) {
+		RETURN ( __mkSmallInteger(-(INT)(-product & _MAX_INT)));
+	    }
+	    RETURN ( __mkSmallInteger((INT)(product & _MAX_INT)));
+	}
 #else /* no long-long */
-        negative = 1;
-        if (myValue < 0) {
-            negative = -1;
-            myValue = -myValue;
-        }
-        if (otherValue < 0) {
-            negative = -negative;
-            otherValue = -otherValue;
-        }
+	negative = 1;
+	if (myValue < 0) {
+	    negative = -1;
+	    myValue = -myValue;
+	}
+	if (otherValue < 0) {
+	    negative = -negative;
+	    otherValue = -otherValue;
+	}
 
 # if defined(__GNUC__) && defined(__mc68k__)
-        asm ("mulu%.l %3,%1:%0"
-                : "=d"  ((unsigned long)(productLow)),
-                  "=d"  ((unsigned long)(productHi))
-                : "%0"  ((unsigned long)(myValue)),
-                  "dmi" ((unsigned long)(otherValue)));
+	asm ("mulu%.l %3,%1:%0"
+		: "=d"  ((unsigned long)(productLow)),
+		  "=d"  ((unsigned long)(productHi))
+		: "%0"  ((unsigned long)(myValue)),
+		  "dmi" ((unsigned long)(otherValue)));
 # else
 #  if defined (__GNUC__) && defined(__i386__)
-        asm ("mull %3"
-                : "=a"  ((unsigned long)(productLow)),
-                  "=d"  ((unsigned long)(productHi))
-                : "%0"  ((unsigned long)(myValue)),
-                  "rm"  ((unsigned long)(otherValue)));
+	asm ("mull %3"
+		: "=a"  ((unsigned long)(productLow)),
+		  "=d"  ((unsigned long)(productHi))
+		: "%0"  ((unsigned long)(myValue)),
+		  "rm"  ((unsigned long)(otherValue)));
 #  else
 #   if defined(WIN32) && defined(__BORLANDC__)
-        asm {
-            mov   eax, myValue
-            mov   edx, otherValue
-            mul   edx
-            mov   productLow, eax
-            mov   productHi, edx
-        }
+	asm {
+	    mov   eax, myValue
+	    mov   edx, otherValue
+	    mul   edx
+	    mov   productLow, eax
+	    mov   productHi, edx
+	}
 #   else /* generic */
-        {
-            unsigned INT pHH, pHL, pLH, pLL;
-            unsigned INT low1, low2, hi1, hi2;
-            unsigned INT t;
-
-            /* unsigned multiply myValue * otherValue -> productHi, productLow
-             *
-             * this is too slow:
-             * since most machines can do 32*32 to 64 bit multiply,
-             * (or at least 32*32 with Overflow check)
-             * - need more assembler (inline) functions here
-             */
+	{
+	    unsigned INT pHH, pHL, pLH, pLL;
+	    unsigned INT low1, low2, hi1, hi2;
+	    unsigned INT t;
+
+	    /* unsigned multiply myValue * otherValue -> productHi, productLow
+	     *
+	     * this is too slow:
+	     * since most machines can do 32*32 to 64 bit multiply,
+	     * (or at least 32*32 with Overflow check)
+	     * - need more assembler (inline) functions here
+	     */
 #    if __POINTER_SIZE__ == 8
-            low1 = low32Bits((unsigned INT)myValue);
-            hi1 = hi32Bits((unsigned INT)myValue);
-            low2 = low32Bits((unsigned INT)otherValue);
-            hi2 = hi32Bits((unsigned INT)otherValue);
+	    low1 = low32Bits((unsigned INT)myValue);
+	    hi1 = hi32Bits((unsigned INT)myValue);
+	    low2 = low32Bits((unsigned INT)otherValue);
+	    hi2 = hi32Bits((unsigned INT)otherValue);
 #     define LLMASK 0xC000000000000000L
 #    else
-            low1 = low16Bits((unsigned INT)myValue);
-            hi1 = hi16Bits((unsigned INT)myValue);
-            low2 = low16Bits((unsigned INT)otherValue);
-            hi2 = hi16Bits((unsigned INT)otherValue);
+	    low1 = low16Bits((unsigned INT)myValue);
+	    hi1 = hi16Bits((unsigned INT)myValue);
+	    low2 = low16Bits((unsigned INT)otherValue);
+	    hi2 = hi16Bits((unsigned INT)otherValue);
 #     define LLMASK 0xC0000000
 #    endif
 
-            pLH = low1 * hi2;
-            pHL = hi1 * low2;
-            pLL = low1 * low2;
-            pHH = hi1 * hi2;
-
-            /*
-             * the common case ...
-             */
-            if ((pHL == 0)
-             && (pLH == 0)
-             && (pHH == 0)
-             && ((pLL & LLMASK) == 0)) {
-                if (negative < 0) {
-                    RETURN ( __mkSmallInteger(- ((INT)pLL)) );
-                }
-                RETURN ( __mkSmallInteger((INT)pLL) );
-            }
-
-            /*
-             *   pHH |--------|--------|
-             *   pLH          |--------|--------|
-             *   pHL          |--------|--------|
-             *   pLL                   |--------|--------|
-             */
+	    pLH = low1 * hi2;
+	    pHL = hi1 * low2;
+	    pLL = low1 * low2;
+	    pHH = hi1 * hi2;
+
+	    /*
+	     * the common case ...
+	     */
+	    if ((pHL == 0)
+	     && (pLH == 0)
+	     && (pHH == 0)
+	     && ((pLL & LLMASK) == 0)) {
+		if (negative < 0) {
+		    RETURN ( __mkSmallInteger(- ((INT)pLL)) );
+		}
+		RETURN ( __mkSmallInteger((INT)pLL) );
+	    }
+
+	    /*
+	     *   pHH |--------|--------|
+	     *   pLH          |--------|--------|
+	     *   pHL          |--------|--------|
+	     *   pLL                   |--------|--------|
+	     */
 
 #    if __POINTER_SIZE__ == 8
-            t = low32Bits(pLH) + low32Bits(pHL) + hi32Bits(pLL);
-            productLow = (t << 32) + low32Bits(pLL);
-            productHi = pHH + hi32Bits(t) + hi32Bits(pHL) + hi32Bits(pLH);
+	    t = low32Bits(pLH) + low32Bits(pHL) + hi32Bits(pLL);
+	    productLow = (t << 32) + low32Bits(pLL);
+	    productHi = pHH + hi32Bits(t) + hi32Bits(pHL) + hi32Bits(pLH);
 #    else
-            t = low16Bits(pLH) + low16Bits(pHL) + hi16Bits(pLL);
-            productLow = (t << 16) + low16Bits(pLL);
-            productHi = pHH + hi16Bits(t) + hi16Bits(pHL) + hi16Bits(pLH);
+	    t = low16Bits(pLH) + low16Bits(pHL) + hi16Bits(pLL);
+	    productLow = (t << 16) + low16Bits(pLL);
+	    productHi = pHH + hi16Bits(t) + hi16Bits(pHL) + hi16Bits(pLH);
 #    endif
-        }
+	}
 #   endif /* ! WIN32 */
 #  endif /* ! (__GNUC__ && __i386__) */
 # endif /* ! (__GNUC__ && __mc68k__) */
 
-        if (negative < 0) {
-            RETURN ( __mkSmallInteger(-(INT)(productLow & _MAX_INT)));
-        }
-        RETURN ( __mkSmallInteger((INT)(productLow & _MAX_INT)));
+	if (negative < 0) {
+	    RETURN ( __mkSmallInteger(-(INT)(productLow & _MAX_INT)));
+	}
+	RETURN ( __mkSmallInteger((INT)(productLow & _MAX_INT)));
 #endif /* ! USE_LONGLONG */
     }
 %}.
@@ -3641,11 +3642,11 @@
     self primitiveFailed
 
     "
-        5 times:-1
-        5 times:1
-        self maxVal-1 times:2
-        self maxVal-1 times:-2
-        self maxVal-1 * 2  bitAnd:16r3fffffff
+	5 times:-1
+	5 times:1
+	self maxVal-1 times:2
+	self maxVal-1 times:-2
+	self maxVal-1 * 2  bitAnd:16r3fffffff
     "
 ! !
 
@@ -3663,14 +3664,14 @@
      The base argument should be between 2 and 36."
 
     showRadix ifTrue:[
-        base printOn:aStream.
-        aStream nextPut:$r.
+	base printOn:aStream.
+	aStream nextPut:$r.
     ].
 
-    (base isInteger and:[ base between:2 and:36 ]) ifTrue:[ 
-        aStream nextPutAll:(self printStringRadix:base)
+    (base isInteger and:[ base between:2 and:36 ]) ifTrue:[
+	aStream nextPutAll:(self printStringRadix:base)
     ] ifFalse:[
-        super printOn:aStream base:base showRadix:false.
+	super printOn:aStream base:base showRadix:false.
     ].
 
     "Created: / 07-09-2001 / 13:54:40 / cg"
@@ -3695,7 +3696,7 @@
 
     myValue = __intVal(self);
     if (myValue == 0) {
-        RETURN (__MKSTRING_L("0", 1));
+	RETURN (__MKSTRING_L("0", 1));
     }
 #ifdef SLOW_CODE
     /*
@@ -3709,32 +3710,32 @@
      * manually save it here - very stupid ...
      */
     __BEGIN_PROTECT_REGISTERS__
-    len = snprintf(buffer, sizeof(buffer), "%ld", (long)myValue);
+    len = snprintf(buffer, sizeof(buffer), "%"_ld_"", (long)myValue);
     __END_PROTECT_REGISTERS__
 
     if (len >= 0 && len <= sizeof(buffer)) {
-        newString = __MKSTRING_L(buffer, len);
+	newString = __MKSTRING_L(buffer, len);
     }
 
 #else
     if (myValue < 0) {
-        negative = 1;
-        myValue = -myValue;
+	negative = 1;
+	myValue = -myValue;
     }
     cp = buffer + sizeof(buffer) - 1;
     *cp-- = '\0';
     while (myValue != 0) {
-        *cp = '0' + (myValue % 10);
-        myValue = myValue / 10;
-        cp--;
+	*cp = '0' + (myValue % 10);
+	myValue = myValue / 10;
+	cp--;
     }
     if (negative) {
-        *cp-- = '-';
+	*cp-- = '-';
     }
     newString = __MKSTRING_L(cp+1, (buffer + sizeof(buffer) - 2 - cp));
 #endif
     if (newString != nil) {
-        RETURN (newString);
+	RETURN (newString);
     }
 %}.
     "/ only arrive here,
@@ -3762,72 +3763,72 @@
     INT __base;
 
     if (__isSmallInteger(base)) {
-        myValue = __intVal(self);
-        if (myValue == 0) {
-            RETURN (__MKSTRING_L("0", 1));
-        }
-        __base = __intVal(base);
+	myValue = __intVal(self);
+	if (myValue == 0) {
+	    RETURN (__MKSTRING_L("0", 1));
+	}
+	__base = __intVal(base);
 
 #ifdef SLOW_CODE
-        switch (__base) {
-            case 10:
-                format = "%ld";
-                break;
-            case 16:
-                format = "%lx";
-                break;
-            case 8:
-                format = "%lo";
-                break;
-        }
-
-        if (format) {
-            /*
-             * actually only needed on sparc: since thisContext is
-             * in a global register, which gets destroyed by printf,
-             * manually save it here - very stupid ...
-             */
-            __BEGIN_PROTECT_REGISTERS__
-
-            len = snprintf(buffer, sizeof(buffer), format, (long)myValue);
-
-            __END_PROTECT_REGISTERS__
-
-            if (len > 0 && len <= sizeof(buffer)) {
-                newString = __MKSTRING_L(buffer, len);
-                if (newString != nil) {
-                    RETURN (newString);
-                }
-            }
-        }
+	switch (__base) {
+	    case 10:
+		format = "%"_ld_"";
+		break;
+	    case 16:
+		format = "%"_lx_"";
+		break;
+	    case 8:
+		format = "%"_lo_"";
+		break;
+	}
+
+	if (format) {
+	    /*
+	     * actually only needed on sparc: since thisContext is
+	     * in a global register, which gets destroyed by printf,
+	     * manually save it here - very stupid ...
+	     */
+	    __BEGIN_PROTECT_REGISTERS__
+
+	    len = snprintf(buffer, sizeof(buffer), format, (long)myValue);
+
+	    __END_PROTECT_REGISTERS__
+
+	    if (len > 0 && len <= sizeof(buffer)) {
+		newString = __MKSTRING_L(buffer, len);
+		if (newString != nil) {
+		    RETURN (newString);
+		}
+	    }
+	}
 #else
-        if ((__base <= 36) && (__base > 1)) {
-            if (myValue < 0) {
-                negative = 1;
-                myValue = -myValue;
-            }
-            cp = buffer + sizeof(buffer) - 1;
-            *cp-- = '\0';
-            while (myValue != 0) {
-                int digit;
-
-                digit = myValue % __base;
-                if (digit <= 9) {
-                    *cp = '0' + digit;
-                } else {
-                    *cp = 'A' + digit - 10;
-                }
-                myValue = myValue / __base;
-                cp--;
-            }
-            if (negative) {
-                *cp-- = '-';
-            }
-            newString = __MKSTRING_L(cp+1, (buffer + sizeof(buffer) - 2 - cp));
-            if (newString != nil) {
-                RETURN (newString);
-            }
-        }
+	if ((__base <= 36) && (__base > 1)) {
+	    if (myValue < 0) {
+		negative = 1;
+		myValue = -myValue;
+	    }
+	    cp = buffer + sizeof(buffer) - 1;
+	    *cp-- = '\0';
+	    while (myValue != 0) {
+		int digit;
+
+		digit = myValue % __base;
+		if (digit <= 9) {
+		    *cp = '0' + digit;
+		} else {
+		    *cp = 'A' + digit - 10;
+		}
+		myValue = myValue / __base;
+		cp--;
+	    }
+	    if (negative) {
+		*cp-- = '-';
+	    }
+	    newString = __MKSTRING_L(cp+1, (buffer + sizeof(buffer) - 2 - cp));
+	    if (newString != nil) {
+		RETURN (newString);
+	    }
+	}
 #endif
     }
 %}.
@@ -3874,7 +3875,9 @@
      situaltions.
      Notice that a conversion may not be portable; for example,
      to correctly convert an int on a 64-bit alpha, a %ld is required,
-     while other systems may be happy with a %d ...
+     on 64bit mingw or visualc, %lld is required,
+     while other systems may be happy with a %d.
+     (We cannot use lld unconditionally, because some (old) c compilers do not support it!!)
      Use at your own risk (if at all).
      WARNNG: this goes directly to the C-printf function and may therefore me inherently unsafe.
      Please use the printf: method, which is safe as it is completely implemented in Smalltalk."
@@ -3885,34 +3888,34 @@
     int len;
 
     if (__isStringLike(formatString)) {
-        /*
-         * actually only needed on sparc: since thisContext is
-         * in a global register, which gets destroyed by printf,
-         * manually save it here - very stupid ...
-         */
-        __BEGIN_PROTECT_REGISTERS__
-
-        len = snprintf(buffer, sizeof(buffer), __stringVal(formatString), __intVal(self));
-
-        __END_PROTECT_REGISTERS__
-
-        if (len < 0) goto fail;
-
-        s = __MKSTRING_L(buffer, len);
-        if (s != nil) {
-            RETURN (s);
-        }
+	/*
+	 * actually only needed on sparc: since thisContext is
+	 * in a global register, which gets destroyed by printf,
+	 * manually save it here - very stupid ...
+	 */
+	__BEGIN_PROTECT_REGISTERS__
+
+	len = snprintf(buffer, sizeof(buffer), __stringVal(formatString), __intVal(self));
+
+	__END_PROTECT_REGISTERS__
+
+	if (len < 0) goto fail;
+
+	s = __MKSTRING_L(buffer, len);
+	if (s != nil) {
+	    RETURN (s);
+	}
     }
 fail: ;
 %}.
     self primitiveFailed
 
     "
-        123 printfPrintString:'%%d -> %d'
-        123 printfPrintString:'%%6d -> %6d'
-        123 printfPrintString:'%%x -> %x'
-        123 printfPrintString:'%%4x -> %4x'
-        123 printfPrintString:'%%04x -> %04x'
+	123 printfPrintString:'%%d -> %d'
+	123 printfPrintString:'%%6d -> %6d'
+	123 printfPrintString:'%%x -> %x'
+	123 printfPrintString:'%%4x -> %4x'
+	123 printfPrintString:'%%04x -> %04x'
     "
 ! !
 
@@ -3989,13 +3992,13 @@
      0 isPowerOfTwo
      1 isPowerOfTwo
      2 isPowerOfTwo
-     3 isPowerOfTwo                   
-     4 isPowerOfTwo                   
-     16r8000000000000000 isPowerOfTwo   
-     16r8000000000000001 isPowerOfTwo   
+     3 isPowerOfTwo
+     4 isPowerOfTwo
+     16r8000000000000000 isPowerOfTwo
+     16r8000000000000001 isPowerOfTwo
 
      10000 factorial isPowerOfTwo
-     |n| n := 10000 factorial. Time millisecondsToRun:[1000 timesRepeat:[ n isPowerOfTwo]] 
+     |n| n := 10000 factorial. Time millisecondsToRun:[1000 timesRepeat:[ n isPowerOfTwo]]
     "
 
     "Modified: / 20-06-2011 / 12:41:18 / cg"
@@ -4037,7 +4040,7 @@
 
     // tricky, but very fast (google for it, to understand)
 #if __POINTER_SIZE__ == 4
-    unsigned int v = __intVal(self);  
+    unsigned int v = __intVal(self);
 
     v ^= v >> 16;
     v ^= v >> 8;
@@ -4049,17 +4052,17 @@
     ^ super parityOdd
 
     "
-        self assert:
-         (((0 to:255) collect:[:i | i parityOdd ifTrue:1 ifFalse:0])
-            asByteArray collect:[:c | c + $0 asciiValue]) asString
-         =
-            '0110100110010110100101100110100110010110011010010110100110010110100101100110100101101001100101100110100110010110100101100110100110010110011010010110100110010110011010011001011010010110011010010110100110010110100101100110100110010110011010010110100110010110'
-
-        self assert:(16r0FFFFFFF parityOdd = 16r0FFFFFFF bitCount odd).  
-        self assert:(16r1FFFFFFF parityOdd = 16r1FFFFFFF bitCount odd).
-        self assert:(16r3FFFFFFF parityOdd = 16r3FFFFFFF bitCount odd).
-        self assert:(16r7FFFFFFF parityOdd = 16r7FFFFFFF bitCount odd).
-        self assert:(16rFFFFFFFF parityOdd = 16rFFFFFFFF bitCount odd).
+	self assert:
+	 (((0 to:255) collect:[:i | i parityOdd ifTrue:1 ifFalse:0])
+	    asByteArray collect:[:c | c + $0 asciiValue]) asString
+	 =
+	    '0110100110010110100101100110100110010110011010010110100110010110100101100110100101101001100101100110100110010110100101100110100110010110011010010110100110010110011010011001011010010110011010010110100110010110100101100110100110010110011010010110100110010110'
+
+	self assert:(16r0FFFFFFF parityOdd = 16r0FFFFFFF bitCount odd).
+	self assert:(16r1FFFFFFF parityOdd = 16r1FFFFFFF bitCount odd).
+	self assert:(16r3FFFFFFF parityOdd = 16r3FFFFFFF bitCount odd).
+	self assert:(16r7FFFFFFF parityOdd = 16r7FFFFFFF bitCount odd).
+	self assert:(16rFFFFFFFF parityOdd = 16rFFFFFFFF bitCount odd).
     "
 
     "Modified (comment): / 09-01-2012 / 19:55:37 / cg"
@@ -4120,13 +4123,9 @@
 !SmallInteger class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.197 2012/11/04 15:06:59 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.199 2013-01-08 17:55:11 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.197 2012/11/04 15:06:59 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: SmallInteger.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.199 2013-01-08 17:55:11 cg Exp $'
 ! !
--- a/Smalltalk.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Smalltalk.st	Sat Jan 19 01:30:00 2013 +0000
@@ -25,8 +25,7 @@
 		ImageStartTime ImageRestartTime DemoMode SaveEmergencyImage
 		SpecialObjectArray CallbackSignal KnownPackages
 		ClassesFailedToInitialize HasNoConsole IgnoreHalt
-		PackageToPathMapping TimeOfLastChangeEvent
-		NumberOfChangeEventsInLast200msecs'
+		PackageToPathMapping'
 	poolDictionaries:''
 	category:'System-Support'
 !
@@ -1363,24 +1362,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.
@@ -1391,8 +1390,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
@@ -1401,42 +1400,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.
@@ -1456,32 +1455,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 |
@@ -1504,88 +1503,88 @@
     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).
+    self changed:#classRename with:(Array with:aClass with:oldName).
 
     "Created: / 29-10-1995 / 19:58:32 / cg"
     "Modified: / 18-06-1996 / 14:20:50 / stefan"
@@ -2220,6 +2219,7 @@
     ^ false
 
     "Created: / 02-01-2010 / 10:41:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-03-2011 / 10:03:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 04-11-2011 / 13:41:29 / cg"
     "Modified: / 23-10-2011 / 19:35:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -2257,40 +2257,43 @@
     "Modified: / 04-11-2011 / 13:41:19 / cg"
 !
 
-loadPackage:aPackageString asAutoloaded:doLoadAsAutoloaded
+loadPackage:aPackageStringArg asAutoloaded:doLoadAsAutoloaded
     "make certain, that some particular package is loaded into the system.
      Return true on success, false otherwise."
 
-    |packageDir def sourceCodeManager|
+    |packageId packageString packageDir def sourceCodeManager|
+
+    packageId := aPackageStringArg asPackageId.
+    packageString := aPackageStringArg asPackageId string.
 
     "if I am here, so must my package"
-    aPackageString = 'stx:libbasic' ifTrue:[^ true].
+    packageString = 'stx:libbasic' ifTrue:[^ true].
 
     "/ if there is a projectDefinition, let it load itself...
-    def := aPackageString asPackageId projectDefinitionClass.
+    def := packageId projectDefinitionClass.
     def notNil ifTrue:[
-	def loadAsAutoloaded:doLoadAsAutoloaded.
-	^ true.
-    ].
-
-    packageDir := self packageDirectoryForPackageId:aPackageString.
+        def loadAsAutoloaded:doLoadAsAutoloaded.
+        ^ true.
+    ].
+
+    packageDir := self packageDirectoryForPackageId:packageId.
     packageDir isNil ifTrue:[
-	(aPackageString includes:$:) ifFalse:[
-	    "/ assume stx
-	    packageDir := self packageDirectoryForPackageId:('stx:',aPackageString).
-	].
+        (packageString includes:$:) ifFalse:[
+            "/ assume stx
+            packageDir := self packageDirectoryForPackageId:('stx:',packageString).
+        ].
     ].
 
     (self
-	loadPackage:aPackageString
-	fromDirectory:packageDir
-	asAutoloaded:doLoadAsAutoloaded) ifTrue: [^ true].
+        loadPackage:packageString
+        fromDirectory:packageDir
+        asAutoloaded:doLoadAsAutoloaded) ifTrue: [^ true].
 
     AbstractSourceCodeManager notNil ifTrue:[
-	sourceCodeManager := AbstractSourceCodeManager sourceCodeManagerForPackage: aPackageString.
-	sourceCodeManager notNil ifTrue:[
-	    ^ sourceCodeManager loadPackageWithId: aPackageString fromRepositoryAsAutoloaded: doLoadAsAutoloaded
-	].
+        sourceCodeManager := AbstractSourceCodeManager sourceCodeManagerForPackage: packageString.
+        sourceCodeManager notNil ifTrue:[
+            ^ sourceCodeManager loadPackageWithId: packageString fromRepositoryAsAutoloaded: doLoadAsAutoloaded
+        ].
     ].
 
     ^ false
@@ -2403,12 +2406,12 @@
      loadOK loadErrorOccurred exePath|
 
     packageDirOrStringOrNil notNil ifTrue:[
-	packageDir := packageDirOrStringOrNil asFilename.
+        packageDir := packageDirOrStringOrNil asFilename.
     ].
     VerboseLoading ifTrue:[
-	silent := false
+        silent := false
     ] ifFalse:[
-	silent := (SilentLoading or:[ StandAlone ]) or:[ InfoPrinting not ].
+        silent := (SilentLoading or:[ StandAlone ]) or:[ InfoPrinting not ].
     ].
 
     "For now: have to read the project definition first!!
@@ -2422,36 +2425,37 @@
 
     "if not, file it in ..."
     (projectDefinitionClass isNil and:[packageDir notNil]) ifTrue:[
-	projectDefinitionClassName := ProjectDefinition initialClassNameForDefinitionOf:aPackageString.
-	"/ try to load the project definition class
-	projectDefinitionFilename := (packageDir / projectDefinitionClassName) withSuffix:'st'.
-	projectDefinitionFilename exists ifFalse:[
-	    projectDefinitionFilename := (packageDir / 'source' / projectDefinitionClassName) withSuffix:'st'.
-	].
-	projectDefinitionFilename exists ifTrue:[
-	    Class withoutUpdatingChangesDo:[
-		Smalltalk silentlyLoadingDo:[
-		    projectDefinitionFilename fileIn.
-		].
-	    ].
-	    projectDefinitionClass := ProjectDefinition definitionClassForPackage:aPackageString.
-	].
+        projectDefinitionClassName := ProjectDefinition initialClassNameForDefinitionOf:aPackageString.
+        "/ try to load the project definition class
+        projectDefinitionFilename := (packageDir / projectDefinitionClassName) withSuffix:'st'.
+        projectDefinitionFilename exists ifFalse:[
+            projectDefinitionFilename := (packageDir / 'source' / projectDefinitionClassName) withSuffix:'st'.
+        ].
+        projectDefinitionFilename exists ifTrue:[
+            Class withoutUpdatingChangesDo:[
+                Smalltalk silentlyLoadingDo:[
+                    projectDefinitionFilename fileIn.
+                ].
+            ].
+            projectDefinitionClass := ProjectDefinition definitionClassForPackage:aPackageString.
+            projectDefinitionClass loadDirectory:(projectDefinitionFilename asFilename directory)
+        ].
     ].
 
     projectDefinitionClass notNil ifTrue:[
-	projectDefinitionClass autoload.
-	somethingHasBeenLoaded := projectDefinitionClass loadAsAutoloaded:doLoadAsAutoloaded.
-	(silent not and:[somethingHasBeenLoaded]) ifTrue:[
-	    Transcript showCR:('Smalltalk [info]: loaded package: ' , aPackageString , ' from project definition').
-	].
-	^ true.
+        projectDefinitionClass autoload.
+        somethingHasBeenLoaded := projectDefinitionClass loadAsAutoloaded:doLoadAsAutoloaded.
+        (silent not and:[somethingHasBeenLoaded]) ifTrue:[
+            Transcript showCR:('Smalltalk [info]: loaded package: ' , aPackageString , ' from project definition').
+        ].
+        ^ true.
     ].
 
     "/ no project-definition class.
 
     "Is there a shared library (.dll or .so) ?"
     shLibName := aPackageString asPackageId libraryName asFilename
-			withSuffix:ObjectFileLoader sharedLibrarySuffix.
+                        withSuffix:ObjectFileLoader sharedLibrarySuffix.
 
 "/    silent ifFalse:[
 "/        Transcript showCR:('looking for binary classLib file: ' , shLibName pathName).
@@ -2459,75 +2463,75 @@
     exePath := OperatingSystem pathOfSTXExecutable asFilename directory.
     binaryClassLibraryFilename := exePath / shLibName.
     binaryClassLibraryFilename exists ifFalse:[
-	exePath baseName = 'bin' ifTrue:[
-	    binaryClassLibraryFilename := exePath directory / 'lib' / shLibName.
-	].
-	binaryClassLibraryFilename exists ifFalse:[
-	    binaryClassLibraryFilename := exePath directory / 'plugin' / shLibName.
-	    binaryClassLibraryFilename exists ifFalse:[
+        exePath baseName = 'bin' ifTrue:[
+            binaryClassLibraryFilename := exePath directory / 'lib' / shLibName.
+        ].
+        binaryClassLibraryFilename exists ifFalse:[
+            binaryClassLibraryFilename := exePath directory / 'plugin' / shLibName.
+            binaryClassLibraryFilename exists ifFalse:[
 "/                binaryClassLibraryFilename := Filename currentDirectory / shLibName.
 "/                binaryClassLibraryFilename exists ifFalse:[
-		    packageDir notNil ifTrue:[
-			binaryClassLibraryFilename := packageDir / shLibName.
-			binaryClassLibraryFilename exists ifFalse:[
-			    "/ mhmh - is this a good idea ? (temporary kludge)
-			    binaryClassLibraryFilename := packageDir / 'objbc' / shLibName.
-			    binaryClassLibraryFilename exists ifFalse:[
-				binaryClassLibraryFilename := packageDir / 'objvc' / shLibName.
-			    ]
-			]
-		    ]
+                    packageDir notNil ifTrue:[
+                        binaryClassLibraryFilename := packageDir / shLibName.
+                        binaryClassLibraryFilename exists ifFalse:[
+                            "/ mhmh - is this a good idea ? (temporary kludge)
+                            binaryClassLibraryFilename := packageDir / 'objbc' / shLibName.
+                            binaryClassLibraryFilename exists ifFalse:[
+                                binaryClassLibraryFilename := packageDir / 'objvc' / shLibName.
+                            ]
+                        ]
+                    ]
 "/                ].
-	    ].
-	].
+            ].
+        ].
     ].
     binaryClassLibraryFilename exists ifTrue:[
-	ObjectFileLoader::ObjectFileLoadErrorNotification handle:[:ex |
-	    loadErrorOccurred := true.
-	    ex proceedWith:true.
-	] do:[
-	    loadOK := self loadPackage:aPackageString fromClassLibrary:binaryClassLibraryFilename.
-	].
-	loadOK ifTrue:[
-	    silent ifFalse:[
-		Transcript showCR:('loaded package: ' , aPackageString , ' from binary classLib file: ' , binaryClassLibraryFilename pathName).
-	    ].
-	    doLoadAsAutoloaded ifFalse:[
-		"/ force autoloading...
-		Smalltalk allClassesDo:[:eachClass |
-		    eachClass package == aPackageString ifTrue:[eachClass autoload].
-		].
-	    ].
-	    ^ true
-	].
-	loadErrorOccurred ifTrue:[
-	    self breakPoint:#cg.
-	    projectDefinitionClass := ProjectDefinition definitionClassForPackage:aPackageString.
-	    projectDefinitionClass notNil ifTrue:[
-		"/ load prerequisites...
-		projectDefinitionClass loadPreRequisitesAsAutoloaded:doLoadAsAutoloaded.
-		self breakPoint:#cg.
-	    ].
-	].
+        ObjectFileLoader::ObjectFileLoadErrorNotification handle:[:ex |
+            loadErrorOccurred := true.
+            ex proceedWith:true.
+        ] do:[
+            loadOK := self loadPackage:aPackageString fromClassLibrary:binaryClassLibraryFilename.
+        ].
+        loadOK ifTrue:[
+            silent ifFalse:[
+                Transcript showCR:('loaded package: ' , aPackageString , ' from binary classLib file: ' , binaryClassLibraryFilename pathName).
+            ].
+            doLoadAsAutoloaded ifFalse:[
+                "/ force autoloading...
+                Smalltalk allClassesDo:[:eachClass |
+                    eachClass package == aPackageString ifTrue:[eachClass autoload].
+                ].
+            ].
+            ^ true
+        ].
+        loadErrorOccurred ifTrue:[
+            self breakPoint:#cg.
+            projectDefinitionClass := ProjectDefinition definitionClassForPackage:aPackageString.
+            projectDefinitionClass notNil ifTrue:[
+                "/ load prerequisites...
+                projectDefinitionClass loadPreRequisitesAsAutoloaded:doLoadAsAutoloaded.
+                self breakPoint:#cg.
+            ].
+        ].
     ].
 
     packageDir isNil ifTrue:[
-	^ false.
+        ^ false.
     ].
 
     "/ loadAll ? - will be soon obsolete
     "/ mhmh - this will vanish soon...
     loadAllFilename := packageDir / 'loadAll'.
     loadAllFilename exists ifFalse:[
-	loadAllFilename := packageDir / 'loadall'.
+        loadAllFilename := packageDir / 'loadall'.
     ].
     loadAllFilename exists ifTrue:[
-	(self loadPackage:aPackageString fromLoadAllFile:loadAllFilename) ifTrue:[
-	    silent ifFalse:[
-		Transcript showCR:('loaded package: ' , aPackageString , ' from loadAll file: ' , loadAllFilename pathName).
-	    ].
-	    ^ true
-	]
+        (self loadPackage:aPackageString fromLoadAllFile:loadAllFilename) ifTrue:[
+            silent ifFalse:[
+                Transcript showCR:('loaded package: ' , aPackageString , ' from loadAll file: ' , loadAllFilename pathName).
+            ].
+            ^ true
+        ]
     ].
 
     packageName := packageDir baseName.
@@ -3458,7 +3462,7 @@
 		    'Smalltalk [warning]: error cought in startBlock: ' infoPrint.
 		    ex description infoPrintCR.
 		    ex infoPrintCR.
-		    ex pass.
+		    thisContext fullPrintAll.
 		].
 	    ] do: aBlock
 	].
@@ -3754,8 +3758,6 @@
     AbstractOperatingSystem initializeConcreteClass.
 
     ImageRestartTime := Timestamp now.
-    TimeOfLastChangeEvent := nil.
-    NumberOfChangeEventsInLast200msecs := 0.
 
     CommandLine := CommandLineArguments copy.
     CommandLineArguments := CommandLineArguments asOrderedCollection.
@@ -3985,138 +3987,138 @@
     Initializing := true.
 
     (StartupClass perform:#keepSplashWindowOpen ifNotUnderstood:[false]) ifFalse:[
-	self hideSplashWindow.   "/ if there is one, it's now time to hide it
+        self hideSplashWindow.   "/ if there is one, it's now time to hide it
     ].
 
     "
      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 '--repl' argument
-	    "/ then go into a read-eval-print loop immediately
-	    idx := CommandLineArguments indexOf:'--repl'.
-	    idx ~~ 0 ifTrue:[
-		CommandLineArguments removeAtIndex:idx.
-		self startSchedulerAndBackgroundCollector.
-		self readEvalPrint.
-		self exit.
-	    ].
-
-	    "/ 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:[
-		    idx := CommandLineArguments indexOf:'--script'.
-		    idx ~~ 0 ifTrue:[
-			SilentLoading := true.
-		    ].
-		].
-	    ].
-	    idx ~~ 0 ifTrue:[
-		|process|
-
-		CommandName := arg := CommandLineArguments at:idx + 1.
-
-		CommandLineArguments
-		    removeAtIndex:idx+1; removeAtIndex:idx.
-
-		self startSchedulerAndBackgroundCollector.
-		Initializing := false.
-
-		process := [
-		    arg = '-' ifTrue:[
-			self fileInStream:Stdin
-			       lazy:nil
-			       silent:nil
-			       logged:false
-			       addPath:nil
-		    ] ifFalse:[
-			IsSTScript := true.
-			self fileIn:arg.
-		    ].
-		    self exit.
-		] newProcess.
-		process priority:(Processor userSchedulingPriority).
-		process name:'main'.
-		process beGroupLeader.
-		process resume.
-
-		Processor dispatchLoop.
-		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 startSchedulerAndBackgroundCollector.
-		Initializing := false.
-
-		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:[
-		CommandName := commandFile := CommandLineArguments at:idx+1.
-		CommandLineArguments removeAtIndex:idx+1; removeAtIndex:idx.
-	    ].
-	].
-
-	commandFile notNil ifTrue:[
-	    self startSchedulerAndBackgroundCollector.
-	    Initializing := false.
-
-	    (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 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 '--repl' argument
+            "/ then go into a read-eval-print loop immediately
+            idx := CommandLineArguments indexOf:'--repl'.
+            idx ~~ 0 ifTrue:[
+                CommandLineArguments removeAtIndex:idx.
+                self startSchedulerAndBackgroundCollector.
+                self readEvalPrint.
+                self exit.
+            ].
+
+            "/ 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:[
+                    idx := CommandLineArguments indexOf:'--script'.
+                    idx ~~ 0 ifTrue:[
+                        SilentLoading := true.
+                    ].
+                ].
+            ].
+            idx ~~ 0 ifTrue:[
+                |process|
+
+                CommandName := arg := CommandLineArguments at:idx + 1.
+
+                CommandLineArguments
+                    removeAtIndex:idx+1; removeAtIndex:idx.
+
+                self startSchedulerAndBackgroundCollector.
+                Initializing := false.
+
+                process := [
+                    arg = '-' ifTrue:[
+                        self fileInStream:Stdin
+                               lazy:nil
+                               silent:nil
+                               logged:false
+                               addPath:nil
+                    ] ifFalse:[
+                        IsSTScript := true.
+                        self fileIn:arg.
+                    ].
+                    self exit.
+                ] newProcess.
+                process priority:(Processor userSchedulingPriority).
+                process name:'main'.
+                process beGroupLeader.
+                process resume.
+
+                Processor dispatchLoop.
+                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 startSchedulerAndBackgroundCollector.
+                Initializing := false.
+
+                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:[
+                CommandName := commandFile := CommandLineArguments at:idx+1.
+                CommandLineArguments removeAtIndex:idx+1; removeAtIndex:idx.
+            ].
+        ].
+
+        commandFile notNil ifTrue:[
+            self startSchedulerAndBackgroundCollector.
+            Initializing := false.
+
+            (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 := commandFile exists and:[self secureFileIn:commandFile]) ifFalse:[
@@ -4138,36 +4140,36 @@
 		]
 	    ].
 
-	    "/ ('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:[
-		'private.rc' asFilename exists ifTrue:[ 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...
+            "/ ('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:[
+                'private.rc' asFilename exists ifTrue:[ 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:[
-		    self startSchedulerAndBackgroundCollector
-		].
-	    ].
-	].
+                self addStartBlock:[
+                    self startSchedulerAndBackgroundCollector
+                ].
+            ].
+        ].
     ].
 
     HeadlessOperation ifTrue:[
-	graphicalMode := false.
+        graphicalMode := false.
     ].
 
     self mainStartup:graphicalMode
@@ -5555,305 +5557,309 @@
 
     wasLazy := Compiler compileLazy:loadLazy.
     beSilent notNil ifTrue:[
-	wasSilent := self silentLoading:beSilent.
+        wasSilent := self silentLoading:beSilent.
     ].
 
     classFileName := Smalltalk fileNameForClass:aClassName.
     (classFileName = aClassName) ifTrue:[
-	"/ no abbrev.stc translation for className
-	(aClassName includes:$:) ifTrue:[
-	    "/ a nameSpace name
-	    alternativeClassFileName := classFileName copyFrom:(classFileName lastIndexOf:$:)+1
-	].
+        "/ no abbrev.stc translation for className
+        (aClassName includes:$:) ifTrue:[
+            "/ a nameSpace name
+            alternativeClassFileName := classFileName copyFrom:(classFileName lastIndexOf:$:)+1
+        ].
     ].
 
     classFileName asFilename isAbsolute ifTrue:[
-	classFileName asFilename suffix notEmptyOrNil ifTrue:[
-	    ok := self fileIn:classFileName lazy:loadLazy silent:beSilent.
-	] ifFalse:[
-	    ok := self fileInSourceFile:classFileName lazy:loadLazy silent:beSilent.
-	]
+        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:[
-			filenameToSet := classFileName.
-			(ok := self fileInSourceFile:filenameToSet lazy:loadLazy silent:beSilent)
-			ifFalse:[
-			    alternativeClassFileName notNil ifTrue:[
-				filenameToSet := alternativeClassFileName.
-				ok := self fileInSourceFile:filenameToSet lazy:loadLazy silent:beSilent
-			    ].
-			    ok ifFalse:[
-				"
-				 ... and in the standard source-directory
-				"
-				filenameToSet := 'source/' , classFileName.
-				(ok := self fileInSourceFile:filenameToSet lazy:loadLazy silent:beSilent)
-				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:[
-				packageFile := self getPackageSourceFileName:(packageDir , '/source/' , classFileName).
-				packageFile isNil ifTrue:[
-				    packageFile := (packageDir , '/source/' , classFileName).
-				].
-				filenameToSet := packageFile.
-				(ok := self fileInSourceFile:packageFile lazy:loadLazy silent:beSilent)
-				ifFalse:[
-				    alternativeClassFileName notNil ifTrue:[
-					packageFile := self getPackageSourceFileName:(packageDir , '/source/' , alternativeClassFileName).
-					packageFile isNil ifTrue:[
-					    packageFile := (packageDir , '/source/' , alternativeClassFileName).
-					].
-					filenameToSet := packageFile.
-					ok := self fileInSourceFile:packageFile lazy:loadLazy silent:beSilent
-				    ].
-				    ok ifFalse:[
-					packageFile := self getPackageSourceFileName:(packageDir , '/' , classFileName).
-					packageFile isNil ifTrue:[
-					    packageFile := (packageDir , '/' , classFileName).
-					].
-					filenameToSet := packageFile.
-					(ok := self fileInSourceFile:packageFile lazy:loadLazy silent:beSilent)
-					ifFalse:[
-					    alternativeClassFileName notNil ifTrue:[
-						packageFile := self getPackageFileName:(packageDir , '/' , alternativeClassFileName).
-						packageFile isNil ifTrue:[
-						    packageFile := (packageDir , '/' , alternativeClassFileName).
-						].
-						filenameToSet := packageFile.
-						ok := self fileInSourceFile:packageFile lazy:loadLazy silent:beSilent
-					    ].
-					    ok ifFalse:[
-						"
-						 ... and in the standard source-directory
-						"
-						filenameToSet := 'source/' , packageDir , '/' , classFileName.
-						(ok := self fileInSourceFile:filenameToSet lazy:loadLazy silent:beSilent)
-						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
-	    ]
-	].
+        classFileName := classFileName copyReplaceAll:$: with:$_.
+        [
+            Class withoutUpdatingChangesDo:[
+                |zarFn zar entry|
+
+                ok := false.
+
+                package notNil ifTrue:[
+                    packageDir := package asPackageId projectDirectory.
+                    "/ packageDir := package asString.
+                    "/ packageDir := packageDir copyReplaceAll:$: with:$/.
+                    packageDir isNil ifTrue:[
+                        packageDir := self packageDirectoryForPackageId:package
+                    ].
+                ].
+
+                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:[
+                                filenameToSet := alternativeClassFileName.
+                                ok := self fileInSourceFile:filenameToSet lazy:loadLazy silent:beSilent
+                            ].
+                            ok ifFalse:[
+                                "
+                                 ... and in the standard source-directory
+                                "
+                                filenameToSet := 'source/' , classFileName.
+                                (ok := self fileInSourceFile:filenameToSet lazy:loadLazy silent:beSilent)
+                                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:[
+                                packageFile := self getPackageSourceFileName:(packageDir , '/source/' , classFileName).
+                                packageFile isNil ifTrue:[
+                                    packageFile := (packageDir , '/source/' , classFileName).
+                                ].
+                                filenameToSet := packageFile.
+                                (ok := self fileInSourceFile:packageFile lazy:loadLazy silent:beSilent)
+                                ifFalse:[
+                                    alternativeClassFileName notNil ifTrue:[
+                                        packageFile := self getPackageSourceFileName:(packageDir , '/source/' , alternativeClassFileName).
+                                        packageFile isNil ifTrue:[
+                                            packageFile := (packageDir , '/source/' , alternativeClassFileName).
+                                        ].
+                                        filenameToSet := packageFile.
+                                        ok := self fileInSourceFile:packageFile lazy:loadLazy silent:beSilent
+                                    ].
+                                    ok ifFalse:[
+                                        packageFile := self getPackageSourceFileName:(packageDir , '/' , classFileName).
+                                        packageFile isNil ifTrue:[
+                                            packageFile := (packageDir , '/' , classFileName).
+                                        ].
+                                        filenameToSet := packageFile.
+                                        (ok := self fileInSourceFile:packageFile lazy:loadLazy silent:beSilent)
+                                        ifFalse:[
+                                            alternativeClassFileName notNil ifTrue:[
+                                                packageFile := self getPackageFileName:(packageDir , '/' , alternativeClassFileName).
+                                                packageFile isNil ifTrue:[
+                                                    packageFile := (packageDir , '/' , alternativeClassFileName).
+                                                ].
+                                                filenameToSet := packageFile.
+                                                ok := self fileInSourceFile:packageFile lazy:loadLazy silent:beSilent
+                                            ].
+                                            ok ifFalse:[
+                                                "
+                                                 ... and in the standard source-directory
+                                                "
+                                                filenameToSet := 'source/' , packageDir , '/' , classFileName.
+                                                (ok := self fileInSourceFile:filenameToSet lazy:loadLazy silent:beSilent)
+                                                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 inPackage:package.
+                                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
@@ -6240,39 +6246,39 @@
     ].
 
     aClassOrClassName isBehavior ifTrue:[
-        cls := aClassOrClassName.
+	cls := aClassOrClassName.
     ] ifFalse:[
-        cls := Smalltalk classNamed:aClassOrClassName.
-        cls isNil ifTrue:[
-            nameWithPrefix := aClassOrClassName.
-            nameWithoutPrefix := (aClassOrClassName copyFrom:(aClassOrClassName lastIndexOf:$:)+1).
-        ].
+	cls := Smalltalk classNamed:aClassOrClassName.
+	cls isNil ifTrue:[
+	    nameWithPrefix := aClassOrClassName.
+	    nameWithoutPrefix := (aClassOrClassName copyFrom:(aClassOrClassName lastIndexOf:$:)+1).
+	].
     ].
 
     cls notNil ifTrue:[
-        nonMetaclass := cls theNonMetaclass.
-        nm := nonMetaclass getClassFilename.
-        nm isNil ifTrue:[
-            cls revisionInfo notNil ifTrue:[
-                nm := cls revisionInfo fileName.
-            ].
-        ].
-        nm notNil ifTrue:[
-            ^ nm asFilename withoutSuffix baseName
-        ].
-        nameWithPrefix := nonMetaclass name.
-        nameWithoutPrefix := nonMetaclass nameWithoutPrefix.
+	nonMetaclass := cls theNonMetaclass.
+	nm := nonMetaclass getClassFilename.
+	nm isNil ifTrue:[
+	    cls revisionInfo notNil ifTrue:[
+		nm := cls revisionInfo fileName.
+	    ].
+	].
+	nm notNil ifTrue:[
+	    ^ nm asFilename withoutSuffix baseName
+	].
+	nameWithPrefix := nonMetaclass name.
+	nameWithoutPrefix := nonMetaclass nameWithoutPrefix.
     ].
 
     CachedAbbreviations notNil ifTrue:[
-        nameWithPrefix := nameWithPrefix asSymbol.
-        (CachedAbbreviations includesKey:nameWithPrefix) ifTrue:[
-            ^ (CachedAbbreviations at:nameWithPrefix) asFilename baseName
-        ].
-        nameWithoutPrefix := nameWithoutPrefix asSymbol.
-        (CachedAbbreviations includesKey:nameWithoutPrefix) ifTrue:[
-            ^ (CachedAbbreviations at:nameWithoutPrefix) asFilename baseName
-        ].
+	nameWithPrefix := nameWithPrefix asSymbol.
+	(CachedAbbreviations includesKey:nameWithPrefix) ifTrue:[
+	    ^ (CachedAbbreviations at:nameWithPrefix) asFilename baseName
+	].
+	nameWithoutPrefix := nameWithoutPrefix asSymbol.
+	(CachedAbbreviations includesKey:nameWithoutPrefix) ifTrue:[
+	    ^ (CachedAbbreviations at:nameWithoutPrefix) asFilename baseName
+	].
     ].
 
     ^ nameWithPrefix copyReplaceAll:$: with:$_
@@ -7401,11 +7407,11 @@
 
     |packageDirName packageDir|
 
-    packageDirName := aPackageId copyReplaceAll:$: with:$/.
+    packageDirName := aPackageId asPackageId string copyReplaceAll:$: with:$/.
 
     packageDir := self getPackageFileName:packageDirName.
     packageDir isNil ifTrue:[
-	^ nil.
+        ^ nil.
     ].
     ^ packageDir asFilename
 
@@ -7421,7 +7427,11 @@
 
     projectDefinition := aPackageIdOrPackage.
     projectDefinition isProjectDefinition ifFalse:[
-	projectDefinition := projectDefinition asPackageId projectDefinitionClass
+        projectDefinition := projectDefinition asPackageId projectDefinitionClass.
+        projectDefinition isNil ifTrue:[
+            'Smalltalk [info] trying to unload non-existing package: ' infoPrint. aPackageIdOrPackage infoPrintCR.
+            ^ self.
+        ].
     ].
     projectDefinition unloadPackage.
 
@@ -7703,18 +7713,17 @@
 releaseNr
     "{ Pragma: +optSpace }"
 
-    "return the revision number.
-     Incremented for releases which fix bugs/add features but did not find
-     their way to the outside world.
+    "return the release number.
+     Now releaseNr is the build number (BUILD_NUMBER from Jenkins)
 
      ST/X revision Naming is:
-	<major>.<minor>.<revision>.<release>"
+        <major>.<minor>.<revision>.<release>"
 
     |releaseNumber|
 
     releaseNumber := Smalltalk versionBuildNumber.
     releaseNumber isEmpty ifTrue:[
-	^ 0.
+        ^ 0.
     ].
     ^ releaseNumber
 
@@ -7797,6 +7806,7 @@
 !
 
 versionDate
+    "{ Pragma: +optSpace }"
 
     "return the executables build date - that's the date when the smalltalk
      executable was built"
@@ -7823,7 +7833,7 @@
        self minorVersionNr printString ,
        '.',
        self revisionNr printString,
-       'b.',
+       'jv.',
        self releaseNr printString)
 
 
@@ -7849,13 +7859,14 @@
 !Smalltalk class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Smalltalk.st 10880 2012-12-05 10:48:53Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.1006 2012-12-22 14:29:34 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.1000 2012/11/23 17:44:05 stefan Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.1006 2012-12-22 14:29:34 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id:: Smalltalk.st 10880 2012-12-05 10:48:53Z vranyj1                                                                        $'
+    ^ '§ Id: Smalltalk.st 10648 2011-06-23 15:55:10Z vranyj1  §'
 ! !
+
--- a/SmalltalkChunkFileSourceReader.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/SmalltalkChunkFileSourceReader.st	Sat Jan 19 01:30:00 2013 +0000
@@ -53,16 +53,13 @@
 !SmalltalkChunkFileSourceReader class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/SmalltalkChunkFileSourceReader.st,v 1.6 2012/10/20 19:23:30 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SmalltalkChunkFileSourceReader.st,v 1.6 2012-10-20 19:23:30 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SmalltalkChunkFileSourceReader.st,v 1.6 2012/10/20 19:23:30 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/SmalltalkChunkFileSourceReader.st,v 1.6 2012-10-20 19:23:30 cg Exp $'
 !
 
 version_SVN
-    ^'$Id: SmalltalkChunkFileSourceReader.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^'§Id: SmalltalkChunkFileSourceReader.st 10465 2009-08-16 17:14:23Z vranyj1 §'
 ! !
-
-
-
--- a/SmalltalkChunkFileSourceWriter.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/SmalltalkChunkFileSourceWriter.st	Sat Jan 19 01:30:00 2013 +0000
@@ -40,6 +40,24 @@
 "
 ! !
 
+!SmalltalkChunkFileSourceWriter class methodsFor:'simple API'!
+
+fileOut:aClass on:aStream
+    self fileOut:aClass on:aStream withTimeStamp:true
+        withInitialize:true withDefinition:true
+        methodFilter:nil encoder:nil
+!
+
+fileOut:aClass on:aStream withTimeStamp:withTimeStamp
+        withInitialize:initIt withDefinition:withDefinition
+        methodFilter:methodFilter encoder:encoderOrNil
+
+    self new
+        fileOut:aClass on:aStream withTimeStamp:withTimeStamp
+        withInitialize:initIt withDefinition:withDefinition
+        methodFilter:methodFilter encoder:encoderOrNil
+! !
+
 !SmalltalkChunkFileSourceWriter class methodsFor:'utilities - source code'!
 
 methodTemplate
@@ -137,9 +155,7 @@
         "/
         "/ first, a timestamp
         "/
-        outStream nextPutAll:(Smalltalk timeStamp).
-        outStream nextPutChunkSeparator. 
-        outStream cr; cr.
+        self generateTimestampOn:outStream.
     ].
 
     withDefinition ifTrue:[
@@ -152,7 +168,6 @@
         "/
         (comment := nonMeta comment) notNil ifTrue:[
             nonMeta fileOutCommentOn:outStream.
-            outStream cr.
         ].
         "/
         "/ ST/X primitive definitions - if any
@@ -189,7 +204,6 @@
 "/            ].
 
             self fileOutCategory:'documentation' of:meta except:versionMethods only:nil methodFilter:methodFilter on:outStream.
-            outStream cr.
         ].
 
         "/
@@ -197,7 +211,6 @@
         "/
         (collectionOfCategories includes:'initialization') ifTrue:[
             self fileOutCategory:'initialization' of:meta methodFilter:methodFilter on:outStream.
-            outStream cr.
         ].
 
         "/
@@ -205,14 +218,12 @@
         "/
         (collectionOfCategories includes:'instance creation') ifTrue:[
             self fileOutCategory:'instance creation' of:meta methodFilter:methodFilter on:outStream.
-            outStream cr.
         ].
         collectionOfCategories do:[:aCategory |
             ((aCategory ~= 'documentation')
             and:[(aCategory ~= 'initialization')
             and:[aCategory ~= 'instance creation']]) ifTrue:[
                 self fileOutCategory:aCategory of:meta methodFilter:methodFilter on:outStream.
-                outStream cr
             ]
         ]
     ].
@@ -234,7 +245,6 @@
     collectionOfCategories notNil ifTrue:[
         collectionOfCategories do:[:aCategory |
             self fileOutCategory:aCategory of:nonMeta methodFilter:methodFilter on:outStream.
-            outStream cr
         ]
     ].
 
@@ -286,7 +296,7 @@
 fileOutAllDefinitionsOf:aNonMetaClass on:aStream
     "append expressions on aStream, which defines myself and all of my private classes."
 
-    aNonMetaClass fileOutDefinitionOn:aStream.
+    self fileOutDefinitionOf:aNonMetaClass on:aStream.
     aStream nextPutChunkSeparator. 
     aStream cr; cr.
 
@@ -322,14 +332,12 @@
     collectionOfCategories notNil ifTrue:[
         collectionOfCategories do:[:aCategory |
             self fileOutCategory:aCategory of:aClass class  methodFilter:methodFilter on:aStream.
-            aStream cr
         ]
     ].
     collectionOfCategories := aClass categories asSortedCollection.
     collectionOfCategories notNil ifTrue:[
         collectionOfCategories do:[:aCategory |
             self fileOutCategory:aCategory of:aClass methodFilter:methodFilter on:aStream.
-            aStream cr
         ]
     ].
 
@@ -417,7 +425,8 @@
         aStream space.
         aStream nextPutChunkSeparator.
         aStream cr
-    ]
+    ].
+    aStream cr
 
     "Modified: 28.8.1995 / 14:30:41 / claus"
     "Modified: 12.6.1996 / 11:37:33 / stefan"
@@ -453,6 +462,10 @@
     "/ intentionally left blank - make each line an EOL-comment instead
 !
 
+fileOutDefinitionOf:aNonMetaClass on:aStream
+    aNonMetaClass fileOutDefinitionOn:aStream.
+!
+
 fileOutMethod:aMethod on:aStream
     "file a single method onto aStream."
 
@@ -480,42 +493,13 @@
     ].
 !
 
-fileOutMethods: extensions on: stream
-    | methodsSortedByName |
-
-    "/ sort them by name (to avoid conflict due to CVS merge)
-    methodsSortedByName := extensions asOrderedCollection.
-    methodsSortedByName sort:[:a :b |
-                                |clsA clsB|
+fileOutMethods: methods on: stream
 
-                                clsA := a mclass name.
-                                clsB := b mclass name.
-                                clsA < clsB ifTrue:[
-                                    true
-                                ] ifFalse:[
-                                    clsA > clsB ifTrue:[
-                                        false
-                                    ] ifFalse:[
-                                        a selector < b selector
-                                    ]
-                                ]
-                              ].
-    methodsSortedByName do:[:method |
-        | privacy cat |
+    methods do:
+        [:method| |cat source privacy|
 
-        self assert: method programmingLanguage isSmalltalk.
         stream nextPutChunkSeparator.
-        "JV@2012-09-05: Support for filing out Java extension methods"
-        method mclass theNonMetaclass isJavaClass ifTrue:[
-            stream nextPutAll:'(Java classForName:'''.
-            stream nextPutAll:(method mclass theNonMetaclass name copyReplaceAll:$/ with: $.).
-            stream nextPutAll:''')'.
-            method mclass isMetaclass ifTrue:[
-                stream nextPutAll: ' class'.
-            ].
-        ] ifFalse:[
-            method mclass name printOn:stream.
-        ].
+        method mclass name printOn:stream.
         "/        self printClassNameOn:aStream.
 
         (privacy := method privacy) ~~ #public ifTrue:[
@@ -523,6 +507,7 @@
         ] ifFalse:[
             stream nextPutAll:' methodsFor:'.
         ].
+
         cat := method category ? ''.
         stream nextPutAll:cat asString storeString.
         stream nextPutChunkSeparator; cr; cr.
@@ -531,22 +516,19 @@
 
         stream space.
         stream nextPutChunkSeparator.
-        stream cr.
-        stream cr.
-    ].
+        stream cr]
 
     "Created: / 30-12-2009 / 18:43:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 07-11-2012 / 23:59:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-fileOutPackageDefinition:pkg on:stream 
+fileOutPackageDefinition:pkg on:aStream 
     (pkg notNil and:[ pkg ~= PackageId noProjectID ]) ifTrue:[
-        stream nextPutAll:'"{ Package: '''.
-        stream nextPutAll:pkg asString.
-        stream nextPutAll:''' }"'; nextPutChunkSeparator; cr; cr.
+        aStream nextPutAll:'"{ Package: '''.
+        aStream nextPutAll:pkg asString.
+        aStream
+            nextPutAll:''' }"'; cr; cr;
+            nextPut:$!!; cr; cr
     ]
-
-    "Modified: / 07-09-2012 / 11:19:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 generateHeaderWithCopyrightOn:outStream
@@ -578,14 +560,21 @@
             ].
         ].
     ].
+!
+
+generateTimestampOn:outStream
+    outStream nextPutAll:(Smalltalk timeStamp).
+    outStream nextPutChunkSeparator. 
+    outStream cr; cr.
 ! !
 
 !SmalltalkChunkFileSourceWriter class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SmalltalkChunkFileSourceWriter.st,v 1.18 2012/10/20 19:25:49 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/SmalltalkChunkFileSourceWriter.st,v 1.19 2012-12-17 12:48:08 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: SmalltalkChunkFileSourceWriter.st 10862 2012-11-08 00:01:28Z vranyj1 $'
+    ^ '§ Id: SmalltalkChunkFileSourceWriter.st 10643 2011-06-08 21:53:07Z vranyj1  §'
 ! !
+
--- a/SmalltalkDesktop.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/SmalltalkDesktop.st	Sat Jan 19 01:30:00 2013 +0000
@@ -58,10 +58,10 @@
 
 !SmalltalkDesktop class methodsFor:'documentation'!
 
-version
-    ^'$Id: SmalltalkDesktop.st 10717 2011-10-11 15:53:59Z vranyj1 $'
+version_CVS
+    ^ '$Header: /cvs/stx/stx/libbasic/SmalltalkDesktop.st,v 1.1 2011-06-28 10:09:43 vrany Exp $'
 !
 
 version_SVN
-    ^ '$Id: SmalltalkDesktop.st 10717 2011-10-11 15:53:59Z vranyj1 $'
+    ^ ' Id: SmalltalkDesktop.st 10524 2010-05-20 13:35:23Z vranyj1  '
 ! !
--- a/SmalltalkLanguage.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/SmalltalkLanguage.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1,14 +1,3 @@
-"
- COPYRIGHT (c) 2006 by eXept Software AG
-	      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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
-"
 "{ Package: 'stx:libbasic' }"
 
 ProgrammingLanguage subclass:#SmalltalkLanguage
@@ -20,20 +9,6 @@
 
 !SmalltalkLanguage class methodsFor:'documentation'!
 
-copyright
-"
- COPYRIGHT (c) 2006 by eXept Software AG
-	      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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
-"
-!
-
 documentation
 "
     provide info about which tools are to be used for smalltalk code
@@ -204,16 +179,13 @@
 !SmalltalkLanguage class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/SmalltalkLanguage.st,v 1.20 2012/10/02 15:16:27 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SmalltalkLanguage.st,v 1.20 2012-10-02 15:16:27 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SmalltalkLanguage.st,v 1.20 2012/10/02 15:16:27 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/SmalltalkLanguage.st,v 1.20 2012-10-02 15:16:27 cg Exp $'
 !
 
 version_SVN
-    ^'$Id: SmalltalkLanguage.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^'§Id: SmalltalkLanguage.st 10468 2009-08-22 08:34:50Z vranyj1 §'
 ! !
-
-
-
--- a/SortedCollection.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/SortedCollection.st	Sat Jan 19 01:30:00 2013 +0000
@@ -753,45 +753,6 @@
 
 !SortedCollection methodsFor:'private'!
 
-indexForInserting:anObject
-    "search the index at which to insert anObject.
-     Can also be used to search for an existing element
-     by checking if the element at the returned index is the one we look for.
-     Uses a binarySearch since we can depend on the elements being in sorted order.
-     The returned index is a physical one, for accessing contentsArray."
-
-    |low    "{ Class: SmallInteger}"
-     high   "{ Class: SmallInteger}"
-     middle "{ Class: SmallInteger}"
-     element|
-
-    "
-     we can of course use a binary search - since the elements are sorted
-    "
-    low := firstIndex.
-    high := lastIndex.
-    [low > high] whileFalse:[
-        middle := (low + high) // 2.
-        element := contentsArray at:middle.
-        (sortBlock value:element value:anObject) ifTrue:[
-            "middleelement is smaller than object"
-            low := middle + 1
-        ] ifFalse:[
-            high := middle - 1
-        ]
-    ].
-    ^ low
-
-    "
-     #(1 2 3 4 7 99 1313 981989 898989898) asSortedCollection indexForInserting:50
-
-     #(1.0 2.0 3 4 7 49.0 51.0 99 1313 981989 898989898) asSortedCollection indexForInserting:50
-
-    "
-
-    "Modified: 12.4.1996 / 13:22:03 / cg"
-!
-
 setSortBlock: aSortBlock
     "set the sortblock without resorting - private only"
 
@@ -873,6 +834,45 @@
     "
 !
 
+indexForInserting:anObject
+    "search the index at which to insert anObject.
+     Can also be used to search for an existing element
+     by checking if the element at the returned index is the one we look for.
+     Uses a binarySearch since we can depend on the elements being in sorted order.
+     The returned index is a physical one, for accessing contentsArray."
+
+    |low    "{ Class: SmallInteger}"
+     high   "{ Class: SmallInteger}"
+     middle "{ Class: SmallInteger}"
+     element|
+
+    "
+     we can of course use a binary search - since the elements are sorted
+    "
+    low := firstIndex.
+    high := lastIndex.
+    [low > high] whileFalse:[
+        middle := (low + high) // 2.
+        element := contentsArray at:middle.
+        (sortBlock value:element value:anObject) ifTrue:[
+            "middleelement is smaller than object"
+            low := middle + 1
+        ] ifFalse:[
+            high := middle - 1
+        ]
+    ].
+    ^ low
+
+    "
+     #(1 2 3 4 7 99 1313 981989 898989898) asSortedCollection indexForInserting:50
+
+     #(1.0 2.0 3 4 7 49.0 51.0 99 1313 981989 898989898) asSortedCollection indexForInserting:50
+
+    "
+
+    "Modified: 12.4.1996 / 13:22:03 / cg"
+!
+
 indexOf:anElement
     "Return the index of anElement within the receiver.
      If the receiver does not contain anElement, return 0."
@@ -990,15 +990,11 @@
 !SortedCollection class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/SortedCollection.st,v 1.76 2012/08/10 19:28:52 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SortedCollection.st,v 1.76 2012-08-10 19:28:52 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SortedCollection.st,v 1.76 2012/08/10 19:28:52 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: SortedCollection.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SortedCollection.st,v 1.76 2012-08-10 19:28:52 stefan Exp $'
 ! !
 
 SortedCollection initialize!
--- a/StandaloneStartup.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/StandaloneStartup.st	Sat Jan 19 01:30:00 2013 +0000
@@ -697,6 +697,10 @@
     "Created: / 19-09-2006 / 16:26:44 / cg"
 !
 
+commandLineArguments
+    ^ CommandLineArguments
+!
+
 iconInBrowserSymbol
     <resource: #programImage>
 
@@ -1154,15 +1158,11 @@
 !StandaloneStartup class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/StandaloneStartup.st,v 1.69 2012/08/14 08:21:54 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/StandaloneStartup.st,v 1.70 2012-12-05 15:38:04 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/StandaloneStartup.st,v 1.69 2012/08/14 08:21:54 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: StandaloneStartup.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/StandaloneStartup.st,v 1.70 2012-12-05 15:38:04 cg Exp $'
 ! !
 
 StandaloneStartup initialize!
--- a/Stream.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Stream.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1718,7 +1718,7 @@
 nextPutUtf8:aCharacter
     "append my UTF-8 representation to the argument, aStream.
      Up to 31 bits can be encoded in up to 6 bytes.
-     However, currently, characters are limited to 16 bits."
+     However, currently, characters are limited to 31 bits."
 
     |codePoint b1 b2 b3 b4 b5 v|
 
@@ -1774,6 +1774,7 @@
             s nextPutUtf8:$ü.
             s nextPutUtf8: (Character value:16r1fff).
             s nextPutUtf8: (Character value:16rffff).
+            s nextPutUtf8: (Character value:16r1ffffff).
             s nextPutUtf8: (Character value:16r800).
       ])
             asByteArray
@@ -2584,6 +2585,7 @@
     "Modified: / 19.5.1998 / 17:26:25 / cg"
 ! !
 
+
 !Stream methodsFor:'testing'!
 
 atEnd
@@ -3282,15 +3284,11 @@
 !Stream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Stream.st,v 1.195 2012/10/25 22:19:33 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Stream.st,v 1.196 2012-12-14 10:13:32 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Stream.st,v 1.195 2012/10/25 22:19:33 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Stream.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Stream.st,v 1.196 2012-12-14 10:13:32 stefan Exp $'
 ! !
 
 Stream initialize!
--- a/StreamError.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/StreamError.st	Sat Jan 19 01:30:00 2013 +0000
@@ -53,16 +53,9 @@
 !StreamError class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/StreamError.st,v 1.7 2010/02/04 11:42:34 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/StreamError.st,v 1.7 2010-02-04 11:42:34 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/StreamError.st,v 1.7 2010/02/04 11:42:34 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: StreamError.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/StreamError.st,v 1.7 2010-02-04 11:42:34 stefan Exp $'
 ! !
-
-
-
--- a/String.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/String.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
 "
  COPYRIGHT (c) 1988 by Claus Gittinger
 	      All Rights Reserved
@@ -90,6 +92,7 @@
 	return(0);
     return(1);
 }
+
 %}
 ! !
 
@@ -476,10 +479,10 @@
     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 := 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.
 !
@@ -494,6 +497,7 @@
 ! !
 
 
+
 !String class methodsFor:'queries'!
 
 defaultPlatformClass
@@ -514,6 +518,7 @@
 ! !
 
 
+
 !String methodsFor:'Compatibility-VW5.4'!
 
 asGUID
@@ -691,11 +696,11 @@
     cls = __qClass(slf);
     indx = 0;
     if (cls != String) {
-	if (indx < 0) goto badIndex;
-	indx += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+        if (indx < 0) goto badIndex;
+        indx += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
     }
     if ((unsigned)indx < (unsigned)(__stringSize(slf))) {
-	RETURN ( __MKCHARACTER(__stringVal(slf)[indx] & 0xFF) );
+        RETURN ( __MKCHARACTER(__stringVal(slf)[indx] & 0xFF) );
     }
 badIndex: ;
 %}.
@@ -707,6 +712,7 @@
     "
 ! !
 
+
 !String methodsFor:'character searching'!
 
 identityIndexOf:aCharacter
@@ -755,40 +761,40 @@
     OBJ cls;
 
     if (__isStringLike(aCollection)) {
-	matchP = __stringVal(aCollection);
-	cp = __stringVal(self);
-	if ((cls = __qClass(self)) != String)
-	    cp += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-
-	switch (__stringSize(aCollection)) {
-	    case 3:
-		/* three character search */
-		if (strchr(cp, matchP[2])) {
-		    RETURN ( true );
-		}
-		/* fall into */
-	    case 2:
-		/* two character search */
-		if (strchr(cp, matchP[1])) {
-		    RETURN ( true );
-		}
-		/* fall into */
-	    case 1:
-		/* single character search */
-		if (strchr(cp, matchP[0])) {
-		    RETURN ( true );
-		}
-		/* fall into */
-	    case 0:
-		RETURN ( false );
-	}
-	while (*cp) {
-	    if (strchr(matchP, *cp)) {
-		RETURN ( true );
-	    }
-	    cp++;
-	}
-	RETURN ( false );
+        matchP = __stringVal(aCollection);
+        cp = __stringVal(self);
+        if ((cls = __qClass(self)) != String)
+            cp += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+
+        switch (__stringSize(aCollection)) {
+            case 3:
+                /* three character search */
+                if (strchr(cp, matchP[2])) {
+                    RETURN ( true );
+                }
+                /* fall into */
+            case 2:
+                /* two character search */
+                if (strchr(cp, matchP[1])) {
+                    RETURN ( true );
+                }
+                /* fall into */
+            case 1:
+                /* single character search */
+                if (strchr(cp, matchP[0])) {
+                    RETURN ( true );
+                }
+                /* fall into */
+            case 0:
+                RETURN ( false );
+        }
+        while (*cp) {
+            if (strchr(matchP, *cp)) {
+                RETURN ( true );
+            }
+            cp++;
+        }
+        RETURN ( false );
     }
 %}.
     ^ super includesAny:aCollection
@@ -826,77 +832,77 @@
     OBJ cls;
 
     if (__isSmallInteger(start)) {
-	index = __intVal(start);
-	if (index > 0) {
-	    if (__isCharacter(aCharacter)) {
-		byteValue = __intVal(_characterVal(aCharacter));
-		if (byteValue <= 0xFF) {
-		    last = __stringSize(self);
-		    cp = __stringVal(self);
-		    if ((cls = __qClass(self)) != String) {
-			int numInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-
-			cp += numInstBytes;
-			last += numInstBytes;
-		    }
-		    if (index <= last) {
+        index = __intVal(start);
+        if (index > 0) {
+            if (__isCharacter(aCharacter)) {
+                byteValue = __intVal(_characterVal(aCharacter));
+                if (byteValue <= 0xFF) {
+                    last = __stringSize(self);
+                    cp = __stringVal(self);
+                    if ((cls = __qClass(self)) != String) {
+                        int numInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+
+                        cp += numInstBytes;
+                        last += numInstBytes;
+                    }
+                    if (index <= last) {
 #ifdef FAST_MEMCHR    
-			ncp = (unsigned char *) memchr(cp+index-1, byteValue, last+1-index);
-			if (ncp) {
-			    RETURN ( __mkSmallInteger(ncp - cp + 1) );
-			}
+                        ncp = (unsigned char *) memchr(cp+index-1, byteValue, last+1-index);
+                        if (ncp) {
+                            RETURN ( __mkSmallInteger(ncp - cp + 1) );
+                        }
 #else
 # ifdef __UNROLL_LOOPS__
-			{
-			    int last3 = last-3;
-
-			    for (; index <= last3; index += 4) {
-				if (cp[index-1] == byteValue) { RETURN ( __mkSmallInteger(index) ); }
-				if (cp[index-1+1] == byteValue) { RETURN ( __mkSmallInteger(index+1) ); }
-				if (cp[index-1+2] == byteValue) { RETURN ( __mkSmallInteger(index+2) ); }
-				if (cp[index-1+3] == byteValue) { RETURN ( __mkSmallInteger(index+3) ); }
-			    }
-			}
+                        {
+                            int last3 = last-3;
+
+                            for (; index <= last3; index += 4) {
+                                if (cp[index-1] == byteValue) { RETURN ( __mkSmallInteger(index) ); }
+                                if (cp[index-1+1] == byteValue) { RETURN ( __mkSmallInteger(index+1) ); }
+                                if (cp[index-1+2] == byteValue) { RETURN ( __mkSmallInteger(index+2) ); }
+                                if (cp[index-1+3] == byteValue) { RETURN ( __mkSmallInteger(index+3) ); }
+                            }
+                        }
 # endif
 # ifdef V1
-			for (; index <= last; index++) {
-			    if (cp[index-1] == byteValue) {
-				RETURN ( __mkSmallInteger(index) );
-			    }
-			}
+                        for (; index <= last; index++) {
+                            if (cp[index-1] == byteValue) {
+                                RETURN ( __mkSmallInteger(index) );
+                            }
+                        }
 # endif
 # ifdef V2
-			{
-			    // see bit twiddling hacks
+                        {
+                            // see bit twiddling hacks
 #                           define hasZeroByte(v) (((v) - 0x01010101UL) & ~(v) & 0x80808080UL)
 #                           define hasByteM(v,m)   hasZeroByte( (v) ^ m)
 
-			    // the following loop checks four bytes at once
-			    if (((index-1) & 0x3) == 0) {
-				int last4 = last-4;
-				int m = (~0UL/255 * (byteValue));
-
-				while (index <= last4) {
-				    unsigned int v = *(unsigned int *)(cp+index-1);
-
-				    if (hasByteM(v,m)) break;
-				    index += 4;
-				}
-			    }
-			    while (index <= last) {
-				if (cp[index-1] == byteValue) {
-				    RETURN ( __mkSmallInteger(index) );
-				}
-				index++;
-			    }
-			}
+                            // the following loop checks four bytes at once
+                            if (((index-1) & 0x3) == 0) {
+                                int last4 = last-4;
+                                int m = (~0UL/255 * (byteValue));
+
+                                while (index <= last4) {
+                                    unsigned int v = *(unsigned int *)(cp+index-1);
+
+                                    if (hasByteM(v,m)) break;
+                                    index += 4;
+                                }
+                            }
+                            while (index <= last) {
+                                if (cp[index-1] == byteValue) {
+                                    RETURN ( __mkSmallInteger(index) );
+                                }
+                                index++;
+                            }
+                        }
 # endif
 #endif
-		    }
-		}
-	    }
-	    RETURN ( __mkSmallInteger(0) );
-	}
+                    }
+                }
+            }
+            RETURN ( __mkSmallInteger(0) );
+        }
     }
 #undef V2
 %}.
@@ -998,14 +1004,14 @@
      s atAllPut:$a.
      s at:512 put:(Character space).
      Time millisecondsToRun:[
-	1000000 timesRepeat:[ s indexOf:(Character space) ]
+        1000000 timesRepeat:[ s indexOf:(Character space) ]
      ]         
 
      timing (ms):
         v1: 1763 normal   
             2340 +unroll   
-	    3308 memsrch !!
-	v2: 1045
+            3308 memsrch !!
+        v2: 1045
     "
 
     "Modified: / 10-01-2012 / 17:09:34 / cg"
@@ -1028,76 +1034,76 @@
 
     if (__isSmallInteger(start)
      && __isStringLike(aCollectionOfCharacters)) {
-	matchP = __stringVal(aCollectionOfCharacters);
-	index = __intVal(start);
-	if (index > 0) {
-	    cp = __stringVal(self) + index - 1;
-	    if ((cls = __qClass(self)) != String) {
-		cp += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-	    }
-	    len = __stringSize(self);
-	    if (index <= len) {
-
-		if (matchP[0] == 0) {
-		    /* matchSet is empty */
-		    RETURN ( __mkSmallInteger(0) );
-		}
-
-		if (matchP[1] == 0) {
-		    /* only a single character match */
-		    unsigned char m = matchP[0];
+        matchP = __stringVal(aCollectionOfCharacters);
+        index = __intVal(start);
+        if (index > 0) {
+            cp = __stringVal(self) + index - 1;
+            if ((cls = __qClass(self)) != String) {
+                cp += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+            }
+            len = __stringSize(self);
+            if (index <= len) {
+
+                if (matchP[0] == 0) {
+                    /* matchSet is empty */
+                    RETURN ( __mkSmallInteger(0) );
+                }
+
+                if (matchP[1] == 0) {
+                    /* only a single character match */
+                    unsigned char m = matchP[0];
 
     #ifdef FAST_MEMCHR
-		    ccp = (unsigned char *) memchr(cp, m, len+1-index);
-		    if (ccp) {
-			RETURN ( __mkSmallInteger((ccp - cp) + index + 1) );
-		    }
+                    ccp = (unsigned char *) memchr(cp, m, len+1-index);
+                    if (ccp) {
+                        RETURN ( __mkSmallInteger((ccp - cp) + index + 1) );
+                    }
     #else
-		    while (c = *cp++) {
-			if (c == m) {
-			    RETURN ( __mkSmallInteger(index) );
-			}
-			index++;
-		    }
+                    while (c = *cp++) {
+                        if (c == m) {
+                            RETURN ( __mkSmallInteger(index) );
+                        }
+                        index++;
+                    }
     #endif
-		    RETURN ( __mkSmallInteger(0) );
-		}
-
-		if (matchP[2] == 0) {
-		    /* two character matches */
-		    unsigned char m1 = matchP[0];
-		    unsigned char m2 = matchP[1];
-
-		    while (c = *cp++) {
-			if ((c == m1) || (c == m2)) {
-			    RETURN ( __mkSmallInteger(index) );
-			}
-			index++;
-		    }
-		    RETURN ( __mkSmallInteger(0) );
-		}
-
-		min = max = matchP[0];
-
-		for (ccp = matchP+1; *ccp ; ccp++) {
-		    unsigned char c = *ccp;
-		    if (c < min) min = c;
-		    else if (c > max) max = c;
-		}
-
-		while (c = *cp++) {
-		    if ((c >= min) && (c <= max)) {
-			for (ccp = matchP; *ccp ; ccp++) {
-			    if (*ccp == c) {
-				RETURN ( __mkSmallInteger(index) );
-			    }
-			}
-		    }
-		    index++;
-		}
-	    }
-	    RETURN ( __mkSmallInteger(0) );
-	}
+                    RETURN ( __mkSmallInteger(0) );
+                }
+
+                if (matchP[2] == 0) {
+                    /* two character matches */
+                    unsigned char m1 = matchP[0];
+                    unsigned char m2 = matchP[1];
+
+                    while (c = *cp++) {
+                        if ((c == m1) || (c == m2)) {
+                            RETURN ( __mkSmallInteger(index) );
+                        }
+                        index++;
+                    }
+                    RETURN ( __mkSmallInteger(0) );
+                }
+
+                min = max = matchP[0];
+
+                for (ccp = matchP+1; *ccp ; ccp++) {
+                    unsigned char c = *ccp;
+                    if (c < min) min = c;
+                    else if (c > max) max = c;
+                }
+
+                while (c = *cp++) {
+                    if ((c >= min) && (c <= max)) {
+                        for (ccp = matchP; *ccp ; ccp++) {
+                            if (*ccp == c) {
+                                RETURN ( __mkSmallInteger(index) );
+                            }
+                        }
+                    }
+                    index++;
+                }
+            }
+            RETURN ( __mkSmallInteger(0) );
+        }
     }
 %}.
     "/
@@ -1111,7 +1117,7 @@
      'hello world' indexOfAny:'AOE' startingAt:1
      'hello world' indexOfAny:'o' startingAt:6
      'hello world' indexOfAny:'o' startingAt:6
-     'hello world§' indexOfAny:'#§$' startingAt:6
+     'hello worldĀ§' indexOfAny:'#Ā§$' startingAt:6
     "
 !
 
@@ -1250,43 +1256,43 @@
     OBJ cls;
 
     if (__isCharacter(aCharacter)) {
-	limit = __stringSize(self);
-	count = 0;
-	byteValue = __intVal(_characterVal(aCharacter));
-	if (byteValue <= 0xFF) {
-	    cp = __stringVal(self);
-	    if ((cls = __qClass(self)) != String) {
-		int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-		limit -= n;
-		cp += n;
-	    }
+        limit = __stringSize(self);
+        count = 0;
+        byteValue = __intVal(_characterVal(aCharacter));
+        if (byteValue <= 0xFF) {
+            cp = __stringVal(self);
+            if ((cls = __qClass(self)) != String) {
+                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+                limit -= n;
+                cp += n;
+            }
             /* loop unrolled and software-pipelined 
-	     * (gives 30-40% speedup on Intel-DUO using borland bcc55)
-	     */
-	    while (limit >= 4) {
-		register unsigned char c1, c2;
-
-		c1 = cp[0];
-		limit -= 4;
-		c2 = cp[1];
-		if (c1 == byteValue) count++;
-		c1 = cp[2];
-		if (c2 == byteValue) count++;
-		c2 = cp[3];
-		if (c1 == byteValue) count++;
-		cp += 4;
-		if (c2 == byteValue) count++;
-	    }
-	    while (limit > 0) {
-		register unsigned char c1;
-
-		c1 = cp[0];
-		limit--;
-		if (c1 == byteValue) count++;
-		cp ++;
-	    }
-	}
-	RETURN ( __mkSmallInteger(count) );
+             * (gives 30-40% speedup on Intel-DUO using borland bcc55)
+             */
+            while (limit >= 4) {
+                register unsigned char c1, c2;
+
+                c1 = cp[0];
+                limit -= 4;
+                c2 = cp[1];
+                if (c1 == byteValue) count++;
+                c1 = cp[2];
+                if (c2 == byteValue) count++;
+                c2 = cp[3];
+                if (c1 == byteValue) count++;
+                cp += 4;
+                if (c2 == byteValue) count++;
+            }
+            while (limit > 0) {
+                register unsigned char c1;
+
+                c1 = cp[0];
+                limit--;
+                if (c1 == byteValue) count++;
+                cp ++;
+            }
+        }
+        RETURN ( __mkSmallInteger(count) );
     }
 %}.
     ^ super occurrencesOf:aCharacter
@@ -1298,7 +1304,7 @@
      'hello world' occurrencesOf:$x
      'hello world' occurrencesOf:1
      Time millisecondsToRun:[
-	1000000 timesRepeat:[ 'abcdefghijklmn' occurrencesOf:$x ]
+        1000000 timesRepeat:[ 'abcdefghijklmn' occurrencesOf:$x ]
      ]. 219 203 156 203 204 204 219 172 187 187 141
     "
 ! !
@@ -1316,53 +1322,49 @@
 %{  /* NOCONTEXT */
 
     int len1, len2, cmp;
-    REGISTER OBJ s = aString;
     unsigned char *cp1, *cp2;
-    OBJ cls;
-    OBJ myCls;
-
-    if (__isNonNilObject(s)) {
-	cls = __qClass(s);
-	myCls = __qClass(self);
-
-	if ((cls == String) || (cls == Symbol) || (cls == myCls)) {
-	    cp2 = __stringVal(s);
-	    len2 = __stringSize(s);
-	    /*
-	     * care for instances of subclasses ...
-	     */
-	    if (cls != String) {
-		int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-
-		cp2 += n;
-		len2 -= n;
-	    }
-
-	    cp1 = __stringVal(self);
-	    len1 = __stringSize(self);
-	    /*
-	     * care for instances of subclasses ...
-	     */
-	    if (myCls != String) {
-		int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(myCls)->c_ninstvars));
-
-		cp1 += n;
-		len1 -= n;
-	    }
-
-	    if (len1 <= len2)
-		cmp = strncmp(cp1, cp2, len1);
-	    else
-		cmp = strncmp(cp1, cp2, len2);
-
-	    if (cmp < 0) {
-		RETURN ( true );
-	    }
-	    if ((cmp == 0) && (len1 < len2)) {
-		RETURN ( true );
-	    }
-	    RETURN ( false );
-	}
+    int argIsString;
+
+    if (__isNonNilObject(aString)) {
+        argIsString = __qIsStringLike(aString);
+        if (argIsString || __qClass(aString) == __qClass(self)) {
+            cp2 = __stringVal(aString);
+            len2 = __stringSize(aString);
+            /*
+             * care for instances of subclasses ...
+             */
+            if (!argIsString) {
+                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aString))->c_ninstvars));
+
+                cp2 += n;
+                len2 -= n;
+            }
+
+            cp1 = __stringVal(self);
+            len1 = __stringSize(self);
+            /*
+             * care for instances of subclasses ...
+             */
+            if (!__qIsStringLike(self)) {
+                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
+
+                cp1 += n;
+                len1 -= n;
+            }
+
+            if (len1 <= len2)
+                cmp = strncmp(cp1, cp2, len1);
+            else
+                cmp = strncmp(cp1, cp2, len2);
+
+            if (cmp < 0) {
+                RETURN ( true );
+            }
+            if ((cmp == 0) && (len1 < len2)) {
+                RETURN ( true );
+            }
+            RETURN ( false );
+        }
     }
 %}.
     ^ super < aString
@@ -1377,95 +1379,91 @@
 %{  /* NOCONTEXT */
 
     int l1, l2;
-    REGISTER OBJ s = aString;
     unsigned char *cp1, *cp2;
-    OBJ cls;
-    OBJ myCls;
     INT addrDelta;
-
-    if (s == self) {
-	RETURN ( true );
+    int argIsString;
+
+    if (aString == self) {
+        RETURN ( true );
     }
-    if (! __isNonNilObject(s)) {
-	RETURN ( false );
+    if (! __isNonNilObject(aString)) {
+        RETURN ( false );
     }
 
-    cls = __qClass(s);
-    myCls = __qClass(self);
-
-    if ((cls == myCls) || (cls == String) || (cls == Symbol)) {
-	cp2 = __stringVal(s);
-	l2 = __stringSize(s);
-	/*
-	 * care for instances of subclasses ...
-	 */
-	if (cls != String) {
-	    int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-
-	    cp2 += n;
-	    l2 -= n;
-	}
-
-	cp1 = __stringVal(self);
-	l1 = __stringSize(self);
-	/*
-	 * care for instances of subclasses ...
-	 */
-	if (myCls != String) {
-	    int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(myCls)->c_ninstvars));
-
-	    cp1 += n;
-	    l1 -= n;
-	}
-
-	if (l1 != l2) {
-	    RETURN ( false );
-	}
+    argIsString = __qIsStringLike(aString);
+    if (argIsString || __qClass(aString) == __qClass(self)) {
+        cp2 = __stringVal(aString);
+        l2 = __stringSize(aString);
+        /*
+         * care for instances of subclasses ...
+         */
+        if (!argIsString) {
+            int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aString))->c_ninstvars));
+
+            cp2 += n;
+            l2 -= n;
+        }
+
+        cp1 = __stringVal(self);
+        l1 = __stringSize(self);
+        /*
+         * care for instances of subclasses ...
+         */
+        if (!__qIsStringLike(self)) {
+            int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
+
+            cp1 += n;
+            l1 -= n;
+        }
+
+        if (l1 != l2) {
+            RETURN ( false );
+        }
 #ifdef FAST_MEMCMP
-	RETURN ( (memcmp(cp1, cp2, l1) == 0) ? true : false );
+        RETURN ( (memcmp(cp1, cp2, l1) == 0) ? true : false );
 #else
-	addrDelta = cp2 - cp1;
+        addrDelta = cp2 - cp1;
 # ifdef __UNROLL_LOOPS__
-	while (l1 >= (sizeof(unsigned INT)*4)) {
-	    if (((unsigned INT *)cp1)[0] != ((unsigned INT *)(cp1+addrDelta))[0]) {
-		RETURN (false);
-	    }
-	    if (((unsigned INT *)cp1)[1] != ((unsigned INT *)(cp1+addrDelta))[1]) {
-		RETURN (false);
-	    }
-	    if (((unsigned INT *)cp1)[2] != ((unsigned INT *)(cp1+addrDelta))[2]) {
-		RETURN (false);
-	    }
-	    if (((unsigned INT *)cp1)[3] != ((unsigned INT *)(cp1+addrDelta))[3]) {
-		RETURN (false);
-	    }
-	    l1 -= (sizeof(unsigned INT) * 4);
-	    cp1 += (sizeof(unsigned INT) * 4);
-	}
+        while (l1 >= (sizeof(unsigned INT)*4)) {
+            if (((unsigned INT *)cp1)[0] != ((unsigned INT *)(cp1+addrDelta))[0]) {
+                RETURN (false);
+            }
+            if (((unsigned INT *)cp1)[1] != ((unsigned INT *)(cp1+addrDelta))[1]) {
+                RETURN (false);
+            }
+            if (((unsigned INT *)cp1)[2] != ((unsigned INT *)(cp1+addrDelta))[2]) {
+                RETURN (false);
+            }
+            if (((unsigned INT *)cp1)[3] != ((unsigned INT *)(cp1+addrDelta))[3]) {
+                RETURN (false);
+            }
+            l1 -= (sizeof(unsigned INT) * 4);
+            cp1 += (sizeof(unsigned INT) * 4);
+        }
 # endif /* __UNROLL_LOOPS__ */
-	while (l1 >= sizeof(unsigned INT)) {
-	    if (*((unsigned INT *)cp1) != *((unsigned INT *)(cp1+addrDelta))) {
-		RETURN (false);
-	    }
-	    l1 -= sizeof(unsigned INT);
-	    cp1 += sizeof(unsigned INT);
-	}
-	if (l1 >= sizeof(unsigned short)) {
-	    if (*((unsigned short *)cp1) != *((unsigned short *)(cp1+addrDelta))) {
-		RETURN (false);
-	    }
-	    l1 -= sizeof(unsigned short);
-	    cp1 += sizeof(unsigned short);
-	}
-	while (l1) {
-	    if (*cp1 != *(cp1+addrDelta)) {
-		RETURN (false);
-	    }
-	    l1--;
-	    cp1++;
-	}
-
-	RETURN (true);
+        while (l1 >= sizeof(unsigned INT)) {
+            if (*((unsigned INT *)cp1) != *((unsigned INT *)(cp1+addrDelta))) {
+                RETURN (false);
+            }
+            l1 -= sizeof(unsigned INT);
+            cp1 += sizeof(unsigned INT);
+        }
+        if (l1 >= sizeof(unsigned short)) {
+            if (*((unsigned short *)cp1) != *((unsigned short *)(cp1+addrDelta))) {
+                RETURN (false);
+            }
+            l1 -= sizeof(unsigned short);
+            cp1 += sizeof(unsigned short);
+        }
+        while (l1) {
+            if (*cp1 != *(cp1+addrDelta)) {
+                RETURN (false);
+            }
+            l1--;
+            cp1++;
+        }
+
+        RETURN (true);
 #endif
     }
 %}.
@@ -1480,10 +1478,10 @@
      |tEmpty tCmp|
 
      tEmpty := Time millisecondsToRun:[
-	 1000000 timesRepeat:[]
+         1000000 timesRepeat:[]
      ].
      tCmp := Time millisecondsToRun:[
-	 1000000 timesRepeat:[ '1234567890' = '1234567890' ]
+         1000000 timesRepeat:[ '1234567890' = '1234567890' ]
      ].
      tCmp - tEmpty
     "
@@ -1500,73 +1498,54 @@
 %{  /* NOCONTEXT */
 
     int len1, len2, cmp;
-    REGISTER OBJ s = aString;
     unsigned char *cp1, *cp2;
-    OBJ cls;
-    OBJ myCls;
-
-    if (__isNonNilObject(s)) {
-	cls = __qClass(s);
-	myCls = __qClass(self);
-
-	if ((cls == String) || (cls == Symbol) || (cls == myCls)) {
-	    cp2 = __stringVal(s);
-	    len2 = __stringSize(s);
-	    /*
-	     * care for instances of subclasses ...
-	     */
-	    if (cls != String) {
-		int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-
-		cp2 += n;
-		len2 -= n;
-	    }
-
-	    cp1 = __stringVal(self);
-	    len1 = __stringSize(self);
-	    /*
-	     * care for instances of subclasses ...
-	     */
-	    if (myCls != String) {
-		int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(myCls)->c_ninstvars));
-
-		cp1 += n;
-		len1 -= n;
-	    }
-
-	    if (len1 <= len2)
-		cmp = strncmp(cp1, cp2, len1);
-	    else
-		cmp = strncmp(cp1, cp2, len2);
-
-	    if (cmp > 0) {
-		RETURN ( true );
-	    }
-	    if ((cmp == 0) && (len1 > len2)) {
-		RETURN ( true );
-	    }
-	    RETURN ( false );
-	}
+    int argIsString;
+
+    if (__isNonNilObject(aString)) {
+        argIsString = __qIsStringLike(aString);
+        if (argIsString || __qClass(aString) == __qClass(self)) {
+            cp2 = __stringVal(aString);
+            len2 = __stringSize(aString);
+            /*
+             * care for instances of subclasses ...
+             */
+            if (!argIsString) {
+                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aString))->c_ninstvars));
+
+                cp2 += n;
+                len2 -= n;
+            }
+
+            cp1 = __stringVal(self);
+            len1 = __stringSize(self);
+            /*
+             * care for instances of subclasses ...
+             */
+            if (!__qIsStringLike(self)) {
+                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
+
+                cp1 += n;
+                len1 -= n;
+            }
+
+            if (len1 <= len2)
+                cmp = strncmp(cp1, cp2, len1);
+            else
+                cmp = strncmp(cp1, cp2, len2);
+
+            if (cmp > 0) {
+                RETURN ( true );
+            }
+            if ((cmp == 0) && (len1 > len2)) {
+                RETURN ( true );
+            }
+            RETURN ( false );
+        }
     }
 %}.
     ^ super > aString
 !
 
-after:aString
-    "Compare the receiver with the argument and return true if the
-     receiver should come after the argument in a sorted list.
-     Otherwise return false.
-     The comparison is language specific, depending on the value of
-     LC_COLLATE, which is initialized from the environment.
-
-     STUPID:
-	#after has a completely different meaning in SeqColl ..."
-
-    ^ (self compareCollatingWith:aString) > 0
-
-    "Modified: 10.5.1996 / 14:02:45 / cg"
-!
-
 compareCollatingWith:aString
     "Compare the receiver with the argument and return 1 if the receiver is
      greater, 0 if equal and -1 if less than the argument in a sorted list.
@@ -1576,51 +1555,47 @@
 %{  /* NOCONTEXT */
 
     int cmp;
-    REGISTER OBJ s = aString;
     unsigned char *cp1, *cp2;
-    OBJ cls;
-    OBJ myCls;
-
-    if (__isNonNilObject(s)) {
-	cls = __qClass(s);
-	myCls = __qClass(self);
-
-	if (__isStringLike(s) || (cls == myCls)) {
-	    cp1 = __stringVal(self);
-
-	    /*
-	     * care for instances of subclasses ...
-	     */
-	    if (myCls != String) {
-		int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(myCls)->c_ninstvars));
-
-		cp1 += n;
-	    }
-
-	    cp2 = __stringVal(s);
-	    /*
-	     * care for instances of subclasses ...
-	     */
-	    if (cls != String) {
-		int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-
-		cp2 += n;
-	    }
+    int argIsString;
+
+    if (__isNonNilObject(aString)) {
+        argIsString = __qIsStringLike(aString);
+        if (argIsString || __qClass(aString) == __qClass(self)) {
+            cp1 = __stringVal(self);
+
+            /*
+             * care for instances of subclasses ...
+             */
+            if (!__qIsStringLike(self)) {
+                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
+
+                cp1 += n;
+            }
+
+            cp2 = __stringVal(aString);
+            /*
+             * care for instances of subclasses ...
+             */
+            if (!argIsString) {
+                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aString))->c_ninstvars));
+
+                cp2 += n;
+            }
 
 #ifdef HAS_STRCOLL
-	    cmp = strcoll(cp1, cp2);
+            cmp = strcoll(cp1, cp2);
 #else
-	    cmp = strcmp(cp1, cp2);
+            cmp = strcmp(cp1, cp2);
 #endif
 
-	    if (cmp > 0) {
-		RETURN ( __mkSmallInteger(1) );
-	    }
-	    if (cmp < 0) {
-		RETURN ( __mkSmallInteger(-1) );
-	    }
-	    RETURN ( __mkSmallInteger(0) );
-	}
+            if (cmp > 0) {
+                RETURN ( __mkSmallInteger(1) );
+            }
+            if (cmp < 0) {
+                RETURN ( __mkSmallInteger(-1) );
+            }
+            RETURN ( __mkSmallInteger(0) );
+        }
     }
 %}.
     "
@@ -1630,6 +1605,106 @@
     ^ self primitiveFailed
 !
 
+compareWith:aString
+    "Compare the receiver with the argument and return 1 if the receiver is
+     greater, 0 if equal and -1 if less than the argument.
+     This comparison is based on the elements' codepoints -
+     i.e. upper/lowercase & national characters are NOT treated specially.
+     'foo' compareWith: 'Foo' will return 1.
+     while 'foo' sameAs:'Foo' will return true"
+
+%{  /* NOCONTEXT */
+
+    int cmp;
+    unsigned char *cp1, *cp2;
+    int argIsString;
+
+    if (__isNonNilObject(aString)) {
+        argIsString = __qIsStringLike(aString);
+        if (argIsString || __qClass(aString) == __qClass(self)) {
+            cp1 = __stringVal(self);
+
+            /*
+             * care for instances of subclasses ...
+             */
+            if (!__qIsStringLike(self)) {
+                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
+
+                cp1 += n;
+            }
+
+            cp2 = __stringVal(aString);
+            /*
+             * care for instances of subclasses ...
+             */
+            if (!argIsString) {
+                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aString))->c_ninstvars));
+
+                cp2 += n;
+            }
+
+            cmp = strcmp(cp1, cp2);
+            if (cmp > 0) {
+                RETURN ( __mkSmallInteger(1) );
+            }
+            if (cmp < 0) {
+                RETURN ( __mkSmallInteger(-1) );
+            }
+            RETURN ( __mkSmallInteger(0) );
+        }
+    }
+%}.
+    "
+     currently, this operation is only defined for strings, symbols
+     and subclasses.
+    "
+    ^ self primitiveFailed
+!
+
+hash
+    "return an integer useful as a hash-key"
+
+%{  /* NOCONTEXT */
+
+    REGISTER unsigned INT val;
+    REGISTER unsigned char *cp;
+    int l;
+
+    cp = __stringVal(self);
+    l = __stringSize(self);
+    if (!__qIsStringLike(self)) {
+        int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
+
+        cp += n;
+        l -= n;
+    }
+
+    /*
+     * this is the sdbm algorithm
+     */
+    val = 0;
+    while (l >= 4) {
+        l -= 4;
+        val = ((val * 65599) & _MAX_INT) + cp[0];
+        val = ((val * 65599) & _MAX_INT) + cp[1];
+        val = ((val * 65599) & _MAX_INT) + cp[2];
+        val = ((val * 65599) & _MAX_INT) + cp[3];
+        cp += 4;
+    }
+    while (l--) {
+        val = ((val * 65599) & _MAX_INT) + *cp++;
+    }
+    RETURN ( __mkSmallInteger(val & _MAX_INT));
+%}
+
+    "
+     'a' hash
+     'ab' hash = 'ab' asUnicode16String hash
+    "
+    
+    "Created: / 26-12-2011 / 13:53:09 / cg"
+!
+
 hash_dragonBook
     "return an integer useful as a hash-key"
 
@@ -1642,10 +1717,10 @@
     cp = __stringVal(self);
     l = __stringSize(self);
     if (__qClass(self) != @global(String)) {
-	int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
-
-	cp += n;
-	l -= n;
+        int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
+
+        cp += n;
+        l -= n;
     }
 
     /*
@@ -1655,30 +1730,28 @@
     val = 0;
     switch (l) {
     default:
-	for (cp0 = cp, cp += l - 1; cp >= cp0; cp--) {
-	    val = (val << 4) + *cp;
-	    if (g = (val & 0xF0000000)) {
-		val ^= g >> 24;
-		val ^= g;
-	    }
-	}
-	break;
-    case 7:
-	val = cp[6] << 4;
+        for (cp0 = cp, cp += l - 1; cp >= cp0; cp--) {
+            val = (val << 4) + *cp;
+            if (g = (val & 0xF0000000)) {
+                val ^= g >> 24;
+                val ^= g;
+            }
+        }
+        break;
     case 6:
-	val = (val + cp[5]) << 4;
+        val = cp[5] << 4;
     case 5:
-	val = (val + cp[4]) << 4;
+        val = (val + cp[4]) << 4;
     case 4:
-	val = (val + cp[3]) << 4;
+        val = (val + cp[3]) << 4;
     case 3:
-	val = (val + cp[2]) << 4;
+        val = (val + cp[2]) << 4;
     case 2:
-	val = (val + cp[1]) << 4;
+        val = (val + cp[1]) << 4;
     case 1:
-	val = val + cp[0];
+        val = val + cp[0];
     case 0:
-	break;
+        break;
     }
 
     /*
@@ -1690,57 +1763,6 @@
 %}
 !
 
-hash_sdbm
-    "return an integer useful as a hash-key"
-
-%{  /* NOCONTEXT */
-
-    REGISTER unsigned ch, val;
-    REGISTER unsigned char *cp;
-    int l;
-
-    cp = __stringVal(self);
-    l = __stringSize(self);
-    if (__qClass(self) != @global(String)) {
-	int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
-
-	cp += n;
-	l -= n;
-    }
-
-    /*
-     * this is the sdbm algorithm
-     */
-    val = 0;
-    while (l >= 4) {
-	l -= 4;
-	ch = cp[0];
-	val = (val * 65599) + ch;
-	ch = cp[1];
-	val = (val * 65599) + ch;
-	ch = cp[2];
-	val = (val * 65599) + ch;
-	ch = cp[3];
-	val = (val * 65599) + ch;
-	cp += 4;
-    }
-    while (l) {
-	l--;
-	ch = *cp++;
-	val = (val * 65599) + ch;
-    }
-    RETURN ( __mkSmallInteger(val & _MAX_INT));
-%}
-
-    "
-     'a' hash_sdbm
-     'ab' hash_sdbm 
-     'ab' asUnicode16String hash_sdbm
-    "
-
-    "Created: / 26-12-2011 / 13:53:09 / cg"
-!
-
 ~= aString
     "Compare the receiver with the argument and return true if the
      receiver is not equal to the argument. Otherwise return false.
@@ -1753,91 +1775,89 @@
 %{  /* NOCONTEXT */
 
     int l1, l2;
-    REGISTER OBJ s = aString;
     unsigned char *cp1, *cp2;
     OBJ cls, myCls;
     INT addrDelta;
-
-    if (s == self) {
-	RETURN ( false );
+    int argIsString;
+
+    if (aString == self) {
+        RETURN ( false );
     }
-    if (! __isNonNilObject(s)) {
-	RETURN ( true );
+    if (! __isNonNilObject(aString)) {
+        RETURN ( true );
     }
 
-    cls = __qClass(s);
-    myCls = __qClass(self);
-
-    if ((cls == String) || (cls == Symbol) || (cls == myCls)) {
-	cp1 = __stringVal(self);
-	l1 = __stringSize(self);
-	/*
-	 * care for instances of subclasses ...
-	 */
-	if (myCls != String) {
-	    int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(myCls)->c_ninstvars));
-
-	    cp1 += n;
-	    l1 -= n;
-	}
-
-	cp2 = __stringVal(s);
-	l2 = __stringSize(s);
-	/*
-	 * care for instances of subclasses ...
-	 */
-	if (cls != String) {
-	    int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-
-	    cp2 += n;
-	    l2 -= n;
-	}
-
-	if (l1 != l2) {
-	    RETURN ( true );
-	}
-
-	addrDelta = cp2 - cp1;
+    argIsString = __qIsStringLike(aString);
+    if (argIsString || __qClass(aString) == __qClass(self)) {
+        cp1 = __stringVal(self);
+        l1 = __stringSize(self);
+        /*
+         * care for instances of subclasses ...
+         */
+        if (!__qIsStringLike(self)) {
+            int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
+
+            cp1 += n;
+            l1 -= n;
+        }
+
+        cp2 = __stringVal(aString);
+        l2 = __stringSize(aString);
+        /*
+         * care for instances of subclasses ...
+         */
+        if (!argIsString) {
+            int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aString))->c_ninstvars));
+
+            cp2 += n;
+            l2 -= n;
+        }
+
+        if (l1 != l2) {
+            RETURN ( true );
+        }
+
+        addrDelta = cp2 - cp1;
 # ifdef __UNROLL_LOOPS__
-	while (l1 >= (sizeof(unsigned INT)*4)) {
-	    if (((unsigned INT *)cp1)[0] != ((unsigned INT *)(cp1+addrDelta))[0]) {
-		RETURN (true);
-	    }
-	    if (((unsigned INT *)cp1)[1] != ((unsigned INT *)(cp1+addrDelta))[1]) {
-		RETURN (true);
-	    }
-	    if (((unsigned INT *)cp1)[2] != ((unsigned INT *)(cp1+addrDelta))[2]) {
-		RETURN (true);
-	    }
-	    if (((unsigned INT *)cp1)[3] != ((unsigned INT *)(cp1+addrDelta))[3]) {
-		RETURN (true);
-	    }
-	    l1 -= (sizeof(unsigned INT) * 4);
-	    cp1 += (sizeof(unsigned INT) * 4);
-	}
+        while (l1 >= (sizeof(unsigned INT)*4)) {
+            if (((unsigned INT *)cp1)[0] != ((unsigned INT *)(cp1+addrDelta))[0]) {
+                RETURN (true);
+            }
+            if (((unsigned INT *)cp1)[1] != ((unsigned INT *)(cp1+addrDelta))[1]) {
+                RETURN (true);
+            }
+            if (((unsigned INT *)cp1)[2] != ((unsigned INT *)(cp1+addrDelta))[2]) {
+                RETURN (true);
+            }
+            if (((unsigned INT *)cp1)[3] != ((unsigned INT *)(cp1+addrDelta))[3]) {
+                RETURN (true);
+            }
+            l1 -= (sizeof(unsigned INT) * 4);
+            cp1 += (sizeof(unsigned INT) * 4);
+        }
 # endif /* __UNROLL_LOOPS__ */
-	while (l1 >= sizeof(unsigned INT)) {
-	    if (*((unsigned INT *)cp1) != *((unsigned INT *)(cp1+addrDelta))) {
-		RETURN (true);
-	    }
-	    l1 -= sizeof(unsigned INT);
-	    cp1 += sizeof(unsigned INT);
-	}
-	if (l1 >= sizeof(unsigned short)) {
-	    if (*((unsigned short *)cp1) != *((unsigned short *)(cp1+addrDelta))) {
-		RETURN (true);
-	    }
-	    l1 -= sizeof(unsigned short);
-	    cp1 += sizeof(unsigned short);
-	}
-	while (l1) {
-	    if (*cp1 != *(cp1+addrDelta)) {
-		RETURN (true);
-	    }
-	    l1--;
-	    cp1++;
-	}
-	RETURN (false);
+        while (l1 >= sizeof(unsigned INT)) {
+            if (*((unsigned INT *)cp1) != *((unsigned INT *)(cp1+addrDelta))) {
+                RETURN (true);
+            }
+            l1 -= sizeof(unsigned INT);
+            cp1 += sizeof(unsigned INT);
+        }
+        if (l1 >= sizeof(unsigned short)) {
+            if (*((unsigned short *)cp1) != *((unsigned short *)(cp1+addrDelta))) {
+                RETURN (true);
+            }
+            l1 -= sizeof(unsigned short);
+            cp1 += sizeof(unsigned short);
+        }
+        while (l1) {
+            if (*cp1 != *(cp1+addrDelta)) {
+                RETURN (true);
+            }
+            l1--;
+            cp1++;
+        }
+        RETURN (false);
     }
 %}.
     ^ super ~= aString
@@ -1849,21 +1869,21 @@
     "Answer an array with all the substrings of the receiver separated by
      separator characters (space, cr, tab, linefeed, formfeed, etc).
      CG: This is ported Squeak code, and I am not sure if it is more efficient than
-	 the inherited one... after all: who added it anyway ?"
+         the inherited one... after all: who added it anyway ?"
 
     | substrings start end |
 
     substrings := OrderedCollection new.
     start := 1.
     [start <= self size] whileTrue: [
-	(self at: start) isSeparator ifFalse: [
-	    end := start + 1.
-	    [end <= self size and: [(self at: end) isSeparator not]]
-		whileTrue: [end := end + 1].
-	    substrings add: (self copyFrom: start to: end - 1).
-	    start := end - 1
-	].
-	start := start + 1
+        (self at: start) isSeparator ifFalse: [
+            end := start + 1.
+            [end <= self size and: [(self at: end) isSeparator not]]
+                whileTrue: [end := end + 1].
+            substrings add: (self copyFrom: start to: end - 1).
+            start := end - 1
+        ].
+        start := start + 1
     ].
     ^ substrings asArray
 !
@@ -1958,9 +1978,10 @@
 
 asPackageId
     "given a package-string as receiver, return a packageId object. 
-     packageIds hide the details of module/directory handling inside the path"
-
-    ^ PackageId from: self asSymbol
+     packageIds hide the details of module/directory handling inside the path.
+     See PackageId for the required format of those strings."
+
+    ^ PackageId from: self
 
     "
      'stx:libbasic' asPackageId  
@@ -2177,88 +2198,84 @@
 
 %{
     int l1, l2, sz;
-    REGISTER OBJ s = aString;
-    REGISTER OBJ _string = String;
-    OBJ myClass, argClass, newString;
-
-    if (__isNonNilObject(s)) {
-	myClass = __qClass(self);
-	argClass = __qClass(s);
-	/*
-	 * can do it here if both are Strings/Symbols:
-	 */
-	if (((myClass == _string) || (myClass == Symbol))
-	 && ((argClass == _string) || (argClass == Symbol))) {
-	    l1 = __stringSize(self);
-	    l2 = __stringSize(s);
-
-	    sz = OHDR_SIZE + l1 + l2 + 1;
-	    __qNew(newString, sz);      /* OBJECT ALLOCATION */
-	    if (newString != nil) {
-		char *cp1, *cp2;
-		REGISTER unsigned char *dstp;
-
-		__InstPtr(newString)->o_class = String;
-		__qSTORE(newString, String);
-		dstp = __stringVal(newString);
-		cp1 = (char *) __stringVal(self);
-		cp2 = (char *) __stringVal(aString);
+    OBJ newString;
+
+    if (__isNonNilObject(aString)) {
+        /*
+         * can do it here if both are Strings/Symbols:
+         */
+        if (__qIsStringLike(self) && __qIsStringLike(aString)) {
+            l1 = __stringSize(self);
+            l2 = __stringSize(aString);
+
+            sz = OHDR_SIZE + l1 + l2 + 1;
+            __qNew(newString, sz);      /* OBJECT ALLOCATION */
+            if (newString != nil) {
+                char *cp1, *cp2;
+                REGISTER unsigned char *dstp;
+
+                __InstPtr(newString)->o_class = String;
+                __qSTORE(newString, String);
+                dstp = __stringVal(newString);
+                cp1 = (char *) __stringVal(self);
+                cp2 = (char *) __stringVal(aString);
 
 #ifdef bcopy4
-		/* knowing that allocation is 4-byte aligned and
-		 * size rounded up to next 4-byte, the first copy
-		 * can be done word-wise.
-		 * that speeds up size-10-string , size-10-string
-		 * by 10% on a P5/200.
-		 */
-		{
-		    int nw = l1 >> 2;
-
-		    if (l1 & 3) nw++;
-		    bcopy4(cp1, dstp, nw);
-		    dstp += l1;
-		}
+                /* knowing that allocation is 4-byte aligned and
+                 * size rounded up to next 4-byte, the first copy
+                 * can be done word-wise.
+                 * that speeds up size-10-string , size-10-string
+                 * by 10% on a P5/200.
+                 */
+                {
+                    int nw = l1 >> 2;
+
+                    if (l1 & 3) nw++;
+                    bcopy4(cp1, dstp, nw);
+                    dstp += l1;
+                }
 #else
 # ifdef FAST_MEMCPY
-		memcpy(dstp, cp1, l1);
-		dstp += l1;
+                memcpy(dstp, cp1, l1);
+                dstp += l1;
 # else
-		while (l1 >= 4) {
-		    *(int *)dstp = *(int *)cp1;
-		    dstp += 4; cp1 += 4;
-		    l1 -= 4;
-		}
-		while (l1--) *dstp++ = *cp1++;
+                while (l1 >= 4) {
+                    *(int *)dstp = *(int *)cp1;
+                    dstp += 4; cp1 += 4;
+                    l1 -= 4;
+                }
+                while (l1--) *dstp++ = *cp1++;
 # endif
 #endif
 
 #ifdef bcopy4
-		if (((INT)dstp & 3) == 0) {
-		    int nw = l2 >> 2;
-
-		    if (l2 & 3) nw++;
-		    bcopy4(cp2, dstp, nw);
-		    *(dstp + l2) = '\0';
-		    RETURN ( newString );
-		}
+                if (((INT)dstp & 3) == 0) {
+                    int nw = l2 >> 2;
+
+                    if (l2 & 3) nw++;
+                    bcopy4(cp2, dstp, nw);
+                    *(dstp + l2) = '\0';
+                    RETURN ( newString );
+                }
 #endif
 
 #ifdef FAST_MEMCPY
-		memcpy(dstp, cp2, l2+1);
-		dstp[l2] = '\0';
+                memcpy(dstp, cp2, l2+1);
+                dstp[l2] = '\0';
 #else
-		while (l2--) *dstp++ = *cp2++;
-		*dstp = '\0';
+                while (l2--) *dstp++ = *cp2++;
+                *dstp = '\0';
 #endif
-		RETURN ( newString );
-	    }
-	}
+                RETURN ( newString );
+            }
+        }
     }
 %}.
     ^ super , aString
 
     "
-     'hello' , 'world'
+     'hello' , 'world' asImmutableString
+     'hello' , #world
      #[0 0 0 1] asString, #[0 0 0 2 0] asString
     "
 
@@ -2279,34 +2296,34 @@
 #endif
     REGISTER unsigned char *dstp;
 
-    if (__isStringLike(self) 
-	    && __isStringLike(string1)
-	    && __isStringLike(string2)) {
-	len1 = __stringSize(self);
-	len2 = __stringSize(string1);
-	len3 = __stringSize(string2);
-	sz = OHDR_SIZE + len1 + len2 + len3 + 1;
-	__qNew(newString, sz);  /* OBJECT ALLOCATION */
-	if (newString != nil) {
-	    __InstPtr(newString)->o_class = String;
-	    __qSTORE(newString, String);
-	    dstp = __stringVal(newString);
+    if (__qIsStringLike(self) 
+            && __isStringLike(string1)
+            && __isStringLike(string2)) {
+        len1 = __stringSize(self);
+        len2 = __stringSize(string1);
+        len3 = __stringSize(string2);
+        sz = OHDR_SIZE + len1 + len2 + len3 + 1;
+        __qNew(newString, sz);  /* OBJECT ALLOCATION */
+        if (newString != nil) {
+            __InstPtr(newString)->o_class = String;
+            __qSTORE(newString, String);
+            dstp = __stringVal(newString);
 #ifdef FAST_MEMCPY
-	    memcpy(dstp, __stringVal(self), len1);
-	    memcpy(dstp + len1, __stringVal(string1), len2);
-	    memcpy(dstp + len1 + len2, __stringVal(string2), len3+1);
-	    *(dstp + len1 + len2 + len3) = '\0';
+            memcpy(dstp, __stringVal(self), len1);
+            memcpy(dstp + len1, __stringVal(string1), len2);
+            memcpy(dstp + len1 + len2, __stringVal(string2), len3+1);
+            *(dstp + len1 + len2 + len3) = '\0';
 #else
-	    srcp = __stringVal(self);
-	    while (len1--) *dstp++ = *srcp++;
-	    srcp = __stringVal(string1);
-	    while (len2--) *dstp++ = *srcp++;
-	    srcp = __stringVal(string2);
-	    while (len3--) *dstp++ = *srcp++;
-	    *dstp = '\0';
+            srcp = __stringVal(self);
+            while (len1--) *dstp++ = *srcp++;
+            srcp = __stringVal(string1);
+            while (len2--) *dstp++ = *srcp++;
+            srcp = __stringVal(string2);
+            while (len3--) *dstp++ = *srcp++;
+            *dstp = '\0';
 #endif
-	    RETURN ( newString );
-	}
+            RETURN ( newString );
+        }
     }
 %}.
     ^ super , string1 , string2
@@ -2326,39 +2343,39 @@
 #endif
     REGISTER unsigned char *dstp;
 
-    if (__isStringLike(self) 
+    if (__qIsStringLike(self) 
      && __isStringLike(string1)
      && __isStringLike(string2)
      && __isStringLike(string3)) {
-	len1 = __stringSize(self);
-	len2 = __stringSize(string1);
-	len3 = __stringSize(string2);
-	len4 = __stringSize(string3);
-	sz = OHDR_SIZE + len1 + len2 + len3 + len4 + 1;
-	__qNew(newString, sz);  /* OBJECT ALLOCATION */
-	if (newString != nil) {
-	    __InstPtr(newString)->o_class = String;
-	    __qSTORE(newString, String);
-	    dstp = __stringVal(newString);
+        len1 = __stringSize(self);
+        len2 = __stringSize(string1);
+        len3 = __stringSize(string2);
+        len4 = __stringSize(string3);
+        sz = OHDR_SIZE + len1 + len2 + len3 + len4 + 1;
+        __qNew(newString, sz);  /* OBJECT ALLOCATION */
+        if (newString != nil) {
+            __InstPtr(newString)->o_class = String;
+            __qSTORE(newString, String);
+            dstp = __stringVal(newString);
 #ifdef FAST_MEMCPY
-	    memcpy(dstp, __stringVal(self), len1);
-	    memcpy(dstp + len1, __stringVal(string1), len2);
-	    memcpy(dstp + len1 + len2, __stringVal(string2), len3);
-	    memcpy(dstp + len1 + len2 + len3, __stringVal(string3), len4+1);
-	    *(dstp + len1 + len2 + len3 + len4) = '\0';
+            memcpy(dstp, __stringVal(self), len1);
+            memcpy(dstp + len1, __stringVal(string1), len2);
+            memcpy(dstp + len1 + len2, __stringVal(string2), len3);
+            memcpy(dstp + len1 + len2 + len3, __stringVal(string3), len4+1);
+            *(dstp + len1 + len2 + len3 + len4) = '\0';
 #else
-	    srcp = __stringVal(self);
-	    while (len1--) *dstp++ = *srcp++;
-	    srcp = __stringVal(string1);
-	    while (len2--) *dstp++ = *srcp++;
-	    srcp = __stringVal(string2);
-	    while (len3--) *dstp++ = *srcp++;
-	    srcp = __stringVal(string3);
-	    while (len4--) *dstp++ = *srcp++;
-	    *dstp = '\0';
+            srcp = __stringVal(self);
+            while (len1--) *dstp++ = *srcp++;
+            srcp = __stringVal(string1);
+            while (len2--) *dstp++ = *srcp++;
+            srcp = __stringVal(string2);
+            while (len3--) *dstp++ = *srcp++;
+            srcp = __stringVal(string3);
+            while (len4--) *dstp++ = *srcp++;
+            *dstp = '\0';
 #endif
-	    RETURN ( newString );
-	}
+            RETURN ( newString );
+        }
     }
 %}.
     ^ super , string1 , string2 , string3
@@ -2613,7 +2630,7 @@
      of its named instvars ...
     "
     (self isMemberOf:String) ifTrue:[
-	^ self copyFrom:1
+        ^ self copyFrom:1
     ].
     ^ super deepCopyUsing:aDictionary postCopySelector:postCopySelector
 !
@@ -2801,74 +2818,74 @@
     if (__isStringLike(aString)
      && __isString(self)
      && __bothSmallInteger(start, stop)) {
-	len = __stringSize(self);
-	index1 = __intVal(start);
-	index2 = __intVal(stop);
-	count = index2 - index1 + 1;
-	if (count <= 0) {
-	     RETURN (self);
-	}
-	if ((index2 <= len) && (index1 > 0)) {
-	    repLen = __stringSize(aString);
-	    repIndex = __intVal(repStart);
-	    if ((repIndex > 0) && ((repIndex + count - 1) <= repLen)) {
-		srcp = __stringVal(aString) + repIndex - 1;
-		dstp = __stringVal(self) + index1 - 1;
-		if (aString == self) {
-		    /* take care of overlapping copy */
-		    if (srcp < dstp) {
-			/* must do a reverse copy */
-			srcp += count;
-			dstp += count;
-			while (count-- > 0) {
-			    *--dstp = *--srcp;
-			}
-			RETURN (self);
-		    }
-		}
+        len = __stringSize(self);
+        index1 = __intVal(start);
+        index2 = __intVal(stop);
+        count = index2 - index1 + 1;
+        if (count <= 0) {
+             RETURN (self);
+        }
+        if ((index2 <= len) && (index1 > 0)) {
+            repLen = __stringSize(aString);
+            repIndex = __intVal(repStart);
+            if ((repIndex > 0) && ((repIndex + count - 1) <= repLen)) {
+                srcp = __stringVal(aString) + repIndex - 1;
+                dstp = __stringVal(self) + index1 - 1;
+                if (aString == self) {
+                    /* take care of overlapping copy */
+                    if (srcp < dstp) {
+                        /* must do a reverse copy */
+                        srcp += count;
+                        dstp += count;
+                        while (count-- > 0) {
+                            *--dstp = *--srcp;
+                        }
+                        RETURN (self);
+                    }
+                }
 #ifdef bcopy4
-		/* copy quadbytes if pointers are aligned */
-		/*
-		 * no sizeof(int) here please -
-		 * - bcopy4 (if defined) copies 4-bytes on ALL machines
-		 */
-		if ((count > 12)
-		 && (((unsigned INT)srcp & 3) == 0)
-		 && (((unsigned INT)dstp & 3) == 0)) {
-		    int n;
-
-		    n = count >> 2;        /* make it quads */
-		    bcopy4(srcp, dstp, n);
-		    n <<= 2;               /* back to chars */
-		    dstp += n;
-		    srcp += n;
-		    count -= n;
-		}
-		while (count-- > 0) {
-		    *dstp++ = *srcp++;
-		}
+                /* copy quadbytes if pointers are aligned */
+                /*
+                 * no sizeof(int) here please -
+                 * - bcopy4 (if defined) copies 4-bytes on ALL machines
+                 */
+                if ((count > 12)
+                 && (((unsigned INT)srcp & 3) == 0)
+                 && (((unsigned INT)dstp & 3) == 0)) {
+                    int n;
+
+                    n = count >> 2;        /* make it quads */
+                    bcopy4(srcp, dstp, n);
+                    n <<= 2;               /* back to chars */
+                    dstp += n;
+                    srcp += n;
+                    count -= n;
+                }
+                while (count-- > 0) {
+                    *dstp++ = *srcp++;
+                }
 #else
 # ifdef FAST_MEMCPY
-		bcopy(srcp, dstp, count);
+                bcopy(srcp, dstp, count);
 # else
-		/* copy longs if pointers are aligned */
-		if ((((unsigned INT)srcp & (sizeof(INT)-1)) == 0)
-		 && (((unsigned INT)dstp & (sizeof(INT)-1)) == 0)) {
-		    while (count >= sizeof(INT)) {
-			*((unsigned INT *)dstp) = *((unsigned INT *)srcp);
-			dstp += sizeof(INT);
-			srcp += sizeof(INT);
-			count -= sizeof(INT);
-		    }
-		}
-		while (count-- > 0) {
-		    *dstp++ = *srcp++;
-		}
+                /* copy longs if pointers are aligned */
+                if ((((unsigned INT)srcp & (sizeof(INT)-1)) == 0)
+                 && (((unsigned INT)dstp & (sizeof(INT)-1)) == 0)) {
+                    while (count >= sizeof(INT)) {
+                        *((unsigned INT *)dstp) = *((unsigned INT *)srcp);
+                        dstp += sizeof(INT);
+                        srcp += sizeof(INT);
+                        count -= sizeof(INT);
+                    }
+                }
+                while (count-- > 0) {
+                    *dstp++ = *srcp++;
+                }
 # endif
 #endif
-		RETURN (self);
-	    }
-	}
+                RETURN (self);
+            }
+        }
     }
 #endif
 %}.
@@ -3043,7 +3060,7 @@
 
 %{  /* NOCONTEXT */
 
-    if (__isStringLike(self) == String) {
+    if (__qIsStringLike(self)) {
         if (@global(Stderr) == nil) {
             console_fprintf(stderr, "%s" , __stringVal(self));
             console_fflush(stderr);
@@ -3052,6 +3069,13 @@
     }
 %}.
     ^ super errorPrint
+
+    "  
+      'hello world' asUnicode16String errorPrint
+      (Character value:356) asString errorPrint
+      'Bƶnnigheim' errorPrint
+      'Bƶnnigheim' asUnicodeString errorPrint
+    "
 !
 
 errorPrintCR
@@ -3061,7 +3085,7 @@
 
 %{  /* NOCONTEXT */
 
-    if (__isStringLike(self)) {
+    if (__qIsStringLike(self)) {
         if (@global(Stderr) == nil) {
             console_fprintf(stderr, "%s\n" , __stringVal(self));
             console_fflush(stderr);
@@ -3079,7 +3103,7 @@
 
 %{  /* NOCONTEXT */
 
-    if (__isStringLike(self)) {
+    if (__qIsStringLike(self)) {
         if (@global(Stdout) == nil) {
             console_fprintf(stdout, "%s" , __stringVal(self));
             console_fflush(stdout);
@@ -3097,7 +3121,7 @@
 
 %{  /* NOCONTEXT */
 
-    if (__isStringLike(self)) {
+    if (__qIsStringLike(self)) {
         if (@global(Stdout) == nil) {
             console_fprintf(stdout, "%s\n" , __stringVal(self));
             console_fflush(stdout);
@@ -3128,44 +3152,44 @@
     extern void *malloc();
 
     if (__isStringLike(formatString)) {
-	cp = (char *)__stringVal(self);
-	if (__qClass(self) != String) {
-	    cp += __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
-	}
+        cp = (char *)__stringVal(self);
+        if (__qClass(self) != String) {
+            cp += __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
+        }
 again:
-	/*
-	 * actually only needed on sparc: since thisContext is
-	 * in a global register, which gets destroyed by printf,
-	 * manually save it here - very stupid ...
-	 */
-	__BEGIN_PROTECT_REGISTERS__
-
-	len = snprintf(buf, bufsize, (char *)__stringVal(formatString), cp);
-
-	__END_PROTECT_REGISTERS__
-
-	if ((len < 0) || (len > bufsize)) {
-	    if (len < 0) {
-		bufsize = bufsize * 2;
-	    } else {
-		bufsize = len + 1;
-	    }
-	    if (mallocbuf)
-		free(mallocbuf);
-	    buf = mallocbuf = malloc(bufsize);
-	    if (buf == NULL)
-		goto fail;
-	    goto again;
-	}
-
-	s = __MKSTRING_L(buf, len);
-
-	if (mallocbuf)
-	    free(mallocbuf);
-
-	if (s != nil) {
-	    RETURN (s);
-	}
+        /*
+         * actually only needed on sparc: since thisContext is
+         * in a global register, which gets destroyed by printf,
+         * manually save it here - very stupid ...
+         */
+        __BEGIN_PROTECT_REGISTERS__
+
+        len = snprintf(buf, bufsize, (char *)__stringVal(formatString), cp);
+
+        __END_PROTECT_REGISTERS__
+
+        if ((len < 0) || (len > bufsize)) {
+            if (len < 0) {
+                bufsize = bufsize * 2;
+            } else {
+                bufsize = len + 1;
+            }
+            if (mallocbuf)
+                free(mallocbuf);
+            buf = mallocbuf = malloc(bufsize);
+            if (buf == NULL)
+                goto fail;
+            goto again;
+        }
+
+        s = __MKSTRING_L(buf, len);
+
+        if (mallocbuf)
+            free(mallocbuf);
+
+        if (s != nil) {
+            RETURN (s);
+        }
     }
 fail:;
 %}.
@@ -3290,6 +3314,10 @@
     "
 !
 
+isWideString
+    ^ false
+!
+
 knownAsSymbol
     "return true, if there is a symbol with same characters in the
      system.
@@ -3352,7 +3380,7 @@
 reverse
     "in-place reverse the characters of the string.
      WARNING: this is a destructive operation, which modifies the receiver.
-	      Please use reversed (with a d) for a functional version."
+              Please use reversed (with a d) for a functional version."
 
     "Q: is there a need to redefine it here ?"
 
@@ -3362,21 +3390,22 @@
     REGISTER unsigned char *hip, *lowp;
 
     if (__isString(self)) {
-	lowp = __stringVal(self);
-	hip = lowp + __stringSize(self) - 1;
-	while (lowp < hip) {
-	    c = *lowp;
-	    *lowp = *hip;
-	    *hip = c;
-	    lowp++;
-	    hip--;
-	}
-	RETURN ( self );
+        lowp = __stringVal(self);
+        hip = lowp + __stringSize(self) - 1;
+        while (lowp < hip) {
+            c = *lowp;
+            *lowp = *hip;
+            *hip = c;
+            lowp++;
+            hip--;
+        }
+        RETURN ( self );
     }
 %}.
     ^ super reverse
 ! !
 
+
 !String methodsFor:'substring searching'!
 
 indexOfSubCollection:aSubString startingAt:startIndex ifAbsent:exceptionValue caseSensitive:caseSensitive
@@ -3385,80 +3414,80 @@
     |notFound|
 
 %{  /* STACK:4000 */
-    if (__isStringLike(self) 
+    if (__qIsStringLike(self) 
      && __isStringLike(aSubString)
      && (caseSensitive == true)
      && (__isSmallInteger(startIndex))
      && (__intVal(startIndex) > 0)
     ) {
-	unsigned char *y = __stringVal(self);
-	unsigned char *x = __stringVal(aSubString);
-	int m = __stringSize(aSubString);
-	int n = __stringSize(self);
+        unsigned char *y = __stringVal(self);
+        unsigned char *x = __stringVal(aSubString);
+        int m = __stringSize(aSubString);
+        int n = __stringSize(self);
 #       define MAX_PATTERN_SIZE 128
 #       define XSIZE 256
 #       define ASIZE 256
 #       define MAX(a,b) (a>b ? a : b)
 
-	if (m == 0) {
+        if (m == 0) {
 #if 1
-	    /* empty string does not match */
-	    RETURN(__mkSmallInteger(0));
+            /* empty string does not match */
+            RETURN(__mkSmallInteger(0));
 #else
-	    /* empty string matches */
-	    RETURN(startIndex);
+            /* empty string matches */
+            RETURN(startIndex);
 #endif
-	}
-	if (m <= XSIZE) {
+        }
+        if (m <= XSIZE) {
             int i, j;
             static int lastPatternSize = 0;
             static char lastPattern[MAX_PATTERN_SIZE+1] = { 0 };
             static int bmGs[XSIZE+1], bmBc[ASIZE];
 
 #           define preBmBc(x, m, bmBc) {          \
-	       int i;                             \
-						  \
-	       for (i = 0; i < ASIZE; ++i)        \
-		  bmBc[i] = m;                    \
-	       for (i = 0; i < m - 1; ++i)        \
-		  bmBc[x[i]] = m - i - 1;         \
-	    }
+               int i;                             \
+                                                  \
+               for (i = 0; i < ASIZE; ++i)        \
+                  bmBc[i] = m;                    \
+               for (i = 0; i < m - 1; ++i)        \
+                  bmBc[x[i]] = m - i - 1;         \
+            }
 
 #           define suffixes(x, m, suff) {                       \
-	       int f, g, i;                                     \
-								\
-	       suff[m - 1] = m;                                 \
-	       g = m - 1;                                       \
-	       for (i = m - 2; i >= 0; --i) {                   \
-		  if (i > g && suff[i + m - 1 - f] < i - g)     \
-		     suff[i] = suff[i + m - 1 - f];             \
-		  else {                                        \
-		     if (i < g)                                 \
-			g = i;                                  \
-		     f = i;                                     \
-		     while (g >= 0 && x[g] == x[g + m - 1 - f]) \
-			--g;                                    \
-		     suff[i] = f - g;                           \
-		  }                                             \
-	       }                                                \
-	    }
+               int f, g, i;                                     \
+                                                                \
+               suff[m - 1] = m;                                 \
+               g = m - 1;                                       \
+               for (i = m - 2; i >= 0; --i) {                   \
+                  if (i > g && suff[i + m - 1 - f] < i - g)     \
+                     suff[i] = suff[i + m - 1 - f];             \
+                  else {                                        \
+                     if (i < g)                                 \
+                        g = i;                                  \
+                     f = i;                                     \
+                     while (g >= 0 && x[g] == x[g + m - 1 - f]) \
+                        --g;                                    \
+                     suff[i] = f - g;                           \
+                  }                                             \
+               }                                                \
+            }
 
 #           define preBmGs(x, m, bmGs) {                        \
-	       int i, j, suff[XSIZE];                           \
-								\
-	       suffixes(x, m, suff);                            \
-								\
-	       for (i = 0; i < m; ++i)                          \
-		  bmGs[i] = m;                                  \
-	       j = 0;                                           \
-	       for (i = m - 1; i >= 0; --i)                     \
-		  if (suff[i] == i + 1)                         \
-		     for (; j < m - 1 - i; ++j)                 \
-			if (bmGs[j] == m)                       \
-			   bmGs[j] = m - 1 - i;                 \
-	       for (i = 0; i <= m - 2; ++i)                     \
-		  bmGs[m - 1 - suff[i]] = m - 1 - i;            \
-	    }
+               int i, j, suff[XSIZE];                           \
+                                                                \
+               suffixes(x, m, suff);                            \
+                                                                \
+               for (i = 0; i < m; ++i)                          \
+                  bmGs[i] = m;                                  \
+               j = 0;                                           \
+               for (i = m - 1; i >= 0; --i)                     \
+                  if (suff[i] == i + 1)                         \
+                     for (; j < m - 1 - i; ++j)                 \
+                        if (bmGs[j] == m)                       \
+                           bmGs[j] = m - 1 - i;                 \
+               for (i = 0; i <= m - 2; ++i)                     \
+                  bmGs[m - 1 - suff[i]] = m - 1 - i;            \
+            }
 
             /* tables only depend on pattern; so we can cache them in case the same string is searched again */
             if ((m == lastPatternSize)
@@ -3477,25 +3506,25 @@
                 }
             }
 
-	    /* Searching */
-	    j = __intVal(startIndex) - 1;
-	    while (j <= n - m) {
-	       for (i = m - 1; i >= 0 && x[i] == y[i + j]; --i);
-	       if (i < 0) {
-		  RETURN (__mkSmallInteger(j+1));
+            /* Searching */
+            j = __intVal(startIndex) - 1;
+            while (j <= n - m) {
+               for (i = m - 1; i >= 0 && x[i] == y[i + j]; --i);
+               if (i < 0) {
+                  RETURN (__mkSmallInteger(j+1));
                   j += bmGs[0];  
-	       } else {
-		  int s1 = bmGs[i];
-		  int s2 = bmBc[y[i + j]] - m + 1 + i;
-		  j += MAX(s1, s2);
-	       }
-	    }
-	    notFound = true;
-	}
+               } else {
+                  int s1 = bmGs[i];
+                  int s2 = bmBc[y[i + j]] - m + 1 + i;
+                  j += MAX(s1, s2);
+               }
+            }
+            notFound = true;
+        }
     }
 %}.
     notFound == true ifTrue:[
-	^ exceptionValue value.
+        ^ exceptionValue value.
     ].
     ^ super indexOfSubCollection:aSubString startingAt:startIndex ifAbsent:exceptionValue caseSensitive:caseSensitive
 
@@ -3515,32 +3544,32 @@
     REGISTER OBJ slf = self;
 
     if (__isStringLike(slf) && __isStringLike(aStringOrChar)) {
-	len1 = __qSize(slf);
-	len2 = __qSize(aStringOrChar);
-	if (len1 < len2) {
-	    RETURN ( false );
-	}
-
-	src1 = __stringVal(slf) + (len1 - len2);
-	src2 = __stringVal(aStringOrChar);
-	while (c = *src2++) {
-	    if (c != *src1++) {
-		RETURN ( false );
-	    }
-	}
-	RETURN (true);
+        len1 = __qSize(slf);
+        len2 = __qSize(aStringOrChar);
+        if (len1 < len2) {
+            RETURN ( false );
+        }
+
+        src1 = __stringVal(slf) + (len1 - len2);
+        src2 = __stringVal(aStringOrChar);
+        while (c = *src2++) {
+            if (c != *src1++) {
+                RETURN ( false );
+            }
+        }
+        RETURN (true);
     }
     if (__isCharacter(aStringOrChar)) {
-	int val;
-
-	val = __intVal(_characterVal(aStringOrChar));
-	if ((unsigned)val <= 0xFF) {
-	    len1 = __stringSize(slf);
-	    if (len1 > 0) {
-		RETURN ( (__stringVal(slf)[len1-1] == val) ? true : false);
-	    }
-	}
-	RETURN ( false );
+        int val;
+
+        val = __intVal(_characterVal(aStringOrChar));
+        if ((unsigned)val <= 0xFF) {
+            len1 = __stringSize(slf);
+            if (len1 > 0) {
+                RETURN ( (__stringVal(slf)[len1-1] == val) ? true : false);
+            }
+        }
+        RETURN ( false );
     }
 %}.
     ^ super endsWith:aStringOrChar
@@ -3640,78 +3669,78 @@
     unsigned short fastData[(FASTSIZE + 1) * (FASTSIZE + 1)];
     extern void *malloc();
 
-    if (__isStringLike(self) && __isStringLike(aString)
-	&& __bothSmallInteger(insrtWeight, caseWeight)
-	&& __bothSmallInteger(substWeight, deleteWeight)
-	&& __isSmallInteger(kbdTypoWeight)
+    if (__qIsStringLike(self) && __isStringLike(aString)
+        && __bothSmallInteger(insrtWeight, caseWeight)
+        && __bothSmallInteger(substWeight, deleteWeight)
+        && __isSmallInteger(kbdTypoWeight)
     ) {
-	iW = __intVal(insrtWeight);
-	cW = __intVal(caseWeight);
-	sW = __intVal(substWeight);
-	kW = __intVal(kbdTypoWeight);
-	dW = __intVal(deleteWeight);
-	s1 = __stringVal(self);
-	s2 = __stringVal(aString);
-	l1 = strlen(s1);
-	l2 = strlen(s2);
-
-	sz = (l1 < l2) ? l2 : l1;
-	rowDelta = sz + 1;
-	if (sz <= FASTSIZE) {
-	    data = fastData;
-	} else {
-	    /* add ifdef ALLOCA here ... */
-	    data = (unsigned short *)malloc(rowDelta * rowDelta * sizeof(short));
-	    if (! data) goto mallocFailed;
-	}
-
-	data[0] = 0;
-	for (j=1, dp=data+1; j<=sz; j++, dp++)
-	    *dp = dp[-1] + iW;
-
-	for (i=1, dp=data+rowDelta; i<=sz; i++, dp+=rowDelta)
-	    *dp = dp[-rowDelta] + dW;
-
-	for (i=0; i<l1; i++) {
-	    for (j=0; j<l2; j++) {
-		if (s1[i] == s2[j])
-		    m = 0;
-		else if (tolower(s1[i]) == tolower(s2[j]))
-		    m = cW;
-		else if (sW != kW && nextOnKeyboard(tolower(s1[i]), tolower(s2[j])))
-		    m = kW;
-		else
-		    m = sW;
-
-		dp = data + ((i+1)*rowDelta) + j;
-		v2 = dp[0] + iW;
-		v1 = dp[-rowDelta] + m;
-		v3 = dp[-rowDelta+1] + dW;
-		if (v1 < v2) {
-		    if (v1 < v3)
-			m = v1;
-		    else
-			m = v3;
-		} else {
-		    if (v2 < v3)
-			m = v2;
-		    else
-			m = v3;
-		}
-		dp[1] = m;
-	    }
-	}
-	m = data[l1*rowDelta + l2];
-	if (sz > FASTSIZE)
-	    free(data);
-	RETURN ( __mkSmallInteger(m) );
+        iW = __intVal(insrtWeight);
+        cW = __intVal(caseWeight);
+        sW = __intVal(substWeight);
+        kW = __intVal(kbdTypoWeight);
+        dW = __intVal(deleteWeight);
+        s1 = __stringVal(self);
+        s2 = __stringVal(aString);
+        l1 = strlen(s1);
+        l2 = strlen(s2);
+
+        sz = (l1 < l2) ? l2 : l1;
+        rowDelta = sz + 1;
+        if (sz <= FASTSIZE) {
+            data = fastData;
+        } else {
+            /* add ifdef ALLOCA here ... */
+            data = (unsigned short *)malloc(rowDelta * rowDelta * sizeof(short));
+            if (! data) goto mallocFailed;
+        }
+
+        data[0] = 0;
+        for (j=1, dp=data+1; j<=sz; j++, dp++)
+            *dp = dp[-1] + iW;
+
+        for (i=1, dp=data+rowDelta; i<=sz; i++, dp+=rowDelta)
+            *dp = dp[-rowDelta] + dW;
+
+        for (i=0; i<l1; i++) {
+            for (j=0; j<l2; j++) {
+                if (s1[i] == s2[j])
+                    m = 0;
+                else if (tolower(s1[i]) == tolower(s2[j]))
+                    m = cW;
+                else if (sW != kW && nextOnKeyboard(tolower(s1[i]), tolower(s2[j])))
+                    m = kW;
+                else
+                    m = sW;
+
+                dp = data + ((i+1)*rowDelta) + j;
+                v2 = dp[0] + iW;
+                v1 = dp[-rowDelta] + m;
+                v3 = dp[-rowDelta+1] + dW;
+                if (v1 < v2) {
+                    if (v1 < v3)
+                        m = v1;
+                    else
+                        m = v3;
+                } else {
+                    if (v2 < v3)
+                        m = v2;
+                    else
+                        m = v3;
+                }
+                dp[1] = m;
+            }
+        }
+        m = data[l1*rowDelta + l2];
+        if (sz > FASTSIZE)
+            free(data);
+        RETURN ( __mkSmallInteger(m) );
     }
 mallocFailed: ;
 %}.
 
     ^ super levenshteinTo:aString
-			s:substWeight k:kbdTypoWeight c:caseWeight
-			i:insrtWeight d:deleteWeight
+                        s:substWeight k:kbdTypoWeight c:caseWeight
+                        i:insrtWeight d:deleteWeight
 
     "
      'ocmprt' levenshteinTo:'computer'
@@ -3857,13 +3886,10 @@
 !String class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/String.st,v 1.292 2012/10/16 11:56:40 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/String.st,v 1.300 2013-01-16 14:11:48 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/String.st,v 1.292 2012/10/16 11:56:40 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id:: String.st 10858 2012-10-29 22:07:56Z vranyj1                                                                           $'
+    ^ '$Header: /cvs/stx/stx/libbasic/String.st,v 1.300 2013-01-16 14:11:48 stefan Exp $'
 ! !
+
--- a/StringCollection.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/StringCollection.st	Sat Jan 19 01:30:00 2013 +0000
@@ -442,16 +442,9 @@
 !StringCollection class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/StringCollection.st,v 1.46 2012/07/25 17:12:38 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/StringCollection.st,v 1.46 2012-07-25 17:12:38 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/StringCollection.st,v 1.46 2012/07/25 17:12:38 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: StringCollection.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/StringCollection.st,v 1.46 2012-07-25 17:12:38 cg Exp $'
 ! !
-
-
-
--- a/SubclassResponsibilityError.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/SubclassResponsibilityError.st	Sat Jan 19 01:30:00 2013 +0000
@@ -61,18 +61,11 @@
 !SubclassResponsibilityError class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/SubclassResponsibilityError.st,v 1.8 2010/12/19 11:59:59 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SubclassResponsibilityError.st,v 1.8 2010-12-19 11:59:59 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SubclassResponsibilityError.st,v 1.8 2010/12/19 11:59:59 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: SubclassResponsibilityError.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SubclassResponsibilityError.st,v 1.8 2010-12-19 11:59:59 cg Exp $'
 ! !
 
 SubclassResponsibilityError initialize!
-
-
-
--- a/Symbol.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Symbol.st	Sat Jan 19 01:30:00 2013 +0000
@@ -184,7 +184,6 @@
 ! !
 
 
-
 !Symbol methodsFor:'Compatibility-Squeak'!
 
 isUnary
@@ -306,10 +305,10 @@
 
     if (! __isNonNilObject(something)) RETURN(false);
     if ((cls = __qClass(something)) == Symbol) {
-	RETURN (self == something ? true : false);
+        RETURN (self == something ? true : false);
     }
-    if (cls == String) {
-	RETURN (strcmp(__stringVal(self), __stringVal(something)) == 0 ? true : false);
+    if (cls == String || cls == ImmutableString) {
+        RETURN (strcmp(__stringVal(self), __stringVal(something)) == 0 ? true : false);
     }
 %}.
     "fall back; could be a TwoByteString, or a collection of Characters"
@@ -325,123 +324,116 @@
 
 %{  /* NOCONTEXT */
 /* for now, this is needed... */
-#define xxHASH_SDBM
-#define HASH_DRAGONBOOK
+#undef HASH_DRAGONBOOK
+#define HASH_SDBM
 
     REGISTER unsigned INT val;
-    REGISTER unsigned char *cp, *ce;
+    REGISTER unsigned char *cp;
     int l;
 
-    if (__Class(self) == Symbol) {
-	val = __GET_HASH(self);
-	/*
-	 * only do it, if I have no standard hash key
-	 * assigned (which can only happen due to a #become:,
-	 * or by creating a symbol uninterned, and interning it
-	 * after it got a hashKey assigned.
-	 */
-	if (val == 0) {
-	    cp = __stringVal(self);
-	    l = __stringSize(self);
+    if (__qIsSymbol(self)) {
+        val = __GET_HASH(self);
+        /*
+         * only do it, if I have no standard hash key
+         * assigned (which can only happen due to a #become:,
+         * or by creating a symbol uninterned, and interning it
+         * after it got a hashKey assigned.
+         */
+        if (val == 0) {
+            cp = __stringVal(self);
+            l = __stringSize(self);
 #ifdef HASH_DRAGONBOOK
-	    /*
-	     * this is the dragon-book algorithm
-	     * We have tested 5-bit shifts as well:
-	     *
-	     * ST/X Symbols:                 17807
-	     * Hashkey collisions (4bit):       14   0.07%
-	     * Hashkey collisions (5bit):      300   1.68%
-	     */
+            /*
+             * this is the dragon-book algorithm
+             * We have tested 5-bit shifts as well:
+             *
+             * ST/X Symbols:                 17807
+             * Hashkey collisions (4bit):       14   0.07%
+             * Hashkey collisions (5bit):      300   1.68%
+             */
 
-	    if (l > 0) {
-		val = cp[0];
-		if (l > 1) {
-		    val = (val << 4) + cp[1];
-		    if (l > 2) {
-			val = (val << 4) + cp[2];
-			if (l > 3) {
-			    val = (val << 4) + cp[3];
-			    if (l > 4) {
-				val = (val << 4) + cp[4];
-				if (l > 5) {
-				    val = (val << 4) + cp[5];
-				    if (l > 6) {
-					val = (val << 4) + cp[6];
-					for (ce = cp + l, cp += 7; cp < ce; cp++) {
-					    REGISTER unsigned INT g;
+            if (l > 0) {
+                val = cp[0];
+                if (l > 1) {
+                    val = (val << 4) + cp[1];
+                    if (l > 2) {
+                        val = (val << 4) + cp[2];
+                        if (l > 3) {
+                            val = (val << 4) + cp[3];
+                            if (l > 4) {
+                                val = (val << 4) + cp[4];
+                                if (l > 5) {
+                                    val = (val << 4) + cp[5];
+                                    REGISTER unsigned char *ce;
 
-					    if (g = (val & 0xF0000000)) {
-						val ^= g >> 24;
-						val ^= g;
-					    }
-					    val = (val << 4) + *cp;
-					}
-				    }
-				}
-			    }
-			}
-		    }
-		}
-	    } else {
-		val = 0;
-	    }
-	    val = (val * 31415821) & _MAX_INT;
+                                    if (l > 6) {
+                                        val = (val << 4) + cp[6];
+                                        for (ce = cp + l, cp += 7; cp < ce; cp++) {
+                                            REGISTER unsigned INT g;
+
+                                            if (g = (val & 0xF0000000)) {
+                                                val ^= g >> 24;
+                                                val ^= g;
+                                            }
+                                            val = (val << 4) + *cp;
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            } else {
+                val = 0;
+            }
+            val = (val * 31415821) & _MAX_INT;
 #else
 # ifdef HASH_SDBM
-	    /*
-	     * this is the sdbm algorithm
-	     *
-	     * ST/X Symbols:                    51404
-	     * Hashkey collisions (dragonBook):    54
-	     * Hashkey collisions (sdbm):           2
-	     */
-	    val = 0;
-	    while (l >= 4) {
-		unsigned INT ch;
-
-		l -= 4;
-		ch = cp[0];
-		val = (val * 65599) + ch;
-		ch = cp[1];
-		val = (val * 65599) + ch;
-		ch = cp[2];
-		val = (val * 65599) + ch;
-		ch = cp[3];
-		val = (val * 65599) + ch;
-		cp += 4;
-	    }
-	    while (l) {
-		unsigned INT ch;
-
-		l--;
-		ch = *cp++;
-		val = (val * 65599) + ch;
-	    }
-	    val = val & _MAX_INT;
+            /*
+             * this is the sdbm algorithm
+             *
+             * ST/X Symbols:                    51404
+             * Hashkey collisions (dragonBook):    54
+             * Hashkey collisions (sdbm):           2
+             */
+            val = 0;
+            while (l >= 4) {
+                l -= 4;
+                val = (val * 65599) + cp[0];
+                val = (val * 65599) + cp[1];
+                val = (val * 65599) + cp[2];
+                val = (val * 65599) + cp[3];
+                cp += 4;
+            }
+            while (l--) {
+                val = (val * 65599) + *cp++;
+            }
+            val = val & _MAX_INT;
 # else
-	error error
+#  error "Undefined Hash Algorithm"
 # endif
 #endif
-	} else {
-	    val = __MAKE_HASH__(val);
-	}
-	RETURN ( __mkSmallInteger(val) );
-     }
+        } else {
+            val = __MAKE_HASH__(val);
+        }
+        RETURN ( __mkSmallInteger(val) );
+    }
 %}.
-     ^ super identityHash
+
+     ^ super identityHash.
 
      "
-	|hashColl hashSet|
+        |hashColl hashSet|
 
-	hashColl := OrderedCollection new:20000.
-	Symbol allInstancesDo:[:instance |
-	    hashColl add:instance identityHash
-	].
-	hashSet := hashColl asSet.
+        hashColl := OrderedCollection new:20000.
+        Symbol allInstancesDo:[:instance |
+            hashColl add:instance identityHash
+        ].
+        hashSet := hashColl asSet.
 
-	Transcript showCR:'Symbols: ', hashColl size printString,
-			  ' unique hash keys: ', hashSet size printString,
-			  ' collisions:', (hashColl size - hashSet size) printString.
+        Transcript showCR:'Symbols: ', hashColl size printString,
+                          ' unique hash keys: ', hashSet size printString,
+                          ' collisions:', (hashColl size - hashSet size) printString.
     "
 
     "Modified (comment): / 26-12-2011 / 14:32:10 / cg"
@@ -459,10 +451,10 @@
 
     if (! __isNonNilObject(something)) RETURN(true);    /* cannot be equal */
     if ((cls = __qClass(something)) == Symbol) {
-	RETURN (self == something ? false : true);
+        RETURN (self == something ? false : true);
     }
-    if (cls == String) {
-	RETURN (strcmp(__stringVal(self), __stringVal(something)) == 0 ? false : true);
+    if (cls == String || cls == ImmutableString) {
+        RETURN (strcmp(__stringVal(self), __stringVal(something)) == 0 ? false : true);
     }
 %}.
     "fall back; could be a TwoByteString, or a collection of Characters"
@@ -559,6 +551,7 @@
      ^ self
 ! !
 
+
 !Symbol methodsFor:'printing & storing'!
 
 printOn:aStream
@@ -803,10 +796,10 @@
 !Symbol class methodsFor:'documentation'!
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/Symbol.st,v 1.99 2011/12/29 00:29:45 cg Exp '
+    ^ '$Header: /cvs/stx/stx/libbasic/Symbol.st,v 1.101 2013-01-16 11:01:26 stefan Exp $'
 !
 
 version_SVN
-    ^ '$Id: Symbol.st 10754 2012-01-06 08:53:28Z vranyj1 $'
+    ^ '§ Id: Symbol.st 10648 2011-06-23 15:55:10Z vranyj1  §'
 ! !
 
--- a/SystemChangeNotifier.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/SystemChangeNotifier.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1,14 +1,3 @@
-"
- COPYRIGHT (c) 2006 by eXept Software AG
-	      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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
-"
 "{ Package: 'stx:libbasic' }"
 
 Object subclass:#SystemChangeNotifier
@@ -20,20 +9,6 @@
 
 !SystemChangeNotifier class methodsFor:'documentation'!
 
-copyright
-"
- COPYRIGHT (c) 2006 by eXept Software AG
-	      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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
-"
-!
-
 documentation
 "
     For now, this implementation is mostly for squeak compatibility.
@@ -113,9 +88,5 @@
 !SystemChangeNotifier class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SystemChangeNotifier.st,v 1.4 2010/04/14 16:13:57 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: SystemChangeNotifier.st 10700 2011-09-29 15:44:37Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SystemChangeNotifier.st,v 1.4 2010-04-14 16:13:57 cg Exp $'
 ! !
--- a/Time.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Time.st	Sat Jan 19 01:30:00 2013 +0000
@@ -296,7 +296,6 @@
     ^ '%h:%m:%s'
 ! !
 
-
 !Time methodsFor:'Compatibility-Squeak'!
 
 asMilliseconds
@@ -805,20 +804,12 @@
     timeEncoding := encoding
 ! !
 
-
 !Time class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Time.st,v 1.92 2011/09/05 13:03:28 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Time.st,v 1.92 2011-09-05 13:03:28 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Time.st,v 1.92 2011/09/05 13:03:28 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Time.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Time.st,v 1.92 2011-09-05 13:03:28 cg Exp $'
 ! !
-
-
-
--- a/TimeoutNotification.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/TimeoutNotification.st	Sat Jan 19 01:30:00 2013 +0000
@@ -43,9 +43,5 @@
 !TimeoutNotification class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/TimeoutNotification.st,v 1.2 2012/11/23 12:13:33 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: TimeoutNotification.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/TimeoutNotification.st,v 1.2 2012-11-23 12:13:33 cg Exp $'
 ! !
--- a/Timestamp.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Timestamp.st	Sat Jan 19 01:30:00 2013 +0000
@@ -289,7 +289,6 @@
     "Modified: / 13.7.1999 / 12:37:57 / stefan"
 ! !
 
-
 !Timestamp class methodsFor:'Compatibility-Squeak'!
 
 current
@@ -2700,18 +2699,11 @@
 !Timestamp class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Timestamp.st,v 1.142 2012/10/24 22:42:11 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Timestamp.st,v 1.142 2012-10-24 22:42:11 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Timestamp.st,v 1.142 2012/10/24 22:42:11 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Timestamp.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Timestamp.st,v 1.142 2012-10-24 22:42:11 cg Exp $'
 ! !
 
 Timestamp initialize!
-
-
-
--- a/True.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/True.st	Sat Jan 19 01:30:00 2013 +0000
@@ -58,7 +58,7 @@
 !True class methodsFor:'others'!
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/True.st,v 1.30 2011/08/20 14:32:02 cg Exp '
+    ^ '$Header: /cvs/stx/stx/libbasic/True.st,v 1.30 2011-08-20 14:32:02 cg Exp $'
 ! !
 
 
@@ -246,12 +246,5 @@
 !True class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/True.st,v 1.30 2011/08/20 14:32:02 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: True.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/True.st,v 1.30 2011-08-20 14:32:02 cg Exp $'
 ! !
-
-
-
--- a/TwoByteString.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/TwoByteString.st	Sat Jan 19 01:30:00 2013 +0000
@@ -112,19 +112,16 @@
     ^ 16
 
     "Modified: 20.4.1996 / 23:08:38 / cg"
+!
+
+isWideString
+    ^ true
 ! !
 
 !TwoByteString class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/TwoByteString.st,v 1.33 2012/04/24 14:56:26 stefan Exp $'
-!
-
-version_SVN
-    ^ '$Id: TwoByteString.st 10807 2012-05-05 21:58:24Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/TwoByteString.st,v 1.34 2012-12-12 22:56:13 stefan Exp $'
 ! !
 
 TwoByteString initialize!
-
-
-
--- a/UndefinedObject.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/UndefinedObject.st	Sat Jan 19 01:30:00 2013 +0000
@@ -108,7 +108,6 @@
     "Modified: 3.1.1997 / 15:06:15 / cg"
 ! !
 
-
 !UndefinedObject class methodsFor:'queries'!
 
 canBeSubclassed
@@ -155,8 +154,6 @@
 
 
 
-
-
 !UndefinedObject methodsFor:'converting'!
 
 asBoolean
@@ -693,18 +690,11 @@
 !UndefinedObject class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UndefinedObject.st,v 1.72 2011/08/18 00:35:45 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UndefinedObject.st,v 1.72 2011-08-18 00:35:45 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/UndefinedObject.st,v 1.72 2011/08/18 00:35:45 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: UndefinedObject.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UndefinedObject.st,v 1.72 2011-08-18 00:35:45 cg Exp $'
 ! !
 
 UndefinedObject initialize!
-
-
-
--- a/Unicode16String.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Unicode16String.st	Sat Jan 19 01:30:00 2013 +0000
@@ -11,7 +11,7 @@
 "
 "{ Package: 'stx:libbasic' }"
 
-TwoByteString subclass:#Unicode16String
+TwoByteString variableWordSubclass:#Unicode16String
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -59,6 +59,7 @@
     "Modified: 30.6.1997 / 15:39:21 / cg"
 ! !
 
+
 !Unicode16String class methodsFor:'reading'!
 
 readFrom:aStreamOrString onError:exceptionBlock
@@ -77,10 +78,11 @@
     ^ self readSmalltalkStringFrom:aStreamOrString onError:exceptionBlock
 
     "
-        self readFrom:'abc' storeString
+        self readFrom:'abcäöü' storeString
     "
 ! !
 
+
 !Unicode16String methodsFor:'conversion'!
 
 asSymbolIfInterned
@@ -122,7 +124,7 @@
     "display myself as on aStream.
      You must use an ISO10646 unicode font to display this string"
 
-    (aGCOrStream isStream or:[aGCOrStream == Transcript]) ifTrue:[
+    aGCOrStream isStream ifTrue:[
         aGCOrStream
             nextPut:$';
             nextPutAllUnicode:self;
@@ -144,7 +146,7 @@
 storeOn:aStream
     "put the storeString of myself on aStream"
 
-    (self utf8Encoded storeOn:aStream).
+    self utf8Encoded storeOn:aStream.
     aStream nextPutAll:' utf8Decoded'.
 
 "/    aStream nextPut:$'.
@@ -208,16 +210,12 @@
 !Unicode16String class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Unicode16String.st,v 1.19 2012/04/24 14:56:53 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Unicode16String.st,v 1.21 2012-12-18 21:27:02 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Unicode16String.st,v 1.19 2012/04/24 14:56:53 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: Unicode16String.st 10807 2012-05-05 21:58:24Z vranyj1 $'
-
+    ^ '$Header: /cvs/stx/stx/libbasic/Unicode16String.st,v 1.21 2012-12-18 21:27:02 stefan Exp $'
 ! !
 
+
 Unicode16String initialize!
--- a/UninterpretedBytes.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/UninterpretedBytes.st	Sat Jan 19 01:30:00 2013 +0000
@@ -2964,13 +2964,9 @@
 !UninterpretedBytes class methodsFor:'documentation'!
 
 version
-    ^ '$Id: UninterpretedBytes.st 10842 2012-09-07 10:49:18Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UninterpretedBytes.st,v 1.90 2012-07-19 17:36:24 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/UninterpretedBytes.st,v 1.90 2012/07/19 17:36:24 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id:: UninterpretedBytes.st 10842 2012-09-07 10:49:18Z vranyj1                                                               $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UninterpretedBytes.st,v 1.90 2012-07-19 17:36:24 stefan Exp $'
 ! !
--- a/UnixDesktop.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/UnixDesktop.st	Sat Jan 19 01:30:00 2013 +0000
@@ -75,30 +75,6 @@
     "Created: / 11-08-2009 / 17:32:42 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
-!UnixDesktop methodsFor:'accessing-directories'!
-
-desktopDirectory
-    | dir |
-
-    dir := OperatingSystem getHomeDirectory.
-    ^(dir / 'Desktop') exists 
-        ifTrue: [dir / 'Desktop']
-        ifFalse:[dir]
-
-    "Created: / 09-05-2012 / 11:50:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-documentsDirectory
-    | dir |
-
-    dir := OperatingSystem getHomeDirectory.
-    ^(dir / 'Documents') exists 
-        ifTrue: [dir / 'Documents']
-        ifFalse:[dir]
-
-    "Created: / 09-05-2012 / 11:50:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
 !UnixDesktop methodsFor:'operations'!
 
 edit: filenames
@@ -148,10 +124,10 @@
 
 !UnixDesktop class methodsFor:'documentation'!
 
-version
-    ^'$Id: UnixDesktop.st 10808 2012-05-09 15:04:12Z vranyj1 $'
+version_CVS
+    ^ '$Header: /cvs/stx/stx/libbasic/UnixDesktop.st,v 1.1 2011-06-28 10:10:03 vrany Exp $'
 !
 
 version_SVN
-    ^ '$Id: UnixDesktop.st 10808 2012-05-09 15:04:12Z vranyj1 $'
+    ^ ' Id: UnixDesktop.st 10517 2010-04-26 18:26:38Z vranyj1  '
 ! !
--- a/UnixFileDescriptorHandle.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/UnixFileDescriptorHandle.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 1999 by eXept Software AG
-              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
@@ -9,6 +9,7 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+
 "{ Package: 'stx:libbasic' }"
 
 OSFileHandle subclass:#UnixFileDescriptorHandle
@@ -31,7 +32,7 @@
 copyright
 "
  COPYRIGHT (c) 1999 by eXept Software AG
-              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
@@ -56,85 +57,86 @@
     int nInstBytes, objSize;
 
     if (! __bothSmallInteger(count, firstIndex)) {
-        goto bad;
+	goto bad;
     }
     cnt = __smallIntegerVal(count);
     offs = __smallIntegerVal(firstIndex) - 1;
 
     if (fd < 0) {
-        goto bad;
+	goto bad;
     }
     if (__isExternalBytesLike(aByteBuffer)) {
-        OBJ sz;
+	OBJ sz;
 
-        nInstBytes = 0;
-        extPtr = (char *)(__externalBytesAddress(aByteBuffer));
-        sz = __externalBytesSize(aByteBuffer);
-        if (__isSmallInteger(sz)) {
-            objSize = __smallIntegerVal(sz);
-        } else {
-            objSize = -1; /* unknown */
-        }
+	nInstBytes = 0;
+	extPtr = (char *)(__externalBytesAddress(aByteBuffer));
+	if (extPtr == NULL) goto bad;
+	sz = __externalBytesSize(aByteBuffer);
+	if (__isSmallInteger(sz)) {
+	    objSize = __smallIntegerVal(sz);
+	} else {
+	    objSize = -1; /* unknown */
+	}
     } else {
-        OBJ oClass;
-        int nInstVars;
+	OBJ oClass;
+	int nInstVars;
 
-        oClass = __Class(aByteBuffer);
-        switch (__smallIntegerVal(__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 = __smallIntegerVal(__ClassInstPtr(oClass)->c_ninstvars);
-        nInstBytes = __OBJS2BYTES__(nInstVars);
-        objSize = __Size(aByteBuffer) - OHDR_SIZE - nInstBytes;
+	oClass = __Class(aByteBuffer);
+	switch (__smallIntegerVal(__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 = __smallIntegerVal(__ClassInstPtr(oClass)->c_ninstvars);
+	nInstBytes = __OBJS2BYTES__(nInstVars);
+	objSize = __Size(aByteBuffer) - OHDR_SIZE - nInstBytes;
     }
     if ((offs >= 0)
      && (cnt >= 0)
      && ((objSize == -1) || (objSize >= (cnt + offs)))) {
-        nRead = 0;
+	nRead = 0;
 
-        do {
-            int n;
+	do {
+	    int n;
 
-            if (extPtr) {
-                n = read(fd, extPtr+offs, cnt);
-            } else {
-                char *bp;
+	    if (extPtr) {
+		n = read(fd, extPtr+offs, cnt);
+	    } else {
+		char *bp;
 
-                /*
-                 * on interrupt, anObject may be moved to another location.
-                 * So we recompute the byte-address here.
-                 */
-                bp = __ByteArrayInstPtr(aByteBuffer)->ba_element + nInstBytes;
+		/*
+		 * on interrupt, anObject may be moved to another location.
+		 * So we recompute the byte-address here.
+		 */
+		bp = __ByteArrayInstPtr(aByteBuffer)->ba_element + nInstBytes;
 
-                n = read(fd, bp + offs, cnt);
-            }
-            if (n > 0) {
-                cnt -= n;
-                offs += n;
-                nRead += n;
-            } else {
-                if (n < 0) {
-                    if (errno == EINTR) {
-                        continue;
-                    }
-                    break;
-                }
-            }
-        } while (cnt > 0);
+		n = read(fd, bp + offs, cnt);
+	    }
+	    if (n > 0) {
+		cnt -= n;
+		offs += n;
+		nRead += n;
+	    } else {
+		if (n < 0) {
+		    if (errno == EINTR) {
+			continue;
+		    }
+		    break;
+		}
+	    }
+	} while (cnt > 0);
 
-        RETURN (__mkSmallInteger(nRead));
+	RETURN (__mkSmallInteger(nRead));
     }
-bad: ;   
+bad: ;
 %}.
     ^ self primitiveFailed
 
@@ -161,85 +163,86 @@
     int nInstBytes, objSize;
 
     if (! __bothSmallInteger(count, firstIndex)) {
-        goto bad;
+	goto bad;
     }
     cnt = __smallIntegerVal(count);
     offs = __smallIntegerVal(firstIndex) - 1;
 
     if (fd < 0) {
-        goto bad;
+	goto bad;
     }
     if (__isExternalBytesLike(aByteBuffer)) {
-        OBJ sz;
+	OBJ sz;
 
-        nInstBytes = 0;
-        extPtr = (char *)(__externalBytesAddress(aByteBuffer));
-        sz = __externalBytesSize(aByteBuffer);
-        if (__isSmallInteger(sz)) {
-            objSize = __smallIntegerVal(sz);
-        } else {
-            objSize = -1; /* unknown */
-        }
+	nInstBytes = 0;
+	extPtr = (char *)(__externalBytesAddress(aByteBuffer));
+	if (extPtr == NULL) goto bad;
+	sz = __externalBytesSize(aByteBuffer);
+	if (__isSmallInteger(sz)) {
+	    objSize = __smallIntegerVal(sz);
+	} else {
+	    objSize = -1; /* unknown */
+	}
     } else {
-        OBJ oClass;
-        int nInstVars;
+	OBJ oClass;
+	int nInstVars;
 
-        oClass = __Class(aByteBuffer);
-        switch (__smallIntegerVal(__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 = __smallIntegerVal(__ClassInstPtr(oClass)->c_ninstvars);
-        nInstBytes = __OBJS2BYTES__(nInstVars);
-        objSize = __Size(aByteBuffer) - OHDR_SIZE - nInstBytes;
+	oClass = __Class(aByteBuffer);
+	switch (__smallIntegerVal(__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 = __smallIntegerVal(__ClassInstPtr(oClass)->c_ninstvars);
+	nInstBytes = __OBJS2BYTES__(nInstVars);
+	objSize = __Size(aByteBuffer) - OHDR_SIZE - nInstBytes;
     }
     if ((offs >= 0)
      && (cnt >= 0)
      && ((objSize == -1) || (objSize >= (cnt + offs)))) {
-        nWritten = 0;
+	nWritten = 0;
 
-        do {
-            int n;
+	do {
+	    int n;
 
-            if (extPtr) {
-                n = write(fd, extPtr+offs, cnt);
-            } else {
-                char *bp;
+	    if (extPtr) {
+		n = write(fd, extPtr+offs, cnt);
+	    } else {
+		char *bp;
 
-                /*
-                 * on interrupt, anObject may be moved to another location.
-                 * So we recompute the byte-address here.
-                 */
-                bp = __ByteArrayInstPtr(aByteBuffer)->ba_element + nInstBytes;
+		/*
+		 * on interrupt, anObject may be moved to another location.
+		 * So we recompute the byte-address here.
+		 */
+		bp = __ByteArrayInstPtr(aByteBuffer)->ba_element + nInstBytes;
 
-                n = write(fd, bp + offs, cnt);
-            }
-            if (n > 0) {
-                cnt -= n;
-                offs += n;
-                nWritten += n;
-            } else {
-                if (n < 0) {
-                    if (errno == EINTR) {
-                        continue;
-                    }
-                    break;
-                }
-            }
-        } while (cnt > 0);
+		n = write(fd, bp + offs, cnt);
+	    }
+	    if (n > 0) {
+		cnt -= n;
+		offs += n;
+		nWritten += n;
+	    } else {
+		if (n < 0) {
+		    if (errno == EINTR) {
+			continue;
+		    }
+		    break;
+		}
+	    }
+	} while (cnt > 0);
 
-        RETURN (__mkSmallInteger(nWritten));
+	RETURN (__mkSmallInteger(nWritten));
     }
-bad: ;   
+bad: ;
 %}.
     ^ self primitiveFailed
 
@@ -259,7 +262,7 @@
 
 %{
     if (__isSmallInteger(anInteger)) {
-        __externalAddressVal(self) = (OBJ)(__smallIntegerVal(anInteger));
+	__externalAddressVal(self) = (OBJ)(__smallIntegerVal(anInteger));
     }
 %}
 
@@ -275,8 +278,8 @@
     INT fd = (INT)(__externalAddressVal(self));
 
     if (fd > 0) {
-        __externalAddressVal(self) = (OBJ)-1;
-        close(fd);
+	__externalAddressVal(self) = (OBJ)-1;
+	close(fd);
     }
 %}.
 
@@ -285,12 +288,5 @@
 !UnixFileDescriptorHandle class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UnixFileDescriptorHandle.st,v 1.8 2003/08/30 12:37:09 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: UnixFileDescriptorHandle.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UnixFileDescriptorHandle.st,v 1.9 2013-01-17 22:37:55 cg Exp $'
 ! !
-
-
-
--- a/UnixFilename.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/UnixFilename.st	Sat Jan 19 01:30:00 2013 +0000
@@ -205,25 +205,15 @@
         name := nameString.
     ].
 
-    name bitsPerCharacter < 8 ifTrue:[
-        ^ name.
-    ].
-    ^ name utf8Encoded.
+    ^ name
 ! !
 
 !UnixFilename class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UnixFilename.st,v 1.17 2012/07/19 14:42:30 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UnixFilename.st,v 1.18 2012-12-13 13:21:23 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/UnixFilename.st,v 1.17 2012/07/19 14:42:30 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: UnixFilename.st 10829 2012-07-25 08:45:15Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UnixFilename.st,v 1.18 2012-12-13 13:21:23 stefan Exp $'
 ! !
-
-
-
--- a/UnixOperatingSystem.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/UnixOperatingSystem.st	Sat Jan 19 01:30:00 2013 +0000
@@ -15,7 +15,8 @@
 	instanceVariableNames:''
 	classVariableNames:'HostName DomainName SlowFork ForkFailed CurrentDirectory
 		LastTimeInfo LastTimeInfoSeconds LastTimeInfoMilliseconds
-		LastTimeInfoIsLocal CachedMountPoints CacheMountPointsTimeStamp CodeSet'
+		LastTimeInfoIsLocal CachedMountPoints CacheMountPointsTimeStamp
+		Codeset'
 	poolDictionaries:''
 	category:'OS-Unix'
 !
@@ -222,17 +223,17 @@
 #  include <time.h>
 
 struct tm {
-        int     tm_sec;         /* seconds after the minute [0-60] */
-        int     tm_min;         /* minutes after the hour [0-59] */
-        int     tm_hour;        /* hours since midnight [0-23] */
-        int     tm_mday;        /* day of the month [1-31] */
-        int     tm_mon;         /* months since January [0-11] */
-        int     tm_year;        /* years since 1900 */
-        int     tm_wday;        /* days since Sunday [0-6] */
-        int     tm_yday;        /* days since January 1 [0-365] */
-        int     tm_isdst;       /* Daylight Savings Time flag */
-        long    tm_gmtoff;      /* offset from CUT in seconds */
-        char    *tm_zone;       /* timezone abbreviation */
+	int     tm_sec;         /* seconds after the minute [0-60] */
+	int     tm_min;         /* minutes after the hour [0-59] */
+	int     tm_hour;        /* hours since midnight [0-23] */
+	int     tm_mday;        /* day of the month [1-31] */
+	int     tm_mon;         /* months since January [0-11] */
+	int     tm_year;        /* years since 1900 */
+	int     tm_wday;        /* days since Sunday [0-6] */
+	int     tm_yday;        /* days since January 1 [0-365] */
+	int     tm_isdst;       /* Daylight Savings Time flag */
+	long    tm_gmtoff;      /* offset from CUT in seconds */
+	char    *tm_zone;       /* timezone abbreviation */
 };
 # endif /* __osx__ */
 
@@ -376,7 +377,7 @@
 # if defined(ultrix) || defined(sunos) || defined(NEXT)
 #  define HAS_NO_TIMEZONE
 # endif
-# if defined(OSX)
+# if defined(__osx__)
 #  define HAS_NO_TIMEZONE
 # endif
 
@@ -415,6 +416,11 @@
 #  endif
 # endif
 
+# if defined(HAS_SYSCTL)
+#  include <sys/types.h>
+#  include <sys/sysctl.h>
+# endif
+
 #endif /* not transputer */
 
 #ifndef NO_SOCKET
@@ -985,6 +991,7 @@
     ForkFailed := false.
     SlowFork := false.
     CurrentDirectory := nil.
+    Codeset := self getCodeset.
 
     "Modified: / 11.12.1998 / 16:35:39 / cg"
 !
@@ -1003,6 +1010,7 @@
 	SlowFork := false.
 	ForkFailed := false.
 	CurrentDirectory := nil.
+	Codeset := self getCodeset.
     ]
 
     "Created: / 15.6.1996 / 15:22:37 / cg"
@@ -2305,230 +2313,230 @@
      */
 #ifdef EPERM
     if (sym == @symbol(EPERM)) {
-        RETURN ( __mkSmallInteger(EPERM) );
+	RETURN ( __mkSmallInteger(EPERM) );
     }
 #endif
 
 #ifdef ENOENT
     /* ERROR_FILE_NOT_FOUND is originally windows, but referd to in ExternalStream>>#openError: */
     if (sym == @symbol(ENOENT) || sym == @symbol(ERROR_FILE_NOT_FOUND)) {
-        RETURN ( __mkSmallInteger(ENOENT) );
+	RETURN ( __mkSmallInteger(ENOENT) );
     }
 #endif
 
 #ifdef ESRCH
     if (sym == @symbol(ESRCH)) {
-        RETURN ( __mkSmallInteger(ESRCH) );
+	RETURN ( __mkSmallInteger(ESRCH) );
     }
 #endif
 
 #ifdef EINTR
     if (sym == @symbol(EINTR)) {
-        RETURN ( __mkSmallInteger(EINTR) );
+	RETURN ( __mkSmallInteger(EINTR) );
     }
 #endif
 
 #ifdef EIO
     if (sym == @symbol(EIO)) {
-        RETURN ( __mkSmallInteger(EIO) );
+	RETURN ( __mkSmallInteger(EIO) );
     }
 #endif
 
 #ifdef ENXIO
     if (sym == @symbol(ENXIO)) {
-        RETURN ( __mkSmallInteger(ENXIO) );
+	RETURN ( __mkSmallInteger(ENXIO) );
     }
 #endif
 
 #ifdef E2BIG
     if (sym == @symbol(E2BIG)) {
-        RETURN ( __mkSmallInteger(E2BIG) );
+	RETURN ( __mkSmallInteger(E2BIG) );
     }
 #endif
 
 #ifdef ENOEXEC
     if (sym == @symbol(ENOEXEC)) {
-        RETURN ( __mkSmallInteger(ENOEXEC) );
+	RETURN ( __mkSmallInteger(ENOEXEC) );
     }
 #endif
 
 #ifdef EBADF
     if (sym == @symbol(EBADF)) {
-        RETURN ( __mkSmallInteger(EBADF) );
+	RETURN ( __mkSmallInteger(EBADF) );
     }
 #endif
 
 #ifdef ECHILD
     if (sym == @symbol(ECHILD)) {
-        RETURN ( __mkSmallInteger(ECHILD) );
+	RETURN ( __mkSmallInteger(ECHILD) );
     }
 #endif
 
 #if defined(EAGAIN)
     if (sym == @symbol(EAGAIN)) {
-        RETURN ( __mkSmallInteger(EAGAIN) );
+	RETURN ( __mkSmallInteger(EAGAIN) );
     }
 #endif
 
 #ifdef ENOMEM
     if (sym == @symbol(ENOMEM)) {
-        RETURN ( __mkSmallInteger(ENOMEM) );
+	RETURN ( __mkSmallInteger(ENOMEM) );
     }
 #endif
 
 #ifdef EACCES
     if (sym == @symbol(EACCES)) {
-        RETURN ( __mkSmallInteger(EACCES) );
+	RETURN ( __mkSmallInteger(EACCES) );
     }
 #endif
 
 #ifdef EFAULT
     if (sym == @symbol(EFAULT)) {
-        RETURN ( __mkSmallInteger(EFAULT) );
+	RETURN ( __mkSmallInteger(EFAULT) );
     }
 #endif
 
 #ifdef EBUSY
     if (sym == @symbol(EBUSY)) {
-        RETURN ( __mkSmallInteger(EBUSY) );
+	RETURN ( __mkSmallInteger(EBUSY) );
     }
 #endif
 
 #ifdef EXDEV
     if (sym == @symbol(EXDEV)) {
-        RETURN ( __mkSmallInteger(EXDEV) );
+	RETURN ( __mkSmallInteger(EXDEV) );
     }
 #endif
 
 #ifdef ENODEV
     if (sym == @symbol(ENODEV)) {
-        RETURN ( __mkSmallInteger(ENODEV) );
+	RETURN ( __mkSmallInteger(ENODEV) );
     }
 #endif
 
 #ifdef ENOTDIR
     if (sym == @symbol(ENOTDIR)) {
-        RETURN ( __mkSmallInteger(ENOTDIR) );
+	RETURN ( __mkSmallInteger(ENOTDIR) );
     }
 #endif
 
 #ifdef EISDIR
     if (sym == @symbol(EISDIR)) {
-        RETURN ( __mkSmallInteger(EISDIR) );
+	RETURN ( __mkSmallInteger(EISDIR) );
     }
 #endif
 
 #ifdef EINVAL
     if (sym == @symbol(EINVAL)) {
-        RETURN ( __mkSmallInteger(EINVAL) );
+	RETURN ( __mkSmallInteger(EINVAL) );
     }
 #endif
 
 #ifdef ENFILE
     if (sym == @symbol(ENFILE)) {
-        RETURN ( __mkSmallInteger(ENFILE) );
+	RETURN ( __mkSmallInteger(ENFILE) );
     }
 #endif
 
 #ifdef EMFILE
     if (sym == @symbol(EMFILE)) {
-        RETURN ( __mkSmallInteger(EMFILE) );
+	RETURN ( __mkSmallInteger(EMFILE) );
     }
 #endif
 
 #ifdef ENOTTY
     if (sym == @symbol(ENOTTY)) {
-        RETURN ( __mkSmallInteger(ENOTTY) );
+	RETURN ( __mkSmallInteger(ENOTTY) );
     }
 #endif
 
 #ifdef EFBIG
     if (sym == @symbol(EFBIG)) {
-        RETURN ( __mkSmallInteger(EFBIG) );
+	RETURN ( __mkSmallInteger(EFBIG) );
     }
 #endif
 
 #ifdef ENOSPC
     if (sym == @symbol(ENOSPC)) {
-        RETURN ( __mkSmallInteger(ENOSPC) );
+	RETURN ( __mkSmallInteger(ENOSPC) );
     }
 #endif
 
 #ifdef ESPIPE
     if (sym == @symbol(ESPIPE)) {
-        RETURN ( __mkSmallInteger(ESPIPE) );
+	RETURN ( __mkSmallInteger(ESPIPE) );
     }
 #endif
 
 #ifdef EROFS
     if (sym == @symbol(EROFS)) {
-        RETURN ( __mkSmallInteger(EROFS) );
+	RETURN ( __mkSmallInteger(EROFS) );
     }
 #endif
 
 #ifdef EMLINK
     if (sym == @symbol(EMLINK)) {
-        RETURN ( __mkSmallInteger(EMLINK) );
+	RETURN ( __mkSmallInteger(EMLINK) );
     }
 #endif
 
 #ifdef EPIPE
     if (sym == @symbol(EPIPE)) {
-        RETURN ( __mkSmallInteger(EPIPE) );
+	RETURN ( __mkSmallInteger(EPIPE) );
     }
 #endif
 
 #ifdef EDOM
     if (sym == @symbol(EDOM)) {
-        RETURN ( __mkSmallInteger(EDOM) );
+	RETURN ( __mkSmallInteger(EDOM) );
     }
 #endif
 
 #ifdef ERANGE
     if (sym == @symbol(ERANGE)) {
-        RETURN ( __mkSmallInteger(ERANGE) );
+	RETURN ( __mkSmallInteger(ERANGE) );
     }
 #endif
 
 #ifdef EDEADLK
     if (sym == @symbol(EDEADLK)) {
-        RETURN ( __mkSmallInteger(EDEADLK) );
+	RETURN ( __mkSmallInteger(EDEADLK) );
     }
 #endif
 
 #ifdef ENAMETOOLONG
     if (sym == @symbol(ENAMETOOLONG)) {
-        RETURN ( __mkSmallInteger(ENAMETOOLONG) );
+	RETURN ( __mkSmallInteger(ENAMETOOLONG) );
     }
 #endif
 
 #ifdef ENOLCK
     if (sym == @symbol(ENOLCK)) {
-        RETURN ( __mkSmallInteger(ENOLCK) );
+	RETURN ( __mkSmallInteger(ENOLCK) );
     }
 #endif
 
 #ifdef ENOSYS
     if (sym == @symbol(ENOSYS)) {
-        RETURN ( __mkSmallInteger(ENOSYS) );
+	RETURN ( __mkSmallInteger(ENOSYS) );
     }
 #endif
 
 #ifdef ENOTEMPTY
     if (sym == @symbol(ENOTEMPTY)) {
-        RETURN ( __mkSmallInteger(ENOTEMPTY) );
+	RETURN ( __mkSmallInteger(ENOTEMPTY) );
     }
 #endif
 
 #ifdef EEXIST
     if (sym == @symbol(EEXIST)) {
-        RETURN ( __mkSmallInteger(EEXIST) );
+	RETURN ( __mkSmallInteger(EEXIST) );
     }
 #endif
 
 #ifdef EILSEQ
     if (sym == @symbol(EILSEQ)) {
-        RETURN ( __mkSmallInteger(EILSEQ) );
+	RETURN ( __mkSmallInteger(EILSEQ) );
     }
 #endif
 
@@ -2537,13 +2545,13 @@
      */
 #ifdef ENOTBLK
     if (sym == @symbol(ENOTBLK)) {
-        RETURN ( __mkSmallInteger(ENOTBLK) );
+	RETURN ( __mkSmallInteger(ENOTBLK) );
     }
 #endif
 
 #ifdef ETXTBSY
     if (sym == @symbol(ETXTBSY)) {
-        RETURN ( __mkSmallInteger(ETXTBSY) );
+	RETURN ( __mkSmallInteger(ETXTBSY) );
     }
 #endif
 
@@ -2552,25 +2560,25 @@
      */
 #ifdef EWOULDBLOCK
     if (sym == @symbol(EWOULDBLOCK)) {
-        RETURN ( __mkSmallInteger(EWOULDBLOCK) );
+	RETURN ( __mkSmallInteger(EWOULDBLOCK) );
     }
 #endif
 
 #ifdef EOVERFLOW
     if (sym == @symbol(EOVERFLOW)) {
-        RETURN ( __mkSmallInteger(EOVERFLOW) );
+	RETURN ( __mkSmallInteger(EOVERFLOW) );
     }
 #endif
 
 #ifdef ENOMSG
     if (sym == @symbol(ENOMSG)) {
-        RETURN ( __mkSmallInteger(ENOMSG) );
+	RETURN ( __mkSmallInteger(ENOMSG) );
     }
 #endif
 
 #ifdef ELOOP
     if (sym == @symbol(ELOOP)) {
-        RETURN ( __mkSmallInteger(ELOOP) );
+	RETURN ( __mkSmallInteger(ELOOP) );
     }
 #endif
 
@@ -2579,31 +2587,31 @@
      */
 #ifdef ETIME
     if (sym == @symbol(ETIME)) {
-        RETURN ( __mkSmallInteger(ETIME) );
+	RETURN ( __mkSmallInteger(ETIME) );
     }
 #endif
 
 #ifdef ENOSR
     if (sym == @symbol(ENOSR)) {
-        RETURN ( __mkSmallInteger(ENOSR) );
+	RETURN ( __mkSmallInteger(ENOSR) );
     }
 #endif
 
 #ifdef ENOSTR
     if (sym == @symbol(ENOSTR)) {
-        RETURN ( __mkSmallInteger(ENOSTR) );
+	RETURN ( __mkSmallInteger(ENOSTR) );
     }
 #endif
 
 #ifdef ECOMM
     if (sym == @symbol(ECOMM)) {
-        RETURN ( __mkSmallInteger(ECOMM) );
+	RETURN ( __mkSmallInteger(ECOMM) );
     }
 #endif
 
 #ifdef EPROTO
     if (sym == @symbol(EPROTO)) {
-        RETURN ( __mkSmallInteger(EPROTO) );
+	RETURN ( __mkSmallInteger(EPROTO) );
     }
 #endif
 
@@ -2612,13 +2620,13 @@
      */
 #ifdef ESTALE
     if (sym == @symbol(ESTALE)) {
-        RETURN ( __mkSmallInteger(ESTALE) );
+	RETURN ( __mkSmallInteger(ESTALE) );
     }
 #endif
 
 #ifdef EREMOTE
     if (sym == @symbol(EREMOTE)) {
-        RETURN ( __mkSmallInteger(EREMOTE) );
+	RETURN ( __mkSmallInteger(EREMOTE) );
     }
 #endif
 
@@ -2627,178 +2635,178 @@
      */
 #ifdef EINPROGRESS
     if (sym == @symbol(EINPROGRESS)) {
-        RETURN ( __mkSmallInteger(EINPROGRESS) );
+	RETURN ( __mkSmallInteger(EINPROGRESS) );
     }
 #endif
 
 #ifdef EALREADY
     if (sym == @symbol(EALREADY)) {
-        RETURN ( __mkSmallInteger(EALREADY) );
+	RETURN ( __mkSmallInteger(EALREADY) );
     }
 #endif
 
 #ifdef ENOTSOCK
     if (sym == @symbol(ENOTSOCK)) {
-        RETURN ( __mkSmallInteger(ENOTSOCK) );
+	RETURN ( __mkSmallInteger(ENOTSOCK) );
     }
 #endif
 
 #ifdef EDESTADDRREQ
     if (sym == @symbol(EDESTADDRREQ)) {
-        RETURN ( __mkSmallInteger(EDESTADDRREQ) );
+	RETURN ( __mkSmallInteger(EDESTADDRREQ) );
     }
 #endif
 
 #ifdef EMSGSIZE
     if (sym == @symbol(EMSGSIZE)) {
-        RETURN ( __mkSmallInteger(EMSGSIZE) );
+	RETURN ( __mkSmallInteger(EMSGSIZE) );
     }
 #endif
 
 #ifdef EPROTOTYPE
     if (sym == @symbol(EPROTOTYPE)) {
-        RETURN ( __mkSmallInteger(EPROTOTYPE) );
+	RETURN ( __mkSmallInteger(EPROTOTYPE) );
     }
 #endif
 
 #ifdef ENOPROTOOPT
     if (sym == @symbol(ENOPROTOOPT)) {
-        RETURN ( __mkSmallInteger(ENOPROTOOPT) );
+	RETURN ( __mkSmallInteger(ENOPROTOOPT) );
     }
 #endif
 
 #ifdef EPROTONOSUPPORT
     if (sym == @symbol(EPROTONOSUPPORT)) {
-        RETURN ( __mkSmallInteger(EPROTONOSUPPORT) );
+	RETURN ( __mkSmallInteger(EPROTONOSUPPORT) );
     }
 #endif
 
 #ifdef ESOCKTNOSUPPORT
     if (sym == @symbol(ESOCKTNOSUPPORT)) {
-        RETURN ( __mkSmallInteger(ESOCKTNOSUPPORT) );
+	RETURN ( __mkSmallInteger(ESOCKTNOSUPPORT) );
     }
 #endif
 
 #ifdef EOPNOTSUPP
     if (sym == @symbol(EOPNOTSUPP)) {
-        RETURN ( __mkSmallInteger(EOPNOTSUPP) );
+	RETURN ( __mkSmallInteger(EOPNOTSUPP) );
     }
 #endif
 
 #ifdef EPFNOSUPPORT
     if (sym == @symbol(EPFNOSUPPORT)) {
-        RETURN ( __mkSmallInteger(EPFNOSUPPORT) );
+	RETURN ( __mkSmallInteger(EPFNOSUPPORT) );
     }
 #endif
 
 #ifdef EAFNOSUPPORT
     if (sym == @symbol(EAFNOSUPPORT)) {
-        RETURN ( __mkSmallInteger(EAFNOSUPPORT) );
+	RETURN ( __mkSmallInteger(EAFNOSUPPORT) );
     }
 #endif
 
 #ifdef EADDRINUSE
     if (sym == @symbol(EADDRINUSE)) {
-        RETURN ( __mkSmallInteger(EADDRINUSE) );
+	RETURN ( __mkSmallInteger(EADDRINUSE) );
     }
 #endif
 
 #ifdef EADDRNOTAVAIL
     if (sym == @symbol(EADDRNOTAVAIL)) {
-        RETURN ( __mkSmallInteger(EADDRNOTAVAIL) );
+	RETURN ( __mkSmallInteger(EADDRNOTAVAIL) );
     }
 #endif
 
 #ifdef ETIMEDOUT
     if (sym == @symbol(ETIMEDOUT)) {
-        RETURN ( __mkSmallInteger(ETIMEDOUT) );
+	RETURN ( __mkSmallInteger(ETIMEDOUT) );
     }
 #endif
 
 #ifdef ECONNREFUSED
     if (sym == @symbol(ECONNREFUSED)) {
-        RETURN ( __mkSmallInteger(ECONNREFUSED) );
+	RETURN ( __mkSmallInteger(ECONNREFUSED) );
     }
 #endif
 
 #ifdef ENETDOWN
     if (sym == @symbol(ENETDOWN)) {
-        RETURN ( __mkSmallInteger(ENETDOWN) );
+	RETURN ( __mkSmallInteger(ENETDOWN) );
     }
 #endif
 
 #ifdef ENETUNREACH
     if (sym == @symbol(ENETUNREACH)) {
-        RETURN ( __mkSmallInteger(ENETUNREACH) );
+	RETURN ( __mkSmallInteger(ENETUNREACH) );
     }
 #endif
 
 #ifdef ENETRESET
     if (sym == @symbol(ENETRESET)) {
-        RETURN ( __mkSmallInteger(ENETRESET) );
+	RETURN ( __mkSmallInteger(ENETRESET) );
     }
 #endif
 
 #ifdef ECONNABORTED
     if (sym == @symbol(ECONNABORTED)) {
-        RETURN ( __mkSmallInteger(ECONNABORTED) );
+	RETURN ( __mkSmallInteger(ECONNABORTED) );
     }
 #endif
 
 #ifdef ECONNRESET
     if (sym == @symbol(ECONNRESET)) {
-        RETURN ( __mkSmallInteger(ECONNRESET) );
+	RETURN ( __mkSmallInteger(ECONNRESET) );
     }
 #endif
 
 #ifdef EISCONN
     if (sym == @symbol(EISCONN)) {
-        RETURN ( __mkSmallInteger(EISCONN) );
+	RETURN ( __mkSmallInteger(EISCONN) );
     }
 #endif
 
 #ifdef ENOTCONN
     if (sym == @symbol(ENOTCONN)) {
-        RETURN ( __mkSmallInteger(ENOTCONN) );
+	RETURN ( __mkSmallInteger(ENOTCONN) );
     }
 #endif
 
 #ifdef ESHUTDOWN
     if (sym == @symbol(ESHUTDOWN)) {
-        RETURN ( __mkSmallInteger(ESHUTDOWN) );
+	RETURN ( __mkSmallInteger(ESHUTDOWN) );
     }
 #endif
 
 #ifdef EHOSTDOWN
     if (sym == @symbol(EHOSTDOWN)) {
-        RETURN ( __mkSmallInteger(EHOSTDOWN) );
+	RETURN ( __mkSmallInteger(EHOSTDOWN) );
     }
 #endif
 
 #ifdef EHOSTUNREACH
     if (sym == @symbol(EHOSTUNREACH)) {
-        RETURN ( __mkSmallInteger(EHOSTUNREACH) );
+	RETURN ( __mkSmallInteger(EHOSTUNREACH) );
     }
 #endif
 
 #ifdef EREMOTEIO
     if (sym == @symbol(EREMOTEIO)) {
-        RETURN ( __mkSmallInteger(EREMOTEIO) );
+	RETURN ( __mkSmallInteger(EREMOTEIO) );
     }
 #endif
 #ifdef EDQUOT
     if (sym == @symbol(EDQUOT)) {
-        RETURN ( __mkSmallInteger(EDQUOT) );
+	RETURN ( __mkSmallInteger(EDQUOT) );
     }
 #endif
 #ifdef ENOMEDIUM
     if (sym == @symbol(ENOMEDIUM)) {
-        RETURN ( __mkSmallInteger(ENOMEDIUM) );
+	RETURN ( __mkSmallInteger(ENOMEDIUM) );
     }
 #endif
 #ifdef EMEDIUMTYPE
     if (sym == @symbol(EMEDIUMTYPE)) {
-        RETURN ( __mkSmallInteger(EMEDIUMTYPE) );
+	RETURN ( __mkSmallInteger(EMEDIUMTYPE) );
     }
 #endif
 
@@ -2818,29 +2826,29 @@
     "Internal lowLevel entry for combined fork & exec;
 
      If fork is false (chain a command):
-         execute the OS command specified by the argument, aCommandPath, with
-         arguments in argArray (no arguments, if nil).
-         If successful, this method does not return and smalltalk is gone.
-         If not successful, it does return.
-         Normal use is with forkForCommand.
+	 execute the OS command specified by the argument, aCommandPath, with
+	 arguments in argArray (no arguments, if nil).
+	 If successful, this method does not return and smalltalk is gone.
+	 If not successful, it does return.
+	 Normal use is with forkForCommand.
 
      If fork is true (subprocess command execution):
-        fork a child to do the above.
-        The process id of the child process is returned; nil if the fork failed.
+	fork a child to do the above.
+	The process id of the child process is returned; nil if the fork failed.
 
      fdColl contains the filedescriptors, to be used for the child (if fork is true).
-        fdArray[1] = 15 -> use fd 15 as stdin.
-        If an element of the array is set to nil, the corresponding filedescriptor
-        will be closed for the child.
-        fdArray[1] == StdIn for child
-        fdArray[2] == StdOut for child
-        fdArray[3] == StdErr for child
-        on VMS, these must be channels as returned by createMailBox.
-        All filedescriptors not present in fdColl will be closed for the child.
+	fdArray[1] = 15 -> use fd 15 as stdin.
+	If an element of the array is set to nil, the corresponding filedescriptor
+	will be closed for the child.
+	fdArray[1] == StdIn for child
+	fdArray[2] == StdOut for child
+	fdArray[3] == StdErr for child
+	on VMS, these must be channels as returned by createMailBox.
+	All filedescriptors not present in fdColl will be closed for the child.
 
      If newPgrp is true, the subprocess will be established in a new process group.
-        The processgroup will be equal to id.
-        newPgrp is not used on WIN32 and VMS systems.
+	The processgroup will be equal to id.
+	newPgrp is not used on WIN32 and VMS systems.
 
      environmentDictionary specifies environment variables which are passed differently from
      the current environment. If non-nil, it must be a dictionary providing
@@ -2848,33 +2856,33 @@
      To pass a variable as empty (i.e. unset), pass a nil value.
 
      Notice: this used to be two separate ST-methods; however, in order to use
-            vfork on some machines, it had to be merged into one, to avoid write
-            accesses to ST/X memory from the vforked-child.
-            The code below only does read accesses."
+	    vfork on some machines, it had to be merged into one, to avoid write
+	    accesses to ST/X memory from the vforked-child.
+	    The code below only does read accesses."
 
     |envArray argArray fdArray dirName cnt aCommandPath|
 
-    environmentDictionary size ~~ 0 ifTrue:[
-        envArray := Array new:environmentDictionary size.
-        cnt := 1.
-        environmentDictionary keysAndValuesDo:[:key :val |
-            val isNil ifTrue:[
-                envArray at:cnt put:(key, '=')
-            ] ifFalse:[
-                envArray at:cnt put:(key, '=', val)
-            ].
-            cnt := cnt + 1.
-        ].
+    environmentDictionary notEmptyOrNil ifTrue:[
+	envArray := Array new:environmentDictionary size.
+	cnt := 1.
+	environmentDictionary keysAndValuesDo:[:key :val |
+	    val isNil ifTrue:[
+		envArray at:cnt put:((self encodePath:key), '=')
+	    ] ifFalse:[
+		envArray at:cnt put:((self encodePath:key), '=', (self encodePath:val))
+	    ].
+	    cnt := cnt + 1.
+	].
     ].
     argColl notNil ifTrue:[
-        argArray := argColl asArray
+	argArray := argColl asArray collect:[:eachArg| self encodePath:eachArg].
     ].
     fdColl notNil ifTrue:[
-        fdArray := fdColl asArray
+	fdArray := fdColl asArray
     ].
     aDirectory notNil ifTrue:[
-        dirName := aDirectory asFilename name.
-        dirName := self encodePath:dirName.
+	dirName := aDirectory asFilename name.
+	dirName := self encodePath:dirName.
     ].
     aCommandPath := self encodePath:aCommandPathArg.
 
@@ -2886,210 +2894,210 @@
     char **_env, **_nEnv;
 
     if (__isStringLike(aCommandPath) &&
-        ((argArray == nil) || __isArrayLike(argArray)) &&
-        ((fdArray == nil) || __isArrayLike(fdArray))
+	((argArray == nil) || __isArrayLike(argArray)) &&
+	((fdArray == nil) || __isArrayLike(fdArray))
     ) {
-        nargs = argArray == nil ? 0 : __arraySize(argArray);
-        argv = (char **) malloc(sizeof(char *) * (nargs + 1));
-        if (argv) {
-            int nOldEnv, nNewEnv;
-
-            for (i=0; i < nargs; i++) {
-                arg = __ArrayInstPtr(argArray)->a_element[i];
-                if (__isStringLike(arg)) {
-                    argv[i] = (char *) __stringVal(arg);
-                } else {
-                    argv[i] = "";
-                }
-            }
-            argv[i] = NULL;
-
-            /*
-             * number of new items in environment ..
-             */
-            nNewEnv = 0;
-            if ((envArray != nil) && __isArrayLike(envArray)) {
-                nNewEnv = __arraySize(envArray);
-            }
-
-            if (nNewEnv == 0) {
-                _nEnv = environ;
-            } else {
-                _env = environ;
-                /*
-                 * get size of environment
-                 */
-                nOldEnv = 0;
-                if (_env) {
-                    while (*_env) {
-                        nOldEnv++;
-                        _env++;
-                    }
-                }
-
-                /*
-                 * generate a new environment
-                 * I have not found a spec which defines if
-                 * items at the end overwrite previous definitions,
-                 * or if the first encountered definition is valid.
-                 * To be prepared for any case, simply add the new definitions
-                 * at both ends - that should do it in any case.
-                 * Someone with more know-how may want to fix this.
-                 * getenv() searches for the first entry.
-                 * But maybe someone creates a Dictionary from the environment.
-                 * In this case the last entry would overwrite previous entries.
-                 */
-                _nEnv = (char **)malloc(sizeof(char *) * (nNewEnv + nOldEnv + nNewEnv + 1));
-                if (_nEnv) {
-                    char **eO, **eN;
-
-                    eN = _nEnv;
-                    if (nNewEnv) {
-                        /*
-                         * add new items at the front ...
-                         */
-                        int i;
-                        OBJ *t;
-
-                        for (i=0, t = __arrayVal(envArray);
-                             i < __arraySize(envArray);
-                             i++, t++) {
-
-                            if (__isStringLike(*t)) {
-                                *eN++ = (char *)__stringVal(*t);
-                            }
-                        }
-                    }
-
-                    if (nOldEnv) {
-                        /*
-                         * append old environment
-                         */
-                        for (eO = environ; *eO; *eN++ = *eO++)
-                            continue;
-                    }
-
-                    if (nNewEnv) {
-                        /*
-                         * append new items again at the end
-                         */
-                        for (eO = _nEnv, i=0; i<nNewEnv; i++) {
-                            *eN++ = *eO++;
-                        }
-                    }
-                    *eN = NULL;
-                }
-            }
-
-            if (doFork == true) {
-                /*
-                 * fork a subprocess.
-                 */
-                int nfd;
-
-                nfd = fdArray == nil ? 0 : __arraySize(fdArray);
-                id = FORK ();
-                if (id == 0) {
-                    /*
-                    ** In child.
-                    ** first: dup filedescriptors.
-                    */
-                    for (i = 0; i < nfd; i++) {
-                        OBJ fd;
-                        int rslt;
-
-                        fd = __arrayVal(fdArray)[i];
-                        if (__isSmallInteger(fd) && (__intVal(fd) != i)) {
-                            do {
-                                rslt = dup2(__intVal(fd), i);
-                            } while ((rslt < 0) && (errno == EINTR));
-                        }
-                    }
-                    /*
-                    ** Second: close descriptors
-                    **         marked as unwanted
-                    ** (extra loop to allow duping of low filedescriptor numbers to
-                    **  higher fd numbers)
-                    */
-                    for (i = 0; i < nfd; i++) {
-                        if (__arrayVal(fdArray)[i] == nil) {
-                            close(i);
-                        }
-                    }
-
-                    /*
-                    ** third: close all filedescriptors larger
-                    ** then the explicitely closed or duped
-                    ** filedescriptors
-                    */
+	nargs = argArray == nil ? 0 : __arraySize(argArray);
+	argv = (char **) malloc(sizeof(char *) * (nargs + 1));
+	if (argv) {
+	    int nOldEnv, nNewEnv;
+
+	    for (i=0; i < nargs; i++) {
+		arg = __ArrayInstPtr(argArray)->a_element[i];
+		if (__isStringLike(arg)) {
+		    argv[i] = (char *) __stringVal(arg);
+		} else {
+		    argv[i] = "";
+		}
+	    }
+	    argv[i] = NULL;
+
+	    /*
+	     * number of new items in environment ..
+	     */
+	    nNewEnv = 0;
+	    if ((envArray != nil) && __isArrayLike(envArray)) {
+		nNewEnv = __arraySize(envArray);
+	    }
+
+	    if (nNewEnv == 0) {
+		_nEnv = environ;
+	    } else {
+		_env = environ;
+		/*
+		 * get size of environment
+		 */
+		nOldEnv = 0;
+		if (_env) {
+		    while (*_env) {
+			nOldEnv++;
+			_env++;
+		    }
+		}
+
+		/*
+		 * generate a new environment
+		 * I have not found a spec which defines if
+		 * items at the end overwrite previous definitions,
+		 * or if the first encountered definition is valid.
+		 * To be prepared for any case, simply add the new definitions
+		 * at both ends - that should do it in any case.
+		 * Someone with more know-how may want to fix this.
+		 * getenv() searches for the first entry.
+		 * But maybe someone creates a Dictionary from the environment.
+		 * In this case the last entry would overwrite previous entries.
+		 */
+		_nEnv = (char **)malloc(sizeof(char *) * (nNewEnv + nOldEnv + nNewEnv + 1));
+		if (_nEnv) {
+		    char **eO, **eN;
+
+		    eN = _nEnv;
+		    if (nNewEnv) {
+			/*
+			 * add new items at the front ...
+			 */
+			int i;
+			OBJ *t;
+
+			for (i=0, t = __arrayVal(envArray);
+			     i < __arraySize(envArray);
+			     i++, t++) {
+
+			    if (__isStringLike(*t)) {
+				*eN++ = (char *)__stringVal(*t);
+			    }
+			}
+		    }
+
+		    if (nOldEnv) {
+			/*
+			 * append old environment
+			 */
+			for (eO = environ; *eO; *eN++ = *eO++)
+			    continue;
+		    }
+
+		    if (nNewEnv) {
+			/*
+			 * append new items again at the end
+			 */
+			for (eO = _nEnv, i=0; i<nNewEnv; i++) {
+			    *eN++ = *eO++;
+			}
+		    }
+		    *eN = NULL;
+		}
+	    }
+
+	    if (doFork == true) {
+		/*
+		 * fork a subprocess.
+		 */
+		int nfd;
+
+		nfd = fdArray == nil ? 0 : __arraySize(fdArray);
+		id = FORK ();
+		if (id == 0) {
+		    /*
+		    ** In child.
+		    ** first: dup filedescriptors.
+		    */
+		    for (i = 0; i < nfd; i++) {
+			OBJ fd;
+			int rslt;
+
+			fd = __arrayVal(fdArray)[i];
+			if (__isSmallInteger(fd) && (__intVal(fd) != i)) {
+			    do {
+				rslt = dup2(__intVal(fd), i);
+			    } while ((rslt < 0) && (errno == EINTR));
+			}
+		    }
+		    /*
+		    ** Second: close descriptors
+		    **         marked as unwanted
+		    ** (extra loop to allow duping of low filedescriptor numbers to
+		    **  higher fd numbers)
+		    */
+		    for (i = 0; i < nfd; i++) {
+			if (__arrayVal(fdArray)[i] == nil) {
+			    close(i);
+			}
+		    }
+
+		    /*
+		    ** third: close all filedescriptors larger
+		    ** then the explicitely closed or duped
+		    ** filedescriptors
+		    */
 #ifndef OPEN_MAX
 # define OPEN_MAX       256
 #endif
-                    for ( ;i < OPEN_MAX; i++) {
-                        close(i);
-                    }
-
-                    if (newPgrp == true) {
+		    for ( ;i < OPEN_MAX; i++) {
+			close(i);
+		    }
+
+		    if (newPgrp == true) {
 #ifndef NEXT
-                        setsid();
+			setsid();
 #endif
 #if defined(TIOCSCTTY)
-                        ioctl(0, TIOCSCTTY, 0) ;
+			ioctl(0, TIOCSCTTY, 0) ;
 #endif
 
 #if defined(TIOCSPGRP)
-                        {
-                            int pgrp = getpid();
-
-                            ioctl(0, TIOCSPGRP, (char *)&pgrp);
-                        }
+			{
+			    int pgrp = getpid();
+
+			    ioctl(0, TIOCSPGRP, (char *)&pgrp);
+			}
 #endif
 #if defined(_POSIX_JOB_CONTROL)
-                        (void) setpgid(0, 0);
+			(void) setpgid(0, 0);
 #else
 # if defined(BSD) || defined(LINUX)
-                        (void) setpgrp(0);
-# endif
-#endif
-                    }
-
-                    if (dirName == nil || chdir((char *)__stringVal(dirName)) == 0) {
-                        execve((char *)__stringVal(aCommandPath), argv, _nEnv);
-                    }
-                    /* reached if chdir failed or aCommandPathh cannot be executed */
-                    _exit(127);                 /* POSIX 2 compatible exit value */
-                }
-            } else {
-                /*
-                 * no subprocess (i.e. transfer to another program)
-                 */
-                if (dirName == nil || chdir((char *)__stringVal(dirName)) == 0) {
-                    execve((char *)__stringVal(aCommandPath), argv, _nEnv);
-                }
-                /*
-                 * reached if chdir failed or command-path cannot be executed
-                 */
-                id = -1;
-            }
-
-            if (nNewEnv && (_nEnv != NULL)) {
-                /*
-                 * free new environment stuff
-                 */
-                free(_nEnv);
-            }
-
-            free(argv);
-
-            /*
-             * In parent: succes or failure
-             */
-            if (id == -1) {
-                RETURN (nil);
-            } else {
-                RETURN (__mkSmallInteger(id));
-            }
-        }
+			(void) setpgrp(0);
+# endif
+#endif
+		    }
+
+		    if (dirName == nil || chdir((char *)__stringVal(dirName)) == 0) {
+			execve((char *)__stringVal(aCommandPath), argv, _nEnv);
+		    }
+		    /* reached if chdir failed or aCommandPathh cannot be executed */
+		    _exit(127);                 /* POSIX 2 compatible exit value */
+		}
+	    } else {
+		/*
+		 * no subprocess (i.e. transfer to another program)
+		 */
+		if (dirName == nil || chdir((char *)__stringVal(dirName)) == 0) {
+		    execve((char *)__stringVal(aCommandPath), argv, _nEnv);
+		}
+		/*
+		 * reached if chdir failed or command-path cannot be executed
+		 */
+		id = -1;
+	    }
+
+	    if (nNewEnv && (_nEnv != NULL)) {
+		/*
+		 * free new environment stuff
+		 */
+		free(_nEnv);
+	    }
+
+	    free(argv);
+
+	    /*
+	     * In parent: succes or failure
+	     */
+	    if (id == -1) {
+		RETURN (nil);
+	    } else {
+		RETURN (__mkSmallInteger(id));
+	    }
+	}
     }
 %}.
     "
@@ -3105,9 +3113,9 @@
 
      id := OperatingSystem fork.
      id == 0 ifTrue:[
-        'I am the child'.
-        OperatingSystem exec:'/bin/ls' withArguments:#('ls' '/tmp').
-        'not reached'.
+	'I am the child'.
+	OperatingSystem exec:'/bin/ls' withArguments:#('ls' '/tmp').
+	'not reached'.
      ]
     "
     "
@@ -3115,11 +3123,11 @@
 
      id := OperatingSystem fork.
      id == 0 ifTrue:[
-        'I am the child'.
-        OperatingSystem
-           exec:'/bin/sh'
-           withArguments:#('sh' '-c' 'sleep 2;echo 1;sleep 2;echo 2').
-        'not reached'.
+	'I am the child'.
+	OperatingSystem
+	   exec:'/bin/sh'
+	   withArguments:#('sh' '-c' 'sleep 2;echo 1;sleep 2;echo 2').
+	'not reached'.
      ].
      id printNL.
      (Delay forSeconds:3.5) wait.
@@ -3279,10 +3287,10 @@
      Here we get an absolute path to the running executable."
     info := '/proc/self/exe' asFilename linkInfo.
     info notNil ifTrue:[
-        path := info path.
-        path notEmptyOrNil ifTrue:[
-            ^ path
-        ].
+	path := info path.
+	path notEmptyOrNil ifTrue:[
+	    ^ path
+	].
      ].
 
     "Fall back - do it the hard way"
@@ -3303,31 +3311,31 @@
 
     commandFilename := aCommand asFilename.
     commandFilename isAbsolute ifTrue:[
-        ^ aCommand
+	^ aCommand
     ].
     commandFilename isExplicitRelative ifTrue:[
-        ^ commandFilename pathName
+	^ commandFilename pathName
     ].
 
     path := self getEnvironment:'PATH'.
     path notEmptyOrNil ifTrue:[
-        (path asCollectionOfSubstringsSeparatedBy:self pathSeparator) do:[:eachPathComponent |
-            eachPathComponent isEmpty ifTrue:[
-                f := commandFilename
-            ] ifFalse:[
-                f := eachPathComponent asFilename construct:aCommand.
-            ].
-            self executableFileExtensions do:[:eachExtension |
-                eachExtension notEmpty ifTrue:[
-                    fExt := f addSuffix:eachExtension.
-                ] ifFalse:[
-                    fExt := f.
-                ].
-                fExt isExecutable ifTrue:[
-                    ^ fExt pathName
-                ].
-            ].
-        ].
+	(path asCollectionOfSubstringsSeparatedBy:self pathSeparator) do:[:eachPathComponent |
+	    eachPathComponent isEmpty ifTrue:[
+		f := commandFilename
+	    ] ifFalse:[
+		f := eachPathComponent asFilename construct:aCommand.
+	    ].
+	    self executableFileExtensions do:[:eachExtension |
+		eachExtension notEmpty ifTrue:[
+		    fExt := f addSuffix:eachExtension.
+		] ifFalse:[
+		    fExt := f.
+		].
+		fExt isExecutable ifTrue:[
+		    ^ fExt pathName
+		].
+	    ].
+	].
     ].
     ^ nil
 
@@ -3418,10 +3426,10 @@
 
 %{
     if (__isStringLike(encodedPathName) && __isSmallInteger(umask)) {
-        if (mkdir(__stringVal(encodedPathName), __smallIntegerVal(umask)) >= 0) {
-            RETURN(true);
-        }
-        @global(LastErrorNumber) = __mkSmallInteger(errno);
+	if (mkdir(__stringVal(encodedPathName), __smallIntegerVal(umask)) >= 0) {
+	    RETURN(true);
+	}
+	@global(LastErrorNumber) = __mkSmallInteger(errno);
     }
 %}.
     "/ could not create - if it already existed this is ok
@@ -3463,16 +3471,16 @@
     int ret;
 
     if (__isStringLike(encodedOldPathName) && __isStringLike(encodedNewPathName)) {
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = link((char *) __stringVal(encodedOldPathName), (char *) __stringVal(encodedNewPathName));
-        } while (ret < 0 && errno == EINTR);
-        __END_INTERRUPTABLE__
-        if (ret < 0) {
-            @global(LastErrorNumber) = __mkSmallInteger(errno);
-            RETURN ( false );
-        }
-        RETURN (true);
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = link((char *) __stringVal(encodedOldPathName), (char *) __stringVal(encodedNewPathName));
+	} while (ret < 0 && errno == EINTR);
+	__END_INTERRUPTABLE__
+	if (ret < 0) {
+	    @global(LastErrorNumber) = __mkSmallInteger(errno);
+	    RETURN ( false );
+	}
+	RETURN (true);
     }
 %}.
     "/
@@ -3499,24 +3507,24 @@
     int ret;
 
     if (__isStringLike(encodedOldPathName) && __isStringLike(encodedNewPathName)) {
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = symlink((char *) __stringVal(encodedOldPathName), (char *) __stringVal(encodedNewPathName));
-        } while (ret < 0 && errno == EINTR);
-        __END_INTERRUPTABLE__
-        if (ret < 0) {
-            @global(LastErrorNumber) = __mkSmallInteger(errno);
-            RETURN ( false );
-        }
-        RETURN (true);
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = symlink((char *) __stringVal(encodedOldPathName), (char *) __stringVal(encodedNewPathName));
+	} while (ret < 0 && errno == EINTR);
+	__END_INTERRUPTABLE__
+	if (ret < 0) {
+	    @global(LastErrorNumber) = __mkSmallInteger(errno);
+	    RETURN ( false );
+	}
+	RETURN (true);
     }
 #endif
 %}.
     (encodedOldPathName isString not or:[encodedNewPathName isString not]) ifTrue:[
-        "/
-        "/ bad argument(s) given
-        "/
-        ^ self primitiveFailed
+	"/
+	"/ bad argument(s) given
+	"/
+	^ self primitiveFailed
     ].
 
     "/
@@ -3533,13 +3541,13 @@
     "open a file, return an os specific fileHandle.
      openmode is a symbol defining the way to open
      valid modes are:
-        #O_RDONLY
-        #O_RDWR
-        #O_WRONLY
-        #O_CREAT
-        #O_APPEND
-        #O_SYNC
-        #O_LARGEFILE
+	#O_RDONLY
+	#O_RDWR
+	#O_WRONLY
+	#O_CREAT
+	#O_APPEND
+	#O_SYNC
+	#O_LARGEFILE
 
      This is a private entry, but maybe useful to open/create a file in a special mode,
      which is proprietrary to the operatingSystem."
@@ -3556,55 +3564,55 @@
     int n;
 
     if (!__isStringLike(encodedPathName)) {
-        error = @symbol(badArgument1);
-        goto err;
+	error = @symbol(badArgument1);
+	goto err;
     }
     if (!__isArrayLike(attributes)) {
-        error = @symbol(badArgument2);
-        goto err;
+	error = @symbol(badArgument2);
+	goto err;
     }
     if (modeInteger == nil) {
-        mode = 0644;
+	mode = 0644;
     } else if (__isSmallInteger(modeInteger)) {
-        mode = __intVal(modeInteger);
+	mode = __intVal(modeInteger);
     } else {
-        error = @symbol(badArgument3);
-        goto err;
+	error = @symbol(badArgument3);
+	goto err;
     }
 
     nAttributes = __arraySize(attributes);
     for (n = 0, ap = __arrayVal(attributes); n < nAttributes; n++) {
-        OBJ attribute = ap[n];
-
-        if (attribute == @symbol(O_RDONLY)) {
-            openFlags |= O_RDONLY;
-        } else if (attribute == @symbol(O_RDWR)) {
-            openFlags |= O_RDWR;
-        } else if (attribute == @symbol(O_WRONLY)) {
-            openFlags |= O_WRONLY;
-        } else if (attribute == @symbol(O_CREAT)) {
-            openFlags |= O_CREAT;
-        } else if (attribute == @symbol(O_APPEND)) {
-            openFlags |= O_APPEND;
-        } else if (attribute == @symbol(O_EXCL)) {
-            openFlags |= O_EXCL;
-        } else if (attribute == @symbol(O_TRUNC)) {
-            openFlags |= O_TRUNC;
-        } else if (attribute == @symbol(O_LARGEFILE)) {
+	OBJ attribute = ap[n];
+
+	if (attribute == @symbol(O_RDONLY)) {
+	    openFlags |= O_RDONLY;
+	} else if (attribute == @symbol(O_RDWR)) {
+	    openFlags |= O_RDWR;
+	} else if (attribute == @symbol(O_WRONLY)) {
+	    openFlags |= O_WRONLY;
+	} else if (attribute == @symbol(O_CREAT)) {
+	    openFlags |= O_CREAT;
+	} else if (attribute == @symbol(O_APPEND)) {
+	    openFlags |= O_APPEND;
+	} else if (attribute == @symbol(O_EXCL)) {
+	    openFlags |= O_EXCL;
+	} else if (attribute == @symbol(O_TRUNC)) {
+	    openFlags |= O_TRUNC;
+	} else if (attribute == @symbol(O_LARGEFILE)) {
 #ifdef O_LARGEFILE
-            openFlags |= O_LARGEFILE;
+	    openFlags |= O_LARGEFILE;
 #else
-            error = @symbol(badArgument2);
-            goto err;
-#endif
-        } else if (attribute == @symbol(O_SYNC)) {
+	    error = @symbol(badArgument2);
+	    goto err;
+#endif
+	} else if (attribute == @symbol(O_SYNC)) {
 #ifdef O_SYNC
-            openFlags |= O_SYNC;
+	    openFlags |= O_SYNC;
 #else
-            error = @symbol(badArgument2);
-            goto err;
-#endif
-        }
+	    error = @symbol(badArgument2);
+	    goto err;
+#endif
+	}
     }
 
 #if defined(O_NONBLOCK)
@@ -3616,29 +3624,29 @@
 again:
     fd = open((char *) __stringVal(encodedPathName), openFlags, mode);
     if (fd < 0) {
-        if (errno == EINTR) {
-            __HANDLE_INTERRUPTS__;
-            goto again;
-        } else {
-            error = __mkSmallInteger(errno);
-            goto err;
-        }
+	if (errno == EINTR) {
+	    __HANDLE_INTERRUPTS__;
+	    goto again;
+	} else {
+	    error = __mkSmallInteger(errno);
+	    goto err;
+	}
     }
     fileDescriptor = __mkSmallInteger(fd);
 err:;
 %}.
     ^ fileDescriptor notNil ifTrue:[
-        FileDescriptorHandle for:fileDescriptor.
+	FileDescriptorHandle for:fileDescriptor.
     ] ifFalse:[
-        (self errorHolderForNumber:error) reportError
-    ].
-
-    "
-        self open:'/etc/hosts' attributes:#(O_RDONLY) mode:nil
-        self open:'/tmp/xxzz' attributes:#(O_RDWR O_CREAT) mode:8r611
-        self open:'/etc/passwd' attributes:#(O_RDWR) mode:nil
-        self open:'/no one knows this file' attributes:#(O_RDONLY) mode:nil
-        self open:'foo/bar/baz' attributes:#(O_RDWR O_CREAT) mode:nil
+	(self errorHolderForNumber:error) reportError
+    ].
+
+    "
+	self open:'/etc/hosts' attributes:#(O_RDONLY) mode:nil
+	self open:'/tmp/xxzz' attributes:#(O_RDWR O_CREAT) mode:8r611
+	self open:'/etc/passwd' attributes:#(O_RDWR) mode:nil
+	self open:'/no one knows this file' attributes:#(O_RDONLY) mode:nil
+	self open:'foo/bar/baz' attributes:#(O_RDWR O_CREAT) mode:nil
     "
 !
 
@@ -3703,16 +3711,16 @@
     int ret;
 
     if (__isStringLike(encodedPathName)) {
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = rmdir((char *) __stringVal(encodedPathName));
-        } while (ret < 0 && errno == EINTR);
-        __END_INTERRUPTABLE__
-        if (ret < 0) {
-            @global(LastErrorNumber) = __mkSmallInteger(errno);
-            RETURN ( false );
-        }
-        RETURN (true);
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = rmdir((char *) __stringVal(encodedPathName));
+	} while (ret < 0 && errno == EINTR);
+	__END_INTERRUPTABLE__
+	if (ret < 0) {
+	    @global(LastErrorNumber) = __mkSmallInteger(errno);
+	    RETURN ( false );
+	}
+	RETURN (true);
     }
 %}.
     "/
@@ -3738,16 +3746,16 @@
     int ret;
 
     if (__isStringLike(encodedPathName)) {
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = unlink((char *) __stringVal(encodedPathName));
-        } while (ret < 0 && errno == EINTR);
-        __END_INTERRUPTABLE__
-        if (ret < 0) {
-            @global(LastErrorNumber) = __mkSmallInteger(errno);
-            RETURN ( false );
-        }
-        RETURN (true);
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = unlink((char *) __stringVal(encodedPathName));
+	} while (ret < 0 && errno == EINTR);
+	__END_INTERRUPTABLE__
+	if (ret < 0) {
+	    @global(LastErrorNumber) = __mkSmallInteger(errno);
+	    RETURN ( false );
+	}
+	RETURN (true);
     }
 %}.
     ^ self primitiveFailed
@@ -3770,27 +3778,27 @@
 
     if (__isStringLike(encodedOldPathName) && __isStringLike(encodedNewPathName)) {
 #if defined(HAS_RENAME)
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = rename((char *) __stringVal(encodedOldPathName), (char *) __stringVal(encodedNewPathName));
-        } while (ret < 0 && errno == EINTR);
-        __END_INTERRUPTABLE__
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = rename((char *) __stringVal(encodedOldPathName), (char *) __stringVal(encodedNewPathName));
+	} while (ret < 0 && errno == EINTR);
+	__END_INTERRUPTABLE__
 #else
-        ret = link((char *) __stringVal(encodedOldPathName), (char *) __stringVal(encodedNewPathName));
-        if (ret >= 0) {
-            ret = unlink((char *) __stringVal(encodedOldPathName));
-            if (ret < 0) {
-                eno = errno;
-                unlink((char *) __stringVal(encodedNewPathName));
-                errno = eno;
-            }
-        }
-#endif
-        if (ret < 0) {
-            @global(LastErrorNumber) = __mkSmallInteger(errno);
-            RETURN ( false );
-        }
-        RETURN (true);
+	ret = link((char *) __stringVal(encodedOldPathName), (char *) __stringVal(encodedNewPathName));
+	if (ret >= 0) {
+	    ret = unlink((char *) __stringVal(encodedOldPathName));
+	    if (ret < 0) {
+		eno = errno;
+		unlink((char *) __stringVal(encodedNewPathName));
+		errno = eno;
+	    }
+	}
+#endif
+	if (ret < 0) {
+	    @global(LastErrorNumber) = __mkSmallInteger(errno);
+	    RETURN ( false );
+	}
+	RETURN (true);
     }
 %}.
     ^ self primitiveFailed
@@ -3816,56 +3824,56 @@
     off_t truncateSize;
 
     if (!__isStringLike(encodedPathName))
-        goto getOutOfHere;
+	goto getOutOfHere;
 
     if (__isSmallInteger(newSize)) {
-        truncateSize = __intVal(newSize);
-        if (truncateSize < 0) {
-            goto getOutOfHere;
-        }
+	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;
-            }
-        }
+	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;
+	    }
+	}
     }
 
 #if defined(HAS_TRUNCATE)
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = truncate((char *) __stringVal(encodedPathName), truncateSize);
-        } while (ret < 0 && errno == EINTR);
-        __END_INTERRUPTABLE__
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = truncate((char *) __stringVal(encodedPathName), truncateSize);
+	} while (ret < 0 && errno == EINTR);
+	__END_INTERRUPTABLE__
 #else
 # ifdef HAS_FTRUNCATE
     {
-        int fd;
-
-        do {
-            fd = open((char *) __stringVal(encodedPathName), 2);
-        } while (fd < 0 && errno == EINTR);
-        if (fd < 0) {
-            @global(LastErrorNumber) = __mkSmallInteger(errno);
-            RETURN ( false );
-        }
-
-        ret = ftruncate(fd, truncateSize);
-        close(fd);
+	int fd;
+
+	do {
+	    fd = open((char *) __stringVal(encodedPathName), 2);
+	} while (fd < 0 && errno == EINTR);
+	if (fd < 0) {
+	    @global(LastErrorNumber) = __mkSmallInteger(errno);
+	    RETURN ( false );
+	}
+
+	ret = ftruncate(fd, truncateSize);
+	close(fd);
     }
 # endif /* HAS_FTRUNCATE */
 #endif
     if (ret < 0) {
-        @global(LastErrorNumber) = __mkSmallInteger(errno);
-        RETURN ( false );
+	@global(LastErrorNumber) = __mkSmallInteger(errno);
+	RETURN ( false );
     }
     RETURN (true);
 getOutOfHere:;
@@ -3953,7 +3961,7 @@
 
     "
      this could have been implemented as:
-        (self infoOf:aPathName) at:#mode
+	(self infoOf:aPathName) at:#mode
      but for huge directory searches the code below is faster
     "
 
@@ -3966,19 +3974,19 @@
 
     if (__isStringLike(encodedPathName)) {
 # ifdef TRACE_STAT_CALLS
-        printf("stat on '%s' for accessMode\n", __stringVal(encodedPathName));
-# endif
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = stat((char *) __stringVal(encodedPathName), &buf);
-        } while ((ret < 0) && (errno == EINTR));
-        __END_INTERRUPTABLE__
-
-        if (ret < 0) {
-            @global(LastErrorNumber) = __mkSmallInteger(errno);
-            RETURN ( nil );
-        }
-        RETURN ( __mkSmallInteger(buf.st_mode & 0777) );
+	printf("stat on '%s' for accessMode\n", __stringVal(encodedPathName));
+# endif
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = stat((char *) __stringVal(encodedPathName), &buf);
+	} while ((ret < 0) && (errno == EINTR));
+	__END_INTERRUPTABLE__
+
+	if (ret < 0) {
+	    @global(LastErrorNumber) = __mkSmallInteger(errno);
+	    RETURN ( nil );
+	}
+	RETURN ( __mkSmallInteger(buf.st_mode & 0777) );
     }
 %}.
    ^ self primitiveFailed
@@ -4001,16 +4009,16 @@
     int ret;
 
     if (__isStringLike(encodedPathName) && __isSmallInteger(modeBits)) {
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = chmod((char *)__stringVal(encodedPathName), __intVal(modeBits));
-        } while (ret < 0 && errno == EINTR);
-        __END_INTERRUPTABLE__
-        if (ret < 0) {
-            @global(LastErrorNumber) = __mkSmallInteger(errno);
-            RETURN ( false );
-        }
-        RETURN ( true );
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = chmod((char *)__stringVal(encodedPathName), __intVal(modeBits));
+	} while (ret < 0 && errno == EINTR);
+	__END_INTERRUPTABLE__
+	if (ret < 0) {
+	    @global(LastErrorNumber) = __mkSmallInteger(errno);
+	    RETURN ( false );
+	}
+	RETURN ( true );
     }
 %}.
     ^ self primitiveFailed
@@ -4329,14 +4337,13 @@
 
     |path|
 
-    path := self primGetCurrentDirectory.
-    path := self decodePath:path.
+    path := self decodePath:self primGetCurrentDirectory.
     CurrentDirectory := path.
 
     ^ path.
 
     "
-        self getCurrentDirectory
+	self getCurrentDirectory
     "
 !
 
@@ -4496,21 +4503,21 @@
     "return some object filled with info for the file 'aPathName';
      the info (for which corresponding access methods are understood by
      the returned object) is:
-         type            - a symbol giving the files type
-         mode            - numeric access mode
-         uid             - owners user id
-         gid             - owners group id
-         size            - files size
-         id              - files number (i.e. inode number)
-         accessed        - last access time (as Timestamp)
-         modified        - last modification time (as Timestamp)
-         statusChanged   - last status change time (as Timestamp)
-         alternativeName     - (windows only:) the MSDOS name of the file
-         recordFormatNumeric - (VMS only:) numeric value of the recordFormat
-         recordFormat        - (VMS only:) symbolic value of the recordFormat
-         recordAttributes    - (VMS only:) recordAttributes
-         fixedHeaderSize     - (VMS only:) fixed header size in a variable record format
-         recordSize          - (VMS only:) record size.
+	 type            - a symbol giving the files type
+	 mode            - numeric access mode
+	 uid             - owners user id
+	 gid             - owners group id
+	 size            - files size
+	 id              - files number (i.e. inode number)
+	 accessed        - last access time (as Timestamp)
+	 modified        - last modification time (as Timestamp)
+	 statusChanged   - last status change time (as Timestamp)
+	 alternativeName     - (windows only:) the MSDOS name of the file
+	 recordFormatNumeric - (VMS only:) numeric value of the recordFormat
+	 recordFormat        - (VMS only:) symbolic value of the recordFormat
+	 recordAttributes    - (VMS only:) recordAttributes
+	 fixedHeaderSize     - (VMS only:) fixed header size in a variable record format
+	 recordSize          - (VMS only:) record size.
 
      Some of the fields may be returned as nil on systems which do not provide
      all of the information.
@@ -4528,8 +4535,8 @@
     int ret;
 
     if (!__isStringLike(encodedPathName)) {
-        error = @symbol(badArgument);
-        goto out;
+	error = @symbol(badArgument);
+	goto out;
     }
 
 # ifdef TRACE_STAT_CALLS
@@ -4537,76 +4544,76 @@
 # endif
     __BEGIN_INTERRUPTABLE__
     do {
-        ret = stat((char *) __stringVal(encodedPathName), &buf);
+	ret = stat((char *) __stringVal(encodedPathName), &buf);
     } while ((ret < 0) && (errno == EINTR));
     __END_INTERRUPTABLE__
 
     if (ret < 0) {
-        error = __mkSmallInteger(errno);
-        @global(LastErrorNumber) = error;
-        goto out;
+	error = __mkSmallInteger(errno);
+	@global(LastErrorNumber) = error;
+	goto out;
     }
     switch (buf.st_mode & S_IFMT) {
-        case S_IFDIR:
-            type = @symbol(directory);
-            break;
-
-        case S_IFREG:
-            type = @symbol(regular);
-            break;
+	case S_IFDIR:
+	    type = @symbol(directory);
+	    break;
+
+	case S_IFREG:
+	    type = @symbol(regular);
+	    break;
 # ifdef S_IFCHR
-        case S_IFCHR:
-            type = @symbol(characterSpecial);
-            break;
+	case S_IFCHR:
+	    type = @symbol(characterSpecial);
+	    break;
 # endif
 # ifdef S_IFBLK
-        case S_IFBLK:
-            type = @symbol(blockSpecial);
-            break;
+	case S_IFBLK:
+	    type = @symbol(blockSpecial);
+	    break;
 # endif
 # ifdef S_IFMPC
-        case S_IFMPC:
-            type = @symbol(multiplexedCharacterSpecial);
-            break;
+	case S_IFMPC:
+	    type = @symbol(multiplexedCharacterSpecial);
+	    break;
 # endif
 # ifdef S_IFMPB
-        case S_IFMPB:
-            type = @symbol(multiplexedBlockSpecial);
-            break;
+	case S_IFMPB:
+	    type = @symbol(multiplexedBlockSpecial);
+	    break;
 # endif
 # ifdef S_IFLNK
-        case S_IFLNK:
-            type = @symbol(symbolicLink);
-            break;
+	case S_IFLNK:
+	    type = @symbol(symbolicLink);
+	    break;
 # endif
 # ifdef S_IFSOCK
-        case S_IFSOCK:
-            type = @symbol(socket);
-            break;
+	case S_IFSOCK:
+	    type = @symbol(socket);
+	    break;
 # endif
 # ifdef S_IFIFO
-        case S_IFIFO:
-            type = @symbol(fifo);
-            break;
-# endif
-        default:
-            type = @symbol(unknown);
-            break;
+	case S_IFIFO:
+	    type = @symbol(fifo);
+	    break;
+# endif
+	default:
+	    type = @symbol(unknown);
+	    break;
     }
 
     if (sizeof(buf.st_ino) == 8) {
-        id = __MKUINT64(&buf.st_ino);
+	id = __MKUINT64(&buf.st_ino);
     } else {
-        id = __MKUINT(buf.st_ino);
+	id = __MKUINT(buf.st_ino);
     }
     mode = __mkSmallInteger(buf.st_mode & 0777);
     uid = __mkSmallInteger(buf.st_uid);
     gid = __mkSmallInteger(buf.st_gid);
     nLink = __mkSmallInteger(buf.st_nlink);
     if (sizeof(buf.st_size) == 8) {
-        size = __MKINT64(&buf.st_size);
+	size = __MKINT64(&buf.st_size);
     } else {
-        size = __MKINT(buf.st_size);
+	size = __MKINT(buf.st_size);
     }
     aOStime = __MKUINT(buf.st_atime);
     mOStime = __MKUINT(buf.st_mtime);
@@ -4615,26 +4622,26 @@
     out:;
 %}.
      mode notNil ifTrue:[
-        "/ now done lazy in FileStatusInfo
-        "/ atime := Timestamp fromOSTime:(aOStime * 1000).
-        "/ mtime := Timestamp fromOSTime:(mOStime * 1000).
-        "/ ctime := Timestamp fromOSTime:(cOStime * 1000).
-
-        ^ FileStatusInfo
-                    type:type
-                    mode:mode
-                    uid:uid
-                    gid:gid
-                    size:size
-                    id:id
-                    accessed:aOStime
-                    modified:mOStime
-                    statusChanged:cOStime
-                    path:nil
-                    numLinks:nLink.
+	"/ now done lazy in FileStatusInfo
+	"/ atime := Timestamp fromOSTime:(aOStime * 1000).
+	"/ mtime := Timestamp fromOSTime:(mOStime * 1000).
+	"/ ctime := Timestamp fromOSTime:(cOStime * 1000).
+
+	^ FileStatusInfo
+		    type:type
+		    mode:mode
+		    uid:uid
+		    gid:gid
+		    size:size
+		    id:id
+		    accessed:aOStime
+		    modified:mOStime
+		    statusChanged:cOStime
+		    path:nil
+		    numLinks:nLink.
     ].
     error notNil ifTrue:[
-        ^ nil.
+	^ nil.
     ].
 
     ^ self primitiveFailed
@@ -4660,27 +4667,27 @@
     int ret;
 
     if (__isStringLike(encodedPathName)) {
-        struct stat buf;
+	struct stat buf;
 
 # ifdef TRACE_STAT_CALLS
-        printf("stat on '%s' for isDirectory\n", __stringVal(encodedPathName));
-# endif
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = stat((char *) __stringVal(encodedPathName), &buf);
-        } while ((ret < 0) && (errno == EINTR));
-        __END_INTERRUPTABLE__
-        if (ret < 0) {
-            @global(LastErrorNumber) = __mkSmallInteger(errno);
-            RETURN ( false );
-        }
-        RETURN ( ((buf.st_mode & S_IFMT) == S_IFDIR) ? true : false);
+	printf("stat on '%s' for isDirectory\n", __stringVal(encodedPathName));
+# endif
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = stat((char *) __stringVal(encodedPathName), &buf);
+	} while ((ret < 0) && (errno == EINTR));
+	__END_INTERRUPTABLE__
+	if (ret < 0) {
+	    @global(LastErrorNumber) = __mkSmallInteger(errno);
+	    RETURN ( false );
+	}
+	RETURN ( ((buf.st_mode & S_IFMT) == S_IFDIR) ? true : false);
     }
 %}.
     ^ self primitiveFailed
 
     "an alternative implementation would be:
-        ^ (self infoOf:aPathName) type == #directory
+	^ (self infoOf:aPathName) type == #directory
     "
 !
 
@@ -4697,17 +4704,17 @@
 
     if (__isStringLike(encodedPathName)) {
 # ifdef TRACE_ACCESS_CALLS
-        printf("access on '%s' for executable\n", __stringVal(encodedPathName));
-# endif
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = access(__stringVal(encodedPathName), X_OK);
-        } while ((ret < 0) && (errno == EINTR));
-        __END_INTERRUPTABLE__
-        if (ret < 0) {
-            @global(LastErrorNumber) = __mkSmallInteger(errno);
-        }
-        RETURN ( ((ret == 0) ? true : false) );
+	printf("access on '%s' for executable\n", __stringVal(encodedPathName));
+# endif
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = access(__stringVal(encodedPathName), X_OK);
+	} while ((ret < 0) && (errno == EINTR));
+	__END_INTERRUPTABLE__
+	if (ret < 0) {
+	    @global(LastErrorNumber) = __mkSmallInteger(errno);
+	}
+	RETURN ( ((ret == 0) ? true : false) );
     }
 %}.
     ^ self primitiveFailed
@@ -4725,17 +4732,17 @@
 
     if (__isStringLike(encodedPathName)) {
 # ifdef TRACE_ACCESS_CALLS
-        printf("access on '%s' for readable\n", __stringVal(encodedPathName));
-# endif
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = access(__stringVal(encodedPathName), R_OK);
-        } while ((ret < 0) && (errno == EINTR));
-        __END_INTERRUPTABLE__
-        if (ret < 0) {
-            @global(LastErrorNumber) = __mkSmallInteger(errno);
-        }
-        RETURN ( ((ret == 0) ? true : false) );
+	printf("access on '%s' for readable\n", __stringVal(encodedPathName));
+# endif
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = access(__stringVal(encodedPathName), R_OK);
+	} while ((ret < 0) && (errno == EINTR));
+	__END_INTERRUPTABLE__
+	if (ret < 0) {
+	    @global(LastErrorNumber) = __mkSmallInteger(errno);
+	}
+	RETURN ( ((ret == 0) ? true : false) );
     }
 %}.
     ^ self primitiveFailed
@@ -4754,18 +4761,18 @@
 
     if (__isStringLike(encodedPathName)) {
 # ifdef TRACE_STAT_CALLS
-        printf("stat on '%s' for isValidPath\n", __stringVal(encodedPathName));
-# endif
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = stat((char *) __stringVal(encodedPathName), &buf);
-        } while ((ret < 0) && (errno == EINTR));
-        __END_INTERRUPTABLE__
-        if (ret < 0) {
-            @global(LastErrorNumber) = __mkSmallInteger(errno);
-            RETURN (false);
-        }
-        RETURN ( ret ? false : true );
+	printf("stat on '%s' for isValidPath\n", __stringVal(encodedPathName));
+# endif
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = stat((char *) __stringVal(encodedPathName), &buf);
+	} while ((ret < 0) && (errno == EINTR));
+	__END_INTERRUPTABLE__
+	if (ret < 0) {
+	    @global(LastErrorNumber) = __mkSmallInteger(errno);
+	    RETURN (false);
+	}
+	RETURN ( ret ? false : true );
     }
 %}.
     ^ self primitiveFailed
@@ -4786,17 +4793,17 @@
 
     if (__isStringLike(encodedPathName)) {
 # ifdef TRACE_ACCESS_CALLS
-        printf("access on '%s' for writable\n", __stringVal(encodedPathName));
-# endif
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = access(__stringVal(encodedPathName), W_OK);
-        } while ((ret < 0) && (errno == EINTR));
-        __END_INTERRUPTABLE__
-        if (ret < 0) {
-            @global(LastErrorNumber) = __mkSmallInteger(errno);
-        }
-        RETURN ( ((ret == 0) ? true : false) );
+	printf("access on '%s' for writable\n", __stringVal(encodedPathName));
+# endif
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = access(__stringVal(encodedPathName), W_OK);
+	} while ((ret < 0) && (errno == EINTR));
+	__END_INTERRUPTABLE__
+	if (ret < 0) {
+	    @global(LastErrorNumber) = __mkSmallInteger(errno);
+	}
+	RETURN ( ((ret == 0) ? true : false) );
     }
 %}.
     ^ self primitiveFailed
@@ -4807,21 +4814,21 @@
 
      The info (for which corresponding access methods are understood by
      the returned object) is:
-         type            - a symbol giving the files type
-         mode            - numeric access mode
-         uid             - owners user id
-         gid             - owners group id
-         size            - files size
-         id              - files number (i.e. inode number)
-         accessed        - last access time (as Timestamp)
-         modified        - last modification time (as Timestamp)
-         statusChanged   - last status change time (as Timestamp)
-         alternativeName     - (windows only:) the MSDOS name of the file
-         recordFormatNumeric - (VMS only:) numeric value of the recordFormat
-         recordFormat        - (VMS only:) symbolic value of the recordFormat
-         recordAttributes    - (VMS only:) recordAttributes
-         fixedHeaderSize     - (VMS only:) fixed header size in a variable record format
-         recordSize          - (VMS only:) record size.
+	 type            - a symbol giving the files type
+	 mode            - numeric access mode
+	 uid             - owners user id
+	 gid             - owners group id
+	 size            - files size
+	 id              - files number (i.e. inode number)
+	 accessed        - last access time (as Timestamp)
+	 modified        - last modification time (as Timestamp)
+	 statusChanged   - last status change time (as Timestamp)
+	 alternativeName     - (windows only:) the MSDOS name of the file
+	 recordFormatNumeric - (VMS only:) numeric value of the recordFormat
+	 recordFormat        - (VMS only:) symbolic value of the recordFormat
+	 recordAttributes    - (VMS only:) recordAttributes
+	 fixedHeaderSize     - (VMS only:) fixed header size in a variable record format
+	 recordSize          - (VMS only:) record size.
 
      Some of the fields may be returned as nil on systems which do not provide
      all of the information.
@@ -4844,87 +4851,87 @@
     char pathBuffer[1024];
 
     if (__isStringLike(encodedPathName)) {
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = lstat((char *) __stringVal(encodedPathName), &buf);
-        } while ((ret < 0) && (errno == EINTR));
-        __END_INTERRUPTABLE__
-
-        if (ret < 0) {
-            @global(LastErrorNumber) = __mkSmallInteger(errno);
-            RETURN ( nil );
-        }
-        switch (buf.st_mode & S_IFMT) {
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = lstat((char *) __stringVal(encodedPathName), &buf);
+	} while ((ret < 0) && (errno == EINTR));
+	__END_INTERRUPTABLE__
+
+	if (ret < 0) {
+	    @global(LastErrorNumber) = __mkSmallInteger(errno);
+	    RETURN ( nil );
+	}
+	switch (buf.st_mode & S_IFMT) {
     # ifdef S_IFLNK
-            case S_IFLNK:
-                type = @symbol(symbolicLink);
-                if ((ret = readlink((char *) __stringVal(encodedPathName), pathBuffer, sizeof(pathBuffer))) < 0) {
-                    @global(LastErrorNumber) = __mkSmallInteger(errno);
-                    RETURN ( nil );
-                }
-                pathBuffer[ret] = '\0';  /* readlink does not 0-terminate */
-                path = __MKSTRING(pathBuffer);
-                break;
+	    case S_IFLNK:
+		type = @symbol(symbolicLink);
+		if ((ret = readlink((char *) __stringVal(encodedPathName), pathBuffer, sizeof(pathBuffer))) < 0) {
+		    @global(LastErrorNumber) = __mkSmallInteger(errno);
+		    RETURN ( nil );
+		}
+		pathBuffer[ret] = '\0';  /* readlink does not 0-terminate */
+		path = __MKSTRING(pathBuffer);
+		break;
     # endif
-            case S_IFDIR:
-                type = @symbol(directory);
-                break;
-
-            case S_IFREG:
-                type = @symbol(regular);
-                break;
+	    case S_IFDIR:
+		type = @symbol(directory);
+		break;
+
+	    case S_IFREG:
+		type = @symbol(regular);
+		break;
     # ifdef S_IFCHR
-            case S_IFCHR:
-                type = @symbol(characterSpecial);
-                break;
+	    case S_IFCHR:
+		type = @symbol(characterSpecial);
+		break;
     # endif
     # ifdef S_IFBLK
-            case S_IFBLK:
-                type = @symbol(blockSpecial);
-                break;
+	    case S_IFBLK:
+		type = @symbol(blockSpecial);
+		break;
     # endif
     # ifdef S_IFMPC
-            case S_IFMPC:
-                type = @symbol(multiplexedCharacterSpecial);
-                break;
+	    case S_IFMPC:
+		type = @symbol(multiplexedCharacterSpecial);
+		break;
     # endif
     # ifdef S_IFMPB
-            case S_IFMPB:
-                type = @symbol(multiplexedBlockSpecial);
-                break;
+	    case S_IFMPB:
+		type = @symbol(multiplexedBlockSpecial);
+		break;
     # endif
     # ifdef S_IFSOCK
-            case S_IFSOCK:
-                type = @symbol(socket);
-                break;
+	    case S_IFSOCK:
+		type = @symbol(socket);
+		break;
     # endif
     # ifdef S_IFIFO
-            case S_IFIFO:
-                type = @symbol(fifo);
-                break;
+	    case S_IFIFO:
+		type = @symbol(fifo);
+		break;
     # endif
-            default:
-                type = @symbol(unknown);
-                break;
-        }
-
-        if (sizeof(buf.st_ino) == 8) {
-            id = __MKUINT64(&buf.st_ino);
-        } else {
-            id = __MKUINT(buf.st_ino);
-        }
-        mode = __mkSmallInteger(buf.st_mode & 0777);
-        uid = __mkSmallInteger(buf.st_uid);
-        gid = __mkSmallInteger(buf.st_gid);
-        nLink = __mkSmallInteger(buf.st_nlink);
-        if (sizeof(buf.st_size) == 8) {
-            size = __MKINT64(&buf.st_size);
-        } else {
-            size = __MKINT(buf.st_size);
-        }
-        aOStime = __MKUINT(buf.st_atime);
-        mOStime = __MKUINT(buf.st_mtime);
-        cOStime = __MKUINT(buf.st_ctime);
+	    default:
+		type = @symbol(unknown);
+		break;
+	}
+
+	if (sizeof(buf.st_ino) == 8) {
+	    id = __MKUINT64(&buf.st_ino);
+	} else {
+	    id = __MKUINT(buf.st_ino);
+	}
+	mode = __mkSmallInteger(buf.st_mode & 0777);
+	uid = __mkSmallInteger(buf.st_uid);
+	gid = __mkSmallInteger(buf.st_gid);
+	nLink = __mkSmallInteger(buf.st_nlink);
+	if (sizeof(buf.st_size) == 8) {
+	    size = __MKINT64(&buf.st_size);
+	} else {
+	    size = __MKINT(buf.st_size);
+	}
+	aOStime = __MKUINT(buf.st_atime);
+	mOStime = __MKUINT(buf.st_mtime);
+	cOStime = __MKUINT(buf.st_ctime);
     }
 #else
     RETURN ( nil );
@@ -4932,18 +4939,18 @@
 %}.
 
     mode notNil ifTrue:[
-        ^ FileStatusInfo
-            type:type
-            mode:mode
-            uid:uid
-            gid:gid
-            size:size
-            id:id
-            accessed:aOStime
-            modified:mOStime
-            statusChanged:cOStime
-            path:(self decodePath:path)
-            numLinks:nLink.
+	^ FileStatusInfo
+	    type:type
+	    mode:mode
+	    uid:uid
+	    gid:gid
+	    size:size
+	    id:id
+	    accessed:aOStime
+	    modified:mOStime
+	    statusChanged:cOStime
+	    path:(self decodePath:path)
+	    numLinks:nLink.
    ].
    ^ self primitiveFailed
 
@@ -5000,51 +5007,51 @@
     |p path command|
 
     path = '.' ifTrue:[
-        ^ self getCurrentDirectory.
+	^ self getCurrentDirectory.
     ].
 
     "some systems have a convenient function for this ..."
     path := self primPathNameOf:(self encodePath:pathName).
     path notNil ifTrue:[
-        path := self decodePath:path.
+	path := self decodePath:path.
     ] ifFalse:[
-        (self isValidPath:pathName) ifFalse:[
-            p := pathName.
-            [(p size > 1)
-             and:[p endsWith:(self fileSeparator)]
-            ] whileTrue:[
-                p := p copyWithoutLast:1.
-            ].
-            ^ p
-        ].
-
-        (SlowFork==true or:[PipeFailed==true]) ifFalse:[
-            PipeStream openErrorSignal handle:[:ex |
-                PipeFailed := true.
-                'UnixOperatingSystem [warning]: cannot fork/popen' errorPrintCR.
-                ex return.
-            ] do:[
-                "have to fall back ..."
-                command := 'cd "' , pathName , '"; pwd'.
-                p := PipeStream readingFrom:command.
-            ].
-
-            (p isNil or:[p atEnd]) ifTrue:[
-                ('UnixOperatingSystem [warning]: PipeStream for <' , command , '> failed') errorPrintCR.
-            ] ifFalse:[
-                path := p nextLine.
-                p close.
-            ]
-        ].
-        path isNil ifTrue:[
-            "/
-            "/ return the original - there is nothing else can we do
-            "/
-            path := pathName
-        ].
-        (SlowFork==true or:[ForkFailed==true]) ifTrue:[
-            path := self compressPath:path
-        ]
+	(self isValidPath:pathName) ifFalse:[
+	    p := pathName.
+	    [(p size > 1)
+	     and:[p endsWith:(self fileSeparator)]
+	    ] whileTrue:[
+		p := p copyWithoutLast:1.
+	    ].
+	    ^ p
+	].
+
+	(SlowFork==true or:[PipeFailed==true]) ifFalse:[
+	    PipeStream openErrorSignal handle:[:ex |
+		PipeFailed := true.
+		'UnixOperatingSystem [warning]: cannot fork/popen' errorPrintCR.
+		ex return.
+	    ] do:[
+		"have to fall back ..."
+		command := 'cd "' , pathName , '"; pwd'.
+		p := PipeStream readingFrom:command.
+	    ].
+
+	    (p isNil or:[p atEnd]) ifTrue:[
+		('UnixOperatingSystem [warning]: PipeStream for <' , command , '> failed') errorPrintCR.
+	    ] ifFalse:[
+		path := p nextLine.
+		p close.
+	    ]
+	].
+	path isNil ifTrue:[
+	    "/
+	    "/ return the original - there is nothing else can we do
+	    "/
+	    path := pathName
+	].
+	(SlowFork==true or:[ForkFailed==true]) ifTrue:[
+	    path := self compressPath:path
+	]
     ].
     ^ path.
 
@@ -5069,17 +5076,17 @@
     |path|
 
 %{  /* UNLIMITEDSTACK */
-        char nameBuffer[MAXPATHLEN + 1];
-
-        if (getcwd(nameBuffer, MAXPATHLEN)) {
-            path = __MKSTRING(nameBuffer);
-            RETURN(path);
-        }
+	char nameBuffer[MAXPATHLEN + 1];
+
+	if (getcwd(nameBuffer, MAXPATHLEN)) {
+	    path = __MKSTRING(nameBuffer);
+	    RETURN(path);
+	}
 %}.
     ^ self primitiveFailed.
 
     "
-        self primGetCurrentDirectory
+	self primGetCurrentDirectory
     "
 !
 
@@ -5097,20 +5104,20 @@
 
     if (__isStringLike(encodedPathName)) {
 # ifdef TRACE_STAT_CALLS
-        printf("stat on '%s' for id\n", __stringVal(encodedPathName));
-# endif
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = stat((char *) __stringVal(encodedPathName), &buf);
-        } while (ret < 0 && errno == EINTR);
-        __END_INTERRUPTABLE__
-        if (ret >= 0) {
-            ino = buf.st_ino;
-            retVal = __MKUINT(ino);
-            RETURN (retVal);
-        }
-        @global(LastErrorNumber) = __mkSmallInteger(errno);
-        RETURN (nil);
+	printf("stat on '%s' for id\n", __stringVal(encodedPathName));
+# endif
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = stat((char *) __stringVal(encodedPathName), &buf);
+	} while (ret < 0 && errno == EINTR);
+	__END_INTERRUPTABLE__
+	if (ret >= 0) {
+	    ino = buf.st_ino;
+	    retVal = __MKUINT(ino);
+	    RETURN (retVal);
+	}
+	@global(LastErrorNumber) = __mkSmallInteger(errno);
+	RETURN (nil);
     }
     RETURN (nil);
 %}.
@@ -5136,13 +5143,13 @@
 
     if (__isStringLike(pathName)) {
 #ifdef HAS_REALPATH
-        {
-            char nameBuffer[MAXPATHLEN+1];
-
-            if (realpath(__stringVal(pathName), nameBuffer)) {
-                RETURN ( __MKSTRING(nameBuffer) );
-            }
-        }
+	{
+	    char nameBuffer[MAXPATHLEN+1];
+
+	    if (realpath(__stringVal(pathName), nameBuffer)) {
+		RETURN ( __MKSTRING(nameBuffer) );
+	    }
+	}
 #endif /* ! HAS_REALPATH */
     }
 %}.
@@ -5154,7 +5161,7 @@
      For nonexistent files, nil is returned."
 
     "could be implemented as:
-        (self infoOf:aPathName) accessed
+	(self infoOf:aPathName) accessed
     "
     |osSeconds i encodedPathName|
 
@@ -5167,18 +5174,18 @@
 
     if (__isStringLike(encodedPathName)) {
 # ifdef TRACE_STAT_CALLS
-        printf("stat on '%s' for timeOfLastAccess\n", __stringVal(encodedPathName));
-# endif
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = stat((char *) __stringVal(encodedPathName), &buf);
-        } while (ret < 0 && errno == EINTR);
-        __END_INTERRUPTABLE__
-        if (ret < 0) {
-            @global(LastErrorNumber) = __mkSmallInteger(errno);
-            RETURN (nil);
-        }
-        osSeconds = __MKUINT(buf.st_atime);
+	printf("stat on '%s' for timeOfLastAccess\n", __stringVal(encodedPathName));
+# endif
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = stat((char *) __stringVal(encodedPathName), &buf);
+	} while (ret < 0 && errno == EINTR);
+	__END_INTERRUPTABLE__
+	if (ret < 0) {
+	    @global(LastErrorNumber) = __mkSmallInteger(errno);
+	    RETURN (nil);
+	}
+	osSeconds = __MKUINT(buf.st_atime);
     }
 %}.
     osSeconds notNil ifTrue:[^ Timestamp fromOSTime:(osSeconds * 1000)].
@@ -5197,7 +5204,7 @@
      For nonexistent files, nil is returned."
 
     "could be implemented as:
-        (self infoOf:aPathName) modified
+	(self infoOf:aPathName) modified
     "
 
     |osSeconds i encodedPathName|
@@ -5210,18 +5217,18 @@
 
     if (__isStringLike(encodedPathName)) {
 # ifdef TRACE_STAT_CALLS
-        printf("stat on '%s' for timeOfLastChange\n", __stringVal(encodedPathName));
-# endif
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = stat((char *) __stringVal(encodedPathName), &buf);
-        } while (ret < 0 && errno == EINTR);
-        __END_INTERRUPTABLE__
-        if (ret < 0) {
-            @global(LastErrorNumber) = __mkSmallInteger(errno);
-            RETURN ( nil );
-        }
-        osSeconds = __MKUINT(buf.st_mtime);
+	printf("stat on '%s' for timeOfLastChange\n", __stringVal(encodedPathName));
+# endif
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = stat((char *) __stringVal(encodedPathName), &buf);
+	} while (ret < 0 && errno == EINTR);
+	__END_INTERRUPTABLE__
+	if (ret < 0) {
+	    @global(LastErrorNumber) = __mkSmallInteger(errno);
+	    RETURN ( nil );
+	}
+	osSeconds = __MKUINT(buf.st_mtime);
     }
 %}.
     osSeconds notNil ifTrue:[^ Timestamp fromOSTime:(osSeconds * 1000)].
@@ -5246,7 +5253,7 @@
 
     "
      this could have been implemented as:
-        (self infoOf:aPathName) type
+	(self infoOf:aPathName) type
      but for huge directory searches the code below is faster
     "
 
@@ -5256,45 +5263,45 @@
 
     if (__isStringLike(encodedPathName)) {
 # ifdef TRACE_STAT_CALLS
-        printf("stat on '%s' for type\n", __stringVal(encodedPathName));
-# endif
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = stat((char *) __stringVal(encodedPathName), &buf);
-        } while (ret < 0 && errno == EINTR);
-        __END_INTERRUPTABLE__
-        if (ret < 0) {
-            @global(LastErrorNumber) = __mkSmallInteger(errno);
-            RETURN ( nil );
-        }
-        switch (buf.st_mode & S_IFMT) {
-            case S_IFDIR:
-                RETURN ( @symbol(directory) );
-            case S_IFREG:
-                RETURN ( @symbol(regular) );
+	printf("stat on '%s' for type\n", __stringVal(encodedPathName));
+# endif
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = stat((char *) __stringVal(encodedPathName), &buf);
+	} while (ret < 0 && errno == EINTR);
+	__END_INTERRUPTABLE__
+	if (ret < 0) {
+	    @global(LastErrorNumber) = __mkSmallInteger(errno);
+	    RETURN ( nil );
+	}
+	switch (buf.st_mode & S_IFMT) {
+	    case S_IFDIR:
+		RETURN ( @symbol(directory) );
+	    case S_IFREG:
+		RETURN ( @symbol(regular) );
 # ifdef S_IFCHR
-            case S_IFCHR:
-                RETURN ( @symbol(characterSpecial) );
+	    case S_IFCHR:
+		RETURN ( @symbol(characterSpecial) );
 # endif
 # ifdef S_IFBLK
-            case S_IFBLK:
-                RETURN ( @symbol(blockSpecial) );
+	    case S_IFBLK:
+		RETURN ( @symbol(blockSpecial) );
 # endif
 # ifdef S_IFLNK
-            case S_IFLNK:
-                RETURN ( @symbol(symbolicLink) );
+	    case S_IFLNK:
+		RETURN ( @symbol(symbolicLink) );
 # endif
 # ifdef S_IFSOCK
-            case S_IFSOCK:
-                RETURN ( @symbol(socket) );
+	    case S_IFSOCK:
+		RETURN ( @symbol(socket) );
 # endif
 # ifdef S_IFIFO
-            case S_IFIFO:
-                RETURN ( @symbol(fifo) );
-# endif
-            default:
-                RETURN ( @symbol(unknown) );
-        }
+	    case S_IFIFO:
+		RETURN ( @symbol(fifo) );
+# endif
+	    default:
+		RETURN ( @symbol(unknown) );
+	}
     }
 %}.
     i := self infoOf:aPathName.
@@ -6413,27 +6420,36 @@
     "Modified: / 5.6.1998 / 18:38:52 / cg"
 !
 
-getCodeSet
+getCodeset
     "get the codeset, we are running under"
 
-    |codeSet|
-
-%{  
+    |codeset|
+
+%{
 #include <langinfo.h>
     {
-        char *__codeset;
-
-        __codeset = nl_langinfo(CODESET);
-        if (strlen(__codeset) > 0) {
-            codeSet = __MKSTRING(__codeset);
-        }
-    }
-%}.
-    CodeSet := codeSet.
-    ^ codeSet.
-
-    "
-     OperatingSystem getCodeSet
+	char *__codeset;
+
+	setlocale(LC_CTYPE, "");
+	__codeset = nl_langinfo(CODESET);
+	if (strlen(__codeset) > 0) {
+	    codeset = __MKSTRING(__codeset);
+	}
+    }
+%}.
+    codeset notNil ifTrue:[
+	codeset := codeset asLowercase.
+	codeset = 'utf-8' ifTrue:[
+	    codeset := #utf8.
+	] ifFalse:[
+	    codeset := codeset asSymbol.
+	].
+    ].
+    Codeset := codeset.
+    ^ codeset.
+
+    "
+     OperatingSystem getCodeset
     "
 !
 
@@ -7073,8 +7089,8 @@
 
 getNetworkAddresses
     "return a dictionary filled with
-        key -> name of interface
-        value -> the socket adress of the interface
+	key -> name of interface
+	value -> the socket adress of the interface
      for each interface"
 
     |addressArray nameArray noOfIf retDictionary error|
@@ -7098,8 +7114,8 @@
 
     afinet_socket = socket(AF_INET, SOCK_DGRAM, 0);
     if (afinet_socket < 0) {
-        error = __MKSTRING("Cannot open socket");
-        goto bad;
+	error = __MKSTRING("Cannot open socket");
+	goto bad;
     }
 
     /*
@@ -7110,9 +7126,9 @@
     ifc.ifc_buf = (caddr_t) buf;
 
     if (ioctl (afinet_socket, SIOCGIFCONF, (caddr_t) &ifc) < 0) {
-        close(afinet_socket);
-        error = __MKSTRING("ioctl(SIOCGIFCONF) failed");
-        goto bad;
+	close(afinet_socket);
+	error = __MKSTRING("ioctl(SIOCGIFCONF) failed");
+	goto bad;
     }
 
     n_ifs = ifc.ifc_len / sizeof (struct ifreq);
@@ -7121,9 +7137,9 @@
     addressArray = __ARRAY_NEW_INT(n_ifs);
 
     if (nameArray == nil || addressArray == nil) {
-        /* Creating a string wouldn/t work here */
-        error = @symbol(allocationFailure);
-        goto bad;
+	/* Creating a string wouldn/t work here */
+	error = @symbol(allocationFailure);
+	goto bad;
     }
 
     /*
@@ -7133,28 +7149,28 @@
     countOfIf = 0;
 
     for (i=0, ifr = ifc.ifc_req; i < n_ifs; i++, ifr++) {
-        /*
-        ** Get Flags for this interface
-        */
-
-        memcpy(&ifreq, ifr, sizeof(ifreq));
-        /*
-        ** Get address for this interface
-        */
-        memcpy(&ifreq, ifr, sizeof(ifreq));
-        if (ioctl (afinet_socket, SIOCGIFADDR, &ifreq) >= 0) {
-            t = __MKBYTEARRAY((char *)&ifreq.ifr_addr, sizeof(ifreq.ifr_addr));
-            __arrayVal(addressArray)[countOfIf] = t; __STORE(addressArray, t);
-            t = __MKSTRING(&ifreq.ifr_name);
-            __arrayVal(nameArray)[countOfIf] = t; __STORE(nameArray, t);
-            countOfIf += 1;
-        }
+	/*
+	** Get Flags for this interface
+	*/
+
+	memcpy(&ifreq, ifr, sizeof(ifreq));
+	/*
+	** Get address for this interface
+	*/
+	memcpy(&ifreq, ifr, sizeof(ifreq));
+	if (ioctl (afinet_socket, SIOCGIFADDR, &ifreq) >= 0) {
+	    t = __MKBYTEARRAY((char *)&ifreq.ifr_addr, sizeof(ifreq.ifr_addr));
+	    __arrayVal(addressArray)[countOfIf] = t; __STORE(addressArray, t);
+	    t = __MKSTRING(&ifreq.ifr_name);
+	    __arrayVal(nameArray)[countOfIf] = t; __STORE(nameArray, t);
+	    countOfIf += 1;
+	}
     }
 
     noOfIf = __mkSmallInteger(countOfIf);
 bad:
     if (afinet_socket >= 0)
-        close(afinet_socket);
+	close(afinet_socket);
 #else
     error = @symbol(notSupported);
 #endif /* defined(SIOCGIFADDR) */
@@ -7162,14 +7178,14 @@
 
     retDictionary := Dictionary new:noOfIf.
     error notNil ifTrue:[
-        self primitiveFailed:error.
-        "return empty dictionary if proceed from error"
-        ^  retDictionary.
+	self primitiveFailed:error.
+	"return empty dictionary if proceed from error"
+	^  retDictionary.
     ].
 
     1 to:noOfIf do:[:cnt|
-        "take the first address, if there is more than one!!"
-        retDictionary at:(nameArray at:cnt) ifAbsentPut:(SocketAddress fromBytes:(addressArray at:cnt)).
+	"take the first address, if there is more than one!!"
+	retDictionary at:(nameArray at:cnt) ifAbsentPut:(SocketAddress fromBytes:(addressArray at:cnt)).
     ].
 
     ^ retDictionary
@@ -7348,6 +7364,7 @@
     arr = __BYTEARRAY_UNINITIALIZED_NEW_INT(4);
     *(int *)(__byteArrayVal(arr)) = runningId;
     RETURN (arr);
+
 #elif defined(IRIX5)
     char idBuffer[MAXSYSIDSIZE];
     int retVal;
@@ -7368,8 +7385,8 @@
 !
 
 getSystemInfo
-    "return info on the system weare running on.
-     If the system supports the uname system call, that info is returned;
+    "return info on the system we are running on.
+     If the system supports uname and sysinfo-like system calls, that info is returned;
      otherwise, some simulated info is returned.
 
      WARNING:
@@ -7410,6 +7427,9 @@
 	#cpuType          -> type of cpu (more detailed than machine)
 	#numberOfCPUs     -> number of cpus in box
 
+     osx:
+	#physicalRam      -> total amount of physical memory
+
      solaris:
 	#physicalRam      -> total amount of physical memory
 	#availableRam     -> total available amount of physical memory (i.e. unused ram)
@@ -7967,6 +7987,23 @@
     }
 #endif /* HAS_GETSYSINFO */
 
+#if defined(HAS_SYSCTL) /* __osx__ */
+    int mib[3];
+    long _physmem;
+    size_t _len;
+
+    mib[0] = CTL_HW;
+    mib[1] = HW_MEMSIZE;
+    _len = sizeof(_physmem);
+    sysctl(mib, 2, &_physmem, &_len, NULL, 0);
+    physicalRam   = __MKUINT(_physmem);
+#endif /* __osx__ */
+
+#if defined(__x86_64__)
+    cpuType = __MKSTRING("x86_64");
+#endif
+
+
     {
 	extern OBJ __getInstructionSetInfo();
 
@@ -8463,19 +8500,19 @@
 
 !UnixOperatingSystem class methodsFor:'path queries'!
 
-decodePath:encodedPathName 
+decodePath:encodedPathName
     "decode the pathName as returned by system calls.
      E.g. linux system calls return sigle byte strings only,
      so the pathName has been UTF-8 decoded."
-    
+
     "linux strings are in UTF8 (in contemporary linux versions)"
-    encodedPathName notNil ifTrue:[
-        [
-            ^ encodedPathName utf8Decoded.
-        ] on:InvalidEncodingError do:[:ex|
-            "maybe there are old filenames in ISO8859-x,
-             just keep them untranslated"
-        ].
+    (encodedPathName notNil and:[Codeset == #utf8]) ifTrue:[
+	[
+	    ^ encodedPathName utf8Decoded.
+	] on:InvalidEncodingError do:[:ex|
+	    "maybe there are old filenames in ISO8859-x,
+	     just keep them untranslated"
+	].
     ].
     ^ encodedPathName
 !
@@ -8530,12 +8567,15 @@
     "
 !
 
-encodePath:pathName 
+encodePath:pathName
     "encode the pathName for use with system calls.
      E.g. linux system calls accept sigle byte strings only,
      so the pathName has been UTF-8 encoded, before using it in a system call."
-    
-    ^ pathName utf8Encoded
+
+    (pathName notNil and:[Codeset == #utf8]) ifTrue:[
+	^ pathName utf8Encoded.
+    ].
+    ^ pathName
 ! !
 
 !UnixOperatingSystem class methodsFor:'private'!
@@ -8831,8 +8871,8 @@
      Use the XXXmillisecondTime:-methods to compare and add time deltas - these know about the wrap.
 
      BAD DESIGN:
-        This should be changed to return some instance of RelativeTime,
-        and these computations moved there.
+	This should be changed to return some instance of RelativeTime,
+	and these computations moved there.
 
      Don't use this method in application code since it is an internal (private)
      interface. For compatibility with ST-80, use Time millisecondClockValue.
@@ -8847,16 +8887,16 @@
     struct timespec ts;
 
     if (has_clock_gettime) {
-        if (clock_gettime(CLOCK_MONOTONIC, &ts) != -1) {
-            t = ts.tv_sec*1000 + ts.tv_nsec/1000000;
-            goto out;
-        } else {
-            /*
-             * clock_gettime is not implemented in the kernel
-             * fall through to alternative implementation
-             */
-            has_clock_gettime = 0;
-        }
+	if (clock_gettime(CLOCK_MONOTONIC, &ts) != -1) {
+	    t = ts.tv_sec*1000 + ts.tv_nsec/1000000;
+	    goto out;
+	} else {
+	    /*
+	     * clock_gettime is not implemented in the kernel
+	     * fall through to alternative implementation
+	     */
+	    has_clock_gettime = 0;
+	}
     }
 #endif /*  _POSIX_MONOTONIC_CLOCK */
 
@@ -8872,12 +8912,12 @@
     struct tms tb;
 
     if (!millisecondsPerTick) {
-        int ticksPerSecond = sysconf(_SC_CLK_TCK);
-        if (ticksPerSecond <= 0)
-            goto err;
-        if (ticksPerSecond > 1000)
-            goto err;
-        millisecondsPerTick = 1000 / ticksPerSecond;
+	int ticksPerSecond = sysconf(_SC_CLK_TCK);
+	if (ticksPerSecond <= 0)
+	    goto err;
+	if (ticksPerSecond > 1000)
+	    goto err;
+	millisecondsPerTick = 1000 / ticksPerSecond;
 /*
 printf("milliSecondsPerTick: %d\n", millisecondsPerTick);
 */
@@ -8885,7 +8925,7 @@
 
     ticks = times(&tb);
     if (ticks == -1)
-        goto err;
+	goto err;
 
     t = ticks * millisecondsPerTick;
 
@@ -10325,6 +10365,7 @@
 
 	nInstBytes = 0;
 	extPtr = (char *)(__externalBytesAddress(aByteBuffer));
+	if (extPtr == NULL) goto bad;
 	sz = __externalBytesSize(aByteBuffer);
 	if (__isSmallInteger(sz)) {
 	    objSize = __smallIntegerVal(sz);
@@ -10459,6 +10500,7 @@
 
 	nInstBytes = 0;
 	extPtr = (char *)(__externalBytesAddress(aByteBuffer));
+	if (extPtr == NULL) goto bad;
 	sz = __externalBytesSize(aByteBuffer);
 	if (__isSmallInteger(sz)) {
 	    objSize = __smallIntegerVal(sz);
@@ -13401,12 +13443,13 @@
 !UnixOperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.296 2012/12/13 16:25:33 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.301 2013-01-17 22:37:55 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.296 2012/12/13 16:25:33 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.301 2013-01-17 22:37:55 cg Exp $'
 ! !
 
+
 UnixOperatingSystem initialize!
 UnixOperatingSystem::FileDescriptorHandle initialize!
--- a/UserInterrupt.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/UserInterrupt.st	Sat Jan 19 01:30:00 2013 +0000
@@ -44,12 +44,5 @@
 !UserInterrupt class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UserInterrupt.st,v 1.4 2011/09/29 11:20:10 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: UserInterrupt.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UserInterrupt.st,v 1.4 2011-09-29 11:20:10 cg Exp $'
 ! !
-
-
-
--- a/UserMessage.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/UserMessage.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1,14 +1,3 @@
-"
- COPYRIGHT (c) 2006 by eXept Software AG
-	      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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
-"
 "{ Package: 'stx:libbasic' }"
 
 Object subclass:#UserMessage
@@ -20,20 +9,6 @@
 
 !UserMessage class methodsFor:'documentation'!
 
-copyright
-"
- COPYRIGHT (c) 2006 by eXept Software AG
-	      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
- inclusion of the above copyright notice.   This software may not
- be provided or otherwise made available to, or used by, any
- other person.  No title to or ownership of the software is
- hereby transferred.
-"
-!
-
 documentation
 "
     added for vw5i compatibility, which accesses messageCatalogs
@@ -363,16 +338,9 @@
 !UserMessage class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UserMessage.st,v 1.7 2011/05/09 13:59:06 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UserMessage.st,v 1.7 2011-05-09 13:59:06 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/UserMessage.st,v 1.7 2011/05/09 13:59:06 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: UserMessage.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UserMessage.st,v 1.7 2011-05-09 13:59:06 stefan Exp $'
 ! !
-
-
-
--- a/UserNotification.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/UserNotification.st	Sat Jan 19 01:30:00 2013 +0000
@@ -82,19 +82,14 @@
     "Created: / 23.7.1999 / 15:31:44 / stefan"
 ! !
 
-
 !UserNotification class methodsFor:'notification'!
 
 notify:aString
-    self raiseErrorString:aString
+    self raiseRequestErrorString:aString
 !
 
-notify: message progress: progress
-
-    ^ProgressNotification new
-        messageText: message;
-        parameter: progress;
-        raiseRequest
+notify:message progress:progress
+    ^ ProgressNotification notify:message progress:progress
 
     "Created: / 31-07-2012 / 15:18:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
@@ -153,18 +148,11 @@
 !UserNotification class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UserNotification.st,v 1.16 2012/07/31 14:18:45 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UserNotification.st,v 1.17 2012-12-12 14:30:09 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/UserNotification.st,v 1.16 2012/07/31 14:18:45 vrany Exp §'
-!
-
-version_SVN
-    ^ '$Id: UserNotification.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UserNotification.st,v 1.17 2012-12-12 14:30:09 stefan Exp $'
 ! !
 
 UserNotification initialize!
-
-
-
--- a/UserPreferences.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/UserPreferences.st	Sat Jan 19 01:30:00 2013 +0000
@@ -571,13 +571,6 @@
 "/        ^ self
 "/    ].
 
-    key == #svnConfigurations2 ifTrue:[
-        self breakPoint:#jv.
-        ^self.
-    ].
-
-
-
     value == true ifTrue:[
         key == #useNewVersionDiffBrowser ifTrue:[
             classNameToCheck := #'VersionDiffBrowser'.
@@ -612,9 +605,9 @@
     ^ super at:key asSymbol put:value
 
     "Modified: / 15-01-2012 / 14:26:53 / cg"
-    "Modified: / 22-02-2012 / 13:22:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !UserPreferences methodsFor:'accessing-locale'!
 
 dateInputFormat
@@ -907,6 +900,7 @@
 !
 
 changesBrowserClass
+    "the browser to be used for the changeFile"
 
     | class className |
 
@@ -1454,6 +1448,28 @@
     "Created: / 29-11-2010 / 19:47:36 / cg"
 !
 
+eclipseStyleMenus
+    "if true, return menus organized like in eclipse;
+     if false (the default) return them as usual"
+
+    ^ self at:#eclipseStyleMenus ifAbsent:false
+
+    "Created: / 08-07-2011 / 13:22:45 / cg"
+!
+
+eclipseStyleMenus:aBoolean
+    "if true, return menus organized like in eclipse;
+     if false (the default) return them as usual"
+
+    ^ self at:#eclipseStyleMenus put:aBoolean
+
+    "
+     UserPreferences current eclipseStyleMenus:true
+    "
+
+    "Created: / 08-07-2011 / 13:22:50 / cg"
+!
+
 expandSelectionOnMouseMoveWithButtonPressed
     "expand the selection in a selectionInListView if the mouse is pressed while moving over
      more lines. Default is not FALSE !!"
@@ -1544,6 +1560,35 @@
     "Modified: / 22-10-2010 / 11:13:54 / cg"
 !
 
+menuPanelTakesFocusOnClick
+    "if true, the menu panel takes the focus and allows further control via
+     cursor and tab keys. 
+     Used to be on, but now we changed the default as it turned out to be counter productive"
+
+    ^ self at:#menuPanelTakesFocusOnClick ifAbsent:[ false ]
+
+    "
+     UserPreferences current menuPanelTakesFocusOnClick
+    "
+    "Modified: / 11.9.1998 / 00:09:59 / cg"
+!
+
+menuPanelTakesFocusOnClick:aBooleanOrNil
+    "if true, the menu panel takes the focus and allows further control via
+     cursor and tab keys. 
+     Used to be on, but now we changed the default as it turned out to be counter productive"
+
+    ^ self at:#menuPanelTakesFocusOnClick put:aBooleanOrNil
+
+    "
+     UserPreferences current menuPanelTakesFocusOnClick:true
+     UserPreferences current menuPanelTakesFocusOnClick:false
+     UserPreferences current menuPanelTakesFocusOnClick
+    "
+
+    "Modified: / 11.9.1998 / 00:09:59 / cg"
+!
+
 motionDistanceToStartDrag
     "the motion distance (in pixel) to start drag (as opposed to adding to the selection)"
 
@@ -3249,6 +3294,7 @@
     "
 ! !
 
+
 !UserPreferences methodsFor:'accessing-prefs-editor'!
 
 deleteSetsClipboardText
@@ -3870,6 +3916,7 @@
     "Created: / 19-08-2011 / 12:51:58 / cg"
 ! !
 
+
 !UserPreferences methodsFor:'default settings-syntax colors'!
 
 listOfPredefinedSyntaxColoringSchemes
@@ -4140,13 +4187,13 @@
 !UserPreferences class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UserPreferences.st,v 1.319 2012/11/01 14:22:04 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UserPreferences.st,v 1.320 2012-12-01 09:51:12 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/UserPreferences.st,v 1.319 2012/11/01 14:22:04 cg Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/UserPreferences.st,v 1.320 2012-12-01 09:51:12 cg Exp $'
 !
 
 version_SVN
-    ^ '$ Id: UserPreferences.st 10648 2011-06-23 15:55:10Z vranyj1  $'
+    ^ '§ Id: UserPreferences.st 10648 2011-06-23 15:55:10Z vranyj1  §'
 ! !
--- a/UtcTimestamp.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/UtcTimestamp.st	Sat Jan 19 01:30:00 2013 +0000
@@ -118,10 +118,5 @@
 !UtcTimestamp class methodsFor:'documentation'!
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/UtcTimestamp.st,v 1.4 2011/10/13 20:05:55 cg Exp '
-!
-
-version_SVN
-    ^ '$Id: UtcTimestamp.st 10729 2011-10-31 22:19:21Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UtcTimestamp.st,v 1.4 2011-10-13 20:05:55 cg Exp $'
 ! !
-
--- a/VMInternalError.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/VMInternalError.st	Sat Jan 19 01:30:00 2013 +0000
@@ -57,14 +57,7 @@
 !VMInternalError class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/VMInternalError.st,v 1.3 2011/09/29 11:19:50 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: VMInternalError.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/VMInternalError.st,v 1.3 2011-09-29 11:19:50 cg Exp $'
 ! !
 
 VMInternalError initialize!
-
-
-
--- a/VarArgBlock.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/VarArgBlock.st	Sat Jan 19 01:30:00 2013 +0000
@@ -237,14 +237,7 @@
 !VarArgBlock class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/VarArgBlock.st,v 1.7 2011/09/29 11:19:59 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: VarArgBlock.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/VarArgBlock.st,v 1.7 2011-09-29 11:19:59 cg Exp $'
 ! !
 
 VarArgBlock initialize!
-
-
-
--- a/VarArgCheapBlock.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/VarArgCheapBlock.st	Sat Jan 19 01:30:00 2013 +0000
@@ -200,14 +200,7 @@
 !VarArgCheapBlock class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/VarArgCheapBlock.st,v 1.5 2011/09/29 11:19:49 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: VarArgCheapBlock.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/VarArgCheapBlock.st,v 1.5 2011-09-29 11:19:49 cg Exp $'
 ! !
 
 VarArgCheapBlock initialize!
-
-
-
--- a/Visitor.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Visitor.st	Sat Jan 19 01:30:00 2013 +0000
@@ -262,16 +262,9 @@
 !Visitor class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Visitor.st,v 1.7 2011/01/24 13:20:08 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Visitor.st,v 1.7 2011-01-24 13:20:08 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Visitor.st,v 1.7 2011/01/24 13:20:08 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: Visitor.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Visitor.st,v 1.7 2011-01-24 13:20:08 stefan Exp $'
 ! !
-
-
-
--- a/Warning.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Warning.st	Sat Jan 19 01:30:00 2013 +0000
@@ -155,18 +155,11 @@
 !Warning class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Warning.st,v 1.14 2009/10/14 17:34:52 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Warning.st,v 1.14 2009-10-14 17:34:52 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Warning.st,v 1.14 2009/10/14 17:34:52 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Warning.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Warning.st,v 1.14 2009-10-14 17:34:52 cg Exp $'
 ! !
 
 Warning initialize!
-
-
-
--- a/WeakArray.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/WeakArray.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1016,18 +1016,11 @@
 !WeakArray class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/WeakArray.st,v 1.68 2012/11/24 12:55:25 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/WeakArray.st,v 1.68 2012-11-24 12:55:25 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/WeakArray.st,v 1.68 2012/11/24 12:55:25 stefan Exp §'
-!
-
-version_SVN
-    ^ '$Id: WeakArray.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/WeakArray.st,v 1.68 2012-11-24 12:55:25 stefan Exp $'
 ! !
 
 WeakArray initialize!
-
-
-
--- a/WeakDependencyDictionary.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/WeakDependencyDictionary.st	Sat Jan 19 01:30:00 2013 +0000
@@ -163,12 +163,5 @@
 !WeakDependencyDictionary class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/WeakDependencyDictionary.st,v 1.14 2012/08/06 12:38:10 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: WeakDependencyDictionary.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/WeakDependencyDictionary.st,v 1.14 2012-08-06 12:38:10 cg Exp $'
 ! !
-
-
-
--- a/WeakIdentityDictionary.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/WeakIdentityDictionary.st	Sat Jan 19 01:30:00 2013 +0000
@@ -409,12 +409,5 @@
 !WeakIdentityDictionary class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/WeakIdentityDictionary.st,v 1.43 2011/09/29 11:19:08 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: WeakIdentityDictionary.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/WeakIdentityDictionary.st,v 1.43 2011-09-29 11:19:08 cg Exp $'
 ! !
-
-
-
--- a/WeakIdentitySet.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/WeakIdentitySet.st	Sat Jan 19 01:30:00 2013 +0000
@@ -299,12 +299,5 @@
 !WeakIdentitySet class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/WeakIdentitySet.st,v 1.38 2012/08/13 16:45:53 stefan Exp $'
-!
-
-version_SVN
-    ^ '$Id: WeakIdentitySet.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/WeakIdentitySet.st,v 1.38 2012-08-13 16:45:53 stefan Exp $'
 ! !
-
-
-
--- a/WeakInterestConverter.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/WeakInterestConverter.st	Sat Jan 19 01:30:00 2013 +0000
@@ -120,12 +120,5 @@
 !WeakInterestConverter class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/WeakInterestConverter.st,v 1.4 2011/09/29 11:19:04 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: WeakInterestConverter.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/WeakInterestConverter.st,v 1.4 2011-09-29 11:19:04 cg Exp $'
 ! !
-
-
-
--- a/WeakValueDictionary.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/WeakValueDictionary.st	Sat Jan 19 01:30:00 2013 +0000
@@ -263,12 +263,5 @@
 !WeakValueDictionary class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/WeakValueDictionary.st,v 1.19 2012/08/13 11:13:51 stefan Exp $'
-!
-
-version_SVN
-    ^ '$Id: WeakValueDictionary.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/WeakValueDictionary.st,v 1.19 2012-08-13 11:13:51 stefan Exp $'
 ! !
-
-
-
--- a/Win32Constants.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Win32Constants.st	Sat Jan 19 01:30:00 2013 +0000
@@ -62,11 +62,7 @@
 !Win32Constants class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Win32Constants.st,v 1.4 2010/12/24 10:22:26 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Win32Constants.st 10717 2011-10-11 15:53:59Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Win32Constants.st,v 1.4 2010-12-24 10:22:26 cg Exp $'
 ! !
 
 Win32Constants initialize!
--- a/Win32FILEHandle.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Win32FILEHandle.st	Sat Jan 19 01:30:00 2013 +0000
@@ -71,12 +71,5 @@
 !Win32FILEHandle class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Win32FILEHandle.st,v 1.5 2011/09/29 11:19:13 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: Win32FILEHandle.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Win32FILEHandle.st,v 1.5 2011-09-29 11:19:13 cg Exp $'
 ! !
-
-
-
--- a/Win32Handle.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Win32Handle.st	Sat Jan 19 01:30:00 2013 +0000
@@ -56,6 +56,7 @@
  */
 
 # undef INT
+# undef UINT
 # undef Array
 # undef Number
 # undef Method
@@ -153,7 +154,8 @@
 #  define Processor __DEF_Processor
 # endif
 
-# define INT int
+# define INT  STX_INT
+# define UINT STX_UINT
 
 typedef int (*intf)(int);
 
@@ -214,12 +216,5 @@
 !Win32Handle class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Win32Handle.st,v 1.8 2011/09/29 11:19:00 cg Exp $'
-!
-
-version_SVN
-    ^ '$Id: Win32Handle.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Win32Handle.st,v 1.9 2013-01-10 11:43:30 cg Exp $'
 ! !
-
-
-
--- a/Win32OperatingSystem.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Win32OperatingSystem.st	Sat Jan 19 01:30:00 2013 +0000
@@ -256,6 +256,8 @@
 /* # define SIGNALDEBUGWIN32     /* */
 
 # undef INT
+# undef UINT
+
 # undef Array
 # undef Number
 # undef Method
@@ -276,6 +278,8 @@
 # undef Process
 # undef NameSpace
 # undef Processor
+# undef String
+# undef Character
 
 # include <stdarg.h> /* */
 
@@ -369,8 +373,15 @@
 # ifdef __DEF_NameSpace
 #  define NameSpace __DEF_NameSpace
 # endif
-
-# define INT int
+# ifdef __DEF_String
+#  define String __DEF_String
+# endif
+# ifdef __DEF_Character
+#  define Character __DEF_Character
+# endif
+
+# define INT STX_INT
+# define UINT STX_UINT
 
 typedef int (*intf)(int);
 BOOL __signalUserInterruptWIN32(DWORD sig);
@@ -437,6 +448,7 @@
 #define SIGHANDLER_ARG int
 
 #define _HANDLEVal(o)        (HANDLE)(__externalAddressVal(o))
+#define _SETHANDLEVal(o, v)  (__externalAddressVal(o) = (v))
 
 %}
 ! !
@@ -3768,7 +3780,7 @@
     ^ self primitiveFailed
 !
 
-shellExecute:hwnd lpOperation:lpOperation lpFile:lpFile lpParameters:lpParameters lpDirectory:lpDirectory nShowCmd:nShowCmd
+shellExecute:hwndArg lpOperation:lpOperationArg lpFile:lpFileArg lpParameters:lpParametersArg lpDirectory:lpDirectoryArg nShowCmd:nShowCmd
     "Opens or prints the specified file, which can be an executable, document file, or directory.
      If its a directory, an explorer window is opened (see example below).
      Can be used to open a browser or viewer on html-files, pdf-files etc"
@@ -3808,22 +3820,22 @@
 	    goto badArgument;
 	}
     }
-    if (((lpOperation == nil) || __isStringLike(lpOperation))
-     && ((lpFile == nil) || __isStringLike(lpFile))
-     && ((lpParameters == nil) || __isStringLike(lpParameters))
-     && ((lpDirectory == nil) || __isStringLike(lpDirectory))
+    if (((lpOperationArg == nil) || __isStringLike(lpOperationArg))
+     && ((lpFileArg == nil) || __isStringLike(lpFileArg))
+     && ((lpParametersArg == nil) || __isStringLike(lpParametersArg))
+     && ((lpDirectoryArg == nil) || __isStringLike(lpDirectoryArg))
     ) {
 	// hProcess member receives the process handle
 	shExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
 
 	shExecInfo.hwnd = 0;
-	shExecInfo.lpVerb        = (lpOperation != nil) ? __stringVal(lpOperation) : NULL;
-	shExecInfo.lpFile        = (lpFile != nil) ? __stringVal(lpFile) : NULL;
-	shExecInfo.lpParameters  = (lpParameters != nil) ? __stringVal(lpParameters) : NULL;
-	shExecInfo.lpDirectory   = (lpDirectory != nil) ? __stringVal(lpDirectory) : NULL;
-	if (hwnd != nil) {
-	    if (__isExternalAddressLike(hwnd)) {
-		shExecInfo.hwnd = (HANDLE)(__externalAddressVal(hwnd));
+	shExecInfo.lpVerb        = (lpOperationArg != nil) ? __stringVal(lpOperationArg) : NULL;
+	shExecInfo.lpFile        = (lpFileArg != nil) ? __stringVal(lpFileArg) : NULL;
+	shExecInfo.lpParameters  = (lpParametersArg != nil) ? __stringVal(lpParametersArg) : NULL;
+	shExecInfo.lpDirectory   = (lpDirectoryArg != nil) ? __stringVal(lpDirectoryArg) : NULL;
+	if (hwndArg != nil) {
+	    if (__isExternalAddressLike(hwndArg)) {
+		shExecInfo.hwnd = (HANDLE)(__externalAddressVal(hwndArg));
 	    } else
 		goto badArgument;
 	}
@@ -3859,7 +3871,7 @@
 	self primitiveFailed:'invalid argument(s)'.
     ] ifFalse:[
 	(OperatingSystem errorHolderForNumber:errorNumber)
-	    parameter:lpFile;
+	    parameter:lpFileArg;
 	    reportError
     ].
 
@@ -5489,8 +5501,8 @@
 
     attr := self primGetFileAttributes:aPathName.
     attr notNil ifTrue:[
-        ^ (attr bitAnd: (FILE_ATTRIBUTE_DIRECTORY bitOr: FILE_ATTRIBUTE_READONLY ))
-            ~~ FILE_ATTRIBUTE_READONLY
+	^ (attr bitAnd: (FILE_ATTRIBUTE_DIRECTORY bitOr: FILE_ATTRIBUTE_READONLY ))
+	    ~~ FILE_ATTRIBUTE_READONLY
     ].
     ^ false
 
@@ -6887,7 +6899,7 @@
 	    console_printf("Close ProcessHandle %x\n", __pid);
 #endif
 	    CloseHandle(__pid);
-	    _HANDLEVal(pid) = 0;
+	    _SETHANDLEVal(pid, 0);
 	}
     }
 %}.
@@ -6903,18 +6915,18 @@
     spaceForTargetHandle := ExternalLong unprotectedNew.
     hMe := self getCurrentProcess.
     rslt := self
-                primDuplicateHandle_hSourcProcessHandle:hMe
-                hSourceHandle:aHandle
-                hTargetProcesshandle:targetProcessHandle
-                lpTargetHandle:spaceForTargetHandle
-                dwDesiredAccess:0
-                bInheritHandle:false
-                dwOptions:2 "DUPLICATE_SAME_ACCESS".
+		primDuplicateHandle_hSourcProcessHandle:hMe
+		hSourceHandle:aHandle
+		hTargetProcesshandle:targetProcessHandle
+		lpTargetHandle:spaceForTargetHandle
+		dwDesiredAccess:0
+		bInheritHandle:false
+		dwOptions:2 "DUPLICATE_SAME_ACCESS".
 
     rslt ifFalse:[
-        spaceForTargetHandle free.
-        self primitiveFailed.
-        ^ nil
+	spaceForTargetHandle free.
+	self primitiveFailed.
+	^ nil
     ].
 
     addr := spaceForTargetHandle value.
@@ -7949,25 +7961,25 @@
        This method is mainly provided to augment error reports with some system
        information.
        (in case of system/version specific OS errors, conditional workarounds and patches
-        may be based upon this info).
+	may be based upon this info).
        Your application should NOT depend upon this in any way.
 
      The returned info may (or may not) contain:
-        #system -> some operating system identification (irix, Linux, nt, win32s ...)
-        #version -> OS version (some os version identification)
-        #release -> OS release (3.5, 1.2.1 ...)
-        #node   -> some host identification (hostname)
-        #domain  -> domain name (hosts domain)
-        #machine -> type of machine (i586, mips ...)
+	#system -> some operating system identification (irix, Linux, nt, win32s ...)
+	#version -> OS version (some os version identification)
+	#release -> OS release (3.5, 1.2.1 ...)
+	#node   -> some host identification (hostname)
+	#domain  -> domain name (hosts domain)
+	#machine -> type of machine (i586, mips ...)
 
      win32:
-        #physicalRam -> total amount of physical memory
-        #freeRam -> amount of free memory
-        #swapSize -> size of swapSpace (page file)
-        #freeSwap -> free bytes in swapSpace
-        #virtualRam -> total amount of virtual memory
-        #freeVirtual -> amount of free virtual memory
-        #memoryLoad -> percentage of memory usage (useless)
+	#physicalRam -> total amount of physical memory
+	#freeRam -> amount of free memory
+	#swapSize -> size of swapSpace (page file)
+	#freeSwap -> free bytes in swapSpace
+	#virtualRam -> total amount of virtual memory
+	#freeVirtual -> amount of free virtual memory
+	#memoryLoad -> percentage of memory usage (useless)
     "
 
     |sys node rel ver minorVer majorVer mach dom info arch
@@ -7993,23 +8005,23 @@
     majorVer = __mkSmallInteger(verMajor);
 
     if (HIWORD(vsn) & 0x8000) {
-        sys = @symbol(win95);
+	sys = @symbol(win95);
     } else {
-        if ((verMajor > 5)
-         || ((verMajor == 5) && (verMinor >= 1))) {
-            sys = @symbol(xp);
-            if (verMajor >= 6) {
-                sys = @symbol(vista);
-                if (verMinor >= 1) {
-                    sys = @symbol(win7);
-                    if (verMinor >= 2) {
-                        sys = @symbol(win8);
-                    }
-                }
-            }
-        } else {
-            sys = @symbol(nt);
-        }
+	if ((verMajor > 5)
+	 || ((verMajor == 5) && (verMinor >= 1))) {
+	    sys = @symbol(xp);
+	    if (verMajor >= 6) {
+		sys = @symbol(vista);
+		if (verMinor >= 1) {
+		    sys = @symbol(win7);
+		    if (verMinor >= 2) {
+			sys = @symbol(win8);
+		    }
+		}
+	    }
+	} else {
+	    sys = @symbol(nt);
+	}
     }
     len = snprintf(vsnBuffer, sizeof(vsnBuffer), "%d.%d", verMajor, verMinor);
     rel = __MKSTRING_L(vsnBuffer, len);
@@ -8035,160 +8047,160 @@
 #endif
     {
 #ifdef PROCESSOR_ARCHITECTURE_INTEL
-        case PROCESSOR_ARCHITECTURE_INTEL:
-            arch = @symbol(intel);
-            break;
+	case PROCESSOR_ARCHITECTURE_INTEL:
+	    arch = @symbol(intel);
+	    break;
 #endif
 #ifdef PROCESSOR_ARCHITECTURE_AMD64
-        case PROCESSOR_ARCHITECTURE_AMD64:
-            arch = @symbol(x64);
-            break;
+	case PROCESSOR_ARCHITECTURE_AMD64:
+	    arch = @symbol(x64);
+	    break;
 #endif
 #ifdef PROCESSOR_ARCHITECTURE_MIPS
-        case PROCESSOR_ARCHITECTURE_MIPS:
-            arch = @symbol(mips);
-            break;
+	case PROCESSOR_ARCHITECTURE_MIPS:
+	    arch = @symbol(mips);
+	    break;
 #endif
 #ifdef PROCESSOR_ARCHITECTURE_ALPHA
-        case PROCESSOR_ARCHITECTURE_ALPHA:
-            arch = @symbol(alpha);
-            break;
+	case PROCESSOR_ARCHITECTURE_ALPHA:
+	    arch = @symbol(alpha);
+	    break;
 #endif
 #ifdef PROCESSOR_ARCHITECTURE_ALPHA64
-        case PROCESSOR_ARCHITECTURE_ALPHA64:
-            arch = @symbol(alpha64);
-            break;
+	case PROCESSOR_ARCHITECTURE_ALPHA64:
+	    arch = @symbol(alpha64);
+	    break;
 #endif
 #ifdef PROCESSOR_ARCHITECTURE_PPC
-        case PROCESSOR_ARCHITECTURE_PPC:
-            arch = @symbol(ppc);
-            break;
+	case PROCESSOR_ARCHITECTURE_PPC:
+	    arch = @symbol(ppc);
+	    break;
 #endif
 #ifdef PROCESSOR_ARCHITECTURE_ARM
-        case PROCESSOR_ARCHITECTURE_ARM:
-            arch = @symbol(arm);
-            break;
+	case PROCESSOR_ARCHITECTURE_ARM:
+	    arch = @symbol(arm);
+	    break;
 #endif
 #ifdef PROCESSOR_ARCHITECTURE_SHX
-        case PROCESSOR_ARCHITECTURE_SHX:
-            arch = @symbol(shx);
-            break;
+	case PROCESSOR_ARCHITECTURE_SHX:
+	    arch = @symbol(shx);
+	    break;
 #endif
 #ifdef PROCESSOR_ARCHITECTURE_IA64
-        case PROCESSOR_ARCHITECTURE_IA64:
-            arch = @symbol(ia64);
-            break;
+	case PROCESSOR_ARCHITECTURE_IA64:
+	    arch = @symbol(ia64);
+	    break;
 #endif
 #ifdef PROCESSOR_ARCHITECTURE_MSIL
-        case PROCESSOR_ARCHITECTURE_MSIL:
-            arch = @symbol(msil);
-            break;
-#endif
-        default:
-            arch = @symbol(unknown);
-            break;
+	case PROCESSOR_ARCHITECTURE_MSIL:
+	    arch = @symbol(msil);
+	    break;
+#endif
+	default:
+	    arch = @symbol(unknown);
+	    break;
     }
 
     switch (sysInfo.dwProcessorType) {
 #ifdef PROCESSOR_INTEL_386
-        case PROCESSOR_INTEL_386:
-            mach = @symbol(i386);
-            break;
+	case PROCESSOR_INTEL_386:
+	    mach = @symbol(i386);
+	    break;
 #endif
 #ifdef PROCESSOR_INTEL_486
-        case PROCESSOR_INTEL_486:
-            mach = @symbol(i486);
-            break;
+	case PROCESSOR_INTEL_486:
+	    mach = @symbol(i486);
+	    break;
 #endif
 #ifdef PROCESSOR_INTEL_PENTIUM
-        case PROCESSOR_INTEL_PENTIUM:
-            mach = @symbol(i586);
-            break;
+	case PROCESSOR_INTEL_PENTIUM:
+	    mach = @symbol(i586);
+	    break;
 #endif
 #ifdef PROCESSOR_INTEL_860
-        case PROCESSOR_INTEL_860:
-            mach = @symbol(i860);
-            break;
+	case PROCESSOR_INTEL_860:
+	    mach = @symbol(i860);
+	    break;
 #endif
 #ifdef PROCESSOR_INTEL_IA64
-        case PROCESSOR_INTEL_IA64:
-            mach = @symbol(ia64);
-            break;
+	case PROCESSOR_INTEL_IA64:
+	    mach = @symbol(ia64);
+	    break;
 #endif
 #ifdef PROCESSOR_MIPS_R2000
-        case PROCESSOR_MIPS_R2000:
-            mach = @symbol(r2000);
-            break;
+	case PROCESSOR_MIPS_R2000:
+	    mach = @symbol(r2000);
+	    break;
 #endif
 #ifdef PROCESSOR_MIPS_R3000
-        case PROCESSOR_MIPS_R3000:
-            mach = @symbol(r3000);
-            break;
+	case PROCESSOR_MIPS_R3000:
+	    mach = @symbol(r3000);
+	    break;
 #endif
 #ifdef PROCESSOR_MIPS_R4000
-        case PROCESSOR_MIPS_R4000:
-            mach = @symbol(r4000);
-            break;
+	case PROCESSOR_MIPS_R4000:
+	    mach = @symbol(r4000);
+	    break;
 #endif
 #ifdef PROCESSOR_ALPHA_21064
-        case PROCESSOR_ALPHA_21064:
-            mach = @symbol(alpha21064);
-            break;
+	case PROCESSOR_ALPHA_21064:
+	    mach = @symbol(alpha21064);
+	    break;
 #endif
 #ifdef PROCESSOR_ARM720
-        case PROCESSOR_ARM720:
-            mach = @symbol(arm720);
-            break;
+	case PROCESSOR_ARM720:
+	    mach = @symbol(arm720);
+	    break;
 #endif
 #ifdef PROCESSOR_ARM820
-        case PROCESSOR_ARM820:
-            mach = @symbol(arm820);
-            break;
+	case PROCESSOR_ARM820:
+	    mach = @symbol(arm820);
+	    break;
 #endif
 #ifdef PROCESSOR_ARM920
-        case PROCESSOR_ARM920:
-            mach = @symbol(arm920);
-            break;
+	case PROCESSOR_ARM920:
+	    mach = @symbol(arm920);
+	    break;
 #endif
 #ifdef PROCESSOR_ARM_7TDMI
-        case PROCESSOR_ARM_7TDMI:
-            mach = @symbol(arm70001);
-            break;
+	case PROCESSOR_ARM_7TDMI:
+	    mach = @symbol(arm70001);
+	    break;
 #endif
 #ifdef PROCESSOR_PPC_601
-        case PROCESSOR_PPC_601:
-            mach = @symbol(ppc601);
-            break;
+	case PROCESSOR_PPC_601:
+	    mach = @symbol(ppc601);
+	    break;
 #endif
 #ifdef PROCESSOR_PPC_603
-        case PROCESSOR_PPC_603:
-            mach = @symbol(ppc603);
-            break;
+	case PROCESSOR_PPC_603:
+	    mach = @symbol(ppc603);
+	    break;
 #endif
 #ifdef PROCESSOR_PPC_604
-        case PROCESSOR_PPC_604:
-            mach = @symbol(ppc604);
-            break;
+	case PROCESSOR_PPC_604:
+	    mach = @symbol(ppc604);
+	    break;
 #endif
 #ifdef PROCESSOR_PPC_620
-        case PROCESSOR_PPC_620:
-            mach = @symbol(ppc620);
-            break;
-#endif
-
-        default:
-            sprintf(vsnBuffer, "%d", sysInfo.dwProcessorType);
-            mach =  __MKSTRING(vsnBuffer);
-            break;
+	case PROCESSOR_PPC_620:
+	    mach = @symbol(ppc620);
+	    break;
+#endif
+
+	default:
+	    sprintf(vsnBuffer, "%d", sysInfo.dwProcessorType);
+	    mach =  __MKSTRING(vsnBuffer);
+	    break;
     }
 
     numberOfCPUs = __MKUINT(sysInfo.dwNumberOfProcessors);
 %}.
     node isNil ifTrue:[
-        node := self getHostName.
+	node := self getHostName.
     ].
     dom isNil ifTrue:[
-        dom := self getDomainName.
+	dom := self getDomainName.
     ].
 
     info := IdentityDictionary new.
@@ -8959,9 +8971,9 @@
     "Modified: / 16-04-2007 / 13:09:16 / cg"
 !
 
-deletePrinterDC: hwnd
+deletePrinterDC: hwndArg
     |return|
-    return := self primDeletePrinterDC:hwnd .
+    return := self primDeletePrinterDC:hwndArg .
     ^return
 
     "Created: / 27-07-2006 / 16:22:34 / fm"
@@ -9040,8 +9052,8 @@
     "Modified: / 04-10-2006 / 11:35:18 / cg"
 !
 
-getDeviceCaps:hwnd index: index
-    ^ self primGetDeviceCaps:hwnd index: index
+getDeviceCaps:hwndArg index: index
+    ^ self primGetDeviceCaps:hwndArg index: index
 
     "Created: / 28-07-2006 / 17:45:27 / fm"
     "Modified: / 04-10-2006 / 11:35:29 / cg"
@@ -9236,7 +9248,7 @@
     "Created: / 27-07-2006 / 14:40:41 / fm"
 !
 
-primAbortDoc:hwnd
+primAbortDoc:hwndArg
     <apicall: int32 "AbortDoc" (handle) module: "gdi32.dll" >
     self primitiveFailed.
 
@@ -9266,7 +9278,7 @@
     "Modified: / 27-07-2006 / 16:26:25 / fm"
 !
 
-primDeletePrinterDC: hwnd
+primDeletePrinterDC: hwndArg
     <apicall: bool "DeleteDC" ( handle ) module: "gdi32.dll" >
     self primitiveFailed.
 !
@@ -9293,7 +9305,7 @@
     "Created: / 27-07-2006 / 15:02:14 / fm"
 !
 
-primEndDoc:hwnd
+primEndDoc:hwndArg
     <apicall: int32 "EndDoc" (handle) module: "gdi32.dll" >
     self primitiveFailed.
 
@@ -9315,7 +9327,7 @@
     "Created: / 27-07-2006 / 19:31:31 / fm"
 !
 
-primEndPage:hwnd
+primEndPage:hwndArg
     <apicall: int32 "EndPage" (handle) module: "gdi32.dll" >
     self primitiveFailed.
 
@@ -9337,7 +9349,7 @@
     "Created: / 27-07-2006 / 19:30:50 / fm"
 !
 
-primGetDeviceCaps:hwnd index: index
+primGetDeviceCaps:hwndArg index: index
     "Returns driver specific information about the device"
 
     <apicall: int32 "GetDeviceCaps" (handle int32) module: "gdi32.dll" >
@@ -9347,7 +9359,7 @@
     "Modified: / 04-10-2006 / 11:38:06 / cg"
 !
 
-primGetPrinter:hwnd level:index informationBuffer:informationBuffer bufferSize:bufferSize bufferNeededSize:bufferNeededSize
+primGetPrinter:hwndArg level:index informationBuffer:informationBuffer bufferSize:bufferSize bufferNeededSize:bufferNeededSize
     <apicall: bool "GetPrinterA" (handle dword pointer dword pointer) module: "winspool.drv" >
     self primitiveFailed.
 
@@ -9425,7 +9437,7 @@
     self primitiveFailed.
 !
 
-primStartDoc:hwnd docInfo: aDocInfo
+primStartDoc:hwndArg docInfo: aDocInfo
     "Returns a jobId"
     <apicall: int32 "StartDocA" (handle pointer) module: "gdi32.dll" >
     self primitiveFailed.
@@ -9433,7 +9445,7 @@
     "Modified: / 31-07-2006 / 11:47:10 / fm"
 !
 
-primStartPage:hwnd
+primStartPage:hwndArg
     <apicall: int32 "StartPage" (handle) module: "gdi32.dll" >
     self primitiveFailed.
 
@@ -13498,174 +13510,174 @@
 examples
 "
     retrieve an existing entry by key:
-                                                                        [exBegin]
-        |k|
-
-        k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'
-                                                                        [exEnd]
+									[exBegin]
+	|k|
+
+	k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'
+									[exEnd]
 
 
     retrieve a non-existing entry by key:
-                                                                        [exBegin]
-        |k|
-
-        k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\xxx'
-                                                                        [exEnd]
+									[exBegin]
+	|k|
+
+	k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\xxx'
+									[exEnd]
 
 
     ask a keys value:
-                                                                        [exBegin]
-        |k|
-
-        k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion'.
-        Transcript show:'Windows serial NR:'; showCR:(k valueNamed:'ProductId').
-
-        k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
-        Transcript showCR:(k valueNamed:'CurrentVersion').
-                                                                        [exEnd]
+									[exBegin]
+	|k|
+
+	k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion'.
+	Transcript show:'Windows serial NR:'; showCR:(k valueNamed:'ProductId').
+
+	k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
+	Transcript showCR:(k valueNamed:'CurrentVersion').
+									[exEnd]
 
 
     create a sub-key (if not already present):
-                                                                        [exBegin]
-        |k subKey|
-
-        k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
-        subKey := k createSubKeyNamed:'RegistryDemo'
-                                                                        [exEnd]
+									[exBegin]
+	|k subKey|
+
+	k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
+	subKey := k createSubKeyNamed:'RegistryDemo'
+									[exEnd]
 
 
     change a keys value:
-                                                                        [exBegin]
-        |k|
-
-        k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\RegistryDemo'.
-        k valueNamed:'FooBarBaz' put:'a foo bar baz string'.
-                                                                        [exEnd]
+									[exBegin]
+	|k|
+
+	k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\RegistryDemo'.
+	k valueNamed:'FooBarBaz' put:'a foo bar baz string'.
+									[exEnd]
 
     delete a value:
-                                                                        [exBegin]
-        |k|
-
-        k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\RegistryDemo'.
-        k deleteValueNamed:'FooBarBaz'.
-                                                                        [exEnd]
+									[exBegin]
+	|k|
+
+	k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\RegistryDemo'.
+	k deleteValueNamed:'FooBarBaz'.
+									[exEnd]
 
     delete a key:
-                                                                        [exBegin]
-        |k|
-
-        k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
-        k deleteSubKeyNamed:'RegistryDemo'.
-                                                                        [exEnd]
+									[exBegin]
+	|k|
+
+	k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
+	k deleteSubKeyNamed:'RegistryDemo'.
+									[exEnd]
 
     enumerate keys:
-                                                                        [exBegin]
-        |k|
-
-        k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software'.
-        k subKeysDo:[:subKey |
-            Transcript showCR:subKey path
-        ]
-                                                                        [exEnd]
+									[exBegin]
+	|k|
+
+	k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software'.
+	k subKeysDo:[:subKey |
+	    Transcript showCR:subKey path
+	]
+									[exEnd]
 
     enumerate all keys (recursive):
-                                                                        [exBegin]
-        |k|
-
-        k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software'.
-        k allSubKeysDo:[:subKey |
-            Transcript showCR:subKey path
-        ]
-                                                                        [exEnd]
+									[exBegin]
+	|k|
+
+	k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software'.
+	k allSubKeysDo:[:subKey |
+	    Transcript showCR:subKey path
+	]
+									[exEnd]
 
     fetch value by index:
-                                                                        [exBegin]
-        |k|
-
-        k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
-        Transcript showCR:(k valueNameAtIndex:0)
-                                                                        [exEnd]
+									[exBegin]
+	|k|
+
+	k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
+	Transcript showCR:(k valueNameAtIndex:0)
+									[exEnd]
 
 
     enumerate value names:
-                                                                        [exBegin]
-        |k|
-
-        k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
-        k valueNamesDo:[:nm  |
-           Transcript showCR:nm.
-        ]
-                                                                        [exEnd]
+									[exBegin]
+	|k|
+
+	k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
+	k valueNamesDo:[:nm  |
+	   Transcript showCR:nm.
+	]
+									[exEnd]
 
     enumerate values:
-                                                                        [exBegin]
-        |k|
-
-        k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
-        k valueNamesAndValuesDo:[:nm :val |
-            Transcript showCR:(nm , ' -> ' , val storeString).
-        ]
-                                                                        [exEnd]
+									[exBegin]
+	|k|
+
+	k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
+	k valueNamesAndValuesDo:[:nm :val |
+	    Transcript showCR:(nm , ' -> ' , val storeString).
+	]
+									[exEnd]
 
     search for a value (where does NT store the domain ?):
-                                                                        [exBegin]
-        |k|
-
-        k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\System'.
-        k subKeysDo:[:subKey |
-            subKey subKeysDo:[:subSubKey |
-                |tcp params|
-
-                (subSubKey path asLowercase endsWith:'services') ifTrue:[
-                    tcp := subSubKey subKeyNamed:'tcpip'.
-                    tcp notNil ifTrue:[
-                        params := tcp subKeyNamed:'parameters'.
-                        params notNil ifTrue:[
-                            Transcript showCR:'Domain is found in ' , params path ,
-                                        ' value: ' , (params valueNamed:'Domain').
-                            params close.
-                        ].
-                        tcp close.
-                    ]
-                ]
-            ]
-        ]
-                                                                        [exEnd]
+									[exBegin]
+	|k|
+
+	k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\System'.
+	k subKeysDo:[:subKey |
+	    subKey subKeysDo:[:subSubKey |
+		|tcp params|
+
+		(subSubKey path asLowercase endsWith:'services') ifTrue:[
+		    tcp := subSubKey subKeyNamed:'tcpip'.
+		    tcp notNil ifTrue:[
+			params := tcp subKeyNamed:'parameters'.
+			params notNil ifTrue:[
+			    Transcript showCR:'Domain is found in ' , params path ,
+					' value: ' , (params valueNamed:'Domain').
+			    params close.
+			].
+			tcp close.
+		    ]
+		]
+	    ]
+	]
+									[exEnd]
     register an exe for shell-open:
-                                                                        [exBegin]
-        |k stx shell open cmd st_af edit st owl list id|
-
-        k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Classes\Applications'.
-        stx := k createSubKeyNamed:'SmalltalkX.exe'.
-        shell := stx createSubKeyNamed:'shell'.
-        open := shell createSubKeyNamed:'open'.
-        cmd := open createSubKeyNamed:'command'.
-        cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
-                         ' ',Character doubleQuote,'%1',Character doubleQuote).
-
-        k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Classes'.
-        st_af := k createSubKeyNamed:'st_auto_file'.
-        shell := st_af createSubKeyNamed:'shell'.
-        open := shell createSubKeyNamed:'open'.
-        cmd := open createSubKeyNamed:'command'.
-        cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
-                         ' --open ',Character doubleQuote,'%1',Character doubleQuote).
-        edit := shell createSubKeyNamed:'edit'.
-        cmd := edit createSubKeyNamed:'command'.
-        cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
-                         ' --edit ',Character doubleQuote,'%1',Character doubleQuote).
-
-        k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts'.
-        st := k createSubKeyNamed:'.st'.
-        owl := st createSubKeyNamed:'OpenWithList'.
-        list := owl valueNames.
-        (list contains:[:k | (owl valueNamed:k) = 'SmalltalkX.exe']) ifTrue:[
-            Transcript showCR:'already registered.'.
-        ] ifFalse:[
-            id := ($a to:$z) detect:[:k | (list includes:(k asString)) not] ifNone:nil.
-            owl valueNamed:id asString put:'SmalltalkX.exe'.
-        ]
-                                                                        [exEnd]
+									[exBegin]
+	|k stx shell open cmd st_af edit st owl list id|
+
+	k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Classes\Applications'.
+	stx := k createSubKeyNamed:'SmalltalkX.exe'.
+	shell := stx createSubKeyNamed:'shell'.
+	open := shell createSubKeyNamed:'open'.
+	cmd := open createSubKeyNamed:'command'.
+	cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
+			 ' ',Character doubleQuote,'%1',Character doubleQuote).
+
+	k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Classes'.
+	st_af := k createSubKeyNamed:'st_auto_file'.
+	shell := st_af createSubKeyNamed:'shell'.
+	open := shell createSubKeyNamed:'open'.
+	cmd := open createSubKeyNamed:'command'.
+	cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
+			 ' --open ',Character doubleQuote,'%1',Character doubleQuote).
+	edit := shell createSubKeyNamed:'edit'.
+	cmd := edit createSubKeyNamed:'command'.
+	cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
+			 ' --edit ',Character doubleQuote,'%1',Character doubleQuote).
+
+	k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts'.
+	st := k createSubKeyNamed:'.st'.
+	owl := st createSubKeyNamed:'OpenWithList'.
+	list := owl valueNames.
+	(list contains:[:k | (owl valueNamed:k) = 'SmalltalkX.exe']) ifTrue:[
+	    Transcript showCR:'already registered.'.
+	] ifFalse:[
+	    id := ($a to:$z) detect:[:k | (list includes:(k asString)) not] ifNone:nil.
+	    owl valueNamed:id asString put:'SmalltalkX.exe'.
+	]
+									[exEnd]
 
 
 
@@ -14382,25 +14394,25 @@
 
     if (__isExternalAddressLike(__INST(handle))
      && __isSmallInteger(valueIndex)) {
-        myKey = (HKEY)__externalAddressVal(__INST(handle));
-        if ((_retVal = RegEnumValueA(myKey, __intVal(valueIndex),
-                         nameBuffer, &nameSize,
-                         NULL,
-                         &valueType,
-                         NULL, NULL)) == ERROR_SUCCESS) {
-            nameBuffer[nameSize] = '\0';
-            valueName = __MKSTRING(nameBuffer);
-        } else {
-            if ((_retVal != ERROR_PATH_NOT_FOUND)
-             && (_retVal != ERROR_FILE_NOT_FOUND)
-             && (_retVal != ERROR_NO_MORE_ITEMS)) {
-                errorNumber = __MKSMALLINT(_retVal);
-            }
-        }
+	myKey = (HKEY)__externalAddressVal(__INST(handle));
+	if ((_retVal = RegEnumValueA(myKey, __intVal(valueIndex),
+			 nameBuffer, &nameSize,
+			 NULL,
+			 &valueType,
+			 NULL, NULL)) == ERROR_SUCCESS) {
+	    nameBuffer[nameSize] = '\0';
+	    valueName = __MKSTRING(nameBuffer);
+	} else {
+	    if ((_retVal != ERROR_PATH_NOT_FOUND)
+	     && (_retVal != ERROR_FILE_NOT_FOUND)
+	     && (_retVal != ERROR_NO_MORE_ITEMS)) {
+		errorNumber = __MKSMALLINT(_retVal);
+	    }
+	}
     }
 %}.
     errorNumber notNil ifTrue:[
-        (OperatingSystem errorHolderForNumber:errorNumber) reportError.
+	(OperatingSystem errorHolderForNumber:errorNumber) reportError.
     ].
     ^ valueName
 
@@ -14850,12 +14862,12 @@
 
     idx := 0.
     [true] whileTrue:[
-        valueName := self valueNameAtIndex:idx.
-        valueName isNil ifTrue:[
-            ^self
-        ].
-        aBlock value:valueName.
-        idx := idx + 1.
+	valueName := self valueNameAtIndex:idx.
+	valueName isNil ifTrue:[
+	    ^self
+	].
+	aBlock value:valueName.
+	idx := idx + 1.
     ]
 ! !
 
@@ -14925,7 +14937,7 @@
     HKEY key;
     OBJ t;
 
-    key = __longIntVal(integerHandleValue);
+    key = (HKEY)__longIntVal(integerHandleValue);
     if (! key) {
 	RETURN (nil);
     }
@@ -15051,6 +15063,7 @@
 	OBJ sz;
 
 	extPtr = (char *)(__externalBytesAddress(aByteBuffer));
+	if (extPtr == NULL) goto bad;
 	sz = __externalBytesSize(aByteBuffer);
 	if (! __isSmallInteger(sz)) {
 	    errSym = @symbol(badBufferSize);
@@ -15203,9 +15216,13 @@
 	errSym = @symbol(badArgument);
 	goto bad;
     }
+#if __POINTER_SIZE__ == 8
+    posLo = pos64 & 0xFFFFFFFF;
+    posHi = (pos64 >> 32) & 0xFFFFFFFF;
+#else
     posLo = pos64.lo;
     posHi = pos64.hi;
-
+#endif
     posLo = SetFilePointer(hFile, posLo, &posHi, moveHow);
     if (posLo == 0xFFFFFFFF) {
 	int lastError;
@@ -15221,10 +15238,14 @@
     if (posHi == 0) {
 	RETURN (__MKUINT( posLo ));
     }
+#if __POINTER_SIZE__ == 8
+    newPos64 = posLo | (posHi << 32);
+    RETURN ( __MKUINT(newPos64) );
+#else
     newPos64.lo = posLo;
     newPos64.hi = posHi;
-
     RETURN ( __MKUINT64(&newPos64) );
+#endif
 
 bad: ;
 %}.
@@ -15294,6 +15315,7 @@
 	memcpy(extPtr, __byteArrayVal(aByteBuffer)+offs, cntWanted);
     } else {
 	extPtr = (char *)(__externalBytesAddress(aByteBuffer));
+	if (extPtr == NULL) goto bad;
 	bufferSize = __externalBytesSize(aByteBuffer);
 	if (! __isSmallInteger(bufferSize)) {
 	    errSym = @symbol(badBufferSize);
@@ -16452,25 +16474,18 @@
 !Win32OperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.442 2012/11/21 16:34:54 anwild Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.445 2013-01-17 22:37:55 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.442 2012/11/21 16:34:54 anwild Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.445 2013-01-17 22:37:55 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: Win32OperatingSystem.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '§Id§'
 
 ! !
 
 Win32OperatingSystem initialize!
 Win32OperatingSystem::PerformanceData initialize!
 Win32OperatingSystem::RegistryEntry initialize!
-
-
-
-
-
-
-
--- a/Win32Process.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Win32Process.st	Sat Jan 19 01:30:00 2013 +0000
@@ -217,16 +217,9 @@
 !Win32Process class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Win32Process.st,v 1.2 2010/02/01 11:29:35 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Win32Process.st,v 1.2 2010-02-01 11:29:35 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Win32Process.st,v 1.2 2010/02/01 11:29:35 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: Win32Process.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Win32Process.st,v 1.2 2010-02-01 11:29:35 cg Exp $'
 ! !
-
-
-
--- a/WindowsDesktop.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/WindowsDesktop.st	Sat Jan 19 01:30:00 2013 +0000
@@ -54,10 +54,10 @@
 
 !WindowsDesktop class methodsFor:'documentation'!
 
-version
-    ^'$Id: WindowsDesktop.st 10717 2011-10-11 15:53:59Z vranyj1 $'
+version_CVS
+    ^ '$Header: /cvs/stx/stx/libbasic/WindowsDesktop.st,v 1.1 2011-06-28 10:09:58 vrany Exp $'
 !
 
 version_SVN
-    ^ '$Id: WindowsDesktop.st 10717 2011-10-11 15:53:59Z vranyj1 $'
+    ^ ' Id: WindowsDesktop.st 10524 2010-05-20 13:35:23Z vranyj1  '
 ! !
--- a/WriteStream.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/WriteStream.st	Sat Jan 19 01:30:00 2013 +0000
@@ -529,7 +529,7 @@
 nextPutAllUnicode:aString
     "normal streams can not handle multi-byte characters, so convert them to utf8"
 
-    (collection isString and:[collection bitsPerCharacter >= 8]) ifTrue:[
+    (collection isString and:[collection isWideString not]) ifTrue:[
         aString do:[:eachCharacter|
             self nextPutUtf8:eachCharacter.
         ].
@@ -620,7 +620,7 @@
 nextPutUnicode:aCharacter
     "normal streams can not handle multi-byte characters, so convert them to utf8"
 
-    (collection isString and:[collection bitsPerCharacter == 8]) ifTrue:[
+    (collection isString and:[collection isWideString not]) ifTrue:[
         self nextPutUtf8:aCharacter.
     ] ifFalse:[
         self nextPut:aCharacter.
@@ -630,16 +630,9 @@
 !WriteStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/WriteStream.st,v 1.73 2011/09/28 14:32:19 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/WriteStream.st,v 1.74 2012-12-12 23:08:51 stefan Exp $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/WriteStream.st,v 1.73 2011/09/28 14:32:19 cg Exp '
-!
-
-version_SVN
-    ^ '$Id: WriteStream.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/WriteStream.st,v 1.74 2012-12-12 23:08:51 stefan Exp $'
 ! !
-
-
-
--- a/XDGDesktop.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/XDGDesktop.st	Sat Jan 19 01:30:00 2013 +0000
@@ -13,9 +13,7 @@
 
 UnixDesktop subclass:#XDGDesktop
 	instanceVariableNames:''
-	classVariableNames:'XDG_USERCONFIG_DIR XDG_DESKTOP_DIR XDG_DOWNLOAD_DIR
-		XDG_TEMPLATES_DIR XDG_PUBLICSHARE_DIR XDG_DOCUMENTS_DIR
-		XDG_MUSIC_DIR XDG_PICTURES_DIR XDG_VIDEOS_DIR'
+	classVariableNames:''
 	poolDictionaries:''
 	category:'System-Desktop'
 !
@@ -36,57 +34,6 @@
 "
 ! !
 
-!XDGDesktop class methodsFor:'initialization'!
-
-initialize
-
-    self initializeDirectories
-
-    "Created: / 09-05-2012 / 11:11:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-initializeDirectories
-    "Read XDG config file, if exist"
-
-    | cfg |
-
-    XDG_USERCONFIG_DIR := Filename homeDirectory / '.config'.
-
-    cfg := XDG_USERCONFIG_DIR / 'user-dirs.dirs'.
-    cfg exists ifFalse:[ ^ self ].
-
-    cfg readingFileDo:[:s|
-        [ s atEnd ] whileFalse:[
-            | l i name value eqpos q1pos q2pos |
-
-            l := s nextLine.
-            (i := l indexOfNonSeparator) ~~ 0 ifTrue:[
-                (l at: i) ~~ $# ifTrue:[
-                    ((eqpos := l indexOf: $= startingAt: i) ~~ 0 
-                        and:[(q1pos := l indexOf: $" startingAt: eqpos + 1) ~~ 0
-                            and:[(q2pos := l indexOf: $" startingAt: q1pos + 1) ~~ 0]]) ifTrue:[
-                                name := l copyFrom: i to: eqpos - 1.
-                                value := l copyFrom: q1pos + 1 to: q2pos - 1.
-                                (value startsWith: '$HOME/') ifTrue:[
-                                    value := Filename homeDirectory pathName , (value copyFrom:6).
-                                ].
-                                self classVarAt: name asSymbol put: value asFilename.
-                            ]
-                ]
-            ]
-        ]
-    ]
-
-    "Created: / 09-05-2012 / 11:11:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-reinitialize
-
-    self initialize
-
-    "Created: / 09-05-2012 / 11:11:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
 !XDGDesktop class methodsFor:'accessing'!
 
 priority
@@ -107,47 +54,20 @@
 !XDGDesktop class methodsFor:'testing'!
 
 isAvailable
-    ^ super isAvailable and: [ 
-        (OperatingSystem getEnvironment: 'XDG_CONFIG_DIRS') notNil
-            or:[(OperatingSystem getEnvironment: 'XDG_SESSION_PATH') notNil
-            ]
-    ]
-
-    "
-        XDGDesktop isAvailable
-    "
+    ^ super isAvailable 
+        and: [ (OperatingSystem pathOfCommand: 
+                    (self defaultEditorCommand upTo:
+                        Character space)) notNil ]
 
     "Created: / 11-08-2009 / 16:44:34 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 09-05-2012 / 11:44:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!XDGDesktop methodsFor:'accessing-directories'!
-
-desktopDirectory
-    ^XDG_DESKTOP_DIR notNil ifTrue:[
-        XDG_DESKTOP_DIR
-    ] ifFalse:[
-        Filename homeDirectory
-    ]
-
-    "Created: / 09-05-2012 / 11:53:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-documentsDirectory
-
-    ^XDG_DOCUMENTS_DIR isNil ifTrue:[Filename homeDirectory]
-
-    "Created: / 09-05-2012 / 11:52:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !XDGDesktop class methodsFor:'documentation'!
 
-version
-    ^'$Id: XDGDesktop.st 10839 2012-08-21 10:46:45Z vranyj1 $'
+version_CVS
+    ^ '$Header: /cvs/stx/stx/libbasic/XDGDesktop.st,v 1.1 2011-06-28 10:09:48 vrany Exp $'
 !
 
 version_SVN
-    ^ '$Id: XDGDesktop.st 10839 2012-08-21 10:46:45Z vranyj1 $'
+    ^ ' Id: XDGDesktop.st 10517 2010-04-26 18:26:38Z vranyj1  '
 ! !
-
-XDGDesktop initialize!
--- a/YesToAllConfirmation.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/YesToAllConfirmation.st	Sat Jan 19 01:30:00 2013 +0000
@@ -101,16 +101,9 @@
 !YesToAllConfirmation class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/YesToAllConfirmation.st,v 1.6 2010/10/14 08:38:03 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/YesToAllConfirmation.st,v 1.6 2010-10-14 08:38:03 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/YesToAllConfirmation.st,v 1.6 2010/10/14 08:38:03 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: YesToAllConfirmation.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/YesToAllConfirmation.st,v 1.6 2010-10-14 08:38:03 cg Exp $'
 ! !
-
-
-
--- a/abbrev.stc	Thu Dec 20 11:48:59 2012 +0000
+++ b/abbrev.stc	Sat Jan 19 01:30:00 2013 +0000
@@ -14,32 +14,18 @@
 CharacterEncoder CharacterEncoder stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::BIG5 CharacterEncoderImplementations__BIG5 stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::CNS11643 CharacterEncoderImplementations__CNS11643 stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::CP437 CharacterEncoderImplementations__CP437 stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::GB2313_1980 CharacterEncoderImplementations__GB2313_1980 stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::HANGUL CharacterEncoderImplementations__HANGUL stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::ISO10646_to_JavaText CharacterEncoderImplementations__ISO10646_to_JavaText stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::ISO10646_to_SGML CharacterEncoderImplementations__ISO10646_to_SGML stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::ISO10646_to_UTF16BE CharacterEncoderImplementations__ISO10646_to_UTF16BE stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::ISO10646_to_UTF16LE CharacterEncoderImplementations__ISO10646_to_UTF16LE stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::ISO8859_10 CharacterEncoderImplementations__ISO8859_10 stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::ISO8859_11 CharacterEncoderImplementations__ISO8859_11 stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::ISO8859_13 CharacterEncoderImplementations__ISO8859_13 stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::ISO8859_14 CharacterEncoderImplementations__ISO8859_14 stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::ISO8859_16 CharacterEncoderImplementations__ISO8859_16 stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::ISO8859_3 CharacterEncoderImplementations__ISO8859_3 stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::ISO8859_4 CharacterEncoderImplementations__ISO8859_4 stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::ISO8859_6 CharacterEncoderImplementations__ISO8859_6 stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::ISO8859_8 CharacterEncoderImplementations__ISO8859_8 stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::ISO8859_9 CharacterEncoderImplementations__ISO8859_9 stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::JIS0201 CharacterEncoderImplementations__JIS0201 stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::JIS0208 CharacterEncoderImplementations__JIS0208 stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::JIS0208_to_EUC CharacterEncoderImplementations__JIS0208_to_EUC stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::JIS0208_to_JIS7 CharacterEncoderImplementations__JIS0208_to_JIS7 stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::JIS0208_to_SJIS CharacterEncoderImplementations__JIS0208_to_SJIS stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::JIS0212 CharacterEncoderImplementations__JIS0212 stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::JOHAB CharacterEncoderImplementations__JOHAB stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::KOI7 CharacterEncoderImplementations__KOI7 stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::KOI8_R CharacterEncoderImplementations__KOI8_R stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::KOI8_U CharacterEncoderImplementations__KOI8_U stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::KSC5601 CharacterEncoderImplementations__KSC5601 stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::MAC_Arabic CharacterEncoderImplementations__MAC_Arabic stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::MAC_CentralEuropean CharacterEncoderImplementations__MAC_CentralEuropean stx:libbasic 'Collections-Text-Encodings' 0
@@ -57,11 +43,6 @@
 CharacterEncoderImplementations::MAC_Symbol CharacterEncoderImplementations__MAC_Symbol stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::MAC_Thai CharacterEncoderImplementations__MAC_Thai stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::MAC_Turkish CharacterEncoderImplementations__MAC_Turkish stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::MS_Arabic CharacterEncoderImplementations__MS_Arabic stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::MS_EastEuropean CharacterEncoderImplementations__MS_EastEuropean stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::MS_Hebrew CharacterEncoderImplementations__MS_Hebrew stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::MS_Symbol CharacterEncoderImplementations__MS_Symbol stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::MS_Turkish CharacterEncoderImplementations__MS_Turkish stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::NEXT CharacterEncoderImplementations__NEXT stx:libbasic 'Collections-Text-Encodings' 0
 ClassBuilder ClassBuilder stx:libbasic 'Kernel-Support' 0
 ClassCategoryReader ClassCategoryReader stx:libbasic 'Kernel-Support' 0
@@ -70,6 +51,7 @@
 CmdLineParser CmdLineParser stx:libbasic 'System-Support-Command line' 0
 CmdLineParserTest CmdLineParserTest stx:libbasic 'System-Support-Command line' 1
 Collection Collection stx:libbasic 'Collections-Abstract' 0
+ConfigurableFeatures ConfigurableFeatures stx:libbasic 'System-Support' 0
 Context Context stx:libbasic 'Kernel-Methods' 0
 Continuation Continuation stx:libbasic 'Kernel-Processes' 0
 Delay Delay stx:libbasic 'Kernel-Processes' 0
@@ -77,6 +59,7 @@
 ExternalAddress ExternalAddress stx:libbasic 'System-Support' 0
 ExternalLibrary ExternalLibrary stx:libbasic 'System-Support' 0
 Filename Filename stx:libbasic 'System-Support' 0
+GNOMEDesktop GNOMEDesktop stx:libbasic 'System-Desktop' 0
 GenericException GenericException stx:libbasic 'Kernel-Exceptions' 1
 Geometric Geometric stx:libbasic 'Graphics-Geometry-Objects' 0
 ImaginaryResultError ImaginaryResultError stx:libbasic 'Kernel-Exceptions-Errors' 1
@@ -84,14 +67,15 @@
 InterestConverter InterestConverter stx:libbasic 'Interface-Support-Models' 0
 LargeFloat LargeFloat stx:libbasic 'Magnitude-Numbers' 0
 Link Link stx:libbasic 'Collections-Support' 0
-Lookup Lookup stx:libbasic 'Kernel-Classes' 0
+Lookup Lookup stx:libbasic 'Kernel-Extensions' 0
 MacFilename MacFilename stx:libbasic 'OS-Mac' 0
 Magnitude Magnitude stx:libbasic 'Magnitude-General' 0
 MappedExternalBytes MappedExternalBytes stx:libbasic 'System-Support' 0
 Message Message stx:libbasic 'Kernel-Methods' 0
-MethodOverrideTests MethodOverrideTests stx:libbasic 'Kernel-Tests' 1
+MethodOverrideTests MethodOverrideTests stx:libbasic '* as yet unknown category *' 0
 MiniDebugger MiniDebugger stx:libbasic 'System-Debugging-Support' 0
 MiniInspector MiniInspector stx:libbasic 'System-Debugging-Support' 0
+MiniLogger MiniLogger 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
@@ -103,6 +87,7 @@
 OpenVMSFileHandle OpenVMSFileHandle stx:libbasic 'OS-OpenVMS' 0
 OpenVMSFilename OpenVMSFilename stx:libbasic 'OS-OpenVMS' 0
 OpenVMSOperatingSystem OpenVMSOperatingSystem stx:libbasic 'OS-OpenVMS' 0
+PCFilename PCFilename stx:libbasic 'OS-Windows' 0
 PackageId PackageId stx:libbasic 'System-Support-Projects' 0
 ProcessorScheduler ProcessorScheduler stx:libbasic 'Kernel-Processes' 0
 ProgrammingLanguage ProgrammingLanguage stx:libbasic 'Kernel-Languages' 1
@@ -129,10 +114,13 @@
 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  'unknownCategory'  0
-WindowsDesktop WindowsDesktop stx:libbasic  'unknownCategory'  0
+Win32Constants Win32Constants stx:libbasic 'OS-Windows' 0
+Win32FILEHandle Win32FILEHandle stx:libbasic 'OS-Windows' 0
+Win32Handle Win32Handle stx:libbasic 'OS-Windows' 0
+Win32OperatingSystem Win32OperatingSystem stx:libbasic 'OS-Windows' 0
+Win32Process Win32Process stx:libbasic 'OS-Windows' 0
+WindowsDesktop WindowsDesktop stx:libbasic 'System-Desktop' 0
 XDGDesktop XDGDesktop stx:libbasic 'System-Desktop' 0
-GNOMEDesktop GNOMEDesktop stx:libbasic 'System-Desktop' 0
 AbstractTime AbstractTime stx:libbasic 'Magnitude-Time' 0
 ApplicationDefinition ApplicationDefinition stx:libbasic 'System-Support-Projects' 3
 ArithmeticValue ArithmeticValue stx:libbasic 'Magnitude-Numbers' 0
@@ -140,7 +128,7 @@
 AutoDeletedFilename AutoDeletedFilename stx:libbasic 'System-Support' 0
 Bag Bag stx:libbasic 'Collections-Unordered' 0
 BlockContext BlockContext stx:libbasic 'Kernel-Methods' 0
-BuiltinLookup BuiltinLookup stx:libbasic 'Kernel-Classes' 0
+BuiltinLookup BuiltinLookup stx:libbasic 'Kernel-Extensions' 0
 CachingRegistry CachingRegistry stx:libbasic 'System-Support' 0
 Character Character stx:libbasic 'Magnitude-General' 0
 CharacterEncoderImplementations::ISO10646_1 CharacterEncoderImplementations__ISO10646_1 stx:libbasic 'Collections-Text-Encodings' 0
@@ -163,11 +151,9 @@
 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  'unknownCategory'  0
 PeekableStream PeekableStream stx:libbasic 'Streams' 0
 Process Process stx:libbasic 'Kernel-Processes' 0
 QuerySignal QuerySignal stx:libbasic 'Kernel-Exceptions' 0
-PluginSupport PluginSupport stx:libbasic 'System-Support' 0
 Rectangle Rectangle stx:libbasic 'Graphics-Geometry-Objects' 0
 SequenceableCollection SequenceableCollection stx:libbasic 'Collections-Abstract' 0
 Set Set stx:libbasic 'Collections-Unordered' 0
@@ -177,22 +163,39 @@
 UnixFilename UnixFilename stx:libbasic 'OS-Unix' 0
 WeakInterestConverter WeakInterestConverter stx:libbasic 'Interface-Support-Models' 0
 ArrayedCollection ArrayedCollection stx:libbasic 'Collections-Abstract' 0
-AbstractNumberVector AbstractNumberVector stx:libbasic 'Collections-Arrayed' 0
 Association Association stx:libbasic 'Collections-Support' 0
 Block Block stx:libbasic 'Kernel-Methods' 0
 CharacterEncoderImplementations::ASCII CharacterEncoderImplementations__ASCII stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::CP437 CharacterEncoderImplementations__CP437 stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::EBCDIC CharacterEncoderImplementations__EBCDIC stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::ISO10646_to_UTF16BE CharacterEncoderImplementations__ISO10646_to_UTF16BE stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::ISO10646_to_UTF8 CharacterEncoderImplementations__ISO10646_to_UTF8 stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::ISO8859_1 CharacterEncoderImplementations__ISO8859_1 stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::ISO8859_10 CharacterEncoderImplementations__ISO8859_10 stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::ISO8859_11 CharacterEncoderImplementations__ISO8859_11 stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::ISO8859_13 CharacterEncoderImplementations__ISO8859_13 stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::ISO8859_14 CharacterEncoderImplementations__ISO8859_14 stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::ISO8859_15 CharacterEncoderImplementations__ISO8859_15 stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::ISO8859_16 CharacterEncoderImplementations__ISO8859_16 stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::ISO8859_2 CharacterEncoderImplementations__ISO8859_2 stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::ISO8859_3 CharacterEncoderImplementations__ISO8859_3 stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::ISO8859_4 CharacterEncoderImplementations__ISO8859_4 stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::ISO8859_5 CharacterEncoderImplementations__ISO8859_5 stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::ISO8859_6 CharacterEncoderImplementations__ISO8859_6 stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::ISO8859_7 CharacterEncoderImplementations__ISO8859_7 stx:libbasic 'Collections-Text-Encodings' 0
-CharacterEncoderImplementations::JIS0208_to_SJIS CharacterEncoderImplementations__JIS0208_to_SJIS stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::ISO8859_8 CharacterEncoderImplementations__ISO8859_8 stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::KOI8_R CharacterEncoderImplementations__KOI8_R stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::MS_Ansi CharacterEncoderImplementations__MS_Ansi stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::MS_Arabic CharacterEncoderImplementations__MS_Arabic stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::MS_Baltic CharacterEncoderImplementations__MS_Baltic stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::MS_Cyrillic CharacterEncoderImplementations__MS_Cyrillic stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::MS_EastEuropean CharacterEncoderImplementations__MS_EastEuropean stx:libbasic 'Collections-Text-Encodings' 0
 CharacterEncoderImplementations::MS_Greek CharacterEncoderImplementations__MS_Greek stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::MS_Hebrew CharacterEncoderImplementations__MS_Hebrew stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::MS_Symbol CharacterEncoderImplementations__MS_Symbol stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::MS_Turkish CharacterEncoderImplementations__MS_Turkish stx:libbasic 'Collections-Text-Encodings' 0
 ClassDescription ClassDescription stx:libbasic 'Kernel-Classes' 0
+Complex Complex stx:libbasic 'Magnitude-Numbers' 0
 ControlRequest ControlRequest stx:libbasic 'Kernel-Exceptions-Control' 1
 Dictionary Dictionary stx:libbasic 'Collections-Unordered' 0
 EncodedStream EncodedStream stx:libbasic 'Collections-Text-Encodings' 0
@@ -207,9 +210,6 @@
 Method Method stx:libbasic 'Kernel-Methods' 0
 MethodDictionary MethodDictionary stx:libbasic 'Kernel-Methods' 0
 Number Number stx:libbasic 'Magnitude-Numbers' 0
-MetaNumber MetaNumber stx:libbasic 'Magnitude-Numbers' 0
-SomeNumber SomeNumber stx:libbasic 'Magnitude-Numbers' 0
-Infinity Infinity stx:libbasic 'Magnitude-Numbers' 0
 OSFileHandle OSFileHandle stx:libbasic 'System-Support' 0
 ObjectCoder ObjectCoder stx:libbasic 'System-Storage' 0
 OrderedCollection OrderedCollection stx:libbasic 'Collections-Sequenceable' 0
@@ -227,60 +227,70 @@
 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
+AbortAllOperationWantedQuery AbortAllOperationWantedQuery stx:libbasic 'Kernel-Exceptions-Control' 1
 AbstractSourceFileWriter AbstractSourceFileWriter stx:libbasic 'Kernel-Classes' 0
 ActivityNotification ActivityNotification stx:libbasic 'Kernel-Exceptions-Notifications' 1
 Array Array stx:libbasic 'Collections-Arrayed' 0
 BreakPointInterrupt BreakPointInterrupt stx:libbasic 'Kernel-Exceptions-Control' 1
+CharacterEncoderImplementations::ISO10646_to_UTF16LE CharacterEncoderImplementations__ISO10646_to_UTF16LE stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::ISO8859_9 CharacterEncoderImplementations__ISO8859_9 stx:libbasic 'Collections-Text-Encodings' 0
+CharacterEncoderImplementations::KOI8_U CharacterEncoderImplementations__KOI8_U stx:libbasic 'Collections-Text-Encodings' 0
 CheapBlock CheapBlock stx:libbasic 'Kernel-Methods' 0
-Class Class stx:libbasic 'Kernel-Classes' 0
 ClassBuildError ClassBuildError stx:libbasic 'Kernel-Support' 1
-DoubleArray DoubleArray stx:libbasic 'Collections-Arrayed' 0
 ElementBoundsError ElementBoundsError stx:libbasic 'Kernel-Exceptions-Errors' 1
 FileDirectory FileDirectory stx:libbasic 'Obsolete' 0
-FloatArray FloatArray stx:libbasic 'Collections-Arrayed' 0
 Fraction Fraction stx:libbasic 'Magnitude-Numbers' 0
+GetOpt GetOpt stx:libbasic 'System-Support' 0
 IdentityDictionary IdentityDictionary stx:libbasic 'Collections-Unordered' 0
 InlineObjectClassDescription InlineObjectClassDescription stx:libbasic 'Programming-Support' 0
 Integer Integer stx:libbasic 'Magnitude-Numbers' 0
 Interval Interval stx:libbasic 'Collections-Sequenceable' 0
+IsDebuggingQuery IsDebuggingQuery stx:libbasic 'Interface-Debugger' 1
 LimitedPrecisionReal LimitedPrecisionReal stx:libbasic 'Magnitude-Numbers' 0
 MeasurementValue MeasurementValue stx:libbasic 'Magnitude-Numbers' 0
+MetaNumber MetaNumber stx:libbasic 'Magnitude-Numbers' 0
 Metaclass Metaclass stx:libbasic 'Kernel-Classes' 0
+MethodWithBreakpoints MethodWithBreakpoints stx:libbasic 'Kernel-Methods' 0
 OsError OsError stx:libbasic 'OS-Support' 1
+PluginSupport PluginSupport stx:libbasic 'System-Support' 0
 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' 1
 RecursiveExceptionError RecursiveExceptionError stx:libbasic 'Kernel-Exceptions-Errors' 1
 RestartProcessRequest RestartProcessRequest stx:libbasic 'Kernel-Exceptions-Control' 1
+SameForAllNotification SameForAllNotification stx:libbasic 'Kernel-Exceptions-Notifications' 1
 SemaphoreSet SemaphoreSet stx:libbasic 'Kernel-Processes' 0
 SignalSet SignalSet stx:libbasic 'Kernel-Exceptions' 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' 1
+UninterpretedBytes UninterpretedBytes stx:libbasic 'Collections-Abstract' 0
 UnixFileDescriptorHandle UnixFileDescriptorHandle stx:libbasic 'OS-Unix' 0
 UnixFileHandle UnixFileHandle stx:libbasic 'OS-Unix' 0
 UnixOperatingSystem UnixOperatingSystem stx:libbasic 'OS-Unix' 0
 UserConfirmation UserConfirmation stx:libbasic 'Kernel-Exceptions-Notifications' 1
 UserInformation UserInformation stx:libbasic 'Kernel-Exceptions-Notifications' 1
+UtcTimestamp UtcTimestamp stx:libbasic 'Magnitude-Time' 0
 VMInternalError VMInternalError stx:libbasic 'Kernel-Exceptions-Errors' 1
 VarArgBlock VarArgBlock stx:libbasic 'Kernel-Methods' 0
 Warning Warning stx:libbasic 'Kernel-Exceptions' 1
-Win32Handle Win32Handle stx:libbasic  'unknownCategory'  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  'unknownCategory'  0
 WriteStream WriteStream stx:libbasic 'Streams' 0
 AbortOperationRequest AbortOperationRequest stx:libbasic 'Kernel-Exceptions-Control' 1
+AbstractNumberVector AbstractNumberVector stx:libbasic 'Collections-Arrayed' 0
 AllocationFailure AllocationFailure stx:libbasic 'System-Support' 1
 AmbiguousMessage AmbiguousMessage stx:libbasic 'Kernel-Extensions' 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
+CharacterArray CharacterArray stx:libbasic 'Collections-Text' 0
 CharacterWriteStream CharacterWriteStream stx:libbasic 'Streams' 0
+Class Class stx:libbasic 'Kernel-Classes' 0
 ContextError ContextError stx:libbasic 'Kernel-Methods' 1
 ConversionError ConversionError stx:libbasic 'Kernel-Exceptions-Errors' 1
 DeepCopyError DeepCopyError stx:libbasic 'Kernel-Methods' 1
@@ -289,8 +299,9 @@
 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
 ImmutableArray ImmutableArray stx:libbasic 'System-Compiler-Support' 0
+Infinity Infinity stx:libbasic 'Magnitude-Numbers' 0
+InvalidPatchError InvalidPatchError stx:libbasic 'Kernel-Exceptions-Errors' 1
 LargeInteger LargeInteger stx:libbasic 'Magnitude-Numbers' 0
 LongFloat LongFloat stx:libbasic 'Magnitude-Numbers' 0
 MessageNotUnderstood MessageNotUnderstood stx:libbasic 'Kernel-Exceptions-Errors' 1
@@ -311,6 +322,7 @@
 SignalError SignalError stx:libbasic 'Kernel-Exceptions-Errors' 1
 SmallInteger SmallInteger stx:libbasic 'Magnitude-Numbers' 0
 SmalltalkChunkFileSourceWriter SmalltalkChunkFileSourceWriter stx:libbasic 'Kernel-Classes' 0
+SomeNumber SomeNumber stx:libbasic 'Magnitude-Numbers' 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
@@ -321,13 +333,14 @@
 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' 1
 DateConversionError DateConversionError stx:libbasic 'Magnitude-Time' 1
 DomainError DomainError stx:libbasic 'Kernel-Exceptions-Errors' 1
+DoubleArray DoubleArray stx:libbasic 'Collections-Arrayed' 0
 EndOfStreamError EndOfStreamError stx:libbasic 'Kernel-Exceptions-Errors' 1
 ExternalStream ExternalStream stx:libbasic 'Streams-External' 0
 ExternalStructure ExternalStructure stx:libbasic 'System-Support' 1
+FloatArray FloatArray stx:libbasic 'Collections-Arrayed' 0
 ImmutableByteArray ImmutableByteArray stx:libbasic 'System-Compiler-Support' 0
 IncompleteNextCountError IncompleteNextCountError stx:libbasic 'Kernel-Exceptions-Errors' 1
 IndexNotFoundError IndexNotFoundError stx:libbasic 'Kernel-Exceptions-Errors' 1
@@ -345,18 +358,20 @@
 ReadError ReadError stx:libbasic 'Kernel-Exceptions-Errors' 1
 StreamIOError StreamIOError stx:libbasic 'Kernel-Exceptions-Errors' 1
 StreamNotOpenError StreamNotOpenError stx:libbasic 'Kernel-Exceptions-Errors' 1
+String String stx:libbasic 'Collections-Text' 0
 TimeConversionError TimeConversionError stx:libbasic 'Magnitude-Time' 1
+TwoByteString TwoByteString stx:libbasic 'Collections-Text' 0
 UnorderedNumbersError UnorderedNumbersError stx:libbasic 'Kernel-Exceptions-Errors' 1
 UnprotectedExternalBytes UnprotectedExternalBytes stx:libbasic 'System-Support' 0
 WeakDependencyDictionary WeakDependencyDictionary stx:libbasic 'Collections-Weak' 0
-Win32Constants Win32Constants stx:libbasic  'unknownCategory'  0
-Win32OperatingSystem Win32OperatingSystem stx:libbasic  'unknownCategory'  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
+FileDoesNotExistException FileDoesNotExistException stx:libbasic 'Kernel-Exceptions-Errors' 1
 FileStream FileStream stx:libbasic 'Streams-External' 0
+ImmutableString ImmutableString stx:libbasic 'System-Compiler-Support' 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
@@ -365,36 +380,16 @@
 NonIntegerIndexError NonIntegerIndexError stx:libbasic 'Kernel-Exceptions-Errors' 1
 NonPositionableExternalStream NonPositionableExternalStream stx:libbasic 'Streams-External' 0
 OverflowError OverflowError stx:libbasic 'Kernel-Exceptions-Errors' 1
-String String stx:libbasic 'Collections-Text' 0
 SubscriptOutOfBoundsError SubscriptOutOfBoundsError stx:libbasic 'Kernel-Exceptions-Errors' 1
-TwoByteString TwoByteString stx:libbasic 'Collections-Text' 0
+Symbol Symbol stx:libbasic 'Collections-Text' 0
 UnderflowError UnderflowError stx:libbasic 'Kernel-Exceptions-Errors' 1
+Unicode16String Unicode16String stx:libbasic 'Collections-Text' 0
 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
-ImmutableString ImmutableString stx:libbasic 'System-Compiler-Support' 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
-CharacterEncoderImplementations::EBCDIC CharacterEncoderImplementations__EBCDIC stx:libbasic 'Collections-Text-Encodings' 0
-SameForAllNotification SameForAllNotification stx:libbasic 'Kernel-Exceptions-Notifications' 1
-UtcTimestamp UtcTimestamp stx:libbasic 'Magnitude-Time' 0
-InvalidPatchError InvalidPatchError stx:libbasic 'Kernel-Exceptions-Errors' 1
-AbortAllOperationWantedQuery AbortAllOperationWantedQuery stx:libbasic 'Kernel-Exceptions-Control' 1
-Complex Complex stx:libbasic 'Magnitude-Numbers' 0
-ConfigurableFeatures ConfigurableFeatures stx:libbasic 'System-Support' 0
-FileDoesNotExistException FileDoesNotExistException stx:libbasic 'Kernel-Exceptions-Errors' 1
-MiniLogger MiniLogger stx:libbasic 'System-Debugging-Support' 0
-PolymorphicInlineCache PolymorphicInlineCache stx:libbasic 'Kernel-Classes' 0
-CharacterEncoderImplementations::ISO10646_to_XMLUTF8 CharacterEncoderImplementations__ISO10646_to_XMLUTF8 stx:libbasic 'Collections-Text-Encodings' 0
-MethodWithBreakpoints MethodWithBreakpoints stx:libbasic 'Kernel-Methods' 0
-IsDebuggingQuery IsDebuggingQuery stx:libbasic 'Interface-Debugger' 1
-UnixFileDescriptorHandle UnixFileDescriptorHandle stx:libbasic 'OS-Unix' 0
-UnixFileHandle UnixFileHandle stx:libbasic 'OS-Unix' 0
-UnixOperatingSystem UnixOperatingSystem stx:libbasic 'OS-Unix' 0
 MethodNotAppropriateError MethodNotAppropriateError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 1
 AbstractClassInstantiationError AbstractClassInstantiationError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 1
 InvalidTypeError InvalidTypeError stx:libbasic 'Kernel-Exceptions-ExecutionErrors' 1
-
--- a/bc.mak	Thu Dec 20 11:48:59 2012 +0000
+++ b/bc.mak	Sat Jan 19 01:30:00 2013 +0000
@@ -1,4 +1,4 @@
-# $Header$
+# $Header: /cvs/stx/stx/libbasic/bc.mak,v 1.194 2013-01-08 17:55:11 cg Exp $
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_libbasic.
@@ -40,7 +40,7 @@
 LOCALINCLUDES=-I$(TOP)\librun
 LOCALDEFINES=
 
-STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) $(COMMONSYMBOLS) -varPrefix=$(LIBNAME)
+STCLOCALOPT=-lineInfo -package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) $(COMMONSYMBOLS) -varPrefix=$(LIBNAME)
 LOCALLIBS=
 
 OBJS= $(COMMON_OBJS) $(WIN32_OBJS)
@@ -53,7 +53,7 @@
 
 # build all prerequisite packages for this package
 prereq:
-	pushd ..\librun & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+#        pushd ..\librun & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 
 
 
@@ -63,7 +63,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)Annotation.$(O) Annotation.$(H): Annotation.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -160,6 +159,7 @@
 $(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)
 $(OUTDIR)CharacterEncoderImplementations__ASCII.$(O) CharacterEncoderImplementations__ASCII.$(H): CharacterEncoderImplementations__ASCII.st $(INCLUDE_TOP)\stx\libbasic\CharacterEncoderImplementations__SingleByteEncoder.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterEncoder.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)CharacterEncoderImplementations__CP437.$(O) CharacterEncoderImplementations__CP437.$(H): CharacterEncoderImplementations__CP437.st $(INCLUDE_TOP)\stx\libbasic\CharacterEncoderImplementations__SingleByteEncoder.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterEncoder.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)CharacterEncoderImplementations__EBCDIC.$(O) CharacterEncoderImplementations__EBCDIC.$(H): CharacterEncoderImplementations__EBCDIC.st $(INCLUDE_TOP)\stx\libbasic\CharacterEncoderImplementations__SingleByteEncoder.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterEncoder.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)CharacterEncoderImplementations__ISO10646_to_UTF16BE.$(O) CharacterEncoderImplementations__ISO10646_to_UTF16BE.$(H): CharacterEncoderImplementations__ISO10646_to_UTF16BE.st $(INCLUDE_TOP)\stx\libbasic\CharacterEncoderImplementations__TwoByteEncoder.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterEncoder.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)CharacterEncoderImplementations__ISO10646_to_UTF8.$(O) CharacterEncoderImplementations__ISO10646_to_UTF8.$(H): CharacterEncoderImplementations__ISO10646_to_UTF8.st $(INCLUDE_TOP)\stx\libbasic\CharacterEncoderImplementations__TwoByteEncoder.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterEncoder.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -238,10 +238,12 @@
 $(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)
 $(OUTDIR)Interval.$(O) Interval.$(H): Interval.st $(INCLUDE_TOP)\stx\libbasic\ReadOnlySequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)IsDebuggingQuery.$(O) IsDebuggingQuery.$(H): IsDebuggingQuery.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)LimitedPrecisionReal.$(O) LimitedPrecisionReal.$(H): LimitedPrecisionReal.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)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)MetaNumber.$(O) MetaNumber.$(H): MetaNumber.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)MethodWithBreakpoints.$(O) MethodWithBreakpoints.$(H): MethodWithBreakpoints.st $(INCLUDE_TOP)\stx\libbasic\Method.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(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)PluginSupport.$(O) PluginSupport.$(H): PluginSupport.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)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)
@@ -276,8 +278,9 @@
 $(OUTDIR)AssertionFailedError.$(O) AssertionFailedError.$(H): AssertionFailedError.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)
 $(OUTDIR)AutoloadMetaclass.$(O) AutoloadMetaclass.$(H): AutoloadMetaclass.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)ByteArray.$(O) ByteArray.$(H): ByteArray.st $(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\Object.$(H) $(STCHDR)
+$(OUTDIR)CharacterArray.$(O) CharacterArray.$(H): CharacterArray.st $(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\Object.$(H) $(STCHDR)
 $(OUTDIR)CharacterWriteStream.$(O) CharacterWriteStream.$(H): CharacterWriteStream.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)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) $(INCLUDE_TOP)\stx\libbasic\Array.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(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\Array.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Association.$(H) $(INCLUDE_TOP)\stx\libbasic\LookupKey.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(STCHDR)
 $(OUTDIR)ContextError.$(O) ContextError.$(H): ContextError.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)
 $(OUTDIR)ConversionError.$(O) ConversionError.$(H): ConversionError.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)
 $(OUTDIR)DeepCopyError.$(O) DeepCopyError.$(H): DeepCopyError.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)
@@ -320,7 +323,6 @@
 $(OUTDIR)ArgumentError.$(O) ArgumentError.$(H): ArgumentError.st $(INCLUDE_TOP)\stx\libbasic\ExecutionError.$(H) $(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)
 $(OUTDIR)CannotResumeError.$(O) CannotResumeError.$(H): CannotResumeError.st $(INCLUDE_TOP)\stx\libbasic\ContextError.$(H) $(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)
 $(OUTDIR)CannotReturnError.$(O) CannotReturnError.$(H): CannotReturnError.st $(INCLUDE_TOP)\stx\libbasic\ContextError.$(H) $(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)
-$(OUTDIR)CharacterArray.$(O) CharacterArray.$(H): CharacterArray.st $(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\Object.$(H) $(STCHDR)
 $(OUTDIR)CharacterEncoderError.$(O) CharacterEncoderError.$(H): CharacterEncoderError.st $(INCLUDE_TOP)\stx\libbasic\ConversionError.$(H) $(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)
 $(OUTDIR)DateConversionError.$(O) DateConversionError.$(H): DateConversionError.st $(INCLUDE_TOP)\stx\libbasic\ConversionError.$(H) $(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)
 $(OUTDIR)DomainError.$(O) DomainError.$(H): DomainError.st $(INCLUDE_TOP)\stx\libbasic\ArithmeticError.$(H) $(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)
@@ -348,7 +350,9 @@
 $(OUTDIR)ReadError.$(O) ReadError.$(H): ReadError.st $(INCLUDE_TOP)\stx\libbasic\StreamError.$(H) $(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)
 $(OUTDIR)StreamIOError.$(O) StreamIOError.$(H): StreamIOError.st $(INCLUDE_TOP)\stx\libbasic\StreamError.$(H) $(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)
 $(OUTDIR)StreamNotOpenError.$(O) StreamNotOpenError.$(H): StreamNotOpenError.st $(INCLUDE_TOP)\stx\libbasic\StreamError.$(H) $(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)
+$(OUTDIR)String.$(O) String.$(H): String.st $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(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\Object.$(H) $(STCHDR)
 $(OUTDIR)TimeConversionError.$(O) TimeConversionError.$(H): TimeConversionError.st $(INCLUDE_TOP)\stx\libbasic\ConversionError.$(H) $(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)
+$(OUTDIR)TwoByteString.$(O) TwoByteString.$(H): TwoByteString.st $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(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\Object.$(H) $(STCHDR)
 $(OUTDIR)UnorderedNumbersError.$(O) UnorderedNumbersError.$(H): UnorderedNumbersError.st $(INCLUDE_TOP)\stx\libbasic\ArithmeticError.$(H) $(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)
 $(OUTDIR)UnprotectedExternalBytes.$(O) UnprotectedExternalBytes.$(H): UnprotectedExternalBytes.st $(INCLUDE_TOP)\stx\libbasic\ExternalBytes.$(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\Object.$(H) $(STCHDR)
 $(OUTDIR)WeakDependencyDictionary.$(O) WeakDependencyDictionary.$(H): WeakDependencyDictionary.st $(INCLUDE_TOP)\stx\libbasic\WeakIdentityDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\IdentityDictionary.$(H) $(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)
@@ -360,6 +364,7 @@
 $(OUTDIR)EncodingError.$(O) EncodingError.$(H): EncodingError.st $(INCLUDE_TOP)\stx\libbasic\CharacterEncoderError.$(H) $(INCLUDE_TOP)\stx\libbasic\ConversionError.$(H) $(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)
 $(OUTDIR)FileDoesNotExistException.$(O) FileDoesNotExistException.$(H): FileDoesNotExistException.st $(INCLUDE_TOP)\stx\libbasic\OpenError.$(H) $(INCLUDE_TOP)\stx\libbasic\StreamError.$(H) $(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)
 $(OUTDIR)FileStream.$(O) FileStream.$(H): FileStream.st $(INCLUDE_TOP)\stx\libbasic\ExternalStream.$(H) $(INCLUDE_TOP)\stx\libbasic\ReadWriteStream.$(H) $(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)ImmutableString.$(O) ImmutableString.$(H): ImmutableString.st $(INCLUDE_TOP)\stx\libbasic\String.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(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\Object.$(H) $(STCHDR)
 $(OUTDIR)InvalidByteCodeError.$(O) InvalidByteCodeError.$(H): InvalidByteCodeError.st $(INCLUDE_TOP)\stx\libbasic\InvalidCodeError.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutionError.$(H) $(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)
 $(OUTDIR)InvalidInstructionError.$(O) InvalidInstructionError.$(H): InvalidInstructionError.st $(INCLUDE_TOP)\stx\libbasic\InvalidCodeError.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutionError.$(H) $(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)
 $(OUTDIR)InvalidReadError.$(O) InvalidReadError.$(H): InvalidReadError.st $(INCLUDE_TOP)\stx\libbasic\ReadError.$(H) $(INCLUDE_TOP)\stx\libbasic\StreamError.$(H) $(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)
@@ -368,27 +373,30 @@
 $(OUTDIR)NonIntegerIndexError.$(O) NonIntegerIndexError.$(H): NonIntegerIndexError.st $(INCLUDE_TOP)\stx\libbasic\IndexNotFoundError.$(H) $(INCLUDE_TOP)\stx\libbasic\NotFoundError.$(H) $(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)
 $(OUTDIR)NonPositionableExternalStream.$(O) NonPositionableExternalStream.$(H): NonPositionableExternalStream.st $(INCLUDE_TOP)\stx\libbasic\ExternalStream.$(H) $(INCLUDE_TOP)\stx\libbasic\ReadWriteStream.$(H) $(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)OverflowError.$(O) OverflowError.$(H): OverflowError.st $(INCLUDE_TOP)\stx\libbasic\RangeError.$(H) $(INCLUDE_TOP)\stx\libbasic\ArithmeticError.$(H) $(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)
-$(OUTDIR)String.$(O) String.$(H): String.st $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(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\Object.$(H) $(STCHDR)
 $(OUTDIR)SubscriptOutOfBoundsError.$(O) SubscriptOutOfBoundsError.$(H): SubscriptOutOfBoundsError.st $(INCLUDE_TOP)\stx\libbasic\IndexNotFoundError.$(H) $(INCLUDE_TOP)\stx\libbasic\NotFoundError.$(H) $(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)
-$(OUTDIR)TwoByteString.$(O) TwoByteString.$(H): TwoByteString.st $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(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\Object.$(H) $(STCHDR)
+$(OUTDIR)Symbol.$(O) Symbol.$(H): Symbol.st $(INCLUDE_TOP)\stx\libbasic\String.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(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\Object.$(H) $(STCHDR)
 $(OUTDIR)UnderflowError.$(O) UnderflowError.$(H): UnderflowError.st $(INCLUDE_TOP)\stx\libbasic\RangeError.$(H) $(INCLUDE_TOP)\stx\libbasic\ArithmeticError.$(H) $(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)
+$(OUTDIR)Unicode16String.$(O) Unicode16String.$(H): Unicode16String.st $(INCLUDE_TOP)\stx\libbasic\TwoByteString.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(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\Object.$(H) $(STCHDR)
 $(OUTDIR)WrongNumberOfArgumentsError.$(O) WrongNumberOfArgumentsError.$(H): WrongNumberOfArgumentsError.st $(INCLUDE_TOP)\stx\libbasic\ArgumentError.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutionError.$(H) $(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)
 $(OUTDIR)ZeroDivide.$(O) ZeroDivide.$(H): ZeroDivide.st $(INCLUDE_TOP)\stx\libbasic\DomainError.$(H) $(INCLUDE_TOP)\stx\libbasic\ArithmeticError.$(H) $(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)
 $(OUTDIR)CharacterRangeError.$(O) CharacterRangeError.$(H): CharacterRangeError.st $(INCLUDE_TOP)\stx\libbasic\DecodingError.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterEncoderError.$(H) $(INCLUDE_TOP)\stx\libbasic\ConversionError.$(H) $(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)
 $(OUTDIR)DirectoryStream.$(O) DirectoryStream.$(H): DirectoryStream.st $(INCLUDE_TOP)\stx\libbasic\FileStream.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalStream.$(H) $(INCLUDE_TOP)\stx\libbasic\ReadWriteStream.$(H) $(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)ImmutableString.$(O) ImmutableString.$(H): ImmutableString.st $(INCLUDE_TOP)\stx\libbasic\String.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(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\Object.$(H) $(STCHDR)
 $(OUTDIR)InvalidEncodingError.$(O) InvalidEncodingError.$(H): InvalidEncodingError.st $(INCLUDE_TOP)\stx\libbasic\DecodingError.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterEncoderError.$(H) $(INCLUDE_TOP)\stx\libbasic\ConversionError.$(H) $(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)
 $(OUTDIR)PipeStream.$(O) PipeStream.$(H): PipeStream.st $(INCLUDE_TOP)\stx\libbasic\NonPositionableExternalStream.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalStream.$(H) $(INCLUDE_TOP)\stx\libbasic\ReadWriteStream.$(H) $(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)Symbol.$(O) Symbol.$(H): Symbol.st $(INCLUDE_TOP)\stx\libbasic\String.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(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\Object.$(H) $(STCHDR)
-$(OUTDIR)Unicode16String.$(O) Unicode16String.$(H): Unicode16String.st $(INCLUDE_TOP)\stx\libbasic\TwoByteString.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(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\Object.$(H) $(STCHDR)
-$(OUTDIR)Win32Process.$(O) Win32Process.$(H): Win32Process.st $(STCHDR)
-$(OUTDIR)WindowsDesktop.$(O) WindowsDesktop.$(H): WindowsDesktop.st $(STCHDR)
-$(OUTDIR)PCFilename.$(O) PCFilename.$(H): PCFilename.st $(STCHDR)
-$(OUTDIR)Win32Handle.$(O) Win32Handle.$(H): Win32Handle.st $(STCHDR)
-$(OUTDIR)Win32FILEHandle.$(O) Win32FILEHandle.$(H): Win32FILEHandle.st $(STCHDR)
-$(OUTDIR)Win32Constants.$(O) Win32Constants.$(H): Win32Constants.st $(STCHDR)
-$(OUTDIR)Win32OperatingSystem.$(O) Win32OperatingSystem.$(H): Win32OperatingSystem.st $(STCHDR)
-$(OUTDIR)MethodWithBreakpoints.$(O) MethodWithBreakpoints.$(H): MethodWithBreakpoints.st $(INCLUDE_TOP)\stx\libbasic\Method.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)IsDebuggingQuery.$(O) IsDebuggingQuery.$(H): IsDebuggingQuery.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)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)Win32Process.$(O) Win32Process.$(H): Win32Process.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Win32OperatingSystem.$(O) Win32OperatingSystem.$(H): Win32OperatingSystem.st $(INCLUDE_TOP)\stx\libbasic\Win32Constants.$(H) $(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\OSHandle.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Win32Handle.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
+
+# **Must be at end**
+
+# Enforce recompilation of package definition class if Mercurial working
+# copy state changes. Together with --guessVersion it ensures that package
+# definition class always contains correct binary revision string.
+!IFDEF HGROOT
+$(OUTDIR)stx_libbasic.$(O): $(HGROOT)\.hg\dirstate
+!ENDIF
\ No newline at end of file
--- a/libInit.cc	Thu Dec 20 11:48:59 2012 +0000
+++ b/libInit.cc	Sat Jan 19 01:30:00 2013 +0000
@@ -1,5 +1,5 @@
 /*
- * $Header: /cvs/stx/stx/libbasic/libInit.cc,v 1.186 2012/11/02 15:07:06 cg Exp $
+ * $Header: /cvs/stx/stx/libbasic/libInit.cc,v 1.186 2012-11-02 15:07:06 cg Exp $
  *
  * DO NOT EDIT
  * automagically generated from the projectDefinition: stx_libbasic.
@@ -30,7 +30,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);
 _Annotation_Init(pass,__pRT__,snd);
@@ -64,7 +63,6 @@
 _OSProcess_Init(pass,__pRT__,snd);
 _ObjectMemory_Init(pass,__pRT__,snd);
 _PackageId_Init(pass,__pRT__,snd);
-_PolymorphicInlineCache_Init(pass,__pRT__,snd);
 _ProcessorScheduler_Init(pass,__pRT__,snd);
 _ProgrammingLanguage_Init(pass,__pRT__,snd);
 _Project_Init(pass,__pRT__,snd);
@@ -127,6 +125,7 @@
 _Association_Init(pass,__pRT__,snd);
 _Block_Init(pass,__pRT__,snd);
 _CharacterEncoderImplementations__ASCII_Init(pass,__pRT__,snd);
+_CharacterEncoderImplementations__CP437_Init(pass,__pRT__,snd);
 _CharacterEncoderImplementations__EBCDIC_Init(pass,__pRT__,snd);
 _CharacterEncoderImplementations__ISO10646_137to_137UTF16BE_Init(pass,__pRT__,snd);
 _CharacterEncoderImplementations__ISO10646_137to_137UTF8_Init(pass,__pRT__,snd);
@@ -205,10 +204,12 @@
 _InlineObjectClassDescription_Init(pass,__pRT__,snd);
 _Integer_Init(pass,__pRT__,snd);
 _Interval_Init(pass,__pRT__,snd);
+_IsDebuggingQuery_Init(pass,__pRT__,snd);
 _LimitedPrecisionReal_Init(pass,__pRT__,snd);
 _MeasurementValue_Init(pass,__pRT__,snd);
 _MetaNumber_Init(pass,__pRT__,snd);
 _Metaclass_Init(pass,__pRT__,snd);
+_MethodWithBreakpoints_Init(pass,__pRT__,snd);
 _OsError_Init(pass,__pRT__,snd);
 _PluginSupport_Init(pass,__pRT__,snd);
 _ProceedableError_Init(pass,__pRT__,snd);
@@ -243,6 +244,7 @@
 _AssertionFailedError_Init(pass,__pRT__,snd);
 _AutoloadMetaclass_Init(pass,__pRT__,snd);
 _ByteArray_Init(pass,__pRT__,snd);
+_CharacterArray_Init(pass,__pRT__,snd);
 _CharacterWriteStream_Init(pass,__pRT__,snd);
 _Class_Init(pass,__pRT__,snd);
 _ContextError_Init(pass,__pRT__,snd);
@@ -287,7 +289,6 @@
 _ArgumentError_Init(pass,__pRT__,snd);
 _CannotResumeError_Init(pass,__pRT__,snd);
 _CannotReturnError_Init(pass,__pRT__,snd);
-_CharacterArray_Init(pass,__pRT__,snd);
 _CharacterEncoderError_Init(pass,__pRT__,snd);
 _DateConversionError_Init(pass,__pRT__,snd);
 _DomainError_Init(pass,__pRT__,snd);
@@ -315,7 +316,9 @@
 _ReadError_Init(pass,__pRT__,snd);
 _StreamIOError_Init(pass,__pRT__,snd);
 _StreamNotOpenError_Init(pass,__pRT__,snd);
+_String_Init(pass,__pRT__,snd);
 _TimeConversionError_Init(pass,__pRT__,snd);
+_TwoByteString_Init(pass,__pRT__,snd);
 _UnorderedNumbersError_Init(pass,__pRT__,snd);
 _UnprotectedExternalBytes_Init(pass,__pRT__,snd);
 _WeakDependencyDictionary_Init(pass,__pRT__,snd);
@@ -327,6 +330,7 @@
 _EncodingError_Init(pass,__pRT__,snd);
 _FileDoesNotExistException_Init(pass,__pRT__,snd);
 _FileStream_Init(pass,__pRT__,snd);
+_ImmutableString_Init(pass,__pRT__,snd);
 _InvalidByteCodeError_Init(pass,__pRT__,snd);
 _InvalidInstructionError_Init(pass,__pRT__,snd);
 _InvalidReadError_Init(pass,__pRT__,snd);
@@ -335,34 +339,22 @@
 _NonIntegerIndexError_Init(pass,__pRT__,snd);
 _NonPositionableExternalStream_Init(pass,__pRT__,snd);
 _OverflowError_Init(pass,__pRT__,snd);
-_String_Init(pass,__pRT__,snd);
 _SubscriptOutOfBoundsError_Init(pass,__pRT__,snd);
-_TwoByteString_Init(pass,__pRT__,snd);
+_Symbol_Init(pass,__pRT__,snd);
 _UnderflowError_Init(pass,__pRT__,snd);
+_Unicode16String_Init(pass,__pRT__,snd);
 _WrongNumberOfArgumentsError_Init(pass,__pRT__,snd);
 _ZeroDivide_Init(pass,__pRT__,snd);
 _CharacterRangeError_Init(pass,__pRT__,snd);
 _DirectoryStream_Init(pass,__pRT__,snd);
-_ImmutableString_Init(pass,__pRT__,snd);
 _InvalidEncodingError_Init(pass,__pRT__,snd);
 _PipeStream_Init(pass,__pRT__,snd);
-_MethodNotAppropriateError_Init(pass,__pRT__,snd);
-_AbstractClassInstantiationError_Init(pass,__pRT__,snd);
-_InvalidTypeError_Init(pass,__pRT__,snd);
-_Symbol_Init(pass,__pRT__,snd);
-_Unicode16String_Init(pass,__pRT__,snd);
-_MethodWithBreakpoints_Init(pass,__pRT__,snd);
-_IsDebuggingQuery_Init(pass,__pRT__,snd);
 #ifdef UNIX
-_UnixDesktop_Init(pass,__pRT__,snd);
-_XDGDesktop_Init(pass,__pRT__,snd);
-_GNOMEDesktop_Init(pass,__pRT__,snd);
 _UnixFileDescriptorHandle_Init(pass,__pRT__,snd);
 _UnixFileHandle_Init(pass,__pRT__,snd);
 _UnixOperatingSystem_Init(pass,__pRT__,snd);
 #endif /* UNIX */
 #ifdef WIN32
-_WindowsDesktop_Init(pass,__pRT__,snd);
 _PCFilename_Init(pass,__pRT__,snd);
 _Win32Constants_Init(pass,__pRT__,snd);
 _Win32FILEHandle_Init(pass,__pRT__,snd);
--- a/mingwmake.bat	Thu Dec 20 11:48:59 2012 +0000
+++ b/mingwmake.bat	Sat Jan 19 01:30:00 2013 +0000
@@ -3,6 +3,6 @@
 @REM type mingwmake, and wait...
 @REM do not edit - automatically generated from ProjectDefinition
 @REM -------
-make.exe -N -f bc.mak -DUSEMINGW=1 %*
 
-
+@call ..\rules\find_mingw.bat
+make.exe -N -f bc.mak -DUSEMINGW64=1 %*
--- a/resources/de.rs	Thu Dec 20 11:48:59 2012 +0000
+++ b/resources/de.rs	Sat Jan 19 01:30:00 2013 +0000
@@ -1,6 +1,6 @@
 #encoding iso8859-1
 
-; $Header: /cvs/stx/stx/libbasic/resources/de.rs,v 1.8 2010/06/08 19:20:52 cg Exp $
+; $Header: /cvs/stx/stx/libbasic/resources/de.rs,v 1.8 2010-06-08 19:20:52 cg Exp $
 ;
 ; German strings
 ;
@@ -193,12 +193,3 @@
 ; 'ERROR_OUT_OF_PAPER'            'Printer is out of paper'
 ; 'ERROR_PRINTQ_FULL'             'Printer queue is full'
 #endif
-
-
-
-
-
-
-
-
-
--- a/resources/es.rs	Thu Dec 20 11:48:59 2012 +0000
+++ b/resources/es.rs	Sat Jan 19 01:30:00 2013 +0000
@@ -163,5 +163,3 @@
 'tuesday'                            'martes'
 'wed'                                'miƩ'
 'wednesday'                          'miƩrcoles'
-
-
--- a/stx_libbasic.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/stx_libbasic.st	Sat Jan 19 01:30:00 2013 +0000
@@ -36,7 +36,7 @@
 
 documentation
 "
-    Build-Information for creation of the st/x standard library: stx_libbasic
+    Build- and package information for creation of the st/x standard library: stx_libbasic
     This library contains basic (nonGUI) classes.
 "
 ! !
@@ -48,27 +48,9 @@
      preRequisites scan. See #preRequisites for more."
 
     ^ #(
-	#'stx:goodies/sunit'    "TestResource - referenced by ProjectDefinition class>>additionalClassAttributesFor: "
-	#'stx:libsvn'           "SVN::InfoCommand - referenced by ProjectDefinition class>>svnRevision "
-	#'stx:goodies'    "Complex - referenced by Number>>asComplex "
-	#'stx:goodies/simpleServices'    "STXScriptingServer - referenced by StandaloneStartup class>>setupSmalltalkFromArguments: "
-	#'stx:goodies/soap/xe'    "SOAP::XePName - referenced by Date class>>sprayTypeName "
-	#'stx:goodies/xml/stx'    "XMLCoder - referenced by ClassDescription>>fileOutXMLString:on: "
-	#'stx:goodies/xml/vw'    "XML::XMLParser - referenced by PeekableStream>>fileInXMLNotifying:passChunk: "
-	#'stx:libbasic2'    "Future - referenced by Block>>futureValue "
-	#'stx:libbasic3'    "MessageTracer - referenced by CompiledCode>>setTraceFullPoint "
-	#'stx:libboss'    "BinaryObjectStorage - referenced by Smalltalk class>>fileIn:lazy:silent:logged: "
-	#'stx:libcomp'    "SyntaxHighlighter - referenced by SmalltalkLanguage>>syntaxHighlighterClass "
-	#'stx:libcompat'    "StringCollationPolicy - referenced by SequenceableCollection>>quickSort: "
-	#'stx:libhtml'    "URL - referenced by CharacterArray>>asURL "
-	#'stx:libtool'    "DiffTextView - referenced by UserPreferences>>versionDiffViewerClass "
-	#'stx:libview'    "ResourcePack - referenced by Date class>>initNames "
-	#'stx:libview2'    "LayoutOrigin - referenced by Point>>asOffsetLayout "
-	#'stx:libwidg'    "PullDownMenu - referenced by UserPreferences class>>saveSettings:in: "
-	#'stx:libwidg2'    "DoWhatIMeanSupport - referenced by Smalltalk class>>globalnameCompletion: "
+        #'exept:ctypes'    "CType - referenced by ExternalLibraryFunction>>ffiTypeSymbolForType: "
+        #'exept:expecco'    "Expecco::ExpeccoXMLDecoder - referenced by ClassDescription>>iconInBrowserForVariableNamed: "
     )
-
-    "Modified: / 13-02-2010 / 19:35:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 preRequisites
@@ -120,7 +102,7 @@
         Autoload
         Object
         ProtoObject
-        AbstractDesktop
+        (AbstractDesktop autoload)
         AbstractOperatingSystem
         AbstractSourceFileReader
         Annotation
@@ -128,49 +110,20 @@
         Behavior
         Boolean
         CharacterEncoder
-        #'CharacterEncoderImplementations::ISO10646_1'
-        #'CharacterEncoderImplementations::SingleByteEncoder'
-        #'CharacterEncoderImplementations::TwoByteEncoder'
-        #'CharacterEncoderImplementations::ASCII'
-        #'CharacterEncoderImplementations::ISO10646_to_UTF8'
-        #'CharacterEncoderImplementations::ISO8859_1'
-        #'CharacterEncoderImplementations::ISO8859_15'
-        #'CharacterEncoderImplementations::ISO8859_2'
-        #'CharacterEncoderImplementations::ISO8859_5'
-        #'CharacterEncoderImplementations::ISO8859_7'
-        (#'CharacterEncoderImplementations::JIS0208_to_SJIS' autoload)
-        #'CharacterEncoderImplementations::MS_Ansi'
-        #'CharacterEncoderImplementations::MS_Baltic'
-        #'CharacterEncoderImplementations::MS_Cyrillic'
-        #'CharacterEncoderImplementations::MS_Greek'
         (#'CharacterEncoderImplementations::BIG5' autoload)
         (#'CharacterEncoderImplementations::CNS11643' autoload)
-        (#'CharacterEncoderImplementations::CP437' autoload)
         (#'CharacterEncoderImplementations::GB2313_1980' autoload)
         (#'CharacterEncoderImplementations::HANGUL' autoload)
         (#'CharacterEncoderImplementations::ISO10646_to_JavaText' autoload)
         (#'CharacterEncoderImplementations::ISO10646_to_SGML' autoload)
-        #'CharacterEncoderImplementations::ISO10646_to_UTF16BE'
-        #'CharacterEncoderImplementations::ISO10646_to_UTF16LE'
-        #'CharacterEncoderImplementations::ISO8859_10'
-        #'CharacterEncoderImplementations::ISO8859_11'
-        #'CharacterEncoderImplementations::ISO8859_13'
-        #'CharacterEncoderImplementations::ISO8859_14'
-        #'CharacterEncoderImplementations::ISO8859_16'
-        #'CharacterEncoderImplementations::ISO8859_3'
-        #'CharacterEncoderImplementations::ISO8859_4'
-        #'CharacterEncoderImplementations::ISO8859_6'
-        #'CharacterEncoderImplementations::ISO8859_8'
-        #'CharacterEncoderImplementations::ISO8859_9'
         (#'CharacterEncoderImplementations::JIS0201' autoload)
         (#'CharacterEncoderImplementations::JIS0208' autoload)
         (#'CharacterEncoderImplementations::JIS0208_to_EUC' autoload)
         (#'CharacterEncoderImplementations::JIS0208_to_JIS7' autoload)
+        (#'CharacterEncoderImplementations::JIS0208_to_SJIS' autoload)
         (#'CharacterEncoderImplementations::JIS0212' autoload)
         (#'CharacterEncoderImplementations::JOHAB' autoload)
         (#'CharacterEncoderImplementations::KOI7' autoload)
-        #'CharacterEncoderImplementations::KOI8_R'
-        #'CharacterEncoderImplementations::KOI8_U'
         (#'CharacterEncoderImplementations::KSC5601' autoload)
         (#'CharacterEncoderImplementations::MAC_Arabic' autoload)
         (#'CharacterEncoderImplementations::MAC_CentralEuropean' autoload)
@@ -188,11 +141,6 @@
         (#'CharacterEncoderImplementations::MAC_Symbol' autoload)
         (#'CharacterEncoderImplementations::MAC_Thai' autoload)
         (#'CharacterEncoderImplementations::MAC_Turkish' autoload)
-        #'CharacterEncoderImplementations::MS_Arabic'
-        #'CharacterEncoderImplementations::MS_EastEuropean'
-        #'CharacterEncoderImplementations::MS_Hebrew'
-        #'CharacterEncoderImplementations::MS_Symbol'
-        #'CharacterEncoderImplementations::MS_Turkish'
         (#'CharacterEncoderImplementations::NEXT' autoload)
         ClassBuilder
         ClassCategoryReader
@@ -201,6 +149,7 @@
         (CmdLineParser autoload)
         (CmdLineParserTest autoload)
         Collection
+        ConfigurableFeatures
         Context
         Continuation
         Delay
@@ -208,6 +157,7 @@
         ExternalAddress
         ExternalLibrary
         Filename
+        (GNOMEDesktop autoload)
         GenericException
         Geometric
         (ImaginaryResultError autoload)
@@ -223,6 +173,7 @@
         (MethodOverrideTests autoload)
         MiniDebugger
         MiniInspector
+        MiniLogger
         (NaiveRomanNumberFormatNotification autoload)
         NameSpace
         (NotANumber autoload)
@@ -231,9 +182,10 @@
         OSErrorHolder
         OSProcess
         ObjectMemory
-        (OpenVMSFileHandle vms autoload)
-        (OpenVMSFilename vms autoload)
-        (OpenVMSOperatingSystem vms autoload)
+        (OpenVMSFileHandle vms )
+        (OpenVMSFilename vms )
+        (OpenVMSOperatingSystem vms )
+        (PCFilename win32 )
         PackageId
         ProcessorScheduler
         ProgrammingLanguage
@@ -256,9 +208,17 @@
         (TextCollectorStream autoload)
         (UnboundedExternalStream autoload)
         UndefinedObject
+        (UnixDesktop autoload)
         UserMessage
         Visitor
         (WeakValueIdentityDictionary autoload)
+        (Win32Constants win32 )
+        (Win32FILEHandle win32 )
+        (Win32Handle win32 )
+        (Win32OperatingSystem win32 )
+        (Win32Process win32 )
+        (WindowsDesktop autoload)
+        (XDGDesktop autoload)
         AbstractTime
         ApplicationDefinition
         ArithmeticValue
@@ -269,6 +229,9 @@
         BuiltinLookup
         CachingRegistry
         Character
+        #'CharacterEncoderImplementations::ISO10646_1'
+        #'CharacterEncoderImplementations::SingleByteEncoder'
+        #'CharacterEncoderImplementations::TwoByteEncoder'
         CompiledCode
         ControlInterrupt
         Date
@@ -289,7 +252,6 @@
         PeekableStream
         Process
         QuerySignal
-        PluginSupport
         Rectangle
         SequenceableCollection
         Set
@@ -299,11 +261,39 @@
         UnixFilename
         WeakInterestConverter
         ArrayedCollection
-        UninterpretedBytes
-        AbstractNumberVector
         Association
         Block
+        #'CharacterEncoderImplementations::ASCII'
+        #'CharacterEncoderImplementations::CP437'
+        #'CharacterEncoderImplementations::EBCDIC'
+        #'CharacterEncoderImplementations::ISO10646_to_UTF16BE'
+        #'CharacterEncoderImplementations::ISO10646_to_UTF8'
+        #'CharacterEncoderImplementations::ISO8859_1'
+        #'CharacterEncoderImplementations::ISO8859_10'
+        #'CharacterEncoderImplementations::ISO8859_11'
+        #'CharacterEncoderImplementations::ISO8859_13'
+        #'CharacterEncoderImplementations::ISO8859_14'
+        #'CharacterEncoderImplementations::ISO8859_15'
+        #'CharacterEncoderImplementations::ISO8859_16'
+        #'CharacterEncoderImplementations::ISO8859_2'
+        #'CharacterEncoderImplementations::ISO8859_3'
+        #'CharacterEncoderImplementations::ISO8859_4'
+        #'CharacterEncoderImplementations::ISO8859_5'
+        #'CharacterEncoderImplementations::ISO8859_6'
+        #'CharacterEncoderImplementations::ISO8859_7'
+        #'CharacterEncoderImplementations::ISO8859_8'
+        #'CharacterEncoderImplementations::KOI8_R'
+        #'CharacterEncoderImplementations::MS_Ansi'
+        #'CharacterEncoderImplementations::MS_Arabic'
+        #'CharacterEncoderImplementations::MS_Baltic'
+        #'CharacterEncoderImplementations::MS_Cyrillic'
+        #'CharacterEncoderImplementations::MS_EastEuropean'
+        #'CharacterEncoderImplementations::MS_Greek'
+        #'CharacterEncoderImplementations::MS_Hebrew'
+        #'CharacterEncoderImplementations::MS_Symbol'
+        #'CharacterEncoderImplementations::MS_Turkish'
         ClassDescription
+        Complex
         ControlRequest
         Dictionary
         EncodedStream
@@ -318,9 +308,6 @@
         Method
         MethodDictionary
         Number
-        MetaNumber
-        SomeNumber
-        Infinity
         OSFileHandle
         ObjectCoder
         OrderedCollection
@@ -338,40 +325,52 @@
         YesToAllConfirmation
         #'stx_libbasic'
         AbortAllOperationRequest
+        AbortAllOperationWantedQuery
         AbstractSourceFileWriter
         ActivityNotification
         Array
         BreakPointInterrupt
+        #'CharacterEncoderImplementations::ISO10646_to_UTF16LE'
+        #'CharacterEncoderImplementations::ISO8859_9'
+        #'CharacterEncoderImplementations::KOI8_U'
         CheapBlock
-        Class
         ClassBuildError
-        DoubleArray
         ElementBoundsError
         FileDirectory
-        FloatArray
         Fraction
+        GetOpt
         IdentityDictionary
         InlineObjectClassDescription
         Integer
         Interval
+        IsDebuggingQuery
         LimitedPrecisionReal
         MeasurementValue
+        MetaNumber
         Metaclass
+        MethodWithBreakpoints
         OsError
+        PluginSupport
         ProceedableError
         QueryWithoutDefault
         ReadStream
         RecursionError
         RecursiveExceptionError
         RestartProcessRequest
+        SameForAllNotification
         SemaphoreSet
         SignalSet
         SnapshotError
         SortedCollection
         StringCollection
         TerminateProcessRequest
+        UninterpretedBytes
+        (UnixFileDescriptorHandle unix)
+        (UnixFileHandle unix)
+        (UnixOperatingSystem unix)
         UserConfirmation
         UserInformation
+        UtcTimestamp
         VMInternalError
         VarArgBlock
         Warning
@@ -380,13 +379,16 @@
         WeakValueDictionary
         WriteStream
         AbortOperationRequest
+        AbstractNumberVector
         AllocationFailure
         AmbiguousMessage
         ArithmeticError
         AssertionFailedError
         AutoloadMetaclass
         ByteArray
+        CharacterArray
         CharacterWriteStream
+        Class
         ContextError
         ConversionError
         DeepCopyError
@@ -395,8 +397,9 @@
         ExternalBytes
         FixedPoint
         Float
-        GetOpt
         ImmutableArray
+        Infinity
+        InvalidPatchError
         LargeInteger
         LongFloat
         MessageNotUnderstood
@@ -417,6 +420,7 @@
         SignalError
         SmallInteger
         SmalltalkChunkFileSourceWriter
+        SomeNumber
         StreamError
         SubclassResponsibilityError
         TimeoutError
@@ -427,13 +431,14 @@
         ArgumentError
         CannotResumeError
         CannotReturnError
-        CharacterArray
         CharacterEncoderError
         DateConversionError
         DomainError
+        DoubleArray
         EndOfStreamError
         ExternalStream
         ExternalStructure
+        FloatArray
         ImmutableByteArray
         IncompleteNextCountError
         IndexNotFoundError
@@ -451,7 +456,9 @@
         ReadError
         StreamIOError
         StreamNotOpenError
+        String
         TimeConversionError
+        TwoByteString
         UnorderedNumbersError
         UnprotectedExternalBytes
         WeakDependencyDictionary
@@ -460,7 +467,9 @@
         BadLiteralsError
         DecodingError
         EncodingError
+        FileDoesNotExistException
         FileStream
+        ImmutableString
         InvalidByteCodeError
         InvalidInstructionError
         InvalidReadError
@@ -469,41 +478,19 @@
         NonIntegerIndexError
         NonPositionableExternalStream
         OverflowError
-        String
         SubscriptOutOfBoundsError
-        TwoByteString
+        Symbol
         UnderflowError
+        Unicode16String
         WrongNumberOfArgumentsError
         ZeroDivide
         CharacterRangeError
         DirectoryStream
-        ImmutableString
         InvalidEncodingError
         PipeStream
         MethodNotAppropriateError
         AbstractClassInstantiationError
         InvalidTypeError
-        Symbol
-        Unicode16String
-        #'CharacterEncoderImplementations::EBCDIC'
-        SameForAllNotification
-        UtcTimestamp
-        InvalidPatchError
-        AbortAllOperationWantedQuery
-        Complex
-        ConfigurableFeatures
-        FileDoesNotExistException
-        MiniLogger
-        PolymorphicInlineCache
-        IsDebuggingQuery
-        (#'CharacterEncoderImplementations::ISO10646_to_XMLUTF8' autoload)
-        MethodWithBreakpoints
-        (UnixFileDescriptorHandle unix)
-        (UnixFileHandle unix)
-        (UnixOperatingSystem unix)
-        (UnixDesktop unix)
-        (XDGDesktop unix)
-        (GNOMEDesktop unix)
     )
 !
 
@@ -539,44 +526,23 @@
 
 !stx_libbasic class methodsFor:'description - svn'!
 
-svnRepositoryUrlString
-    "Return a SVN repository URL of myself.
-     (Generated since 2011-04-08)
-     Do not make the string shorter!!!!!! We have to use fixed-length keyword!!!!!!
-    "
-
-    ^ '$URL:: https://vranyj1@swing.fit.cvut.cz/svn/stx/libbasic/branches/jv/stx_libbasic.st                                         $'
-!
-
 svnRevisionNr
     "Return a SVN revision number of myself.
      This number is updated after a commit"
 
-    ^ "$SVN-Revision:"'10841           '"$"
-! !
-
-!stx_libbasic class methodsFor:'private-prerequisites'!
-
-searchForPreRequisites:packageId withSubProjects:withSubProjectsBoolean
-
-    "Overriden here to return an empty collection, since stx:libbasic
-     should not have ANY prerequisites"
-
-    ^#()
-
-    "Created: / 28-09-2011 / 16:46:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    ^ "$SVN-Revision:"'exported'"$"
 ! !
 
 !stx_libbasic class methodsFor:'documentation'!
 
 version
-    ^ '$Id: stx_libbasic.st 10876 2012-11-30 17:19:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/stx_libbasic.st,v 1.109 2012-11-02 15:07:15 cg Exp $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/stx_libbasic.st,v 1.101 2012/07/18 17:13:14 cg Exp '
+    ^ '$Header: /cvs/stx/stx/libbasic/stx_libbasic.st,v 1.109 2012-11-02 15:07:15 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id:: stx_libbasic.st 10876 2012-11-30 17:19:23Z vranyj1                                                                     $'
+    ^ '§ Id: stx_libbasic.st 10648 2011-06-23 15:55:10Z vranyj1  §'
 ! !